D36 No-Vector Staging Zone — Review Answers Freeze (2026-05-25)
D36 No-Vector Staging Zone — Review Answers Freeze Report
Macro:
D36_NVSZ_REVIEW_ANSWERS_FREEZEDate: 2026-05-25 Status: PASS — answers recorded, consistency check clean, no production mutation, no migration, no collection creation. Authors of the answers: user + GPT (per Q15: gpt-first). Parent design package:ops/d36-no-vector-staging-zone-design/(docs00-…through08-…, total 1928 lines pre-edit + freeze section added).
This report is the durable record that the design phase of the No-Vector Staging Zone addendum (Phụ lục Điều 36) is now frozen for GPT review. No implementation work proceeds until GPT review is delivered and Macro A is explicitly authorised.
1. Approved answers Q1–Q15
answers:
Q1: A # iu_core schema
Q2: A # two-table split: iu_staging_record + iu_staging_payload
Q3: approve # per-kind retain_days defaults stand as proposed
Q4: approve # approval requirement matrix stands as proposed
Q5: A-as-sidecar # vector eligibility delivered as sidecar policy table,
# NOT as ALTER TABLE column-add on collection_registry
Q6: B # no PG text-search over staging payloads in phase 1
Q7: B # no per-actor scoping; rely on actor column + audit
Q8: A # idempotency_key = md5(source_ref ‖ staging_kind ‖ suffix)
Q9: A # event_domain = 'staging'
Q10: 10MiB # per-part payload cap; blob_ref for larger
Q11: A # substrate-only; no Directus UI in phase 1
Q12: B # no standardised promotion; permanent data re-authored
Q13: approve # names baked in as proposed (SPE-NVS, COL-IUS-001/002, etc.)
Q14: approve # 3-macro packaging A / B / C approved
Q15: gpt-first # GPT review before any implementation macro
Interpretive notes for each answer are recorded inline in
08-review-questions-before-implementation.md and bind future
implementation macros.
2. Design consistency check (docs 01–07)
The freeze cross-checks each approved answer against the other seven design docs. Every "same" cell in the compatibility matrix and every contract clause in the architecture / vector-exclusion / birth / MARK docs remains coherent under the recorded answers.
| Answer | Affected docs | Consistency | Notes |
|---|---|---|---|
Q1 A — iu_core schema |
01 §5, 03 §10, 05 §3 | consistent | All three docs already proposed iu_core |
| Q2 A — two-table split | 03 §1–§3 | consistent | Two-table sidecar is the design's centrepiece |
| Q3 approve — retain_days | 03 §10, 05 §1, 07 P5.1 | consistent | Per-kind table in §Q3 is the source of truth |
| Q4 approve — approval matrix | 03 §6, 06 §3 | consistent | Matrix carried into MARK integration unchanged |
| Q5 A-as-sidecar — vector eligibility sidecar | 02 row "collection_registry entry", 04 §2 Layer-1, 07 P3.1 | rewrite carried forward into Macro A | See §3 below |
| Q6 B — no text search | 04 §6, 07 P10 | consistent | Already filed as out-of-scope |
| Q7 B — no per-actor scope | 02 row "Permissions / role", 03 (no RLS columns) | consistent | owner_actor retained for audit only |
| Q8 A — md5 idempotency key | 03 §2 idempotency_key, 06 §7 | consistent | Mirrors 25000x precedent |
| Q9 A — event_domain='staging' | 02 row "Audit trail", 04 §1, 05 §5 (5 event types) | consistent | New domain value enumerated everywhere |
| Q10 10MiB — payload cap | 03 §10, 04 (blob_ref path) | consistent | blob_ref path already specified for overflow |
| Q11 A — substrate-only Directus | 02 row "Directus exposure", 05 §3, 07 P10 | consistent | Option B explicitly deferred |
| Q12 B — no promotion path | 02 §4, 07 P10 | consistent | Promotion explicitly forbidden as design narrowness |
| Q13 approve — names | 01 §5, 05 §2–§4 | consistent | All names baked in |
| Q14 approve — 3-macro packaging | 07 §11 | consistent | Macro A/B/C scopes confirmed |
| Q15 gpt-first | 07 §12 STOP gate | consistent | Already the listed review gate |
Verdict. 14 of 15 answers are consistent without modification to any design doc. One answer (Q5) carries a doc-level rewrite forward into Macro A authoring; no design doc requires editing inside this freeze macro.
3. Carry-forward — Q5 A-as-sidecar rewrite into Macro A
Q5 A-as-sidecar means: do not deliver vector eligibility by adding a
column to collection_registry. Instead, deliver it as a sidecar
policy table (PK = FK to collection_registry), e.g.
collection_registry_vector_policy. The design docs need three
small rewrites at Macro A authoring time (not in this freeze macro):
| Doc | Section | Current text (paraphrase) | Macro A rewrite (paraphrase) |
|---|---|---|---|
02-governance-compatibility-matrix.md |
row "collection_registry entry" |
"Required, with purpose" + implicit vector_eligible column |
Same purpose contract; vector_eligible lives in the sidecar joined via view v_collection_registry_with_vector_policy |
04-vector-exclusion-contract.md |
§2 Layer-1 row "collection_registry row" |
"vector_eligible = false (new column proposed)" |
"vector_eligible = false read via sidecar collection_registry_vector_policy (PK=FK)" — Layer-1 semantic unchanged |
07-implementation-backlog.md |
P3.1 | "Add vector_eligible boolean DEFAULT true NOT NULL to collection_registry" |
"Create sidecar collection_registry_vector_policy(collection_code PK FK, vector_eligible boolean NOT NULL DEFAULT true) + read-side view." |
Fallback. If a live survey during Macro A authoring proves the
sidecar is incompatible (e.g. unavoidable hot-path join cost in the
vector connector or a registry cardinality issue), the design may fall
back to direct column-add — but only with an explicit follow-up
addendum recording the survey result. This is the textual meaning of
"A-as-sidecar … unless sidecar proves incompatible".
The carry-forward is recorded in 08-…-review-questions.md §"Design
frozen for GPT review" so GPT review sees it.
4. Hard prohibitions (until Macro A is authorised)
Per the freeze macro's own scope:
| Prohibition | Status this macro |
|---|---|
Author migration NNN_iu_staging_substrate.sql |
NOT done |
Create iu_staging_record |
NOT done |
Create iu_staging_payload |
NOT done |
Register species SPE-NVS |
NOT done |
Register collections COL-IUS-001 / COL-IUS-002 |
NOT done |
Add DOTs to dot_iu_command_catalog |
NOT done |
| Change Qdrant / AgentData vector behavior | NOT done |
| Touch any production data | NOT done |
| Apply any SQL to any database | NOT done |
Result: zero production mutation in this macro. Every effect of this macro lives in two markdown files only:
ops/d36-no-vector-staging-zone-design/08-review-questions-before-implementation.md(answers block + freeze section appended).- This freeze summary report (uploaded to KB at
knowledge/current-state/reports/d36-no-vector-staging-zone-review-answers-freeze-2026-05-25.md).
5. Doc package — final state
ops/d36-no-vector-staging-zone-design/
├── 00-survey-current-birth-governance-vector.md 258 lines (unchanged)
├── 01-d36-no-vector-staging-zone-addendum.md 157 lines (unchanged)
├── 02-governance-compatibility-matrix.md 118 lines (unchanged; Q5 carry-forward noted in 08)
├── 03-sql-nosql-staging-architecture.md 297 lines (unchanged)
├── 04-vector-exclusion-contract.md 181 lines (unchanged; Q5 carry-forward noted in 08)
├── 05-birth-protocol-plan.md 255 lines (unchanged)
├── 06-mark-workflow-integration.md 215 lines (unchanged)
├── 07-implementation-backlog.md 188 lines (unchanged; Q5 P3.1 carry-forward noted in 08)
├── 08-review-questions-before-implementation.md [updated] (answers + freeze section appended; 383 lines)
└── reports/
└── d36-no-vector-staging-zone-review-answers-freeze-2026-05-25.md [this report; 200 lines]
6. Next gate — GPT review
Per Q15 gpt-first, the design package now travels to GPT review.
Required output from GPT review (recorded in a future report under
reports/):
- Per-doc review verdict (00–08) — accept / accept-with-notes / reject.
- Explicit verdict on the Q5 sidecar carry-forward (§3 above).
- Any additional design holes spotted (in particular: the Layer-1/2/3/4 defence-in-depth of the vector exclusion contract, the approval-required matrix, and the cleanup contract's no-orphan-vector invariants).
- A go/no-go on Macro A authoring (substrate + birth + DOTs +
healthcheck + tests, per
07-…-backlog.md§11).
Until that GPT review report exists and the user authorises Macro A, the implementation backlog stays frozen.
7. Lessons + memory hooks (no new lessons in this macro)
No new feedback memories are written from this macro — every decision recorded here is sourced from prior lessons:
- Sidecar over column-add → 15000x
feedback-sidecar-over-column-add-for-live-infra. - Two narrow sidecars beat one wide → 18000x
feedback-two-narrow-sidecars-over-one-wide-sidecar. - Honest partial > fake pass → 40000x
feedback-honest-partial-over-fake-pass. - pg_hba local trust unblocks owner-applies → 70000x
feedback-pg-hba-local-trust-unblocks-role-channel. lifecycle_statusnotstatus→ 70000xfeedback-information-unit-status-column-is-lifecycle-status.- event_outbox JSONB column =
safe_payload→ 70000xfeedback-event-outbox-jsonb-column-is-safe-payload. - Idempotency key = md5(source‖kind‖suffix) → 25000x
feedback-idempotency-key-for-event-driven-compose. - Trigger fns only callable via triggers → 70000x
feedback-trigger-functions-only-callable-via-triggers.
A short project memory will summarise that the freeze landed; no new feedback / reference memories are needed.
8. Pass criteria — checklist
- Q1–Q15 answers recorded in
08-…-review-questions.md - Per-answer interpretation block added
- "Design frozen for GPT review" section added to
08-… - Design consistency check across docs 01–07 PASSED (one Q5 doc-rewrite carried forward into Macro A; no other rewrites required)
- Freeze summary report written (this file)
- Report uploaded to KB at
knowledge/current-state/reports/… - No migration authored
- No
iu_staging_record/iu_staging_payloadcreated - No DOT registered / no Directus collection registered
- No Qdrant / AgentData mutation
- No production mutation
Result. D36_NVSZ_REVIEW_ANSWERS_FREEZE_PASS.