Skip to content

QA run · integration-system.notification-preference-suppression (1/1) · 55a806a7 · 2026-10-17 · 0 PASS / 1 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #24102

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_PORT=41921 objectstack dev --ui --seed-admin -p 41921 -d file:(run dir)/api2/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.
  • persona(s): the seeded admin; an assignee member and a control member, each minted through invite + sign-up with their own session
  • timestamps: 2026-10-17, 00:27Z to 00:29Z

Scope

Selector integration-system.notification-preference-suppression resolves to 1 runnable item: integration-system.notification-preference-suppression at revision 3, P2, surface mixed. No planned or blocked-hidden item.

Per-clause verdicts

# clause (short) verdict evidence
0 a suppression row mutes the channel pass happy fire (task "Build homepage" reassigned) → assignee task.assigned count 1. POST /api/v1/data/sys_notification_preference {user_id: assignee, topic: task.assigned, channel: inbox, enabled: false} 201; the next fire (task "Content backlog") → count stays 1
1 no dead-letter fake pass no new sys_notification_delivery row for the muted fire, and no failed or dead row for the assignee; no new inbox row
2 flip back resumes pass PATCH the row enabled:true 200; the next fire (task "App wireframes") → count 2
3 most-specific-wins; mandatory topic bypass blocked(fixture) user row ON over user_id: '*' global OFF → the fire delivered (count 3) — pass; control: a member with no user row under the same global OFF got 0. The mandatoryTopics half is not configurable on showcase (knownGaps[1]); its mechanism rests on preference-resolver.test.ts (25 passed)
4 a sys_notification_template renders through a delivery pass row (topic qa.ntpl.RUNID, channel email, locale en, subject "NT subject for {{ title }}", body "NT body: {{ title }} via template", format text); a scratch notify flow on that topic, channel email, title QA-NT-TITLE, to the assignee (no locale) → sys_email subject "NT subject for QA-NT-TITLE", body "NT body: QA-NT-TITLE via template". Ladder control: a topic whose only row is en-US, sent to a recipient with no locale, rendered the inline title and body (subject "INLINE-…") — the en-US row was not used

Automated pins run (RUNNER rule 6)

  • packages/services/service-messaging/src/preference-resolver.test.ts: 25 passed (incl. the mandatory-topic bypass cases), 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

integration-system.notification-preference-suppression r3: partial (4 pass + 1 blocked(fixture) of 5 clauses).

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): no fail; the one partial gap is parked below. 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 landed with #24141 (9ffe8af094), Part of #24036.

    Parked-on: #24036 · integration-system.notification-preference-suppression · clause 3 mandatoryTopics half blocked(fixture): a constructor option the showcase does not set (the item's knownGaps[1]; mechanism pinned by preference-resolver.test.ts)


    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