Skip to content

Commit e70bce0

Browse files
author
endolinbot
committed
test-title-spec-spelling: spell ECMA-spec'd names as the spec spells them
Lands the panel proposed rule from endojs/endo-but-for-bots#417 round-1 (stylist juror, justice forwarded via journal entry 2026-06-03T20:38Z message-gardener-53be75): test titles that name a specification-defined surface (method, class, property, well-known symbol, RFC header, etc.) spell the surface as the spec spells it. Catalyst: round-1 finding on packages/immutable-arraybuffer/test/immutable-arraybuffer-shim-slice.test.js:238 where the title read "(TypedArray|Buffer).(slice|subArray) on freezable TypeArray" with twin misspellings (subArray for subarray; TypeArray for TypedArray). The misspelled surface names are not grep-discoverable; failure output does not identify which spec surface the test was exercising. The skill is small and project-agnostic. Composition notes link to regression-evidence, coverage-driven-testing, and adversarial-tests. Threshold note: this lands on one observation rather than waiting for a second occurrence because the rule is small, well-defined, and the panel anticipates the same shape recurring on any PR exercising spec surfaces. CLAUDE.md inventory updated.
1 parent 5c3a5da commit e70bce0

2 files changed

Lines changed: 53 additions & 1 deletion

File tree

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,6 @@ The constraint covers both **event-level** surveillance (the standing-monitor da
141141
## Current inventory
142142

143143
- Roles: `liaison`, `steward`, `general-contractor`, `monitor`, `review-queue`, `boatman`, `researcher`, `builder`, `assayer`, `cleaner`, `solicitor`, `barrister`, `justice`, `appellate`, `fixer`, `weaver`, `shepherd`, `conductor`, `designer`, `scout`, `botanist`, `major-general`, `gardener`, `evaluator`, `groom`, `investigator`, `journalist`, `librarian`, `scholar`, `timekeeper`. The `researcher` (added 2026-06-03) precedes every designer and builder dispatch by default: orchestrators (liaison, steward, general-contractor) dispatch it with the proposed downstream prompt, inline its `## Library and project references` section, and only then dispatch the actual designer or builder. See each orchestrator's *Researcher precedence on designer and builder dispatches* section. The prior single `judge` role split into three on 2026-05-21: `solicitor` (designer work; design panel), `barrister` (builder work; first code-panel round), `justice` (fixer work; code-panel re-runs); `roles/judge/AGENT.md` is retained as a redirect. The `appellate` lands the same day to appeal `follow-up` and `acknowledge` dispositions on small-and-in-context items into `summary-fix` before un-draft. Plus the jury-seat roles dispatched by the three judges: a code panel for source-touching PRs and a design panel for design-only PRs (paths under `<project>/designs/`). See each judge's role file under `roles/<solicitor|barrister|justice>/AGENT.md` for the panel composition; the orchestrator never dispatches a juror seat directly.
144-
- Skills: `journal-sync`, `self-improvement`, `em-dash-style`, `relative-paths`, `no-latin-shorthand`, `agent-termination`, `rule-elision-test`, `inbox-drain`, `autonomous-loop-pacing`, `github-activity-poll`, `pr-ci-watch`, `review-queue-poll`, `rebase-before-followup`, `review-feedback-followup-commits`, `pr-review-thread-replies`, `pr-formation`, `pr-handoff`, `pr-creation-flow`, `pr-dependency-graph`, `pr-dependency-topo-sort`, `yarn-lock-separate-commit`, `pre-pr-checklist`, `regression-evidence`, `coverage-driven-testing`, `adversarial-tests`, `saboteur-adversarial-review`, `panel-review`, `ci-status-summary`, `ci-runtime-comparison`, `conflict-resolution`, `cherry-pick-followup`, `rebase-hygiene-audit`, `worktree-per-pr`, `process-documents`, `prompt-section-discovery`, `benchmark-comparative-report`, `verify-upstream-state-before-pinning`, `reactji-acknowledgment`, `changeset-discipline`, `rename-discipline`, `monitor-arming`, `context-library`, `journalism`, `dispatch-worktree`, `scheduling`, `velocity-recalibration`, `roadmap-projection`, `dependency-graph-maintenance`, `groom-open-questions`, `design-queue-drift-check`, `design-to-pr-pipeline`, `garden-ab-evaluation`, `merged-pr-feedback-watch`, `library-lookup`, `retcon`, `design-dependency-walk`, `stacked-pr-build`, `gap-revealing-build`, `at-mention-surveillance`, `job-board`, `pre-push-gates`, `node-lts-window-watch`, `panel-hints`, `frozen-base-branch`, `node-parity-test`, `cleaner`, `gardener-inbox-error-reporting`, `driver-pr-creation-state-machine`, `driver-design-only-pr-workflow`, `prompt-on-failure-capture`, `activity-feed-watcher`. The last six are the script-orchestrated PR-creation flow's agent context (per [designs/driver.md](designs/driver.md)); the executable counterparts live under `scripts/`. Per-project monitor reaction skills (`monitor-endo`, `monitor-endo-but-for-bots`, `monitor-agoric-sdk`, `monitor-cosgov`, `monitor-garden`) live alongside but are configuration for the `monitor` role rather than independently reusable procedures. `monitor-garden` is the only one whose dispatched subagent runs as `liaison` rather than `monitor`; see that skill's *Dispatch role asymmetry* for why.
144+
- Skills: `journal-sync`, `self-improvement`, `em-dash-style`, `relative-paths`, `no-latin-shorthand`, `agent-termination`, `rule-elision-test`, `inbox-drain`, `autonomous-loop-pacing`, `github-activity-poll`, `pr-ci-watch`, `review-queue-poll`, `rebase-before-followup`, `review-feedback-followup-commits`, `pr-review-thread-replies`, `pr-formation`, `pr-handoff`, `pr-creation-flow`, `pr-dependency-graph`, `pr-dependency-topo-sort`, `yarn-lock-separate-commit`, `pre-pr-checklist`, `regression-evidence`, `coverage-driven-testing`, `adversarial-tests`, `saboteur-adversarial-review`, `panel-review`, `ci-status-summary`, `ci-runtime-comparison`, `conflict-resolution`, `cherry-pick-followup`, `rebase-hygiene-audit`, `worktree-per-pr`, `process-documents`, `prompt-section-discovery`, `benchmark-comparative-report`, `verify-upstream-state-before-pinning`, `reactji-acknowledgment`, `changeset-discipline`, `rename-discipline`, `monitor-arming`, `context-library`, `journalism`, `dispatch-worktree`, `scheduling`, `velocity-recalibration`, `roadmap-projection`, `dependency-graph-maintenance`, `groom-open-questions`, `design-queue-drift-check`, `design-to-pr-pipeline`, `garden-ab-evaluation`, `merged-pr-feedback-watch`, `library-lookup`, `retcon`, `design-dependency-walk`, `stacked-pr-build`, `gap-revealing-build`, `at-mention-surveillance`, `job-board`, `pre-push-gates`, `node-lts-window-watch`, `panel-hints`, `frozen-base-branch`, `node-parity-test`, `test-title-spec-spelling`, `cleaner`, `gardener-inbox-error-reporting`, `driver-pr-creation-state-machine`, `driver-design-only-pr-workflow`, `prompt-on-failure-capture`, `activity-feed-watcher`. The last six are the script-orchestrated PR-creation flow's agent context (per [designs/driver.md](designs/driver.md)); the executable counterparts live under `scripts/`. Per-project monitor reaction skills (`monitor-endo`, `monitor-endo-but-for-bots`, `monitor-agoric-sdk`, `monitor-cosgov`, `monitor-garden`) live alongside but are configuration for the `monitor` role rather than independently reusable procedures. `monitor-garden` is the only one whose dispatched subagent runs as `liaison` rather than `monitor`; see that skill's *Dispatch role asymmetry* for why.
145145

146146
The `liaison` and `steward` are the two top-level orchestrator postures. When a user is in the loop (this terminal session), the liaison runs with excess authority and asks before acting. When the garden runs in the bot sandbox under safe bot credentials with no user present, the steward runs with bounded authority and may act on its own. Multiple stewards can run concurrently across hosts (and even within one host) and share work load via the journal's job board (`journal/jobs/`); the claim race resolves contention without a dedicated peer-role posture. A third posture, the [`general-contractor`](roles/general-contractor/AGENT.md), is a liaison-adopted, focused, parallelized PR-pipeline orchestrator that maintains up to three concurrent PR-pipeline slots; the maintainer names a liaison session as the contractor when the focused, parallel design-to-PR work is wanted in the foreground. The contractor holds the steward's bounded authority bounds. See `roles/liaison/AGENT.md` § Posture, `roles/steward/AGENT.md` § Posture, and `roles/general-contractor/AGENT.md` § Posture for the three-posture contract.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
created: 2026-06-03
3+
updated: 2026-06-03
4+
author: gardener
5+
---
6+
7+
# Skill: test-title-spec-spelling
8+
9+
When a test title names a method, class, property, or other surface defined in a published specification (ECMA, W3C, WHATWG, IETF, etc.), spell the named surface exactly as the specification spells it.
10+
11+
## When to use
12+
13+
- A builder, fixer, or panel-juror writes or reviews test titles that name spec-defined surfaces. Common cases: tests for `TypedArray` methods, `Array.prototype` methods, `Promise` API, `Iterator`/`AsyncIterator` protocols, `Object.*` static methods, `Symbol.*` well-known symbols, DOM interfaces, fetch / Streams / URL APIs, RFC-defined headers.
14+
- A panel finding flags a misspelling in a test title under code review. The fix is mechanical; the discipline becomes citable for the next reviewer.
15+
16+
## The rule
17+
18+
The spec is the source of truth. Test titles use the spec's casing, hyphenation, and punctuation for every named surface. Examples drawn from the ECMA-262 surface set:
19+
20+
- `TypedArray` (the abstract class), **not** `TypeArray` or `Typed Array`.
21+
- `subarray` (the method on `Uint8Array.prototype` and siblings), **not** `subArray`.
22+
- `Promise.withResolvers`, **not** `Promise.WithResolvers` or `Promise.with_resolvers`.
23+
- `Array.prototype.toSorted`, **not** `Array.prototype.toSort` or `Array.prototype.sortToNew`.
24+
- `Iterator.prototype[Symbol.iterator]`, **not** `Iterator[Symbol.iterator]`.
25+
26+
The discipline applies to the surface names inside the title. Surrounding narrative text (the prose explaining what the test asserts) follows the broader prose-style conventions in `roles/COMMON.md` § Style; the rule here is specifically about the named-surface spellings.
27+
28+
## Why
29+
30+
Test titles are grep targets. A developer or panel reviewer searching the suite for `subarray` should find every test that exercises `Uint8Array.prototype.subarray`; a `subArray` typo hides the test. The same logic applies to failure-output readability: a panel reading `'(TypedArray|Buffer).(slice|subArray) on freezable TypeArray'` in the test-run output cannot immediately identify which spec surface failed.
31+
32+
A title that diverges from the spec spelling also signals (incorrectly) that the bot did not read the spec before writing the test. The spelling is the cheapest evidence that the bot's coverage is grounded in the standard's actual shape.
33+
34+
## Examples in the field
35+
36+
- 2026-06-03 round-1 finding on `endojs/endo-but-for-bots#417`,
37+
`packages/immutable-arraybuffer/test/immutable-arraybuffer-shim-slice.test.js:238`:
38+
the title read `'(TypedArray|Buffer).(slice|subArray) on freezable TypeArray'`
39+
(twin misspellings: `subArray` for `subarray`, `TypeArray` for `TypedArray`).
40+
The fixer's round-1 push aligned the title to spec spelling. The justice
41+
forwarded the discipline to the gardener via
42+
`journal/entries/2026/06/03/203800Z-message-gardener-53be75.md`.
43+
44+
## Composition with neighbouring skills
45+
46+
- `skills/regression-evidence/SKILL.md` — regression evidence answers *what does this test prove*; the title spelling answers *which spec surface does this test cover*. The two compose: a title pinned to the spec name plus a regression demonstration on a fault injection together make a test that is both grep-discoverable and load-bearing.
47+
- `skills/coverage-driven-testing/SKILL.md` — coverage selection identifies which spec surfaces need tests; this rule names how those tests are titled when they land.
48+
- `skills/adversarial-tests/SKILL.md` — adversarial tests probe seams the happy-path tests miss; the spec-spelling rule applies to adversarial titles too. An adversarial test for `Uint8Array.prototype.subarray` is titled with `subarray`, not a creative variation.
49+
50+
## Notes from the field
51+
52+
- _2026-06-03_: skill landed by gardener after the justice on `endojs/endo-but-for-bots#417` forwarded the panel's `[proposed-rule]` note per `skills/panel-review/SKILL.md` § Cite-or-propose discipline. Source juror: stylist (round 1). The catalyst is one observation; the skill lands now (rather than waiting for a second occurrence) because the rule is small, well-defined, and the panel anticipates the same shape recurring on any PR exercising spec-defined surfaces.

0 commit comments

Comments
 (0)