C1 W7 pre-apply remediation — 03 authorize_build_step quorum packet (live) 2026-06-23
03 — A3 · authorize_build_step Quorum / Approval Packet
Result: the quorum path is FULLY DISCOVERABLE and the mechanism is LIVE → A3 is NOT ..._HOLD_QUORUM_PATH_UNCLEAR.
But the required approvals do not exist and the agent cannot create them → A3 cannot pass without owner action. Capability ≠ authority.
All facts below are from governed read-only query_pg (db=directus) — no writes, no APR proposed/approved/executed.
The action
| field | value |
|---|---|
| action_code | authorize_build_step |
| description | "Issue an L3 governance_build_authorization grant for exactly one build step" |
| risk_level | high |
| status | active |
| handler_ref | unimplemented |
| _dot_origin | PG:sb1-gov-vocab |
Required quorum (EXACT — from fn_apr_quorum_check, not a runbook paraphrase)
The trigger trg_apr_quorum_check fires on approval_requests transition pending → approved and, for risk_level='high', RAISES unless all hold:
v_approves_president >= 1— an approve vote withapprover_type='human' AND approver ILIKE '%president%'.v_approves_council >= 2— ≥2 approve votes withapprover_type='ai_council'.v_rejects = 0— any reject vote blocks approval.- no self-approve — the proposer (
source_context->>'proposer'/'created_by') may not be among the approvers.
Apply-time re-proof (fn_apr_block_unimplemented_handler, trigger trg_apr_block_unimplemented, on approved→applied) re-checks quorum_passed() AND blocks if the action's handler is unimplemented. Confirmed by views v_apply_time_quorum_reproof_status (reproof = IMPLEMENTED, runs before the null-action early return) and v_authority_quorum_regression_guard (all P0 assertions: ai-cannot-approve-high-alone, president-required, reject-blocks, self-approve-prohibited, no-autoapprove-at-INSERT).
Consequence: even WITH full quorum, an
authorize_build_stepAPR can never reachappliedwhilehandler_ref='unimplemented'. Implementing the handler is the W7 prerequisite; the quorum is consumed at runtime when grants are actually issued.
Current vs required
| item | current | required | missing |
|---|---|---|---|
approval_requests WHERE proposed_action_code=authorize_build_step |
0 | ≥1 (pending) | 1 proposal |
| president approve votes for that APR | 0 | ≥1 | 1 president vote |
| ai_council approve votes for that APR | 0 | ≥2 | 2 council votes |
| reject votes | 0 | 0 | (ok) |
governance_build_authorization grants |
0 total / 0 active | n/a (output) | — |
The mechanism is real and exercised (proof it is not theoretical)
apr_approvals: 42 approvals across 14 distinct requests, 7 distinct approvers.- By type: 14 human (all
approver='president', decision=approve) + 28 ai_council (gemini11,gpt11,gpt-ai-council2,gemini-ai-council2,ai_council_11,ai_council_21). approval_requeststotal = 230. So there is a real human "president" approver identity and real ai_council members who have voted on prior governed actions — the same path applies toauthorize_build_step.
How to propose / record (the governed path — operator/owner, later)
- Propose: create an
approval_requestsrow via the governed APR proposer (dot/bin/dot-apr-propose, present + clean on VPS) withproposed_action_code='authorize_build_step',status='pending',source_contextcarrying the proposer identity. (Do NOT hand-INSERT — use the DOT/APR path.) - President approval: the human president casts an approve vote → recorded as an
apr_approvalsrow (apr_id=APR.id,approver_type='human',approvermatching%president%,decision='approve'). - ai_council approvals: ≥2 distinct ai_council members cast approve votes → 2
apr_approvalsrows (approver_type='ai_council'). - When the votes satisfy the rule, the APR is moved pending→approved and the quorum trigger validates it. For the W7 apply specifically, the same quorum is also needed on the deploy action (see below).
What command/operator step is needed later (W7 apply chain)
The W7 apply is not a single authorize_build_step APR — it deploys the handler so the action becomes usable:
- STEP1 — deploy handler: governed
patch_ops_codeAPR (the only implemented high-risk action; handler_ref=dot-apr-execute:patch_ops) to addexecute_authorize_build_stepintodot-apr-execute.patch_ops_codeis itself high-risk → same 1 president + 2 ai_council quorum. - STEP4 — bind handler_ref: operator migration (origin MIGRATION) to set
apr_action_types.handler_refforauthorize_build_stepto the deployed verb. - STEP5 — register
dot-c1-grant-issue: viadot-dot-register(clean on VPS). - SYNC_SECRET supplied at
dot-apr-executeinvocation (present at/opt/incomex/docker/.envline 41 — value never read here). - Only after the handler is implemented can an
authorize_build_stepAPR reachappliedto mint agovernance_build_authorizationgrant.
Why the agent cannot satisfy A3 (capability ≠ authority)
- Capability (proven, irrelevant to authority): root SSH to
vmi3080463, readable/opt/incomex/dot/bin,SYNC_SECRETpresent, GCP project ownership. These let one press the button. - Authority (the gate): the DB trigger enforces a multi-party human+council quorum. A single agent:
- cannot manufacture a human-president approve vote (it is not a human president; inserting a
human/%president%row = governance bypass); - cannot self-certify as a 2-member ai_council (one AI ≠ a 2-member council; self-quorum = bypass);
- has no APR to attach votes to (0 proposals for the action).
- cannot manufacture a human-president approve vote (it is not a human president; inserting a
- A macro instruction to "run" is not a governed president vote inside the system. No
SYNC_SECRETvalue was printed/used. No reject/self-approve shortcuts were attempted.
A3 gate: cannot pass in-agent. Owner must marshal 1 president + 2 ai_council through the governed APR path (and the same for the patch_ops_code deploy APR).