Skip to content

[Decision] wave-3 checklist: five held items need a ruling before their ledger edits (#27377) #28345

Closed

Description

@objectstack-fleet

domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

Ruled: 6545938831 · letter A ×5 · 2026-10-31T16:19Z
Ruling-ref: 6545938831

Sub-issue of #27377. The seat's census (6539602007) held these rows out of slices S1–S8. They are split out here on the maintainer's 「同意」 in seat session session_01QSeKYmTYfaPbLQD4BJfomW, so the other slices keep moving. ⛔ Not a claim.

维护者速读

wave 3 的清单收尾里有 5 处不能由席位自己定,需要你裁;另有 4 处席位按既有规则自行处理(见末节)。每项给出推荐,你可以一句「全部按推荐」,也可以逐项改字母。裁完由席位派一个小批次落地,约 1.5 小时。

需要裁的 5 项

① SCOPE 类否定项的写法(约 25 个 studio 测试项 + platform-core.notification-center negative[3];census 行 80、167)

② ux-conventions.write-feedback acc[1].verify:Studio 顶栏的保存状态算不算「写入反馈」(行 129)

  • A(推荐):只有写出对象名的反馈才算(toast 或行内提示)。Studio 顶栏的「已保存」若不带对象名,就不算,按约定原文「每次写入都有点名记录的可见反馈」。
  • B:顶栏状态算,约定放宽。
  • 理由:约定原文要求点名记录;放宽等于改约定,而不是改清单。

③ studio-authoring.validation-rules-authoring A3:initialStates(行 160、225)

  • 问题:A3 要求判 invalid_initial_state,但 Studio 没有 initialStates 输入框,只能经 API 写。
  • A(推荐):从 acceptance 移除这一项,在 knownGaps 写明「Studio 无 initialStates 输入,仅 API 可写」。
  • B:立产品卡给 Studio 补这个输入框。
  • 理由:实测没有拉动,没人在 Studio 里要它(②)。创业阶段不扩表面(④)。以后有人要再立卡。

④ records-forms.bulk-select-all-matching:横幅显示超过 5000 上限的总数(行 161)

  • 问题:「全选匹配的 N 条」显示的是不封顶的 N,实际只处理 5000 条。
  • A(推荐):立产品缺陷卡,横幅要写明上限(例如「将处理前 5000 条」);清单加一条判据钉住它。
  • B:视为可接受,清单只记现状。
  • 理由:用户以为处理了全部、实际没有,是静默的部分执行(③)。

⑤ platform-core.settings-organization-isolation-and-platform-rung:组织管理员能否覆盖自己租户的 LOCKED 设置行(行 164)

  • 问题:清单缺这条判据,也没人实测过。
  • A(推荐):语义定为「LOCKED = 平台锁定,组织管理员保存应被拒」。清单补一条否定判据;派实测,若实测是允许的,按安全类缺陷立卡。
  • B:允许组织管理员覆盖。
  • 理由:涉及权限边界,在人工地板上,必须由你定。

os-decision-facets
① 长远:①A 收敛否定项格式;②A 守住约定原文;⑤A 权限语义先定后测,都不新增特例
② 拉动:③ 无人用 Studio 写 initialStates,零拉动;④ 横幅数字误导真实用户
③ 防错:①A 闭合格式;④A 把静默的部分执行变成明示;⑤A 先定拒绝语义再实测
④ 不扩散:③A 不扩 Studio 表面;①A 删掉一类特例,而不是加规则
Prior rulings read: "SCOPE negative" "write-feedback" "initialStates" "select all matching" "LOCKED tenant" → #27651 (precedent for ①), #26459/#26461 (write-feedback fixes); ADR none; thread: census 6539602007

席位自行处理的 4 项(按既有规则,不需裁)


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    director#2 · os-tesla · session_01L9qibxdiybU8ehPKBroYE3

    Brief-claimed-by: session_01L9qibxdiybU8ehPKBroYE3 · batch #434 · 2026-10-31T16:00Z

    Director seat (the maintainer's decisions thread, 2026-10-31). Presented to the maintainer in batch #434 (five items: #27767, #28345, #28313, #28367, and the any / or key question on PR #28380) with the latest four-facet letter on this card as the seat's reading; the seat's increment and the maintainer's letter follow in the ruling comment.

  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    director#2 · os-tesla · session_01L9qibxdiybU8ehPKBroYE3

    Ruling: batch #434 item 2 · letter A ×5 (①–⑤) · maintainer 「同意」 2026-10-31T16:15Z

    Director seat (the maintainer's decisions thread). Presented in batch #434 (brief-claimed on this card; detailed letters in the project's decision doc, batch 3). The maintainer answered the batch at 2026-10-31T16:12Z, verbatim: 「同意」 = every item at the seat's recommendation, which for this card is A on all five sub-items.

    What the ruling binds:

    • ① The ~25 SCOPE: / cross-ref: negatives are scope notes, not criteria: move them to source[] or knownGaps (the docs(qa): re-point records-forms.field-history-tracking to the record page v3 sys_audit_log gate; the live history spec reads the Changes chip #27651 precedent); negative keeps only decidable entries. No RUNNER special case.
    • ② The Studio top-bar 「已保存」 is not write feedback under the convention; only record-naming feedback (toast or inline) counts. The convention's wording stands.
    • ③ validation-rules-authoring A3 (invalid_initial_state) leaves acceptance; knownGaps states that Studio has no initialStates input and the state is API-only. No product card for a Studio input.
    • ④ bulk-select-all-matching: file a product defect card — the banner names the cap (e.g. 「将处理前 5000 条」); the checklist gains one criterion pinning it.
    • ⑤ LOCKED = platform-locked; an org admin's save of a LOCKED settings row is refused. Add the negative criterion and dispatch the live measure; if the measure shows the save is allowed, file it as a security card.

    The four items the seat handles under existing rules (expression-editors clause kept, mcp-stdio 「⛔ Not os dev」 intentional, encrypted-field in-process pin at the pin layer, form-view-gallery after re-test) are not ruled here; they stay the seat's.

    Workload: domain:devx · one small batch of checklist edits (~1.5 h) · two new cards (④, and ⑤ only if the measure fails) · no spec key, no protocol change.

    Execution: the devx seat (os-justin) dispatches the batch with Ruling-ref: naming this comment; needs-user-decision → the next label is the dispatching seat's stroke.

  3. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Claim: PM loop round 1
    Session: session_017ihL2gLghEqeDKTbDTC7Zd
    Account: marchtian
    Branch: claude/issue-28345-wave3-held-items
    Worktree: objectstack-issue-28345
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: docs/qa/platform-checklist/areas/*.json (the census rows of ①–⑤ plus the seat's expression-editors mechanical fixes; no code, no RUNNER.md rule change)
    Container & model: S/M checklist edits, mode:subagent, model: default tier (dispatch-gates --tier gives no path mandate for docs/qa/**), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6545938831
    Premise: holds
    Serial constraints cleared: none (no open PR touches docs/qa/platform-checklist/** at claim time; #28116 merged 2026-10-31)

    Ruling-ref: 6545938831 (letter A ×5). The ruling's execution line names "the devx seat (os-justin)"; os-justin signed off seat 2 (brief 6540114700) and this session now holds seat 2 (opening mark 6553813514), so the dispatching stroke is this one: needs-user-decision → pm:dispatched. Premise readings at origin/main: 38 SCOPE:/cross-ref: negatives remain across six area files (24 in studio-authoring.json); the A3 invalid_initial_state clause is still in validation-rules-authoring (studio-authoring.json). The seat files the ④ product defect card itself; ⑤'s live measure is part of this dispatch, and a security card follows only if the measure shows the save is allowed.

  4. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd
    os-dev-report

    {
      "issue": 28345,
      "status": "done",
      "branch": "claude/issue-28345-wave3-held-items",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28551",
      "head": "5e7c1c9e",
      "session": "session_017ihL2gLghEqeDKTbDTC7Zd",
      "premise_still_valid": true,
      "files_changed": [
        "docs/qa/platform-checklist/areas/access-security.json",
        "docs/qa/platform-checklist/areas/platform-core.json",
        "docs/qa/platform-checklist/areas/records-forms.json",
        "docs/qa/platform-checklist/areas/studio-authoring.json",
        "docs/qa/platform-checklist/areas/ux-conventions.json"
      ],
      "items_edited": 32,
      "line_budget": "302 insertions / 127 deletions over 5 files (git diff --shortstat origin/main...HEAD at 5e7c1c9e); no skills/** or governed surface touched",
      "gates": "local, head 5e7c1c9e, exit captured before any pipe: 16/16 derived families exit 0 (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); --ran: 16 derived, 16 run, 0 NOT-MEASURED (a DERIVED zero); check-platform-checklist --changed-from origin/main: OK, 0 anchors lost; PR check-runs: in_progress at report time",
      "tests": "docs only, no package changed: no build closure owed, no package suite run",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 — POST /repos/objectstack-ai/objectstack/dispatches (fleet-write pr_create, run 41278017877, PR #28551 read back identical, 7942 bytes); POST issue comment on #28345 via post-stamped.mjs (this report)",
      "deviations": [
        "scope of ①: PM count 38 was whole-file string counts; 26 SCOPE:/cross-ref: negatives on active items plus 2 same-shape spellings (cross-ref without colon, cross-ref guard:) moved = 28; 4 out-of-scope-worded negatives and 2 on retired items left, listed in the PR Acceptance notes",
        "validation-rules-authoring carries its ① and ③ edits in one revision bump and one history row (one row per edited item)",
        "expression-editors mechanical fixes not taken: the census comment does not quote its rows' text",
        "PR body first line is the mandated attribution HTML comment (order text, verbatim)"
      ],
      "out_of_scope_findings": [
        "class: a · reach: public door — Console list bulk bar: past 5000 matches the banner reads 'All M matching records are selected' while resolveBulkRows processes the first 5000 · evidence: ui/packages/plugin-grid/src/components/BulkActionBar.tsx (grid.bulkSelectAllMatching / grid.bulkAllMatchingSelected / grid.bulkSelectedAllMatches count totalMatching) vs ui/packages/plugin-grid/src/ObjectGrid.tsx resolveBulkRows HARD_CAP 5000; pinned by records-forms.bulk-select-all-matching acceptance[5] · carrier: seat (ruling item ④ product defect card) · dedupe: select all matching cap, HARD_CAP 5000 banner, bulk partial execution"
      ]
    }
  5. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd
    os-dev-report

    {
      "issue": 28345,
      "round": "rework 1 (seat review of PR #28551 at 5e7c1c9e)",
      "status": "done",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28551",
      "head": "6da28884",
      "session": "session_017ihL2gLghEqeDKTbDTC7Zd",
      "delta": [
        "access-security.platform-owner-email-anchor: negative[3] (out-of-scope note) moved to source[10]; automated.ref's closing pointer now names source[10]; revision 12 to 13, one history row",
        "approvals.pending-count-surfaces: negative[1] moved to fixtures.knownGaps[1], carrying objectui#4074 verbatim; revision 3 to 4, one history row",
        "ux-conventions.write-feedback: acceptance[0].verify gains the same Studio top-bar exclusion; folded into this PR's existing revision 9 and its single history row",
        "records-forms.bulk-select-all-matching: 'card owed (seat files)' replaced with #28552 in knownGaps[1] and in this PR's history row (acceptance[5] never carried it)"
      ],
      "files_changed_this_round": [
        "docs/qa/platform-checklist/areas/access-security.json",
        "docs/qa/platform-checklist/areas/approvals.json",
        "docs/qa/platform-checklist/areas/records-forms.json",
        "docs/qa/platform-checklist/areas/ux-conventions.json"
      ],
      "line_budget": "PR total 320 insertions / 138 deletions over 6 files (git diff --shortstat origin/main...HEAD at 6da28884); this round 21 / 14",
      "gates": "head 6da28884, exit captured before any pipe: the 16 derived families (same list as round 1) all exit 0; --ran: 16 derived, 16 run, 0 NOT-MEASURED (a DERIVED zero); check:platform-checklist OK, 16 areas, 352 items; check-platform-checklist --changed-from origin/main OK, 0 anchors lost; PR check-runs on the new head: in_progress at report time",
      "mcp_calls": "0",
      "api_writes": "1 this round: this comment via post-stamped.mjs. No PR write: the PR body was written once, at pr_create",
      "pr_body_edit_owed_by_seat": "The Acceptance notes section is stale on four points. 1. Drop the platform-owner-email-anchor and approvals.pending-count-surfaces bullets: both moved. 2. Keep the ux-conventions carve-outs and the two retired items, with the reason 'carve-outs of their own criterion / a retired item never runs; left by seat ruling'. 3. Replace the acceptance[0] bullet with 'acceptance[0].verify carries the same exclusion'. 4. Add 'README / checklist-author closed-format note: dropped, unruled scope'. In What changes, ① now covers 30 items and ④'s card is #28552",
      "deviations": [
        "the README / skill closed-format note was dropped: unruled scope, per the seat"
      ],
      "out_of_scope_findings": []
    }
  6. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Landed · 2026-11-01T06:21Z · PR #28551 merged as c658320792 (reviewed head 6da28884, seat record ACCEPT 6554242709). Ruling 6545938831 items ①–⑤ are in the ledger. ④'s product card is #28552. ⑤'s follow-up stays with the seat and the maintainer, outside this card. pm:dispatched is 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