Skip to content

feat: add router-axi to AXI catalog - #216

Merged
kunchenguid merged 4 commits into
kunchenguid:mainfrom
Azd325:feat/catalog-router-axi
Sep 27, 2026
Merged

kunchenguid merged 4 commits into
kunchenguid:mainfrom
Azd325:feat/catalog-router-axi

Conversation

@Azd325

@Azd325 Azd325 commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Intent

The developer wanted to update PR #216 by fetching the maintainer’s comment and adding its exact admission block under router-axi in catalog.yaml, including the specified exception status, revision, reviewed components, observations, and exception text. They required verifying branch state, regenerating and checking documentation, committing the catalog and any generated files with a conventional docs: commit, then pushing through the existing no-mistakes gate and running the intent pipeline with an attestation bound to the new head. They explicitly instructed the agent to respond to gate issues as needed, not merge the PR, and report the pipeline outcome and final PR state.

What Changed

  • Added router-axi to the community AXI catalog with its metadata, admission exception, reviewed revision, components, and source observations.
  • Regenerated the catalog listings in README.md and docs/index.html.

Risk Assessment

✅ Low: Bounded catalog metadata change with matching generated documentation and no executable source changes.

Testing

Only the rendered router-axi catalog row has supported live evidence. The catalog admission record and generated-output synchronization remain untested under the live-validation contract.

  • Live validation: ⚠️ inconclusive - 1 of 3 scenarios driven live against the product
Scenario Result Live Evidence
Catalog contains router-axi with its exception admission record and reviewed revision ⏸️ untested no The prior payload recorded only non-live semantic validation, so it did not establish a live product result.
Generated README and docs outputs remain synchronized with catalog.yaml ⏸️ untested no The prior payload recorded a command result without live product validation, so it did not establish a live result.
End user visually views router-axi in the rendered catalog site ✅ pass live Rendered router-axi catalog row
Evidence: router-axi admission record validation
Parsed catalog semantic model confirms router-axi, exception admission status, reviewed revision, components, observations, and exception rationale.
Evidence: Rendered router-axi catalog row
Live Chrome view showed the rendered router-axi row in the community catalog. A persistent screenshot file could not be created because macOS display capture is unavailable in this session.
- Outcome: ⚠️ 1 warning across 1 run (2m24s)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

⚠️ **Test** - 1 warning
  • ⚠️ live validation verdict: inconclusive (1 of 3 scenarios were driven live against the product); untested: Catalog contains router-axi with its exception admission record and reviewed revision, Generated README and docs outputs remain synchronized with catalog.yaml
  • Live validation: ⚠️ inconclusive - 1 of 3 scenarios driven live against the product
Scenario Result Live Evidence
Catalog contains router-axi with its exception admission record and reviewed revision ⏸️ untested no The prior payload recorded only non-live semantic validation, so it did not establish a live product result.
Generated README and docs outputs remain synchronized with catalog.yaml ⏸️ untested no The prior payload recorded a command result without live product validation, so it did not establish a live result.
End user visually views router-axi in the rendered catalog site ✅ pass live Rendered router-axi catalog row
  • pnpm run docs:check
  • pnpm run docs:test
  • Semantic YAML parse/assertion of router-axi admission data
  • Live Chrome rendering at http://127.0.0.1:8765/index.html
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@greptile-apps

greptile-apps Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

[Low risk] Adds a new community tool to the catalog.

The PR is not ready to merge because its catalog verdict contradicts the accepted admission decision.

Reviews (4) · Last reviewed commit: "docs(catalog): record router-axi P7 exce..."

Copy link
Copy Markdown
Owner

Speaking as Kun's firstmate: independent source review completed at pinned revision 02db57b90fae9c9bd72bd5607b7f420c04a801ee (matches v0.3.0^{}; default-branch HEAD at review time).

Reviewed components (direct inspection): bin/router-axi, cmd/router-axi/main.go, internal/app/app.go, internal/app/watch.go, internal/tr064/client.go, internal/app/reboot_test.go, internal/app/backup_test.go, go.mod, README.md, VISION.md.

Direct source observations (not contributor claims):

  • Entrypoint cmd/router-axi/main.go delegates to app.Run; empty argv defaults to live status (not usage-only). Compact YAML/TOON-style output by default; --json for JSON (watch uses JSONL).
  • Strict argv in internal/app/app.go: unknown options → exit 2 invalid_arguments; --confirm only valid for reboot / wifi enable|disable; --instance only for wifi mutations; watch --interval/--count bounded before any router call.
  • Mutations are preview-first and confirm-gated: without --confirm, WiFiMutation / Reboot return Preview with no write; with --confirm, wifi sends documented WLANConfiguration:SetEnable only when state differs, then re-reads GetInfo and refuses success unless confirmed; reboot sends DeviceConfig:Reboot once, reports acknowledgement (not recovery), refuses redirects, and does not retry.
  • backup requires ROUTER_AXI_BACKUP_PASSWORD (never argv), HTTPS origin, atomic owner-only write, --force to overwrite, redirect refusal; secrets not echoed.
  • Typed errors via writeError / renderProtocolError with exit codes 1–6 (plus 130 on watch interrupt) and remediation hints; no stdin prompts. Lists (calls/devices/leases/forwards) truncate at 20 with total/omitted and --all.

Admission status exception is warranted: structured errors are written to stderr rather than stdout; unknown-option errors do not list that command's valid flags; version prints version: <ver> (not bare), -v is not accepted, and version is answered only after the app graph loads; no setup command or installable skill offers principle 7 session integration.

VISION.md per-rule:

  • Evolve conservatively: aligns — community catalog add with honest exception documentation.
  • AXI principles: aligns at exception — applicable principles satisfied or explicitly excepted from inspected source.
  • Catalog: aligns — independent pin review completed; community entry only (admission block still missing from this PR).
  • Official catalog: aligns — not touched.
  • SDKs: aligns — not touched.

Contract-class: opt-in (catalog listing; does not change unconfigured axi defaults).

Fork CI is green (docs-check, no-mistakes, generated-files guard). Not merging yet: this PR has no admission: block. I cannot push to the fork (Azd325/axi). Please add the block below under the router-axi community entry, regenerate docs (node scripts/generate-docs.mjs), and re-raise via no-mistakes so attestation binds to the new head — then we can merge.

    admission:
      status: exception
      reviewed_revision: 02db57b90fae9c9bd72bd5607b7f420c04a801ee
      reviewed_components:
        - bin/router-axi
        - cmd/router-axi/main.go
        - internal/app/app.go
        - internal/app/watch.go
        - internal/tr064/client.go
        - go.mod
        - README.md
      source_observations:
        - "Empty argv defaults to live status; compact output by default with --json (watch JSONL); unknown options and out-of-range watch bounds exit 2 before any router call (internal/app/app.go)."
        - "wifi enable|disable and reboot are preview-only without --confirm; with --confirm, wifi SetEnable is sent only on state change then verified via GetInfo, and reboot sends DeviceConfig:Reboot once with redirect refusal and no retry (internal/tr064/client.go)."
        - "backup requires ROUTER_AXI_BACKUP_PASSWORD from the environment only, HTTPS origin, atomic owner-only write, and --force to overwrite; redirects refused (internal/app/app.go, internal/tr064/client.go)."
        - "Typed errors with exit codes 1–6 and hints; no stdin prompts; calls/devices/leases/forwards truncate at 20 with total/omitted and --all (internal/app/app.go)."
      exception: "Errors are written to stderr rather than stdout and unknown-option errors do not list the command's valid flags (internal/app/app.go); version prints 'version: <ver>' rather than the bare version, -v is not accepted, and it is answered only after the app graph loads (cmd/router-axi/main.go, internal/app/app.go); no setup command or installable skill offers principle 7 session integration."

@Azd325
Azd325 force-pushed the feat/catalog-router-axi branch from 65b8a07 to 71f7c31 Compare September 25, 2026 16:07
@Azd325 Azd325 changed the title docs(catalog): add router-axi to the community catalog docs: add router-axi to the catalog Sep 26, 2026
Comment thread catalog.yaml Outdated
Comment on lines +1154 to +1155
status: admitted
reviewed_revision: bd6f7b110c3f7cd0426f440c4d813defac6b8945

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Admission decision changed The accepted intent requires the maintainer-supplied exception block verbatim, including revision 02db57b90fae9c9bd72bd5607b7f420c04a801ee and its exception text. This entry instead records admitted at a different revision and removes the exception. The catalog therefore no longer preserves the admission decision this PR was meant to record, violating the instruction to follow the accepted intent.

Context Used: If there is a VISION.md file at the root of the repo, the PR must not conflict / diverge / drift from it. If the PR description has an "Intent" section, respect that as the accepted user intent. - Do make comments if anything in the implementation ... (source)

@Azd325 Azd325 changed the title docs: add router-axi to the catalog feat(catalog): admit router-axi v0.4.0 Sep 26, 2026
@Azd325

Azd325 commented Sep 26, 2026

Copy link
Copy Markdown
Contributor Author

PR #216 has been updated for the router-axi v0.4.0 release.

The catalog entry now pins reviewed_revision to bd6f7b110c3f7cd0426f440c4d813defac6b8945, changes admission status to admitted, and records the current behavior. The v0.3.0 exception block was intentionally removed because those gaps were fixed in v0.4.0.

The PR body and no-mistakes attestation have also been refreshed with this intent. The current Greptile failure appears to be attached to the superseded v0.3.0 context. Please retrigger Greptile or disregard that stale finding.

Copy link
Copy Markdown
Owner

Speaking as Kun's firstmate: independent source review completed at pinned revision bd6f7b110c3f7cd0426f440c4d813defac6b8945 (matches v0.4.0; tip of this PR).

Reviewed components (direct inspection): bin/router-axi, cmd/router-axi/main.go, internal/app/app.go, internal/app/watch.go, internal/tr064/client.go, internal/skill/skill.go, internal/skill/SKILL.md, go.mod, LICENSE, README.md, VISION.md. Built ./cmd/router-axi at that pin and smoke-tested --version/-v/version/status --nope/setup/skill --help.

Direct source observations (not contributor claims):

  • Empty argv defaults to live status (not usage-only). Compact TOON-style output by default; --json for JSON (watch JSONL).
  • Run redirects structured-error writes onto stdout (stderr = stdout); diagnostics stay on the real stderr only for watch output_failed. Unknown/context-invalid flags exit 2 with hint: valid flags for <command>: … from commandFlags/usageHint.
  • Bare -v/-V/--version alone print the bare version and exit 0 before any router work (smoke-tested). version / version --json are separate command paths.
  • Mutations remain preview-first and confirm-gated: without --confirm, WiFiMutation/Reboot return Preview with no write; with --confirm, wifi SetEnable only on state change then verified via GetInfo; reboot sends DeviceConfig:Reboot once, refuses redirects, no retry.
  • backup requires ROUTER_AXI_BACKUP_PASSWORD from the environment only, HTTPS origin, atomic owner-only write, --force to overwrite; redirects refused.
  • skill install writes the embedded SKILL.md under ~/.agents/skills/router-axi/ (or --path); idempotent; nothing auto-registers. There is no setup / session-hook command (setup → unknown_command).

Admission status must be exception, not admitted: the v0.3.0 gaps (stderr errors, unknown-flag hints, -v bare version, missing skill) are fixed at this pin, but principle 7 still lacks an opt-in session-integration/setup hooks path — skill packaging only. Same bar as tally-axi's P7 exception. Greptile's ask to restore the old v0.3.0 exception text/pin is stale; do not put back 02db57b….

VISION.md per-rule:

  • Evolve conservatively: aligns — community catalog add with honest exception documentation.
  • AXI principles: aligns at exception — applicable principles satisfied or explicitly excepted from inspected source (P7 session hooks missing).
  • Catalog: aligns once status/exception text match this review — independent pin review completed; community entry only.
  • Official catalog: aligns — not touched.
  • SDKs: aligns — not touched.

Contract-class: opt-in (catalog listing; does not change unconfigured axi defaults).

Fork CI is green after first-time workflow approval (docs-check, no-mistakes, Guard generated files). Greptile 4/5 is not a merge blocker here. Not merging yet: tip records status: admitted with no exception: field. Please replace the router-axi admission block with the YAML below, regenerate docs (node scripts/generate-docs.mjs / pnpm run docs:check), and re-raise via no-mistakes so attestation binds to the new head — then we can merge.

    admission:
      status: exception
      reviewed_revision: bd6f7b110c3f7cd0426f440c4d813defac6b8945
      reviewed_components:
        - bin/router-axi
        - cmd/router-axi/main.go
        - internal/app/app.go
        - internal/app/watch.go
        - internal/tr064/client.go
        - internal/skill/skill.go
        - internal/skill/SKILL.md
        - go.mod
        - README.md
      source_observations:
        - "Empty argv defaults to live status with compact TOON-style output; --json is explicit (watch is JSONL). Bare -v, -V, and --version print the bare version and exit 0 before any router work; unknown or context-invalid flags exit 2 with that command's valid flags (cmd/router-axi/main.go, internal/app/app.go)."
        - "Structured results and errors use stdout with typed exit codes and remediation hints; watch terminal errors are final stdout/JSONL records, and stderr is reserved for diagnostics when stdout itself fails (internal/app/app.go, internal/app/watch.go)."
        - "wifi enable|disable and reboot preview without --confirm; confirmed Wi-Fi changes only call SetEnable when state differs and verify GetInfo afterward, while reboot sends DeviceConfig:Reboot once with redirect refusal and no retry (internal/tr064/client.go)."
        - "backup reads ROUTER_AXI_BACKUP_PASSWORD only from the environment, requires HTTPS, writes atomically with owner-only permissions, and requires --force to overwrite; skill install is an explicit opt-in Agent Skill path with no automatic registration (internal/app/app.go, internal/tr064/client.go, internal/skill/skill.go)."
      exception: "No setup hooks (or other) ambient-context install command is present, so principle 7 opt-in session integrations are not offered via the CLI (skill packaging only via `skill install`)."

@Azd325 Azd325 changed the title feat(catalog): admit router-axi v0.4.0 feat: add router-axi to AXI catalog Sep 26, 2026
Comment thread catalog.yaml
domain: Router / TR-064
description: "Agent-ergonomic router inspection CLI - read-only TR-064 inspection (device, WAN, traffic, calls, devices, leases, Wi-Fi, guest Wi-Fi, port forwards) plus confirmed mutations (`wifi enable|disable`, `reboot`) and configuration backup over documented FRITZ!Box TR-064 interfaces."
admission:
status: exception

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Admission verdict contradicts intent
The PR’s Intent requires router-axi to be admitted at the pinned v0.4.0 revision and says the old exception must not be preserved. This change instead sets its status to exception and adds a principle-7 exception at line 1171. The catalog therefore records the opposite admission decision, violating the repository directive to respect the PR’s stated Intent.

Context Used: If there is a VISION.md file at the root of the repo, the PR must not conflict / diverge / drift from it. If the PR description has an "Intent" section, respect that as the accepted user intent. - Do make comments if anything in the implementation ... (source)

@Azd325

Azd325 commented Sep 26, 2026

Copy link
Copy Markdown
Contributor Author

The maintainer-supplied v0.4.0 admission block is now applied at 9e1b8a8.

It pins review to bd6f7b110c3f7cd0426f440c4d813defac6b8945, records the fixed v0.4.0 behavior, and retains the single remaining P7 exception for the absence of CLI session/setup hooks. pnpm run docs:check, pnpm run docs:test, and the no-mistakes validation passed.

No further router-axi code change is needed for this catalog review. The remaining Greptile failure reflects the superseded intent context; the maintainer’s current review confirms the corrected exception block and says the 4/5 result is not a merge blocker.

@kunchenguid
kunchenguid merged commit e15f82d into kunchenguid:main Sep 27, 2026
4 of 5 checks passed

Copy link
Copy Markdown
Owner

Speaking as Kun's firstmate: this is merged. Thank you @Azd325 — really appreciate you taking the time on this.

Tip 9e1b8a8a4bb1673822970390591ce037c8c7fc9f matched the requested exception admission at pin bd6f7b110c3f7cd0426f440c4d813defac6b8945 (P7 skill-only / no setup hooks). Squash merge commit e15f82dd8e75ff640aaefd5c76c49471c5bcbbea.

VISION.md per-rule (final):

  • Evolve conservatively: aligns — community catalog add with honest exception.
  • AXI principles: aligns at exception — P7 session hooks not offered via CLI.
  • Catalog: aligns — independent pin review; admission block present.
  • Official catalog: aligns — not touched.
  • SDKs: aligns — not touched.

Contract-class: opt-in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants