Skip to content

bug(review): last-event correction dead-ends after an in-budget edit #3805

Description

@tusitiomx

Pre-flight Checklist

📝 Bug Description

On current upstream-main build f654764e231f, a compact-v2 last-event review accepts a positive bounded correction forecast, receives one in-budget correction inside the frozen path scope, and then exposes no executable validation or completion transition.

Negotiated v2 STATUS returns authority.state=correction_required, action=stop, replayability=manual_action_required, and next_transition=stop/manual_intervention_required. Eligibility allows only stop; review.start, review.recover, review.repair, and review.validate are forbidden. review repair --preflight reports unsupported, eligible_candidates: 0, while listing only internal review/complete-fix and review/validate-fix operations that STATUS does not expose.

Issue #2093 was closed as obsolete with a maintainer request to file a fresh report if the same class reproduced in the current last-event flow. This is that current-main reproduction, after the edit rather than before it.

🔄 Steps to Reproduce

  1. Start a negotiated workspace review on current main with RDD enabled. The observed candidate was high risk: 32 paths, 1,466 changed lines, four canonical lenses, correction budget 200.
  2. Capture all four bound reviewer artifacts. The final capture enters correction_required with four candidate-caused CRITICAL findings.
  3. Run negotiated STATUS and receive collect/correction_plan_required.
  4. Submit one positive forecast with review capture-correction-plan --correction-lines=95; authority advances while remaining correction_required.
  5. Apply one correction inside the original frozen path set. The observed correction changed 83 lines total: 72 additions and 11 deletions across three already-frozen paths. No commit, staging, push, or production-data mutation occurs.
  6. Run negotiated STATUS again with the exact lineage, workspace projection, intended-untracked inventory, and original selected path set.
  7. Observe stop/manual_intervention_required with no completion or targeted-validation transition.

✅ Expected Behavior

After an accepted correction forecast and one in-budget corrected candidate inside the frozen path scope, STATUS should expose exactly one revision-bound continuation for the current last-event model: either correction completion or targeted validation. The continuation must preserve the one-correction budget and must not require disabling RDD, resetting authority, or fabricating a receipt.

❌ Actual Behavior

The corrected candidate is detected and has a new target identity, but authority remains non-terminal in correction_required. STATUS permits only stop and offers no sanctioned route to review/complete-fix or review/validate-fix. A fresh review cannot start while this lineage owns the repository review lifecycle.

Gentle AI Version

2.5.0-rc.1.0.20260827174839-f654764e231f

Operating System

Linux (Other)

AI Agent / Client

OpenCode

📋 Affected Area

CLI (commands, flags)

💡 Logs / Error Output

authority.state: correction_required
authority.revision: sha256:ae22c011a9b78a4a069c894794e4b4ca515f153ca139c83752207e30397823eb
action: stop
replayability: manual_action_required
initial target: sha256:bf6514e6921ad658567a03688a5b335bf2de8724fa7a242153f6ecd8f1bbe316
corrected target: sha256:25e98754fe95e2f729cc99aacd74efa57d9cd554bfc62b13b900f8dbd1f70f6d
initial tree: a446c102ffa3325d8978ebee9d01e0c71f14af19
corrected tree: fde4c15b2b38bc82bb4a4ed7e8dc75028d7b74cd
paths digest: sha256:92c36a318a723027af80bff10b4916eeb76fd4e666c04fb9c93b0051341f8e0d
next_transition.kind: stop
next_transition.reason_code: manual_intervention_required
allowed action: stop / forbidden_manual_intervention_required
repair.status: unsupported
repair.eligible_candidates: 0
repair.supported_operations: review/complete-fix, review/validate-fix

Additional Context

  • RDD effective mode is on, decided globally.
  • Upstream main is currently one commit ahead (cc4ed695ffe0), but that commit changes only SDD selected-untracked rescope continuation and does not touch review lifecycle behavior.
  • A temporary new test path was created during correction and removed after STATUS safely reported scope change; no recovery mutation was executed. The final reproduction above uses the restored original 32-path manifest and original paths digest. Authority revision remained unchanged through that remediation.
  • The final corrected candidate remains uncommitted. No approval receipt is claimed or fabricated.
  • This is distinct from review: upgraded v2.4.0-era lineages carrying effect intents can permanently block cross-worktree continuation #3741: there are no linked-worktree repository-context effects or blocked markers here; inspect-authority reports a valid complete store with one loaded compact entry and zero diagnostics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions