Skip to content

Replace diagnostic-prose fact association with typed links #51

Description

@woksin

Learning

GenerationFactDispositionCalculator currently associates diagnostics with facts by parsing human-readable GenerationDiagnostic.Message text for quoted FactIds. Adapter-authored prose can accidentally or maliciously name another fact and change its disposition. Generation #24 requires typed report links and cannot treat diagnostic prose as causality.

Scope

  • Add additive typed fact/claim association to generation diagnostics or an equivalent frozen pipeline record.
  • Populate typed associations at resolver, derivation, lowering and disposition stages.
  • Remove message parsing from disposition calculation.
  • Keep human-readable messages presentation-only and preserve existing codes/severity/outcomes/source/subject APIs.

Acceptance criteria

  • Diagnostic prose naming an unrelated FactId cannot affect that fact.
  • Direct and derived facts receive exact typed diagnostic links.
  • Conflicted/omitted dispositions retain deterministic associated diagnostics.
  • Missing, duplicate, dangling and direct-to-derived typed links fail closed.
  • Fact/diagnostic order and message changes do not alter dispositions or canonical output.
  • Existing diagnostic messages remain source/binary compatible.
  • Generation Project a deterministic realization and provenance report #24 can project links without parsing prose.
  • Package validation and unchanged legacy/current consumers pass.

Related: #24, #19, #17.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions