fix(D5-A/B): authority audit — exception-path verification + task_tree limitation documented #320

Merged
conductor merged 2 commits from d5-authority-audit into master 2026-09-10 01:50:10 +01:00
Owner

TASK C: D5 authority audit — D5-B fixed, D5-A structural limitation documented

Branch d5-authority-audit, commit 4703484.

D5-B (exception-path verification) FIXED:

  • _execute_stage exceptions are now caught in execute() via try/except/else
  • Mutation verification runs in ALL paths including exceptions
  • The exception is captured but NOT re-raised past the mutation check (which would bypass the STAGE_FAILED result)
  • Test: worker mutates source then raises RuntimeError → mutation caught, result FAILED ✓

D5-A (task_tree authority) — STRUCTURAL LIMITATION DOCUMENTED:

  • task_tree.json remains in the allowlist because advance() runs inside _execute_stage (the executor writes it)
  • A worker that also modifies it cannot be distinguished from the executor's write by fingerprint alone
  • The structural fix (separating worker execution from executor advancement) is tracked for ADAPT-2 (#291)
  • The test documents the current boundary honestly — it does NOT pretend the check catches what it can't

Both audit findings were addressed according to their actual type:

  • D5-B: real code fix (exception-safe control flow)
  • D5-A: structural limitation documented honestly (not pretended as fixed)

1171 tests pass; ruff clean. BLE001 baseline 352→353 (new exception block).

## TASK C: D5 authority audit — D5-B fixed, D5-A structural limitation documented Branch `d5-authority-audit`, commit 4703484. **D5-B (exception-path verification) FIXED:** - `_execute_stage` exceptions are now caught in execute() via try/except/else - Mutation verification runs in ALL paths including exceptions - The exception is captured but NOT re-raised past the mutation check (which would bypass the STAGE_FAILED result) - Test: worker mutates source then raises RuntimeError → mutation caught, result FAILED ✓ **D5-A (task_tree authority) — STRUCTURAL LIMITATION DOCUMENTED:** - task_tree.json remains in the allowlist because advance() runs inside _execute_stage (the executor writes it) - A worker that also modifies it cannot be distinguished from the executor's write by fingerprint alone - The structural fix (separating worker execution from executor advancement) is tracked for ADAPT-2 (#291) - The test documents the current boundary honestly — it does NOT pretend the check catches what it can't **Both audit findings were addressed according to their actual type:** - D5-B: real code fix (exception-safe control flow) - D5-A: structural limitation documented honestly (not pretended as fixed) 1171 tests pass; ruff clean. BLE001 baseline 352→353 (new exception block).
conductor added 1 commit 2026-09-10 01:46:15 +01:00
fix(D5-A/B): authority audit — exception-path verification + task_tree structural limitation documented
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / documentation (push) Successful in 4s
Auto-label / priority-gate (pull_request) Skipped
Auto-label / auto-label (pull_request) Successful in 2s
CI Pipeline / canary (push) Successful in 34s
CI Pipeline / lint (push) Successful in 41s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / unit-tests (push) Successful in 58s
CI Pipeline / best-practices (pull_request) Successful in 4s
CI Pipeline / documentation (pull_request) Successful in 4s
CI Pipeline / lint (pull_request) Successful in 36s
CI Pipeline / canary (pull_request) Successful in 33s
CI Pipeline / gitea-offline (pull_request) Successful in 16s
Spec gate (headless) / spec-gate (pull_request) Successful in 6s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / type-check (pull_request) Successful in 30s
CI Pipeline / unit-tests (pull_request) Successful in 59s
CI Pipeline / required-checks (pull_request) Successful in 1s
470348493d
TASK C D5 authority audit results:

D5-B (exception-path verification) FIXED:
- _execute_stage exceptions are now caught (try/except/else) in execute()
- mutation verification runs in ALL paths including exceptions
- exception is captured, mutation check runs, result is STAGE_FAILED
- the exception is NOT re-raised past the mutation check (which would
  bypass the STAGE_FAILED result)
- test_d5b_exception_path_still_verifies: worker mutates source then
  raises → mutation caught, result FAILED ✓

D5-A (task_tree authority) — STRUCTURAL LIMITATION DOCUMENTED:
- task_tree.json remains in the allowlist because advance() runs inside
  _execute_stage (the executor writes it). A worker that also modifies it
  cannot be distinguished by fingerprint alone.
- The structural fix (separating worker execution from executor advance)
  is tracked for ADAPT-2 (#291) route authority
- The test documents the current boundary honestly — it does NOT pretend
  the check catches what it can't

Lint baseline: BLE001 352→353 (new exception block in execute()).

1171 tests pass; ruff clean.
gitea-actions Bot added the buggovernance labels 2026-09-10 01:46:25 +01:00

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-10 01:48:08 +01:00
Merge branch 'master' into d5-authority-audit
CI Pipeline / best-practices (push) Successful in 7s
CI Pipeline / documentation (push) Successful in 3s
CI Pipeline / canary (push) Successful in 34s
CI Pipeline / lint (push) Successful in 40s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / gitea-offline (push) Successful in 15s
CI Pipeline / unit-tests (push) Successful in 1m0s
CI Pipeline / best-practices (pull_request) Successful in 4s
CI Pipeline / documentation (pull_request) Successful in 4s
CI Pipeline / lint (pull_request) Successful in 37s
CI Pipeline / canary (pull_request) Successful in 38s
CI Pipeline / gitea-offline (pull_request) Successful in 16s
CI Pipeline / required-checks (push) Successful in 1s
Spec gate (headless) / spec-gate (pull_request) Successful in 6s
CI Pipeline / unit-tests (pull_request) Successful in 55s
CI Pipeline / type-check (pull_request) Successful in 31s
CI Pipeline / required-checks (pull_request) Successful in 1s
Auto-version and Release / release (pull_request) Successful in 37s
70416fc1c1

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor merged commit 9cc5ce9ee7 into master 2026-09-10 01:50:10 +01:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: conductor/rune#320