dot-iu-cutter v0.5 — evidenced_by Edge APR Draft (design-only, NOT APPROVED)
dot-iu-cutter v0.5 — evidenced_by Edge APR Draft
Phase: v0.5 fabric-addendum —
v0_5_evidenced_by_edge_APR_draftNature:design_only_APR_draftDate: 2026-05-18 Authority basis: WS-3 GPT review (PASS_WITH_BLOCKERS,next_phase: v0_5_evidenced_by_edge_APR_draft) + WS-1 edge-APR-minimization note (minimized set ={ evidenced_by }, 1) + WS-1 binding/authority clarification note + P44-4A05-relation-edge-conformance-design.md§3.3.⚠️ GATING BANNER — read first
apr_status: DRAFT_ONLY edge_type_evidenced_by: NOT_APPROVED edge_created: false edge_type_vocab_amended: false dot_cap4_checker_extended: false schema_change: none code_change: none sql_executed: none decision_authority: GPT / User ONLY (agent MUST NOT approve this APR) self_advance: PROHIBITEDEvery occurrence of
evidenced_byin this document refers to a PROPOSED, NOT-APPROVED, APR-GATED edge type. This file is a proposal for a future APR cấp medium (Đ32) decision. It does not approve the edge, does not create the edge, does not amend theedge_typevocab framework, and does not authorize schema/code/production work.
1. Purpose & scope
This document drafts the APR proposal required by P44-4A §3.3 (Extension policy — qua APR) for one — and only one — new durable relation edge type: evidenced_by (NOT APPROVED / APR-GATED).
It exists because:
- WS-1 edge-APR-minimization reduced 6 OD-FA4 candidates to the smallest possible new-edge set =
{ evidenced_by }(exactly 1); all other candidates were absorbed into existing P44 edges,iu_entity_binding, or assembly-local relations. - WS-3 cross-source topic assembly logical proof used
evidenced_byonly as an assembly-local alternative (relation R6, "evidence-of"), explicitly NOT as an approved edge, and GPT ruled thisACCEPTED. - GPT's WS-3 review set
next_phase: v0_5_evidenced_by_edge_APR_draft,nature: design_only_APR_draft, with the instruction: "The APR draft must not approve the edge. It must produce a clean proposal for GPT/User sovereign decision."
Out of scope for this draft (forbidden): edge approval, edge creation, edge_type vocab amend, DOT Cap-4 checker extension, schema migration, table/view/function/index, production write, code change, CUT/VERIFY, dry-run, Directus mutation, vector/NoSQL integration, git commit, and any expansion into a compliance_matrix proof (QG8 — compliance_matrix remains DEFERRED; it is named here only as downstream impact, not proven).
2. APR draft — P44-4A §3.3 conformance
P44-4A §3.3 prescribes exactly five steps for any edge type outside the 11 (8 Core + 3 Candidate). This draft addresses steps 1–3 (proposal content); steps 4–5 are post-PASS actions that are explicitly NOT performed here.
| §3.3 step | Requirement | Where addressed |
|---|---|---|
| 1 | Đề xuất qua APR cấp medium (Đ32) | §2.1 (this draft is that proposal; not the decision) |
| 2 | Justify: tại sao không dùng edge type hiện hữu? | §4 (why-not-existing) |
| 3 | Định nghĩa logical + reverse + family thường dùng + provenance requirement | §3 + §5 + §6 + §7 |
| 4 | APR PASS → amend edge_type vocab framework (§2.3 OPEN P44-4-α) |
NOT performed — post-PASS, GPT/User only |
| 5 | DOT Cap-4 checker mở hỗ trợ edge type mới | NOT performed — post-PASS implementation |
No new process is invented (QG1). This draft strictly instantiates the existing §3.3 template; APR tier is medium (Đ32) because P44-4A reserves APR cấp high only for the rejected internal-only exception path (§7.8), not for a normal new edge type (§3.3 step 1).
2.1 Proposed edge type — identity
proposed_edge_type: evidenced_by # status: PROPOSED-FOR-APR — NOT APPROVED, NOT CREATED
apr_tier: medium (Đ32) # per P44-4A §3.3 step 1
owner_law_code: NRM-LAW-44 # object-edge namespace (P44-4A §2.3)
namespace_class: object edge (prefix obj. OR owner_law tag — see OPEN P44-4-α below)
edge_family: relation (Cap-4) # NOT composition; lifecycle-independent (P44-4A §5.8)
default_state: proposed # derived/semantic edge → E7 default `proposed` (P44-4A §4.4)
OPEN P44-4-α (carried, not closed by this draft): the final
edge_typenamespace scheme (prefixobj./sem.vsowner_layertag vs both) is still OPEN in P44-4A §2.3 and is deferred to the vocab-framework APR. This draft tagsowner_law_code = NRM-LAW-44(object-edge) and does not pre-empt the namespace decision.
3. Logical meaning, direction, reverse, family
3.1 Logical meaning
logical_meaning: >
Source (a normative / requirement / claim IU) is `evidenced_by` Target
(an evidence-authority IU: report, verification artifact, test result,
lesson) — i.e. Target ATTESTS that Source was satisfied / performed /
demonstrated. The relation is evidentiary/attestational, durable, and
cross-source (it links a normative_authority unit to an evidence_authority
unit across distinct source families).
This is the durable "X is proven by Y" relation that compliance/evidence chains require and that no existing P44 edge carries (see §4).
3.2 Direction & reverse
direction: directional (1 chiều) # source = the thing proven; target = the proof
reverse_type: evidences # "Target evidences Source"
symmetric: NO
reverse_serving: via P44-4A §6 reverse-index (P1/P2/P3 deferred); no second physical row required
Reverse-type convention conforms to P44-4A §3.4: evidenced_by ↔ evidences is a named-inverse directional pair (analogous to governed_by ↔ governs, implements ↔ implemented_by), not symmetric (unlike contradicts).
3.3 Edge family
edge_family: relation (Cap-4)
rationale:
- Lifecycle-INDEPENDENT: retiring the evidence (report) does NOT cascade-retire
the requirement, and vice-versa — therefore NOT composition (Cap-5).
- Cardinality typical N:N (one report may evidence many requirements; one
requirement may be evidenced by many reports/lessons).
- Answers Living-DB Q5 ("ai dùng / ai chứng minh object này") — Relation family
per P44-4A §5.8.
cap_checker: DOT Cap-4 (relation conformance) — to be extended ONLY post-APR-PASS (§3.3 step 5; NOT done here)
4. Why existing edges are insufficient (P44-4A §3.3 step 2 — QG2)
The new edge is justified only if no existing edge can carry the evidentiary/attestational, durable, cross-source semantics without material loss of meaning. Each candidate substitute is examined against the WS-3 R6 relation ("report N6 proves requirement N2 / process N3").
| Existing edge | P44-4A definition | Why it does NOT cover evidenced_by |
Loss if substituted |
|---|---|---|---|
references (Core) |
"Source tham chiếu target (read-only, không phụ thuộc lifecycle)" | A bare read-only mention. Carries no attestation/proof semantics — "A mentions B" ≠ "B proves A was done". | Loses the entire "proves performed" meaning; compliance queries cannot distinguish a citation from an attestation. |
implements (Core) |
"Source implement spec target" | Means source realizes a specification. The evidentiary direction and intent are different: a report does not implement a requirement, it attests the requirement was met. Direction/semantics mismatch. | Mislabels evidence as implementation; pollutes implements reverse-index used for spec-realization queries. |
derived_from (Candidate) |
"Target sinh ra source (provenance)" | Captures creation provenance ("this projection was derived from that IU"), not evidentiary proof. A report is not "derived from" the requirement it proves; it independently attests it. | Loses attestation semantics; conflates "where it came from" with "what proves it". Also derived_from is itself a still-pending Candidate (BP-WS2-2). |
governed_by (Candidate) |
"Source chịu governance của target (law/agency)" | Captures authority/governance ("unit is governed by this law/agency"), the normative-control relation. Evidence is the opposite arrow of intent: the report does not govern the requirement, it demonstrates compliance with it. | Loses attestation; corrupts the Authority-Map semantics that governed_by is reserved for. |
why_not_existing_summary:
references: read-only mention, NO attestation semantics
implements: source realizes a spec, NOT "proves performed"
derived_from: creation provenance, NOT evidentiary proof
governed_by: authority/governance relation, NOT attestation (opposite intent)
conclusion: >
No existing Core or Candidate edge carries the durable evidentiary/attestational
cross-source relation. P44-4A §3.3 step-2 justification is therefore SATISFIED in
the proposal — subject to GPT/User APR ruling (NOT self-decided).
5. Endpoint constraints & evidenced_by vs iu_entity_binding (QG3, QG4)
5.1 Endpoint constraint
endpoint_constraint:
source_ref: IU (registered_object), OQC >= 3/4 (P44-4A §2.1 / §4.2 rule 4)
target_ref: IU (registered_object), OQC >= 3/4
scope: IU <-> IU ONLY
cross_layer: FORBIDDEN (Object<->Concept undefined — P44-4A §2.4; not created here)
composite_ref: {collection, id, code} per P44-4A §4.2; validated by DOT Cap-4 writer post-APR
5.2 evidenced_by (PROPOSED, NOT APPROVED) vs iu_entity_binding — the boundary
This is the load-bearing distinction (QG3). Per WS-1 binding/authority clarification note §2:
| Source side | Target side (the evidence) | Mechanism | APR? |
|---|---|---|---|
| Requirement / normative IU | Evidence is an IU (report IU, lesson IU, verification-artifact IU) — a registered_object, OQC ≥ 3/4 |
evidenced_by (PROPOSED — NOT APPROVED / APR-GATED) |
yes — this APR |
| Requirement / normative IU | Evidence is a raw_entity (report file path, verification-artifact path, Directus item id, code module, SQL entity) — NOT an IU, does NOT satisfy OQC, not in the relation graph |
iu_entity_binding with binding_kind = evidences (+ entity_reference_registry) |
no APR — already available |
| raw_entity | raw_entity | out of scope — not Fabric's concern | n/a |
boundary_rule (QG4):
- IF the evidence target is a raw evidence entity (a report PATH / verification
artifact FILE / Directus item id / code module / SQL entity that is NOT itself
a registered IU) THEN: DO NOT use evidenced_by. Use `iu_entity_binding` with
`binding_kind = evidences` (+ entity_reference_registry). NO APR is needed; this
mechanism already exists (WS-1 binding note §2; OD-FA2 Option D hybrid).
- `evidenced_by` (PROPOSED — NOT APPROVED) is reserved STRICTLY for IU <-> IU
evidence where BOTH ends are governed Objects/IUs (OQC >= 3/4).
- Rationale: a universal_edges endpoint MUST be an OQC>=3/4 Object (P44-4A §2.1).
A raw_entity fails OQC, so it cannot be an evidenced_by endpoint by construction.
distinction_from_binding:
- iu_entity_binding `binding_kind=evidences` = IU <-> raw external/business entity
(bind-by-reference; SQL/entity stays SSOT; append-only retracted_at).
- evidenced_by (PROPOSED) = IU <-> IU durable semantic graph edge participating in
universal_edges (reverse-index, INV-DUAL, P44-4A 8+3 vocab).
- They are NOT interchangeable: one binds to a non-IU authority entity; the other
is a first-class relation-graph edge between two IUs.
6. Examples from the WS-3 sample chain (QG5)
Source: WS-3 sample chain collection_structure (human label "cấu trúc collection"), nodes N1–N7. The evidentiary relation is R6 in the WS-3 per-relation mechanism table.
6.1 Sample-chain context (verbatim node roles)
N2: internal_incomex_law / normative_authority (+ evidence_authority override on appendix span)
canonical_address: ICX-LAW/DIEU-12-COLLECTION-STRUCTURE
N3: internal_process / normative_authority
canonical_address: ICX-PROC/QT-COLLECTION-PROVISION-S3
N6: report / evidence_authority
canonical_address: RPT-COLLSTRUCT-2026/SEC-FINDINGS
N7: lesson / evidence_authority
canonical_address: LSN-COLLSTRUCT-2026/L-1
6.2 The evidentiary relation R6 — how evidenced_by would model it (PROPOSED, NOT APPROVED)
In WS-3 the relation R6: N6 (report) → {N2 (requirement IU), N3 (process IU)}, relation_kind = evidence-of was rendered via alternative B (assembly-local, output-only, NOT persisted) precisely because evidenced_by is APR-GATED and NOT approved. GPT ruled that route ACCEPTED.
Had the edge been approved (it is NOT — illustrative only):
example_1 (R6a): # ILLUSTRATIVE — edge NOT approved, NOT created
source_ref: { collection: information_unit, code: "ICX-LAW/DIEU-12-COLLECTION-STRUCTURE" } # N2 requirement IU
edge_type: evidenced_by # PROPOSED — APR-GATED — NOT CREATED
target_ref: { collection: information_unit, code: "RPT-COLLSTRUCT-2026/SEC-FINDINGS" } # N6 report IU
reverse: N6 evidences N2
meaning: "Report N6 attests requirement N2 (collection-structure) was satisfied."
example_2 (R6b): # ILLUSTRATIVE — edge NOT approved, NOT created
source_ref: { collection: information_unit, code: "ICX-PROC/QT-COLLECTION-PROVISION-S3" } # N3 process IU
edge_type: evidenced_by # PROPOSED — APR-GATED — NOT CREATED
target_ref: { collection: information_unit, code: "RPT-COLLSTRUCT-2026/SEC-FINDINGS" } # N6 report IU
meaning: "Report N6 attests process N3 was performed."
6.3 Contrast — what stays on iu_entity_binding, NOT evidenced_by (QG4 example)
In the SAME chain, R3/R4: N3 (process IU) → N4 (sql_entity, raw) / N5 (code_artifact, raw) are iu_entity_binding with binding_kind = implements because N4/N5 are raw_entity (is_iu: false). By the §5.2 boundary rule, if a report existed only as a raw file path (not a report IU), its evidentiary link would likewise be iu_entity_binding binding_kind=evidences — NOT evidenced_by. evidenced_by (PROPOSED) applies only to the IU↔IU case (N2/N3 ↔ N6/N7).
6.4 Lesson node N7 — contrast with derived_from
N7 (lesson) → N6 (report) is R7 = derived_from (lesson_from → derived_from, a Candidate edge), NOT evidenced_by: a lesson's creation provenance is the report, which is distinct from a lesson attesting a requirement. This concretely demonstrates the §4 derived_from distinction inside the sample chain.
7. Anti-drift, provenance, lifecycle/governance requirements
7.1 Conformance to P44-4A E1–E8 logical fields (no SQL — QG7)
evidenced_by (NOT APPROVED) edges, if ever approved, MUST conform to the P44-4A §4.1 minimum logical-field contract (stated logically; no DDL):
E1 edge_id: 1..1 identifier, PK, immutable
E2 source_ref: composite {collection,id,code}; resolves to OQC>=3/4 IU; validate via OQC
E3 target_ref: composite {collection,id,code}; resolves to OQC>=3/4 IU; validate via OQC
E4 edge_type: = evidenced_by ∈ vocab framework (ONLY after §3.3 step 4 amend — NOT done here)
E5 confidence: decimal [0.0,1.0]; semantic/derived → MAY be <1.0 with confidence_method
E6 provenance: REQUIRED post-Đ44 (see §7.3)
E7 status: enum {proposed, active, deprecated, retired}; default `proposed` (derived edge)
E8 valid_time + timestamps: {valid_from, valid_to?, created_at, updated_at, created_by, updated_by}
7.2 Anti-drift constraints
anti_drift:
- symmetric: NO. Forward `evidenced_by` only; reverse `evidences` served via
P44-4A §6 reverse-index (P1/P2/P3 deferred) — NOT a second hand-written row.
- endpoint discipline: IU<->IU ONLY (OQC>=3/4 both ends); raw evidence MUST route
to iu_entity_binding (§5.2) — prevents the edge absorbing binding semantics.
- vocabulary discipline: edge_type list MUST be read from vocab framework, never
hardcoded (P44-4A NT4); evidenced_by enters vocab ONLY post-APR-PASS (NOT now).
- semantic non-overlap: evidenced_by MUST NOT be used where references/implements/
derived_from/governed_by already apply (§4) — prevents vocabulary bloat / drift.
- INV conformance: INV-E1..E8 apply; in particular INV-E2 (both refs resolve),
INV-E3 (edge_type ∈ vocab + correct namespace), INV-E4 (provenance complete),
INV-E5 (>=2 status states with real rows in production — audit OQC-2).
- no assembly-local leakage: assembly-local "evidence-of" annotations (WS-3 alt B)
MUST NOT be silently promoted into persisted evidenced_by rows without this APR.
7.3 Provenance requirements (P44-4A §4.3 / §3.3 step 3)
provenance: REQUIRED post-Đ44 (INV-E4; missing => birth blocked, Đ44 §9.4)
creator: DOT / agent / human that created the edge (e.g. dot_universal_edges_writer)
method: structural | derived | manual (evidenced_by typically `derived` or `manual`)
source_context: artifact that produced the edge (e.g. compliance assembly run id, APR decision id)
timestamp: ISO 8601
confidence_method: present iff E5 confidence < 1.0 (e.g. embedding_cosine=… / human_attested)
7.4 Lifecycle / governance requirements
lifecycle:
default_state: proposed # derived edge default (P44-4A §4.4)
transitions:
proposed -> active: after DOT Cap-4 checker verify OR human review
active -> deprecated: when superseded (via `supersedes` edge)
deprecated -> retired: after grace period (defer post-pilot)
oqc2_audit: >=2 status states MUST have real rows in production (INV-E5)
governance:
approval_required_before_ANY_use:
- APR cấp medium (Đ32) [GPT/User decision — NOT here]
- amend edge_type vocab framework (P44-4A §3.3 step 4 / NT4) [post-PASS — NOT here]
- DOT Cap-4 checker extended for evidenced_by (§3.3 step 5) [post-PASS — NOT here]
owner_law_tag: owner_law_code = NRM-LAW-44 (object edge; namespace scheme = OPEN P44-4-α)
candidate_edge_dependency_note: >
evidenced_by itself is NOT a P44-4A Candidate; it is a §3.3 EXTENSION. It does
not depend on governed_by/derived_from activation, but the broader minimization
(constrains->governed_by, lesson_from->derived_from) does — tracked as BP-WS2-2,
NOT resolved here.
decision_authority: GPT / User ONLY. The agent MUST NOT approve this APR.
8. Explicit non-approval statement
NOT_APPROVED: true # this draft does NOT approve evidenced_by
NOT_CREATED: true # no edge type created
VOCAB_NOT_AMENDED: true # edge_type vocab framework untouched
CAP4_NOT_EXTENDED: true # DOT Cap-4 checker untouched
NO_SCHEMA / NO_CODE / NO_SQL / NO_DRYRUN / NO_DIRECTUS_MUTATION / NO_CUT / NO_VERIFY: true
GPT_USER_DECISION_REQUIRED: true # sovereign decision: approve | reject | defer
SELF_ADVANCE: PROHIBITED # no advance to compliance_matrix / schema / production
This APR draft is a proposal only.
evidenced_byis NOT APPROVED and NOT CREATED. Approval, rejection, or deferral is a GPT/User sovereign decision (APR cấp medium, Đ32). Until that decision, WS-3 and all downstream work must continue to use the assembly-local /iu_entity_bindingalternatives exactly as in the GPT-accepted WS-3 proof. Compliance_matrix proof remains DEFERRED and is not addressed here (QG8).
End of evidenced_by Edge APR Draft (design-only). Companion files: risk-and-alternative review, APR-draft report.