Repository navigation
PLAN: qe workplan family — the tracker contract, the dashboard hooks, and first validated runs #63
Description
The workplan-* family shipped across qe 0.3.0–0.5.0 and has been tracked inside #3 — "PLAN: qe style skills" — ever since. That was a shortcut while the family was two days old, and it has stopped being harmless: #3 is a registered tracker on the projects dashboard under the slug qe-style-skills, so the family's work is filed under a public name that describes a different skill family. This tracker takes that half over, and #3 goes back to being about the style skills alone.
It also carries work that arrived from outside the repo. On 2026-08-24 the dashboard's collector began parsing every registered project tracker nightly and publishing a per-tracker compliance block, which made this family a producer for a machine consumer. The contract is C2, written upstream and pointed at rather than restated here. #49 was the ask; #62 landed the first third of it and #49 is closed as split into #66 and #67. A second document now rules the structure of what the skills write: QEP-6 (draft), whose field test (qeps#19) read workplan-project against it and filed six findings here; those became phase 1 work on 2026-09-02 and are done.
Where we stand (verified 2026-09-21 16:10 AEST)
Next: #81 — merge qe 0.11.0 and tag qe--v0.11.0; then #64 (a stamp on #3, sub-issues on #3 and #12) and #82 (the snapshot diff read now promises).
In flight. qe 0.11.0 on #81 (draft): REST snapshot, report-only lint, computed digest, read --digest, state-not-story on update and resume, .qe/project.yml discovery, .qe/ROADMAP.md. First live application, 2026-09-21: QuantEcon/project-theme-parity#2 and its .qe/ (QuantEcon/project-theme-parity#33). Upstream: QEP-7 (QuantEcon/qeps#40) states the records these skills write; the pilot's .qe/dev/ move is QuantEcon/action-translation#314.
Blocked. Milestones at filing wait on the naming ruling, which a native edge carries; the distillation-pass decision awaits its owner.
Needs a person. Merge and tag #81; rule #55 and #84; a run of each unrun verb from an installed plugin (#65).
| Fact | Measured 2026-09-21 |
|---|---|
| Plugin version | 0.10.0 on main (qe--v0.10.0); 0.11.0 on #81 |
| Validated runs | update and resume only; the three scripts ran live on 2026-09-21 from a token session |
| #3 and #12 | both typed since 2026-09-06; #3 unstamped, no sub-issues; #12 stamped 2026-09-14, 0 of 5 |
| This tracker | 6 of 15 completed; #82, #83, #84 added 2026-09-21 |
Trackers org-wide typed Project |
43 of 48 (2026-09-21 collection; 10 of 34 on 2026-09-02) |
The gaps
| # | Gap | Severity | Where |
|---|---|---|---|
| 1 | This repo's two registered trackers are typed since 2026-09-06, but #3 is unstamped with no sub-issues and #12 has no sub-issue progress (0 of 5), so the dashboard publishes null for one and 0% for the other |
High — the dashboard is live and public, and these are ours | #3, #12, #64 |
| 2 | A conformant tracker is still invisible until a row lands in projects.yml; the skills say so but cannot do it. This tracker's own registration was done by hand in status-projects#15 — that is the gap demonstrated, not closed |
Medium | #66 |
| 3 | C2 §5 names qe:tracker-conform as the fix half of its compliance block. The check half ships nightly; the fix half does not exist |
Medium — the contract cites a skill this repo has not written | #67 |
| 4 | Milestone naming for phased plans is unruled, and workplan-project files phases with no milestone at all. QEP-6 §3 bans sequence tokens in milestone names, which bears on the wp{issue#}-stage{n} proposal |
Low | #55 |
| 5 | Three of five workplan verbs, all of workplan-project, and all of workplan-roadmap have never run as installed skills — the filing step of workplan-project has one hand-run of evidence, and the 0.11.0 scripts one live run from a session with a token, which is not the same thing |
Medium — these are procedures, and an unrun procedure is a hypothesis | #65 |
| 6 | /qe:workplan had no body spec for the long-lived tracker genre and no home for the resume pointer — addressed on #81: the stamp section's fixed shape (one Next: line, in flight, blocked, needs a person), state-not-story on update and resume, the lint; #68 closes when #81 merges |
Low | #68, #81 |
Plan
Work items and their order are the sub-issue list: topmost open item is next, completed items keep their place, phase groups contiguous. Phases carry no milestone until #55 rules the naming; the table below says what each phase is for and when it is finished, never which items it holds.
| Phase | Intent | Exit criterion |
|---|---|---|
| Phase 1 — Field work | Bring what already exists up to the two documents that now read it: conform this repo's own registered trackers by hand, fix what the QEP-6 field test found in workplan-project, and run every unrun skill once from an installed plugin |
#3 and #12 pass all three C2 checks; workplan-project is QEP-6-conformant (done, 0.10.0); each skill and verb has a validated run recorded in reviews/ or on its issue |
| Phase 2 — New capability | Close the two halves of the compliance loop the contract assumes exist, and rule the milestone convention | A registration PR can be opened from the skill; tracker-conform exists and has run against #3 or #12; the milestone convention is ruled and wired in |
Gates: phase 2's tracker-conform (#67) waits on phase 1's hand conformance of #3 and #12 (#64), because whatever proves fiddly by hand is what the skill has to handle, and a skill designed before that pass is designed against a guess; milestones at filing (#83) wait on the naming ruling, carried as a native edge. Nothing else in phase 2 waits on phase 1.
Sequencing rationale: phase 1 needs nothing built and front-loads the evidence. Within phase 2, the registry hook (#66) is worth landing before tracker-conform: a conform pass that fixes a tracker nobody registered has fixed something invisible. #49 asked for three things and is split across the two phases: its item 2 (one stamp form) landed in #62, and its items 1 and 3 are #66 and #67. It is closed as split rather than carried, so no sub-issue here is two-thirds done.
What does not need to change
The C2 rules themselves — they are authored upstream and this repo links to them, which is the arrangement both sides intend. Where C2 and QEP-6 disagree — a body roster of work items is C2-conformant and QEP-6-forbidden — the skills say so and cite QEP-6's Adoption clause 3, which rules QEP-6 authoritative for structure until C2's handover; the disagreement is not resolved in this repo. C2's stale skill names are status-projects#20, and the dashboard's re-sort of children by issue number, which hides plan order from the public site, is status-projects#19; both are upstream. What the skills should eventually cite is the one-page public QEP that status-projects design.md R6 plans, which sits above C2 rather than being carved out of it; QEP-6 is the structure half of that, not the whole. Two related questions were raised and closed on 2026-08-26, recorded in full on #67: the skills stay in qe rather than moving to status-projects (a skill's home follows its subject; a contract's home follows its enforcement), and no QuantEcon/specs or QuantEcon/interfaces repo is created — qeps already is that repo, public and with a lifecycle. The workplan/workplan-project split settled in 0.5.0 and is not reopened here. The period-plan genre stays untyped and unregistered: a session's working document is not a project, and that boundary is what stops every weekly plan landing on the dashboard.
Sources
The contract and its compliance block: C2, written 2026-08-24 against the structural audit of 2026-08-23. The structure standard: QEP-6 (draft), and its field test qeps#19, whose finding 9 produced #69–#74; the records and their homes: QEP-7 (draft), from the 2026-09-21 tracker-readability review filed in the projects vault, which produced #81 to #84. The dashboard side of this work is Block D of QuantEcon/status-projects#1. The convention this family operates is headed for a QEP, discussed at QuantEcon/qeps#15, and the issue-type question it answers is the field report at QuantEcon/qeps#11. Release history is in qe/CHANGELOG.md.
Generated by Claude Code
Activity
mmcky commentedon Aug 26, 2026
Revision 2026-08-26 13:19 AEST — the plan's first
update, six hours after it was created. Recorded because a same-day revision still has to be readable by a session that was not here.What landed. #62 merged at 03:17Z as
daa27f2—qe0.8.0, the docs site deployed green on that SHA. The stamp heading and theProjectissue type are now what the skills write, so gap 2 of #49's three asks is closed at the source rather than by hand. status-projects#15 merged at 02:38Z, registering this tracker as slugworkplan-skills;collector/validate.pypassed at 8 programmes and 29 projects. #49 is closed as split, into #66 (registry hook) and #67 (tracker-conform). Three merged branches were pruned from the remote, leavingmainalone.What was decided, with the full argument on #67 rather than repeated here: the skills stay in
qerather than moving tostatus-projects, on the rule that a skill's home follows its subject while a contract's home follows its enforcement; noQuantEcon/specsorQuantEcon/interfacesrepository is created, becauseqepsalready is that repository;status-projectsstays private for now, its two go-public blockers being historical rather than working-tree; and C2 is not published, because the one-page interface QEP thatstatus-projectsdesign.md R6 plans supersedes the need and a Pages URL would be unversioned anyway. The QEP sits above C2 and cites it — nothing is carved out of C2.What this revision found. Two things, neither a defect in the plan:
The 0.8.0 release was untagged —
qe--v0.7.0was still the newest tag, though tagging is the documented last step of a release (developing-skills § Tags). Fixed in this session:qe--v0.8.0is pushed and points atdaa27f2. Nothing installs from a tag, so no user was affected; it is the bookmark that makes a version's tree findable later, which matters here because the skills' text changed materially in 0.8.0.The installed plugin is
qe0.7.0, so thisupdaterun loaded the pre-0.8.0 procedure — the one whose convention section still says plan issues stay untyped and which has no tracker-contract section. The 0.8.0 text onmainwas followed instead. This is the same stale-procedure hazard #25 recorded before audit run 2, hitting a second time in a different family, and the fix is the same:claude plugin update qe@quanteconplus a session restart before running a skill whose procedure changed this session. Worth knowing that neither the version bump nor CI can catch it — the cache is per-version and a running session holds whatever it loaded at startup.Resume pointer: #64. It leads not because it is largest but because it is the sequencing constraint: conforming #3 and #12 by hand is what specifies #67, and #67 designed before that pass is designed against a guess. #65, #66 and #55 are unblocked and can be taken in any order. The release is complete — merged, tagged, deployed — so nothing on this plan is overdue.
quantecon-services commentedon Aug 27, 2026
Six findings on
workplan-project, filed unparented — proposing them for phase 1From the QEP-6 field test (QuantEcon/qeps#19), which built two conformant trackers by hand and hit these on the way. They bear directly on gap 5 and on the "C2 conformance of what the skills write" row of your stamp table.
Phase | Issue | Work itemtable is the body mirror QEP-6 §6 forbidsstamp-unreadableunder C2 §3.4I have not linked any of them. Adding six children would take this tracker from 5 to 11 and move its published percentage without any work having happened — which is itself one of the field test's findings, so it seemed a poor way to deliver it. The membership call is yours.
If you do take them, the argument for phase 1 is the one already in your body: "Phase 1 is field work on skills that already exist and needs nothing built." All six are edits to one
SKILL.md. And #65 is the reason they are urgent rather than tidy — a first validated run ofworkplan-projectin its current shape produces a tracker that violates QEP-6 in two ways and writes it into someone else's repository. Fixing #69 and #70 before that run is cheaper than conforming the output afterwards, and #65's value as evidence depends on the thing being run.Ordering suggestion, if useful: #69 → #70 → #72 → #71 → #73 → #74. #69 first because it is a net deletion that removes step 5.3 and the second body write, which simplifies #70's territory before #70 touches it; #72 before #71 because it is a safety guard on a path that already exists.
Three notes, in fairness to the current text
#69's construct is C2-conformant. C2 rules only that checkbox progress is never read; it does not forbid a body roster. The skill followed the document it cites. The gap is between C2 and QEP-6, and it is new — which is also why the same table appears in this tracker's own body, and why that is not a criticism.
#70 cannot be verified through the dashboard yet. The collector re-sorts published children ascending by issue number, so a tracker in plan order and one in arbitrary order publish identically. Raised upstream as QuantEcon/status-projects#19 — it is QEP-6 Adoption clause 4, a one-row contract change plus a sort removal.
Two of your citations have drifted, raised as QuantEcon/status-projects#20: C2 still names
qe:workplan-update, consolidated into/qe:workplan updateat 0.5.0, and still describesqe:tracker-conformin the present tense — which is your #67, and which means the compliance block currently has a check half shipping nightly and no fix half at all.One thing I did not file
The
wp{issue#}-stage{n}convention in #55 is worth a look against QEP-6 §2 before it is ruled: sequence tokens in milestone names are exactly what that section bans, on the grounds that a token welds order to identity, so every re-plan either renames the work or lets the names lie. There is also a purely mechanical reason to avoid numeric milestone names —gh issue list --milestonerunsstrconv.ParseInton its argument first, so a milestone titled"2026"is looked up as milestone number 2026 and fails. Left for #55 rather than filed separately, since that issue is where the decision belongs.Generated by Claude Code
mmcky commentedon Sep 2, 2026
Revision 2026-09-02 — qe 0.9.0: the family's third skill,
/qe:workplan-roadmapWhat landed since the 2026-08-26 stamp. #75 merged as
393d98fand is taggedqe--v0.9.0; the docs site deployed green on that SHA. It adds/qe:workplan-roadmap, which draws a project tracker as two GitHub-rendered mermaid flowcharts (the route — phases, decision gates, pathways — and every sub-issue with its dependencies) plus a gates table and node index, and keeps the drawing in step with the tracker after a plan review. It reads trackers and writes only a repository file; it never edits an issue, so it adds nothing to what the family writes under C2. The procedure was extracted from a hand run: the Lectures monorepo roadmap drawn from project-monorepo#7 and merged as project-monorepo#30 the same day. Copilot's two review comments on #75 (a marker-matching mismatch in the snapshot script, a punctuation slip) were fixed before merge.What was re-measured. Every row of the table above, on 2026-09-02. #3 and #12 are unchanged — still untyped, unstamped, no native sub-issues — so gap 1 and the front of the plan (#64) stand. The org-wide count of registered trackers carrying the
Projecttype moved from 2 of 28 to 10 of 34 between the 2026-08-24 audit and the dashboard's 2026-09-02 collection. No premise inverted.What changed in the plan. Gap 5 and #65 now include
workplan-roadmapamong the skills with no run as an installed plugin; its natural first case is the monorepo tracker once its plan moves, which project-monorepo#29 (a review pass over that repo's plan documents) is about to cause. Nothing was re-ordered.Surfaced, not decided. Six
workplan-projectfindings (#69–#74) were filed unparented on 2026-08-27 and proposed for phase 1 in the comment above; they are still unparented. Whether they join this tracker is the maintainer's call, and the body now says so rather than leaving the proposal to be rediscovered.Resume pointer. Front of the plan is still #64. The first
workplan-roadmaprun, when it comes, belongs on #65 as evidence.qe 0.10.0: workplan-project conforms to QEP-6 — the six field-test fi…
mmcky commentedon Sep 2, 2026
Revision 2026-09-02 13:08 AEST — the six
workplan-projectfindings adopted, fixed and linkedThe second revision today, two hours after the 0.9.0 one. Recorded separately because it moves the plan rather than the version.
What was decided. #69–#74 join this tracker as phase 1 work, in the proposer's order #69 → #70 → #72 → #71 → #73 → #74. Each was re-verified against
mainat393d98fbefore editing; five held as filed and one had drifted — QuantEcon.py#925's stamp heading was fixed upstream on 2026-08-31, so #73 reduced to its second option (cite the exemplar for content, Appendix A for shape), which #69 requires anyway. The ordering held after re-verification, with one link tightened: #72 has to follow #70 directly, because moving to--add-sub-issuemakes the stealing behaviour the default.What landed. #76 merged at
7ebf8a5as qe 0.10.0, one commit per finding plus a housekeeping commit (the banner pointed at #3, the intro linked the retiredauditdirectory) and the bump; Copilot's two review comments (an incomplete mutating-calls table, inconsistent<parent>placeholders) were fixed before merge. Tagqe--v0.10.0is pushed at7ebf8a5; validate and docs are green on it. The skill now cites QEP-6 §1, §3, §7 and Appendix A rather than restating them, and names the one place C2 and QEP-6 disagree with QEP-6's Adoption clause 3 as the ruling.What this session did to the tracker itself. The six closed issues were linked as children in plan order after #65, using the guarded path the new skill text documents: parent read on each immediately before linking (all empty),
--add-sub-issuein order, sixPATCH …/sub_issues/prioritycalls withafter_idto move them up from the appended position, REST and GraphQL read-backs agreeing on#64, #65, #69, #70, #72, #71, #73, #74, #66, #67, #55. Progress moved from 0/5 to 6/11 — after the work, not before it, which is the distinction the proposer's comment drew. This body's ownPhase | Issue | Work itemtable, the construct #69 removed from the skill, is replaced with a phase table of intent and exit criteria, and aGatesparagraph; that is the first hand conformance of a tracker body to QEP-6 §7 in this repo, and it is the shape of the edit #64 has to make twice more.What was avoided. The stale-procedure hazard the 2026-08-26 revision recorded: this session ran the 0.9.0-era update from the 0.8.0 cache this morning, following the text on
maininstead; the plugin was updated to 0.10.0 and the session restarted before this revision, so it is the firstupdaterun from an installed 0.10.0.Surfaced, not decided. #68 (
workplan's missing body spec for the tracker genre, and the resume pointer's home) is the sibling finding on the other skill and is still unparented; it is in the gaps table as gap 6 with membership open.Resume pointer: #64. Unchanged in position, strengthened in reason — the body edit this revision made here is the one #64 makes to #3 and #12, and #67 is specified by doing that by hand. #65's
workplan-projectrun is now worth doing, since the skill is in the shape a run should validate.mmcky commentedon Sep 2, 2026
Addendum, same session — #68 adopted into phase 1 and linked after #74, on the membership test the skill now applies: it advances the "QEP-6 conformance of what the skills write" row for
/qe:workplanthe way #69–#74 did forworkplan-project. Parent read before linking (none), placed with the reprioritise API; list is#64, #65, #69, #70, #72, #71, #73, #74, #68, #66, #67, #55, progress 6/12. Gap 6's membership question is closed; nothing else in the body changed. The closing note on QuantEcon/qeps#18 that finding 9 asked for is posted. Resume pointer is still #64.read's structural-change report #82tidyverb on/qe:workplan, or a session task with an index script #84quantecon-services commentedon Sep 21, 2026
Revision log — 2026-09-21 16:08 AEST. What landed since the 2026-09-02 stamp, what inverted, what was decided and what waits.
Landed (all on 2026-09-21). qe 0.11.0 on #81 (draft): the three deterministic scripts (
tracker_snapshot.pythrough REST only,tracker_lint.py,tracker_digest.py),read --digest, state-not-story onupdateandresume,.qe/project.ymldiscovery,.qe/ROADMAP.md. Their first live application: QuantEcon/project-theme-parity#2 trimmed to state-not-story with its history in a revision-log comment, and its.qe/folder (QuantEcon/project-theme-parity#33). Three items filed here: #82 (snapshot diff), #83 (milestones at filing), #84 (the distillation-pass decision). Upstream: QEP-7 drafted (QuantEcon/qeps#40, from QuantEcon/qeps#39) as the home for the records these skills write; two field notes on QEP-6 (QuantEcon/qeps#18); the pilot's migration to.qe/dev/(QuantEcon/action-translation#314); the registry row (QuantEcon/status-projects#175); the review filed in the projects vault.Inverted. The 2026-09-02 body said #3 and #12 were untyped, unstamped and without sub-issues. Both have carried the
Projecttype since the 2026-09-06 sweep, and #12 has a stamp (2026-09-14) and five sub-issues; #3 is still unstamped with none. Gap 1 is half closed by work this plan did not do, and #64 shrinks to a stamp on #3 and sub-issues on both.Discovered. GraphQL is refused from Claude Code sessions, so
gh api graphql— the previous snapshot script — failed in exactly the sessions these skills run in; the REST endpoints for sub-issues, dependencies and issue types all work. The lint, run on the largest tracker before its trim, reproduced every finding the review made by hand.Decided (2026-09-21, @mmcky). One
.qe/folder per repository, flat at the root,dev/the only sub-folder and scoped to its repository, no scratch in the tree; decision records as a dated record of reasoning, changed by supersession; the PMP as QEP-7 with QEP-6 as the GitHub binding.Waits. #83 on #55 (native edge added today); #84 on its owner; every unrun verb on a run from an installed plugin (#65).
Generated by Claude Code