Skip to content

feat(go): generate the control pages from data/agentic-controls.json - #68

Merged
imran-siddique merged 1 commit into
mainfrom
feat/controls-generator
Sep 14, 2026
Merged

imran-siddique merged 1 commit into
mainfrom
feat/controls-generator

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

The 31 pages under /go/ were written by a generator that never landed in any repo (#39 called porting it the follow-up), so they drifted. They still carried the "Open standards for AI agent governance" tagline and alt text, the agentrust.io wordmark, design-system.css?v=10 on the redirect pages, and a limits bullet saying model weight custody comes from a specification in private pre-standardization. The Weight Custody Manifest repository is public and wcm.agentrust-io.com serves it.

The generator

  • tools/build-controls.py renders go/index.html and the 30 go/<slug>/index.html redirects from data/agentic-controls.json. Python stdlib only.
  • --check fails when any page differs from the data. The links job in reader-journey.yml runs it, so a hand edit to a page fails CI.
  • It validates the data before rendering: required fields, unique ids and slugs, permalinks matching slugs, known enforcement points, OpenCRE id and URL shape, families kept together.
  • It refuses to run when a published permalink directory has no control in the data, because external standards cite those URLs. Retiring one has to be its own deliberate change.
  • The counts (30 controls, 62 OpenCRE links, 53 Common Requirements) and the number words ("Fourteen of the thirty") are computed from the data.

Content fixes, made in the generator

  • Tagline and social card alt text read "Open specifications for verifiable AI", the wordmark reads AgenTrust, and the eyebrow links /#chain, as on the other sub-pages.
  • A control can carry an optional spec field. AT-30 now names the Weight Custody Manifest and links wcm.agentrust-io.com, which the page promised once that specification was public. AT-29 stays marked private, since agentic-usage-control is still a private repository. The limits bullet is rendered from those markers and now names only continuous usage control.
  • All 31 pages load design-system.css?v=20, the version the homepage moved to in feat(home): lead with evidence a stranger can check #63.
  • The closing note links the data file and the generator, and each page carries an HTML comment naming both.

Changing a control from now on: edit data/agentic-controls.json, run python tools/build-controls.py, commit both.

Checked

  • Before any content change, --check passed against the pages on main at e7d7a9f with only the two private spec markers added to the data. The generator reproduced all 31 pages byte for byte.
  • After: build-controls.py --check, check-site.py (43 pages, 652 local links), build-discovery.py --check, check-discovery.py and check-dashes.js pass. A grep of go/ finds none of the old tagline, wordmark, eyebrow, "mapping sheet" note or v=1x stylesheet strings.
  • --check exits 1 on a hand edit to one redirect page, on a malformed OpenCRE id in the data, and on a permalink directory with no control.

Generated with Claude Code

https://claude.ai/code/session_013aK3gVWzNdcM3hZ2o2awK2

The 31 pages under /go/ came from a generator that never landed in any
repo, so they drifted: the old governance tagline and alt text, the
agentrust.io wordmark, a v=10 stylesheet on the redirects, and a limits
bullet calling the Weight Custody Manifest private.

tools/build-controls.py now renders go/index.html and the 30 redirects from
data/agentic-controls.json, validates the data first, and refuses to run
when a published permalink has no control. --check runs in the links job,
so a hand edit fails CI.

Before any content change it reproduced all 31 pages on main byte for byte.
The fixes are then made in the generator: new tagline, AgenTrust wordmark, an
eyebrow linking /#chain, stylesheet v=20, and an optional spec field per
control. AT-30 links wcm.agentrust-io.com; AT-29 stays private, and the
limits bullet is rendered from those markers.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aK3gVWzNdcM3hZ2o2awK2
@imran-siddique
imran-siddique merged commit 9d71db6 into main Sep 14, 2026
5 checks passed
@imran-siddique
imran-siddique deleted the feat/controls-generator branch September 14, 2026 19:32
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.

1 participant