Skip to content

docs: materialize the project glossary, and close the two latent mawk-interval sites - #3062

Merged
kyle-sexton merged 2 commits into
mainfrom
claude/pocock-steering-course-00zkvd
Aug 20, 2026
Merged

docs: materialize the project glossary, and close the two latent mawk-interval sites#3062
kyle-sexton merged 2 commits into
mainfrom
claude/pocock-steering-course-00zkvd

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

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-format 0.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 flat docs/GLOSSARY.md placement, beside CATALOG.md and SKILL-CHEAT-SHEET.md, satisfying the ladder's step 4 ("ask when two or more plausible choices remain").

  • Seven ADOPTED terms, each a 1–2 sentence what-it-IS definition: AFK criterion, asset rush, context load, cognitive load, navigation pointer, phase boundary, primary source, secondary source, smart zone.
  • The REJECT rows recorded as rejected synonyms, each mapped to the term or doctrine that owns the concept — 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, and sycophancy (owned by nothing — recorded so it is not reintroduced as project vocabulary, with free-prose use explicitly unaffected).
  • Vocabulary only, per the glossary contract: no decisions, specs, or open questions. The reasoning stays in the lane 6 table, which the glossary cites and which now links back — the issue's third acceptance criterion.
  • Single language context, so no context map. Stated in the file so the absence reads as a decision rather than an omission.

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:

Site Unfixed behavior on mawk 1.3.3
scripts/check-changelog-parity.sh — fence probe ^ {0,3} stops recognizing code fences, so the scanner segments every changelog it reads wrongly
markdown-format.test.sh — heading probe #{1,6} stops recognizing headings, so the MD024 assertion passes vacuously — a test that cannot fail

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's PATTERN_RULES carry [^.]{0,80}(...) — the interval-then-group form that actually panics — but they reach grep -E, not awk, and that script's awk programs already avoid intervals deliberately. No change needed there; confirmed by reading its consumption sites.

Verification

  • Bounds verified in both directions under this container's mawk 1.3.4: 0/1/2/3 leading spaces match and 4 does not; 1–6 hashes match and 7 does not. A rewrite that stopped panicking while quietly widening the bound would be the same class of silent defect these fix.
  • plugins/markdown-format/hooks/markdown-format.test.shPASS=149 FAIL=0
  • scripts/check-changelog-parity.test.shPASS=82 FAIL=0
  • check-changelog-parity.sh all four modes, re-run after committing so --check-preserved had something to compare: 83 changelogs newest-first, and 50 headings compared, all preserved
  • scripts/validate-plugins.sh; generate-catalog.mjs --check / generate-cheatsheet.mjs --check — in sync
  • check-changed-skills.sh origin/main — no changed skills under plugins/*/skills/
  • markdownlint-cli2 (3 files) — 0 issues; typos clean; shellcheck and shfmt -d clean on both touched scripts
  • scripts/check-changelog-parity.sh is 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-preserved confirms it.

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_01QbfCrj3X9FfGL7VRZYmrn4


Generated by Claude Code

claude added 2 commits August 20, 2026 22:12
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

claude Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 3m 53s —— View job


Code review — /review:code-review (code-review lane)

  • Gather context (PR diff via gh pr diff, CLAUDE.md, REVIEW.md)
  • Check skip gate — PR is open, not a draft, meaningful review surface
  • Review changed files for correctness/maintainability
  • Post findings

Scope: docs/GLOSSARY.md (new), docs/upstream/aihero-course.md, plugins/markdown-format/.claude-plugin/plugin.json, plugins/markdown-format/CHANGELOG.md, plugins/markdown-format/hooks/markdown-format.test.sh, scripts/check-changelog-parity.sh.

Regex correctness (the core risk in this diff)

Manually traced both interval→interval-free rewrites against their old patterns:

  • markdown-format.test.sh (heading probe): #{1,6}##?#?#?#?#? — 1 mandatory hash + 5 optional matches the same 1–6 bound, and both patterns reject 7+ hashes via the same backtracking-to-failure path (no match position leaves a space immediately after the consumed hashes when 7 are present).
  • check-changelog-parity.sh (fence probe): {0,3}` → ? ? ?` — three independently-optional literal spaces is equivalent to {0,3}, and both correctly reject a 4-space-indented fence for the same reason (no backtracking path leaves the 4th space unconsumed while starting a fence match).

I could not execute the awk scripts directly in this sandboxed environment (only gh pr diff/view/comment/review and Read/Glob/Grep are available to this lane), so the PR's own claimed mawk 1.3.4 boundary verification (0–3/4 spaces, 1–6/7 hashes) is author-claimed and unverified by me — my check above is a static equivalence proof of the two patterns, not a test run.

CHANGELOG entry, version bump (0.11.210.11.22), and changelog heading order all check out against the diff.

Finding

docs/GLOSSARY.md isn't linked from the repo's own navigation index. The PR states the maintainer confirmed placing the glossary "beside CATALOG.md and SKILL-CHEAT-SHEET.md" for discoverability, but README's "Finding your way" section — the list that links exactly those two peers — wasn't updated to include it:

## Finding your way
- Not sure which skill to invoke? Start at the [skill cheat sheet](docs/SKILL-CHEAT-SHEET.md) — a
scan-and-go map from what you're doing to the skill to use.
- [Plugin catalog](docs/CATALOG.md) — every plugin by category, generated from the manifests and
kept in sync by CI. New plugins clear the per-plugin migration gate in
[`docs/MIGRATION-PLAYBOOK.md`](docs/MIGRATION-PLAYBOOK.md).
- [Catalog taxonomy](docs/CATALOG-TAXONOMY.md) — the category vocabulary the catalog is grouped by.

No changed line carries this (README.md isn't touched by the PR), so it's reported here rather than inline. Low cost to fix — one bullet alongside the existing two — and worth doing given the stated discoverability intent. Fix this →

No other correctness or maintainability issues found. The rejected-terms mappings in docs/GLOSSARY.md cross-checked cleanly against the lane 6 decision table in docs/upstream/aihero-course.md, and the cross-links between the two files resolve correctly.

@claude

claude Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 1m 1s —— View job


Security review complete

  • Gather context (PR diff, changed files, custom instructions)
  • Run skip-gate check
  • Review changed files for security-relevant surface
  • Post findings

Skip gate: triggered — no security-relevant surface.

This PR is two independent, self-contained changes:

  1. docs/GLOSSARY.md (new) + docs/upstream/aihero-course.md — pure prose/vocabulary documentation. No code, no executable content, no external input.
  2. plugins/markdown-format/hooks/markdown-format.test.sh and scripts/check-changelog-parity.sh — both replace an ERE interval ({0,3}, {1,6}) with an interval-free equivalent (? ? ?, ##?#?#?#?#?) in awk regexes, for mawk 1.3.3 compatibility. Verified the rewrites preserve identical bounds (0–3 optional leading spaces; 1–6 hashes) — no widening or narrowing of the match. These scripts operate on this repo's own changelog/markdown files, not on untrusted or user-supplied input, so there's no injection surface here regardless.
  3. plugins/markdown-format/.claude-plugin/plugin.json (version bump) and CHANGELOG.md — no logic 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.

@github-actions

Copy link
Copy Markdown

Last security-reviewed head: 38d5ec32a5da0d17e0033127031536223bd9e1ec. On the next push, the relevance gate compares only the commits since this SHA; delete this comment to force a full re-review.

@github-actions

Copy link
Copy Markdown

Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count.

@kyle-sexton
kyle-sexton merged commit 8934b9b into main Aug 20, 2026
50 of 51 checks passed
@kyle-sexton
kyle-sexton deleted the claude/pocock-steering-course-00zkvd branch August 20, 2026 23:37
kyle-sexton pushed a commit that referenced this pull request Aug 21, 2026
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
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.

docs: materialize the project glossary for the lane-6 adopted terms (curate-language deferred creation)

2 participants