Extraction readiness and validate - #669
Merged
marcvergees merged 4 commits intoAug 15, 2026
Merged
Conversation
marcvergees
merged commit Aug 15, 2026
e9a8c68
into
fireform-core:development-approach-c
2 checks passed
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.
Extraction readiness and validate
After extraction, the responder has to pick a form with nothing telling them which forms can actually be generated. They pick one, generation runs, and only then does a missing required field show up. These two endpoints answer it up front.
GET /extract/{extract_id}/readinesschecks the contract against every active template and returns, per template, ready or not plus the fields blocking it. That is the form selection screen.POST /extract/{extract_id}/validateis the same check for one template, so the UI can recheck the form the user is looking at after a correction instead of rebuilding the whole matrix.How a field is checked:
custom_fields, which is flat, so the key is read directly instead of walked.Contract change: validate listed only a 404. It can also return 409 when the extraction has not completed, same as readiness, so that response was added first.
Note: open template fields are not extracted yet, so a required open field always reports as a gap. The answer stays correct, just stricter than it will be later.
Tested live against the running stack as well as in the suite. Real extraction, then the readiness matrix, the correction loop and every error path. 31 new tests, both endpoints answer in about 5 ms.
Closes #551