diff --git a/.orchestrator/approvals/d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e.attempt-2.json b/.orchestrator/approvals/d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e.attempt-2.json new file mode 100644 index 0000000..cbcb52a --- /dev/null +++ b/.orchestrator/approvals/d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e.attempt-2.json @@ -0,0 +1,10 @@ +{ + "approver": "val", + "attempt": 2, + "instance_id": "36c5cff469466dcabbeb7346ee491fed", + "note": "Owner authority, verbatim:\n\"Yes, auto merge\"\n\"remove the clause-by-clause prose pinning from tests/rulebook_cap.sh, then promote the resulting ready-for-main to main.\"", + "risk_class": "high", + "spec_digest": "d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e", + "spec_id": "SPEC-096", + "timestamp": "2026-08-16T05:02:17Z" +} diff --git a/.orchestrator/approvals/d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e.json b/.orchestrator/approvals/d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e.json new file mode 100644 index 0000000..dd46629 --- /dev/null +++ b/.orchestrator/approvals/d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e.json @@ -0,0 +1,18 @@ +{ + "approved_scope": [ + "tests/rulebook_cap.sh" + ], + "approver": "val", + "base_branch": "ready-for-main", + "instance_id": "36c5cff469466dcabbeb7346ee491fed", + "note": "Owner authority, verbatim:\n\"Yes, auto merge\"\n\"remove the clause-by-clause prose pinning from tests/rulebook_cap.sh, then promote the resulting ready-for-main to main.\"", + "reviewer_effort": "high", + "reviewer_model": "gpt-5.6-sol", + "risk_class": "high", + "spec_digest": "d938023b89d5bfdd3dc70a69ad751599876fef003c97e20df1f829456968957e", + "spec_digest_method": "sha256-file-bytes", + "spec_id": "SPEC-096", + "timestamp": "2026-08-16T05:02:17Z", + "worker_model": "gpt-5.6-luna", + "worker_reasoning_effort": "high" +} diff --git a/.orchestrator/escalations/SPEC-096-20260816T050826Z.json b/.orchestrator/escalations/SPEC-096-20260816T050826Z.json new file mode 100644 index 0000000..ec02ed6 --- /dev/null +++ b/.orchestrator/escalations/SPEC-096-20260816T050826Z.json @@ -0,0 +1,9 @@ +{ + "spec_id": "SPEC-096", + "reason": "integrate stopped at SPEC-096-2: merge refused/failed (rc=14)", + "evidence": { + "stderr": "dispatch: required check 'ci' not green on PR #330; refuse.", + "integrated_so_far": [] + }, + "created": "2026-08-16T05:08:26Z" +} \ No newline at end of file diff --git a/specs/SPEC-096.yaml b/specs/SPEC-096.yaml new file mode 100644 index 0000000..aa24a39 --- /dev/null +++ b/specs/SPEC-096.yaml @@ -0,0 +1,47 @@ +id: SPEC-096 +title: Remove brittle positive clause pins from the rulebook cap test +risk_class: high +depends_on: [] +objective: > + Delete exactly the two positive clause-presence loops from tests/rulebook_cap.sh while preserving + every other byte, so rulebook wording can change without disabling the retained heading and + superseded-wording protections. +in_scope: + - tests/rulebook_cap.sh +out_of_scope: + - everything else + - CLAUDE.md, scripts/models.json, fixtures, specs, approvals, and promotion machinery + - replacement tests, new machinery, adjacent cleanup, formatting, or wording changes +acceptance_criteria: + - > + The only candidate diff is tests/rulebook_cap.sh, and that diff deletes exactly the complete + positive high-risk clause loop at pinned-base lines 26 through 34, explicitly including its + following separator blank line and the complete positive autonomy-grant clause loop at + pinned-base lines 42 through 50, explicitly including its following separator blank line. No + other byte changes. + - > + The final tests/rulebook_cap.sh SHA-256 is exactly + 1dc9214bf8b24858a5de5bfe126fa2a4a287baba06889eb83e1e9765f6af6a80. + - > + The existing six-marker loop remains byte-identical and continues to check exactly Intake:, + One workstream:, Review cap:, Communication:, ONE brief, and Code discipline:. + - > + Both existing negative checks remain byte-identical: the test still rejects the superseded + high-risk sentence containing "approval file from the owner, which the orchestrator never" + and the superseded autonomy sentence containing "and stops wherever a gate stops it (HALT, a + spent cap, any human-required approval).". + - > + tests/rulebook_cap.sh contains no occurrence of "invariant clause present" and contains no + replacement positive clause-presence loop or equivalent clause-by-clause prose pinning. + - > + The shebang, header comment identifying tests/prose_cap.sh as the size-cap enforcer, shell + setup, failure accumulator, and final PASS/FAIL and exit lines remain byte-identical. + - > + Running ./tests/rulebook_cap.sh against the candidate exits 0 and prints PASS rulebook_cap.sh; + its retained marker and superseded-wording assertions are unchanged by this behavior-neutral + preparation/test cleanup. +test_command: test "$(sha256sum tests/rulebook_cap.sh | cut -d' ' -f1)" = 1dc9214bf8b24858a5de5bfe126fa2a4a287baba06889eb83e1e9765f6af6a80 && ! grep -Fq 'invariant clause present' tests/rulebook_cap.sh && ./tests/rulebook_cap.sh +hard_ceiling_hours: 1 +needs_network: false +context: + - .orchestrator/plans/PROMOTION-2026-08-15.md