Files
alkgit/tasks/architecture/oq-20-lfs-row-pruning.md
T
glm-5.3-flash 38757baa98 docs(architecture): review-003 substrate re-baseline review + fixes; specs flip reviewed
Gate review for the re-baseline cycle (ADR-019..025): contradiction +
gap + staleness pass, all findings dispositioned 2026-10-20.

- C-1: ADR-013's pre-substrate ingestion + CAS composition annotated
  (superseded composition kept as the decision record; §7 CAS home is
  the substrate row transaction per ADR-019 §2)
- C-2: ADR-018's storage_root rationale superseded (record carries no
  path; impls key on repo_id), Invalid doc de-staled
- W-1: ADR-017 §2 construction shape annotated per ADR-023 §2
- W-2 pinned: pin-custody across the frozen trait seam (composition-
  internal pending-pin registry, content-addressed correlation,
  post-CAS guard commits, GC-decreed recovery) — substrate.md
- W-3 decided: put_repo seeds HEAD -> refs/heads/main in the record
  transaction (git init parity; v1 replication limitation stated in
  ADR-023 §4; the unborn-HEAD OQ-19 fixture falls out of it)
- W-4 fixed: substrate freeze-inventory member list completed (the
  five trait impls public; receive-pack composition internal)
- W-5/S-1..S-5: disk-odb staleness annotations (ADR-004/014), naming
  fix (session substrate types), deferred(scope) taxonomy covers
  booked work items, ADR-020 typo, ADR-009 peek-field note, OQ-20
  tracker task added
- OQ-19 reclassified open -> deferred(scope) (blocked on the booked
  wave item); OQ-21 blocked-on wording aligned
- Specs (6) + README + open-questions flipped draft -> reviewed;
  AGENTS.md lifecycle updated

Verification: taskgraph validate (10 tasks), cargo test, clippy
-D warnings, fmt --check, cargo doc --no-deps
2026-10-20 16:42:43 +00:00

1.4 KiB

id, name, status, scope, risk, impact, level, tags
id name status scope risk impact level tags
architecture/oq-20-lfs-row-pruning OQ-20 tracker — per-oid pruning of stale LFS reference rows pending narrow low component research
lfs
oq-deferral
demand-triggered

OQ-20 tracker: per-oid LFS row pruning (demand-triggered deferral)

Tracker for OQ-20 (deferred(scope), lfs.md's pointer-lifecycle scoping note): the v1 LFS row store scopes rows to the repo's lifetime; rows whose oids are no longer referenced by any live ref (history rewritten, branch deleted) linger until repo deletion. Per-oid pruning — dropping rows whose pointers are unreachable, via the ref-graph walk the substrate already runs for object liveness — is the future pointer-lifecycle shape that reclaims them sooner.

Blocked on (do not act before this fires)

A concrete row-volume need, or the first LFS-heavy deployment. The repo-lifetime scoping is correct v1 behavior — rows are tiny and the sweep-window semantics bound the cost of not having pruning (media may be re-protected while any row remains). This task exists so the deferral is visible in the task graph, not so anyone builds it now.

When it fires

Investigate the per-oid pruning shape (the ref-graph walk joined against the LFS rows; sweep-window interplay) through the OQ/ADR path — an ADR if the row-reclamation op becomes wire surface, a spec amendment if it stays composition-internal.