Skip to content

feat(planning): show ledger and page drift during the interview, not at wrap-up #9719

Description

@kyle-sexton

Parent

Refs #5796

Depends on

  • none: on the frontier now

Outcome

Drift between the interview ledger and the page shows while the interview runs (gap G9):

  • wake.sh runs export-ledger --diff after apply; a nonzero diff posts an Activity Log line.
  • The header shows "Ledger: N rows out of sync" or "Ledger in sync, rev N".
  • An accepted row with unticked commitments reads "Accepted, 2 to confirm" on the rail and in the meter,
    instead of plain "Accepted".

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.
  • plugins/planning/surface/wake.sh.

Done when

  • A test runs wake.sh against a fixture whose ledger disagrees on one row and finds the Activity Log line naming it.
  • A page test shows the out-of-sync header for that fixture and "Ledger in sync" for a matching one.
  • A page test shows "Accepted, 2 to confirm" for an accepted row with two unticked commitments.
  • 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.

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    admission-deferredReady for the issue lane; work-unblock admits it when queued work is under the queued cap
    on Oct 24, 2026
  2. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    admission-deferredReady for the issue lane; work-unblock admits it when queued work is under the queued cap
    on Oct 24, 2026
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

    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