ops-mason/src/ops_mason
tegwick 9bcb5819de Fix KV v2 policy path shape; live end-to-end verification succeeded
Two more real bugs found completing this lane for real:

1. platform-admin's own policy had no entry for the new reins/ mount --
   the founder's paste-once-provision write 403'd because the admin
   identity that created the mount was never granted access to operate
   on it. Fixed live (added path "reins/*" matching every other mount
   already in that policy).

2. _policy_hcl wrote the bare KV-v1-shaped path
   (reins/rein-openweights/openrouter) instead of KV v2's data/+metadata/
   sub-paths -- bao token capabilities on the bare path even reported
   full access, but the actual kv get still 403'd, because OpenBao
   evaluates the real request against the data/-prefixed path. Caught
   when the AppRole's own read failed during live verification. Fixed
   in code (now emits both data/ and metadata/ paths), locked in with a
   dedicated unit test, and re-applied to the live policy.

Live end-to-end verification succeeded after both fixes: real AppRole
login, real KV v2 read via the corrected policy, real OpenRouter call,
real commit -- with OPENROUTER_API_KEY unset the whole time. Plan status:
catalogued. glas-harness/GLAS-WP-0002-T02 is closed by this.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 01:50:18 +02:00
..
__init__.py Review/optimize checklist, executive-summary format, build executor (T02-T04) 2026-07-27 00:56:34 +02:00
audit.py Review/optimize checklist, executive-summary format, build executor (T02-T04) 2026-07-27 00:56:34 +02:00
executor.py Fix KV v2 policy path shape; live end-to-end verification succeeded 2026-07-27 01:50:18 +02:00
plan.py Review/optimize checklist, executive-summary format, build executor (T02-T04) 2026-07-27 00:56:34 +02:00