ops-warden/.claude/rules/architecture.md
tegwick c357ce5908 WARDEN-WP-0033 T01/T02: two under-graded lanes, and ADR-0008
secrets-engine reviewed our catalog metadata while drafting their five entries
and graded issue-core-ingestion-api-key and reuse-surface-hub-write-token high.
We had both as standard, and had deliberately regraded them DOWN on 2026-08-19.

They are right. Both paths carry a second credential our grade never looked at --
GITEA_BACKEND_TOKEN (CCR-2026-0002, a deliberate field-set decision) and a
dual-consumer webhook HMAC (CCR-2026-0005). Neither is recovered by rotating the
credential the lane is named after.

The defect is structural: we graded the lane by its headline field, but a read
returns every field at the path. Worse, the evidence was already in the CCRs we
cite as authoritative -- not missing, unread -- and a test asserted the wrong
answer, so a correct first-pass grade got overruled by it.

ADR-0008 records the rule: a grade covers every field its path discloses.
ADR-0007 is unchanged and still governs; this says what the grade is of.

Six of the remaining standard lanes have no KV path. Two have paths and no field
evidence; per ADR-0008 they are stated as unknown rather than assumed, and left
for operator-sanctioned grading.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 08:36:42 +02:00

2.8 KiB

Architecture

Our rules are ADRs — docs/adr/

The decisions that govern this repo live in docs/adr/ as addressable records, not in wiki prose. Read docs/adr/README.md first; it explains the one distinction that matters here.

ADR Rule
ADR-0001 The routing catalog is a pointer layer, never a second copy of an owner's procedure
ADR-0002 ops-warden is a transparent conduit, never a secret broker
ADR-0003 Cover gaps, but never silently own them
ADR-0004 High-risk lanes refuse raw value streaming to agent sessions
ADR-0005 Implement one lane narrowly, route everything else
ADR-0006 Enforcement is zone-scoped, never a global flag
ADR-0007 Build-stage permissiveness stops at credential disclosure; every lane carries an explicit risk grade
ADR-0008 A lane's risk grade covers every field its path discloses, not just the field it is named after

Owned versus inherited — check owner: before changing anything

Every ADR carries owner: in its frontmatter, and it decides what you are allowed to do with the rule:

  • owner: ops-warden — ours. We are bound by it and we may change it. Changing one means writing a superseding ADR, not editing the decision in place.
  • any other owner — inherited. We follow it; we do not own it. Dispute it through that owner's process; never amend it here.

Everything in docs/adr/ today is owner: ops-warden. Rules we merely follow — NetKingdom canon, the IAM profile, the credential-management standard — are cited, never copied in. Copying them would recreate the second-source-of-truth failure ADR-0001 exists to prevent.

Naming collision, worth knowing. ADR-001 (three digits) in workplan-convention.md and session-protocol.md is the-custodian's ADR establishing the workplan convention across the whole estate. It is inherited and not ours to change. Our records are four-digit — ADR-0001ADR-0005 — and live in this repo. When writing, say "the-custodian's ADR-001" if that is what you mean.

Precedence

If a wiki page, playbook, or .claude/rules/ file disagrees with an ADR, the ADR is right and the other file is a defect — fix it rather than working around it. The rule files are agent-facing operational instructions derived from these decisions; they should cite an ADR rather than restate its reasoning.

Publication

These ADRs are publishable through policy-nexus at policy.coulomb.social, which requires title, status and owner, renders owner in the page header and in the index, and records source repo, path and revision digest in its manifest. Ownership survives the repo boundary. policy-nexus publishes and never writes back: the file here is the source of truth.

Quick Reference

~/state-hub/mcp_server/TOOLS.md — MCP tool reference