Skip to content

fix: guard the widget's :: radio-group namespace + skip empty-enum PROGRESS schema (confirmation-pass-2) - #55

Merged
silversurfer562 merged 2 commits into
mainfrom
claude/forms-pass2-widget-guards
Aug 20, 2026
Merged

fix: guard the widget's :: radio-group namespace + skip empty-enum PROGRESS schema (confirmation-pass-2)#55
silversurfer562 merged 2 commits into
mainfrom
claude/forms-pass2-widget-guards

Conversation

@silversurfer562

Copy link
Copy Markdown
Member

What

Two confirmation-pass-2 needs-a-look findings (library review, 2026-08-20), recovered from uncommitted work found in the main checkout during a session sweep — the changes existed in no commit on any branch. Preserved here atomically.

  • :: radio-group namespace guardform_from_dict now rejects a field id that collides with a TRIAGE / ASSUMPTION_REVIEW board's a::<idx> widget radio-group namespace, symmetric with the existing dotted-key guard. A sibling field id literally a::1 emitted a group sharing that name, so the browser fused the two into one mutually-exclusive group and one field became unanswerable in the widget. Rejected at definition time so the colliding HTML is never rendered.
  • Empty-enum PROGRESS — a display-only PROGRESS field (no blocked options) no longer projects to {"type": "string", "enum": []} in the elicitation schema — an empty enum is a property no value can satisfy (unanswerable field / whole-schema rejection on a strict client). Such a report is narrated, not answered, so it is skipped from properties/required; a PROGRESS carrying blocked options is a real single-pick and still projects.

Tests

Regressions in test_triage_construct.py and test_elicitation_schema.py. Full suite: 681 passed.

Source: confirmation-pass-2 needs-a-look ledger, 2026-08-20.

🤖 Generated with Claude Code

…PROGRESS in the elicitation schema (confirmation-pass-2)

Two confirmation-pass-2 needs-a-look findings (library review,
2026-08-20), recovered from uncommitted work in the main checkout.

- form_from_dict now rejects a field id that collides with a TRIAGE /
  ASSUMPTION_REVIEW board's "a::<idx>" widget radio-group namespace,
  symmetric with the existing dotted-key guard. A sibling field id
  literally "a::1" shared a radio group's `name`, so the browser fused
  the two into one mutually-exclusive group and a field became
  unanswerable in the widget.
- A display-only PROGRESS field (no blocked options) no longer projects
  to `{"type": "string", "enum": []}` in the elicitation schema — an
  empty enum is a property no value can satisfy. Such a report is
  narrated, not answered, so it is skipped from properties/required; a
  PROGRESS carrying blocked options is a real single-pick and still
  projects.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@silversurfer562
silversurfer562 force-pushed the claude/forms-pass2-widget-guards branch from c15ac32 to ec065e5 Compare August 20, 2026 13:08
@silversurfer562
silversurfer562 merged commit 6d6b383 into main Aug 20, 2026
7 checks passed
@silversurfer562
silversurfer562 deleted the claude/forms-pass2-widget-guards branch August 20, 2026 13:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant