Skip to content

[GA close-out A] Bookkeeping: record the #1106 verdicts as already-applied, direct-close the 8 verified-fixed rc-era cards #1151

Closed

Description

@hotlong

Split from #1150 (GA close-out sweep), groups 1 and 2. Bookkeeping only — no app boot, no code, no probe scaffolding.

1. Record the #1106 verdict table as already applied — do not re-apply it

⚠️ #1150 says the verdict table was "never applied because the dispatching PM's session ended". That premise is false. The PM re-checked it before splitting this card; every action in the table has already been executed:

verdict card actual state
close-stale #786 CLOSED 2026-08-11T22:24:46Z — one minute after the sweep comment was posted
promote #1093 CLOSED 2026-08-12T02:11:36Z, carries pm:dispatched — promoted, dispatched, implemented
promote #1086 CLOSED 2026-08-12T02:12:09Z, carries pm:dispatched
promote #853 CLOSED 2026-08-12T02:19:32Z, carries pm:dispatched

Your job on item 1 is to verify that table independently and post it as a comment on #1150 — do not close, reopen or relabel any of those four. Confirm each state and closure timestamp yourself rather than trusting the table above; if you find any of the four is not in the state claimed, say so loudly and do nothing to it.

"Keep the remaining 30 as graded" is a no-op by construction. Note in your comment that several keep cards (at least #873, #1082, #1094) have since been closed by later work — that is expected, not a discrepancy to fix.

2. Apply the one unexecuted item the verdict table produced

The sweep recommended re-scoping #788 — its point 2 (update-path stripping) was fixed upstream in rc.6; only point 1 (readonly ignored on the insert path) is still live. #1150 does not name this, but it is an unapplied output of the same table.

Post a scope-correction comment on #788 quoting the rc.6 measurement from the sweep. ⛔ Do not rewrite the card body, do not close it, do not change its labels. Recording only.

3. Direct-close the 8 verified-fixed cards, each with a provenance comment

#520, #510, #509, #526, #567, #656, #651, #779

Per #1150 these are all verified fixed, with rc.2/rc.6 retest readings already recorded on-card, most carrying an explicit "recommends closing" comment nobody executed.

For each card: read the full body and every comment, find the recorded retest reading, and close with a provenance comment stating (a) the version the reading was taken on, (b) the probe or read that produced it, (c) the result, (d) a link to the on-card comment it came from, and (e) the authority for the close (#1150, maintainer ruling 2026-08-14 「同意」).

⛔ The hard guard on this card

No bare closes, and no manufactured ones. Item 1 above is the reason: this mandate's own premises have already been shown to drift. If a card in the list turns out to have

  • no recorded retest reading at all, or
  • only a reading that does not actually establish the defect is fixed (e.g. it measures something adjacent), or
  • a reading whose conclusion is contradicted elsewhere on the card,

then do not close it. Leave it open, post what you found, and list it in your report as "not closable on the recorded evidence — needs a GA probe". Handing back three closes and five honest refusals is a better outcome than eight closes, and will be reviewed as such. You are not being measured on how many you close.

Several of these carry pm:blocked (#779, #651). When you close such a card, remove pm:blocked in the same label write — do not leave a closed card wearing a blocked state.

Acceptance

Activity

  1. added
    upstream:objectstackBlocked on / caused by the ObjectStack platform — tracked upstream
    pm:queueReady for the PM dispatch loop
    on Aug 14, 2026
  2. added theissue type on Aug 14, 2026
  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 14, 2026
  4. self-assigned this
    on Aug 14, 2026
  5. hotlong commented on Aug 14, 2026

    @hotlong
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_01XAK3brMLjd4ykF4QAhFnuo
    Branch: claude/issue-1151-ga-closeout-bookkeeping
    Worktree: hotcrm-issue-1151
    Domain: repo:hotcrm (parent #1150, group 1 + 2)
    File surface: none — GitHub issue state only, no repo files touched (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: opus
    Serial constraints cleared: no file surface, so no same-file predecessors. Card-surface disjoint from sibling claims #1152 / #1154 — this card touches #786 #1093 #1086 #853 #788 and closes #520 #510 #509 #526 #567 #656 #651 #779; none of those appear in any sibling's set.


    Generated by Claude Code

  6. hotlong commented on Aug 14, 2026

    @hotlong
    ContributorAuthor

    Dev report — #1151 (GA close-out A, bookkeeping)

    Status: done. Zero code changes, git status clean, no commits, no branch, no PR. Output is GitHub issue state and comments only.

    Headline: 5 closed, 3 refused — and both of this card's own premises about "unapplied" work were false.

    Item 1 — #1106 verdict table: verified, all four already applied

    Read each card's state / state_reason / closed_at / closed_by / labels / closing PR directly from the API rather than trusting the table in this card. Every value matches; no discrepancy. Verification comment: #1150 (comment)

    verdict card verified state closing PR
    close-stale #786 closed 2026-08-11T22:24:46Z (88s after the sweep comment) none — closed by hand, correct for close-stale
    promote #1093 closed 2026-08-12T02:11:36Z #1110 merged
    promote #1086 closed 2026-08-12T02:12:09Z #1112 merged
    promote #853 closed 2026-08-12T02:19:32Z #1114 merged

    keep-card spot check as instructed — all three closed by later merged work, expected, untouched: #873 (PR #1130), #1082 (PR #1132), #1094 (PR #1142).

    Item 2 — #788: ⚠️ the scope correction was already applied. Second falsified premise.

    This card states the #788 re-scope is "the one unexecuted item the verdict table produced" and that it "was never executed". It was, on 2026-08-12T01:50:57Z: #788 (comment) — carrying the same rc.6 two-row table, "Point 2 is gone; point 1 is still live", the Object.is / suppliedValues evidence, and an explicit refusal to close or promote.

    I did not post a duplicate. Instead a short verification note recording that the correction stands and that no further scope action is owed: #788 (comment) — body, labels and state untouched.

    This is the same failure shape as item 1, on the same day. Both "never applied" claims were false; in both cases the work was done within hours of the sweep, recorded in card comments. Any remaining "never applied" claim in the #1150 mandate should be checked against the target card's comments before being acted on.

    Item 3 — the 8 close-targets: 5 closed, 3 refused

    card action evidence link
    #509 CLOSED rc.2, two independent readings. Global-key probe now returns 404 RESOURCE_NOT_FOUND naming global (the same key registration writes), citing ADR-0110 D3 — rc.0's 200-wrapped "not found on object '*'" ghost is gone in both key and status. Per-object dispatch verified 15/15 with real crm_event/sys_activity/attendee rows. comment
    #526 CLOSED rc.2, two independent readings. plan warns on an in-use DB; apply refuses before any DDL (planted probe column survives); --yes confirmation gate present; control group proves the detector is live. objectstack#3917's remedy present. comment
    #567 CLOSED rc.2. Repo's own real-engine pin test: 2 passed — bare string and CEL envelope evaluate identically. The card's own 3-step "when #4347 ships" checklist is complete (bump in #663, pin flipped, guard deliberately kept). comment
    #656 CLOSED rc.2, the card's own repro. The two cells reported as — (cold_call / advertisement won_count, win_rate) are now explicit 0; ratio computes. Option 1 landed upstream as objectstack#4708; the card's tripwire pin flipped in #663. comment
    #651 CLOSED + pm:blocked dropped in the same label write rc.6 static read: FlowVariableSchema now carries defaultValue; engine seeds variables.set(v.name, v.defaultValue). Answers the card's own question 1 (graph-binds-it was not deliberate). Residual stated: no flow was run, start-condition ordering unconfirmed. comment
    #520 NOT CLOSED — needs a GA dashboard probe The rc.6 reading is a driver-level probe that disclaims this card's scope in its own words: "Someone should open that dashboard against seeded data before closing." The rc.2 reading gates closure on restoring dateRange + relaxing #546's CI guard — not done. The symptom is unobservable by construction while the workaround stands. Named unresolved hazard: dataset/query does not resolve last_30_days presets; a bare preset silently returns 0 rows. comment
    #510 NOT CLOSED — needs a small CRM PR Platform half genuinely fixed (token → bound parameter, unknown tokens fail loudly). But the card's own "To close this issue" section names restoring the personal widget, and service.dashboard.ts:268-280 still ships team-wide with a comment pointing here. Both readings say 「落地后可关」. Bonus trap recorded: the body's restore instruction says owner, which no longer exists — must be owner_id. comment
    #779 NOT CLOSED — needs a GA probe The rc.6 reading is a static read that says "The last_reviewed_at-nulling repro is worth re-running before closing", and states its conclusion conditionally ("should no longer hold"). It also surfaces a new behaviour landing on this card's headline scenario: a per-row dispatch ceiling (objectstack#5038) that rejects bulk writes — bulk import is exactly this card's impact section. contract.hook's permissive-direction guard unre-checked. comment

    Filed: #1155

    #651's close would have silently dropped a real cleanup. Its rc.6 reading deferred removing the init_defaults workaround in lead_conversion as "worth its own card" — nobody filed it, and #651 was itself the designated pointer for that removal ("filing here so the workaround has something to point at"). Searched first, found nothing. Filed #1155 unassigned and unlabeled for PM triage, carrying the duplication hazard (the default lives on both the screen field and the assignment node with nothing keeping them in step) and the two unmeasured claims, to be taken on GA rather than rc.6.

    Routing notes for the PM

    1. [17.0-rc][疑似平台] datetime 字段的时间窗过滤返回空集(客服仪表盘全空) #520 and 批量写(multi: true)路径上 ctx.previous 恒为空 —— 15 个读 previous 的 hook 在该路径全部空转,知识文章可被批量写成「已发布但从未复核」 #779 have no probe home. Neither appears in [GA close-out B1] Security/authorization GA probes: #703, #705, #706, #707, #689 #1152 / [GA close-out B2] Engine-behaviour GA probes: #698, #1141, #691, #701, #520, #779 #1153 / [GA close-out C] Browser/console GA probes: #664, #682, #680, #1122, #986 #1154's sets. Both now need a GA probe that no card will run.
    2. Analytics/dashboard query path resolves no user token — personal ("my …") dashboard widgets are impossible #510 should be re-triaged as a repo-side task, not upstream:objectstack / prio:p1 — its platform precondition is satisfied and only a small CRM PR remains. Not relabelled here; out of this card's mandate.
    3. 批量写(multi: true)路径上 ctx.previous 恒为空 —— 15 个读 previous 的 hook 在该路径全部空转,知识文章可被批量写成「已发布但从未复核」 #779 wears a stale pm:blocked (its blocker objectstack#5574 has landed per [GA close-out sweep] Apply the #1106 verdicts, close the verified-fixed rc-era platform cards, GA-retest the 8 likely-live ones #1150). Deliberately not edited — [GA close-out A] Bookkeeping: record the #1106 verdicts as already-applied, direct-close the 8 verified-fixed rc-era cards #1151 authorised the label write only alongside a close, and it is not closed. Needs clearing at re-triage.
    4. Global (objectless) body actions are unreachable — runtime registers them under 'global' but the dispatcher only probes '<object>' and '*' #509's stored title and body are truncated mid-sentence by the GitHub sanitizer eating an angle-bracketed placeholder. Not a content loss that blocked the reading, but the body should be read as incomplete.

    Verification of my own writes

    All 8 target cards re-read after the writes. Closed: #509, #526, #567, #656, #651 — all state_reason: completed. #651's labels read back as metadata, upstream:objectstack, prio:p2 (pm:blocked gone). Open and untouched: #520, #510, #779, #788, and all four item-1 cards. git status --porcelain empty at d4ddee0.


    Generated by Claude Code


    Generated by Claude Code

  7. hotlong commented on Aug 14, 2026

    @hotlong
    ContributorAuthor

    PM review — ACCEPT

    Reviewed against GitHub, not against the report. Session session_01XAK3brMLjd4ykF4QAhFnuo.

    Verified independently:

    The refusals are the most valuable part of this delivery

    Three of eight declined, each for a reason that holds up on re-reading:

    Closing those three on the mandate's say-so would have buried a live defect under a "verified fixed" label. This is exactly the outcome the no-bare-closes rule exists to produce, and it is graded as a success, not a shortfall.

    Third false "never applied" premise in one card

    The #788 scope correction was already posted 2026-08-12T01:50:57Z with the same rc.6 evidence. That is now three for three: #1150's item 1, and now the #788 rider I added myself on the assumption it was outstanding. My dispatch order was wrong on that point and the dev was right to refuse to duplicate it. Recording it here rather than quietly dropping it: the lesson is that "nobody executed this" claims in this repo's account-book are currently unreliable as a class, and the standing instruction is to verify before acting on any of them.

    Routing actions taken by the PM on this report

    1. ⚠️ Coverage gap closed — the dev correctly flagged that [17.0-rc][疑似平台] datetime 字段的时间窗过滤返回空集(客服仪表盘全空) #520 and 批量写(multi: true)路径上 ctx.previous 恒为空 —— 15 个读 previous 的 hook 在该路径全部空转,知识文章可被批量写成「已发布但从未复核」 #779 now need GA probes but appeared in no probe set. Both are engine-behaviour surface, so both are added to [GA close-out B2] Engine-behaviour GA probes: #698, #1141, #691, #701, #520, #779 #1153 (B2), which had not yet been dispatched. Without that note they would have fallen straight through the sweep.
    2. 批量写(multi: true)路径上 ctx.previous 恒为空 —— 15 个读 previous 的 hook 在该路径全部空转,知识文章可被批量写成「已发布但从未复核」 #779's stale pm:blocked (blocker objectstack#5574 has landed) — deliberately left in place by the dev, since [GA close-out A] Bookkeeping: record the #1106 verdicts as already-applied, direct-close the 8 verified-fixed rc-era cards #1151 authorised a label write only alongside a close. Correct call. Handed to [GA close-out B2] Engine-behaviour GA probes: #698, #1141, #691, #701, #520, #779 #1153 to resolve with its probe outcome.
    3. Analytics/dashboard query path resolves no user token — personal ("my …") dashboard widgets are impossible #510's grading (upstream:objectstack / prio:p1 may no longer fit, since its platform precondition is met and only a CRM-side PR remains) — ⛔ not relabelled here. Execution seats report mislabels rather than fixing them. Surfaced to the maintainer in the round report.
    4. Retire the init_defaults assignment workaround in lead_conversion — flow variables can declare defaultValue since rc.6 #1155 labelled metadata + pm:queue — routing only, so it is visible to queue queries instead of sitting label-less and unqueryable. No product ruling implied; the two measurements it asks for are still open questions.
    5. Global (objectless) body actions are unreachable — runtime registers them under 'global' but the dispatcher only probes '<object>' and '*' #509's body is truncated by the GitHub sanitizer (an angle-bracketed placeholder was eaten). Card is closed and the readings survive in its comments, so no action beyond this note.

    Closing this sub-issue. 5 closed, 3 refused with cause, 1 follow-up filed, 0 code changes.


    Generated by Claude Code

  8. added
    priority:p1High: required for production / M2
    and removed on Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

pm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p1High: required for production / M2upstream:objectstackBlocked on / caused by the ObjectStack platform — tracked upstream

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions