The page and the ADR had already diverged once. They are now one source: the
markdown is authoritative and the page is generated, never hand-edited.
The renderer recognises conventions the document already uses rather than
requiring extra markup, so the source stays a readable document. A table whose
first column is **X0**/**X1** becomes a level ladder; a table headed Threat
becomes the threat matrix; a table with a Kind column gets mechanical and
adversarial chips; a table headed "E \ P" becomes the two-axis grid; ## N.
headings build the section rail.
Stdlib only, per the structure-not-tooling stance. A publishing step that needs
its own toolchain is a publishing step that stops being run - the same
reasoning tenant-engine used for its pin check.
One real consequence beyond deduplication: the E x P matrix had existed only on
the page, so the canonical document did not contain its own central diagram.
It is now a table in the markdown, which is where it should always have been.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Seed a non-secret service inventory (environments, hosts, clusters,
services, endpoints, access paths, evidence, gaps) with a JSON schema,
a renderer, and a generated service-catalog view. Adds the
`make ops-inventory-view` target, probe ActivityDefinition, and docs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
If the repo doesn't exist on the sandbox host, the chmod fails.
Now e2e-cron-install rsyncs the repo first (same mechanism as make e2e),
then installs the cron entry. run-on-host.sh uses git pull for
subsequent updates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
For environments where ansible-playbook is unavailable (e.g. WSL2 TLS
issue blocks install). Deploys id_custodian_agent.pub via direct SSH
using any existing admin key.
Usage: make custodian-key-deploy ADMIN_KEY=~/.ssh/id_ops
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- make custodian-keygen: generates ~/.ssh/id_custodian_agent, writes
public key to railiance-infra/ansible/inventory/group_vars/all.yaml
- make custodian-key-show: prints the current public key
- e2e targets automatically use id_custodian_agent when present
- e2e-cron-install uses custodian key, no manual key passing needed
Full flow:
make custodian-keygen # one-time
cd ~/railiance-infra && make provision-custodian-agent # deploy key
make e2e-cron-install REPO=activity-core # install cron
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>