Repository navigation
Conversation
…tatuses On presentation.write, binding_invalid, constraint_violation and resource_exhausted map at 400, frame_unavailable at 404 and release_mismatch at 503, the statuses the Presentation write routes serve. presentation.render keeps 422 and 409. frame_unavailable's definition names the causes it covers: a frame never stored, expired, revoked, or whose stored artifact is missing, quarantined, or fails its digest check. A frame store that fails to answer is service_unavailable, which presentation.write and presentation.render already map at 503.
The render routes read the stored revision they draw, and that read refuses edit_conflict (409) when the component has no current revision. edit_conflict maps to presentation.render at 409, and its definition names that case beside a revise of a revision that is no longer current.
frame_unavailable's definition names each case Presentation refuses with it: a frame never stored or published, expired, or revoked, a spec in quarantine, and a stored artifact that is missing, fails its digest check, does not decode, or holds more rows than Presentation loads.
jm-rivera
marked this pull request as ready for review
October 23, 2026 06:31
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On
presentation.write,binding_invalid,constraint_violationandresource_exhaustedmap at 400,frame_unavailableat 404 andrelease_mismatchat 503. Those are the statusesPOST /api/presentation/componentsandPATCH /api/presentation/components/{component_id}serve, where the registry gave 422 and 409.presentation.renderkeeps 422 for the first two and 409 for the other three, the statuses the render routes serve.The registry holds one status per endpoint, and the write routes served
frame_unavailableat 404 or 503 by cause. The 503 cause, a frame store that fails to answer, goes out asservice_unavailablein DevelopmentFinanceObservatory/apis#75, and both Presentation endpoints already map that code at 503.frame_unavailable's definition names each case it still covers: a frame never stored or published, expired, or revoked, a spec in quarantine, and a stored artifact that is missing, fails its digest check, does not decode, or holds more rows than Presentation loads.edit_conflictmaps topresentation.renderat 409. The render routes read the stored revision they draw, and that read refusesedit_conflictwhen the component has no current revision, so the render routes already serve it. Its definition names that case.The three registry commits sit on main, the commit dfo-apis pins today, and the branch then merges dev to settle a
CHANGELOG.mdconflict. DevelopmentFinanceObservatory/apis#75 pins 4f927c0, the last registry commit, so it takes none of dev's unreleased entries. Whichever of DevelopmentFinanceObservatory/apis#75 and DevelopmentFinanceObservatory/apis#72 merges second moves the pins to the spec-kit release commit.Testing:
tools/validate_registry.pyvalidates the registry at 4f927c0 and at the merged head, andtools/testspasses 53 tests.python/spec-kitpasses 259 tests, andpython/dfo-spec-kit-components/tests/test_registry_consistency.pypasses 3.registries/codes.jsonand its bundled mirror are byte-identical. In dfo-apis at this pin,just checkpasses apart from one order-dependent graph release test that DevelopmentFinanceObservatory/apis#65 fixes.