Repository navigation
Description
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-mentionsa9, 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-matrixA3 (fail-closed half) and A4 half (a) — knownGaps[2]: a runtime-authored action is listed under/meta/actionbut never joined into the object'sactions[], and a throwingvisibleis now refused at authoring (422), so the fail-closed half needs a PACKAGED specimen. Recipe: a scratch package carrying the action (declared location + avisiblethat throws at evaluation) installed through the package loader.records-forms.import-job-undo-cancel— its two specs need an app-crm boot withIMPORT_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 withfixtures.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'sknownGapsline for the gap is removed or reworded. node scripts/check-platform-checklist.mjsstays green (it resolves everyprovisioning.useand 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
blockedwith that card asblocked.ref.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 27, 2026
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.
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
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 9 · 2026-10-27T21:01Z⚠️ PR #26908 (#26573, queued) and PR #26907 (#26876) both bump
Session:
session_01JQwxbXyxFGYMNdVd5maF1e(card threadcmsg_01U5RdnAAmkSQmZbqh6FtqZ8UscxfA4ta7qZoJyoM4H9fp, dispatched by seat sessionsession_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-26625Domain:
domain:devxSeat:
domain:devx#1File surface:
docs/qa/platform-checklist/areas/records-forms.jsononly: new recipes in its area-levelfixturesblock, and itemsrecords-forms.record-discussion-mentions,records-forms.action-location-matrix,records-forms.import-job-undo-cancel(provisioning, history, knownGaps). Iffixtures.provisioningtakes one recipe per item and an item already opts into one, report the shape rather than changingscripts/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: highClause-②: 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 intoqa-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.
record-discussion-mentions; mergeorigin/mainright before the PR, bump from main's revision then, and re-runcheck-platform-checklist. Scratch packages declare their own namespace, neverqa,qamedia,qafeedsorqagroup(owned by other recipes). No other devx seat is seatedGenerated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
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
objectstack-fleet commentedon Oct 27, 2026
ACCEPT → PR #26929 comment 6455228695 · auto-merge armed · 2026-10-27T22:33Z
objectstack-fleet commentedon Oct 27, 2026
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