Skip to content

Plans screen does not conform to v1 suggestion-card contract (sibling Apply, per-card Dismiss) #159

Description

@mchwang

Problem

The released v1 semantic contract (schema/versions/1/semantics.md, immutable after release) defines suggestion cards as follows:

  • line 164: each suggested edit "becomes a card with Apply and Dismiss";
  • line 178 ("One card per revision"): after one card is applied, the remaining cards "show 'Plan changed — refresh suggestions' with Apply disabled and a Refresh suggestions action", and the tests should cover "disabled sibling Apply".

The shipped Plans screen (G2/G3, PRs #150 and #151) differs:

  • After one card is applied, sibling cards have no Apply control. planApplyButton in web/public/app.js hides it for a stale result. test/browser/plans-authoring.spec.ts ("replays an ambiguous suggestion Apply, stales siblings…") asserts Apply this edit has count 0, not that it is disabled.
  • There is no per-card Dismiss. One Dismiss suggestions control cancels the whole response through the request's cancel endpoint.

docs/plan-format.md says the guide "cannot override a released snapshot", and that "Bug fixes may restore conformance to a frozen contract, but may not silently redefine it."

Found by Copilot review on PR #154 (Lane G close-out, #145).

Acceptance

Choose one:

  • Restore conformance: sibling cards keep a visible, disabled Apply control after one card is applied, and each card has its own Dismiss that does not mutate the plan or revision. Update the browser regression so it fails under today's behaviour (disabled Apply present, not absent).
  • Version the change: if the shipped behaviour is preferred, introduce it under a new semantic version as docs/plan-format.md requires, rather than editing the v1 snapshot.

Then remove the non-conformance notes that cite #159: in docs/plan-format.md ("What the shipped Plans screen does today"), docs/implementation/planning-screen.md (G3 paragraph and Handoff), and docs/designs/codeboost-plan-indexed-review.md (the summary's "Where the build is", build step 6, and "What to do next").

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions