Skip to content

Engineering lifecycle follow-ups from the #447 review #448

Description

@TheAmericanMaker

Non-blocking findings from the Fable re-review of #447 (attempt lifecycle on the MCP surface). None of them weakens a gate; each one is either a disclosure gap or a loop that can't make progress.

  1. request_acceptance asks again after a replayed receipt.
    • An agent with write access to approvals/ copies a genuine approval under a new id. Both copies then read receipt-replayed, and traverse stops for an operator (correct).
    • request_acceptance instead discloses the pair and asks the person again. An accept mints a second genuine approval for the same candidate.
    • Fix: when a non-genuine approval's receipt names a request that exists in storage (replayed or expired), stop the way traverse does rather than asking again.
    • The docs no longer claim uniqueness (attempt-lifecycle.md, feat: attempt lifecycle on the MCP surface (start_attempt, capture_candidate, record_review) #447).
  2. Gate limitations don't reach the person. buildAcceptanceRequest builds the presentation from standardLimitations, the re-read, and ignored approvals. It never includes gate.limitations. For example, 'the change has no stored brief.md' reaches gate callers but never the human deciding. Fix: merge gate.limitations into the presentation.
  3. A planned change with no slices is stuck.
    • A crash between plan's change CAS and its slice writes leaves a change planned with zero slices.
    • Traverse then advises plan-slices, which plan refuses ('slices are planned once, from draft'). No action recovers it.
    • Fix: allow plan on a planned change that has zero slices, or have traverse emit blocked-needs-operator.

Refs #409, #447.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions