Skip to content

QA run · records-forms.object-hook-lifecycle (1/1) · 55a806a7 · 2026-10-17 · 1 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #24121

Closed

Description

@objectstack-fleet

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: 55a806a78c0442243a8ac22e7dbc6f7b2c4b3bb0 on branch claude/issue-24036-ledger-b, the commit the app was built from. Its product tree is origin/main 8a83cebc1; the branch adds docs/qa/platform-checklist/areas/*.json only, and its later commits touch those files alone. Built with pnpm install --frozen-lockfile and turbo run build (75/75 tasks).
  • .objectui-sha: f8267df93aba8fb09cc1cc0692eadc0c8c5a5e56 (no browser leg in this item).
  • boot: OS_LOG_LEVEL=info OS_PORT=41931 objectstack dev --ui --seed-admin -p 41931 -d file:(run dir)/hk/data.db from examples/app-showcase, its own port and file DB (the CLI also provisioned the sibling data.telemetry.db), stopped by its own process-group id afterwards. Scratch objects and hooks authored in a writable package (POST /api/v1/packages, PUT /api/v1/meta/object|hook/NAME?package=PKG).
  • persona(s): the seeded admin (admin@objectos.ai), identity proven with GET /api/v1/auth/get-session before the first cell
  • timestamps: 2026-10-17, 01:08Z to 01:10Z

Scope

Selector records-forms.object-hook-lifecycle resolves to 1 runnable item: records-forms.object-hook-lifecycle at revision 5, P1, surface mixed. No planned or blocked-hidden item.

Per-clause verdicts

# clause (short) verdict evidence
0 beforeInsert stamps source=web pass GET /api/v1/meta/hook lists the five showcase hooks. POST showcase_inquiry with name, email, message and no status/source → 201; re-read source web, status new. (A name-only body, as steps[1] first read, answered 400 VALIDATION_FAILED "Email is required; Message is required" — see notes)
1 one multi-event hook trims insert and update pass POST title " os-qa-RUNID " → "os-qa-RUNID"; PATCH padded → "os-qa-RUNID-upd"
2 afterUpdate audit fires on the completing update pass PATCH Build homepage done false→true 200; log INFO [hook 'showcase_audit_task_completion'] task completed: Build homepage
3 audit does not fire on a non-transition edit pass priority-only PATCH on App wireframes and on Audit current IA (both done:true) → 0 new "task completed" lines after a 4 s settle each
4 over-budget warn fires pass PATCH Data Platform spent 650000 (budget 600000) → WARN [hook 'showcase_warn_over_budget'] project over budget: Data Platform (650000 / 600000)
5 record = stored ⊕ payload; under budget no warn pass the spent-only PATCH fired with the stored budget 600000 read into record; Website Relaunch spent 70000 (budget 150000) → 0 warn lines
6 onError abort on a throwing beforeInsert rolls back pass scratch beforeInsert hook throwing, onError abort: POST → 400 {error: "qa scratch abort hook refused"}; count 0 → 0
7 onError log on an async throw does not roll back pass scratch async afterUpdate hook throwing, onError log: PATCH val 2 → 200, re-read val 2; log ERROR [hook] handler failed (onError=log; suppressing) naming the hook; no fire-and-forget line
8 unevaluable condition fails closed pass scratch hook, condition int(record.name) > 0, onError log; POST name "abc" → 500 INTERNAL_ERROR, count 0 → 0; log HookConditionError: Hook '…_h_cond' could not evaluate its condition (runtime: int() type error …) — operation aborted. Control: an uncompilable condition is refused at authoring, PUT /meta/hook 422 INVALID_METADATA (expression-invalid)
9 same object and event run lowest priority first pass scratch afterInsert hooks at priority 10 and 90 on one object: one POST → log p10 at 01:08:42.998Z, then p90 at 01:08:43.165Z

Automated pins run (RUNNER rule 6)

  • packages/qa/dogfood/test/showcase-public-form.dogfood.test.ts + hook-error-format.dogfood.test.ts (automated.ref): 2 files, 8 passed, under the shared verify lock.

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.object-hook-lifecycle r5: pass (10 pass of 10 clauses).

  • Checklist-accuracy finding of this run, fixed on the branch before this record: steps[1] posted an inquiry with name only, which answers 400 VALIDATION_FAILED (email and message are required) before any hook runs. The step now carries the two required fields; clause 0 is scored on that body.
  • The revised steps[0] holds: the audit line is INFO and appeared on the OS_LOG_LEVEL=info boot; the revised acceptance[8].verify holds: the runtime-unevaluable condition aborted the write, and the uncompilable one never reached the gate.
  • Observation, not scored: the fail-closed abort reaches the caller as a generic 500 INTERNAL_ERROR ("[REST] Unhandled error: HookConditionError …" in the log), not as a coded refusal.

Checklist-accuracy findings and fixture gaps from this run close out on #24036.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Close-out (domain:devx seat 2): every clause PASS; nothing to extract. Ruling C on #24127 (maintainer): a verification re-run of a ledger edit no longer carries a qa-run record, and the existing ones close out now. The revised item records-forms.object-hook-lifecycle landed with #24141 (9ffe8af094), Part of #24036; its history row names #24036.


    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