F3 — IO Contract + Formula + Assembly Machine / DOT — Read-only Execution Report
F3 — IO Contract + Formula + Assembly Machine / DOT — Read-only Execution Report
Ngày: 2026-06-16 · Soạn: Claude Code CLI (read-only AgentData KB) · Track: knowledge/dev/laws-new/
Packet basis: f3-io-formula-assembly-dot-reuse-survey-packet.md rev1 (this run; internal gate §10 passed — see §1).
Control basis: technical-slice-framework.md rev56 (§6c F3 = D6 + D7; §6.2/§6.3; §6b rows 1/2/4/7; §4; §5; §18 ca 14/15/17/18/21; §19; S3 pin a2ab3582…889, len 117459).
Concept basis: de-bai-cai-tien.md rev33 (§II.1, §III.6/§III.7, §IV.3, §V.5/§V.10/§V.13, §VI Lego Protocol; S4 pin 6e921f0a…704, len 29088).
Catalog basis: cau-hoi-khi-tai-cau-truc.md rev82 (Nhóm G Formula, Nhóm H IO Contract, Nhóm J + §12b DOT, Nhóm 0 REUSE-, Nhóm R RISK-, CONS-002/003; S5 pin 2da1a82…342, len 145449).
Evidence/gate basis: F2 owner decision record rev1 (F2 gate CLOSED) + F2 execution report rev1 (PARTIAL) + F2 packet rev1 + F1 decision rev1 + F0 decision rev1.
Run authorization: GPT/Owner authorized the F3 Program Macro; this read-only execution ran only because the packet §10 internal gate passed (all 8 items GREEN). No Phase-1, no live DB/runtime, no implementation, no schema/registry/DOT/checker/scanner creation, no DOT registration/run, no formula run, no assembly build, no canonical birth write, no CONS-003 / CELL-* / CONS-002 resolution, no cell_id / dot_role materialization.
Layer: F3 = one layer above F2 in the §6c build order; sits below F4 (Stamp Lifecycle + Checker / Promote / Rollback, where canonical birth is the output at promote).
0. STATUS (one line at top)
STATUS: PARTIAL — F3 read-only execution is complete and honest. All F3 candidate assets are classified into Q1/Q2/Q3 from F3-critical current-pass KB evidence plus carried-pinned F0/F1/F2 authority and decision lineage, the 3 Owner questions are answered, the F3 boundary (IO Contract thin / not Module Contract First; Formula / Assembly Machine / DOT = documentary only; dot_tools wrapper-only; cell_id pending; canonical birth = F4) is held, and every forbidden action remained blocked. PARTIAL (not PASS) because every F3 asset is DOCUMENTARY_ONLY or GAP (framework §6c D6/D7: IO = DOCUMENTARY_ONLY with examples a declared GAP; formula = GAP/DOCUMENTARY_ONLY with no registry/engine and 0 DOT assemble; assembly machine = "chưa designed"; dot_tools ~309 documentary, no dot_role/cell_id), and the gating conflicts/risks (CONS-003, CELL-003/004/007, CONS-002, HOLD-1, HOLD-2, STG-012, STG-015, STG-REUSE-001/003, RISK-GC/CAP/BYPASS, DOT-CAP-001/004/006/010) remain Owner-/Phase-1-gated and are carried, not resolved. No forbidden action performed. Documentary ≠ live proof · Prior-session ≠ current proof · Engineering PASS ≠ Authority PASS · Reuse-now ≠ live-proven.
1. Status / boundary confirmation (incl. internal gate result)
Internal gate (packet §10) — result: ALL GREEN → execution authorized in-macro.
| # | Gate item | Result | Evidence |
|---|---|---|---|
| G1 | Mandatory sources readable | ✅ GREEN | F3-critical sources read/confirmed this pass: F2 report/packet/decision, framework rev56 (§6c D6/D7 + §6b + §4 + §18 + §19), de-bai rev33, catalog rev82 (Nhóm G/H/J/0/R). F1/F0 records, constitution rev44 (Đ0-B/Đ29), and operating-rules (OR) rev51 are carried-pinned from prior closed gates unless explicitly marked otherwise |
| G2 | F2 gate closed first | ✅ GREEN | reports/f2/f2-owner-decision-record-2026-06-16.md rev1 accepts F2 |
| G3 | Every F3 asset classifiable honestly | ✅ GREEN | each Q1/Q2/Q3 row pinned to a KB source; no live proof invented |
| G4 | No live DB/runtime/Phase-1 needed | ✅ GREEN | classification is documentary-only; iu_staging_* / dot_tools untouched |
| G5 | No conflict resolution needed | ✅ GREEN | CONS-003 / CELL-003/004/007 / CONS-002 carried, not resolved |
| G6 | No schema/design/implementation needed | ✅ GREEN | no cell_id/dot_role materialization; no DOT/checker/scanner/formula registry; no formula/DOT/assembly execution |
| G7 | Boundary held | ✅ GREEN | IO thin (not Module Contract First); formula/assembly/DOT documentary; dot_tools wrapper-only; no canonical birth |
| G8 | 3 Owner questions preserved | ✅ GREEN | Q1/Q2/Q3 answered in §2 |
Boundary confirmation:
- read-only only (KB read; no live DB/runtime): yes
- no live DB / Postgres / Directus / runtime / production touched: yes (
iu_staging_*/dot_toolsuntouched — HOLD-1 / documentary) - F3 scope kept to IO Contract + Formula + Assembly Machine / DOT (= D6 + D7): yes
- IO Contract kept thin (5-field) — not Module Contract First: yes
- Formula / Assembly Machine / DOT kept documentary — no registry/engine/machine, no execution: yes
dot_toolskept documentary / wrapper-only; nodot_role/cell_idmaterialization: yesTEMP_ID/candidate_idinherited from F1/F2 (no canonical birth /BIRTH_STAMPwritten): yes (F4 deferred)cell_id/ cell context kept pending; CONS-003 / CELL-003/004/007 NOT resolved (carried): yes- no DOT registered or run; no formula run; no assembly machine built; no checker/scanner created: yes
- exactly one F3 execution report document created (this file): yes
In-scope performed: pinned the documentary state of each F3 candidate from KB sources (framework §6c D6/D7, §6b, §5, §4, §18, §19; de-bai §II/§III/§IV/§V/§VI; catalog Nhóm G/H/J/0/R), classified each into Q1/Q2/Q3 with an evidence pin and a documentary-vs-live label, restated the F3 boundary, and surfaced the gating conflicts/risks as carried obligations.
2. Owner View — 3 câu hỏi reuse-first (control surface, simple)
Đọc riêng mục này là đủ để Owner/GPT biết F3 đã phân loại gì để dùng lại — không làm gì chạm hệ thống. Chi tiết kỹ thuật ở §3 trở xuống. Mục này KHÔNG ủy quyền bất cứ điều gì.
| Owner question | Answered? | Summary (from current-pass KB evidence) |
|---|---|---|
| Q1 — Cái gì đang có và (giả thuyết) dùng lại được? (reuse-now — documentary) | ✅ Yes | IO Contract 5-field (nhận·trả·schema_min·fail·rollback; de-bai §III.6/§VI.3; framework §6b r1/D6; catalog REUSE-015) = boundary concept reuse-now, không Module Contract First. Smart Brick shape inherited from F2 (de-bai §VI.1/§VI.2; framework D4). Candidate packet = view/projection (candidate_id+packet_hash; de-bai §V.13) — documentary only. Formula concept as documentary pattern (de-bai §II.1/§III.7/§VI.5) — NOT an implemented formula. Assembly Machine concept as documentary pattern (de-bai §II.1; framework D7) — NOT a runtime machine. DOT/wrapper concept + dot_tools as documentary candidate, wrapper-only (de-bai §IV.3; framework D7/§4; catalog REUSE-013/DOT-REUSE-001/002). fn_iu_cut_from_manifest ~70% reusable via wrapper (REUSE-004; maybe formula.v0.1 per FORMULA-REUSE-001). Rollback/delete-fast boundary (de-bai §VI.4). F0/F1/F2 accepted source/evidence baseline + decisions. Trung thực: "reuse-now" = ứng viên tài liệu mang sang F4 — KHÔNG = đã chứng minh live. |
| Q2 — Cái gì cần sửa/kiểm chứng mới dùng lại được? (repair / verify-before-reuse) | ✅ Yes | IO examples/templates = GAP/documentary (framework D6 "examples chưa biết", §18 ca 14; catalog IO-001 web-test UNKNOWN; CONS-002 IO-source BLOCKER). Formula per layer = GAP/documentary (D6, §18 ca 15; FORMULA-001/003/006 = no registry/engine/0 assemble; formula.v0.1 deferred). Assembly Machine not implemented (D7 "chưa designed", §18 ca 17; DOT_FORMULA_ASSEMBLE deferred). DOT coverage matrix = GAP (D7 "matrix later", §18 ca 18; only provisional Bảng 14). dot_tools lacks dot_role/cell_id; no schema patch (DOT-Q06, REG-REUSE-004; framework §19/§6.3). Checker/verdict-only not executable live (D9; spec rev11 not written = F4). Candidate packet binding depends on STG-015 packet_hash. Temp-store live substrate depends on HOLD-1. Cell context depends on CONS-003/CELL-*. Rollback/delete-fast depends on STG-012 cleanup scheduler. Runtime/checkout sync not proven (CONS-005 caveat). No Module Contract First; keep IO thin. |
| Q3 — Cái gì thật sự phải làm thêm (chỉ khi reuse không đủ)? (add-later — future Owner-gated) | ✅ Yes | Chỉ future Owner-gated, NO by default: F3 report (this doc, gate passed); IO example/template library only after reuse-insufficiency proof (never Module Contract First); formula wrapper only after source proof (no engine/registry); assembly wrapper only after proof (no machine-per-layer); DOT wrapper/mapping only after proof (no full DOT registry / DOT-CAP system); checker/scanner integration later (F4/F5, not F3); schema/materialization (dot_role/cell_id) only after proof + Owner gate; no runtime DOT registration/build by default; no canonical birth/promote (F4). Mỗi "add-new" phải chứng minh đủ 5 điều kiện no-new (catalog §2c). |
3. F3 asset classification table (consolidated — required format)
Mọi dòng dưới là ứng viên documentary (framework §6c D6/D7 = DOCUMENTARY_ONLY / GAP). Reuse verdict = mang sang F4 như giả thuyết tài liệu, không = live-proven.
| Asset | Currency | Classification | Reason |
|---|---|---|---|
IO Contract 5-field (nhận·trả·schema_min·fail·rollback) |
DOCUMENTARY_ONLY (de-bai §III.6/§VI.3; framework §6b r1 / D6; catalog REUSE-015) | Q1 (boundary concept) → Q2 (examples GAP) | brick-to-brick contract; không Module Contract First; slice examples "chưa biết" (D6); CONS-002 (which source wins) BLOCKER. |
| Formula concept | GAP / DOCUMENTARY_ONLY (de-bai §II.1/§III.7/§VI.5; framework D6; catalog FORMULA-001/003/006 ANSWERED) | Q1 (documentary pattern) / Q2 (per-layer GAP) / Q3 (wrapper only after proof) | "công thức/khuôn"; no registry/engine/0 DOT assemble; formula.v0.1 deferred (FORMULA-007); cut-as-formula = FORMULA-017 TODO. |
| Assembly Machine concept | DOCUMENTARY_ONLY / GAP (de-bai §II.1; framework D7) | Q1 (documentary pattern) / Q2 (not implemented) / Q3 (wrapper only after proof) | "máy lắp/khung chạy"; "machine per layer chưa designed"; DOT_FORMULA_ASSEMBLE deferred. |
| DOT / wrapper concept | DOCUMENTARY_ONLY (de-bai §IV.3/§V.5; framework D7) | Q1 (wrapper concept) → Q2/Q3 (no registration/run) | DOT = narrow info-completion machine (PEN/STAMP/GATE); reuse via wrapper; no DOT-per-layer / DOT-capability system. |
DOT coverage matrix / dot_tools candidate |
DOCUMENTARY_ONLY (framework D7 / §4; catalog Bảng 14, DOT-Q06) | Q2 (needs dot_role/cell_id; no schema patch) |
dot_tools ~309 rows (Đ35 paired-DOT), reported no dot_role/cell_id; "DOT Coverage Matrix later"; DOT-CAP-001/004/006/010 BLOCKER. |
fn_iu_cut_from_manifest |
documentary (~70% reusable; framework D4; catalog REUSE-004) | Q1 doc-candidate (wrapper) → Q2 (formula label) | reuse via wrapper; may be relabeled formula.v0.1 (FORMULA-REUSE-001); FORMULA-017 undefined. |
fn_iu_staging_create / fn_iu_staging_cleanup |
documentary (STG-010/011 old survey) | Q2 (documentary support) | create binds content_hash; cleanup 3-pass + dry-run; scheduler unproven (STG-012). Support for rollback/delete-fast, not primary F3 asset. |
| Candidate packet (view/projection) | documentary (de-bai §V.13; catalog STG-REUSE-002) | Q1 (view logic) / Q3 (NO new store) | packet = view/binding on existing metadata (candidate_id+packet_hash), verdict-only checker; new store = BLOCKER-if-proposed (STG-REUSE-003); binding depends STG-015. |
| Smart Brick shape (inherited F2) | DOCUMENTARY_ONLY (framework D4; de-bai §VI.1/§VI.2) | Q1 (inherited shape hypothesis) | minimal brick = input·output·IO·DOT·rollback·promote; cell pending; not implemented. |
TEMP_ID / candidate_id (inherited F1/F2) |
documentary (concept; in-scope root) | Q1 (inherited) → Q2 (live home HOLD-1) | identity the brick stands on; live home = iu_staging_* = HOLD-1; no canonical birth. |
cell_id pending context (inherited F1/F2) |
DOCUMENTARY_ONLY (concept; CONS-003 unresolved) | Q2 (dimensions) / Q3 (materialize) | tầng×loài×kho×miền; CONS-003 + CELL-003/004/007 unresolved; materialization = Owner-gated schema. |
Stamp path (IO_STAMP/VALIDATION_STAMP/ROLLBACK_STAMP; BIRTH/PROMOTE) |
DOCUMENTARY_ONLY (framework D8; de-bai §V.3/§V.5) | Not F3 deep (documentary boundary) → F4 | pre-promote stamps relevant to IO/validation/rollback; post-promote = F4; carried as boundary, not implemented. |
| Checker / verdict-only boundary (DOT-006) | DOCUMENTARY_ONLY (framework D9/§6.4; promote-checker-v0.1-spec rev11) |
Not F3 (F4 owns it) — documentary boundary | verdict-only; spec read, chưa viết/selftest; L5 BLOCKER; Atomic Promote = HOLD-2. |
| Rollback / fail / delete-fast path | DOCUMENTARY (de-bai §VI.4/§V.7; framework §6.2) | Q1 (boundary) → Q2 (depends STG-012) | ROLLBACK_STAMP; "sai thì xóa"; TTL; cleanup scheduler unproven (STG-012); RISK-GC. |
| F0/F1/F2 baseline + decisions | current-pass for F2/F3 bundle where read; carried-pinned for F0/F1/constitution/OR lineage | Q1 (accepted reuse-now) | authority/evidence basis; CONS-004 precedence; CONS-005 KB-only; F1 birth + F2 Smart Brick boundaries. Covers KB, not runtime. |
| Carried blockers (CONS-003, CELL-003/004/007, CONS-002, HOLD-1/2, STG-012/015, STG-REUSE-001/003, RISK-GC/CAP/BYPASS, DOT-CAP) | current-pass for F2/F3 bundle where read; carried-pinned for F0/F1/constitution/OR lineage (CONFLICT/BLOCKER/PARTIAL) | Carried gating obligations (Q2-gating) | block IO-source / formula / cell placement / DOT trust / packet binding / temp-store / canonical birth; Owner-/Phase-1-only; not resolved here. |
4. IO Contract 5-field analysis
- What it is (read-only): the IO Contract is the minimal in/out contract between assembly cells/bricks — exactly 5 fields:
nhận(inputs) ·trả(returns/outputs) ·schema_min(minimal schema) ·fail(how failure is returned) ·rollback(how to undo/delete) (de-bai §III.6, §VI.3; framework §6b row 1 / §6c D6; catalog REUSE-015, IO-REUSE-002). It is the contract the Lego Protocol requires for 100% of inter-brick communication (de-bai §VI.3: "các ô/miếng không giao tiếp bằng hiểu ngầm"). - Thin — NOT Module Contract First (boundary held): DOT-check and evidence/stamp are the execution/verification layer that travels with the IO Contract, not stuffed inside it if that makes it bloat (de-bai §III.6; framework §6b r1 Forbidden: "Biến IO Contract thành Module Contract First / registry system"; catalog IO-REUSE-003). Module Contract First / Federated Registry is reference-only for canonical/high-risk (de-bai §V.16).
- Documentary status: DOCUMENTARY_ONLY (framework §6b row 1; D6). The reuse substrate is the
dot_agent_api_contractpattern +tests/contracts/*(Đ30/31) + a singleio_contract.v0.1record concept (framework §5) — none implemented for a selected slice. - GAP — examples "chưa biết": real IO examples/templates for a selected slice are not yet identified (framework §6c D6 "selected-slice examples chưa biết" + Known-GAP table; §18 ca 14 REJECT "IO Contract đã đủ rõ để implement"). Catalog: IO-004/005 proved there is no contract for KB objects or candidate/staging today (ANSWERED = KHÔNG); IO-001 inventory is UNKNOWN (web-test file, not DB-queried).
- Carried conflict: CONS-002 — whether IO Contract v0.1 stays 5 field or includes DOT/evidence/owner, and which source wins — is a BLOCKER (catalog CONS-002). F3 keeps it at 5 field and carries the conflict.
- F3 action taken: recorded the 5-field boundary as a documentary brick-to-brick contract for F4, with examples flagged GAP and CONS-002 carried. No IO library, no module contract, no implementation, no slice selection.
5. Formula analysis
- What it is (read-only): a formula / khuôn / quy trình describes how to assemble one object from the direct inputs of its layer (de-bai §II.1: "công thức / khuôn / quy trình"; §III.7
DOT công thức; §VI.5 "scale bằng công thức, không bằng macro" — a layer's formula uses only that layer's direct materials, no jumping layers, no implicit coupling). It is the "công thức" cell of the matrix overlayCông thức + DOT + Governance state + IO Contract(de-bai §II.2). - Documentary status: GAP / DOCUMENTARY_ONLY (framework §6c D6: "formula = GAP/DOCUMENTARY_ONLY"; §6b: formula mapped only as a concern/reuse path around existing DOT, no per-layer formula design; §18 ca 15 REJECT "existing formula per layer đã biết"). Catalog confirms the live state: no formula registry, no formula engine, 0 DOT assemble (FORMULA-001/003/006 ANSWERED Mức 3 = "KHÔNG").
formula.v0.1deferred, not implemented: FORMULA-007 (whether v0.1 needs a formula registry) = DEFER ("KHÔNG bắt buộc; cut pipeline");DOT_FORMULA_ASSEMBLE= deferred (Bảng 14). FORMULA-REUSE-002 ("need a formula registry at v0.1?") is BLOCKER-if-proposed; default NO.- Reuse candidate (documentary):
fn_iu_cut_from_manifest(~70% reusable, framework D4) may be relabeled asformula.v0.1(the cut-pipeline as a minimal formula) per FORMULA-REUSE-001 / FORMULA-017 — but whether it must be labeled a formula is TODO ("cut hiện không gắn nhãn formula"). F3 records this as a hypothesis only. - Forbidden held (framework D6): F3 does not create a formula registry, not design any per-layer formula, not run a formula. Status recorded exactly: GAP / DOCUMENTARY_ONLY.
- F3 action taken: recorded the formula concept as a documentary pattern + the cut-as-formula reuse hypothesis + the per-layer GAP as carried obligations for a future selected-slice survey. No registry, no engine, no design, no execution.
6. Assembly Machine / DOT analysis
- Assembly Machine (read-only): the máy lắp / khung chạy is the tool that executes a formula, checks, and promotes or rolls back a brick (de-bai §II.1). Framework position: DOCUMENTARY_ONLY / GAP — "Machine per layer chưa designed"; the framework places DOT/checker/scanner as future machines, not a per-layer assembly machine (framework §6c D7; §6b row 4; §18 ca 17 REJECT "mỗi layer đã có assembly machine sẵn"). Catalog: FORMULA-006 = "0 DOT assemble"; Nhóm J is titled "DOT / Máy lắp ráp" but contains no implemented machine.
- DOT / wrapper (read-only): a DOT is a narrow machine/agent that adds or verifies one piece of governance information (de-bai §IV.3 examples:
DOT_CELL_MAP,DOT_IO_CHECK,DOT_VALIDATE,DOT_ROLLBACK_PROOF,DOT_RELATION_MAP,DOT_PROMOTE_CHECKER; §V.5 "DOT đóng dấu từng phần"). Each DOT declares minimally: what info it adds/verifies · input · output/stamp · mutate? · fail block-or-report? (de-bai §IV.3). Framework D7: DOT is only a possible machine/check/wrapper; reuse via generic DOT + config + wrapper around existing DOT (framework §5; catalog REUSE-013, DOT-REUSE-001/002). dot_toolscandidate (documentary, wrapper-only):dot_tools~309 rows (Đ35 v5.2 paired-DOT) is DOCUMENTARY_ONLY and reportedly lacksdot_roleandcell_idcolumns (framework §4 / D7; catalog DOT-Q06 ANSWERED Mức 3, REG-REUSE-004 "thiếudot_role+cell_id", REG-006/009). Attaching them is a read-only feasibility hypothesis, Owner-gated detailed design, out of scope (framework §6.3 / §19 schema-change STOP). The One-Roof scannerdot_governance_coverage_scan…does not exist (framework §4 addendum).- DOT coverage matrix = GAP: there is no complete DOT coverage matrix — only a provisional "Bảng 14 DOT (reference)" + DOT-Q01..Q12 (PARTIAL) (framework D7 "DOT Coverage Matrix later"; §18 ca 18 REJECT "
dot_toolslist đã đủ"). DOT capability is gated: DOT-CAP-001 (capability contract), DOT-CAP-004 (no-mutation flag), DOT-CAP-006 (≥8 bad-input tests, any_fail_open=false), DOT-CAP-010 (read-vs-mutate classification) are all BLOCKER. - Forbidden held (framework D7): F3 does not design a per-layer assembly machine, not build a DOT-per-layer / machine-per-layer / DOT-capability system, not create a full DOT registry, not register or run any DOT, not add
dot_role/cell_idtodot_tools. - F3 action taken: recorded the assembly-machine and DOT/wrapper concepts as documentary patterns,
dot_toolsas a documentary wrapper-only registration candidate, and the DOT coverage matrix + DOT-CAP BLOCKERs as carried obligations. No machine, no DOT registration/run, no schema patch, no live proof claimed.
7. Candidate packet / TEMP_ID / cell context handling
- Candidate packet = view, not a store: the candidate packet is view/binding logic on existing staging metadata/payload (
candidate_id+packet_hash), read by a verdict-only checker — it does not generate birth or write canonical (de-bai §V.13; catalog STG-REUSE-002). Creating a packet store/registry is BLOCKER-if-proposed (STG-REUSE-003) and forbidden by default. Its tamper-binding depends on STG-015 (packet_hashcoverage — whether it coverscell_id+ stamps) which is a BLOCKER. TEMP_ID/candidate_idinherited (held): the brick's operating identity is the minimal identity root confirmed at F1 and carried at F2 (TEMP_ID_STAMP/candidate_id/workspace_id; de-bai §V.10). F3 reuses it as the identity the IO Contract / formula / DOT operate on. Its live home isiu_staging_*= HOLD-1 (unproven). No canonical birth, noBIRTH_STAMP(de-bai §V.10; framework D10 = F4).cell_idpending (carried, not solved): the brick's minimal shape listscell_idhoặc pending cell_id (de-bai §VI.2). F3 keeps it pending —CELL_STAMPcannot be closed while CONS-003 (6-vs-7 tầng) — CONFLICT/BLOCKER and CELL-003 (layer source) / CELL-004 (species source, CONFLICT) / CELL-007 (6-tầng catalog) — BLOCKER are unresolved (catalog; constitution rev44 Đ0-B/Đ29).dot_role/cell_idondot_toolsand anycell_idmaterialization on the brick are schema changes (framework §19 STOP), not done.- F3 action taken: recorded the candidate-packet-as-view binding (with STG-015 carried), the inherited identity, and the pending cell context. No new store, no
cell_idmaterialization, no CONS-003/CELL- resolution.*
8. Rollback / fail / delete-fast handling
- What it is (documentary): every brick must be rollback/delete-able —
rollbackis one of the 5 IO Contract fields (de-bai §III.6/§VI.3),ROLLBACK_STAMPis a core pre-promote stamp (de-bai §V.3), and the kho-tạm principle is "sai thì xóa" / delete-fast with a TTL or clear cleanup condition (de-bai §VI.4: "Candidate/kho tạm phải có TTL hoặc điều kiện cleanup rõ"; framework §6.2). failfield: the IO Contract specifies how a brick returns failure (fail), and the checker is fail-closed — a missing precondition →PROMOTE_BLOCKED(de-bai §V.7; framework D9). F3 records this as a documentary boundary; the checker is not built (F4).- Documentary support functions:
fn_iu_staging_cleanup(3-pass + dry-run) is the documentary delete-fast/cleanup candidate, but who calls it is unknown — STG-012 (cleanup scheduler) — TODO/BLOCKER (nopg_cron); andblob_reforphan/cleanup is RISK-GC (OPEN). So the delete-fast fail-safe is unproven until Phase-1. - Forbidden held: F3 does not run a rollback, not create a cleanup scheduler, not query staging. Delete-fast is recorded as a documentary boundary the brick must satisfy, with STG-012 + RISK-GC carried.
- F3 action taken: recorded the rollback/fail/delete-fast path as a documentary IO/stamp boundary, with STG-012 cleanup scheduler and RISK-GC/RISK-CAP as carried Phase-1 obligations. No execution, no scheduler, no live proof claimed.
9. Evidence currency table — sources · evidence · authority · conflict · runtime · provenance · safety lock
| Obligation | F3 discharge (current-pass) | Status |
|---|---|---|
| Sources | Each F3 asset pinned to KB source (framework §6c D6/D7 / §6b r1,4 / §5 / §4 / §18 ca 14/15/17/18 / §19; de-bai §II.1/§III.6-7/§IV.3/§V.5,10,13/§VI; catalog Nhóm G FORMULA-, Nhóm H IO-/REUSE-015, Nhóm J DOT-/§12b DOT-CAP-, Nhóm 0 REUSE-004/012, Nhóm R RISK-*, CONS-002/003). Framework rev56 (S3 a2ab3582…889, len 117459), de-bai rev33 (S4 6e921f0a…704, len 29088), catalog rev82 (S5 2da1a82…342, len 145449) read/confirmed this run. |
PROVEN (KB-rev currency only) |
| Evidence | Per-asset documentary-vs-live label applied; IO = DOCUMENTARY_ONLY (examples GAP); formula = GAP/DOCUMENTARY_ONLY (no registry/engine/0 assemble); assembly = DOCUMENTARY_ONLY/GAP ("chưa designed"); dot_tools ~309 = [GR] documentary (no dot_role/cell_id); "ANSWERED" catalog rows kept documentary; reported-LIVE not promoted. |
Discharged |
| Authority | Applied F0-decided CONS-004 working precedence: KB = practical authority for laws-new/* docs; enacted constitution/OR higher (constitution rev44 Đ0-B/Đ29; OR rev51 VPS=SSOT, PG/Directus=truth); cross-class overlap = Owner gate. Constitution rev44 and operating-rules (OR) rev51 are carried-pinned authority evidence from prior closed gates, not fresh full-read evidence in the F3 macro unless otherwise stated — authority meaning unchanged: Constitution/OR remain higher authority for enacted principles, VPS remains SSOT runtime, PG/Directus remains truth for machine-enforced data. CONS-002 (IO-source) noted unresolved. No cross-class conflict newly triggered by F3. |
Carried (CONS-004 decided at F0) |
| Conflict | CONS-003, CELL-003/004/007, CONS-002, HOLD-1, HOLD-2, STG-012, STG-015, STG-REUSE-001/003, RISK-GC, RISK-CAP, RISK-BYPASS, DOT-CAP-001/004/006/010 carried as unresolved obligations (see §10). | Carried, not resolved |
| Runtime | Recorded what is NOT proven without Phase-1: live dot_tools columns (dot_role/cell_id); live formula/assembly behavior; staging schema/lifecycle/cleanup; checkout/runtime sync (CONS-005 caveat). No runtime inferred from documentary. |
Discharged (recorded as gap) |
| Provenance | current-pass (this run KB reads) vs prior-session ("old survey" STG-010/011, IO-004/005 ANSWERED rows kept documentary) distinguished; F0/F1/F2 decision lineage carried (CONS-004/005 decided at F0; F1 birth boundary; F2 Smart Brick boundary). | Discharged |
| Safety lock | F3 boundary restated (IO thin / not Module Contract First; formula/assembly/DOT documentary; dot_tools wrapper-only; no cell_id/dot_role materialization; no DOT/formula/assembly execution; no canonical birth); stop points named (packet §8). |
Discharged |
10. Conflict / HOLD log (carried forward)
| Item | Status | Blocks what | Carried to |
|---|---|---|---|
| CONS-003 (6 tầng vs 7 composition levels) | CONFLICT / BLOCKER (TODO) — constitution rev44 Đ0-B "7 Lớp Cấu tạo (33 species)" / Đ29 "33 species, 7 dimensions" vs drafts | cell placement; cell_id dimension resolution; CELL_STAMP |
Owner decision — NOT resolved at F3 |
CELL-003 (layer source) |
PARTIAL / BLOCKER | cell_id "Tầng" dimension |
Owner + Phase-1 verify |
CELL-004 (species source) |
CONFLICT / BLOCKER | cell_id "Loài" dimension (2 namespaces) |
Owner + Phase-1 verify |
| CELL-007 (chuẩn 6-tầng) | PARTIAL / BLOCKER | cell_id tier catalog (composition_level chưa enacted) |
Owner (tied to CONS-003) |
| CONS-002 (IO Contract 5-field vs DOT/evidence/owner) | TODO / BLOCKER | which source wins for IO Contract v0.1 fields | Owner decision — keep 5 field meanwhile |
| DOT-CAP-001 / 004 / 006 / 010 | BLOCKER (PARTIAL/TODO) | DOT capability contract; no-mutation flag; ≥8 bad-input tests; read-vs-mutate classification | Owner/spec decision + Phase-1 (before any DOT trusted) |
HOLD-1 (iu_staging_record/iu_staging_payload) |
UNKNOWN→likely-LIVE / CONFLICT ("HOLD FOR SYSTEM CHECK") | live home for brick/packet/IO/DOT output; TEMP_ID live home |
Phase-1 read-only survey (separate Owner gate) |
| HOLD-2 (atomic promote) | BLOCKED (no real transaction) | canonical birth / promote write | F4 |
| STG-012 (cleanup scheduler) | TODO / BLOCKER | trusting TTL/delete-fast; who calls fn_iu_staging_cleanup |
Phase-1 verify |
STG-015 (packet_hash coverage) |
PARTIAL / BLOCKER | candidate-packet tamper-binding (cell_id+stamps?) | Owner/spec decision + Phase-1 |
| STG-REUSE-001 (shared-store sufficiency) | TODO / BLOCKER | iu_staging_* as shared kho tạm for all tiers v0.1 |
Phase-1 verify |
| STG-REUSE-003 (no new packet store) | BLOCKER-if-proposed | any new packet store/registry | default NO (de-bai §V.13) |
RISK-GC (blob_ref orphan/cleanup) |
OPEN (TODO/REQUIRED) | trusting payload blob lifecycle + delete-fast | Phase-1 verify |
| RISK-CAP (CASCADE / 10 MiB cap) | OPEN (TODO/REQUIRED) | trusting payload under load | Phase-1 verify |
RISK-BYPASS (fn_birth_gate warning + kill-switch) |
OPEN (inherited F1) | trusting the gate at promote | Phase-1 + pilot gate (controlled+audited) |
| CONS-004 (authority order) | DECIDED at F0 — applied, not re-opened | — | reused as authority basis |
| CONS-005 (freeze baseline) | DECIDED at F0 (accepted, KB-only) — reused | — (caveat: no runtime/checkout sync proof) | carried caveat |
11. Adversarial check result (packet §9 — fail-closed)
| # | Bad assumption | Rejected? | Basis in this run |
|---|---|---|---|
| 1 | "The IO Contract is fully specified, so implement it." | ✅ Rejected | framework §18 ca 14 → DOCUMENTARY_ONLY; only 5-field boundary documentary; examples GAP; §4 |
| 2 | "IO Contract should become Module Contract First / a contract registry." | ✅ Rejected | framework §6b r1 Forbidden; de-bai §III.6/§VI.3; catalog IO-REUSE-002/003 (keep 5 field) |
| 3 | "Formula per layer is already known/implemented." | ✅ Rejected | framework §18 ca 15 → GAP; FORMULA-001/003/006 = no registry/engine/0 assemble; §5 |
| 4 | "Build a formula registry / formula engine at v0.1." | ✅ Rejected | FORMULA-REUSE-002 BLOCKER-if-propose; framework D6 Forbidden; §5 |
| 5 | "Each layer already has an assembly machine ready." | ✅ Rejected | framework §18 ca 17 → DOCUMENTARY_ONLY/GAP; "machine per layer chưa designed"; §6 |
| 6 | "dot_tools already proves DOT registration/stamp/scan coverage." |
✅ Rejected | framework §18 ca 18 → DOCUMENTARY_ONLY/GAP; DOT Coverage Matrix later; §6 |
| 7 | "Add dot_role / cell_id to dot_tools now." |
✅ Rejected | framework §19 schema-change STOP; §6.3; Owner-gated detailed design; §6 |
| 8 | "Register a DOT / run a DOT / run the formula / build the machine." | ✅ Rejected | no DOT registration/run, no formula run, no assembly build at F3; §5/§6 |
| 9 | "Write the promote checker / verdict here." | ✅ Rejected | D9 = F4; promote-checker-v0.1-spec not written/selftested; verdict-only boundary documentary; §7 |
| 10 | "cell_id is solved, place the brick and stamp CELL_STAMP." |
✅ Rejected | CONS-003 + CELL-003/004/007 BLOCKER; cell pending only; §7 |
| 11 | "Documentary row counts / 'ANSWERED' catalog rows prove live." | ✅ Rejected | documentary ≠ live; framework §4; §18 ca 13; §3/§9 |
| 12 | "The candidate packet needs a new store/ledger." | ✅ Rejected | STG-REUSE-002/003; de-bai §V.13 (packet = view); §7 |
| 13 | "Reading dot_tools / iu_staging_* schema live is fine because it's read-only." |
✅ Rejected | Phase-1 separately Owner-gated; no DB/runtime touched; §1 |
| 14 | "Write canonical birth / BIRTH_STAMP once the brick assembles." |
✅ Rejected | canonical birth = F4 output at promote; de-bai §V.10; §7 |
Conclusion: no bad assumption led to a PASS-to-act or a forbidden action → F3 execution is not fail-open.
12. Non-authorization confirmation + self-check
Non-authorization confirmation:
- F3 read-only execution only: yes — this run executed the read-only F3 survey and nothing more.
- no Phase-1: yes — no substrate survey;
iu_staging_*/dot_toolsuntouched. - no DB/runtime: yes — no live DB / Postgres / Directus / runtime / production read or write.
- no formula execution / DOT execution / DOT registration: yes — concept/documentary only.
- no assembly machine implementation: yes — "machine per layer chưa designed" recorded; nothing built.
- no checker / scanner: yes — D9 checker (DOT-006) = F4; scanner = F5; neither created.
- no
cell_id/dot_rolematerialization: yes — pending-coordinate / wrapper-only hypothesis; no column/metadata. - no schema / table / registry / store / source-manifest: yes — nothing created or altered; no formula registry, no DOT registry, no contract registry, no packet store.
- no IO library / Module Contract First: yes — IO Contract kept thin (5 field).
- no canonical birth: yes — not written; remains F4 output at promote (D10).
- no
BIRTH_STAMP/TEMP_ID_STAMPwrite: yes — concept only. - no implementation: yes — no code / migration / DDL / DML / DOT / checker / scanner / formula / pilot.
- no CONS-003 / CELL-003/004/007 / CONS-002 resolution: yes — carried as BLOCKERs; CONS-004/005 only reused as F0-decided.
- Documentary ≠ live proof · Prior-session ≠ current proof · Reuse-now ≠ live-proven · Engineering PASS ≠ Authority PASS.
Self-check:
- Answered the 3 Owner questions at the control surface: yes (§2).
- Kept F3 to IO Contract + Formula + Assembly Machine / DOT (D6 + D7): yes (§4, §5, §6).
- Avoided Phase-1 / DB / runtime: yes (§1).
- Avoided formula execution / DOT execution / assembly implementation: yes (§5, §6).
- Kept IO Contract thin; avoided Module Contract First: yes (§4).
- Kept
dot_toolsdocumentary / wrapper-only: yes (§6). - Avoided
cell_id/dot_rolematerialization: yes (§6, §7). - Carried CONS-003 / CELL-* / CONS-002 blockers honestly: yes (§7, §10).
- Avoided new checker / scanner / DOT registration: yes (§6, §12).
- Avoided canonical birth /
BIRTH_STAMP: yes (§7; F4 deferred). - Distinguished documentary vs live proof: yes (§3, §9).
- Kept Owner/GPT as the only phase authority; Codex = control verdict only: yes.
Engineering PASS (report self-verifying complete & honest): achieved, with the explicitly-flagged PARTIAL condition (all candidates documentary-only/GAP; conflicts/risks carried). Authority PASS (permission to move to F4 / Phase-1 / detailed design): NOT granted — Owner-only.
13. F4 handoff / next-gate recommendation
- This F3 execution report → GPT/Owner, alongside the F2 decision record and the F3 packet. Owner reviews the Q1/Q2/Q3 classification (§2/§3), the IO Contract analysis (§4), the Formula analysis (§5), the Assembly Machine / DOT analysis (§6), the candidate packet /
TEMP_ID/ cell handling (§7), the rollback/delete-fast handling (§8), and the carried conflict/HOLD log (§10). - Codex checkpoint (recommended). Owner may route the F2 decision + F3 packet + F3 report together to Codex for an independent control review (same 3-question Owner structure; deep layer = sources / evidence / authority / conflict / runtime / provenance / safety-lock).
- Owner decisions that F3 surfaces but does not make: resolve CONS-003 (6-vs-7 tầng), CELL-003/004/007, and CONS-002 (IO Contract field source); authorize (or not) a scoped read-only Phase-1 substrate survey for HOLD-1 (
iu_staging_*) and fordot_tools(dot_role/cell_idpresence) + STG-012 cleanup scheduler + STG-015packet_hash+ STG-REUSE-001 shared-store sufficiency + RISK-GC/RISK-CAP + DOT-CAP-001/004/006/010. - F4 handoff. F4 (§6c) = Stamp Lifecycle + Checker / Promote / Rollback (= D8 + D9 + the canonical-output of D10; canonical birth +
BIRTH_STAMPclose at promote). F3 hands F4: the IO Contract 5-field boundary as the brick-to-brick contract the checker/stamp lifecycle reads — without Module Contract First; the Formula and Assembly Machine / DOT documentary patterns (none implemented, all DOCUMENTARY_ONLY/GAP;dot_toolswrapper-only); the candidate-packet-as-view binding (candidate_id+packet_hash) the verdict-only checker (DOT-006) will read, with STG-015 pinned as an open obligation; the stamp path (pre-promoteIO_STAMP/VALIDATION_STAMP/ROLLBACK_STAMP; post-promoteBIRTH_STAMP/PROMOTE_STAMP) and the checker / verdict-only / Atomic Promote Contract boundary as the F4 subject (HOLD-2); and the carried conflicts (CONS-003, CELL-003/004/007, CONS-002) + risks (HOLD-1, STG-012/015, STG-REUSE-001/003, RISK-GC/CAP/BYPASS, DOT-CAP) as obligations F4 must respect, not inherit as solved. F4 preparation must again preserve the 3 reuse-first Owner questions and remain non-authorizing until its own GPT → Codex → Owner gate. - Nothing downstream is authorized by F3. Default HOLD for everything touching canonical / production / runtime / schema /
cell_id-dot_rolematerialization / DOT registration / formula execution / assembly build / new store. A clean F3 (or a Codex PASS on it) confirms classification quality only — it does not open F4, Phase-1, or any design/implementation. Only Owner opens phases.
F3 — IO Contract + Formula + Assembly Machine / DOT — Read-only Execution Report | 2026-06-16 | STATUS: PARTIAL (honest; all candidates documentary-only/GAP; CONS-003 / CELL-003/004/007 / CONS-002 / HOLD-1 / HOLD-2 / STG-012 / STG-015 / STG-REUSE-001/003 / RISK-GC/CAP/BYPASS / DOT-CAP carried). READ-ONLY, NON-AUTHORIZING. F3 = D6 + D7. IO Contract thin (5 field, not Module Contract First). Formula / Assembly Machine / DOT = documentary only (no registry/engine/machine; no execution). dot_tools wrapper-only (no dot_role/cell_id patch). cell_id pending. Canonical birth = F4. Documentary ≠ live proof. Engineering PASS ≠ Authority PASS.