feat(principles): principle 15 — skill paired-negative test (N2 #5, Commit B) - #112
Merged
Merged
Conversation
…ommit B) Ships the executable test for principle 15 per its design sketch (Commit A, #105). Each in-scope SKILL.md not in the EXEMPT_SKILLS allowlist must carry a body-section paired-negative block (`## Without this skill` + `## With this skill`, both non-trivial and differing — anti-tautology, mirroring principle 02). Grandfather = explicit EXEMPT_SKILLS allowlist (mirrors principle 09's EXEMPT_PATTERNS mechanism, NOT a date — the design's "date cutoff" wording is corrected to "allowlist" in §3/§5/§6/§7/§10). Self-test: positive + mutation 1a (no Without) + 1b (no With) + 2 (tautology) + 3 (exemption load-bearing). All 5 current skills grandfathered → CI stays green. ADAPT of Superpowers' «NO SKILL WITHOUT A FAILING TEST» (idea, no dependency; substrate-pure). SSOT #55 registered in this commit (#54 taken by Aider run_cmd via #110). §1.7 forward-check: principle 15 complies with build-first-reuse-default (ADAPT verdict, SSOT #55, zero Superpowers dep — substrate-pure per DECISION=C); no-paid-llm-in-ci (pure structural parse, no LLM); doc-authority-hierarchy (companion design.md carries header at packages/core/principles/15-skill-paired-negative.design.md:4); reviewer-discipline (marker form was maintainer-decided, not executor-picked). Mirrors principle 02's anti-tautology at packages/core/principles/02-paired-negative-test.test.ts:80. §1.7 backward-check: new rule scope = in-repo SKILL.md (.claude/skills/* + skills/*). Complete sweep satisfied by grandfather — all 5 current skills in EXEMPT_SKILLS at packages/core/principles/15-skill-paired-negative.test.ts:34; the exemption itself carries the load-bearing mutation-3 self-test at packages/core/principles/15-skill-paired-negative.test.ts:197 (proves the allowlist is load-bearing — same headerless skill passes IFF its path is in EXEMPT_SKILLS). No skill forced to change. Prior-art: prior-art-evaluations.md#55 (Superpowers TDD-for-Skills, verdict ADAPT — idea re-expressed for the SKILL.md artifact as principle 15; no dependency, substrate-pure).
5 tasks
This was referenced May 21, 2026
artyhoo
added a commit
that referenced
this pull request
May 21, 2026
…s principle 15, #112) (#113) Principle 15 (skill paired-negative, #112, SSOT #55) shipped candidate mechanism A — each non-grandfathered SKILL.md carries a body-section paired-negative block. Marks §13.36 RESOLVED and corrects the now-false claim that SKILL.md files have no paired-negative enforcement. Orchestrator follow-up promised in #112. Prior-art: skipped — docs status update only, no new capability or dependency.
5 tasks
This was referenced May 25, 2026
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.
4 tasks
artyhoo
added a commit
that referenced
this pull request
Jun 3, 2026
…C runbook) (#404) * feat(aif-doctor): /aif-doctor operational-health triage skill (Class C runbook) BUILD a thin $0 runbook over the existing helper layer + upstream read-only endpoints. Diagnoses aif-handoff env breakage (runtime crash-loop, capacity saturation, host-proxy block) the dispatch loop runs in — read-only sweep runs autonomously, every mutation gates behind operator GO (Q2 contract). - Reuses bridge-health.sh / verify-bridge.sh / ensure-parallel.ts + upstream /health + /agent/status (zero new scripts, zero npm deps, zero API-billed calls). - Catalogue = the 3 modes the upstream stale-watchdog cannot see, each with a live-verified detector->fix->reversibility (T15 bench, 2026-06-03). - SSOT #112 landed in this commit; Class C + doc-authority header; principle-15 paired-negative block. Prior-art: prior-art-evaluations.md#112 (/aif-doctor — BUILD runbook + REUSE helpers/endpoints; DeepWiki surfaced upstream /health, /agent/status, probeClaudeCli, recoverStaleInProgressTasks stale-watchdog — all reused/referenced; T16 verified watchdog problem-class = slow-stale auto-recovery vs ours = watchdog blind-spots). Companion to #111 /dispatcher. §1.7: forward+backward self-review at .claude/skills/aif-doctor/SKILL.md:169 (§9). Forward-check: complies with build-first-reuse-default.md:3 (BUILD runbook + REUSE helpers, full DeepWiki+WebSearch mechanism), no-paid-llm-in-ci.md:1 (zero API-billed calls), dual-implementation-discipline.md:6 (@cc-only-rationale marker), doc-authority-hierarchy.md:3 (Class C header), principle 15 (paired-negative). Backward-check: dispatcher SKILL.md:24 NOT-authoritative-for verified (names planning/pipeline/orchestrator only) — complementary, not superseded; bridge-health.sh reused unedited. * chore(aif-doctor): umbrella done.md — closes aif-doctor-skill (#404) * fix(aif-doctor): de-link gitignored kickoff ref — CI skill-drift broken-ref on clean checkout The kickoff lives under .claude/orchestrator-prompts/* (gitignored; only done.md is tracked), so the markdown link resolved locally but 404'd in CI's clean checkout → principle 14 skill-drift FAIL. Demote to a plain code-span mention.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Commit B принципа 15 — executable test per design sketch (Commit A, #105). ADAPT of Superpowers' «NO SKILL WITHOUT A FAILING TEST» (idea, zero dependency, substrate-pure).
Reships #111 off current main: PR #110 took SSOT #54 (Aider
run_cmd) in parallel, colliding with this branch's #54 → renumbered to #55 everywhere (force-push banned → clean fresh branch per #80→#82 precedent, not a merge-commit with a stale trailer).15-skill-paired-negative.test.ts(207 LOC): каждый in-scopeSKILL.mdне изEXEMPT_SKILLSallowlist обязан нести body-section paired-negative блок (## Without this skill+## With this skill, обе нетривиальны и различаются — anti-tautology, зеркало принципа 02).EXEMPT_SKILLSallowlist (зеркалоEXEMPT_PATTERNSпринципа 09 — allowlist, НЕ date). Все 5 текущих скиллов grandfathered → CI зелёный.Как проверить
npx vitest run …/15-skill-paired-negative.test.ts→ 7 passednpx vitest run packages/core/principles/→ 15 files, 88 passed | 4 skippednpx markdownlint-cli2→ 0 errorsgrep '^| 5[0-9] |'→ docs(ssot): correct AIF Handoff attribution + add aif-handoff monorepo entries (#27-#30 + #42-#46) #54=Aider, docs(research-patches): commit 3 patches from 2026-05-16 autonomous research session #55=Superpowers§1.7 Forward-check applied
Complies with
build-first-reuse-default(ADAPT verdict, SSOT #55, zero Superpowers dep — substrate-pure per DECISION=C);no-paid-llm-in-ci(pure structural parse, no LLM);doc-authority-hierarchy(companion design.md carries header at packages/core/principles/15-skill-paired-negative.design.md:4);reviewer-discipline(marker form maintainer-decided). Mirrors principle 02 anti-tautology at packages/core/principles/02-paired-negative-test.test.ts:80.§1.7 Backward-check applied
New rule scope = in-repo
SKILL.md(.claude/skills/*+skills/*). Complete sweep satisfied by grandfather — all 5 current skills inEXEMPT_SKILLSat packages/core/principles/15-skill-paired-negative.test.ts:34; the exemption itself carries the load-bearing mutation-3 self-test at packages/core/principles/15-skill-paired-negative.test.ts:197. No skill forced to change.Follow-up (orchestrator, separate)
open-questions.md §13.36(TDD-for-Skills extension, ARMED) → mark RESOLVED after merge.