Fidelity
Declared per-axis fidelity and resume profiles
Declared, not promised
ASP's core stance: conversion fidelity is declared, never assumed. Every importer/exporter declares, per axis, a fidelity level and a loss list.
| level | meaning |
|---|---|
preserved | survives round-trip |
partial | degraded (merged, re-encoded) |
evidence-only | kept in evidence, not in the canonical projection |
dropped | dropped with a declared reason |
not-in-source | the source harness does not record this axis |
Measured (4 harnesses)
| axis | pi | claude | codex |
|---|---|---|---|
| messages / order | preserved | preserved (block-append merged) | preserved (dual-stream dedup) |
| tool chain | preserved | preserved | preserved |
| thinking | preserved (signature) | preserved (signature) | partial (summary→thinking; encrypted blob → unknown passthrough) |
| run/turn boundaries | partial | partial | preserved (turn_context) |
Resume profiles
Handoff fidelity means the exporter knows what the target harness needs to resume. Missing required fields → refuse to export (never silently degrade); non-required → declare loss.
The evidence layer
Round-trip fidelity comes from the evidence layer (the full ordered event stream), not the projection: exporters replay the importer's native payloads verbatim, synthesizing only when absent.
Full detail: asp/spec/fidelity.md.