Skip to content

feat(wiki): model-era aging signal — verified_model field + re-verification lint check - #178

Merged
choiyounggi merged 1 commit into
mainfrom
feat/wiki-model-era-lint
Sep 3, 2026
Merged

feat(wiki): model-era aging signal — verified_model field + re-verification lint check#178
choiyounggi merged 1 commit into
mainfrom
feat/wiki-model-era-lint

Conversation

@choiyounggi

Copy link
Copy Markdown
Owner

What

The wiki had a growth loop (insight → harvest → flush → PR) but no aging loop. Guidance about model/LLM behavior — quirk workarounds, harness-specific directives — silently rots as model generations advance (the "Sonnet 3.7 do-nots polluting Opus 4.5 context" problem). This PR adds the pruning signal; the pruning itself stays a human-reviewed act.

  • scripts/wiki-lint-model-era.js (new, report-only): flags model-coupled pages whose optional verified_model frontmatter is absent or outside the current generation as re-verification candidates. Contract: stdout pages: N, model-coupled: M, candidates: K, stderr revalidate:<file>: <reason>, exit 0/3/4. Current-generation set: --current <csv> > DEV_LOOP_CURRENT_MODELS > default opus-4,fable-5 — overridable so the checker's own list can age without editing callers.
  • AGENTS.md + templates/page.md: document the optional verified_model field. Not a REQUIRED key — absence is a signal, never an error; the 275-page corpus stays green untouched.
  • skills/wiki-lint/SKILL.md: check knowledge: non-interactive CLI stdin, LLM response completeness, externally-owned defaults #12 (info severity), fourth Phase 0 baseline command, total_weight 24 → 25, fix-protocol rule: never stamp verified_model without actually re-verifying; stamp verified_model + last_verified together or rewrite/retire the guidance.
  • tests/wiki-lint-model-era.bats (17 tests + fixtures): coupled/uncoupled detection, ## Sources/index.md/hyphenated-page-id negative controls, override precedence (CLI beats env), usage + boundary errors. Mutation-checked (regex flip reddened exactly the owning tests).

Design notes

  • Subject keywords, not quirk phrases: measured on the live corpus, explicit "model tends/may/will" phrasing appears on 3/271 pages while model-coupled subjects cover ~27/271, concentrated in platforms/tools and backend/common/llm — the phrase regex misses the real aging surface. Live run on this branch: pages: 275, model-coupled: 20, candidates: 20.
  • Deliberately NOT in the blocking CI wiki-checks step: the live corpus legitimately carries candidates; a report-only signal must not make CI permanently red.

Verification

  • Planned via wiki-plan (plans/wiki-model-era/): gate-A/gate-B ledgers green, independent plan-reviewer PASS.
  • Three independent test-quality-auditor PASSes (one per task), test-floor pass.
  • Full bats suite rc=0 (1000+ tests) on the rebased base; wiki-structure-checks + wiki-lint-prohibitions green.

Follow-ups (separate PRs)

  • Re-verify + stamp or rewrite the 20 live candidates.
  • Ingest the three [no-wiki] decisions (field schema design, override precedence, schema-layer authority) into the wiki.

🤖 Generated with Claude Code

https://claude.ai/code/session_018JKZ3yrS6YpouWSoB4BaLu

…cation lint check

Model-coupled wiki pages (guidance about model/LLM behavior) age with model
generations: directives verified against one generation can become obsolete
quirk workarounds by the next, silently bloating agent context. This adds the
pruning signal the knowledge-capture loop was missing:

- scripts/wiki-lint-model-era.js (new): report-only checker flagging
  model-coupled pages (subject-keyword match, scoped outside frontmatter,
  ## Sources, link URLs, and index.md) whose optional `verified_model`
  frontmatter is absent or outside the current generation. Current set:
  --current csv > DEV_LOOP_CURRENT_MODELS > default opus-4,fable-5.
  Exit 0/3/4, summary on stdout, `revalidate:` lines on stderr. Deliberately
  NOT in the blocking CI wiki-checks step (live corpus carries ~20
  candidates by design).
- AGENTS.md + templates/page.md: document the optional field; never a
  required key — absence is a candidate signal, not an error.
- skills/wiki-lint/SKILL.md: check #12 (info), fourth Phase 0 baseline
  command, total_weight 24 -> 25, fix-protocol rule (never stamp without
  re-verifying); tests/wiki-lint-score.bats pins bumped in the same change.
- tests/wiki-lint-model-era.bats (17 tests) + fixtures: detection both
  directions, Sources/index/hyphen-id negative controls, override
  precedence, usage/boundary errors; mutation-checked.

Detection is subject-keyword based, not quirk-phrase based: measured on the
live corpus, explicit "model tends to" phrasing appears on 3/271 pages while
model-coupled subjects cover ~27/271 — the phrase regex misses the real
aging surface (platforms/tools, backend/common/llm).

Planned and executed via loop-implement/wiki-plan (plans/wiki-model-era/):
gate-A/B ledgers green, plan-reviewer PASS, three independent
test-quality-auditor PASSes, full bats suite rc=0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018JKZ3yrS6YpouWSoB4BaLu
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