Skip to content

docs(qa): wave-3 checklist accuracy slice S5 — approvals.json, ux-conventions.json, i18n.json, dashboards.json, search.json (#27377) #28339

Closed

Description

@objectstack-fleet

domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

Sub-issue of #27377, the v18.3.0 release test sweep anchor. This is wave-3 checklist-accuracy slice S5, split out on the maintainer's word in seat session session_01QSeKYmTYfaPbLQD4BJfomW: 「同意」, to the seat's proposal to split S4–S8 into sub-issues so that both devx seats can work them. ⛔ Not a claim. Any devx seat may claim it. domain:devx is inherited from the parent.

Scope

Files: docs/qa/platform-checklist/areas/approvals.json, docs/qa/platform-checklist/areas/ux-conventions.json, docs/qa/platform-checklist/areas/i18n.json, docs/qa/platform-checklist/areas/dashboards.json, docs/qa/platform-checklist/areas/search.json. No other file. ⛔ No product code.

Rows: 21, from the seat's read-only census of every finding parked on #27377 (census note 6539602007), taken at origin/main 501c864dd5. Re-verify each row against the current head before editing. A row that no longer holds is reported as fixed upstream.

census row record item verdict evidence (census)
51 #27409 approvals.email-action-token-door STALE steps[1] "a slot listed twice counts twice", but notified:1 was measured.
52 #27409 approvals.status-mirror-field STALE fixtures name no submitter persona with create on the trigger object.
53 #27409 approvals.request-page-reply-and-reader-visibility STALE acc[2] "a non-participant's by-id read on /data/sys_approval_request → 404". Every non-admin gets 403. The pin claim needs the same edit.
104 #27441 approvals.record-page-decisions STALE steps[9] and A4 have no "Admin override" menu.
105 #27441 approvals.record-page-decisions STALE acc[3].verify "inline-edit affordances are absent". In fact Edit is disabled and the band text is unnamed.
106 #27441 approvals.inbox-metadata-actions STALE requires[2] "the seeded approver of EXP-2001 / EXP-DEMO is the dev admin". Ada is routed too.
107 #27441 approvals.quorum-m-of-n STALE acc[4] "matches the API at each stage". The tally renders only while pending.
108 #27441 approvals.per-group-signoff STALE acc[2] "match the API at each stage". Same pending-only point.
111 #27441 dashboards.chart-type-matrix STALE acc[4] "render the SAME value as metric" (chrome differs); steps[4] does not say there are only 2 month buckets.
113 #27441 i18n.strict-translation-key-rejection STALE steps[0] "The name describe … still calls the locale code the convention"; no locale-shape variant.
114 #27441 i18n.notification-localized-and-clears STALE steps[4] "open the bell". Name the popover. The Home card now marks read (#27447, #27653).
115 #27441 i18n.surface-matrix STALE steps[7] contact form; automated.ref pnpm --filter @object-ui/components exec vitest run.
123 #27441 search.console-global-search STALE acc[3] "/apps///record/". The app segment is canonicalised to the package id.
126 #27441 ux-conventions.write-feedback STALE variants[4] "'Task marked done.'" and variants[5] "'Invitation sent to ${result.email}'".
127 #27441 ux-conventions.write-feedback STALE variants[1] does not name the Grid view.
128 #27441 ux-conventions.write-feedback STALE steps4 "drive it as a refused transition … on the record form or an inline status edit".
162 #27438 search.field-scoped-narrowing STALE Duplicate of the accuracy row: state the resolveSearchFields contract ([] = absent, [''] = 400).
169 #27438 search.global-search-skips-unreadable STALE requires[2] "last_login_ip is null on every row". The finding line is truncated in the comment but readable.
170 #27438 search.field-scoped-narrowing STALE No clause decides the empty override. Add one per spec resolveSearchFields.
232 #27438 i18n.surface-matrix STALE acc[7] "sixteen groups (the fifteen per-app groups…" (hooks added). The finding line is truncated.
233 #27438 dashboards.analytics-exposure-gate-and-measure-aggregate STALE requires[2] "an apiEnabled:false object with a cube … in the scratch app". Stock specimens exist.

GAP rows are listed only where the census found a cheap fixture recipe. The other gaps stay parked on #27377.

Edit shape (wave 2's slices A–D; #27164 is the precedent)

Not in this slice (held on #27377 until ruled)

  • studio-authoring.expression-editors;
  • the SCOPE-negatives sweep, which includes platform-core.notification-center negative[3];
  • ai.mcp-stdio-fail-closed;
  • the UNCLEAR rows: settings-organization-isolation-and-platform-rung and ux-conventions.write-feedback acc[1].verify, among others.

Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    priority:p1High: required for production / M2
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Oct 31, 2026
  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-zhuang · session_01QUs3BvP5Aq9USg5GtmgAAR

    Claim: PM loop round 1
    Session: session_01QUs3BvP5Aq9USg5GtmgAAR
    Account: os-zhuang
    Branch: claude/project-thread-6titvb (the card thread's platform-assigned push branch, the measured platform exception to the protocol branch shape)
    Worktree: objectstack-issue-28339
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: docs/qa/platform-checklist/areas/{approvals,ux-conventions,i18n,dashboards,search}.json (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: default (dispatch-gates --tier: no path-derived mandate; 21 census rows needing code reads), effort: xhigh (p1)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (census 6539602007 at 501c864dd5; no commit on the five files since, at 22ce3d13fe; the dev re-verifies each row at head)
    Serial constraints cleared: disjoint from in-flight slices #28338, #28340, #28342 and #28341; rows held on #28345 (incl. ux-conventions.write-feedback acc[1].verify) are out of scope; none

    Taken at 2026-10-31T06:38Z on seat 2's hand-over (sign-off brief 6540114700: 「剩下的叫给 seat 1」).

  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-zhuang · session_01QUs3BrWDv9TR18p6R88RwQ
    os-dev-report

    {
      "issue": 28339,
      "status": "done",
      "branch": "claude/project-thread-6titvb",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28372",
      "session": "session_01QUs3BrWDv9TR18p6R88RwQ",
      "premise_still_valid": true,
      "summary": "Re-verified all 21 S5 census rows at 22ce3d13. The five files are byte-identical to census base 501c864dd5, so the PM assumption holds. Corrected 16 items across approvals, ux-conventions, i18n, dashboards and search. Each item got revision +1, kept main history as an exact prefix, and got ONE appended row citing its run record (#27409 / #27441 / #27438) and #27377. None of the 21 rows was fixed upstream as a whole. Rows 162/170 (search.field-scoped-narrowing) had moved: the finding read an empty $searchFields as absent, but #27484/#27683 now refuse it, so the new acceptance[4] states today's refusal. No clause was weakened. There are two coverage additions (an i18n locale-shape variant and a search empty-override clause). No product defect was found.",
      "tests": "Docs-only ledger change. No package touched, so no package tests owed. Prefix check by script against 22ce3d13: 16 changed items, each with revision +1, history +1, old history a byte-equal prefix, and last row revision equal to the item revision. Area-level blocks, item count and order are unchanged. pnpm check:platform-checklist at 7397bb1f: OK, 16 areas, 352 items; symbol anchors 1073/1083 (10 on the named residual). No ablation: no tested behaviour changed.",
      "gates": "Head 7397bb1f. dispatch-gates --commands --repo objectstack-ai/objectstack exited 0 with 16 commands, and all 16 exit 0 (captured before any pipe): check-adr-links (+self-test), check-closing-keyword-parity (+self-test), check-comment-mask-corpus, plan-test-core-shards --self-test, lint check:doc-formula-expressions, check:ci-filter-parity, check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist, check:refd-timer-probe, check:watch-hint-literal. check:doc-formula-expressions first exited 3 (PREREQUISITE NOT MET) until formula and lint were built under os-verify-lock (VERDICT command-exit 0); it then exited 0. --ran reconciliation: 16 derived, 16 run, 0 NOT-MEASURED (a derived zero, all 16 coded). CI check-runs were in_progress at report time and not awaited, per contract. NOT MEASURED locally: the CI-only Plan Test Core shards step and the type-check steps dispatch-gates lists.",
      "line_budget": "203 changed lines (+141 / -62) over 5 files, under the 3000 human-merge threshold; no skills/** ledger touched",
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "files_changed": [
        "docs/qa/platform-checklist/areas/approvals.json",
        "docs/qa/platform-checklist/areas/dashboards.json",
        "docs/qa/platform-checklist/areas/i18n.json",
        "docs/qa/platform-checklist/areas/search.json",
        "docs/qa/platform-checklist/areas/ux-conventions.json"
      ],
      "deviations": [
        "worktree: the platform-assigned branch was checked out in the primary clone, so I detached the primary checkout and added worktree objectstack-issue-28339 on that branch (no new branch and no empty-branch probe push, per the card-thread rule)",
        "bounded in-place fix beyond the 21 rows: ux-conventions.write-feedback knownGaps[1] quoted the approve successMessage in the retired dollar-brace spelling. It is corrected to the declared double-brace template in the same history row: same item, same defect class as row 126, mechanical, and named in the PR body",
        "commit trailers use the model-free pair AGENTS.md prescribes (Claude-Session + Co-authored-by: Claude), not the model-named trailer in the harness reminder",
        "PR created with no assignees and no reviewers, as the dispatch Writes line says. Conflict for the seat: AGENTS.md says the PR assignee mirrors the card (set at pr_create), and the session context asks to assign os-zhuang and request their review. os-dev.md and the dispatch say none. Left for the seat"
      ],
      "mcp_calls": "2: mcp__github__issue_read (get, get_comments on #28339). Reads only, no write tool",
      "api_writes": "3: git push of the branch; relay pr_create via scripts/pm/fleet-write/dispatch.mjs (POST /repos/objectstack-ai/objectstack/dispatches, run 41179357948, which made POST /pulls #28372 + POST /issues/28372/labels skip-changeset); this os-dev-report comment via post-stamped.mjs (POST /issues/28339/comments). Reads via gh api: census and run-record comments, PR read-back",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none · noted, not filed. The sys_user.last_login_ip field description (packages/platform-objects/src/identity/sys-user.object.ts) says the value comes from the trusted proxy forwarded header. Without server.trustProxy, the client-address rule stamps the transport peer address (plugin-auth client-address.ts). Copy drift on an admin-group field description; recorded in PR Acceptance notes. Dedupe words: last_login_ip description trustProxy peer address"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-zhuang · session_01QUs3BvP5Aq9USg5GtmgAAR

    Landed · 2026-10-31T07:42Z — PR #28372 merged through the queue as edf9714b.

    Probe Result
    PR #28372 merged, merged=true
    Content on origin/main 5 area files (approvals, dashboards, i18n, search, ux-conventions) — blob sha1 identical to PR head

    State change: card closed completed by Fixes; pm:dispatched removed in this stroke.

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: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