Files
alkstore/tasks/release-n1-growth-posture.md
T

79 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: release-n1-growth-posture
name: N-1 growth-posture review — conscious acceptance (or hygiene)
status: pending
depends_on: []
scope: narrow
risk: low
impact: component
level: implementation
tags: [wave-8, sqlite-engine, docs]
---
## Description
Review 001's N-1 (deferred by design to the release pass): three
engine-layer table families grow without internal hygiene caps, and
the release review must **consciously accept them or add engine-side
hygiene** (`docs/reviews/001-waves-1-2-general-review.md` §N-1, §7's
wave-6 release-review bullet):
1. `__alkstore_dead` with `dead_letter_retention_s = NULL` (the
default — the doc text is honest that retention is opt-in)
2. `__alkstore_notifications` rows pruned only at attach (D-16's 10k
cap triggers only next attach — an idle-but-listening process
never prunes)
3. `__alkstore_stream` (growth is the contract's durable-log posture;
`trim_to` is consumer-invoked per ADR-015)
None is wrong for v1; all three are documented engine-internal. The
expected disposition is conscious acceptance with the documentation
sharpened — review 001 specifically suggested the notify one "may want
an 'attach is not the only prune site' note in the sqlite engine's
docs (cadence recipes)". But the acceptance must be a *decision made
this session against the implemented engines* (the review predates
waves 3–7): re-read the three growth paths as implemented, confirm the
review's characterization still holds (the mem engine's postures are
new since — its notify/stream growth is process-lifetime-bounded by
design; say so in the record), and land the acceptance:
- The acceptance record (all three paths, per engine, with the
rationale) — `deployment.md`'s durability/growth posture is the
natural home; coordinate with `release-deployment-matrix` (this
task's outcome is an input to that pass — land the substance here,
let the matrix pass fold it into the final text).
- The notify prune-cadence note in `engine-sqlite.md` (or wherever the
engine spec's cadence guidance lives) if accepted.
- If any path instead warrants engine-side hygiene (a cap, a sweep
integration), that is a scope change — raise with the user before
building; the default is acceptance.
## Acceptance Criteria
- [ ] The three growth paths re-read as implemented (SQLite + pg +
mem); the review's characterization confirmed or corrected in
the record
- [ ] The conscious-acceptance decision recorded per engine (or a
user-approved hygiene scope change, which would be a follow-up
task)
- [ ] The notify prune-cadence note landed in the SQLite engine's docs
- [ ] The acceptance substance positioned for the deployment-matrix
final pass to fold in
- [ ] Workspace gates green (docs-only expected)
## References
- docs/reviews/001-waves-1-2-general-review.md §N-1, §7
- docs/architecture/deployment.md (Durability knobs; the matrix this
feeds)
- docs/architecture/engine-sqlite.md (the cadence-recipes home)
- docs/architecture/decisions/024-mem-engine.md (the mem postures new
since the review)
## Notes
> To be filled by implementation agent
## Summary
> To be filled on completion