Real build executed for real (MASON-WP-0001-T05, MASON-WP-0001 done 5/5)

Ran the whole approved pipeline against real OpenBao: created the reins/
KV v2 mount (after pausing for explicit founder confirmation -- a bigger
action than the executive summary's blast-radius framing disclosed),
the read-only policy, the AppRole, delivered role_id/secret_id. Caught
and fixed a real bug in the same pass: built with token_num_uses=0
(OpenBao's default = unlimited) instead of the plan's own stated 8;
fixed live and removed the executor's silently-permissive default so it
can't recur. Catalog entry proposed and merged in ops-warden (c0a50bc).

Corrected a real misreading in this repo's own INTENT.md along the way:
pointer fields (auth_method/fetch_command/rotation.steps) are normal on
non-SSH catalog entries; only a bare top-level steps:+cert_command:
pair is SSH-only -- verified against ops-warden's real entries and its
full test suite (326 tests, green).

Plan status: built. Catalog entry status: draft until the founder's
paste-once-provision and glas-harness/GLAS-WP-0002-T02's live
verification succeed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-07-27 01:25:14 +02:00
parent ae75a6c4d9
commit 33573a35a1
5 changed files with 110 additions and 26 deletions

View file

@ -40,10 +40,15 @@ class AppRoleKVSpec:
policy_name: str
kv_path: str
approle_name: str
# token_num_uses has no default on purpose: OpenBao's own default (0)
# means *unlimited* uses, the opposite of "bounded" -- a plan that says
# "bounded token_num_uses" (the agent-harness-binky-mail shape, which
# actually uses 8) must have that number chosen explicitly, not
# inherited silently from whatever OpenBao considers a sane default.
token_num_uses: int
kv_capabilities: tuple[str, ...] = ("read",)
token_ttl: str = "15m"
token_max_ttl: str = "30m"
token_num_uses: int = 0
secret_id_ttl: str = "0"
delivery_dir: Path | None = None
bao_bin: str = "bao"