You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
planning: move type rules from design into a synced type-rules convention #12479
The type rules live in one convention file, the single source, and each plugin that needs them gets a synced copy rather than a hand-kept one.
Done when
A type-rules convention holds the rules, and /planning:design points at it instead of restating them.
Every plugin copy is generated by the repository's sync mechanism and checked by its --check mode.
bash plugins/skill-quality/scripts/check-skill.sh plugins/planning/skills exits 0, and the design skill's cut ships with before/after evals showing no loss.
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
Understood: move the type rules out of /planning:design into a single type-rules convention file, sync copies into the plugins that read them via the repository's sync mechanism (with --check passing), and show before/after evals with no loss from the design skill's cut. The scope and done-when are clear, and the parent decision (#7586) settles the design. No duplicates found among open issues.
The work-resolve-issue lane stopped on this issue (host-only): the run reports the work needs a host run the lane cannot make.
It added host-run and removed agent-ready: an agent run on a host builds it, and it waits on no decision from a person.
In the run's words:
host-only: the type-rules move is already on main through merged PR #12168 (merge commit 95210a4, closed #12150). It created docs/contracts/type-discipline/README.md as the single source, synced into planning, implementation and review by scripts/sync-shared-copies.sh, and /planning:design's Phase 3 points at its generated copy. The one done-when item still open is the before/after eval run of plugins/planning/skills/design showing no loss from that cut, plus bash plugins/skill-quality/scripts/check-skill.sh plugins/planning/skills. Those are a paid eval run and a script this lane cannot invoke, so they need a host run. Nothing is left to edit.
What the run says it did not do:
Before/after evals for /planning:design's cut (done-when item 3). This is a paid eval run that needs a host run; #12168 did not ship one.
bash plugins/skill-quality/scripts/check-skill.sh plugins/planning/skills. This lane may run only its named wrappers, and check-changed-skills had no changed skill to gate.
Tidy, review and PR prep: skipped because the run made no change.
Measured result: no loss, on one model, with a limit on what the suite can detect. Change measured: #12168. Before is origin/main's plugin with only skills/design taken from 95210a4363^. Claude Code host run, claude-sonnet-5-5, 3 runs per case, launched together, 18 of 18 runs VALID on each of the three copies.
check-skill.sh plugins/planning/skills exits 0 (5 warnings on the design skill, no errors).
None of the five existing design-* cases reach Phase 3, so three new cases grade the type-inventory.md a run writes (PR to follow).
Case
Before
After
Negative control
design-types-ts-idioms
1.00
1.00
0.00
design-types-py-money-minor-units
1.00
1.00
0.83
design-types-py-row-derived
1.00
1.00
1.00
Noise report, after against before: non-inferior at margin 0.05, change +0.00, no case drop. With minus without on after: +0.83, interval +0.51 to +1.00.
Negative control (the Apply paragraph and the type-discipline files removed): case drop on design-types-ts-idioms, mean down 0.39, over the 0.15 threshold.
Measured passes ran with --disallow-tools Glob Grep to get VALID runs, so whether the model hunts for the file more often after the change is unmeasured.
no-stored-has-more would pass on a run that wrote no inventory (every counted run wrote one), and row-derived mostly detects the audit's word "derives".
One signal, not scored and exploratory. On the row case, runs opened the rules file less often after the change: 9 of 11 before, 3 of 11 after (Fisher's exact about p = 0.03, one case picked after seeing the gap). On the other two cases both versions read it 3 of 3. No scored grader moved, and every run of the 8-run follow-up on both versions still wrote a sum type and assert_never. The cause is UNVERIFIED. No change is made for it; the reads-type-rules indicator ships with the cases, so a later pass can see it.
Spend: about 13.53 USD list-price estimate, model usage only.
Done-when holds. The design type-rules eval cases merged in #12837, which carried Refs: #12479, so this issue is closed by hand with the measured record.
test(planning): add outcome cases for /planning:design's type rules #12837's money grader passes only a typed integer field, after three review rounds that found negated prose passing the earlier regex. Field-only grader replay: before 3/3, after 3/3; the broken-copy control (with-arm) scored 0/3, case score 0.50, so the case separates a broken skill from a working one.
Both review lanes reported 0 findings on the merged head.
Activity
github-actions commentedon Nov 2, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
Understood: move the type rules out of
/planning:designinto a single type-rules convention file, sync copies into the plugins that read them via the repository's sync mechanism (with--checkpassing), and show before/after evals with no loss from the design skill's cut. The scope and done-when are clear, and the parent decision (#7586) settles the design. No duplicates found among open issues.Automated triage, applied by the lanes App.
github-actions commentedon Nov 2, 2026
github-actions commentedon Nov 2, 2026
melodic-automation-lanes commentedon Nov 2, 2026
The work-resolve-issue lane stopped on this issue (
host-only): the run reports the work needs a host run the lane cannot make.It added
host-runand removedagent-ready: an agent run on a host builds it, and it waits on no decision from a person.In the run's words:
What the run says it did not do:
bash plugins/skill-quality/scripts/check-skill.sh plugins/planning/skills. This lane may run only its named wrappers, and check-changed-skills had no changed skill to gate.Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41513899975
To hand it back to the lane, remove
host-runand addagent-readyagain.kyle-sexton commentedon Nov 3, 2026
Claim. Lane 3 host run is measuring this (hub overnight order).
kyle-sexton commentedon Nov 3, 2026
Measured result: no loss, on one model, with a limit on what the suite can detect. Change measured: #12168. Before is origin/main's plugin with only
skills/designtaken from95210a4363^. Claude Code host run,claude-sonnet-5-5, 3 runs per case, launched together, 18 of 18 runs VALID on each of the three copies.check-skill.sh plugins/planning/skillsexits 0 (5 warnings on the design skill, no errors).design-*cases reach Phase 3, so three new cases grade thetype-inventory.mda run writes (PR to follow).design-types-ts-idiomsdesign-types-py-money-minor-unitsdesign-types-py-row-derivedtype-disciplinefiles removed): case drop ondesign-types-ts-idioms, mean down 0.39, over the 0.15 threshold.Limits.
--disallow-tools Glob Grepto get VALID runs, so whether the model hunts for the file more often after the change is unmeasured.no-stored-has-morewould pass on a run that wrote no inventory (every counted run wrote one), androw-derivedmostly detects the audit's word "derives".One signal, not scored and exploratory. On the row case, runs opened the rules file less often after the change: 9 of 11 before, 3 of 11 after (Fisher's exact about p = 0.03, one case picked after seeing the gap). On the other two cases both versions read it 3 of 3. No scored grader moved, and every run of the 8-run follow-up on both versions still wrote a sum type and
assert_never. The cause is UNVERIFIED. No change is made for it; thereads-type-rulesindicator ships with the cases, so a later pass can see it.Spend: about 13.53 USD list-price estimate, model usage only.
test(planning): require an integer amount in the minor-units grader
test(planning): accept "integer" after smallest unit and reject a neg…
test(planning): grade minor units on a typed integer field only
kyle-sexton commentedon Nov 3, 2026
Done-when holds. The design type-rules eval cases merged in #12837, which carried
Refs: #12479, so this issue is closed by hand with the measured record.