Age signal for the temporary tier: commit-age vs mtime for untracked artifacts #48
Labels
No labels
P0
P1
P2
P3
bug
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
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#48
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?
Map: #31
Blocked by: (none)
Question
#43 fixed the temporary tier as
retain_recent: 3+max_age_days: 3measured on git-commit age. But the clearest clutter in the #45 answer key —autoresearch/<run-id>/— is untracked/gitignored and therefore HAS no commit age, so a commit-age-keyed rule can never fire on it. Same likely applies to other generated-but-untracked trees.Does the temporary tier need a second age signal (mtime) for untracked paths, a per-rule
age_sourcefield, or a different measure entirely? Whatever this concludes either amends or supersedes #43 — record it (ADR if it changes the rulebook schema from #40).Note the user's stated preference: mtime is simple and sufficient; parsing timestamps out of directory names (
260703inclassic-260703-1522) is overly complex by comparison.RESOLUTION: #43's age-signal decision stands unamended — this ticket sharpens one definition rather than superseding anything.
The premise was a misread. #43 point 5 already specifies the fallback: age = git commit time, falling back to filesystem mtime for untracked files. mtime-alone was rejected there because clone/branch-switch resets mtimes — an objection that does not apply to the fallback, since untracked files don't exist in a fresh clone and checkouts don't rewrite them. So untracked artifacts (autoresearch runs, scratch notes) are covered, and no per-rule age_source field is needed.
Sharpened definition — directory-entry mtime. For a directory-rule entry that is untracked (e.g. autoresearch/improve-260710-1057/), its mtime is the directory inode's own mtime (one stat), NOT a recursive max-mtime walk. Rationale: the temporary tier's failure mode is self-healing — a spuriously bumped mtime merely delays deletion one round — so the cheap signal suffices. Decided with the user (option A).
No rulebook schema change (#40 untouched), so no ADR needed. #46 should fold the sharpened definition into the spec's temporary-tier section.
jared referenced this issue2026-07-14 19:58:51 +00:00