These workplans exist only in the retired local hub. Their random pre-ADR-007 identifiers are refused by C-06 as stale references, so they cannot be registered. Deriving from the canonical record id takes no identity from anything: central does not hold them and the old ids die with the cache. Records central already holds were deliberately left untouched. Refs CUST-WP-0068-T06 Assistant: claude-code Assistant-Model: opus Assistant-Process: 2583210@bnt-lap001 Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
5.9 KiB
| id | type | title | domain | repo | status | owner | topic_slug | planning_priority | planning_order | created | updated | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| WARDEN-WP-0029 | workplan | Policy front door: posture-aware access planning + founder interaction surface | infotech | ops-warden | finished | codex | custodian | high | 29 | 2026-07-18 | 2026-07-18 | bbb3d9ec-d88d-5088-b4c0-55bfba0a10cf |
WARDEN-WP-0029 — Policy front door + founder interaction surface
Origin
Founder directive 2026-07-18 (binky-control cutover prep): agents proposed
raw credential mechanics to the founder ("attach the deploy key in the
forgejo UI", "save the PAT to /tmp/...") although a catalogued lane
(forgejo-admin-api-token, WARDEN-WP-0025) already covered the need — the
installed CLI's catalog was stale, and nothing forced the ask-warden-first
step. Directive: ops-warden is the service to ask what can and needs to be
done per NetKingdom policy; the founder is bothered only when policy makes
it absolutely necessary, and then preferably via a purpose-built interaction
surface, not CLI/file handoffs. The organization is in build phase and
ops-warden must know that posture. INTENT.md principles 7 and 8 (added with
this workplan) capture the direction.
Goal
warden plan "<need>"— a policy decision front door: given a need, answer autonomous / founder-act-required / unroutable, with the exact commands or the exact founder act, posture-stated.- Declared organization posture (
build) as a third axis beside env posture (dev/test/prod) and workload maturity (M0–M3). - A founder interaction surface: local web page for the rare founder acts (approve, OIDC-login prompt, paste-once secret capture straight into OpenBao) — no values through CLI history or files.
- Catalog freshness + agent guidance so ask-warden-first is the enforced default.
Design constraints (optimized 2026-07-18)
- Compose, do not fork:
warden planmust call the routing catalog +expand_handoff/resolvable; it must not re-implement keyword matching or invent a second catalog. - Org posture is a third axis: do not overload env posture or maturity.
- Desk MVP is build-phase only: localhost, OS-session trust, stdlib HTTP
server (pattern: net-kingdom
security-bootstrap-console). No core-hub / whynot dependency for v1. - Reuse map (reuse.coulomb.social): flex-auth (policy-evaluate), key-cape (OIDC act), net-kingdom bootstrap console (localhost desk shape), railiance-platform (OpenBao custody). Do not rebuild those owners.
Delivery sequence
T02 (org posture) ─┐
T05 (catalog freshness) ─┼─→ T01 (warden plan composes both)
T04 (playbook sweep) ───┘ (parallel once plan shape known)
T03 (desk) ← after T01 can emit founder_required with a typed act
T05 is high priority: catalog staleness was the incident root cause.
Tasks
T02 — Declared organization posture (build phase)
id: WARDEN-WP-0029-T02
status: done
priority: high
state_hub_task_id: "6c213024-6601-5116-b52f-d6711dc0587d"
Added organization_posture: build as axis C in
registry/policy/security-posture.yaml (relaxations + graduation triggers).
Surfaced in warden policy list/show, scorecard, and warden plan output.
T05 — Catalog freshness + agent guidance
id: WARDEN-WP-0029-T05
status: done
priority: high
state_hub_task_id: "c82d8745-4af4-5b89-ab49-06d8a902e592"
Catalog.freshness() reports source (repo/bundled/override), content hash,
mtime, package version, stale entry count, and warnings for bundled fallback.
Human warden route list prints catalog line; plan JSON embeds catalog.
Scorecard check catalog_freshness. AGENTS.md + credential-routing rules
require warden plan before founder credential steps.
T01 — warden plan decision front door
id: WARDEN-WP-0029-T01
status: done
priority: high
state_hub_task_id: "34db38fa-cb99-5ced-9a12-85176a7f2b44"
warden plan "<need>" [--actor] [--domain] [--json] composes catalog find +
handoff + org posture + policy gate. Verdicts: autonomous /
founder_required (oidc_login | approve | paste_once_provision) /
unroutable (CCR stub). Metadata-only audit. Module: src/warden/plan.py.
T04 — Retire file-drop patterns from playbooks
id: WARDEN-WP-0029-T04
status: done
priority: medium
state_hub_task_id: "717f57da-fbc4-5a4d-9f8c-c1c3fa75e0ee"
wiki/playbooks/forgejo-admin-api-token.md rewritten: plan-first, sanctioned
transports (--exec/--out/--wrap), desk paste-once for provision; /tmp
file drops marked retired. Consumer follow-ups noted for railiance-platform
and binky-control docs.
T03 — Founder interaction surface (local web approval page)
id: WARDEN-WP-0029-T03
status: done
priority: medium
state_hub_task_id: "47c781d2-768b-5777-b971-b5227fe41f5c"
warden desk — loopback ThreadingHTTPServer, short-lived token URL, acts
approve / oidc_login / paste_once_provision (bao kv put via stdin, dry-run
supported). Metadata-only audit open/close. Module: src/warden/desk.py.
Acceptance
warden plan "forgejo deploy key for binky-control"→autonomous/agent-harness-forgejo-deploywith access commands- Provision-style needs →
founder_requiredwith typed founder act - Posture
buildin plan + policy + scorecard - Desk approve flow (unit) with zero secrets in audit
- No in-repo playbook instructs founder file drop as steady state
- Catalog freshness on
warden route list/ plan JSON
See also
- INTENT.md §7 (founder escalated, never tasked) and §8 (build-phase posture)
- WARDEN-WP-0025 (forgejo admin token lane), WARDEN-WP-0026/0027 (disclosure hygiene, governance lockdown)
- reuse.coulomb.social:
capability.authorization.policy-evaluate,capability.iam.key-cape,capability.security.iam-tooling-suite - binky-control DEC-2026-003 (first consumer: cutover without founder mechanics)