feat(stewardship): editor-duplicates gate + CODEOWNERS + CONTRIBUTING + cli/README#118
feat(stewardship): editor-duplicates gate + CODEOWNERS + CONTRIBUTING + cli/README#118
Conversation
…te guard System-level claim: the tool's source tree shall be free of editor- duplicate artifacts (` N.<ext>` filenames produced when interactive shell ops or save-as dialogs go wrong). These artifacts compile, hash, and inflate floor counts silently — a manual `find` sweep catches them today, but only retroactively. Mechanical guard lands as `editor_duplicates_locked.rs` in the follow-up commit. Same shape as `rot_prone_markers_locked`: assert the tree is clean, with a positive + negative dogfood pair and a RESERVED_DUPLICATE_PATHS escape hatch (initially empty). cert/floors.toml bumps trace_sys 28→29, trace_hlr 68→69, trace_llr 75→76, trace_test 80→81. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… + cli/README Repo-stewardship sweep for v0.1.4. Closes four review-flagged TODOs at modest cost: 1. `editor_duplicates_locked.rs` — mechanical guard against ` N.<ext>` editor-duplicate filenames (`helpers 2.rs`, `tests 2.toml`, `audit 2.yml`, etc.). Walks the workspace, fires on any basename matching the pinned regex. Same shape as `rot_prone_markers_locked`. Three tests: clean tree regression, positive dogfood (synthetic duplicate), negative dogfood (legitimate digit-bearing filename). 2. `CODEOWNERS` — single-maintainer default with cert-track paths (`cert/`, `cert/trace/`) called out separately so a future split between code and certification review is mechanical. 3. `CONTRIBUTING.md` — PR loop, local CI gates, trace-first convention, floors-only-up rule, the high-impact style snapshots. New contributors get the rules without having to back-derive them from CLAUDE.md. 4. `crates/cargo-evidence/src/cli/README.md` — taxonomy of the 24 CLI files grouped by lifecycle phase (bundle-producing vs bundle-consuming vs source-tree-inspection vs self-describing). Adding-a-new-verb checklist included. cert/floors.toml bumps per_crate.evidence-core.test_count 358→361 (+3 from the new locked test). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rface claim, CHANGELOG - **Blocker 1**: CONTRIBUTING.md's UUID workflow now points at the established `cargo evidence trace --backfill-uuids` policy and cross-references `cert/trace/README.md`'s rationale. The python3 one-liner the prior draft suggested was the exact hand-crafting form the existing policy bans (collision risk, weakens the "UUIDs are opaque" contract, tempts reading meaning into digits). Two contradictory authority docs on the same workflow is a quality-of-process regression — fixed. - **Blocker 2**: Sharpened the negative dogfood. The previous test used `mcdc_2024.rs`, which fails the duplicate regex for two independent reasons (no leading space + 4 digits exceeds the 2-digit cap). A regression that drops only the leading-space anchor would still pass. Added `mcdc_24.rs` (2 digits, no leading space) so each anchor is isolated by its own fixture. - **Minor 3**: HLR-069 now claims `surfaces = ["editor-duplicate gate"]`, matching the convention HLR-044 / HLR-046 / HLR-047 established for sibling hygiene gates. New entry in `KNOWN_SURFACES`. `cert/floors.toml` known_surfaces 21→22. - **Minor 5**: 0.1.4 hygiene-track entry added to CHANGELOG. Bundles the changes already in main from PRs #115 / #116 / #117 plus the changes landing in this PR. Per-PR cadence rather than batched release-prep PR. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Addressed in Blockers — fixed
Minor — addressed
Acknowledged, no action
|
`rot_prone_markers_locked` walks `**/*.md` (excluding `cert/trace/README.md`) and bans the `PR\s+#\d+` regex. The 0.1.4 changelog entries I just added carried 11 of those breadcrumbs, firing the gate on Ubuntu Check + every dependent job. Trace IDs (HLR-067, LLR-074, TEST-081, etc.) are the stable anchors and survive history rewrites; PR numbers don't (a project transfer or squash rebase renumbers them). The changelog now lists trace IDs only, matching the project's own "WHY-only, no rot-prone breadcrumbs" rule. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
PR β of the 0.1.4 stewardship track. Four small additive items
that close the most-load-bearing repo-hygiene TODOs from the
v0.1.3 review.
editor_duplicates_lockedintegration test — mechanicalguard against
N.<ext>editor-duplicate filenames. Walks theworkspace from the repo root, fires on any basename matching
the pinned regex
(
^.+ ([0-9]{1,2})\.(rs|toml|yml|yaml|md|json|lock)$).Same shape as
rot_prone_markers_locked: clean-treeregression + positive dogfood + negative dogfood +
RESERVED_DUPLICATE_PATHSescape hatch. Closes the recurringtrap captured in the user's
project_stray_2rs_artifactsmemory.
CODEOWNERS— single-maintainer default with cert-trackpaths called out so future role splits are mechanical.
CONTRIBUTING.md— PR loop, trace-first convention,local CI gates, floors-only-up rule, style snapshots. The
guide a new contributor needs without having to back-derive
from
CLAUDE.md.crates/cargo-evidence/src/cli/README.md— lifecycletaxonomy of the 24 CLI files (bundle-producing /
bundle-consuming / source-inspection / self-describing) with
an adding-a-new-verb checklist.
Trace
SYS-029 / HLR-069 / LLR-076 / TEST-083— editor-duplicateguard chain. New SYS because the existing rot-prone-text
(SYS-012) and walker-ban (SYS-015) cover different categories.
docs, no trace.
Floors
Test plan
cargo fmt --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspace --all-targetsRUSTDOCFLAGS='-D missing_docs -D rustdoc::broken_intra_doc_links' cargo doc --workspace --no-depscargo build --release --workspacecargo run -p cargo-evidence -- evidence trace --validate→VERIFY_OKcargo run -p cargo-evidence -- evidence floors --format=jsonl→FLOORS_OK(13/13 dimensions)cargo test -p evidence-core --test editor_duplicates_locked→ 3/3 pass🤖 Generated with Claude Code