diff --git a/workplans/GLAS-WP-0002-observability-and-composability-followups.md b/workplans/GLAS-WP-0002-observability-and-composability-followups.md index 4b596c9..de60cfa 100644 --- a/workplans/GLAS-WP-0002-observability-and-composability-followups.md +++ b/workplans/GLAS-WP-0002-observability-and-composability-followups.md @@ -60,17 +60,39 @@ vault round trip actually works end to end. Coordinate with `rein-openweights` directly; this task's outcome should be recorded in both repos. -**Blocked (checked 2026-07-26):** `bao token lookup` from this -workstation returns `403 permission denied` — no usable vault session -here. Provisioning a new AppRole (`auth/approle/role/...`) and a KV -secret for `rein-openweights`, mirroring `rein-aharness`'s `binky-mail` -lane, needs vault-admin access this session doesn't have. Needs the -operator to provision the AppRole (or provide an ambient token with -enough privilege) before this can be exercised for real. +**Done (2026-07-27).** The blocker got its own builder: `ops-mason` +(chartered specifically for this class of problem — see its `INTENT.md`) +ran the full construction-plan → review → executive-summary → approval → +build pipeline for real (`ops-mason/plans/rein-openweights-openrouter-approle.md`), +against real OpenBao (founder logged in via `bao login -method=oidc +-path=netkingdom role=platform-admin`, after the bare `-method=oidc` +default 403'd against the wrong mount path). + +Real infrastructure now live: `reins/` KV v2 mount, policy +`workload-kv-read-rein-openweights-openrouter`, AppRole +`rein-openweights`, role_id/secret_id delivered to +`~/.local/rein-openweights/approle/`. Founder completed +`paste_once_provision` through ops-warden's desk. Catalog entry +`rein-openweights-openrouter-approle` is `active` in `ops-warden`. + +**Live verification, for real:** ran a task through `rein-openweights` +with `OPENROUTER_API_KEY` explicitly unset and +`REIN_OPENWEIGHTS_APPROLE_DIR` pointed at the delivered credential — +real AppRole login, real KV v2 read, real OpenRouter API call, real +2-turn tool-calling loop, real commit +(`e30d520c79a3493aeea5e8ea4d5ec331512b781d`). The vault round trip is +what ran, not the env-var short-circuit. + +Two real bugs surfaced and were fixed at the root cause along the way +(not this repo's code — `ops-mason`'s and `ops-warden`'s): a KV v2 +policy path shape bug (`ops_mason/executor.py::_policy_hcl` was writing +the bare KV-v1-shaped path, which silently denies everything on a v2 +mount) and a missing `platform-admin` policy entry for the brand-new +`reins/` mount. Full account in `ops-mason`'s plan file section 7. ```task id: GLAS-WP-0002-T02 -status: wait +status: done priority: medium state_hub_task_id: "74b4f35b-9cdd-4228-aeed-e0eec458c0bf" ```