feat(validation): implement decision 0025 ownership registry - #14
Merged
Merged
Conversation
Add/delete under owned prefixes now classify by path; renames take the maximum rank of both sides; executable-bit, symlink, gitlink, and other mode/type changes remain Full; unknown prefixes remain Full. docs/, tools/, and workorders/ gain language-rank prefix ownership with exact exceptions first: docs/DIAGNOSTICS.md stays compiler rank and tools/check_ci_policy.ps1 keeps language rank with its real policy gates in hygiene. test_workorder_status_boundary.ps1 moves into the hygiene group so language rank covers its consumer. Decision 0025 status flips to accepted 2026-09-23 (BDFL ruling on the review at 06a4f85); repository AGENTS.md routing text synchronized. Child-scope and stale-event-base fixtures now modify owned tools/run_fast_evidence.ps1 and honestly select Language, exercising the real workflow-health gates through an isolated gh mock with full mock-lifecycle assertions (resolve inside, unresolve after, LASTEXITCODE reset). Records the Function: drive removal discovery in AGENTS.md. Evidence: test_ci_policy.ps1 374 assertions exit 0; test_workorder_status_boundary.ps1 153 cases x2 exit 0; text hygiene 604 files exit 0; public readiness 604 files exit 0; cargo fmt --check and clippy clean.
- Pin all eight compiled-in docs at compiler rank (DIAGNOSTICS.md plus the seven schema/governance docs include_str!'d in diagnostic_catalog.rs) - Remove tools/ from the language-rank prefix table; unlisted tools default to Full. Pin only the hygiene-group scripts as language-rank literals. - tools/check_all.ps1 (the Full preflight, compiled into parser.rs) now selects Full, as do the other Full-tier consumers (run_fast_evidence, capture tests, exact-selector tests, editor fixtures) - Add compiled-target pin test: scans src/ for include_str!/include_bytes! targets under docs/ and fails if any lacks a code-level pin, so newly compiled-in docs can't silently route cheap - Fix two fixture tests to use the hygiene-script pin (check_text_hygiene.ps1) instead of the removed tools/ prefix - Update AGENTS.md routing text: no broad tools/ language ownership, literal hygiene-script allowlist, default-Full behavior
undergroundrap
marked this pull request as ready for review
September 23, 2026 07:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
Implements decision 0025 (CI routing ownership registry), accepted 2026-09-23:
100644additions/deletions under owned prefixes classify by path.docs/,tools/, andworkorders/gain language-rank prefix ownership.Read-HumCiChangesuses--no-renames).docs/DIAGNOSTICS.mdkeeps compiler rank;tools/check_ci_policy.ps1keeps language rank with its real policy gates in hygiene.test_workorder_status_boundary.ps1moves into the hygiene group, so language rank covers its consumer (BDFL ruling on 0025's open choice).AGENTS.mdrouting text synchronized. (Batched here for the same reason 0023's flip was:docs/decisions/edits are unregistered paths = Full, so a standalone docs PR would burn a ~40-minute cycle on one line.)Fixture honesty
The child-scope and stale-event-base fixtures previously forced Full through an unknown
notes/scope_probe.txt, hiding the integration-health gates they were supposed to exercise. They now modify ownedtools/run_fast_evidence.ps1and honestly selectLanguage, exercising the real workflow-health gates through a shared isolatedghmock with full lifecycle assertions (mock resolves inside each fixture, no longer resolves afterward,$global:LASTEXITCODEreset, pre-existingghfunction/alias preserved and restored).Also records a PowerShell discovery in
AGENTS.md:Remove-Item Function:global:ghsilently removes nothing; the correct removal isRemove-Item -Path 'Function:\gh'.Evidence
All run locally on the final state (commit
4fce1ec, on top of373aa47), unmasked exits:tools/test_ci_policy.ps1— 374 assertions, exit 0tools/test_workorder_status_boundary.ps1— 153 cases × 2 deterministically, exit 0tools/check_text_hygiene.ps1— 604 files, exit 0tools/check_public_readiness.ps1— 604 files, exit 0git diff --check— exit 0cargo fmt --check— exit 0cargo clippy --workspace --all-targets— cleantools/check_all.ps1 -EvidenceTier Fast— exit 0 on final committed state (~23 min local)Routing note
This PR itself routes Full under the current rules (tools/ change) — it pays Full one last time. Once merged, tools-only changes route Language. Next in queue per the sequencing: Part 1b (decision 0022 escapes), then the PID-reuse flake fix (
fix/capture-pid-identity), which will then route cheap.One task per branch; branch
fix/0025-ownership-registrycarries only this work.