Skip to content

qa(checklist): unblock 4 fixture-blocked items with the recipes the follow-up run #21845 proved, and re-point the clauses it found mis-asserted #21851

Description

@objectstack-fleet

QA-source: #21845 (17.7 pre-release follow-up) · #21782 (re-run comment)

Follows #21797 (closed by #21811). Owning repo: this one (docs/qa/platform-checklist/areas/*.json). Every entry is a checklist change only; the product defects found in the same run are carded separately (#21846–#21850, objectstack-ai/objectui#11650).

Lift blocked and add the fixture note

  1. approvals.quorum-m-of-n — fixture (runtime, admin API only, stock boot): bind a second committee position holder (POST /api/v1/data/sys_user_position {user_id: <Ada>, position: "finance", organization_id}) and, for 2-of-3, invite + sign up a third user bound to legal; disable the competing per-group sign-off flow for the process (POST /api/v1/automation/showcase_expense_signoff/toggle {"enabled":false}) — otherwise any ≥5000 report opens that flow's request and the quorum run fails DUPLICATE_REQUEST; open a fresh request (slates are fixed at open): draft report + a 6000 line + PATCH status submitted.
  2. approvals.sla-escalation — fixture: a wall-clock offset shim loaded with NODE_OPTIONS=--require <shim> (wraps Date/Date.now with a file-read offset, sets Date.prototype.constructor to the proxy; timers untouched — no product logic changes); register one approval flow per action with escalation {enabled:true, timeoutHours:1, action, notifySubmitter:true} via POST /api/v1/automation (no writable package needed); advance +2h and wait for the 5-minute sweep (or restart for the boot sweep). Name the sweep interval and boot catch-up in the item.
  3. identity-auth.linked-accounts-social — fixture: a local authorization-code + PKCE OIDC provider (discovery, authorize, token, userinfo, jwks) registered through the auth service's public config patch in a scratch app plugin (applyConfigPatch({oidcProviders:[…]}); auth:configure fires too early); the provider must be up before the first auth request. Step 2 must link through the authenticated POST /api/v1/auth/link-social and navigate to the returned URL. Nav label is "Linked Accounts" (Account app).
  4. records-forms.import-job-undo-cancel — the stock console already satisfies the "import-job-capable client" gate at this pin; run objectui e2e/import-console/import-console-undo.spec.ts with IMPORT_CONSOLE_LIVE=1 from a scratch copy whose goto path is /_console/apps/{app}/{object}; API half under /api/v1/data/import/jobs (create, progress, results, cancel, undo). revertedAt is absent, not null, until reverted.

Re-point

  1. approvals.quorum-m-of-n · negative[0] (assertion defect): require a non-privileged repeat actor; a platform/tenant admin override decision finalizes by design (Approval routed to an empty position permanently locks the record (no admin override, no recovery) #3424, recorded via_override:true).
  2. approvals.quorum-m-of-n · acceptance[2]: the "reject edge" is not observable (end nodes log no step); assert "the run goes paused → completed and the request is rejected".
  3. approvals.quorum-m-of-n · acceptance[3]: inbox tab is "My Pending" in the English console; the drawer subtitle "(2 of 3)" is static flow text — the tally is the "Approvals — x of y" line.
  4. cli.scaffold-first-run step 2 / cli.scaffold-console-first-paint step 1 (assertion defect): the scaffolder already installs with pnpm; a trailing npm install fails on that layout (17.6.0 and 17.7 alike). Drop the step, or use pnpm install, or scaffold with --skip-install before an npm install.
  5. cli.scaffold-first-run fixtures: add a pre-release variant — pack the workspace to a local registry with no upstream for @objectstack/* and create-objectstack, run the repo's bin against it, prove the candidate via lockfile integrity; the published path only measures what is released. A4: "installed set" means unique skill names.
  6. cli.scaffold-console-first-paint · acceptance[3]: a blank scaffold ships no app or action; point the action/nav half at studio-authoring.first-run-loop or state the limit.
  7. i18n.surface-matrix / i18n.studio-follows-app-locale steps: "use the avatar-menu language switcher (it writes the user's locale); seeding browser storage alone is not a language switch" (the held fail on QA run · surface:browser (61/61) · 316be321 · 2026-10-04 · 38 PASS / 8 PARTIAL / 15 FAIL / 0 BLOCKED / 0 NOT-RUN #21782 was this harness gap).

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 5, 2026

    @objectstack-fleet
    ContributorAuthor

    Path: fleet decision — the checklist verifies the definition (North Star, "what counts as done") | the items listed on this card | none

    Triage: first grade — documentation · priority:p2 · domain:devx · area:devpath · pm:queue. The same grade as #21797 and #21735

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-05T09:01Z. ⛔ Not a claim, ⛔ not a dispatch.

    Triage: lands in docs/qa/platform-checklist/areas/*.json ⇒ domain:devx; rationale: checklist changes only. The product defects from the same run are carded separately (#21846–#21850, objectstack-ai/objectui#11650).


    Generated by Claude Code

  2. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    documentationImprovements or additions to documentation
    on Oct 5, 2026
  3. objectstack-fleet commented on Oct 5, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (17.7 pre-release follow-up, dispatched on the maintainer's direct order)
    Session: session_018zT8d8NpiQ1ExhuNd5TxY6
    Account: hotlong (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-21851-checklist-unblock-followup
    Worktree: objectstack-issue-21851
    Domain: domain:devx (card label, as triage set it)
    File surface: docs/qa/platform-checklist/areas
    Container & model: M, mode:subagent, model: opus (default tier; no path-derived mandate)
    Clause-②: no
    Thread-read: 5991347782
    Serial constraints cleared: none named

    Provenance: the maintainer, in Claude Code session session_018zT8d8NpiQ1ExhuNd5TxY6, 2026-10-05, verbatim: 「都开单派发」; landing per the standing order 「开发完整就进队列合并」. Dispatched one at a time within the session's load cap. Where the card withholds detail, this session holds it and the dispatch carries it privately.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 5, 2026

    @objectstack-fleet
    ContributorAuthor

    Release: session session_018zT8d8NpiQ1ExhuNd5TxY6 · cause: re-route before dispatch (no dev was started on this card) · destination: back to pm:queue for the domain:devx lane seat to claim.

    Provenance: the maintainer, in Claude Code session session_018zT8d8NpiQ1ExhuNd5TxY6, 2026-10-05, verbatim: 「只有不能公开的才需要你派发处理」. This card withholds nothing, so its dispatch belongs to the lane. The claim above is withdrawn, the assignee is cleared, and the triage grading stands.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 5, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 61
    Session: session_01VDtqoecgES7ScQYGbFVDRv
    Branch: claude/issue-21851-checklist-unblock-followup (cut from origin/main e864db56df)
    Worktree: objectstack-issue-21851
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: docs/qa/platform-checklist/areas/*.json, only the items entries 1–11 of the card name. Each revised item gets a history entry that cites #21845.

    Stop on a breach and explain it in the report. That includes an entry the area file cannot hold as the card states it, and a checklist gate that needs a non-checklist edit.
    Container & model: M (checklist-only, 4 area files plus cli/i18n items), mode:subagent, model: opus
    Clause-②: no
    Thread-read: 5995833474
    Serial constraints cleared: board read at 2026-10-05T14:52Z. None of the 10 open PRs touches docs/qa/platform-checklist/** (each file list read by filename). The release of claim session_018zT8d8NpiQ1ExhuNd5TxY6 back to pm:queue was read on this card.

    Priority rule 3 reading: domain:devx has no open P0/P1. This is the oldest p2 in the lane queue. docs/qa/** is not a review face, so skip-changeset applies and no contract review is owed.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 5, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 21851,
    "status": "done",
    "branch": "claude/issue-21851-checklist-unblock-followup",
    "pr": "#21891",
    "head_sha": "4f0fb3a8e0",
    "session": "session_01VDtqoecgES7ScQYGbFVDRv",
    "premise_still_valid": true,
    "summary": "Checklist-only edits to 5 area files (approvals, identity-auth, records-forms, cli, i18n). 8 items revised, each with a revision bump and a history entry. Entries 1-10 cite run #21845; entry 11's evidence is the #21782 re-run, so its history ref is #21782 and the change text names #21851/#21845. blocked was lifted only on the 4 entry 1-4 items, and each one's fixture recipe went into fixtures.requires. The old fixture knownGaps were rewritten as CLOSED-for-runs, not deleted. No product code, no scripts, no changeset; the shim and the OIDC provider exist only as recipe text. Card premises were checked against e864db5: the toggle door POST /automation/:name/toggle, sys_user_position fields, ESCALATION_SCAN_INTERVAL_MS = 5 min plus the boot sweep in approvals-plugin.ts, applyConfigPatch/oidcProviders, the 'auth:configure' trigger, POST /api/v1/auth/link-social in the route ledger, nav_account_linked 'Linked Accounts', the import-job routes, and the scaffolder's pnpm-or-npm install. Run #21845 contradicts none of the card's entries.",
    "per_entry": [
    "1 approvals.quorum-m-of-n (rev 4): blocked removed; runtime fixture added to requires (Ada->finance via POST /api/v1/data/sys_user_position, third signed-up holder->legal, POST /api/v1/automation/showcase_expense_signoff/toggle enabled:false, fresh request draft+6000 line+PATCH submitted); seed knownGap marked CLOSED-for-runs",
    "2 approvals.sla-escalation (rev 3): blocked removed; offset-shim recipe in requires; flows registered via POST /api/v1/automation, one per action, no writable package; 5-minute sweep and boot catch-up named in a knownGap and in the steps",
    "3 identity-auth.linked-accounts-social (rev 3): blocked removed; local auth-code+PKCE OIDC provider via applyConfigPatch({oidcProviders}) from a scratch app plugin ('auth:configure' fires too early), up before the first auth request; step 2 = authenticated POST /api/v1/auth/link-social, then navigate to the returned URL; nav label 'Linked Accounts' (Account app); the sys_account link action is no longer named anywhere in the item; unlink/mine-view/read-only kept",
    "4 records-forms.import-job-undo-cancel (rev 3): blocked removed; stock console meets the client gate (pin 2e818d0b51ec); scratch copy of import-console-undo.spec.ts with goto /_console/apps/{app}/{object} and IMPORT_CONSOLE_LIVE=1; API routes under /api/v1/data/import/jobs (create stays POST /api/v1/data/:object/import/jobs per the route ledger); revertedAt absent, not null, until reverted",
    "5 quorum negative[0]: non-privileged repeat actor; an admin decision is the #3424 override (via_override:true) and finalizes by design",
    "6 quorum acceptance[2]: the run goes paused -> completed and the request is rejected; the reject edge is not observable",
    "7 quorum acceptance[3]: 'My Pending' tab; the drawer half ('Approvals — x of y' is the tally, '(2 of 3)' is static flow text) landed on acceptance[4] plus the screenshot step, because [4] is the drawer-tally clause",
    "8 both cli items: option chosen = drop the trailing npm install. The scaffolder installs itself (pnpm when found, npm otherwise), and its exit code is the install evidence. This does not depend on the host package manager, does not change the published command or the quick-start, and matches the published canary job in scaffold-e2e.yml",
    "9 cli.scaffold-first-run (rev 3): pre-release local-registry variant in requires (no upstream for @objectstack/* and create-objectstack, repo bin, lockfile-integrity proof); acceptance[3] compares unique skill names",
    "10 cli.scaffold-console-first-paint (rev 3) acceptance[3]: limit stated (blank scaffold has no app/action, so that half is not-applicable and never a FAIL); record-create half still scored; points to studio-authoring.first-run-loop and says it covers app/nav but no action",
    "11 i18n.surface-matrix (rev 5) / i18n.studio-follows-app-locale (rev 4): avatar-menu switcher wording added to the switch steps"
    ],
    "files_changed": [
    "docs/qa/platform-checklist/areas/approvals.json",
    "docs/qa/platform-checklist/areas/cli.json",
    "docs/qa/platform-checklist/areas/i18n.json",
    "docs/qa/platform-checklist/areas/identity-auth.json",
    "docs/qa/platform-checklist/areas/records-forms.json"
    ],
    "tests": "At head 4f0fb3a: pnpm check:platform-checklist exit 0, 'OK — 15 areas, 270 items (266 active, 2 planned) ... symbol anchors: 657/667 resolved' (baseline e864db5: 653/663, so all 4 new anchors resolve). dispatch-gates --commands derived 13 families and all 13 ran to exit 0: ci-filter-parity, closing-keyword-parity (+self-test), comment-mask-corpus, lint check:doc-formula-expressions, cross-package-test-inputs, doc-authoring, driver-memory-census, gitlink-declared, nul-bytes, platform-checklist, refd-timer-probe, watch-hint-literal. dispatch-gates --ran: '13 run, 0 NOT-MEASURED (a DERIVED zero)'. Before pnpm install, 6 gates exited 3 (PREREQUISITE NOT MET); doc-formula exited 3 again until formula/lint were built under os-verify-lock (VERDICT command-exit 0); those exits are not measurements. checklist-select resolves each of the 4 unblocked items as 1 runnable item. No package touched, so there is no unit/typecheck step; the CI type-check lanes and Test Core are left to CI (NOT MEASURED locally, not owed for a docs-only diff).",
    "mcp_calls": "0",
    "api_writes": "4 — git push (branch, 3 pushes); pr_create via fleet-write relay (run 37331465259, POST /repos/objectstack-ai/objectstack/pulls -> #21891, 7505 bytes read back identical); label-write --assign baozhoutao via relay (run 37331588777, POST /repos//issues/21891/assignees, read back matches); this os-dev-report comment via post-stamped",
    "deviations": [
    "Entry 11 history ref is #21782, not #21845, because #21845 has no i18n evidence; the change text names #21851/#21845",
    "Entry 3 also rewords acceptance[3]/negative[3]/the degradation step/the source note to 'the link affordance' so the item names no sys_account link action anywhere; meaning and indices unchanged (the #21849 Extracted lines still resolve)",
    "Entry 7's drawer half is on acceptance[4], not [3]",
    "No labels written: the PM adds skip-changeset"
    ],
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: the next editor of cli.scaffold-first-run (no one else is named) · acceptance[1] still says 'six templates' while variants is [blank] · noted in PR Acceptance notes, not filed",
    "carrier: the checklist owner (already raised on #21782) · i18n.surface-matrix variants string still calls emptyState blocked(fixture) · noted, not filed",
    "carrier: none · pending_approvers is not de-duplicated, so the drawer's eligible count reads high before the first vote (from run #21845, not extracted, cosmetic) · noted, not filed"
    ]
    }


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 5, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: PR #21891 → 67c544ccca, verified on origin/main by content at 2026-10-05T15:54Z.

    Releases: the identity-auth.linked-accounts-social region held for #21849 (domain:engine cross-lane declaration). That PR's checklist half may now be revised from main.

    Noted, not filed: cli.scaffold-first-run acceptance[1] still says "six templates" while variants is [blank]. It is for the next editor of that item.

    pm:dispatched removed.

    Seat domain:devx#1 · session_01VDtqoecgES7ScQYGbFVDRv


    Generated by Claude Code

  8. added 2 commits that reference this issue on Oct 7, 2026
    67c544c
    7665c54
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, iteratedocumentationImprovements or additions to documentationdomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions