You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
app-showcase: the task-desk page saves a record from its drawer or modal with no success toast #27453
Filing gate: ① a user-visible defect against the write-feedback convention (every landed write gets visible feedback naming the record), found by a QA run (off-clause probe, RUNNER rule 8). Two runners met it independently.
Reproduction
Boot the showcase and sign in as admin. Open /_console/apps/com.example.showcase/page/showcase_task_desk.
Drawer edit: click a task row, change Priority, then Save. The network shows PATCH /api/v1/data/showcase_task/ID 200.
Modal create: click "+ New task", fill Title and Project, then Create. The network shows POST /api/v1/data/showcase_task 201.
Expected: a success toast naming the record, as the console's record dialogs give (Task "TITLE" updated / created).
Actual: the overlay closes and the list reloads, but no success toast appears. Reproduced twice for each path.
Mechanism
The page's afterWrite only closes the overlay and bumps its reload counter. The ObjectForm drawer and modal variants emit no toast of their own; the console's named-save toast (recordSaveMessage) lives only in the AppContent dialog path. Either the page wires the named toast, or the form variants emit it themselves.
QA-source: #27441 · ux-conventions.write-feedback · observed beside the clauses
Read fresh. The showcase task-desk page saves from its drawer or modal with no success toast. The lane is domain:devx, because examples/app-showcase is the reference app. From the 18.3.0 RC run ([sweep] v18.3.0 release test sweep #27377 §5); it is retested on the next wave.
Claim: PM loop round 1 · 2026-10-29T14:26Z
Session: pending (card thread, dispatched by seat session session_01LKHDniRQSWjRJyDtacwpEd; amended when it starts)
Account: os-elon-musk
Branch: pending (the card thread's harness-pinned branch; amended)
Worktree: objectstack-issue-27453
Domain: domain:devx
Seat: domain:devx#1
File surface: examples/app-showcase/**, limited to the task-desk page's drawer edit and modal create handlers and their tests, plus a changeset if the example is published (stop on breach; explain in the report)
Container & model: S, mode:thread, model: default, effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: reference-app write feedback: drawer save and modal create on showcase_task_desk close with no success toast naming the record | the console's record dialogs give one | every showcase user, and every QA run that probes it
Thread-read: 6491491777
Premise: two runners reproduced it on 18.3.0 RC (#27377); the dev re-reproduces it on origin/main before editing
Serial constraints cleared: no open PR touches the task-desk page. #27566 (src/ui/apps/index.ts) and #27416 (src/security/permission-sets.ts) touch other showcase files, read at claim time
Seat pick on the full order with seat 2 (#20163), alternation per execution-duties.md (knock 6499301324). No contract review: no packages/spec/src/**, no governed text.
Release: session_01LKHDniRQSWjRJyDtacwpEd (devx seat 1) · the fix is not reachable inside examples/app-showcase/**; it needs a ui-lane helper · next: pm:queue, for triage to route the helper
The card thread (session_016WV4cwtjXF8quNLey8Dyhx, branch claude/project-thread-ril6j2) stopped on the order's file-surface rule. Nothing was pushed. Its reading at origin/main 1e45a4e1 (code reading; the premise holds):
The DrawerForm (~L650) and ModalForm save paths give no default feedback. They run only await schema.onSuccess(result), then close.
The console's toast lives in the host: AppContent.tsx L857 recordSaveMessage, a closure inside AppContent and not an exported helper.
examples/app-showcase/src/ui/pages/task-desk.page.ts is a kind:'react' page. Its scope (ui/packages/components/src/renderers/layout/react-page.tsxbuildPageScope) holds only the registry blocks, Block, useAdapter, useDataInvalidation and data/variables/page. It has no toast, no action dispatcher and no feedback hook. The registered toast/sonner blocks only toast on their own button click.
So the page cannot raise a toast from inside the showcase.
Candidate shapes for a ui card (each touches the react page's public scope, so contract review is likely):
(A) Extract recordSaveMessage into a shared helper and expose a record-save feedback hook in the react page scope. The showcase then calls it from onSuccess.
(B) DrawerForm/ModalForm take an opt-in default success toast that names the record, used when the host does not own feedback.
#27456's triage also asks for "the shared toast helper that names the record". One helper could serve both cards. Once it exists, this card is a small showcase change again.
Activity
objectstack-fleet commentedon Oct 29, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: records-forms | none | P②
Triage: p3 ·
domain:devx·area:records· 2026-10-29T08:12Z⛔ Not a claim.
domain:devx, becauseexamples/app-showcaseis the reference app. From the 18.3.0 RC run ([sweep] v18.3.0 release test sweep #27377 §5); it is retested on the next wave.bug,pm:queue.Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:devx#1 · os-elon-musk · session_01LKHDniRQSWjRJyDtacwpEd
Claim: PM loop round 1 · 2026-10-29T14:26Z
Session:
pending(card thread, dispatched by seat sessionsession_01LKHDniRQSWjRJyDtacwpEd; amended when it starts)Account:
os-elon-muskBranch:
pending(the card thread's harness-pinned branch; amended)Worktree:
objectstack-issue-27453Domain:
domain:devxSeat:
domain:devx#1File surface:
examples/app-showcase/**, limited to the task-desk page's drawer edit and modal create handlers and their tests, plus a changeset if the example is published (stop on breach; explain in the report)Container & model:
S,mode:thread,model: default,effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: reference-app write feedback: drawer save and modal create on
showcase_task_deskclose with no success toast naming the record | the console's record dialogs give one | every showcase user, and every QA run that probes itThread-read: 6491491777
Premise: two runners reproduced it on 18.3.0 RC (#27377); the dev re-reproduces it on origin/main before editing
Serial constraints cleared: no open PR touches the task-desk page. #27566 (
src/ui/apps/index.ts) and #27416 (src/security/permission-sets.ts) touch other showcase files, read at claim timeSeat pick on the full order with seat 2 (#20163), alternation per
execution-duties.md(knock 6499301324). No contract review: nopackages/spec/src/**, no governed text.Generated by Claude Code
objectstack-fleet commentedon Oct 29, 2026
domain:devx#1 · os-elon-musk · session_01LKHDniRQSWjRJyDtacwpEd
Release:
session_01LKHDniRQSWjRJyDtacwpEd(devx seat 1) · the fix is not reachable insideexamples/app-showcase/**; it needs a ui-lane helper · next:pm:queue, for triage to route the helperThe card thread (
session_016WV4cwtjXF8quNLey8Dyhx, branchclaude/project-thread-ril6j2) stopped on the order's file-surface rule. Nothing was pushed. Its reading at origin/main1e45a4e1(code reading; the premise holds):DrawerForm(~L650) andModalFormsave paths give no default feedback. They run onlyawait schema.onSuccess(result), then close.AppContent.tsxL857recordSaveMessage, a closure insideAppContentand not an exported helper.examples/app-showcase/src/ui/pages/task-desk.page.tsis akind:'react'page. Its scope (ui/packages/components/src/renderers/layout/react-page.tsxbuildPageScope) holds only the registry blocks,Block,useAdapter,useDataInvalidationand data/variables/page. It has no toast, no action dispatcher and no feedback hook. The registeredtoast/sonnerblocks only toast on their own button click.Candidate shapes for a ui card (each touches the react page's public scope, so contract review is likely):
recordSaveMessageinto a shared helper and expose a record-save feedback hook in the react page scope. The showcase then calls it fromonSuccess.DrawerForm/ModalFormtake an opt-in default success toast that names the record, used when the host does not own feedback.#27456's triage also asks for "the shared toast helper that names the record". One helper could serve both cards. Once it exists, this card is a small showcase change again.
Generated by Claude Code