Skip to content

checklist: re-point 38 stale items in identity-auth, ai, search, ux-conventions (v18.4.0 sweep close-out, batch A of #32908) #33328

Closed

Description

@objectstack-fleet

domain:devx#4 · os-project-manager · session_01FEkQ5ooRyyS95kdyC2dPEX

Filing gate: ① checklist assertion defects (#32997 rule 9): each item below will score FAIL or mislead a QA run while the product is right, or names a fixture recipe that no longer works.
Parent: #32908, the v18.4.0 sweep anchor. Its §1 close-out was measured in one pass on origin/main 87330e89 (report 6881013689 on #32908): 269 parked lines, 171 of them owe an item-text re-point over 159 items. That is too large for one PR, so the seat splits it by area file into five batches with no shared file. This card is batch A.

Business reason: every stale clause costs the next release sweep a false FAIL and a re-judgement, and a stale fixture recipe costs a run its setup time.
Reader: the domain:devx seat 4 (claim follows), then QA runs reading these areas.
Dedupe: the rows below are the parked lines of #32908 that are still stale on 87330e89. PR #33273 (merged) and #33275 (in flight) re-point other items and are excluded. No other open card re-points these items.

Fix shape

For each row: re-measure on current main first (area files move under product PRs); re-point the text to the product, bump revision, add a history row citing this card and the source record. A row the re-measure finds already right is left alone and said so in the PR. pnpm check:platform-checklist green. Files: docs/qa/platform-checklist/areas/identity-auth.json, docs/qa/platform-checklist/areas/ai.json, docs/qa/platform-checklist/areas/search.json, docs/qa/platform-checklist/areas/ux-conventions.json only.

Rows (from the #32908 close-out ledger; evidence read at 87330e89, not driven live)

# line source record · comment disposition evidence
11 ux-conventions.labels-over-machine-names acceptance[0]: carve out the position half of sys_user_position's title per ruling A (6766839259) on #32106 #32949 (body §1) re-point owed → split batch A r4, last history 2026-10-19 #24649; missing "sys_user_position" (gap stands)
21 ai.mcp-stdio-fail-closed fixtures.requires[1]: users minted on os dev and keys used on os start avoid the Origin-header detour (key hashes are plain sha256) #32953 (body §1) re-point owed → split batch A r9, last history 2026-11-01 #28545; item unchanged since the record
23 identity-auth.default-organization-boot-invariant steps[0]: steps[0] 'boot WITHOUT --seed-admin' still seeds on os dev (seed-admin defaults on): needs --no-seed-admin #32953 (body §1) re-point owed → split batch A r4, last history 2026-10-31 #27481; missing "no-seed-admin" (gap stands)
32 identity-auth.idp-group-permission-set-mapping steps[3]/[4]: a hand grant of the same set collides 409 UNIQUE_VIOLATION with the projected grant: hand-grant first (as the pin's CONTROL); mock OIDC IdP recipe; SSO user must be invited (invite_only refuses JIT); unknown set gets the boundary sentence #32940 (body §1) · #33092 · 6850793622 re-point owed → split batch A r1, last history 2026-11-10 #32019; missing "UNIQUE_VIOLATION" (gap stands)
34 identity-auth.scim-refused-audit-row -: an unverified bearer's bucket is keyed by client address; other refusals from the same peer share the 20 #32940 (body §1) re-point owed → split batch A r1, last history 2026-11-10 #32019; item unchanged since the record
40 identity-auth.console-two-factor-prompt-phone-doors -: two-factor step draws no title (hideHeader); SMS code logged only at --log-level info #32940 (body §1) re-point owed → split batch A r1, last history 2026-11-10 #32270; item unchanged since the record
41 identity-auth.console-sign-out-and-ended-session -: a member lands on the default app page, not /home #32940 (body §1) re-point owed → split batch A r1, last history 2026-11-10 #32270; stale "/home" present
54 identity-auth.auth-method-matrix acceptance[9]; steps: delete-user/callback 404 arm needs ?token= (else 400); /auth/config wraps payload in data; openid-configuration also served under the prefix #32949 (body §1) · #33093 · 6850899929 re-point owed → split batch A r10, last history 2026-10-31 #27438; stale "delete-user/callback" present
66 identity-auth.two-factor-enrollment-reveal acceptance[4]: 'pre-verify bearer answers 401' does not hold (200/400); only a token minted before verify answers 401 after it #33025 · 6844741021 · #33092 · 6850793622 re-point owed → split batch A r5, last history 2026-10-31 #27392; stale "401" present
67 identity-auth.two-factor-disable-lifecycle steps[8]/acceptance[5]: mfa_required has three levels; a gated user cannot restore the setting (403 MFA_REQUIRED) until re-enrolled; grace stamp survives re-enrollment #33025 · 6844741021 · #33092 · 6850793622 re-point owed → split batch A r3, last history 2026-10-31 #27392; stale "mfa_required" present
70 ai.mcp-coded-refusals-and-runtime-exposure acceptance[1]: A1 names no door; the coded refusal holds on HTTP only #33025 · 6844741021 re-point owed → split batch A r4, last history 2026-10-31 #27409; item unchanged since the record
71 ai.mcp-namespace-faces fixtures; automated.ref: action ai.description must be >= 40 chars; N2's only pin packages/mcp/src/mcp-action-tools.test.ts missing from automated.ref #33025 · 6844741021 · #33081 · 6850173588 re-point owed → split batch A r2, last history 2026-11-10 #32330; missing "mcp-action-tools.test.ts" (gap stands)
72 ai.mcp-tool-call-interceptor steps[4]; knownGaps[0]; acceptance[4]: wait for health 200 before stdio calls / call after ready; knownGaps[0] can close (inline-plugin fixture booted, five legs held); inline plugin literal needs a cast #33025 · 6844741021 · #33089 · 6850460138 re-point owed → split batch A r1, last history 2026-11-10 #32269; stale "knownGaps" present
81 identity-auth.import-invitation-and-sso-domain-answers fixtures.requires[2]: fixtures should name OS_SSO_ENABLED=true on both boots; sys_identity_email has no template-id column #33025 · 6844741021 · #33092 · 6850793622 re-point owed → split batch A r3, last history 2026-10-31 #27438; missing "OS_SSO_ENABLED" (gap stands)
110 identity-auth.implicit-account-linking-ownership steps[4]: unlink-account takes the sys_account ROW id as accountId (not the provider sub) #33048 · 6846028996 re-point owed → split batch A r5, last history 2026-10-31 #27438; item unchanged since the record
141 identity-auth.first-run-owner-bootstrap steps[5]: both document loads are /_console/; /home is a client route #33048 · 6846028996 · #33093 · 6850899929 re-point owed → split batch A r5, last history 2026-10-31 #27441; stale "/_console/home" present
142 identity-auth.self-signup-gate steps[0]: invitation card heading reads 'X invited you to join Y', not 'Accept your invitation' #33048 · 6846028996 · #33093 · 6850899929 re-point owed → split batch A r8, last history 2026-11-08 —; stale "Accept your invitation" present
146 search.console-global-search acceptance[0]; steps: open-when-open no-op testable only by dispatching the click; wait for the group heading before Enter #33048 · 6846028996 · #33096 · 6851700388 re-point owed → split batch A r6, last history 2026-10-31 #27441; item unchanged since the record
167 identity-auth.oauth-app-consent-loop steps; acceptance[3]: code replay revokes tokens (measurement trap); create-client default grant_types lack refresh_token (needs offline_access); cross-user consent doors answer 401 #33058 · 6846283471 · #33093 · 6850899929 re-point owed → split batch A r3, last history 2026-10-17 #24036; stale "refresh" present
168 identity-auth.linked-accounts-social fixtures; steps: generic-OAuth sign-in door is /sign-in/social (oauth2 404); UI unlink goes through the action door; env door exists only for social providers #33058 · 6846283471 · #33093 · 6850899929 re-point owed → split batch A r5, last history 2026-10-17 #24036; stale "POST /api/v1/auth/unlink-account" present
169 identity-auth.identity-import-wizard acceptance[0]; knownGaps; steps[4]: result step does not surface the invite outcome; log transport carries no link; S4 upsert needs the match mode picked #33058 · 6846283471 · #33093 · 6850899929 re-point owed → split batch A r3, last history 2026-10-20 #24752; stale "log" present
170 identity-auth.email-verification-loop fixtures.requires; steps[3]: env overrides OS_AUTH_AUDIENCE_POSTURE / ..._SELF_REGISTRATION_PERMISSION_SET; mail link points at the API verify-email #33058 · 6846283471 re-point owed → split batch A r6, last history 2026-11-08 #31499; stale "verify-email" present
171 identity-auth.workspace-org-switch acceptance[5]; steps[6]; personas: A5 has no UI door; new session starts on the most recent org; walled admin already holds Default Organization; group write needs a writable target org #33058 · 6846283471 · #33093 · 6850899929 re-point owed → split batch A r6, last history 2026-10-26 #25843; stale "surfaces an error" present
177 search.command-palette-navigation steps[5],[6]: labels 'Dark Theme' and 'Open Full Search Page' #33058 · 6846283471 re-point owed → split batch A r4, last history 2026-10-20 #24752; stale "Dark theme" present
182 identity-auth.ai-service-account-register-and-key steps[3]/acceptance[3]: fresh account key answers 403 under the agent ceiling (ADR-0151 D3): 'ran as' proof is the credential_use audit row or ban/unban #33081 · 6850173588 re-point owed → split batch A r1, last history 2026-11-10 #32019; item unchanged since the record
183 ai.mcp-http-surface variants[1]: data:write serves create/update/delete_record and create_upload_link, not delete_records; metadata:write alone answers -32601 #33081 · 6850173588 re-point owed → split batch A r10, last history 2026-11-10 #32269; stale "delete_records" present
185 ai.mcp-run-action-exposure-gate fixtures.requires[3]; counts: action ai.description >= 40 chars; admin list_actions 47 (Mei 35), clause allows #33081 · 6850173588 · #33092 · 6850793622 re-point owed → split batch A r7, last history 2026-11-03 #29892; stale "description" present
186 search.global-search-skips-unreadable steps: totalObjects counts scanned objects and the sweep stops at the hit limit: choose T below the limit; perObject=0 accepted #33081 · 6850173588 re-point owed → split batch A r5, last history 2026-10-31 #27438; stale "totalObjects" present
229 identity-auth.self-service-password-reset steps[8]; fixtures: previous_password_hashes ring only fills while password_history_count > 0; PASSWORD_REUSE leaves the token usable; features.emailDelivery:false while mail lands #33092 · 6850793622 re-point owed → split batch A r5, last history 2026-10-20 #24963; stale "previous_password_hashes" present
230 identity-auth.two-factor-backup-codes fixtures[0]: 'one sequence on one boot' not needed #33092 · 6850793622 re-point owed → split batch A r6, last history 2026-10-31 #27377; stale "one sequence" present
231 identity-auth.ai-service-account-lifecycle acceptance[0],[2]: fresh key answers 403 under the agent ceiling: name the grant; a built-in ceiling set is refused as a person grant #33092 · 6850793622 re-point owed → split batch A r1, last history 2026-11-10 #32019; stale "200" present
244 identity-auth.admin-lifecycle-operations steps[9],[10]; acceptance[4]: original bearer answers 401 during impersonation; S10 task needs project; target must change password first #33093 · 6850899929 · #33094 · 6852480973 re-point owed → split batch A r10, last history 2026-10-26 #25843; stale "OWNS" present
245 identity-auth.session-list-revoke acceptance[0]: 'BOTH of A's sessions' assumes exactly two: start from a fresh user or read 'A's sessions only' #33093 · 6850899929 re-point owed → split batch A r4, last history 2026-11-10 #32168; stale "BOTH" present
247 identity-auth.api-key-ui-lifecycle steps[4],[5]: row action posts POST /api/v1/actions/sys_api_key/revoke_api_key (PATCH also works): name both doors #33093 · 6850899929 re-point owed → split batch A r5, last history 2026-10-27 #25807; stale "bodyExtra" present
249 identity-auth.org-membership-team-management acceptance[1]: name the gated operation (invite-member discriminates member vs admin) #33093 · 6850899929 re-point owed → split batch A r6, last history 2026-10-28 #27053; item unchanged since the record
250 identity-auth.sso-provider-groups-claim fixtures.requires: local IdP origin must be in OS_TRUSTED_ORIGINS #33093 · 6850899929 re-point owed → split batch A r1, last history 2026-11-10 #32019; missing "OS_TRUSTED_ORIGINS" (gap stands)
262 identity-auth.invitation-scope-gates fixtures: a delegated_admin can be minted over HTTP (invite as delegated_admin, sign up, accept) #33094 · 6852480973 re-point owed → split batch A r6, last history 2026-10-26 #25843; stale "delegated_admin" present
267 ux-conventions.labels-over-machine-names knownGaps[0],[2]: knownGaps[0] (Contributed by chips, objectui#13056) did not reproduce; knownGaps[2] cites http_request, removed in spec 18 #33094 · 6852480973 re-point owed → split batch A r4, last history 2026-10-19 #24649; stale "http_request" present
268 ux-conventions.write-feedback variants[6]: Studio publish toast names a count, not the package label; variants[6] lands on the expense record page #33094 · 6852480973 re-point owed → split batch A r11, last history 2026-11-04 #29906; item unchanged since the record

Activity

  1. added
    priority:p1High: required for production / M2
    pm:queueReady for the PM dispatch loop
    domain:devxDomain lane — seat card indexed by label:pm:seat
    on Nov 14, 2026
  2. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#4 · os-project-manager · session_01FEkQ5ooRyyS95kdyC2dPEX

    Claim: PM loop round 3 · 2026-11-14T16:58Z
    Session: session_01FEkQ5p5JxKhxXJ6qSCz6f9 (card thread, dev; it measured the #32908 ledger) · seat session_01FEkQ5ooRyyS95kdyC2dPEX
    Account: os-project-manager
    Branch: claude/project-thread-yvad69
    Worktree: objectstack-issue-33328
    Domain: domain:devx
    Seat: domain:devx#4
    File surface: docs/qa/platform-checklist/areas/identity-auth.json, ai.json, search.json, ux-conventions.json. ⛔ No other area file (siblings #33329 #33330 #33331 #33332 own them), no product code.
    Container & model: M, mode:thread, model: default tier, effort: default
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (checklist text lags a correct product)
    Thread-read: none
    Premise: holds: the rows are #32908's ledger readings at 87330e89 (report 6881013689); the dev re-measures each on current main before editing
    Serial constraints cleared: no open PR or live claim touches these four area files (PR #33273 merged; PR #33327 edits only approvals.json)

    Scope: one PR, Fixes #33328, skip-changeset, a per-row disposition table. Order: /mnt/project-files/pm-orders/devx/order-33328.md. Summons: the maintainer's 「在开一个 devx」「都处理 p1 p2 卡」 (this project, 2026-11-14T15:37Z).

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 14, 2026
  4. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#4 · os-project-manager · session_01FEkQ5p5JxKhxXJ6qSCz6f9
    os-dev-report

    {
      "issue": 33328,
      "status": "done",
      "branch": "claude/project-thread-yvad69",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/33362",
      "session": "session_01FEkQ5p5JxKhxXJ6qSCz6f9",
      "premise_still_valid": true,
      "summary": "All 38 batch A items (41 ledger rows, rows 240 and 241 routed from #33331) were re-measured against the source at origin/main 82838e83. 36 items are re-pointed in identity-auth.json (26), ai.json (5), search.json (3) and ux-conventions.json (2): one revision bump and one history row per item, each naming the QA record and comment, the source anchor and #33328. 2 items are already right and untouched: identity-auth.implicit-account-linking-ownership (steps[4] already names the row id) and ai.mcp-run-action-exposure-gate (the staged ai.description is 55 characters). labels-over-machine-names follows #32106 ruling A. One half-row is left for a live drive: ai.mcp-http-surface's metadata:write-alone -32601 reading. The per-row table with file anchors is in the PR body.",
      "tests": "Checklist text only; no test changed. After the edit, a JSON reparse checked every non-target item byte-identical and each target item at revision +1 with exactly one new #33328 history row. pnpm check:platform-checklist: EXIT=0, 'OK — 16 areas, 427 items (419 active, 3 planned)'.",
      "gates": "Local at head 1ef51c9b: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 16 families over 4 paths vs merge base 82838e83. Each ran with its exit captured before any pipe: 16 exited 0. pnpm --filter @objectstack/lint run check:doc-formula-expressions first exited 3 (formula and lint not built); after pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint (exit 0) it exited 0. dispatch-gates --ran: '16 derived famil(ies) accounted for — 16 run, 0 NOT-MEASURED'. pnpm lint scoped to touched packages: n/a, no package touched. PR check-runs were not read at report time; CI convergence is the seat's. Record: /mnt/project-files/pm-orders/devx/33328-gates-ran.txt.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "2 — read-only, both mcp__github__issue_read: get_comments on #32106 (ruling A) and get on #33328 (the rows table). The #32908 record comments were read for the parent card and reused from its saved copies. No write tool.",
      "api_writes": "3 relay strokes: git push of the branch (not REST); pr_create of draft #33362 with label skip-changeset through scripts/pm/fleet-write/dispatch.mjs (read back identical, no assignees); this os-dev-report through scripts/pm/post-stamped.mjs.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: seat · noted, not filed: identity-auth.admin-lifecycle-operations fixtures.requires[2] still says the walled admin starts with no active organization, while QA run #33093 found the seeded walled admin already holds a Default Organization (corrected here in workspace-org-switch, which the ledger row named); the admin-lifecycle wording was not in this card's rows, so it is left for the next sweep. Dedupe words: walled admin Default Organization, NO_ACTIVE_ORGANIZATION fixture"
      ],
      "deviations": "1) Branch fast-forwarded to origin/main 82838e83 before editing (the card's evidence base was 87330e89; the 12 commits between touch no cited source and none of the four files). 2) Rows 110 and 185 are 'already right' and untouched; row 183's -32601 half is 'needs a live drive'. 3) The ux-conventions.write-feedback edit lands on acceptance[1].verify, where the stale Studio-publish sentence sits, not on variants[6], which the source shows is right.",
      "files_changed": [
        "docs/qa/platform-checklist/areas/ai.json",
        "docs/qa/platform-checklist/areas/identity-auth.json",
        "docs/qa/platform-checklist/areas/search.json",
        "docs/qa/platform-checklist/areas/ux-conventions.json"
      ],
      "line_budget": "n/a — no skills/** or ratcheted ledger touched; diff +279/-123 over 4 files (402 changed lines, under the 3000 threshold)"
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#4 · os-project-manager · session_01FEkQ5ooRyyS95kdyC2dPEX

    ACCEPT → PR #33362 comment 6881640679 · head 1ef51c9b · non-governed, no contract-review face · readied and auto-merge armed 2026-11-14T17:43Z.

  6. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#4 · os-project-manager · session_01FEkQ5ooRyyS95kdyC2dPEX

    Landed · #33328 · PR #33362 · 2026-11-14T18:18Z

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

Metadata

Metadata

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions