Skip to content

qa(checklist): standing regression between releases — a retest-owed reader over QA-source cards, a touched:SHA selector in checklist-select, and checklist-test §5 cadence for a weekly P0 + api run and a post-publish npm smoke (maintainer, 2026-10-29) #27383

Closed

Description

@objectstack-fleet

domain:devx#1 · sunhaolin · session_017xRBcVy4VXmkQjn2MGeaWk

Filing gate: ③ a maintainer-directed task. The maintainer, in session session_017xRBcVy4VXmkQjn2MGeaWk on 2026-10-29, asked how to improve periodic testing so platform problems are found in time (verbatim: 「你也可以和我沟通如何完善定期测试,及时发现平台的问题」). Asked which items to land first, they selected all four of the proposed options (option labels as shown to them): 「欠测清单脚本 + 周检」, 「增量选择器 touched:sha」, 「每周 P0 + api 例行」, 「发版后 npm 冒烟例行」. Then: 「这些都应该写到 checklist skills 中」.

Business reason: between releases nothing re-runs the checklist. The measured cost of that gap:

Reader: the runner and PM sessions that run checklist-test, plus the scheduled tasks the dispatching PM session will create once this lands. Those tasks are a weekly regression and a release watch, created by that session as scheduled tasks; they are not repository code.
Dedupe (open AND closed): "checklist-select selector items touched since sha retest owed QA-source fixed cards scheduled weekly checklist run" returns 162 hits, and none of them is a selector, a reader or a cadence. scripts/qa/qa-rollup.mjs answers "latest verdict per selector and its staleness". It does not answer "which fixes landed after the verdict that found them". Extend it if that is the cleaner home.

Deliverables

  1. Retest-owed reader. A read-only script, scripts/qa/retest-owed.mjs or a qa-rollup mode.
    • It lists every closed issue whose body carries a QA-source: #RECORD · area.item · clause line and whose close time is after the subject commit time of the newest qa-run record that judged area.item.
    • Output per row: item id, fix card(s), the record that last judged the item, and whether a later record already re-judged it.
    • It has a --json mode and an offline --self-test in the repository's existing self-test battery style.
    • ⛔ It writes nothing to GitHub.
  2. touched:SHA selector in scripts/checklist-select.mjs.
    • It selects the runnable items whose source[] paths, or automated.ref files, changed in SHA..HEAD, comparing paths with the anchor suffix (#symbol) stripped.
    • Directory sources match by prefix.
    • It is deterministic and listed in the selector table. Self-test cases go in the existing battery, and its pinned floor rises.
  3. checklist-test SKILL.md cadence text, in §5 or a new short section.
    • Weekly regression: the retest-owed list, plus touched: the previous weekly record's subject, plus priority:P0, plus surface:api, on main HEAD. One qa-run record per selector. The supersede protocol keeps at most one open weekly record per selector.
    • Post-publish npm smoke: after each published release, the smoke:npm-VERSION run in the shape of QA run · smoke:npm-18.2.0 (25/25) · 27f38ada · 2026-10-27 · 22 PASS / 0 PARTIAL / 3 FAIL / 0 BLOCKED / 0 NOT-RUN #26629. Its fix cards are re-judged there.
    • This adds a fourth retest trigger to §5's "three and only three". Write it with the ruling cited above. ⛔ Keep the rule that hand-feel reruns are not a trigger.
  4. RUNNER.md only if a definition there needs the new selector named.

Gates to expect

Out of scope

  • Creating the scheduled tasks. The dispatching PM session does that after this lands.
  • Any change to verdict rules.
  • Any CI workflow.

Clause-②: no. Metadata-protocol: none.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 什么算做好 | none | none

    Triage: p1 · domain:devx · area:devpath · 2026-10-29T04:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-elon-musk · session_01LKHDniRQSWjRJyDtacwpEd

    Claim: PM loop round 1 · 2026-10-29T14:53Z
    Session: session_016WV4d1oYpq8eEjYF141fC3 (card thread, dispatched by seat session session_01LKHDniRQSWjRJyDtacwpEd)
    Account: os-elon-musk
    Branch: claude/project-thread-j3pqng (the harness-pinned branch for the card thread; it names no issue, so this claim is the identity record)
    Worktree: objectstack-issue-27383
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: scripts/qa/retest-owed.mjs (or a qa-rollup mode), scripts/checklist-select.mjs (touched:SHA selector + self-test), .claude/skills/checklist-test/SKILL.md §5 cadence text, and their tests (stop on breach; explain in the report)
    Container & model: L, mode:thread, model: default, effort: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: between releases nothing re-runs the checklist, and retest debt after QA-sourced fixes goes unseen (20 such fix cards closed on #25807 with its retest list still empty) | no reader, no selector, no cadence | every release sweep and every regression that lands between them
    Thread-read: 6488316134
    Premise: maintainer-directed 2026-10-29 (four options chosen, then 「这些都应该写到 checklist skills 中」); the dev re-reads checklist-select and qa-rollup on origin/main first
    Serial constraints cleared: the dev lists open PRs touching scripts/checklist-select.mjs, scripts/qa/** and .claude/skills/checklist-test/** before editing; #27382 and #27390 (seat 2's share) also edit checklist-test/SKILL.md, so one card per file: whichever lands second merges main first

    Seat pick on the full order with seat 2 (#20163), alternation (knock 6499301324). Contract review: required — .claude/skills/checklist-test/SKILL.md is governed (Tier S, CONTRACT_REVIEW_TIER); the build runs at the default tier, a CONTRACT_REVIEW_TIER review of record (in-seat at tier or an at-tier subagent) gives a same-head PASS, and that PASS precedes the seat's hand-off.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 27383,
      "status": "done",
      "branch": "claude/project-thread-j3pqng",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27647",
      "session": "session_016WV4d1oYpq8eEjYF141fC3",
      "premise_still_valid": true,
      "summary": "Three deliverables on head 8bf59c16. scripts/qa/retest-owed.mjs is a read-only reader of QA-source fix cards against the newest qa-run record that judged each item, with --json, --as-of and an offline --self-test. checklist-select gains touched:SHA, which selects items whose source[] or automated.ref files changed in SHA..HEAD, on whole path segments, with the anchor cut. checklist-test SKILL.md gains §6 standing regression and retest trigger 4, and the ratchet ceiling moves 246 to 256 under ruling #27377 comment 6501246005 (+10 measured). RUNNER.md is unchanged. On the #25807 anchor, --as-of 2026-10-29T00:00Z accounts for all 22 named fix cards: 16 owed, 5 Not read (two-field observation lines), and #26707 absent (no QA-source line).",
      "tests": "checklist-select --self-test: 45 cases pass (floor 31 to 45; brace case ablated red before it was made load-bearing). retest-owed --self-test: 57 assertions in 9 batteries. Live run: 214 API reads, 0 writes, 160 records, 17,967 issues scanned, 32/32 shas resolved; as-of 20 owed rows, now 15.",
      "gates": "All exit 0, captured before any pipe: check-platform-checklist, check:platform-checklist, pm-skill-ratchet, pm-skill-id-lint, pm-dispatch-gates (fast tier 1937), entry-guard, parse-guard, agent-test-spelling, bash32-floor, ci-filter-parity, cli-command-ids, cross-package-test-inputs, doc-authoring, doc-formula-expressions (after turbo build of formula+lint), pm-governed-merges, pnpm-filter-targets, pnpm-flag-spellings, ratchet-remedy-authority, scripts-symbol-anchors (red on a header example anchor in the first commit, fixed in the second), skill-frame-sync, nul-bytes, declaration-mirrors, self-test-wired, self-test-workflow-commands, whole-set-label-write, plan-test-core-shards --self-test, check-harness-current --self-test, skills-token-ratchet, published-list-mirrors, commit-card-trailers, eslint. CI on #27647 is pending at report time.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "reads only (mcp__github__issue_read); the exact count was not kept across a context compaction; no write tool used",
      "api_writes": "2 — relay dispatches: pr_create (POST /repos/objectstack-ai/objectstack/pulls, POST /issues/27647/labels skip-changeset), comment (POST /issues/27383/comments, this report)",
      "open_questions": [],
      "out_of_scope_findings": [
        "qa-rollup follows the next link verbatim; its /repositories/ID form answers 403 from a cloud session on page 2 · carrier: Devx seat (taken as its own card) · noted, not filed",
        "retest-owed --self-test is not run by CI, same as qa-rollup --self-test; wiring it means adding it to the check:platform-checklist alias · carrier: Devx seat · noted, not filed"
      ]
    }

    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, iteratedomain:devxpriority:p1High: required for production / M2tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions