Skip to content

feat(planning): open each interview round with a pinned restate card #9716

Description

@kyle-sexton

Parent

Refs #5796

Depends on

  • none: on the frontier now

Outcome

Every round on the page opens with the terminal interview's restate (gap G7): what is decided, which branches
are open, and what this round turns on.

  • add-round takes a restate field: markdown of at most 3 sentences plus decided and open id lists,
    stored per round, and refuses a round without it, as rule R1 refuses one without commits.
  • The page renders it as a pinned card above the round's first question and posts an Activity "Needs you"
    entry.

Decisions

  • The issue's G7 fix: refuse a round without a restate, matching R1 for commits.

Key interfaces

  • Interview page: plugins/planning/surface/index.html; page server: plugins/planning/surface/server.py
    (record(), derive_states); round CLI: plugins/planning/surface/round.py behind round.sh;
    exporters: plugins/planning/surface/exporters.py.
  • The interview skill's surface contract, plugins/planning/skills/interview/context/surface.md, documents
    every new op, field, setting and refusal.

Done when

  • Round tests: add-round without restate exits non-zero naming the field; with more than 3 sentences it exits non-zero; with a valid restate it stores restate, decided and open on the round.
  • A page test shows the restate card above the round's first question.
  • grep -n "restate" plugins/planning/skills/interview/context/surface.md prints the add-round field row.
  • scripts/run-test-file.sh plugins/planning/surface/test_server.py exits 0.
  • scripts/run-test-file.sh plugins/planning/surface/test_round.py exits 0.
  • bash plugins/planning/surface/surface.test.sh exits 0, so a data dir without the new fields still loads, renders and exports.
  • scripts/check-changelog-fragments.sh --check-required origin/main exits 0.

Out of scope

  • The confirmation-gate restatement (restate op), which is unchanged.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions