# CQR Query→Gold Causal-Path Audit — Summary v2 (Addendum 2)

Re-run of `path_audit_v1` with two corrections per Addendum 2: (1) operates on a fresh hash-verified copy of `cqr_datadir_primary` — the actually-measured graph — not `cqr_datadir_pristine` (the pre-lift snapshot; `census_conflict_addendum_v1.md` proved primary carries 549 `concept_relation` + 646 `consequence`-tagged edges pristine never saw). (2) Strict causal class now selects on `metadata.custom_edge_type in {concept_relation, consequence}`, not on the graph-level `edge_type` — v1's `edge_type=="concept_relation"` filter silently missed every `consequence`-tagged edge, since `create_typed_edge` (`engram_store.py:5258-5324`) always writes `edge_type=EdgeType.SEMANTIC` at the enum level for AURA-style string-typed edges and stashes the real type only in `metadata["custom_edge_type"]` (`:5316`).

Apparatus: `git_sha=5f849f9d220199f337421b0289a0f213dc60a6b8` (unchanged from v1/the census addendum — no code changed between runs), `datadir_source=cqr_datadir_primary`, `datadir_copy_hash` verified unchanged before/after both passes, both passes byte-identical (`double_pass_identical: true`). `edge_type_counts_in_datadir: {concept_relation: 549, semantic: 3334, consolidated: 628}`; `custom_edge_type_counts_in_datadir: {concept_relation: 549, consequence: 646, entity_coref: 1583, structural_adjacency: 1105, None: 628}` — matches the census addendum's independently-computed numbers for `primary` exactly. Full machine-readable output: `path_audit_v2.json`.

## (a) Per-question seed sets vs v1 — confirmed, not assumed

| qid | v1 (pristine) seed count | v2 (primary) seed count | node_ids identical |
|---|---|---|---|
| 01_cloudflare_outage_2025-11-18.md | 403 | 403 | yes |
| 02_gitlab_db_outage_postmortem_2017-01-31.md | 393 | 393 | yes |
| 03_gitlab_issue_17057.md | 440 | 440 | yes |
| 05_gitlab_issue_18596.md | 398 | 398 | yes |
| 06_gitlab_issue_15999.md | 419 | 419 | yes |
| 07_aws_s3_disruption_2017-02-28.md | 377 | 377 | yes |
| 10_backstage_adr005_catalog_core_entities.md | 410 | 410 | yes |
| 13_twilio_billing_postmortem_2013.md | 384 | 384 | yes |

All 8 seed sets are exact-set-identical (not just same count) between the pristine-based v1 run and this primary-based v2 run — checked by direct list comparison, not inferred from counts alone. Consistent with the seed mechanic being edge-independent (`activate_text`'s pre-propagation SDR/LSH-overlap scoring reads only `_sdr_matrix`/`_lsh_index`, never `_edge_matrix`/`_edge_metadata`) and `engrams.msgpack` being byte-identical between `pristine` and `primary` (`sha256` checked directly before this run).

## (b) 8-row summary, with consequence-class edges on the shortest path

| qid | pair | seeds | strict path? | min hops | strict paths ≤6 hops (cap hit) | consequence edges on shortest path | concept_relation edges on shortest path | relaxed min hops |
|---|---|---|---|---|---|---|---|---|
| 01_cloudflare_outage_2025-11-18.md | 01 | 403 | yes | 0 | 405 (capped) | 0 | 0 | 0 |
| 02_gitlab_db_outage_postmortem_2017-01-31.md | 02 | 393 | yes | 0 | 16731 (capped) | 0 | 0 | 0 |
| 03_gitlab_issue_17057.md | 03 | 440 | yes | **1** | 1 (capped) | **1** | 0 | 1 |
| 05_gitlab_issue_18596.md | 05 | 398 | yes | 0 | 0 (capped) | 0 | 0 | 0 |
| 06_gitlab_issue_15999.md | 06 | 419 | yes | 0 | 1078 (capped) | 0 | 0 | 0 |
| 07_aws_s3_disruption_2017-02-28.md | 07 | 377 | yes | 0 | 0 (capped) | 0 | 0 | 0 |
| 10_backstage_adr005_catalog_core_entities.md | 10 | 410 | yes | 0 | 0 (capped) | 0 | 0 | 0 |
| 13_twilio_billing_postmortem_2013.md | 13 | 384 | yes | 0 | 25687 (capped) | 0 | 0 | 0 |

**`path_count_cap_hit=true` for all 8 probes** — the 500,000-state DFS exploration safety valve fired in every case, given the denser causal subgraph (1195 edges vs v1's 699) combined with ~400-member seed sets each spawning an independent DFS tree. `path_count_within_cap` is therefore a **lower bound, not an exhaustive count**, for all 8 rows in this v2 run (v1's counts, by contrast, never hit the cap and were exhaustive). `min_hops` and `exists_within_cap` are unaffected — both come from a separate, uncapped BFS with a proper visited-set that terminates naturally, not the DFS enumeration.

**One direct, concrete comparison to v1, plain fact:** pair 03's shortest path connects the identical `(source, target)` engram pair in both runs (`1f82f2ed-e8e3-4cfb-bfc2-1ead60c2c2e2` → `ce0d0527-dcea-45f9-9a61-02d2e5d73557`), but the edge's own recorded type differs — v1 (pristine) reads `edge_type=concept_relation, weight=0.5`; v2 (primary) reads `edge_type=semantic, custom_edge_type=consequence, weight=1.0` on the same key. Consistent with the `(source,target)`-keyed last-writer-wins overwrite semantics already documented in the census addendum (the lift's 646 writes include 150 overwrites of pre-existing `concept_relation` edges at the same key) — this is one concrete instance of that class, not independently re-traced beyond the key match shown here.

No discrimination-vs-linking reading or manuscript disposition is drawn here — report only, per the addendum's instruction.
