Phase 10 (the last phase of this project) is the project-docs pass. Update the Gitea README, add the Mermaid source and rendered PNG, build the interactive Archify map, add the Vikunja board tasks, and write the Outline AI-context collection in Simplified Technical English. Deliverables: - README.md: status header, Phase 4 gap statement, "Architecture" section with embedded Mermaid + image + Archify link, "Documentation set" table, an explicit two-plane MQTT section (1883 plain+anonymous, 8883 TLS+ACLs), and the Android client's Usage Access and VpnService paths. - AGENTS.md section 11: tick Phase 10, leave Phase 4 unticked, status line now "9 of 10 done - only Phase 4 outstanding". - docs/architecture.mmd + docs/diagrams/architecture.png (mmdc). - docs/archify/architecture.architecture.json + docs/architecture-map.html (Archify, showcase, 9/9 checks, 0 errors). - docs/outline/00-index.md .. 04-agent-runbook.md (STE). - docs/vikunja-tasks.json (Vikunja project "Internet Use Control", id 20). - Obsidian note written to 010 inbox on .27; the obsidian-sorter proposed a folder and waits for the vault owner's approval. Phase 4 (Python Windows computer client) is deliberately deferred and is NOT built. Every document says so. Co-Authored-By: Paperclip <noreply@paperclip.ing>
3.8 KiB
Internet Use Control — Agent Runbook
Target: AI agents. Writing style: ASD-STE100 Simplified Technical English.
Before You Start
- Read
docs/outline/00-index.md. Inject only the file that you need. - Read
AGENTS.md, section 11. Confirm the phase checklist and the status line. - Read
README.mdfor the technical reference. - Work in
/home/sam/paseo/projects/internet_use_controlonly. - Bound every Docker command with
timeout, for exampletimeout 60 docker compose ps. Never run a Docker command without a bound.
Build and Test
There is no host Go toolchain. Use the cached builder image.
make test # go test ./... in golang:1.25-alpine
make vet # go vet ./...
make build # build the container image
make test and make vet run the container as the current user. The module
cache stays in .gocache/, which is gitignored. No root-owned file enters the
repository.
Run and Restart
timeout 60 docker compose up -d --build # start or update
timeout 60 docker compose restart control # restart the container
timeout 60 docker compose logs --tail=100 control
timeout 60 docker compose ps
curl -sS http://127.0.0.1:8791/health
The compose file starts the container webrestrict-control on port 8791. The
image tag is webrestrict/control:0.7.0-phase9.
Verify the Behaviour
| Target | Proves |
|---|---|
make mqtt-verify |
TLS, credentials and topic ACLs on a scratch broker. |
make verify-phase8 |
An API lock reaches a device in under one second. |
make verify-phase9 |
The Hub answers and the Apprise alerts deliver. |
make mqtt-verify uses a scratch broker on 127.0.0.1:18883. It never touches
the shared Mosquitto. The two verify-phase* targets read the broker
credentials from deploy/mosquitto/clients.env.
Useful Subcommands
timeout 60 docker exec webrestrict-control /app/control rollup
timeout 60 docker exec webrestrict-control /app/control alerts --limit 10
timeout 60 docker exec webrestrict-control /app/control usage --day 2026-10-13 --detail
timeout 60 docker exec webrestrict-control /app/control mqtt-clients
Documentation Commands
# Render the Mermaid diagram.
timeout 120 mmdc -i docs/architecture.mmd -o docs/diagrams/architecture.png --scale 2 -b white
# Validate and deliver the Archify map.
node ~/.agents/skills/archify/bin/archify.mjs validate architecture \
docs/archify/architecture.architecture.json --quality showcase --json
node ~/.agents/skills/archify/bin/archify.mjs deliver architecture \
docs/archify/architecture.architecture.json docs/architecture-map.html \
--quality showcase --json
# Publish docs/ to the maps site.
~/.agents/skills/project-docs/scripts/publish-maps.sh
The visual-check of docs/architecture-map.html reports a 1-pixel vertical
overflow at 1440×900. All larger viewports pass. The delivered map passes the
9-check showcase profile with 0 errors.
Rules That Stop a Task
- Never hard-delete a device or its history (AGENTS.md section 10, rule 10).
- Only the Control Service publishes device config. Everything else writes to it over HTTP.
/askis read-only. It writes nothing.- Do not change the router, Pi-hole or DNS. The project is device-side only.
- The children's client never changes its own rules. It obeys and reports.
- One commit and one push for a documentation change. Add the co-author trailer
Co-Authored-By: Paperclip <noreply@paperclip.ing>.
Resume Steps
- Read
docs/outline/00-index.md, thendocs/outline/01-system-overview.md. - Run
git statusandgit log -n 5 --oneline. - Run
make test. - Read
AGENTS.mdsection 11. Phase 4 is the only unfinished phase. - Check the issue board before you start new work. Do not create tasks ad hoc.