Skip to content

feat(n8-c3): principle 13 requires §1.7 substance (bare §1.7 no longer passes) - #178

Merged
artyhoo merged 1 commit into
stagingfrom
feat/n8-c3-s17-substance
May 22, 2026
Merged

feat(n8-c3): principle 13 requires §1.7 substance (bare §1.7 no longer passes)#178
artyhoo merged 1 commit into
stagingfrom
feat/n8-c3-s17-substance

Conversation

@artyhoo

@artyhoo artyhoo commented May 22, 2026

Copy link
Copy Markdown
Owner

What

Wave N8 A-phase item C3. Closes a #discipline-theatre hole in principle 13: the old arm (a) let the bare literal "§1.7" pass on its own — a patch could write a ## §1.7 heading with zero actual self-review and stay green. Now a patch passes only with real self-review substance.

Why "substance present", not the original sketch "Forward AND Backward in the §1.7 section"

The naive form would have broken the build. A 73-patch sweep: 8 §1.7-heading patches legitimately lack both literal words (self-review via T15 / Self-application / Recursive / a forward-check) → ≥8 false-positives; and the rule-introducing(needs both)-vs-research-only(needs neither) split is judgment, not mechanical (#gate-where-judgment-needed). So C3 enforces "§1.7 must have substance"; arms (c') Self-reflection + (f') forward-check were added because the 2 bare-§1.7 patches are real self-review. Net false-positives = 0 (full principles suite 106 pass).

Changes (test-only, packages/core/principles/)

  • hasS17Substance(content) — pure string→bool detector, unit/Stryker-testable. checkSection delegates; bare §1.7 is no longer an arm. Error distinguishes "names §1.7 but no substance (decoration)" from "missing §1.7 section".
  • Tests: C3 paired-negative, paired-positive, arm (c')/(f') positives, "substance without literal §1.7 still passes".

§1.7

§1.7 Forward-check applied

Complies with no-paid-llm-in-ci — pure deterministic string check, hasS17Substance at packages/core/principles/13-phase-research-coverage-s17.test.ts:86 (no API call); build-first-reuse-default (strengthens own principle 13, no upstream analog for "our §1.7 patch discipline"); doc-authority-hierarchy (test-only, no doc/rule prose edited — checkSection delegates at packages/core/principles/13-phase-research-coverage-s17.test.ts:112).

§1.7 Backward-check applied

Ran the new gate against all 73 research patches0 false-positives. The only 2 patches relying on bare §1.7 — aif-primitives-deep-dive.md (forward-check) and skill-context-runtime-probe.md (self-reflection) — pass via the new (f')/(c') arms, so no EXEMPT_LIST entry was needed. The anti-tautology negative at packages/core/principles/13-phase-research-coverage-s17.test.ts:218 proves the gate fails on a substance-free §1.7 heading.

N8 A-phase now complete

C1 (#170) · C2 (#174) · C4 (#177) · C3 (this) · C5 = already covered by principle 10. Built in an isolated worktree (parallel sessions active).

…nger passes

Wave N8 A-phase item C3. Closes the #discipline-theatre hole in principle 13:
its old arm (a) let the bare literal "§1.7" pass on its own, so a patch could
write a "## §1.7" heading with zero actual self-review and be green. Now a patch
passes only if it carries real self-review SUBSTANCE.

Implemented as "substance present", NOT the original sketch "Forward AND Backward
inside the §1.7 section". Evidence: a 73-patch sweep found 8 §1.7-heading patches
that legitimately lack both literal words (they self-review via T15 /
Self-application / Recursive / a forward-check); the strict form would be ≥8
false-positives, and the rule-introducing(needs both)-vs-research-only(needs
neither) split is judgment, not mechanical (#gate-where-judgment-needed). So the
gate is "has substance", and arms (c') Self-reflection + (f') forward-check were
added because the sweep proved the 2 bare-§1.7 patches (aif-primitives-deep-dive,
skill-context-runtime-probe) do real self-review — net false-positives = 0.

- hasS17Substance(content): pure string→bool detector (arms b/c/c'/d/e/f/f'),
  unit- + Stryker-testable. checkSection delegates to it; the bare "§1.7" literal
  is no longer an arm. Error message distinguishes "names §1.7 but no substance
  (decoration)" from "missing §1.7 section".
- Tests: C3 paired-negative ("## §1.7" with no substance → hasS17Substance false +
  checkSection throws /decoration/), paired-positive, arm (c')/(f') positives,
  and "substance without literal §1.7 still passes". Real-corpus test stays green
  (106 principles pass; 0 new exemptions).

§1.7: forward-check applied — complies with no-paid-llm-in-ci (pure deterministic
string check, packages/core/principles/13-...test.ts hasS17Substance, no API);
build-first-reuse-default (strengthens own principle 13, no upstream analog for
"our §1.7 patch discipline"); doc-authority-hierarchy (no doc/rule prose edited,
test-only). backward-check sweep — ran the new gate against all 73 research
patches (command output in PR body): 0 false-positives; the only 2 patches that
relied on bare §1.7 (aif-primitives-deep-dive "forward-check",
skill-context-runtime-probe "self-reflection") pass via the new (f')/(c') arms,
so no EXEMPT_LIST entry was added. Anti-tautology negative proves the gate fails
on a substance-free §1.7 heading.
@artyhoo
artyhoo enabled auto-merge (squash) May 22, 2026 20:11
@artyhoo
artyhoo merged commit e3b9657 into staging May 22, 2026
24 of 25 checks passed
artyhoo added a commit that referenced this pull request May 25, 2026
… detection) (#220)

Run `bash .claude/skills/meta-orchestrator/helpers/plan-currency-check.sh`
(L2 Stage 3 detection shipped in #217) → 88 UNTRACKED-N entries surfaced
between the 2026-05-22 reconciliation and origin/staging tip (#217). Map
each to an existing §0 / Track row by adding the PR number to its evidence
cell, or to a new §0 row for two umbrellas that landed in full since the
prior snapshot. Re-run helper → 0 UNTRACKED remaining.

Key changes:

- Snapshot date 2026-05-22 → 2026-05-25 (header + §0).
- N8 row: A-phase 🔲 → 🟡 — C1 SSOT-existence (#170), C2 kickoff
  T-enumeration floor (#174), C3 principle 13 §1.7 substance (#178),
  C4 delivery-channel marker (#177), activation #180. C5 + cost-levers
  remain gated on §5.3 utilisation trigger.
- Track M.1 / M.4 → DONE: M.1 codified T20 via #212 (with NB note —
  recommendation-laziness took the T20 slot, mutation-equivalence
  T-bump 20→21 still pending); M.4 6 paired-negative bash-hook tests
  shipped #195/#196/#197/#198/#199/#200.
- Two new §0 rows: Meta-orchestrator skill (Track P) — BUILD #186 +
  audit rounds #192/#193/#194/#201/#202 + UX refactor #203/#204/#205
  + planner-completeness #213/#214/#217 + §1.7 PR-body mandate #216;
  Recommendation-laziness discipline — R-phase #206/#207, benchmark
  #210, I-phase Sub-waves A/C/D #211/#212/#215.
- N7 row: + dogfood research-patch #135 / §4 demotion #166 / live-trial
  verified #171. N4b row: + design #136 / record #118.
- Infra paragraph: PR refs for I.1 follow-ups (#121/#123/#124/#125/
  #128/#130/#131/#143/#145/#146/#147/#148/#149/#172/#187), I.2
  (#139/#142/#154/#175), I.3 DN-4 (#126/#132/#133/#138/#140/#152/
  #159/#161/#162/#167).
- Track 2.3 (channel-earliness audit) → DONE 2026-05-23 (#181); removed
  from "What actually remains".
- Footer subsection: standalone work (#191 satellite-arch / #189
  guard-liveness / #173 storm-readiness / #176 §10 port / #182 cleanup),
  Wave 10 follow-ups (#110/#112/#113), plan-revision history (#108/
  #109/#153/#155/#157/#160/#164/#165/#168/#179/#185).

Verification:
- `bash .claude/skills/meta-orchestrator/helpers/plan-currency-check.sh
  | grep -c '^UNTRACKED'` → 0 (down from 88).
- `npx markdownlint-cli docs/meta-factory/wave-sequencing-plan.md`
  → no violations.
- `npx vitest run packages/core/skills/plan-currency-check.test.ts`
  → 14/14 passed.

Prior-art: skipped — chore, doc reconciliation only, no new capability
or rule introduced.
artyhoo added a commit that referenced this pull request Jun 27, 2026
…n staging → renumber channel-discipline to #178)
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.

1 participant