# Schema Change Notes

## Scope

This note covers schema changes made during the second content stabilization pass.

## Changed Schemas

### `schemas/source_article.schema.json`

Change:

- Formalized `source_type` enum:
  - `original_article`
  - `synthesis_note`
  - `placeholder`
- Formalized `source_status` enum:
  - `representative`
  - `derived_synthesis`
  - `placeholder`

Reason:

- Current data already used `synthesis_note` and `derived_synthesis`.
- The schema now matches implementation data instead of leaving enum drift implicit.

### `schemas/source_excerpt.schema.json`

Change:

- Added required `quote_status`.
- Added required `source_location`.
- Formalized `quote_status` enum:
  - `exact`
  - `condensed`
  - `paraphrased`
- Formalized `excerpt_type` enum:
  - `definition`
  - `taxonomy`
  - `mechanism`
  - `application_rule`
  - `value_claim`
  - `boundary_rule`
  - `validation_rule`

Reason:

- Distinguishes exact quotes from compressed or paraphrased evidence.
- Prevents `raw_excerpt` from silently containing condensed text.

### `schemas/regression_case.schema.json`

Change:

- Expanded `case_type` enum:
  - `positive`
  - `boundary`
  - `misuse`
  - `no_call`
  - `selector_gate`
  - `pipeline`
- Added optional evaluable fields:
  - `should_call_model`
  - `expected_primary_model`
  - `negative_expected_models`
  - `expected_classification`
  - `expected_dominant_scarcity`
  - `expected_max_depth`
  - `minimum_required_elements`
  - `forbidden_elements`
  - `evaluation_mode`

Reason:

- Supports no-call, false-positive, selector-gate, and structured review cases without adding LLM evaluation.

## Not Changed

### `schemas/model_card.schema.json`

No new required model-card fields were added in this pass.

Reason:

- QPI and Intellectual Archaeology output contracts were strengthened in model JSON and cards.
- Making those fields schema-required is left for CCRA / Owner review to avoid over-weighting v0.2.

### `schemas/model_index.schema.json`

No additional index semantics were added in this pass.

Reason:

- Index continues to mirror model/card state and counts.
- Content review status remains in `reports/model_review_status.json`, not `model_index.json`.
