Skip to content

qe 0.11.0: workplan-project writes dependency edges; QEP-2 is Accepted - #79

Open
quantecon-services wants to merge 2 commits into
mainfrom
claude/qep6-section4-and-qep2-accepted
Open

qe 0.11.0: workplan-project writes dependency edges; QEP-2 is Accepted#79
quantecon-services wants to merge 2 commits into
mainfrom
claude/qep6-section4-and-qep2-accepted

Conversation

@quantecon-services

@quantecon-services quantecon-services commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Follows the QEP-6 §4 amendments ruled 2026-09-08, and corrects two citations that were wrong rather than merely stale. QEP-6 is still a Draft and this plugin still tracks it by PR, as 0.10.0 did.

workplan-project writes dependency edges

Step 6's mutating-call table gains gh issue edit <item> --add-blocked-by <blocker>.

QEP-6 §4 has required native edges for a real sequencing constraint since it was drafted, and no skill in this family wrote one. The complete mutating-call tables were gh issue create / --add-sub-issue / sub_issues/priority / --type Project for workplan-project, body-comment-close for workplan, and workplan-roadmap "never edits an issue". So the standard's central mechanism had no producer, and every edge on the org's conformant trackers was made by hand — a review of two QEP-6-conformant trackers found twenty items carrying none while their bodies stated the constraints in prose.

The row carries the two platform facts a producer needs, both measured rather than assumed:

  • One call per edgegh takes no list.
  • For a cross-repository blocker gh refuses the flag outright, so the REST dependencies/blocked_by endpoint is used instead — and its body takes the blocker's numeric id, not its issue number.

A gate between packages is carried, not just described

The cross-package guidance said a gate is stated once in the body of the package that waits. Under the amended §4 it is carried as native edges, with only the rationale stated — prose is the one carrier no consumer reads. The phase-level form is now spelled out: the first item of the waiting phase is blocked by every item of the phase it waits on, which is linear in the upstream phase rather than a cross-product, and clears when that phase closes rather than when the upstream tracker does. Where a phase's exit criterion is a single Decision, each waiting item carries the edge to the Decision instead.

The third push adds the test §4 applies before any edge is written — output, not order. An edge only where the downstream item cannot start without something the upstream produces (a ruling, a field, a document, a page it draws from); two items that touch the same file or will be worked in sequence are plan order, which is position and not an edge, and go under the body's sequencing rationale rather than its gates. Without that sentence the new row would have taught the opposite lesson from the first tracker it touched, where five of the eight edges a review had proposed were exactly that.

The existing warning against a project-level edge is kept and sharpened — it parks the whole downstream project in any consumer deriving parked-ness from open blockers.

The sibling back-pointer is no longer an obligation

§4's requirement that the waited-on project point back was struck upstream: blocked-by and blocking are two ends of one edge, so the reverse direction is read rather than written. A Related work entry pointing at the rationale stays available prose. (The obligation had zero producers and a free platform inverse, which is why it was missed every time it applied.)

Two Adoption clause citations were off by one

QEP-6's Adoption list read 1., 2., 2., 3., 4. in source. Markdown renumbers an ordered list on render, so the published document showed 1–5 while every citation after the first pointed one clause short:

Cited as Actually
clause 2 — read-before-link on conform tooling clause 3
clause 3 — QEP-6 authoritative over C2 during the handover clause 4

qe/CHANGELOG.md's 0.10.0 entry also cites clause 3 for the precedence ruling; that is left as written, since a release note records what shipped. The source numbering is corrected upstream and is now enforced by a CI check (qeps#30) rather than left to review — the defect survived a twelve-amendment review, a field report and four PR comments.

QEP-2 is Accepted, and the audit context said it was a Draft

qe/references/audit/quantecon-context.md told an agent:

"Because QEP-2 is still a draft, doctrine rule 6 applies: recommend only already-canonical labels, mark anything else post-acceptance."

QEP-2 has been Accepted since it merged, so the whole set is canonical and the caveat was suppressing correct recommendations. The passage is corrected, and now records how the standard actually reaches a repository:

  • qep-0002-labels.yml is the authority.
  • The qe CLI vendors it verbatim with a pin to the qeps revision it came from, and a weekly job compares the vendored blob against upstream — content rather than commit, so it fires when the schema moves and not when some other QEP is edited. So qe gh labels check's verdict is the one to cite.

Corrected in this PR's second push. The first version of that passage claimed the manifest still omitted four labels and cited qeps#28. That was wrong and the evidence was stale — it came from a migration note describing the plugin-era qe 0.2.0. QuantEcon/cli vendors the appendix (src/qe_cli/data/qep-0002-labels.yml + qep-0002.pin + schema_pin.py + schema-freshness.yml), all four labels are present, and verified on 2026-09-08 the vendored, upstream and at-pin blobs are all 161cd746, so there is no drift. qeps#28 is closed as already solved with the correction recorded.

Checks

python3 scripts/validate.py          → All 1 plugin(s) valid.
python3 scripts/check-version-bump.py --base origin/main
                                     → ok  qe — 0.10.0 → 0.11.0 (4 files)

Minor bump per the CHANGELOG's own rule: step 6 now does something materially different.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Hwm5shrGXmaq4r3Lp9kS33

Follows the QEP-6 section 4 amendments ruled 2026-09-08, and corrects two
citations that were wrong rather than merely stale.

WORKPLAN-PROJECT WRITES DEPENDENCY EDGES. Step 6's mutating-call table gains
`gh issue edit <item> --add-blocked-by <blocker>`. QEP-6 section 4 has required
native edges for a real sequencing constraint since it was drafted and no skill
in this family wrote one — every edge on the org's conformant trackers was made
by hand, after a review found twenty items carrying none. The row carries the
two platform facts a producer needs: one call per edge, since gh takes no list;
and for a cross-repository blocker gh refuses the flag, so the REST
dependencies/blocked_by endpoint is used instead, whose body takes the
blocker's numeric id rather than its number.

A GATE BETWEEN PACKAGES IS CARRIED, NOT JUST DESCRIBED. The cross-package
guidance said a gate is stated once in the body of the package that waits.
Under the amended section 4 the gate is carried as native edges and only its
rationale is stated, with the phase-level form spelled out: the first item of
the waiting phase is blocked by every item of the phase it waits on, which is
linear in the upstream phase and clears when that phase closes rather than when
the upstream tracker does. Where a phase's exit criterion is a single Decision,
each waiting item carries the edge to the Decision instead.

THE SIBLING BACK-POINTER IS NO LONGER AN OBLIGATION. Blocked-by and blocking
are two ends of one edge, so the reverse direction is read rather than written.
A Related work entry pointing at the rationale stays available prose.

TWO ADOPTION CLAUSE CITATIONS WERE OFF BY ONE. QEP-6's Adoption list read
1., 2., 2., 3., 4. in source, and Markdown renumbers an ordered list on render,
so the published document showed 1-5 while every citation after the first
pointed one clause short. The read-before-link obligation is clause 3, not 2;
the C2-precedence ruling this skill applies is clause 4, not 3. The 0.10.0
release note is left as written, since it records what shipped.

QEP-2 IS ACCEPTED, AND THE AUDIT CONTEXT SAID IT WAS A DRAFT. The context file
told an agent that doctrine rule 6 applied and to mark anything beyond the
already-canonical labels post-acceptance. QEP-2 has been Accepted since it
merged, so the whole set is canonical. The same passage now names
qep-0002-labels.yml as the authority over any tool's own copy of the list, and
warns that a clean sync is not proof of a full set — qe 0.2.0's manifest
skipped four labels that had to be created by hand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hwm5shrGXmaq4r3Lp9kS33
One sentence in the cross-package guidance, following QEP-6 §4's new
test: an edge only where the downstream item cannot start without
something the upstream produces; shared files and serial work are plan
order — position, not an edge — and belong under sequencing rationale,
not gates. Without it the skill's new blocked-by row would have taught
the opposite lesson from the first tracker it touched, where three of
the edges a review proposed were exactly that.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hwm5shrGXmaq4r3Lp9kS33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants