Classification
Contract/semantic-domain debt exposed by PR #282. Blocked by flyingrobots/echo#679.
Problem
Jim owns the checkpoint reason domain, but the transitional GraphQL contract currently declares reason: String!. The generated request model therefore accepts an arbitrary string, while native Jim separately defines the closed CheckpointReason enum and maintains handwritten string-to-enum and enum-to-string mappings.
The current native witnesses are intentionally fail-closed and prove the five accepted values. They do not give schema-to-native compile-time exhaustiveness: a future variant can drift across the authored schema, generated ABI, native enum, mapping functions, and tests.
Evidence
Why it matters
A checkpoint reason changes the meaning and identity of Jim's checkpoint proposition. Treating that domain as an open string in one layer makes semantic drift a runtime concern at an authority boundary.
Constraints
- Do not hand-edit generated artifacts.
- Jim continues to own checkpoint semantics.
- Echo continues to own admission, scheduling, receipts, ticks, WAL, and causal history.
- Invalid or unknown values must fail before admission.
- Keep this as compatibility work; Edict remains the intended native invocation path.
Acceptance criteria
Related
Classification
Contract/semantic-domain debt exposed by PR #282. Blocked by flyingrobots/echo#679.
Problem
Jim owns the checkpoint reason domain, but the transitional GraphQL contract currently declares
reason: String!. The generated request model therefore accepts an arbitrary string, while native Jim separately defines the closedCheckpointReasonenum and maintains handwritten string-to-enum and enum-to-string mappings.The current native witnesses are intentionally fail-closed and prove the five accepted values. They do not give schema-to-native compile-time exhaustiveness: a future variant can drift across the authored schema, generated ABI, native enum, mapping functions, and tests.
Evidence
Why it matters
A checkpoint reason changes the meaning and identity of Jim's checkpoint proposition. Treating that domain as an open string in one layer makes semantic drift a runtime concern at an authority boundary.
Constraints
Acceptance criteria
RopeCheckpointReasonenum with exactly Jim's supported values.Related