docs(architecture): dissolve OQ-09's self-referential deferral

- OQ-09 resolved closed-by-default (deny-unlisted), decided on risk
  asymmetry in hand, not on a first deployment the crate itself must
  create; named reopen condition instead of a parked wait
- delete oq-09-ops-visibility-tracker.md (watch-task for an event the
  crate itself gates — never collapses)
- fix doc-lifecycle circularity: externally-owned OQs no longer block
  a spec's `reviewed` promotion
- gc-and-namespaces: "until a consumer names a requirement" reframed
  as re-entry via a new ADR, not a parked question
- README: state the corollary explicitly — facts this crate must
  create (its own first deployment/consumer) are never deciding inputs

Verified: full-text sweep for stale OQ-09 deferral/tracker references
comes up clean across docs/ and tasks/.
This commit is contained in:
glm-5.3-flash committed 2026-10-02 06:14:09 +00:00
1 parent 4b5009d85a
commit b18521a0e6
6 files changed
+75 -103

No files matched your search

+23 -18
View File
@@ -1,6 +1,6 @@
---
status: draft
last_updated: 2026-10-01
last_updated: 2026-10-02
---
# alkblobs — Architecture
@@ -54,25 +54,30 @@ there — not inherited as hedges:
## Open Questions
Tracked in [open-questions.md](open-questions.md). The Phase 0 register
(OQ-BL-01..06) is promoted there with its resolutions; three questions
(OQ-BL-01..06) is promoted there with its resolutions; two questions
remain parked — OQ-07/OQ-08 externally-owned (alkgit seam mapping,
alkfs intake; carried for visibility, gating nothing here) and OQ-09
(ops namespace-visibility default, `deferred(scope)` until the first
embedded ops deployment). **Deferral policy (the "Schrödinger's code"
rule):** a *decision this crate needs before shipping* may not be
deferred on a dependency that is itself waiting for this crate to
exist. Two parking kinds remain legitimate: `deferred(scope)` on a
deciding fact that exists independently of this crate, and
externally-owned questions (how a consumer maps onto this crate) that
gate no decision here — full definitions in the header of
[open-questions.md](open-questions.md).
alkfs intake; carried for visibility, gating nothing here). OQ-09
(namespace-visibility default) resolved closed-by-default. **Deferral
policy (the "Schrödinger's code" rule):** a *decision this crate needs
before shipping* may not be deferred on a dependency that is itself
waiting for this crate to exist. Two parking kinds remain legitimate:
`deferred(scope)` on a deciding fact that exists independently of this
crate, and externally-owned questions (how a consumer maps onto this
crate) that gate no decision here — full definitions in the header of
[open-questions.md](open-questions.md). A corollary worth restating,
because it recurs: a fact this crate must create (its own first
deployment, its own first consumer) is never a deciding input —
decisions stand on evidence in hand, and future needs reopen via named
requirements, not via waiting.
## Lifecycle
Spec docs: `draft` → `reviewed` → `stable` → `deprecated`. A doc moves
`reviewed` when every open question it references resolves and an
architecture review pass clears it; `stable` when implementation
verifies against it; `deprecated` when superseded (kept for reference).
ADRs use a separate status set (Accepted | Proposed | Deprecated |
Superseded), defined per ADR file. This tree is in `draft` pending the
first architecture review cycle.
`reviewed` when every *crate-owned* open question it references
resolves and an architecture review pass clears it — externally-owned
OQs (OQ-07/OQ-08) gate nothing here by definition and do not block the
lifecycle; their outcomes arrive through their owners' processes.
`stable` when implementation verifies against it; `deprecated` when
superseded (kept for reference). ADRs use a separate status set
(Accepted | Proposed | Deprecated | Superseded), defined per ADR file.
This tree is in `draft` pending the first architecture review cycle.