# Phase 165.5-02 Graph Diff Staging Summary

Status: implemented in working tree

## Goal

Close the next `999.83` slice by making `graph_diff` produce downstream
literature-intake staging units, instead of stopping at runtime reporting.

## What Landed

- `literature_intake_support.py` now projects graph-diff signals into bounded
  literature fast-path candidate units:
  - `diff.added.node_labels` -> `claim_card`
  - `diff.removed.node_labels` -> `warning_note`
- diff-derived units now carry durable graph-analysis provenance:
  - `graph_analysis_kind=graph_diff_added`
  - `graph_analysis_kind=graph_diff_removed`
- service-level `literature_intake_stage` execution now treats graph-diff-only
  runtime payloads as sufficient to produce staging output, even when the
  immediate `L1` concept-graph signal itself is otherwise sparse
- isolated acceptance now exists for the full path:
  - `runtime/scripts/run_l1_graph_diff_staging_acceptance.py`

## Verification

- `python -m pytest research/knowledge-hub/tests/test_literature_intake_support.py -q`
- `python -m pytest research/knowledge-hub/tests/test_aitp_service.py -q -k "graph_diff or literature_intake_stage"`
- `python -m pytest research/knowledge-hub/tests/test_runtime_scripts.py -q -k "graph_diff or graph_analysis or mode_enforcement"`
- `python -m pytest research/knowledge-hub/tests/test_runtime_profiles_and_projections.py -q -k "graph_analysis"`
- `python -m pytest research/knowledge-hub/tests/test_schema_contracts.py -q`
- `python research/knowledge-hub/runtime/scripts/run_l1_graph_diff_staging_acceptance.py --json`

## Outcome

`999.83` now has a third closed slice:

- concept-graph drift can now create bounded `L2` staging work, not just
  operator-visible runtime notes
- newly surfaced concepts and retired concepts can now enter the same staging
  surface as assumptions, regimes, method signals, and bridge questions

## Remaining Open Work Inside 165.5-02 / 999.83

- richer graph heuristics beyond shared-label/shared-foundation bridges
- route- or promotion-level policy that treats graph drift as a stronger gating
  signal than ordinary staging drift
- any later decision to move the project from `999.83` completion into
  `165.5-03 / 999.84` Obsidian graph export
