Skip to content

v2.67.0: the dashboard shows open plans, what waits on you, and a compact header

Choose a tag to compare

@nmelecti nmelecti released this 09 Oct 18:00
· 79 commits to main since this release

The plan dashboard now shows which plans are still open, what the protocol is waiting on you for, and a compact sticky header once you scroll past the hero. Follow-up to 2.66.0. Still a viewer: no agent reads it, SKILL.md does not mention it, pages load nothing from the network, and plans/.current_plan is still the live plan.

Changed

  • Open plans. A chip strip names every unclosed plan, one chip each (phase on the chip, ptr on the one .current_plan names). Closed plans stay off it, and a pointer that names no open plan does not make the bar appear. The chips sit on one row that scrolls sideways when they overflow, with a thin scrollbar, so the bar keeps one fixed height and the header, tabs and contents list below it can offset by exactly that height.
  • Waiting on you. Only PLAN, EXECUTE and REFLECT can wait. PLAN asks you to approve. In EXECUTE and REFLECT you owe the first unfinished steps, as long as each is owner-run; the first agent step ends that run. A step is owner-run when it is marked irreversible or its title has the whole word "owner" (or IRREVERSIBLE). REFLECT asks Confirm Close when no unfinished step is owner-run and the newest review does not need work, whether or not agent steps remain. When the newest review needs work, Confirm Close is not offered. If no step is left for anyone, REFLECT waits on you to decide: fix it, or confirm close anyway. That shows as "Decide: the review needs work" and is the headline, unless you owe an approval or a step first. If an agent step is still pending, it stays the agents' turn: "Review needs work" is listed under Agents in REFLECT and EXECUTE and is the REFLECT headline. A bad hygiene pass or a failed check does not change Confirm Close. While EXECUTE still has agent work, later owner-run lines under Remaining are not listed. One rule serves the attention list, the headline and the step tags.
  • Review + hygiene. findings/review-* and hygiene-* are paired per pass with their Verdict. Checks that are still all PENDING in REFLECT or CLOSE are labelled as the PLAN template, not as failed work.
  • Licence. The project is licensed under the Apache License 2.0. It was relicensed from GPL-3.0 in commit 4520bd0, so this is the first release to carry the new licence; the README shows the Apache badge.
  • Compact header. Scrolling past the hero hides the top bar and pins a short dock (phase, steps, elapsed). Headings use the same system font stack as the rest of the page.

Added

  • Other open plans. On the live plan's page, a box lists the other open plans that are waiting on you, including a REFLECT plan that is waiting on you to decide about a review that needs work.
  • Latest review row. The summary shows the newest review or hygiene file with its verdict.
  • Step tag. Any unfinished step you owe now, irreversible or owner-run by its title, reads "waiting on you". An irreversible step that is not owed yet keeps "irreversible".
  • Plan label cleanup. A leading "Plan vN:" is stripped from plan labels, so chips and headings show the goal.
  • Checks state. When every check is still PENDING, the Checks heading says so by phase: in PLAN it reads "PLAN template", in REFLECT and CLOSE it gives the pending count and says they are still the PLAN template, and in any other phase it gives the pending count only. In REFLECT the waiting list also notes it. Mixed results read "X of N pass" with fail and pending counts after it.

Fixed

Review of the pull request found these before release. They are fixed here, in the entry that adds the feature.

  • One rule for "waiting on you". The attention list, the headline and the step tags each had their own version of the rule and could disagree about whether a step was owed to you. They now share one function.
  • Only the newest review pass and the newest hygiene pass count. A review that said NEEDS_WORK followed by a pass that said READY_TO_CLOSE kept raising "Review needs work", and the same held for hygiene. Passes with equal modification times are now ordered by file name, so the result no longer depends on directory listing order.
  • The whole verdict vocabulary is read. NEEDS_INVESTIGATION and SCAN_UNTRUSTWORTHY were shown as neutral; they now count as needing work. "Not ready to close" and "Not READY_TO_CLOSE" no longer read as ready, the unfilled template line (READY_TO_CLOSE / NEEDS_WORK) is neutral, and a verdict word on a later line of the Verdict section is found. Hyphen forms (NEEDS-WORK, READY-TO-CLOSE) read like the underscore forms. Plain words (Pass, OK, Clean, Ready) count as the verdict only when they start the line and the line ends there or a colon, bracket or spaced dash follows, so "Pass 2: NEEDS_WORK" and "Clean-up still needed" are prose. READY_TO_CLOSE counts only at the start of a line, unless a question mark follows it. Inside a sentence a word that is not a pass (NEEDS_WORK and the like) is found, but a pass word never is, so "Would be READY_TO_CLOSE except for the critical concern" reads as needing work. A verdict written on the heading line itself (## Verdict: NEEDS_WORK) is read, and a real verdict line that quotes a pair joined by a slash is no longer mistaken for the template. Fenced blocks (``` or ~~~) are removed from anywhere in the file before the Verdict heading is searched, so a quoted template or example above the real heading cannot take over.
  • A review that needs work is always listed. The attention list showed "Review needs work" only when the next step was agent work, and Confirm Close could still be offered over a bad review once no steps were left. It now shows whenever the newest review needs work, in REFLECT and EXECUTE, whatever kind of step is next. Confirm Close is not offered over a bad review; when nothing else is left you are asked to decide instead (fix it, or confirm close anyway).
  • The step tag follows the same rule. The tag used to read "waiting on you" only for irreversible steps, though the shared rule also owes you steps whose title names the owner. It now reads "waiting on you" for every step the rule owes you.
  • The open bar and the sticky offsets agree. The bar no longer renders for a pointer alone when no plan is open, and the page class that makes room for it is set from the same test as the bar itself. Wrapped chips used to grow the bar past the height the header, tabs and contents list assumed, sliding them under it.
  • The "(none" filter is anchored. A Progress item such as "Handle (none) values in the parser" was dropped because "(none" appeared anywhere in the line. Only a placeholder item that starts with "(none" is skipped now.

Notes

  • Test count: 1070 (was 1031; net +39, all in dashboard.test.mjs, which went from 45 to 84; live run).
  • Sticky and scrollbar behaviour was checked by reading the stylesheet and by string assertions on it, not in a browser. The scroll-spy margin in the contents list is still a fixed offset and was not changed.
  • Known and left as they are: Confirm Close is still offered in a REFLECT that has no verification yet; an abandoned plan that was never closed counts as open; open-plan chips for plans without a phase code keep a tie order that depends on file times; the scroll-spy margin; and a plan.md saved with CRLF line endings parses to no steps.
  • Cost: no walk over plans/ was added; the open strip and the waiting rule use the plan models the dashboard already reads.