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
8000
on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bug(cli): make --strict the default; permissive compiles emit runnable artifacts that contradict their spec #264
Execution half implemented in #269 (fix/issue-264-scaffold-containment).
Landed: a scaffold is now inert. run/test refuse it with the new ESCAF001; compile writes <stem>.draft.<ext>, emits no test artifact, and removes a stale artifact when a module regresses into a scaffold. --strict unchanged.
Deliberately not in that PR — the default flip. Its acceptance criterion is a strict-clean corpus, and measuring that corpus turned up a dependency the issue as written did not account for:
example
strict errors
blocker
<
D56C
td>math.nl
1
module name shadows stdlib math (ESEM013) — trivial rename
billing.nl
10
DEPENDS drift, prose LOGIC, one generator expression
math.nl was the defect ESEM013 exists to catch, shipped in our most-referenced example — it compiled to math.py and shadowed the standard library. Renamed to arithmetic, with every docs reference updated.
strings.nl now uses the escape hatch its own header always claimed to use.[slugify] was one dense line of chained Python; it and [truncate]'s slice are @literal now, leaving the guard and the branch in checked NLS.
Activity
Mnehmos commentedon Sep 13, 2026
Execution half implemented in #269 (
fix/issue-264-scaffold-containment).Landed: a scaffold is now inert.
run/testrefuse it with the newESCAF001;compilewrites<stem>.draft.<ext>, emits no test artifact, and removes a stale artifact when a module regresses into a scaffold.--strictunchanged.Deliberately not in that PR — the default flip. Its acceptance criterion is a strict-clean corpus, and measuring that corpus turned up a dependency the issue as written did not account for:
math.nlmath(ESEM013) — trivial renamebilling.nlstrings.nlnoton stringsorting.nlsorting_ja.nlworkflow_engine.nlwith, 7 lambdas, … across 67 ANLUsSo the flip is gated on #267 landing plus a substantial
workflow_enginerewrite, not on CLI work. Suggested split:Scaffold containment— fix(cli): contain incomplete scaffolds so they cannot run or be imported #269mathrename,billingandstringsmade strict-clean (unblocked today)sorting,sorting_ja, and most ofworkflow_engineworkflow_enginerewrite or demotion out of the shipped corpusUntil 5,
examples/README.mdstates which examples are complete and which are drafts, so the corpus no longer implies more than it delivers.fix(examples): bring arithmetic, billing, and strings to strict-clean
Mnehmos commentedon Sep 13, 2026
Stage 2 landed on the same branch (#269). Strict-clean examples: 2 of 8 → 5 of 8.
math.nl→arithmetic.nlESEM013stdlib shadowbilling.nlstrings.nlshop_demo.nlshowcase/mission_control.nlsorting.nl,sorting_ja.nl,sorting_ts.nlworkflow_engine.nlNotes worth recording:
math.nlwas the defectESEM013exists to catch, shipped in our most-referenced example — it compiled tomath.pyand shadowed the standard library. Renamed toarithmetic, with every docs reference updated.billing.nlis the core(semantics): LOGIC is vestigial in every example — make it load-bearing or remove it #266 argument in miniature. Making the four prose LOGIC steps actually call[calculate-subtotal]/[apply-discount]/[calculate-tax]is what removed theDEPENDSdrift — the drift existed because LOGIC was decorative andRETURNSre-derived the formula inline. Fixing one fixed the other, which is evidence that core(semantics): LOGIC is vestigial in every example — make it load-bearing or remove it #266 rule 2 (no re-derivation) is the right rule.strings.nlnow uses the escape hatch its own header always claimed to use.[slugify]was one dense line of chained Python; it and[truncate]'s slice are@literalnow, leaving the guard and the branch in checked NLS.[line-items-total]is another hand-rolled recursive walker with a cursor — the fifth in the corpus. feat(control): bounded iteration in the strict core — recursion-with-cursor is unreviewable #267 should delete all of them.Remaining for this issue: #267, then
workflow_engine, then the default flip.feat(control): add bounded iteration to the checked core