You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Agents now write most code and most tests here. Two consequences drive this effort:
Test strength: agent-written tests are example-based and optimized to pass — we need tests-of-tests (properties, fuzz, mutation score) and deliberately provoked failure modes (races, compat breaks) so weak tests can't hide.
Design principles for every chunk (the patterns that already work in this repo):
Something enumerates N — coverage claims derive from a registry (PUBLIC_COMMANDS, help topics, error codes), never a hand-picked list.
Ratchets over absolutes — new metrics start non-gating, then only tighten.
Quiet by default — PR surfacing shows only thresholded deltas in one sticky comment (evolve scripts/size-report.mjs, no new bots).
Guards explain the fix — every new failure message names the command or file that resolves it.
Descope (2026-07-28)
A scope review split these tracks into two kinds of gate: PR-time, deterministic, self-explanatory failures (they replace the reviewer and make agents productive) and scheduled telemetry someone must read (it consumes the one maintainer). The first kind stays; the second is cut or deferred until a concrete consumer exists. Decisions:
SkillGym is dropped. Two parallel LLM-judge suites answered one question; the help-conformance bench is now the single non-gating small-model oracle. test/skillgym/ and the check-affected lane are removed.
obs: scheduled-lane health, freshness telemetry, and standard artifact envelope #1430 (scheduled-lane health) is closed not-planned. It monitored the scheduled lanes; with the paid bench still ungated and mutation's scale undecided, a monitoring stack for the test stack is premature. The minimal lane-envelope that already shipped stays as-is.
Worker coordination rules (added after the first PR wave, 2026-08-01)
The first wave (#1436, #1437 merged, #1438, #1439, #1441) validated the direction — real Stryker, real fast-check, real producers, and two real production bugs already found (#1433 excess positionals; the replay quoted-token SyntaxError leak). It also produced one systemic failure worth a standing rule:
One issue per PR. Three PRs each shipped their own parallel implementation of obs: scheduled-lane health, freshness telemetry, and standard artifact envelope #1430's health watcher as a rider (three directory names, two identical workflow filenames, two undisclosed issues: write grants). If your lane needs a sibling issue's deliverable, implement only the minimal interface your lane consumes and link the sibling — never the sibling's feature.
CI-scope changes are decisions, not side effects. Anything that adds work to the PR gate (a fast sweep, a path-triggered mutation run) is disclosed in the PR body with its measured cost.
Subprocess-spawning tests go in the subprocess-stub project. Never unit-core.
Track E — gate integrity (added from external review, 2026-07-27; narrowed 2026-07-28)
The original tracks assumed the gates keep running. Nothing proved it — the most dangerous failure mode is a perfectly designed gate that silently stops running (verified instances: CHECK_CATALOG.ciJobs are unchecked manual strings; ci.yml ignores website/**, unreachable for the docs gate as first scoped).
gate-of-gates: derived manifest proving every check is owned, wired, and reachable #1429 gate-of-gates, minimal form: derived, transitive workflow → action → script → suite manifest proving every check is owned, wired, and reachable; deterministic/offline on PRs, with branch-protection contexts audited separately by a scheduled read-only online check
The remaining platform manifests (macOS, web, Linux, tvOS, visionOS) are tracked as checkboxes on #1426 rather than as stub issues.
Architecture direction (written down)
The rule → gate → ledger mapping behind these tracks lives in CONTEXT.md § "Principles and their gates" (#1428): Dependency Rule → layering R1–R3/spine + the R6 TYPE_INVERSION_BASELINE ratchet (long-term target: zero), acyclicity → R4 + depgraph's tolerated-cycle report, policy×detail → the two registries + leak guard + transport seam, information hiding → R7, and the boundaries-are-earned norm (#1409 evidence). Component metrics (instability/abstractness/main-sequence per zone) were headed for #1423 as observatory data; with the descope they stay out until a consumer exists, and must never become CI thresholds. Standing direction alongside these tracks: shrink R6, then the deferred client-types narrowing and legacy alias drops (CONTEXT.md § Deferred).
Sequencing notes
(2026-07-28: entries referencing descoped issues — the #1423 → #1424 → #1425 chain and "#1430 before the scheduled lanes" — no longer apply.)
Why
Agents now write most code and most tests here. Two consequences drive this effort:
Design principles for every chunk (the patterns that already work in this repo):
PUBLIC_COMMANDS, help topics, error codes), never a hand-picked list.scripts/size-report.mjs, no new bots).Descope (2026-07-28)
A scope review split these tracks into two kinds of gate: PR-time, deterministic, self-explanatory failures (they replace the reviewer and make agents productive) and scheduled telemetry someone must read (it consumes the one maintainer). The first kind stays; the second is cut or deferred until a concrete consumer exists. Decisions:
test/skillgym/and the check-affected lane are removed..adformat, and replay is the product. This is the most product-critical open item in the umbrella.Track A — test strength
Track B — gate tightening
Track C — observatory (descoped 2026-07-28)
obs: repo-health snapshot command aggregating existing analyzers into one JSON #1423 repo-health snapshot command— landed (obs: repo-health snapshot command aggregating existing analyzers into one JSON #1471), then removed with the descope (see above)obs: evolve the size-report PR comment into a quiet quality-delta comment + metric history on main #1424 quiet quality-delta comment + metric history on main— closed not-planned; PR obs: quiet quality-delta PR comment + repo-health metric history on main #1477 closedTrack D — parity + scheduled benches
Worker coordination rules (added after the first PR wave, 2026-08-01)
The first wave (#1436, #1437 merged, #1438, #1439, #1441) validated the direction — real Stryker, real fast-check, real producers, and two real production bugs already found (#1433 excess positionals; the replay quoted-token SyntaxError leak). It also produced one systemic failure worth a standing rule:
issues: writegrants). If your lane needs a sibling issue's deliverable, implement only the minimal interface your lane consumes and link the sibling — never the sibling's feature.src/__tests__/test-utils/property-arbitraries.tsandscripts/lib/lane-envelope.ts.subprocess-stubproject. Neverunit-core.Track E — gate integrity (added from external review, 2026-07-27; narrowed 2026-07-28)
The original tracks assumed the gates keep running. Nothing proved it — the most dangerous failure mode is a perfectly designed gate that silently stops running (verified instances:
CHECK_CATALOG.ciJobsare unchecked manual strings; ci.yml ignoreswebsite/**, unreachable for the docs gate as first scoped).workflow → action → script → suitemanifest proving every check is owned, wired, and reachable; deterministic/offline on PRs, with branch-protection contexts audited separately by a scheduled read-only online checkobs: scheduled-lane health, freshness telemetry, and standard artifact envelope #1430 scheduled-lane health, freshness telemetry, and standard artifact envelope— closed not-planned (descope).adformat replay customers depend onThe remaining platform manifests (macOS, web, Linux, tvOS, visionOS) are tracked as checkboxes on #1426 rather than as stub issues.
Architecture direction (written down)
The rule → gate → ledger mapping behind these tracks lives in CONTEXT.md § "Principles and their gates" (#1428): Dependency Rule → layering R1–R3/spine + the R6
TYPE_INVERSION_BASELINEratchet (long-term target: zero), acyclicity → R4 + depgraph's tolerated-cycle report, policy×detail → the two registries + leak guard + transport seam, information hiding → R7, and the boundaries-are-earned norm (#1409 evidence). Component metrics (instability/abstractness/main-sequence per zone) were headed for #1423 as observatory data; with the descope they stay out until a consumer exists, and must never become CI thresholds. Standing direction alongside these tracks: shrink R6, then the deferred client-types narrowing and legacy alias drops (CONTEXT.md § Deferred).Sequencing notes
(2026-07-28: entries referencing descoped issues — the #1423 → #1424 → #1425 chain and "#1430 before the scheduled lanes" — no longer apply.)
Pointers: docs/agents/testing.md (gate matrix + traps), scripts/check-affected/ (gate router), scripts/layering/ (R1–R8 + ratchets), scripts/depgraph/ (#1410), test/integration/ios-simulator-e2e/coverage-manifest.ts (#1408), scripts/help-conformance-*.mjs + scripts/tests/ (renderer-pinned bench gates, #1411).