Skip to content

feat(principles): principle 15 — skill paired-negative test (N2 #5, Commit B) - #112

Merged
artyhoo merged 1 commit into
mainfrom
feat/principle-15-skill-paired-negative-v2
May 21, 2026
Merged

feat(principles): principle 15 — skill paired-negative test (N2 #5, Commit B)#112
artyhoo merged 1 commit into
mainfrom
feat/principle-15-skill-paired-negative-v2

Conversation

@artyhoo

@artyhoo artyhoo commented May 21, 2026

Copy link
Copy Markdown
Owner

Что сделано

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-scope SKILL.md не из EXEMPT_SKILLS allowlist обязан нести body-section paired-negative блок (## Without this skill + ## With this skill, обе нетривиальны и различаются — anti-tautology, зеркало принципа 02).
  • Marker = body-section (maintainer-decided). Grandfather = явный EXEMPT_SKILLS allowlist (зеркало EXEMPT_PATTERNS принципа 09 — allowlist, НЕ date). Все 5 текущих скиллов grandfathered → CI зелёный.
  • Self-test (recursive, invariant feat: self-application + meta-factory foundation (Phase 0.5–3) #2): positive + mut 1a (no Without) + 1b (no With) + 2 (tautology) + 3 (exemption load-bearing).
  • Design.md приведён в консистентность: «date cutoff» → «allowlist» в §3/§5/§6/§7/§10; §3 DECIDED; §8/Class LANDED.
  • SSOT docs(research-patches): commit 3 patches from 2026-05-16 autonomous research session #55 (ADAPT) зарегистрирован в этом же коммите.

Как проверить

§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 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. No skill forced to change.

Follow-up (orchestrator, separate)

  • open-questions.md §13.36 (TDD-for-Skills extension, ARMED) → mark RESOLVED after merge.

…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).
@artyhoo
artyhoo merged commit 927115e into main May 21, 2026
20 checks passed
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.
@artyhoo
artyhoo deleted the feat/principle-15-skill-paired-negative-v2 branch May 22, 2026 18:10
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 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.
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