Skip to content

QA run · records-forms.script-action-hook-refusal-toast (1/1) · 4a428c11 · 2026-10-03 · 1 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #21610

Description

@objectstack-fleet

Environment fingerprint

  • Framework tree: 4a428c11a0 on branch claude/issue-21596-hook-refusal-toast-item (PR qa(checklist): a hook-refused script action shows exactly one error toast carrying its sentence — item, showcase fixture, and one run #21609). The dev server restarted onto this tree before attempt 1. Branch head ff3d71c7cf differs from it only by a zh-CN action label.
  • objectuiPin: 89cad75d55702cc4f267bead5bf267de575d5842. The console was built with pnpm objectui:build, which exited 0, and the bundle is stamped objectui@89cad75d5570.
  • Boot: objectstack dev --ui --seed-admin -p 41873 -d file:(scratch)/data.db with OS_PORT=41873. It used its own port, its own file DB and the stock showcase seed.
  • Driver: Playwright through /opt/pw-browsers/chromium, headless, at 1440x900. It signed in through the login form as the seeded admin.
  • Time: 2026-10-03T16:11Z. Two attempts, each on a fresh page load. One runner, sequential.

Scope

Per-clause verdicts

item clause oracle verdict evidence (text)
records-forms.script-action-hook-refusal-toast 0: the action route answers a 4xx carrying the sentence network pass Both attempts: POST /api/v1/actions/showcase_task/showcase_reopen_task returned 400 with body {"success":false,"error":{"code":"VALIDATION_ERROR","message":"hook 'showcase_guard_task_reopen' threw: Error: A finished task cannot be reopened. Create a follow-up task instead.","httpStatus":400}}
records-forms.script-action-hook-refusal-toast 1: exactly one new error toast containing the sentence dom pass Live toasts ([data-sonner-toast] not data-removed) were 0 at baseline and 1 about 1.1s after the response. That toast has data-type=error and the same text as the response message. A MutationObserver installed before the click saw exactly 1 toast node added in the next 6s, at 193 ms and 145 ms after the click. Screenshot: one red error toast at the top right, over the task list.
records-forms.script-action-hook-refusal-toast 2: the toast is tied to that request network pass The only non-GET request between the baseline read and the toast read was that POST, which returned 400. The toast text equals the response's error.message.
records-forms.script-action-hook-refusal-toast 3: the record is unchanged api pass GET /api/v1/data/showcase_task/ID before and after the click: done stayed true, progress stayed 100, and updated_at did not change (2026-10-03T16:10:34.575Z and 2026-10-03T16:10:35.056Z).

Derived

  • Item verdict: pass. All 4 clauses passed, and the result was reproduced on two records.
  • Fixture gaps: none.

Note for the objectui#9151 reading

The toast the user sees carries the sandbox wrapper ahead of the sentence: "hook 'showcase_guard_task_reopen' threw: Error: A finished task cannot be reopened. Create a follow-up task instead."

The same refusal through PATCH /api/v1/data/showcase_task/ID with body {"done":false} answers 400 {"error":"A finished task cannot be reopened. Create a follow-up task instead."}.

This does not fail the item, because the clause asks only that the toast contains the sentence. It is, however, the reading named in the reopen condition of #17682.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Close-out: closed completed. Every clause passed, so there is no fail or partial to dispose

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-06T15:47Z. The maintainer, in the triage seat's chat, approved clearing the open qa-run records' close-out debt: 「同意,动手」.

    • Read at this write: the record's single clause is PASS, and its comment thread is empty.
    • Under checklist-test §5, a record closes when every fail has a disposition and every partial is named. There is neither here, so nothing is extracted, parked or carried.

    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions