Repository navigation
Restore what the core-tier rewrites dropped before v3.0.0 #2143
Copy link
Copy link
Closed
Labels
P1High — must fix before next milestoneHigh — must fix before next milestonebugSomething isn't workingSomething isn't working
Description
Part of #2124.
An audit of the nine core rewrites under #2024 (#2060, #2063, #2065, #2066, #2069, #2071, #2072, #2073, #2074), run on 2026-10-22, compared each rule's text before the rewrite with main. One agent per rewrite; quotes spot-checked against git show. v3.0.0 ships these templates.
Classes: LC lost condition, SR strength raised (SHOULD/MAY/prefer became a plain imperative, read as MUST), MC meaning changed, RL rule lost.
Group A: restore (not deliberate)
| Template | Class | Before | Main now | Fix |
|---|---|---|---|---|
| git | SR | PRs should be small and focused | Keep a pull request to one concern | add (SHOULD) |
| git | LC | no personal email for work repositories | one consistent work email, every repo | scope to work repositories |
| git | LC | regeneration rule for one-directional derivations only | MUST covers bidirectional too | scope to one-directional artifacts |
| git | MC | re-run after any merge bringing another branch's sources | after merging the base in | any merge that brings sources in |
| git | RL | reconcile a non-zero control diff before committing | diff meaning only | restore the stop |
| git | LC | spot-check 3-5 when a fix regenerates many | always | restore the condition |
| git | RL | the approval is for that plan, not for the area | none | restore |
| measurement | LC | not ground truth if the pipeline has known or suspected bugs | not ground truth if an earlier version produced it | restore the condition |
| measurement | SR | prefer preserving the cheap result | Preserve the cheap result | restore "prefer" |
| measurement | RL | driver is pure orchestration; a stub exercises every rung | stub only | restore both |
| config | MC | validate types, ranges, formats at load time (all values) | required values only | all values; fail fast on a missing required one |
| config | MC | an empty flag never falls back to the default the user reached past | "falls back to nothing" | never fall back to a lower-priority value |
| review | LC | sort members before acting; name each misfit and its failing branch | decide a misfit separately | restore both |
| review | RL | prefer a tool whose failures are loud | none | restore (SHOULD) |
| review | RL | dispatch a verifier with the record, to reconcile | none | restore |
| review | LC | record a reversal, with its reason, in the artifact that documented the decision | record the outcome | restore |
| docs | LC | a dated record may state counts | counts only in generated blocks | exempt dated records |
| docs | LC | a single-line directive a parser reads whole is exempt from the width | only tokens, URLs, links | exempt directives |
| docs | SR | a declined candidate needs at most a line | Record a declined candidate | (MAY) |
| docs | MC | remove outdated text promptly | in the change that finds it | promptly (SHOULD), own change if unrelated |
| docs | SR | formatters SHOULD ignore generated paths | Exclude… | (SHOULD) |
| docs | RL | declare the width once | none | restore |
| quality-gates | RL | a config-level disable only for a tree-wide decision | none | restore |
| quality-gates | RL | report checks a tool could not see beside those it ran (MUST) | rationale doc only | restore |
| quality-gates | RL | a gate whose cheapest remedy is falsifying input is defective (SHOULD) | rationale doc only | restore |
| quality-gates | SR | prefer tracked-file enumeration | never the working-tree filesystem | (SHOULD), where input depends on the environment |
| quality-gates | LC | promote the first time doc-rot or a regression slips through | always | restore the trigger |
| quality-gates | RL | prefer planting into a throwaway copy with a known clean state | none | restore (SHOULD) |
| agents | SR | numbered headings are a default; a project MAY number its own way | Number the headings | (SHOULD); own numbering allowed |
| agents | LC | delegate the checklist without summarizing or skipping | execute each item in sequence | restore |
| agents | SR | avoid prose paragraphs in rule sections | no prose paragraphs | (SHOULD) |
| agents | RL | rule length creates no ADR obligation | none | restore |
| quality | LC | short inline repetition does not warrant extraction | DRY, third copy is a bug | restore the exception |
| quality | SR | talk to direct dependencies; keep together what changes together (should) | plain | (SHOULD) |
| quality | LC | fix a citation when the item closed without action or was superseded | when closing or superseding | leave citations to completed items |
| quality | SR | a probe fits an edit repeated across hundreds of identical sites | Use a probe for … many | (MAY), identical sites |
| testing | SR | MAY double unrelated dependencies | double only the unrelated ones | (MAY) |
| testing | LC | unit tests run from CI with no human step | every automated test | scope to unit tests |
| testing | RL | full regression automated (SHOULD); manual steps documented (MUST) | none | restore |
| testing | RL | smoke under 15 minutes, quick under 60 | none | restore (SHOULD) |
| testing | MC | integration tests follow a codification scheme for filtering and traceability | unit naming for all | restore for integration |
| testing | LC | in-process server for browser-driven UI journeys | wherever a test client bypasses the stack | restore the scope |
| testing | SR | an exonerated suspect is the case to distrust | retest on every uncovered platform | (SHOULD) |
| testing | SR | prefer introspection | never hardcode | (SHOULD) |
Group B: removed on purpose, general to any project — owner decides
| Template | Rule | Where it went |
|---|---|---|
| git | verify merged numbering when several PRs edit one ordered document | this repo's playbook only; the check-heading-numbers hook still ships with no template telling a project to run it |
| git | run git submodule update --init --recursive after pulling a pin bump |
playbook only |
| git | read a workflow's first run in its environment and require a verdict | playbook only |
| review | verify every claim text makes about itself by counting | playbook only |
| review | restate moved scope; read what a cited sibling shipped; resolve a cited version | playbook only |
| docs | on refresh, preserve human-entered content or fail loud (MUST) | none |
| docs | a bulk-emit --check failure reports how many entries are stale |
none |
| docs | never use ; or a bare < in a Mermaid note |
none |
| measurement | verify a measurement before tuning a gate or budget threshold | opt-in measurement template only |
| measurement | a spike that cannot clear its bar records the missing corpus | opt-in measurement template only |
| quality | port a function across languages exactly, citing the original | removed by #2082, recorded in the migration guide |
| testing | drive a diagnostic view through the production entry point | removed without a stated reason |
Done when
- Every group A row is restored, or struck with a reason
- Every group B row is decided: restored to a template, or left out with a migration-guide line
- No baseline row falls except where the added words are the restored qualifier, said in the PR
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P1High — must fix before next milestoneHigh — must fix before next milestonebugSomething isn't workingSomething isn't working
Activity
fix(git): scope the numbering check to what its hook reads (#2143)
fix(templates): restore what the core-tier rewrites dropped (#2143) (#…