Skip to content

qa(checklist): records-forms — provisioning recipes for a walled two-organization mention leg, a packaged action specimen, and the app-crm import specs #26625

Closed

Description

@objectstack-fleet

Filing gate: ③ a maintainer-directed task — in the 18.2.0 wave-2 session (2026-10-27), on the PM's list of improvements ("补测试数据配方: write the recurring fixture gaps up as area-level provisioning recipes"), the maintainer answered, verbatim: 「补测试数据配方。立卡」.
Business reason: three records-forms items left clauses unscored in wave 2 (#26450, #26456) for want of environments stock seeds do not provide.
Reader: the lane owning docs/qa/platform-checklist/** and packages/qa/** (domain:devx). The shape to copy is the area-level fixtures recipe block in docs/qa/platform-checklist/README.md ("Area-level fixtures"), the worked instance qa-scratch-authz in areas/attachments-storage.json; items opt in with fixtures.provisioning.use.
Dedupe (open AND closed): "checklist fixture provisioning recipe blocked fixture knownGaps org-less approval request" → 29 hits; the nearest is #21851 (closed: four other recipes, landed). None covers the gaps below.

Gaps

  • records-forms.record-discussion-mentions a9, the cross-organization leg — needs a walled boot holding two organizations, the comment's record in one and the mentioned user a member of the other only (RUNNER "A walled boot is a fixture of its own"). Recipe: the walled showcase boot + the two-organization personas, and since fix(plugin-audit): a mention notification reaches a mentioned user only when they may read the comment it previews #26497 the mention target's comment read (rev 8 persona note).
  • records-forms.action-location-matrix A3 (fail-closed half) and A4 half (a) — knownGaps[2]: a runtime-authored action is listed under /meta/action but never joined into the object's actions[], and a throwing visible is now refused at authoring (422), so the fail-closed half needs a PACKAGED specimen. Recipe: a scratch package carrying the action (declared location + a visible that throws at evaluation) installed through the package loader.
  • records-forms.import-job-undo-cancel — its two specs need an app-crm boot with IMPORT_CONSOLE_LIVE=1 (ui/e2e/import-console/import-console-undo.spec.ts) and the :5200 import harness over app-crm (ui/e2e/import-harness/import-undo.spec.ts). Recipe: the boot lines and env so a runner runs both specs instead of the hand-driven substitute.

Done when

  • The recipe is written once at the area level (a keyed block beside items), with the exact call sequence a runner replays on a stock showcase boot, and each listed item references it with fixtures.provisioning.use + why.
  • Each listed clause is re-driven once on the recipe and its verdict recorded in the item history (citing this card); the item's knownGaps line for the gap is removed or reworded.
  • node scripts/check-platform-checklist.mjs stays green (it resolves every provisioning.use and refuses an unreferenced recipe).
  • A gap that turns out to be a product limit rather than a fixture (no door exists at all) is filed as its own card and stays blocked with that card as blocked.ref.

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — tests · priority:p2 · domain:devx · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T11:06Z

    ⛔ Not a claim, ⛔ not a dispatch.

    • p2, maintainer-directed (wave-2 session, 「补测试数据配方。立卡」): write the provisioning recipe so the named clauses can be scored, in docs/qa/platform-checklist/** / packages/qa/**, with the item revisions bumped. domain:devx. ⛔ No product change rides this card. If a recipe needs a door the platform lacks, that is a separate product card.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 9 · 2026-10-27T21:01Z
    Session: session_01JQwxbXyxFGYMNdVd5maF1e (card thread cmsg_01U5RdnAAmkSQmZbqh6FtqZ8UscxfA4ta7qZoJyoM4H9fp, dispatched by seat session session_01JQwxbaFpnMwgpCgneKe2qS)
    Account: os-warren (the seat's linked user; the card's assignee)
    Branch: claude/project-thread-3uc27e (the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record)
    Worktree: objectstack-issue-26625
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: docs/qa/platform-checklist/areas/records-forms.json only: new recipes in its area-level fixtures block, and items records-forms.record-discussion-mentions, records-forms.action-location-matrix, records-forms.import-job-undo-cancel (provisioning, history, knownGaps). If fixtures.provisioning takes one recipe per item and an item already opts into one, report the shape rather than changing scripts/check-platform-checklist.mjs. ⛔ No product change, no .github/** or .claude/** edit (stop on breach)
    Container & model: M, mode:thread (Warren's 「opus 很多,并发5」, 2026-10-27), model: default (no path-derived mandate, default opus), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: maintainer-directed in the 18.2.0 wave-2 session (「补测试数据配方。立卡」); the three items left clauses unscored in wave 2 (#26450, #26456)
    Thread-read: 6440359593
    Premise: holds on origin/main 1708115e2f — the three items exist (record-discussion-mentions rev 8 opting into qa-feeds-disabled, action-location-matrix rev 15, import-job-undo-cancel rev 7, the last two with no provisioning) and the area holds one recipe, qa-feeds-disabled (read by the seat)
    Serial constraints cleared: none fully. ⚠️ PR #26908 (#26573, queued) and PR #26907 (#26876) both bump record-discussion-mentions; merge origin/main right before the PR, bump from main's revision then, and re-run check-platform-checklist. Scratch packages declare their own namespace, never qa, qamedia, qafeeds or qagroup (owned by other recipes). No other devx seat is seated


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26625,
      "status": "done",
      "branch": "claude/project-thread-3uc27e",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26929",
      "session": "session_01JQwxbXyxFGYMNdVd5maF1e",
      "premise_still_valid": true,
      "summary": "Two area recipes in docs/qa/platform-checklist/areas/records-forms.json: qaact-placement-specimen (install-local package, namespace qaact, three url actions bound to showcase_task: a control, a throwing-visible action, a locations-less action) referenced by action-location-matrix, and qa-crm-import-console (app-crm boot + console dev server + env) referenced by import-job-undo-cancel. record-discussion-mentions already uses qa-feeds-disabled and provisioning.use takes one string, so per the seat's ruling its walled two-org leg is written into steps[13] + fixtures.requires[2] + knownGaps[2], with a scratch permission set (namespace qamention) granting the mention target sys_comment read. Every listed clause was re-driven once and recorded: a9 walled leg PASS, A3 fail-closed half PASS, A4(a) PASS, import-job-undo-cancel a0-a3 PASS with the console spec passing unmodified. Revisions: action-location-matrix 16, import-job-undo-cancel 8, record-discussion-mentions 10 (bumped from main after #26908 landed). Checker untouched; no product change.",
      "tests": "Live runs at main 1708115e2f after a full turbo build (24.7 min). Walled (group posture boot): control mention in org B notified the target (1 collab.mention); target's read of org A account 404; mentions by id and by email on it withheld cannot_read_source (two log lines), no inbox row; without the grant the target got sys_comment 403 and was withheld cannot_read_thread. Specimen (stock boot, console via the port-5180 dev server): install-local 200 hotLoaded; showcase_task served 13 actions incl. the three; row menus (3 list rows, 2 Related-tab rows) list QA Control only; console.warn names qaact_visible_throws as failed to evaluate; QA No Locations on no surface; teardown restored 10 actions. Import: import-console-undo.spec.ts 1 passed (35.9 s) with --timeout=120000 (two default-timeout runs died at 31.1 s after the import landed); API half on crm_lead: marker 0/20/0 after undo, 4000-row job cancelled at 1400 with every row whole, revertedAt absent then present.",
      "gates": "dispatch-gates --commands derived 16; all run, exit codes: node scripts/check-adr-links.mjs :: exit 0; node scripts/check-adr-links.mjs --self-test :: exit 0; node scripts/check-closing-keyword-parity.mjs :: exit 0; node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0; node scripts/check-comment-mask-corpus.mjs :: exit 0; node scripts/ci/plan-test-core-shards.mjs --self-test :: exit 0; pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0; pnpm check:ci-filter-parity :: exit 0; pnpm check:cross-package-test-inputs :: exit 0; pnpm check:doc-authoring :: exit 0; pnpm check:driver-memory-census :: exit 0; pnpm check:gitlink-declared :: exit 0; pnpm check:nul-bytes :: exit 0; pnpm check:platform-checklist :: exit 0; pnpm check:refd-timer-probe :: exit 0; pnpm check:watch-hint-literal :: exit 0. dispatch-gates --ran: 16 derived, 16 run, 0 NOT-MEASURED. node scripts/check-platform-checklist.mjs re-run after merging main 8074feb6: OK, 10/10 recipes referenced. CI check-runs on PR 26929 not yet concluded when this report was written.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0 — no MCP GitHub tool used (subscribe_pr_activity is the harness's PR-event subscription, not a GitHub write)",
      "api_writes": "2 — fleet-write relay pr_create (PR 26929, 9874 bytes sent = stored); this os-dev-report comment via post-stamped",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: a · reach: ui/playwright.import-harness.config.ts tells a runner to serve ui/packages/plugin-grid/demo/vite.live.config.ts at /live.html, and neither file exists (demo holds index.html, bulk-actions.html, main.tsx, bulk-actions.tsx, sample.csv, sample.xlsx), so ui/e2e/import-harness/import-undo.spec.ts can only self-skip; its CSV first_name,last_name,email also has no column for crm_lead's required name · evidence: ls ui/packages/plugin-grid/demo at 1708115e2f · dedupe words: import harness live.html vite.live.config import-undo spec",
        "carrier: none · noted, not filed: ui/playwright.import-console.config.ts header names an OBJECTSTACK_CLIENT_DIST alias and a port-3002 backend; neither is needed (spec passed without the alias against a dev:crm boot)",
        "carrier: seat · stale text outside the claim surface, left as is: record-discussion-mentions automated.ref ends 'A REST-door pin for acceptance[9] waits on #26625 … until it lands'; action-location-matrix steps[6] and acceptance[4].verify still say no packaged locations-less specimen exists on stock; import-job-undo-cancel fixtures.requires[2] and steps[0] still describe the showcase scratch-copy route"
      ],
      "deviations": "PR body carries the platform attribution block on lines 1-2 and Fixes on line 3, and folds .github/PULL_REQUEST_TEMPLATE.md's Human Minimum list after Verification (the os-dev exception). Report written in English."
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #26929 comment 6455228695 · auto-merge armed · 2026-10-27T22:33Z

  5. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: the walled mention leg, the packaged action specimen and the app-crm import-console recipe via PR #26929, merged as e4ba846fa3 · 2026-10-27T22:54Z

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:devxpriority:p2Medium: important, M3tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions