Implementation Package DOT v0.1 — Gap-only Scope Spec (read/report-only, DESIGN ONLY, 2026-06-09)
Implementation Package DOT v0.1 — Gap-only Scope Spec
Nature: the read/report-only scope spec for the future Implementation Package DOT v0.1 (a.k.a. Tool-Kiem-Thu v0.1). It defines what the inspector is, what it is not, the read-only inputs it may consume, the report/JSON it may emit, its verdict vocabulary, its failure modes and fail-closed rules, and the wall of prohibited overlaps. It is a gap-only spec: it specs only the read/report-only gap surface and carves out every execution-dependent capability behind future contracts. This is NOT a tool, NOT an implementation, NOT a schema, NOT a runner, NOT a law. It builds nothing and reopens no sealed decision. Date: 2026-06-09 Production mutation: NO. No install, no PG/Directus/registry/filesystem mutation, no
system_issueswrite, no tool/schema/runner created, no FIX7 resumed, no filesystem DOT invoked, no IU command invoked, no detector executed, no command run, no denominator collapsed, no Codex-sealed decision reopened, no fresh live read taken. Governing authority (binding, in precedence order):contracts/authority-contract-v0-1-2026-06-09.{md,json}(AUTHORITY_CONTRACT_V0_1_READY_FOR_GPT_REVIEW) over the Codex sealreviews/codex-seal-authority-matrix-bcdgh-2026-06-09.md(BCDGH_SEALED), the Reuse Extraction Mapreports/reuse-extraction-map-v0-1-2026-06-09.md(REUSE_EXTRACTION_MAP_READY_FOR_GPT_REVIEW,PARTIAL_READY), the fresh-read closurereports/authority-matrix-fresh-read-closure-bcdgh-2026-06-09.md(FRESH_READ_CLOSURE_PARTIAL), and the baseline ledgerreports/dot-registry-directus-text-as-code-baseline-reconciliation-2026-06-09.{md,json}(live read 2026-06-09 07:11 UTC, rolecontext_pack_readonly, READ ONLY). Evidence discipline: every count is dated evidence carrying surface + denominator + observation timestamp + match key + population + confidence — never an invariant, never collapsed into one canonical DOT number. No fresh live read was taken for this spec; the sealed 2026-06-09 baseline stands as the evidence base. Anything not re-confirmed is carried at the sealed baseline's confidence or marked UNVERIFIED ("Không chắc đúng = sai").
1. Final verdict
GAP_ONLY_SCOPE_SPEC_v0_1_READY_FOR_CODEX_CHECKPOINT
The spec is internally consistent, obeys Authority Contract v0.1, scopes every read/report-only capability to a named sealed surface or a read-only/file-report-only adapter, walls off every prohibited overlap, and carves out every execution-dependent gap behind a named future contract. It decides nothing sealed and builds nothing. It is routed (with the FIX7 read/report pilot design) to one Codex checkpoint before any MVP implementation is greenlit.
This spec is READY for the read/report-only surface and explicitly DEFERRED for the execution-dependent surface — i.e. it inherits and preserves the Reuse Extraction Map's honest PARTIAL_READY.
2. Track 1 — Input audit / consistency review
Read: Authority Contract v0.1 (md+json), Codex Seal B/C/D/G/H, Reuse Extraction Map v0.1 (md), fresh-read closure, baseline ledger, 00-index. Result of the cross-check:
2.1 Accepted constraints (carried verbatim, not reopened)
- v0.1 is read/report only and MUST make no calls (Codex C, option 5).
- Filesystem-DOT "can run" is NOT AVAILABLE; filesystem DOTs MUST NOT be invoked (Codex B, option 5).
- No new runner/dispatcher, registry, logger/sink, graph/duplicate/orphan/canonical-id resolver, or TAC/IU corpus authority (parallel-authority risk = all NO).
- No mutation of PG, Directus, registry, filesystem, or
system_issues. - Canonical current registry→FS diff = latest code-keyed
v_dot_reconciliation_reliabilityoverwf_fs_dot_bin_snapshot; name-keyedv_dot_registry_no_file(41) is a separate dated diagnostic only (Codex D, option 1). - TAC and IU are dual-reported only; no choose/merge/reconcile/bridge/canonical (Codex H).
- Existing Đ19/Đ23/Đ39 graph/orphan/duplicate/dependency/reconciliation surfaces are the only permitted authorities; presence of a view/function does not authorize executing a detector or writing findings (Codex G).
- 7 denominators stay separate; a single collapsed DOT count = disguised hardcode (Authority Contract §3).
- File-report-only evidence under
knowledge/dev/laws/tool-kiem-thu/(Domains F/I/J). - No prose-only PASS (Authority Contract §5).
2.2 Accepted reuse candidates (from Reuse Extraction Map §4/§5 — read-only)
- 15 REUSE_AS_IS read surfaces (registry listing, canonical reconciliation view, presence mirror, command-catalog/run/lease, graph/edges/dependencies, Đ19 orphan result surfaces, duplicate-engine result views, Đ43 context pack, IU+TAC corpora, Directus flows read,
system_issuesread, 7-denominator contract, KBdocument_id/revision, report+JSON+checkpoint pattern). - 7 REUSE_WITH_ADAPTER read-only/file-report-only adapters (declared-artifact existence resolver, claim-inventory extractor existence half, registry↔FS reconciliation report, dual-corpus reporter, provenance report writer, FIX7 read/report pilot, flow/command-catalog reporters) + the read-only dead-link report (gap #5 read-only half).
2.3 Accepted prohibited overlaps (from Reuse Extraction Map §7 — 13 items)
Carried verbatim into the §16 wall: no 2nd runner/invoker; no FS-DOT invocation; no IU command invocation; no new registry/fork; no new logger/system_issues write; no new graph/duplicate/orphan/canonical-id resolver; no executing detector functions / writing findings; no TAC↔IU bridge/merge/canonical choice; no Directus CRUD; no registry cleanup/reconciliation mutation; no 3rd cut/verify/manifest authority; no collapsed counts; no prose-only PASS.
2.4 True gaps that belong in v0.1 (read/report-only halves only)
- Declared-artifact existence reporting (does a declared reference resolve, read-only?) — reusable now via adapter.
- Claim-inventory existence reporting (does each declared claim have a resolvable evidence artifact?) — reusable now via adapter; the run/pass binding is deferred.
- Read-only dead-link report over
v_kg_edges_all— reusable now; the persistentaudit_dead_links()engine + sink is deferred.
2.5 Deferred gaps (carved out behind future contracts — NOT in v0.1)
- Command-runner that captures exit codes (gap #8.1) → Call Contract.
- Run/pass half of the claim↔test binder (gap #8.2) → Call Contract.
- Generic
package_manifestenvelope + schema (gap #8.3) →iu_core↔cutter_governanceowner lineage decision + Codex schema review. --selftest N/Ncounter +module_sha256self-pin (gap #8.4) → post-spec build.audit_dead_links()persistent engine +system_issuessink (gap #8.5) →system_issueswrite contract.
2.6 Contradictions found
- None blocking. One sequencing note: the Reuse Extraction Map's "minimal next step" is GPT review of the map before drafting this spec. This spec is therefore issued in
READY_FOR_CODEX_CHECKPOINT(draft-for-review) status, not "approved"; the macro consolidates the map review and the spec/pilot review into a single Codex checkpoint packet (deliverable #7). Producing the draft does not pre-empt that review — it makes the review concrete. No sealed decision is altered.
2.7 Unverified items that MUST NOT enter design (held out)
Carried from Reuse Extraction Map §9; none may be used as a planning input or a denominator:
actual_count = 163(CAT-006) filter — UNVERIFIABLE/UNSAFE.- Direct live OS listing of
/opt/incomex/dot/binand/opt/incomex/scripts— permanently unreachable read-only; the PG mirror is the canonical-available FS evidence. - Runnability ("can run") of any filesystem DOT — NOT AVAILABLE in v0.1.
- Directus 100%-DOT-control — PARTIAL_EVIDENCE_ONLY.
- Doc-level canonical-id / duplicate-authority gap — UNPROVEN; not yet a true gap.
iu_core↔cutter_governancecanonical lineage — owner decision, unresolved.- TAC↔IU corpus authority + any bridge — unresolved by design.
/opt/incomex/scripts"42" — separate non-DOT surface; out of scope.
Consistency verdict: inputs are mutually consistent; the spec can be written for the read/report-only surface with all execution gaps carved out. ✅
3. What v0.1 IS / IS NOT
3.1 v0.1 IS
- A read/report-only inspector layer that ingests an implementation/testing dossier (a KB package: blueprint docs, reports, checkpoints) and produces a timestamped evidence report about whether the dossier's declared artifacts resolve and whether its executable claims are backed by referenced evidence artifacts — strictly at the read/evidence-presence level.
- A consumer of named, sealed, deployed read surfaces (Reuse Extraction Map §4) and a small set of read-only, file-report-only adapters (§5).
- An evidence/provenance discipline enforcer: every count it prints carries full provenance; bare counts are refused.
- A dual-corpus reporter for TAC and IU (never joined).
- A carve-out engine: it explicitly labels every execution-dependent question as
DEFERREDto a named future contract rather than answering it.
3.2 v0.1 IS NOT
- Not a runner / dispatcher. It invokes nothing — no filesystem DOT, no IU command, no detector function.
- Not a registry / catalog authority. It does not replace or fork
dot_tools. - Not a logger / sink. It does not write
system_issuesor create any parallel sink. - Not a graph / duplicate / orphan / canonical-id resolver. It reads existing result surfaces; it builds no engine.
- Not a TAC/IU bridge or corpus authority. It cannot choose, merge, reconcile, or bridge.
- Not a proof-of-run. It can never emit a verdict asserting that a declared executable actually ran. The strongest positive it can emit is "evidence artifact present and self-consistent at read level — NOT proof-of-run."
- Not a mutation path of any kind.
- Not the FIX7 verifier and not a FIX7 resume. It pilots a read/report inspection of the FIX7 dossier only.
4. Allowed read-only inputs (named surfaces)
All inputs are read-only; reads are always live SELECT/KB-read, never a baked constant. (Surface → Reuse Extraction Map capability #.)
| Input class | Named surface(s) | Allowed use | Sealed denominator binding |
|---|---|---|---|
| Dossier identity | KB document_id + path + revision (agent-data MCP) |
Native package/dossier id; revision anchor | — |
| Registry listing | dot_tools = meta_catalog CAT-006 = PIV-007 = PIV-104 (309, frozen 2026-04-02); pivot_results |
Catalog of record listing only | Denom 1 (309 = listing only) |
| Registry↔FS current diff | v_dot_reconciliation_reliability over wf_fs_dot_bin_snapshot (code-key, all 309) |
Canonical current diff | Denom 3 base (186/100/19/4) |
| FS-diff diagnostic | v_dot_registry_no_file (41, name-key, stale 06-03), v_dot_fs_reconciliation |
Separate dated diagnostic only — MUST NOT override canonical | — |
| FS presence | wf_fs_dot_bin_snapshot (289 total / 214 OPERATIONAL / 186 mapped) |
Presence only; never "can run" | Denom 2 (214 operational) |
| Command layer | dot_iu_command_catalog (54: 15 mutating=false), dot_iu_command_run (55), dot_iu_runtime_lease (0) |
Read-only reporting only; the 15 = candidate future set, NOT a call set | Denom 5 (54 command-catalog) |
| Graph / impact | universal_edges (2199), v_kg_edges_all (2259), entity_dependencies (142) |
Read result surfaces only | — |
| Orphan results | wf_orphan_digest_v2 (6), wf_orphan_remediation_queue (145), v_birth_orphan, v_workflow_orphan_v2 |
Read outputs only; do not execute detectors | — |
| Duplicate results | v_birth_duplicate_issue_guard, v_rp_dedup_signature_gap, v_system_issue_semantic_duplicate_dashboard, v_system_issue_idempotency_guard |
Read only | — |
| Context pack | v_context_pack_latest, context_pack_manifest.health_status, v_entity_full_classification, rendered LAWS_INDEX/DOT_REGISTRY/RED_ZONES (Đ43) |
Resolve approved-SSOT/scope | — |
| Corpora | information_unit (219) and tac_logical_unit (102); 0 joining views |
Dual-report only, never joined | Denom 7 (219/102 separate) |
| Directus flows | directus_flows (128 total / 111 active / 36 DOT-named) |
Read-only observe only; no CRUD | Denom 6 (128/36) |
| Issue sink (read) | system_issues (open 223,313) |
Read-only; the write sink fn_tac_log_checker_issue is named but not written in v0.1 |
— |
| Denominator discipline | Authority Contract §3 7-denominator contract + baseline ledger | Count discipline, reused verbatim | All 7 |
Hard rule: any count derived from these is dated evidence; it is never an invariant and never collapsed.
5. Allowed outputs — report contract + JSON summary contract
5.1 Output surface
- File-report-only, written under
knowledge/dev/laws/tool-kiem-thu/(KB, agent-data MCP). No other write target exists for v0.1. - Per inspection: a triplet —
…/reports/<inspection>-<date>.md(human) +…/reports/<inspection>-<date>.json(machine) +…/checkpoints/checkpoint-<inspection>-<date>.md. (This is the deployed report+JSON+checkpoint pattern, Domain I.)
5.2 Report contract (markdown report.md — required sections, in order)
- Header — nature; date;
Production mutation: NO; governing-authority refs; evidence-discipline line. - Verdict — one of the §6 vocabulary values + a one-line readiness sentence.
- Dossier identity —
document_id/ path /revision/ blueprint_ref;READ_REPORT_BLOCKEDif any are missing. - Denominator ledger — every count with full provenance (§10); denominators stay separate (§8).
- Claim/evidence inventory — table of declared claims → evidence-artifact resolution (§9).
- Declared-artifact existence report — each declared reference →
{reference, resolves?, surface, observation_ts}. - Registry↔FS reconciliation report — canonical code-keyed diff + name-keyed diagnostic shown separately, both-direction diffs (§12).
- Graph / orphan / dead-link read report — read-only result-surface reads (§13).
- Dual-corpus report — IU (219) and TAC (102) side-by-side, never joined (§11).
- Unverified / stale section — items held out (§14), each marked and reasoned.
- Deferred carve-outs — every execution-dependent question this inspection did NOT answer, each routed to its named future contract (§17, Track 7).
- Cross-references — governing-authority docs + the JSON mirror + the checkpoint.
5.3 JSON summary contract (machine report.json — required keys)
tool, version ("v0.1"), mode ("read_report_only"), production_mutation (false), inspection_id, observation_window_utc, authority_contract_ref, verdict, verdict_is_proof_of_run (always false), dossier_identity{document_id,path,revision,blueprint_ref}, denominator_ledger[] (each: surface,denominator,query,observation_ts,match_key,population,confidence), claim_evidence_inventory[] (each: claim,claim_kind,evidence_artifact_ref,resolves,verdict,is_proof_of_run:false), declared_artifact_existence[], reconciliation{canonical_base,diagnostic_base,both_direction_diffs,provenance}, graph_orphan_deadlink[], dual_corpus{iu:{count,surface,observation_ts}, tac:{count,surface,observation_ts}, joined:false}, unverified[], deferred_carveouts[] (each: capability,future_contract,reason), prohibited_overlaps_respected[], cross_references[].
The
report.jsonis a read-only evidence artifact, NOT a runtime manifest the tool consumes and NOT a schema deployed anywhere. (The spec's own machine mirror — deliverable #2 — is likewise a design artifact, not a runtime schema.)
6. Verdict vocabulary
Because v0.1 invokes nothing, it can never emit a verdict that means "an executable ran." The vocabulary is therefore evidence-presence, not run-status. (P11E checker_run_status ran_clean|ran_with_drift|not_ready|error_running is adopted as reference-only vocabulary for the future run-half, NOT as v0.1 output — see Reuse Extraction Map §6.2.)
6.1 Per-dossier verdict (overall)
READ_REPORT_PASS— dossier identity present; every declared artifact resolves read-only; every executable claim has a referenced, resolvable evidence artifact; provenance complete; denominators separate. This is NOT proof-of-run and is always emitted withverdict_is_proof_of_run:false.READ_REPORT_FLAG— one or more executable claims lack a resolvable evidence artifact, or a declared artifact does not resolve, or a count lacks provenance, or a prose-only PASS is detected.READ_REPORT_BLOCKED— the dossier cannot be inspected at all (missing identity / blueprint_ref / revision anchor), or a structural prohibition is hit (denominator collapse, an attempted call/mutation in the dossier's own design).NOT_APPLICABLE— no executable claims and no declared artifacts in scope.
6.2 Per-claim / per-artifact verdict
RESOLVED— declared reference exists on a named read surface.UNRESOLVED— declared reference does not exist on any read surface.AMBIGUOUS— reference matches >1 surface/id, or path/reference is ambiguous, or the match key is undefined.EVIDENCE_PRESENT— an executable claim references a resolvable evidence artifact (a log / exit-code record / hash artifact that exists as a referenced object). NOT proof-of-run.EVIDENCE_ABSENT— an executable claim has no referenced evidence artifact (the FIX7/Article-14 class).EVIDENCE_UNVERIFIED— an evidence artifact is referenced but cannot be confirmed read-only (held out per §14).
6.3 Iron rule
The strongest positive v0.1 can emit for an executable claim is EVIDENCE_PRESENT, always carrying is_proof_of_run:false. "Can run" / "ran / PASS" is NOT AVAILABLE in v0.1 and is deferred to the Call Contract.
7. Failure modes + fail-closed rules
| # | Failure mode | Detected by | Verdict | Fail-closed behavior |
|---|---|---|---|---|
| F1 | Missing dossier identity / blueprint_ref / revision | identity read | READ_REPORT_BLOCKED |
Stop inspection; emit blocked report; never PASS. |
| F2 | Bare count printed without provenance | provenance writer | READ_REPORT_FLAG |
Refuse to print the bare count; flag. |
| F3 | Collapsed denominator (one canonical DOT number) | denominator ledger check | READ_REPORT_BLOCKED |
Structurally prevented; if a code path would collapse, fail closed. |
| F4 | Executable claim without evidence artifact | claim/evidence inventory | EVIDENCE_ABSENT → READ_REPORT_FLAG |
Flag the claim; never infer PASS. |
| F5 | Prose-only PASS (claim asserts success, no evidence) | claim/evidence inventory | READ_REPORT_FLAG |
Never echo the PASS; flag the unbacked claim. |
| F6 | Declared artifact does not resolve | existence resolver | UNRESOLVED → READ_REPORT_FLAG |
Report unresolved with surface+ts. |
| F7 | Path/reference ambiguity (multi-match / undefined key) | existence resolver | AMBIGUOUS → READ_REPORT_FLAG |
Report ambiguity; do not pick a winner. |
| F8 | TAC/IU would be joined/chosen/merged | dual-corpus reporter | READ_REPORT_BLOCKED |
Structurally incapable of joining; if attempted, fail closed. |
| F9 | Reconciliation diagnostic (41) would override canonical (4) | reconciliation report | READ_REPORT_FLAG |
Always show both separately; never let stale override canonical. |
| F10 | Attempt to invoke FS DOT / IU command / detector | (design guard) | READ_REPORT_BLOCKED |
No such capability exists in the module's allowed-operation set; design-level refusal. |
| F11 | Attempt to write system_issues / mutate PG/Directus/registry/FS |
(design guard) | READ_REPORT_BLOCKED |
No write capability exists; design-level refusal. |
| F12 | Evidence artifact referenced but unconfirmable read-only | existence resolver | EVIDENCE_UNVERIFIED |
Mark unverified (§14); never assume present. |
Master fail-closed principle: when in doubt, flag or block, never pass. Absence of evidence is EVIDENCE_ABSENT/FLAG, never silent PASS. ("Không chắc đúng = sai.")
8. Denominator separation rules
- The 7 denominators are distinct queries against distinct surfaces at distinct dates and MUST NOT be collapsed into a single canonical DOT number (= disguised hardcode). Carried verbatim from Authority Contract §3: 309 registry (listing only) ≠ 214 operational-FS (presence) ≠ 186 mapped/confirmed (reconciliation diagnostic; the
186 ∩ command-catalogformula is WITHDRAWN, join=0) ≠ 163 CAT-006actual_count(UNSAFE) ≠ 54 command-catalog ≠ 128/36 Directus flows ≠ 219/102 IU/TAC (dual-report). - Every count emitted carries surface + denominator + query + observation timestamp + match key + population + confidence (§10).
- A load-bearing set is always a runtime query against a named surface, never a literal constant or hand-maintained list. A single DOT number anywhere = disguised hardcode →
BLOCKED.
9. Claim / evidence inventory rules
This is the heart of the FIX7/Article-14 capability — at read/report level.
- Enumerate declared claims in the dossier prose: every assertion that an executable, test, selftest, canonicalizer, hash, or command "exists / runs / passes / exits 0 / produces hash X".
- For each claim, classify
claim_kind ∈ {executable_exists, command_run, selftest_pass, exit_code, hash_match, artifact_reference}. - For each claim, check only whether a referenced evidence artifact resolves (existence, read-only): a log file, an exit-code record, a hash artifact, a referenced
document_id. EmitEVIDENCE_PRESENT/EVIDENCE_ABSENT/EVIDENCE_UNVERIFIED. - The tool NEVER runs the claim. It does not execute the canonicalizer, does not re-compute a hash, does not run a selftest. The run/pass binding is DEFERRED (gap #8.2 → Call Contract).
- Prose-only PASS rule: a claim of success with no resolvable evidence artifact is
EVIDENCE_ABSENT→READ_REPORT_FLAG. The tool never re-asserts the prose claim as truth. - A claim with an evidence artifact that does resolve is
EVIDENCE_PRESENT— explicitly not proof-of-run.
10. Provenance requirements
For every count or evidence row emitted, the report MUST attach:
- source surface (named DB object / view / KB path),
- denominator (which of the 7, or "other carried"),
- query (the live
SELECT/read that produced it, in text), - observation timestamp (UTC),
- match key (code-key / name-key / id),
- population (the row universe queried),
- confidence (and
UNVERIFIEDmarker where applicable), - for reconciliation rows: both-direction diffs.
The provenance report writer refuses to print a bare count. A bare count is failure mode F2.
11. TAC / IU dual-report rules
- IU (
information_unit, 219) and TAC (tac_logical_unit, 102) are two separate corpora; 0 joining views/functions exist in the sealed snapshot. - The dual-corpus reporter emits them side-by-side with independent provenance, and is structurally incapable of joining/choosing/merging/bridging (Domain H).
joined:falseis always present in the JSON. - The tool MUST NOT choose either as canonical, MUST NOT reconcile them, MUST NOT create a bridge, and MUST NOT call mutating
fn_iu_*. - "No bridge" and both counts are runtime-read evidence, never hardcoded. Any attempt to join → F8 →
BLOCKED. - Corpus authority remains unresolved by design; the resolver is a deferred owner+Codex contract (Track 7).
12. Registry ↔ filesystem diff read/report rules
- Canonical current diff base = latest code-keyed
v_dot_reconciliation_reliabilityoverwf_fs_dot_bin_snapshot(all 309: 186 CONFIRMED / 100 REGISTERED / 19 HELPER / 4 MISSING_FILE). - Name-keyed
v_dot_registry_no_file(41, stale 2026-06-03_recon, restricted population) is shown as a separately labelled dated diagnostic and MUST NOT override the canonical diff. The 41-vs-4 divergence is reported, with its base/key/population explanation, never reconciled away. - Every reconciliation row exposes source, observation timestamp, match key, population, and both-direction diffs.
- Unmatched entries are NON-CALLABLE and are reported as such — never "reborn", cleaned, or mutated. Reconciliation is read-only reporting only (no registry/reconciliation mutation).
13. Graph / orphan / reference read/report rules
- Read result tables/views only:
universal_edges(2199),v_kg_edges_all(2259),entity_dependencies(142); Đ19 orphan result surfaces (wf_orphan_digest_v2,wf_orphan_remediation_queue, etc.); duplicate-engine result views. - Do NOT execute detector functions (e.g.
fn_dot_wf_orphan_detector(_v2)), do NOT write findings, do NOT build a new graph/duplicate/orphan/canonical-id resolver (Domain G). - The read-only dead-link report (declared references → resolve? over
v_kg_edges_all) is in scope. The persistentaudit_dead_links()engine +system_issuessink is DEFERRED (Track 7). - The doc-level canonical-id / duplicate-authority gap is UNPROVEN — it is NOT treated as a true gap and NOT built; proving it requires a separately authorized read-only gap proof against existing engines.
14. Stale / unverified handling
- Every item in §2.7 (and Reuse Extraction Map §9) is held out of design and, where it appears in a dossier, is reported as
EVIDENCE_UNVERIFIEDor in the explicit Unverified/stale section — never used as a planning input or denominator. actual_count=163is never a denominator. Direct OS listings are unreachable; the PG mirror is the canonical-available FS evidence and is labelled as such.- Any source older than its surface's canonical observation, or carrying a stale
_reconbase, is shown with its date and marked stale — never silently promoted. - Rule: "Không chắc đúng = sai" — unverified is treated as not-true for verdict purposes (fail-closed), never as a soft PASS.
15. File-report-only evidence storage
- All evidence lives as KB documents under
knowledge/dev/laws/tool-kiem-thu/(reports/,checkpoints/,designs/,planning/,reviews/,contracts/). - No evidence is written to
system_issues, Directus tables, the registry, or the filesystem in v0.1. - The report+JSON+checkpoint triplet is the only evidence shape. The escalation path to
system_issuesviafn_tac_log_checker_issueis named but deferred (Domain F) until a successor is approved to mutate (Track 7).
16. Explicit non-goals / prohibited-overlap wall (Track 3)
v0.1 MUST NOT do any of the following. Each would create parallel authority or break a sealed boundary.
- No runner / dispatcher of any kind.
- No filesystem DOT invocation — "can run" is NOT AVAILABLE for filesystem DOT in v0.1.
- No IU command invocation — the 15
mutating=falsecommands are a candidate future set, not a v0.1 call set. - No Directus mutation (CRUD) — read-only observe only.
- No PG mutation.
- No registry mutation / forking
dot_tools. - No
system_issueswrite (no escalation, no logging). - No new logger / sink.
- No new graph / duplicate / orphan / canonical-id resolver.
- No executing detector functions / writing findings — presence of a view/function does not authorize running it.
- No TAC↔IU merge / bridge / reconciliation / canonical choice — dual-report only.
- No reconciliation cleanup / rebirth of unmatched registry/FS entries.
- No 3rd cut/verify/manifest authority — building on neither
iu_corenorcutter_governance= a 3rd lineage; blocked on owner decision. - No OPA / Conftest / Squawk / CI / Git hooks — all deferred behind future contracts.
- No proof-of-run semantics — the tool cannot emit "ran/PASS".
- No Directus 100%-DOT-control proof — PARTIAL_EVIDENCE_ONLY; no claim, no write path.
- No prose-only PASS.
- No collapsed counts / single canonical DOT number.
- No package/schema/tool build before this spec is reviewed and approved.
- No FIX7 resume and no running the FIX7 declared executables.
17. In-scope capability set vs deferred carve-outs
17.1 In scope for v0.1 (read/report-only)
The eight read-only adapters (each a candidate module in the MVP plan, deliverable #4):
- Declared-artifact existence resolver (R1) —
{reference, resolves?, surface, observation_ts}. - Claim-inventory extractor — existence half (R2) — declared claims → evidence-artifact resolution; never runs.
- Registry↔FS reconciliation report (R3) — canonical + diagnostic, both-direction diffs.
- Dual-corpus reporter (R4) — IU + TAC side-by-side, never joined.
- Provenance report writer (R5) — full provenance per count; refuses bare counts.
- Read-only dead-link report (R6a) — declared refs over
v_kg_edges_all. - FIX7 read/report pilot (R7) — see deliverable #3.
- Flow / command-catalog reporters (R8) —
directus_flows+ the 15 candidate commands, read-only.
17.2 Carved out (DEFERRED — NOT in v0.1)
| Carve-out | Future contract | Why deferred |
|---|---|---|
| Command-runner with exit codes | Call Contract | Sealed B/C: v0.1 calls nothing. |
| Run/pass half of claim↔test binder | Call Contract | Requires execution. |
Generic package_manifest schema |
iu_core↔cutter_governance lineage decision + Codex schema review |
3rd-lineage prohibition; owner decision. |
--selftest N/N + module_sha256 self-pin |
Post-spec build | Property of built code. |
audit_dead_links() engine + system_issues sink |
system_issues write contract |
No new graph engine / no v0.1 sink write. |
| Directus 100%-DOT-control proof + write path | Directus DOT-control proof contract | PARTIAL_EVIDENCE_ONLY. |
| TAC↔IU bridge/resolver | TAC↔IU bridge contract (owner+Codex) | Corpus authority unresolved by design. |
| OPA/Conftest/Squawk/CI/Git hooks | CI/policy-gate integration contract | Out of v0.1 envelope. |
18. Gap-only spec verdict
GAP_ONLY_SCOPE_SPEC_v0_1_READY_FOR_CODEX_CHECKPOINT — READY for the read/report-only surface; DEFERRED for the execution surface (inherits PARTIAL_READY). Internally consistent, obeys Authority Contract v0.1, all prohibited overlaps walled, all execution gaps carved out. Routed to one Codex checkpoint (deliverable #7) before any MVP greenlight.
Cross-references
- Authority Contract:
contracts/authority-contract-v0-1-2026-06-09.{md,json} - Codex seal:
reviews/codex-seal-authority-matrix-bcdgh-2026-06-09.md(BCDGH_SEALED) - Reuse Extraction Map:
reports/reuse-extraction-map-v0-1-2026-06-09.{md,json}(PARTIAL_READY) - Fresh-read closure:
reports/authority-matrix-fresh-read-closure-bcdgh-2026-06-09.{md,json} - Baseline ledger:
reports/dot-registry-directus-text-as-code-baseline-reconciliation-2026-06-09.{md,json} - Machine mirror of this spec:
designs/implementation-package-dot-v0-1-gap-only-scope-spec-2026-06-09.json - FIX7 read/report pilot design:
designs/fix7-read-report-pilot-design-for-implementation-package-dot-v0-1-2026-06-09.md - MVP implementation plan (no code):
planning/mvp-read-report-inspector-implementation-plan-no-code-2026-06-09.md - Acceptance test matrix:
designs/acceptance-test-matrix-implementation-package-dot-v0-1-2026-06-09.md - Future contracts queue:
planning/future-contracts-queue-after-v0-1-2026-06-09.md - Codex checkpoint packet:
reviews/codex-checkpoint-packet-gap-only-spec-and-fix7-pilot-2026-06-09.md - Action-ready blockers:
checkpoints/action-ready-blockers-after-gap-only-spec-2026-06-09.md - This spec's checkpoint:
checkpoints/checkpoint-gap-only-spec-and-fix7-pilot-design-2026-06-09.md