Repository navigation
Show unanswered questions for undecided benefits - #580
Merged
Merged
Conversation
A nested field sharing its key with an unneeded top-level path was removed from the form while still listed as unanswered, and nested fields were never hidden because checks name them by full path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The eligibility service receives whitespace unchanged, so prompting for it contradicted what was evaluated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Array normalization, unanswered-question labels and question hiding each joined group paths and keys separately. They now share forEachKeyedField and joinPath, and the answer lookup refuses unsafe object keys like normalizeArrayFieldData does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Questions were deduplicated by label text, so client and spouse fields both labelled "Date of birth", or several people in a repeated section, collapsed into one entry that didn't say whose answer was missing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both form renderers copied the same memo; the shared connection now takes the schema and evaluated answers and derives the questions itself, so later fixes land in one place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The memo compared by identity and the helper returns a new object each time, so every answer edit or evaluation copied, froze and republished identical questions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The schema was walked again on every answer edit or evaluation to rebuild the path-to-label map. indexQuestions builds it once per schema, and unansweredQuestions only looks answers up against it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The memo already builds a fresh object for each form, so the service now freezes it in place instead of deep-cloning it, and assigns it directly instead of through a conditional spread. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Labels came from every keyed field, so Next steps and the print summary could ask for an answer to a question form-js was hiding, such as spouse income for someone who isn't married. The value paths form-js clears for hidden fields are now skipped, judged again after each import. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
prestoncabe
force-pushed
the
560-unanswered-next-steps
branch
from
October 29, 2026 23:46
d5f94ab to
497a87e
Compare
prestoncabe
marked this pull request as ready for review
October 29, 2026 23:50
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.
Undecided benefits now list the unanswered questions they still need in Next steps and Print summary. Answering those questions clears the prompts as the benefit becomes decided.
Closes #560. Follow-up to #552 after #579.
Validation on the rebased branch: 328 frontend tests across 50 files, production frontend build, 12 public screener/CRM browser tests, and
git diff --checkpassed. All six GitHub Actions checks passed on head497a87e8before merging, including the full end-to-end suite.