Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## Summary

<!-- What does this PR do? Why? -->

## Type of change

- [ ] feat — new feature
- [ ] fix — bug fix
- [ ] refactor — no behavior change
- [ ] docs — documentation only
- [ ] test — tests only
- [ ] chore — build/CI/config
- [ ] security — security fix

## Checklist

- [ ] `python -m unittest discover -s tests -v` passes
- [ ] Related documentation updated in this PR
- [ ] No overclaiming added (claims are verifiable from repository implementation)
- [ ] README updates preserve AZ-02 positioning as a peer Azazel product
- [ ] No changes to `install.sh`, `installer/`, `systemd/`, or runtime behavior without explicit justification below

## Notes for reviewers

<!-- Anything specific to review, or justification for restricted-area changes -->

## Related issues

Closes #
50 changes: 50 additions & 0 deletions .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,53 @@ jobs:

- name: Run unit tests
run: python -m unittest discover -s tests -v

readme-guard:
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Validate README links and fenced blocks
run: |
python - <<'PY'
import re
from pathlib import Path
import sys

targets = [Path("README.md"), Path("README_ja.md")]
errors = []

for md in targets:
if not md.exists():
errors.append(f"{md}: file not found")
continue
text = md.read_text(encoding="utf-8")

# Fence balance check
fence_count = text.count("```")
if fence_count % 2 != 0:
errors.append(f"{md}: unbalanced fenced code blocks (count={fence_count})")

# Relative markdown/image links check
links = re.findall(r'\]\(([^)]+)\)', text)
for link in links:
if "://" in link or link.startswith("#") or link.startswith("mailto:"):
continue
rel = link.split("#", 1)[0].strip()
if not rel:
continue
p = Path(rel)
if not p.exists():
errors.append(f"{md}: missing relative path -> {link}")

if errors:
print("README guard failed:")
for e in errors:
print(f"- {e}")
sys.exit(1)

print("README guard passed.")
PY
71 changes: 71 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# AGENTS.md

This file defines repository-specific working rules for coding/documentation agents.

## Scope

- Repository: `01rabbit/Azazel-Gadget`
- Product: `AZ-02 Azazel-Gadget`
- Positioning: peer product in the Azazel system (not a reduced AZ-01 variant)

## Core Product Positioning

When editing documentation, keep this framing:

- AZ-01 Azazel-Edge: Deterministic Edge SOC/NOC Gateway
- AZ-02 Azazel-Gadget: Personal Tactical Defense Gateway / Cyber Scapegoat Gateway
- AZ-02 stands between protected endpoint and untrusted surrounding network.

Avoid describing AZ-02 as:

- VPN replacement
- generic travel router
- endpoint security replacement
- complete attack-prevention system

## Documentation Guardrails

- Do not add claims that cannot be verified from repository implementation.
- Preserve explicit claim vs non-claim boundaries.
- Keep top-level README product-facing, precise, and restrained.
- Keep `README.md` and `README_ja.md` structurally aligned.
- Prefer linking existing files; do not add dead links.

Related policy docs:

- `docs/INDEX.md`
- `docs/SERIES_POSITIONING_AND_TERMS.md`
- `docs/SECURITY_CLAIM_POLICY.md`

## Release and Changelog Rules

- Follow `docs/RELEASE_PROCESS.md`.
- Keep `docs/CHANGELOG.md` updated using Keep a Changelog style.
- Use `docs/RELEASE_NOTES_TEMPLATE.md` for release notes.

## CI Expectations

Before release/documentation-sensitive PR merge:

```bash
python -m unittest discover -s tests -v
```

README guard checks must pass:

- relative links/images valid in `README.md` and `README_ja.md`
- fenced code block balance

## Change Boundaries

For documentation tasks:

- Do not modify runtime behavior, installer behavior, or file naming unless explicitly requested.
- If changing `install.sh`, `installer/`, `systemd/`, include explicit rationale in PR.

## Preferred PR Checklist

- Summary of intent and scope
- Evidence for any security-relevant claim
- Test/validation commands and results
- Updated docs map/changelog when externally visible behavior or claims change
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

> **Codename:** `TACMOD`

<p align="center">
<a href="https://github.com/01rabbit/Azazel-Gadget/releases">
<img alt="Release" src="https://img.shields.io/github/v/release/01rabbit/Azazel-Gadget">
</a>
<a href="https://github.com/01rabbit/Azazel-Gadget/actions/workflows/ci-tests.yml">
<img alt="CI Tests" src="https://github.com/01rabbit/Azazel-Gadget/actions/workflows/ci-tests.yml/badge.svg">
</a>
<a href="https://github.com/01rabbit/Azazel-Gadget/actions/workflows/pages.yml">
<img alt="Pages" src="https://github.com/01rabbit/Azazel-Gadget/actions/workflows/pages.yml/badge.svg">
</a>
</p>

<p align="center">
<a href="./README_ja.md">
<img alt="日本語" src="https://img.shields.io/badge/Language-日本語-2ea44f?style=for-the-badge">
Expand Down Expand Up @@ -197,7 +209,13 @@ Token auth:

Primary entry points:

- [Documentation Index](docs/INDEX.md)
- [Series Positioning and Terms](docs/SERIES_POSITIONING_AND_TERMS.md)
- [Security Claim Policy](docs/SECURITY_CLAIM_POLICY.md)
- [Installer Guide](installer/README.md)
- [Release Process](docs/RELEASE_PROCESS.md)
- [Release Notes Template](docs/RELEASE_NOTES_TEMPLATE.md)
- [Changelog](docs/CHANGELOG.md)
- [Presentation Assets](docs/presentation/README.md)
- [Docs Site Entry](docs/index.html)
- [Regression Test Notes](scripts/tests/regression/README.md)
Expand Down
Loading
Loading