CRC open rows: the progress table counts open and blocked detector rows, not only raw rows #1279
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#1279
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The CRC progress table counts every row of each wave 0 detector TSV. It does not separate rows that a structure ruling already kept from rows that are still open. In CRC run 4 the table showed holders 662 -> 667 and cycle-edges 2 -> 2, but 649 holders rows have the fact
verdict=keep, and the one cycle (S11) waits on a revisit ruling. The table showed no progress, and it hid where the open work is.Reproduce
n/a: design gap. Run the ProgressTable command in crc-refactor SKILL.md phase 1 on
docs/crc/os-sdlc; every count is a raw row count.Approach
Add
Crc::OpenRows. It joins each detector row towave0/structure-rulings.tsvand to a new filewave0/structure-governs.tsv. ProgressTable adds the columns Kind, Open, and Blocked. Delta measures open rows.Join from detector to ruling
detectorvalue and subject:<from_concept><-><to_concept>, either orderchainfact; a ruling subject matches when the chain equals it or starts with it plus.constantfactconstantfact, with or without theOsSdlc::prefixA row is a candidate when the detector is not holders, or when its
verdictfact is notkeep. A candidate row is closed when a ruling for its subject has decisionkeep, or when the ruling id is instructure-governs.tsvand that line lists the subject.structure-governs.tsvhas the headerid governs;governsis a;-separated list of subjects. A closed row is not open. A row is blocked when a file it names (path, thefilefact, or thefilesfact without:line) is listed inwave0/revisit-files.txt. A blocked row counts in Blocked, not in Open. Kind isinventoryfor holders and error-lineage,defectfor the others.baseline.jsonstores the open counts under the keyopenat the first render. Whenbaseline.jsonhas noopenkey, the Delta cell is-.Do not add a column to
structure-rulings.tsv. Another session appends rows to it.Required work:
open_paths(the files of every open row, for the census scope ticket) — check: presentclass OpenRowsinplugins/os-sdlc/lib/os_sdlc/crc/open_rows.rb"Open"inplugins/os-sdlc/lib/os_sdlc/crc/progress_table.rbwave0/structure-governs.tsvand says when to add a line to it — check: presentstructure-governs.tsvinplugins/os-sdlc/skills/crc-refactor/SKILL.mdAcceptance criteria
cycle Brief<->Dispatch keep, when the table renders, then the cycle-edges row shows Now 2 and Open 1.verdict=keep, when the table renders, then that row does not count in Open.verdict=promotefor constantProject::Config, when no ruling namesProject::Config, then it counts in Open; when apromote Project::Config keepruling exists, then it does not.OsSdlc::Loud::Errorand astructure-governs.tsvlineS31 Loud::Error;Lint::Errorwhere S31 has decision keep, when the table renders, then that row does not count in Open.@result.report.calland a rulingreach @result.report keep, when the table renders, then that row does not count in Open.filefact is listed inwave0/revisit-files.txt, when the table renders, then the row counts in Blocked and not in Open.inventoryfor holders and error-lineage anddefectfor cycle-edges and reach-through.baseline.jsonwith noopenkey, when the table renders, then each Delta cell is-; given one withopencounts, then Delta is Open now minus Open at baseline.structure-rulings.tsvand norevisit-files.txt, when the table renders, then Open equals the candidate count and Blocked is 0.Owner sketch
ProgressTable builds one OpenRows from its
run_dirand callsopen(name)andblocked(name)per detector.Origin
VERDICT: CREATE
Work started (session c1bedec6). Branch crc-os-sdlc-run-4 in worktree .claude/worktrees/crc-os-sdlc-run-4 (persistent mode: the session runs inside that worktree). #1280 follows after this ticket merges. The revisit-rows session must not edit progress_table.rb, open_rows*, or census*.
Resolution
Done: Crc::OpenRows and OpenRows::Row added; ProgressTable renders Kind, Open, Blocked, and Delta (open) columns; SKILL.md phase 1 names wave0/structure-governs.tsv.
Evidence: Commit
27213351on crc-os-sdlc-run-4, implementation 140 (10 dispatches, 11 min 28 s), suite gate green. Real-data render on docs/crc/os-sdlc: reach-through open 17 blocked 5, holders open 5 blocked 1.Follow-ups: #1281 (revisit check before ruling check; structure-rulings is not a detector)