Repository navigation
QA run · records-forms.field-type-matrix (1/1) · 55a806a7 · 2026-10-17 · 1 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #24125
Description
Run record for the re-run #24036 (half B) asks for after revising this item. Runner: an os-dev subagent dispatched by the domain:devx seat 2 PM (session session_016PVjjuVPte5XEJvaQx1E4t). Protocol: .claude/skills/checklist-test/SKILL.md + docs/qa/platform-checklist/RUNNER.md. Executed sequentially (no subagent tool in this runner).
Environment fingerprint
- framework:
55a806a78c0442243a8ac22e7dbc6f7b2c4b3bb0on branchclaude/issue-24036-ledger-b, the commit the app was built from. Its product tree isorigin/main8a83cebc1; the branch addsdocs/qa/platform-checklist/areas/*.jsononly, and its later commits touch those files alone. Built withpnpm install --frozen-lockfileandturbo run build(75/75 tasks). .objectui-sha:f8267df93aba8fb09cc1cc0692eadc0c8c5a5e56. The console was built withpnpm objectui:buildat that pin, andcheck:console-shareadsConsole dist matches the objectui pin (objectui@f8267df93aba).- boot:
OS_LOG_LEVEL=info OS_PORT=41931 objectstack dev --ui --seed-admin -p 41931 -d file:(run dir)/hk/data.dbfromexamples/app-showcase, its own port and file DB (the CLI also provisioned the siblingdata.telemetry.db), stopped by its own process-group id afterwards. - browser: Playwright (playwright-core 1.63) on
/opt/pw-browsers/chromium, signed in through the console form; controls read per[data-field]container of the Edit Field Zoo form after a screenshot - persona(s): the seeded admin (
admin@objectos.ai), identity proven withGET /api/v1/auth/get-sessionbefore the first cell - timestamps: 2026-10-17, 01:19Z to 01:24Z
Scope
Selector records-forms.field-type-matrix resolves to 1 runnable item: records-forms.field-type-matrix at revision 3, P1, surface mixed. No planned or blocked-hidden item.
Per-clause verdicts
| # | clause (short) | verdict | evidence |
|---|---|---|---|
| 0 | HTTP round-trip matrix (pin) | pass | field-zoo-roundtrip.dogfood.test.ts + field-zoo-value-shape.test.ts: 2 files, 91 passed, 0 failed; no xfail rows |
| 1 | per-variant widget table | pass | Specimen — Full in edit mode: every f_* field rendered its dedicated control (table below — 47 distinct types on the zoo + text on name + summary on its carrier = 49). richtext, markdown, html and code render the mono textarea-based widgets, which the revised clause counts; formula and vector render read-only values; autonumber is absent from the form and read-only "0001" on the detail page |
| 2 | constrained types reject server-side | pass | f_select not-a-value → 400 VALIDATION_FAILED fields[0] {field: f_select, code: invalid_option}; name "" → 400 {field: name, code: required}; zoo count 2 → 2 |
| 3 | credentials masked on read | pass | the pin's masked checks pass; raw GET of Specimen — Full: f_password "••••••••"; a created row with f_secret and f_password written reads both as "••••••••", no plaintext anywhere in the body |
| 4 | computed / system types materialize | pass | created row (f_number 42, f_percent 75): f_formula 31.5, f_autonumber "0003". The form edit (f_number 43) re-read f_formula 32.25 |
| 5 | relational types refuse a dangling id | pass | fabricated id on f_lookup, f_master_detail and f_tree → 400 VALIDATION_FAILED reference_not_found each ("no showcase_account / showcase_project / showcase_field_zoo record has id …"); the pin round-trips real ids |
| 6 | summary on its real carriers | pass | INV-1001 1619.96, INV-1002 198, INV-1003 299.94, INV-1004 450 = the sum of each invoice's line amounts; EXP-2001 total_amount 1500.5, approved_amount 960 |
Automated pins run (RUNNER rule 6)
packages/qa/dogfood/test/field-zoo-roundtrip.dogfood.test.ts+field-zoo-value-shape.test.ts: 2 files, 91 passed, under the shared verify lock.
Variant → widget table (clause 1)
| field | type | observed control |
|---|---|---|
| name | text | input (the form's Name) |
| f_textarea | textarea | textarea |
| f_email | input[email] | |
| f_url | url | input[url] |
| f_phone | phone | input[tel] |
| f_password | password | input[password] · icons: lucide-eye |
| f_secret | secret | input[password] · icons: lucide-eye |
| f_markdown | markdown | textarea-based widget (mono), dedicated by design |
| f_html | html | textarea-based widget (mono), dedicated by design |
| f_richtext | richtext | textarea-based widget (mono), dedicated by design |
| f_number | number | input[number] |
| f_currency | currency | input[number] |
| f_percent | percent | number + slider (percent-slider) |
| f_date | date | input[text] · buttons: Clear date/Open calendar · icons: lucide-x,lucide-calendar-days |
| f_datetime | datetime | input[text] · buttons: Clear date/Open calendar · icons: lucide-x,lucide-calendar-days |
| f_time | time | input[time] |
| f_boolean | boolean | button[button]{switch},input[checkbox] |
| f_toggle | toggle | button[button]{switch},input[checkbox] |
| f_select | select | button[button]{combobox},select · buttons: High · icons: lucide-chevron-down |
| f_multiselect | multiselect | chip multiselect (Red / Green / Blue) |
| f_radio | radio | div{radiogroup},input[radio] · icons: lucide-circle |
| f_checkboxes | checkboxes | button[button]{checkbox},input[checkbox] · icons: lucide-check |
| f_tags | tags | input · buttons: Remove alpha/Remove beta |
| f_lookup | lookup | · buttons: Remove Northwind/Select…/Browse all records · icons: lucide-x,lucide-search,lucide-table-properties |
| f_lookups | lookup | · buttons: Remove Northwind/Remove Contoso/2 selected/Browse all records · icons: lucide-x,lucide-search,lucide-table-properties |
| f_master_detail | master_detail | · buttons: Remove Website Relaunch/Select…/Browse all records · icons: lucide-x,lucide-search,lucide-table-properties |
| f_tree | tree | · buttons: Select…/Browse all records · icons: lucide-search,lucide-table-properties |
| f_user | user | · buttons: Select… · icons: lucide-search |
| f_users | user | · buttons: Select… · icons: lucide-search |
| f_owner | user | · buttons: Select… · icons: lucide-search |
| f_image | image | input[file] · buttons: Upload image · icons: lucide-image |
| f_file | file | input[file] · icons: lucide-upload |
| f_avatar | avatar | input[file] · buttons: Upload Avatar · icons: lucide-upload |
| f_video | video | input[file] · icons: lucide-upload |
| f_audio | audio | input[file] · icons: lucide-upload |
| f_formula | formula | read-only value (32.25), no input |
| f_autonumber | autonumber | not on the form; read-only "0001" on the detail page |
| f_composite | composite | JSON textarea ({ … } template) |
| f_repeater | repeater | · buttons: Duplicate row/Remove row/Duplicate row/Remove row · icons: lucide-grip-vertical,lucide-copy,lucide-trash,lucide-plus |
| f_record | record | JSON textarea ({ … } template) |
| f_location | location | LocationField input, placeholder "latitude, longitude" |
| f_address | address | structured: Street Address / City / State / ZIP / Country inputs |
| f_code | code | code widget (mono textarea, "// Write json code here...") |
| f_json | json | JSON textarea ({ … } template) |
| f_color | color | input[color],input[text] |
| f_rating | rating | stars, "4 / 5" |
| f_slider | slider | span{slider},input |
| f_signature | signature | canvas · buttons: Clear · icons: lucide-eraser |
| f_qrcode | qrcode | QR text input, "Enter text for QR code" |
| f_progress | progress | span{slider},input |
| f_vector | vector | read-only formatted vector 0.1200, … |
| (showcase_invoice.total) | summary | read-only roll-up on its carrier (clause 6) |
Reproduction rules
No clause scored fail, so none is owed. No authentication or authorization hole was found; nothing here is withheld under the RUNNER rule-2 carve-out.
Derived item verdict
records-forms.field-type-matrix r3: pass (7 pass of 7 clauses).
- The revised steps[2] and clause 1 hold as written: the four textarea-based widgets are their dedicated components (mono, their own placeholder), distinct from the generic f_textarea control.
- Form round-trip (step 3): the edit sent
PATCH {"f_number":43,"f_date":"2026-10-18"}(changed keys only) and the re-read matched.
Checklist-accuracy findings and fixture gaps from this run close out on #24036.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 17, 2026
Close-out (
domain:devxseat 2): every clause PASS; nothing to extract. Ruling C on #24127 (maintainer): a verification re-run of a ledger edit no longer carries aqa-runrecord, and the existing ones close out now. The revised itemrecords-forms.field-type-matrixlanded with #24141 (9ffe8af094), Part of #24036; itshistoryrow names #24036.Generated by Claude Code