Skip to content

qa(checklist): approvals — 19 ledger edits from the 18.2.0 release sweep (#25807) #25838

Closed

Description

@objectstack-fleet

Filing gate: maintainer-directed task. Filed by the 18.2.0 release-assessment thread · session_01G3h9iZTpL8aCiXbfsp8H5u. ⛔ Not a claim, ⛔ not dispatched.

Maintainer's words (project thread, 2026-10-25, verbatim): 22:54Z 「约 300 条清单准确性问题:是不是应该开卡?」, then 22:55Z 「写issue,不派发」.

Parent: wave anchor #25807 (18.2.0 release test sweep). RUNNER's extraction obligation parks checklist-accuracy findings on the anchor; the maintainer asked for them as issues, so the wave's findings are split into one card per ledger file and the anchor links each card. This is not a release blocker, so it carries no target:v18.

Reader who acts: the lane owning docs/qa/platform-checklist/** (domain:devx). Dedupe (open and closed): no card holds these lines; the 18.0 precedent closed its accuracy rows on its anchor #24579.

Wanted

For each line below, edit docs/qa/platform-checklist/areas/approvals.json: revise the item's text, bump its revision, and append a history entry citing the run record the line comes from. Keep pnpm check:platform-checklist green. A line that turns out to describe a product defect rather than stale text gets its own card instead of a ledger edit.

Findings (19)

From #25812 — priority:P0, 23 items, at 6679644a, pin b41ed7f68956

  • approvals.account-app-entry: "drawer" wording in steps 6–7 and acc[1], acc[3], acc[4] is stale — objectui removed the side sheet (objectui#12484); a row click or ?request= now opens /apps/APP/sys_approval_request/record/ID; the account app answers on two URL segments (account and com.objectstack.account), which matters for acc[5].

From #25815 — release-18.2.0-tier1, 156 items, at 6679644a, pin b41ed7f68956 (clause labels: aK = acceptance[K], nK = negative[K])

  • approvals.decision-only-via-service all clauses: the ref (kind 'test') is packages/services/service-automation/src/resume-authority-gate.test.ts, an AutomationEngine + InMemorySuspendedRunStore unit — every clause's oracle is the api (route status, run/actions reads); precedent QA run · tier1:24681-touched (63/82) · 307ce4c4 · 2026-10-20 · 10 PASS / 53 PARTIAL / 0 FAIL / 0 BLOCKED / 19 NOT-RUN #24840 scored rev 1 PASS from it before the layer rule. Needs an HTTP pin (generic resume route + approvals API) to be Tier 1.
  • approvals.email-action-token-door a0: clause's live at-rest sys_notification read stays a run leg; FORBIDDEN arm is exercised with 'stranger' (not an approver at all) rather than a non-pending approver
  • approvals.email-action-token-door a1: pin asserts status pending + no decisions, not byte-identity of the actions timeline / token consumed_at
  • approvals.email-action-token-door a3: 'a decide that fails still burns it' (consume-first under a failing decide) is not asserted by any named pin
  • approvals.request-page-reply-and-reader-visibility a1: no pin asserts the approval_comment reply landing in the timeline, or the pending-approver/submitter-only restriction on replying
  • approvals.request-page-reply-and-reader-visibility a2: ref says request-read-gate covers acceptance[2]; it drives ObjectQL/protocol in-process, never /data/sys_approval_request over HTTP
  • approvals.status-mirror-field a2: the clause names the SLA auto-decision as a second user-less machine transition; the pin drives only the dead-run sweep (the verify asks only for the sweep)
  • approvals.status-mirror-field a0/a1/a3/a4: the ref is the only pin and covers a2/n2 alone; the api/log clauses have no automation

From #25817 — release-18.2.0-manual-set, 29 items, at 6679644a, pin b41ed7f68956

  • approvals.approver-resolution-matrix: The suggested fallback, org_membership_level owner, does not discriminate on stock, because the owner is the sole admin. Use {type:'user', member} instead.
  • approvals.decision-action-matrix:
    • knownGaps[0]: the "one untried candidate" (a schedule-triggered approval) is refuted, and so is an api-hook on an object with no organization column. No stock door mints an org-less request.
    • N1 quotes "a reminder was sent recently"; the live text is "a reminder was already sent recently".
    • A0 says "exactly one" row, but the maxRevisions auto-reject appends revise then reject.
  • approvals.per-group-signoff:
    • A3.verify says end nodes log no step, but the approve branch now logs mark_approved.
    • Steps 3/4 say "drawer" and 待我审批. The row opens the served sys_approval_request record page, and the English tab is "My Pending".
    • The N0 contrast has no stock per_group collapsed-slate request; the unanimous invoice (admin×2) was used.
  • approvals.quorum-m-of-n: A2 says the reject edge is unobservable, but the run logs return_to_draft on reject. On a fresh boot the fixture needed no unbinding.
  • approvals.inbox-metadata-actions:
    • Steps 1/2/5 and A0 still say "drawer" and 待我审批/我发起的.
    • The Record cell opens the subject record, which also renders the bar, while the Request cell opens the request page. The steps should name the cell.

Acceptance

  • Every line above is either applied (item revised, revision bumped, history cites the record) or answered on this card with the reason it was not.
  • pnpm check:platform-checklist is green.
  • The PR links this card and [sweep] v18.2.0 release test sweep #25807.

Generated by Claude Code

Activity

  1. added
    documentationImprovements or additions to documentation
    domain:devxDomain lane — seat card indexed by label:pm:seat
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    pm:queueReady for the PM dispatch loop
    and removed
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    on Oct 25, 2026
  2. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 26, 2026
  3. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-26T12:19Z
    Session: session_01Q4MDXRbEJCNdPAP4SiXwp9 (devx seat 2) · card thread session_01VwduP3gdrCAQyEyLmPtrUN
    Account: os-steve
    Branch: claude/project-thread-8mee5z (the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)
    Worktree: objectstack-issue-25838
    Domain: domain:devx
    Seat: domain:devx#2 (seat post #20163)
    File surface: docs/qa/platform-checklist/areas/approvals.json only (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (action surface git log origin/main on the file since filing: no commit; the dev re-reads each line against main first)
    Serial constraints cleared: own ledger file only; seat 1 holds #25835 / #25836 on other files; #26035 left the retired objectui pin wording in these files to these cards; no other Claim: names this file


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 25838,
      "status": "done",
      "branch": "claude/project-thread-8mee5z",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26116",
      "session": "session_01VwduP3gdrCAQyEyLmPtrUN",
      "premise_still_valid": true,
      "summary": "All 19 approvals.json lines applied to ten items (one revision bump + one history row each, citing QA run 25812 / 25815 / 25817 and this card; refs swapped to #26116). Every line was re-read at origin/main 9753d163, with ui/ for the console paths; none is a product defect, so none was withheld. The retired objectui pin wording in the file (objectui:build, .objectui-sha, check:console-sha, 'at the console pin') is respelled to the in-tree pnpm console:build flow in account-app-entry and request-page-reply-and-reader-visibility. File premise holds: approvals.json has no commit on main since 73432299 (2026-10-21).",
      "tests": "no test or code changed; span-editor proof: the new document equals the old with exactly 52 declared field ops applied, every edited item revision +1 with one appended history row, every other item and top-level key value-equal, and the text outside the ten edited items byte-identical",
      "gates": "local, at head 55b1e1c7: pnpm check:platform-checklist exit 0 ('check-platform-checklist: OK — 16 areas, 329 items (324 active, 1 planned)'); dispatch-gates --commands derived 13 families, all 13 ran with exit 0 (check:doc-formula-expressions first exit 3 PREREQUISITE, re-run after the prescribed turbo build of @objectstack/formula + @objectstack/lint: exit 0); --ran: '13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED (a DERIVED zero)'. CI families: in_progress on PR 26116 at report time",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "line_budget": "1 file, +102 / -60 then +10 / -10 (ref swap); 172 changed lines in all, under the 3000 human-merge threshold",
      "files_changed": ["docs/qa/platform-checklist/areas/approvals.json"],
      "deviations": [
        "same-item consistency edits beyond the card's literal field list: per-group-signoff acceptance[2], inbox-metadata-actions acceptance[1] and fixtures.requires[1] carry the same stale drawer / zh-only tab wording as the fields the card names; named in each history row and the PR body",
        "PR body gate section cites head 95fe453c; the gates were re-run on 55b1e1c7 (the ref-swap commit) with the same result; body not PATCHed per contract",
        "check:doc-formula-expressions needed a local build of @objectstack/formula and @objectstack/lint (under os-verify-lock) before it measured"
      ],
      "mcp_calls": "5 — mcp__github__issue_read x5 (get 25838, get_comments 25838 x3, get 26052); no write tool",
      "api_writes": "2 — POST /repos/objectstack-ai/objectstack/dispatches (relay stroke pr_create: POST /pulls, POST /issues/26116/assignees, POST /issues/26116/labels; read back identical, assignee os-steve, label skip-changeset) · this os-dev-report comment via post-stamped. git push x2 (not REST)",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: #25807 · noted, not filed — 'drawer' wording persists in five items the card does not name: quorum-m-of-n (steps[8], acceptance[4]; run 25817 A4 read the record-page tally '0 of 2 · 3 eligible'), viewer-gating-submitter-side, notification-deep-link (title + ten fields), dynamic-approver-routing steps[3], inbox-keyboard-flow (title + thirteen fields)",
        "carrier: #25807 · noted, not filed — decision-action-matrix acceptance[9].verify still calls an org-less row 'the shape every schedule / time-relative / api-trigger run mints'; run 25817 measured an api-hook approval on a tenancy-disabled object stamping the default organization",
        "carrier: #25807 · noted, not filed — per-group-signoff steps[5] still offers 'via the documented override path', which its knownGaps[0] says is no longer acceptable",
        "carrier: #26035 · noted, not filed — record-page-decisions source[0]-[2] cite objectui blobs 'at the console pin cf153eb2e535' (provenance of a past read, not a retired-script instruction); left alone"
      ]
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    devx seat 2 · review: ACCEPT → PR #26116 comment 6416691831. Landing: ready + merge queue once every check on the reviewed head is green or skipped.


    Generated by Claude Code

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:devxDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions