Pre-flight Checklist
Bug Description
On Gentle AI 2.2.4, the read-only review mode status and the negotiated review lifecycle disagree about the effective mode for the same repository and unchanged candidate.
review mode status reports receipt-driven development as on, decided by default, with both global and clone-local sources unset. Negotiated review status --next-transition then returns an executable review.start transition for the current workspace target. Executing that exact provider-returned transition immediately fails with typed code rdd_disabled, claiming the global mode source keeps review off.
This leaves the consumer unable to follow the authoritative next_transition, while the read-only mode surface provides no indication that review is disabled.
Observed evidence only, no root cause is asserted.
Steps to Reproduce
- Use a Git repository with a non-empty workspace candidate and no active review lineage for that target.
- Run the read-only review mode status operation.
- Observe that effective receipt-driven development is reported as on, decided by default, with global and clone-local unset.
- Request negotiated review status using contract
gentle-ai.review-integration/v2 and next-transition.
- Observe
next_transition.kind: execute, operation: review.start, reason_code: fresh_target_ready.
- Execute the exact returned operation and ordered arguments once.
- Observe typed failure
rdd_disabled before native mutation.
Expected Behavior
The mode status, negotiated lifecycle status, and review.start preflight should resolve the same effective mode.
If review is disabled, the read-only surfaces should report that disposition and negotiated status should stop instead of offering an impossible start. If review is enabled by default, the exact returned start transition should not be rejected as globally disabled.
Actual Behavior
Mode status:
receipt-driven development: on (decided by default)
global: unset
clone-local: unset
Negotiated status:
{
"next_transition": {
"kind": "execute",
"reason_code": "fresh_target_ready",
"execute": { "operation": "review.start" }
},
"target_identity": "sha256:5c42dda82cb9a0ff86e278e934c2395eb3d7d09ac50c346753c4fd36784073c5"
}
Exact returned start operation:
{
"schema": "gentle-ai.review-integration.failure/v2",
"operation": "review.start",
"phase": "pre_native",
"code": "rdd_disabled",
"mutation_outcome": "not_started",
"authority_applicability": "not_evaluated",
"retry_safe": false,
"next_action": "stop",
"cause": "receipt-driven development is disabled: start is rejected because the global mode source keeps it off"
}
Bounded attempts: one mode-status read, one negotiated-status read, one exact start attempt. No retries or alternate mutations were attempted.
Gentle AI Version
gentle-ai 2.2.4
Operating System
Linux x86_64
AI Agent / Client
OpenCode
Affected Area
CLI (review mode and negotiated review lifecycle)
Additional Context
Pre-flight Checklist
rdd_disabled, default review mode, disabled start, and inconsistent status/start behavior. I found related disabled-mode issues, but no duplicate of this status/start contradiction.status:approvedbefore implementation.Bug Description
On Gentle AI 2.2.4, the read-only review mode status and the negotiated review lifecycle disagree about the effective mode for the same repository and unchanged candidate.
review mode statusreports receipt-driven development as on, decided by default, with both global and clone-local sources unset. Negotiatedreview status --next-transitionthen returns an executablereview.starttransition for the current workspace target. Executing that exact provider-returned transition immediately fails with typed coderdd_disabled, claiming the global mode source keeps review off.This leaves the consumer unable to follow the authoritative
next_transition, while the read-only mode surface provides no indication that review is disabled.Observed evidence only, no root cause is asserted.
Steps to Reproduce
gentle-ai.review-integration/v2andnext-transition.next_transition.kind: execute,operation: review.start,reason_code: fresh_target_ready.rdd_disabledbefore native mutation.Expected Behavior
The mode status, negotiated lifecycle status, and
review.startpreflight should resolve the same effective mode.If review is disabled, the read-only surfaces should report that disposition and negotiated status should stop instead of offering an impossible start. If review is enabled by default, the exact returned start transition should not be rejected as globally disabled.
Actual Behavior
Mode status:
Negotiated status:
{ "next_transition": { "kind": "execute", "reason_code": "fresh_target_ready", "execute": { "operation": "review.start" } }, "target_identity": "sha256:5c42dda82cb9a0ff86e278e934c2395eb3d7d09ac50c346753c4fd36784073c5" }Exact returned start operation:
{ "schema": "gentle-ai.review-integration.failure/v2", "operation": "review.start", "phase": "pre_native", "code": "rdd_disabled", "mutation_outcome": "not_started", "authority_applicability": "not_evaluated", "retry_safe": false, "next_action": "stop", "cause": "receipt-driven development is disabled: start is rejected because the global mode source keeps it off" }Bounded attempts: one mode-status read, one negotiated-status read, one exact start attempt. No retries or alternate mutations were attempted.
Gentle AI Version
gentle-ai 2.2.4Operating System
Linux x86_64
AI Agent / Client
OpenCode
Affected Area
CLI (review mode and negotiated review lifecycle)
Additional Context
mutation_outcome: not_started; no review lineage, receipt, or authority mutation was created.