Commit graph

81 commits

Author SHA1 Message Date
26cb011141 Record verified Qonto AppRole bridge 2026-07-27 03:13:46 +02:00
239776974b Revise Qonto secret lane for cross-cluster topology 2026-07-27 02:37:26 +02:00
8d89611b22 Plan Qonto Kubernetes credential lane 2026-07-27 02:06:59 +02:00
3125e94219 Regenerate WORK-RECORDS.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 02:04:17 +02:00
custodian-sync
e8eb989a0e chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 02:03:59 +02:00
910aa75d96 Mark MASON-0001 bootstrap workplan finished
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 02:03:45 +02:00
custodian-sync
711bbbed8a chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 02:00:46 +02:00
5459a8467f Mark MASON-WP-0001 finished
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 02:00:33 +02:00
custodian-sync
607dde6bbd chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 01:50:33 +02:00
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
846ef0561c Regenerate WORK-RECORDS.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 01:25:50 +02:00
custodian-sync
559be9dcf0 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 01:25:29 +02:00
33573a35a1 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>
2026-07-27 01:25:14 +02:00
ae75a6c4d9 Regenerate WORK-RECORDS.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 01:00:06 +02:00
custodian-sync
ce6febb8f5 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 00:59:48 +02:00
custodian-sync
36f3874b9c chore(consistency): renormalize lifecycle state [auto]
Updated by fix-consistency on 2026-07-27:
  - workplan status: proposed → active
2026-07-27 00:59:45 +02:00
116db485d9 Record founder approval on the rein-openweights AppRole plan
status: approved, approved_by: Bernd Worsch, approved_at: 2026-07-27.
Verified against the real executor code: ConstructionPlan.load(...)
.is_approved() returns True for this file. MASON-WP-0001-T05 moves from
todo to wait -- the approval gate is cleared, phase 4 execution is
blocked only on a real OpenBao session existing somewhere (bao token
lookup still 403 from this workstation).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:59:37 +02:00
233bcef478 Regenerate WORK-RECORDS.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:57:02 +02:00
custodian-sync
5abea5d549 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 00:56:46 +02:00
0d62ac501d Review/optimize checklist, executive-summary format, build executor (T02-T04)
docs/review-optimize-checklist.md: six checks (naming, TTL/scoping,
redundancy, compaction, ease of use, posture), applied for real to the
rein-openweights plan's section 4 -- including a genuinely useful
finding (credentials.py already expects this exact path/delivery shape,
zero code changes needed to consume it).

docs/executive-summary-format.md: six fixed fields, no bao syntax, no
restating earlier sections, explicit approve/reject/revise decision.
Rendered for real into the plan's section 5 -- ready for an actual
decision.

src/ops_mason/{plan,executor,audit}.py: the phase-4 build executor for
credential_type openbao-approle-kv. Refuses to run against anything but
an approved plan -- verified the refusal never even calls subprocess.run.
role_id/secret_id (the AppRole's own access credential, not the
downstream secret) land as 0600 files, never logged; the HCL policy
goes over stdin, never argv; the audit trail is metadata-only. 12 tests,
all mocked at the bao boundary (no live OpenBao access from this
session).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:56:34 +02:00
123ccfe20c Regenerate WORK-RECORDS.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:47:40 +02:00
custodian-sync
adb387cf99 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 00:47:26 +02:00
custodian-sync
6aee423bbd chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - MASON-0001-T01: todo → done
2026-07-27 00:47:22 +02:00
a762be9e17 Construction-plan format + first real plan draft (MASON-WP-0001-T01)
docs/construction-plan-format.md: one file per plan (plans/<id>.md),
frontmatter status tracker (draft -> reviewed -> approved -> built ->
catalogued, the phase-4 hard gate), six body sections threading all
four phases through one document.

Proven against real demand: plans/rein-openweights-openrouter-approle.md,
phases 1-2 filled in. Found and reasoned through a real existing-structure
question along the way -- the openrouter-llm-connect catalog lane could
technically be reused, but its auth_method is interactive-caller-shaped
and its policy is shared/high-risk; recommends a dedicated, narrowly
scoped AppRole instead, same reasoning agent-harness-binky-mail used for
its own dedicated lane.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:47:15 +02:00
custodian-sync
d3dbad34e1 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 00:44:48 +02:00
ed518fb876 Tighten the ops-warden boundary after reviewing its actual repo
Found two things in ops-warden's own code/docs that sharpen the
boundary beyond what INTENT.md originally said:

1. registry/routing/catalog.yaml enforces a real "no-double-source
   rule": non-SSH entries are pointer-only (id/title/need_keywords/
   owner_repo/subsystem/wiki_ref/canon_ref/reviewed/status), never an
   authored steps/cert_command block -- that's reserved for
   warden_executes: true (ops-warden's own SSH lane). ops-mason's
   catalog contributions must follow the same rule: warden_executes:
   false always, status: draft until verified, and it's a normal git
   contribution to ops-warden's repo, not a live registration API.

2. ops-warden already ships a founder-facing "paste-once provision"
   desk (src/warden/desk.py's paste_once_provision act) that writes a
   secret VALUE into an EXISTING KV path via a localhost-only web form,
   never through a terminal/chat/audit log. It does not create
   AppRoles, policies, or paths -- that gap is exactly what ops-mason
   fills. Clean split: ops-mason builds structure only and never
   touches a secret value, even transiently; the founder delivers the
   actual credential through ops-warden's existing desk once the
   structure exists.

Updated INTENT.md/SCOPE.md/MASON-WP-0001 accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:44:37 +02:00
c5e935f949 Regenerate WORK-RECORDS.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:23:33 +02:00
custodian-sync
c27afca1d2 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-27:
  - update .custodian-brief.md for ops-mason
2026-07-27 00:23:12 +02:00
0c39bbd1cc Register with State Hub, close bootstrap housekeeping (MASON-0001)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:22:58 +02:00
dff106073b Charter ops-mason: builder of NetKingdom security infrastructure
INTENT.md establishes the four-phase process (construction plan ->
review/optimize -> executive summary -> build), grounded in ops-warden's
own charter: ops-warden explicitly disclaims being a builder/provisioner
("owns no secret store and vends nothing", routes provisioning
elsewhere) and states its own design principle that "the founder is
escalated to, never tasked with mechanics" -- ops-mason's executive
summary gate is that principle applied to the provisioning side, turning
today's ad hoc founder Red-lane bao commands into a reviewed, repeatable
process.

MASON-WP-0001 stands up the four phases and exercises the whole
pipeline on real, already-waiting demand: the rein-openweights OpenBao
AppRole that glas-harness/GLAS-WP-0002-T02 is blocked on.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 00:21:25 +02:00
c9608a4b93 Initial commit 2026-07-26 21:42:19 +00:00