Assemble the spec + ADR set #46
Labels
No Label
P0
P1
P2
P3
afk-ready
hitl
next
ready-for-agent
review
semi
waiting
wayfinder:grilling
wayfinder:map
wayfinder:research
wayfinder:task
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: jared/cc-os#46
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
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?
Map: #31
Blocked by #40, #42, #43, #44, #45, #47, #48
Question
Consolidate all resolved decisions into the os-doc-hygiene lifecycle spec plus ADR(s) recorded via /os-adr:create — the map's destination artifact.
Requirements handed to this ticket by #45 (see its Addendum 2 — authoritative)
Rule report before persistence.
:calibratepresents each proposed rule as: the glob verbatim, the paths it matches, the near-miss paths it does NOT match (the boundary), lifetime + behavior tier, and a plain-language why. The human reviews patterns and examples, not JSON schema. (The boundary requirement caught a real under-matching bug during #45 itself —autoresearch/classic-*/silently missingautoresearch/improve-260710-1057/.)Over-specificity test — the rule is the CLASS, not the PATH. A glob may hardcode a name that recurs by convention (
PRD.md,HANDOFF-*.md); it may NOT hardcode an identifier unique to one instance (a run-id, hash, or bare timestamp). A rule matching one file today is fine; a rule that can only EVER match one file is a failed generalization.Glob-breadth tie-breaker: prefer the NARROWER glob. Too-narrow fails safe (leaves clutter; the recurring pass catches it next round). Too-broad fails dangerous (deletes a keeper; not self-healing). Readability beats cleverness when the cost is one missed round.
Seed hold-out scope — MUST be stated in the spec. #45 withholds the home-repo (cc-os) seeds from judge intake, contradicting #42 ("#41 seeds enter at judge intake"). This is a one-off for calibration pass #1 only — needed so the pass is a test rather than an open-book exam. The spec must record whether the shipped protocol keeps full seed intake (current answer: yes, full intake for every run after pass #1) so a future reader does not mistake the carve-out for a permanent property.
Must assemble WITHOUT
propagate_ignore(dropped in #44).Heads-up from the rulebook-schema resolution (#40): the per-project override lives at a committed repo-root dotfile (.dochygiene-rules.json) rather than under gitignored .cc-os/ — user flagged this convention deviation as requiring its own ADR. Include it in the ADR set assembled here.
ADR INPUTS from #43 (Decide deletion confirm-gates and temporary-tier durations) — three additions to this ticket's ADR set, alongside the already-flagged repo-root-dotfile-vs-.cc-os/ ADR from #40:
(a) The auto/confirm line is drawn on RECOVERABILITY + EVIDENCE QUALITY, not on file type. Matrix: IGNORE (never walked: graphify-out/, .dochygiene/); lifetime keep (walked, never deleted); tracked+clean+rule -> auto; tracked+DIRTY+rule -> confirm (an uncommitted diff is not in git history); untracked+rule -> confirm (per #35); no rule -> unmanaged, never deleted. Separately: a classifier-judged served_when is always forced to confirm even when tracked, while a scanner-proven served_when_path may go auto.
(b) retain_recent: 3 + max_age_days: 3 as the cc-os default temporary-tier retention (newest 3 entries always kept for trajectory; 4th-or-older deleted past 3 days). Age measured from git commit time, mtime fallback for untracked — mtime alone was rejected because clone/checkout resets it and silently puts the rulebook to sleep.
(c) The determinism-promotion principle: hygiene actively recommends structural conventions (archive buckets, status frontmatter) that convert subjective served signals into deterministic ones.
Note also the additive amendments to #40's locked schema: retain_recent, served_when_path, confirm (human-only), max_age_days default 3, and the IGNORE posture. /os-adr:find confirms no existing ADR governs clean's safety tiers (only ADR-0032 touches this plugin), so none of this supersedes anything.
jared referenced this issue2026-07-14 18:14:41 +00:00
RESOLUTION: Destination artifact assembled.
Spec:
plugins/os-doc-hygiene/lifecycle-spec.md— consolidates every decision from #32–#48 into one locked design: taxonomy + IGNORE surface, rulebook schema without propagate_ignore (per #44), deletion tier matrix, temporary tier (incl. #48's directory-inode-mtime sharpening), served-signal split, determinism promotion + conventions.json, pipeline integration, the :calibrate protocol with the #45 rule-report requirements (glob verbatim / matches / near-miss boundary / tier / plain-language why; class-not-path over-specificity test; narrower-glob tie-breaker), and the calibration-pass-#1 criteria — explicitly recording the seed hold-out as a one-off for pass #1 only; every later run uses full seed intake per #42.ADR set (via /os-adr:create, indexed in docs/adr/README.md):
.dochygiene-rules.json, not.cc-os/(the #40 flag)confirm: true(the #43 flags)propagate_ignoreremoved; ADR-0017 stale-premise note logged (the #44 flag)All five requirements in this ticket's body are satisfied. Artifacts are in the working tree, uncommitted — commit is the map owner's call.