Skip to content

bug(review): status offers review.start while effective global mode rejects it as disabled #2174

Description

@Victor0451

Pre-flight Checklist

  • I searched open and closed issues for 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.
  • I understand that PRs require status:approved before 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 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

  1. Use a Git repository with a non-empty workspace candidate and no active review lineage for that target.
  2. Run the read-only review mode status operation.
  3. Observe that effective receipt-driven development is reported as on, decided by default, with global and clone-local unset.
  4. Request negotiated review status using contract gentle-ai.review-integration/v2 and next-transition.
  5. Observe next_transition.kind: execute, operation: review.start, reason_code: fresh_target_ready.
  6. Execute the exact returned operation and ordered arguments once.
  7. 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

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