# KG-2 Source Trace

Date: 2026-06-03
Run level: `execute_bound` for content-only publication to the already-provisioned app.

## Rebuild Input Set

KG-2 rebuilds the draft graph from KG-1 plus cycle-6, cycle-7, cycle-8, and cycle-9 evidence:

- C6: `build-1/evidence/cycle-6-tutor-citation-surface.md`, `cycle-6-route-verify.txt`
- C7: `build-1/evidence/cycle-7-tutor-surface-collect.md`, `cycle-7-route-verify.txt`
- C8: `build-1/evidence/cycle-8-accepted-output-index.md`, `cycle-8-route-verify.txt`
- C9: `build-1/evidence/cycle-9-source-backed-readiness.json`
- E: `envelopes/kg-promote-source-backed-record-envelope.json`
- M: `evidence/external-source-manifest.json`

This remains a draft KG packet. It does not mutate a production KG store and it does not promote any
record to `source_backed`.

## Cycle-9 Readiness Result

The Rust verifier at `build-1/kg/source-back-verify/` checked the external-source manifest, KG-1 node
records, KG-1 relationship records, and the source-backed promotion envelope.

| Measure | Result |
|---|---:|
| External source refs hash-verified | 7 of 7 |
| KG-1 records scanned | 18 |
| KG-1 relationships scanned | 16 |
| Missing KG record evidence refs | 0 |
| Missing KG relationship evidence refs | 0 |
| Externally hash-eligible records | 11 |
| Records promoted to `source_backed` | 0 |

The verifier reported two blockers only:

- `promotion_execute_disabled_by_envelope`
- `promotion_executor_type_human_only`

That means the remaining source-backed gap is no longer "can S1-S7 hash-verify?" The narrower gap is:
the existing promotion envelope is still execute-disabled and human-only. No governing authority envelope
was changed in this cycle.

## Rebuild Rule

- keep all records at `promotion_state: not_source_backed`;
- mark the source-backed promotion decision and gap as `evidence_status: checked` because the Rust
  verifier has checked hashes, evidence refs, and envelope blockers;
- carry the live tutor runtime gap forward because the public shell still has a static citation-check
  surface, not a runtime answer surface;
- keep the public deploy QA record checked through cycle 8 route-verification evidence;
- do not count `kg-2-draft-records.ndjson` as a new denominator for `accepted_output_index`; the frozen
  denominator remains 18 from cycle 7.

## Rebuild Summary

| Measure | KG-1 | KG-2 |
|---|---:|---:|
| Node records | 18 | 18 |
| Relationship records | 16 | 16 |
| Active unresolved gaps | 2 | 2 |
| Source-backed promotions | 0 | 0 |
| External source hash verification | manifest asserted | Rust verified 7 of 7 |

## Active Unresolved Gaps

| Record | Why it remains active |
|---|---|
| `kg2:gap:source-backed-promotion-execution-gate` | Hash and evidence checks pass, but the existing promotion envelope is `execute_enabled:false` and `executor_type:human_only`. |
| `kg2:gap:tutor-runtime-not-integrated` | The static citation-check page is route-verified, but no live tutor answer runtime with enforced citations is integrated. |

## Reviewer Note

This is a readiness crystallisation step, not a promotion step. It replaces a vague promotion block with
a checked distinction between source drift, missing evidence, and authority execution state.
