docs: materialize the project glossary, and close the two latent mawk-interval sites - #3062
Conversation
Closes the lane 6 deferral. curate-language's convention ladder found no existing glossary and two plausible homes, so it deferred rather than inventing one; the maintainer confirmed the flat docs/GLOSSARY.md placement, beside CATALOG.md and SKILL-CHEAT-SHEET.md. Carries the seven ADOPTED terms with 1-2 sentence what-it-IS definitions and the REJECT rows recorded as rejected synonyms mapped to the terms that own their concepts. Vocabulary only: the reasoning stays in the lane 6 decision table, which the glossary cites and which now links back to it. Single language context, so no context map — stated in the file so the absence reads as a decision rather than an omission. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
The check 21 fix (#3005) named two further ERE-interval sites as out of its scope. Both compile under mawk 1.3.4 — they precede a literal and a bracket class, not a group, so neither hits the panic — but mawk 1.3.3 implements no intervals at all and matches the braces as literal text, degrading each silently rather than loudly. - scripts/check-changelog-parity.sh: the fence probe's ` {0,3}` becomes three optional spaces. Under 1.3.3 the unfixed form stops recognizing fences, and the scanner mis-segments every changelog it reads. - markdown-format's duplicate-heading probe: `#{1,6}` becomes one hash plus five optional ones. Under 1.3.3 the unfixed form stops recognizing headings and the MD024 assertion passes vacuously — a test that cannot fail. Both bounds verified in both directions under mawk 1.3.4: 0-3 leading spaces match and 4 does not; 1-6 hashes match and 7 does not. Swept the repo for the same shape while here. ai-slop's PATTERN_RULES carry intervals but reach grep -E, not awk, and its awk programs already avoid them deliberately — no change needed there. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
|
Claude finished @kyle-sexton's task in 3m 53s —— View job Code review —
|
|
Claude finished @kyle-sexton's task in 1m 1s —— View job Security review complete
Skip gate: triggered — no security-relevant surface. This PR is two independent, self-contained changes:
No GitHub Actions workflow files are touched, no permissions/secrets handling, no authorization logic, and no new external-input parsing. Nothing for this lane to report. |
|
Last security-reviewed head: |
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
An independent audit re-checked every claim in the two upstream SSOT documents against the actual repo state, with three fresh-context verifiers re-testing each discrepancy and one candidate finding refuted and dropped. Nine survived. aihero-shipping-course.md: - Lane Y said the marketplace-wide glossary was deferred. docs/GLOSSARY.md landed 2026-08-20 (#3062) and already defines `phase boundary`. Corrected to record the promotion, with `item` and `checkpoint` staying reference-local. - Lane D said the container close-out review "is structurally larger than a mode addition". #3027 is closed: it landed as exactly that — a tenth quality-gate lens — with all four broken mechanisms resolved in-file. - Lane D C12 claimed the branch-scoped spec lens filled the dangling consumer in decompose and ship. It did not: that consumer was container-scoped, work-items' own changelog says so, and #3027's close-out mode filled it. The quoted phrase is also gone from both skills, surviving only in changelog history. - C23 cited `.agents/` trigger text. Verified against mattpocock/skills@068b6e0: `.agents/` holds five files and none carries a domain-modeling trigger. The real source is domain-modeling/SKILL.md:3, from PR #848 — so the Lane X row, which scoped all of C21-C23 to #878/#880, is corrected too. mattpocock-skills.md: - `to-tickets` was recorded as "Influence (vocabulary)", which understated it AND disagreed with the v12 map's own PARTIAL grade. Four of Lane B's five adopted candidates are mechanics, not phrasing; only "work the frontier" is vocabulary. mattpocock-skills-v12-map.md — four rows contradicted by landed work: - row 2 called the two-axis parallel-subagent structure "Omitted"; self.md:17 IS that structure, differing only in calling it a lens rather than an axis. - row 13 called the tdd seam discipline "Not ported"; it landed at plan/SKILL.md:96 with two deliberate divergences. - row 14 called to-spec "Not ported"; C3 and C4 both landed in decompose. - the invocation-reach rule was recorded as having "no such stated invariant in our repo"; it is a named section in the invocation-mode convention doc, and the sibling SSOT already recorded it CONFIRMED — the two docs contradicted. - drift findings 1 and 2 cite questionnaire/SKILL.md:48-50. That file is 45 lines and greps clean; the text was removed in #2082 BEFORE the map was written. Both marked discharged rather than left reading present-tense. Also fixes a divergence the audit surfaced as a side effect: `phase boundary` had TWO definitions — docs/GLOSSARY.md's and execution-shape.md's — one of them in a file claiming repo-wide authority. execution-shape.md now cedes the definition and keeps only the seam-specific relation to `checkpoint`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CnzwTKoTa6xNY7iyEzMYpm
Closes #3000
Summary
Materializes the project glossary that lane 6's term adoption deferred, and — at the maintainer's direction rather than as a filed follow-up — closes the two remaining ERE-interval sites in awk regexes that PR #3058 scoped out. Two commits, kept separate so neither is buried.
Documentation and test-probe hardening only; no runtime behavior change.
markdown-format0.11.21 → 0.11.22.Fix
1. The glossary (#3000).
curate-language's convention ladder found no existing glossary and more than one plausible home, so it deferred rather than inventing one — that was the entire blocker. The maintainer confirmed the flatdocs/GLOSSARY.mdplacement, besideCATALOG.mdandSKILL-CHEAT-SHEET.md, satisfying the ladder's step 4 ("ask when two or more plausible choices remain").design concept→ shared understanding,highway / stale highway→ navigation pointer,cache(doc-restating sense) → audit-derivability's doctrine,sediment,push vs point→ point-don't-copy,grill-execute-clear, andsycophancy(owned by nothing — recorded so it is not reintroduced as project vocabulary, with free-prose use explicitly unaffected).2. The two latent mawk-interval sites. Both compile under mawk 1.3.4 — each interval precedes a literal or a bracket class, not a group, so neither hits the panic that broke check 21 — but mawk 1.3.3 implements no intervals at all and matches the braces as literal text. Each then degrades silently:
scripts/check-changelog-parity.sh— fence probe^ {0,3}markdown-format.test.sh— heading probe#{1,6}Both rewritten interval-free with identical bounds: three optional spaces, and one hash plus five optional ones.
Swept the repo for the same shape rather than trusting the two names.
ai-slop'sPATTERN_RULEScarry[^.]{0,80}(...)— the interval-then-group form that actually panics — but they reachgrep -E, not awk, and that script's awk programs already avoid intervals deliberately. No change needed there; confirmed by reading its consumption sites.Verification
plugins/markdown-format/hooks/markdown-format.test.sh— PASS=149 FAIL=0scripts/check-changelog-parity.test.sh— PASS=82 FAIL=0check-changelog-parity.shall four modes, re-run after committing so--check-preservedhad something to compare: 83 changelogs newest-first, and 50 headings compared, all preservedscripts/validate-plugins.sh;generate-catalog.mjs --check/generate-cheatsheet.mjs --check— in synccheck-changed-skills.sh origin/main— no changed skills underplugins/*/skills/markdownlint-cli2(3 files) — 0 issues;typosclean;shellcheckandshfmt -dclean on both touched scriptsscripts/check-changelog-parity.shis a repo-level script with no plugin manifest, so it takes no version bump.One self-inflicted defect caught and fixed before pushing: the new changelog entry initially replaced the
## [0.11.21]heading instead of sitting above it, absorbing that release's notes.grep '^## \['now reads 0.11.22 → 0.11.21 → 0.11.20 → 0.11.19, and--check-preservedconfirms it.Related
docs/upstream/aihero-course.md"Term adoption"🤖 Generated with Claude Code
https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4
Generated by Claude Code