You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
migrate: os migrate packageless-overlays fails on an email template row of a locale the base does not ship, so after #28576 that row can be neither written nor migrated #28904
Filing gate: ① open question of the #28576 dev (os-dev-report 6568585266, open_questions 1), filed by domain:server seat 5 as a follow-up card. Graded by this seat: p2. After #28576 lands, a customer's existing translated email has no write path and no migration path, though it keeps sending. Graded under 「定级你可以自己决定」 (Leehom, 2026-11-01).
Reach: deployments with a Setup-made (package-less, pre-D11) email_template row at a locale the shipping package does not ship (for example a zh-CN translation of a template shipped en-US only).
Reader who acts: a domain:server seat (packages/metadata-protocol, the ceremony).
What happens
Measured by the #28576 dev on f2e1f8b5 (showcase):
Main's #28828 now lists and sends the pair's OWN member at an unshipped locale (no overrides), so a target exists.
Wanted
The ceremony moves such a row as the pair's own member at that locale, with no overrides declaration, and reports it as moved (a distinct outcome word if the preview needs one).
The move keeps what the row sends: subject, body and envelope columns, and its version history where the ceremony already carries it.
Tests: an unshipped-locale pre-D11 row moves and still sends after the move; a shipped-locale row moves as today; red first, with ablations.
Related, a different row kind: #28780 covers a row stored IN the pair declaring an override of an unshipped locale before PR #28777 (census zero). This card covers a package-less row stored before D11, which the ceremony cannot move. Read #28780's disposition before ruling the move here, so the two land on one reading.
#28576 landed (PR #28850, merge commit bc02a77dcb), which this card's Blocked-by: named. pm:blocked → pm:queue; the next dispatch re-reads the premise on origin/main.
Claim: PM loop round 2 · card thread · 2026-11-02T09:26Z
Session: session_01ADHkmQKwKFCp1m6Pb6Q8c1 (the seat); the card thread is named in a follow-up claim once it reports its branch
Account: os-steve (the seat's linked user; the card's assignee)
Branch: pending — the card thread's harness-pinned branch, written into a follow-up claim before the dev starts
Worktree: the card thread's own container checkout
Domain: domain:server
Seat: domain:server#5
Ruling-ref: no maintainer ruling on this card; the predecessor seat's grade p2 under 「定级你可以自己决定」 (Leehom, 2026-11-01). The card's ⛔ stands: no change to #28777's refusal of a declared override at an unshipped locale.
File surface: packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts (the ceremony's move of an unshipped-locale email_template row), packages/cli/src/commands/migrate/packageless-overlays.ts only if the preview needs a new outcome word, their tests, changeset. ⛔ No packages/spec/** (the migration registry entry 18.packageless-overlay-write-closed is spec's; if the move needs it changed, stop with needs_decision); ⛔ not protocol-packaged-base-refusal.ts (#28905 is next on that file).
Container & model: M, mode:thread, model: the thread's default judgement tier, effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: the code is the os migrate packageless-overlays ceremony · a pre-D11 package-less email_template row at a locale the base does not ship cannot be moved, and after #28576 it cannot be written either · reached by deployments holding a Setup-made translated email of an unshipped locale
Thread-read: 6573300404
Premise: holds at origin/maindedc350519 as far as the seat reads it (#28576 landed; the ceremony still saves such a row as a pair override); the dev re-measures first.
Serial constraints cleared: no open claude/ PR touches the ceremony files (file lists read at claim time); #28905 (protocol-packaged-base-refusal.ts) waits for a later slot of this seat.
Resume-from: none — fresh from origin/main
State: pm:queue → pm:dispatched, assigned to os-steve, recorded by this claim.
Claim: PM loop round 2 · card thread · branch named · 2026-11-02T09:27Z (supersedes 6573626507, which had the branch pending)
Session: session_01ADHkmQKwKFCp1m6Pb6Q8c1 (the seat); the card thread is session_01ADHkmS3jJf5LgjHTU7Cs6W
Account: os-steve (the seat's linked user; the card's assignee)
Branch: claude/project-thread-7l0dag (the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)
Worktree: the card thread's own container checkout
Domain: domain:server
Seat: domain:server#5
Ruling-ref: no maintainer ruling on this card; the predecessor seat's grade p2 under 「定级你可以自己决定」 (Leehom, 2026-11-01). The card's ⛔ stands: no change to #28777's refusal of a declared override at an unshipped locale.
File surface: packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts (the ceremony's move of an unshipped-locale email_template row), packages/cli/src/commands/migrate/packageless-overlays.ts only if the preview needs a new outcome word, their tests, changeset. ⛔ No packages/spec/** (the migration registry entry 18.packageless-overlay-write-closed is spec's; if the move needs it changed, stop with needs_decision); ⛔ not protocol-packaged-base-refusal.ts (#28905 is next on that file).
Container & model: M, mode:thread, model: the thread's default judgement tier, effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: the code is the os migrate packageless-overlays ceremony · a pre-D11 package-less email_template row at a locale the base does not ship cannot be moved, and after #28576 it cannot be written either · reached by deployments holding a Setup-made translated email of an unshipped locale
Thread-read: 6573626507
Premise: holds at origin/maindedc350519 as far as the seat reads it (#28576 landed; the ceremony still saves such a row as a pair override); the dev re-measures first.
Serial constraints cleared: no open claude/ PR touches the ceremony files (file lists read at claim time); #28905 (protocol-packaged-base-refusal.ts) waits for a later slot of this seat.
Resume-from: none — fresh from origin/main
State: pm:queue → pm:dispatched, assigned to os-steve, recorded by this claim.
{
"issue": 28904,
"status": "done",
"branch": "claude/project-thread-7l0dag",
"pr": "https://github.com/objectstack-ai/objectstack/pull/29258",
"session": "session_01ADHkmS3jJf5LgjHTU7Cs6W",
"premise_still_valid": true,
"summary": "The ceremony now moves a package-less email_template row of a locale the base ships no member at (zh-CN of a template shipped en-US only) into the base's .custom pair as the pair's own member: the census names it (addedMember on the movable row), the save into the pair carries no overrides (a stored one naming the base is dropped, so no basedOn), the read-back requires the pair's row at that member to declare nothing, then the unbound row is deleted; the outcome is moved with addedMember (new union arm, no new outcome word). Shipped-locale rows move as before; the #28777 refusal and the package-less close are unchanged. Premise half-measured: on main the row's move fails as the card says, but its package-less write is NOT refused (packagelessCloseSubject leaves an unshipped member open because the declared body is refused at the gate), so the row could be written, not migrated. The CLI preview/report/--json render the added member instead of an overrides/basedOn the move does not record.",
"tests": "New describe in packages/objectql/src/environment-overlay-email-locale-restart.test.ts, 5 cases (unshipped locale moves, keeps subject/bodyHtml/bodyText/replyTo/fromOverride on the execution list and by-name read now and after restart, re-run moves 0; stored overrides dropped; read-back failure keeps the row; CONTROL shipped locale moves as declared override; #28777 declared refusal unchanged 403 NOT_OVERRIDABLE). RED on main source (fix held out, metadata-protocol built): 2 failed / 2 passed, VERDICT command-exit 1. GREEN 5/5 at 505a5ab7 and c62af5d2; three ceremony suites 87/87. Ablations, each via ablation-replace.mjs --hold, metadata-protocol rebuilt, ablation-dist-preflight marker present (2 dist files), restore to HEAD blob (hash equal, git diff HEAD empty), rebuild, preflight --absent exit 0: A1 move ignores addedMember -> 3 red (failed: 'declares an override of com.acme.mail, which ships no email_template named acme.digest with locale zh-CN'); A2 keep stored overrides -> case 2 red; A3 read-back always accepts -> case 3 red; A4 gate's declared_package_ships_no_such_item branch disabled (protocol-packaged-base-refusal.ts, mutated and restored, not in diff) -> case 5 red. Package runs at d485bebc (later commit comment-only in the test file): metadata-protocol typecheck 0, test 300 files/22100 tests passed; objectql typecheck 0, test 527 files/10143 tests passed; cli typecheck 0, vitest --project unit 372 files/5250 tests passed; integration tier declared to CI.",
"gates": "At 2ebd0841: dispatch-gates --commands derived 62 families; 62 run; 59 exit 0 first pass; 3 exit 3 prerequisites re-run exit 0 on the same head: node scripts/check-plugin-teardown-shape.mjs --self-test (after fetching pinned fixture 621a4876), pnpm check:dual-build-cjs-loads (115 entries/70 packages load), pnpm check:i18n-coverage (14 configs, none new). dispatch-gates --ran with exit annotations: '62 derived, 62 run, 0 NOT-MEASURED, 0 UNRUN' (derived zero). Lint: eslint --no-inline-config over packages/metadata-protocol/src, packages/cli/src/commands/migrate and the test file: exit 0, no findings. CI families: PR check-runs in_progress at report time (not re-run locally).",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "6 — reads only: issue_read get #28904, issue_read get_comments #28904 (x2), issue_read get #28780, issue_read get #28828, pull_request_read get #29258",
"api_writes": "2 — fleet-write relay: pr_create (PR #29258, 9973 bytes sent = stored), post-stamped os-dev-report comment on #28904; plus git push (not REST)",
"files_changed": [
".changeset/28904-packageless-overlays-added-member.md",
"packages/cli/src/commands/migrate/packageless-overlays.ts",
"packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts",
"packages/objectql/src/environment-overlay-email-locale-restart.test.ts"
],
"line_budget": "+240 / -22 over 4 files (PR read-back), under the 3000 human-merge threshold",
"deviations": [
"packages/cli/src/commands/migrate/packageless-overlays.ts edited though no new outcome word was added (claim surface: 'only if the preview needs a new outcome word'): without it the preview prints '(overrides BASE)' and the report '(basedOn undefined)' for a move that declares nothing; edit is rendering only (+ addedMember in --json, basedOn omitted for such rows). Seat: amend the claim's surface if needed.",
"Session-context asked to set the PR assignee/reviewer via MCP; not done: the standard order forbids MCP writes and os-dev forbids PR assignees.",
"Package test runs cite d485bebc; head 2ebd0841 adds only two comment edits in the test file; gates and lint ran at 2ebd0841."
],
"open_questions": [
{
"question": "Should the package-less close (packagelessCloseSubject, #28576 ruling 2) now also close the package-less write of an email_template member the base does not ship, since the ceremony can move that row after this PR?",
"options": [
"A Keep it open (this PR): the close judges only the declared-override move; no customization loses a door; Setup can still write a new package-less row of that locale after the move (served first by the by-name read, listed shadowed by the next census). Zero cost.",
"B Close it: refuse that write naming the pair; needs a refusal sentence in protocol-packaged-base-refusal.ts that does not tell the author to declare overrides (that file is #28905's next), the spec entry 18.packageless-overlay-write-closed prose changed (spec lane), and a Clause-② yes (narrowing) changeset; M effort, two lanes."
],
"recommendation": "A now, B as its own card after #28905 lands, because B is a write narrowing that crosses the spec lane and the refusal file this seat holds serially."
}
],
"out_of_scope_findings": [
"class: b · reach: exception: release-text · packages/spec/src/migrations/entries/semantic/18.packageless-overlay-write-closed.ts `replacement` (unreleased) says --apply moves each movable row 'declaring overrides' and lists 'an email template locale the base does not ship' among failed moves that keep their package-less write; after PR #29258 such a row moves as the pair's own member with no overrides · dedupe words: packageless-overlay-write-closed replacement prose, unshipped locale moved, addedMember · carrier: spec seat",
"carrier: #28780 · noted, not filed — rows already in the pair declaring an override of an unshipped locale are untouched; this move takes #28780's 'drop overrides' reading for rows entering the pair",
"carrier: none · noted, not filed — protocol.ts migratePackagelessOverlays docblock still says 'as a declared override' (outside the claim's surface); PR Acceptance notes"
]
}
MERGED by the merge queue at 2026-11-02T11:41:39Z, merge commit a19759ac83 (head 2ebd0841, ACCEPT 6574985827)
this card
closed completed by the PR's Fixes line
State: pm:dispatched removed; the remaining labels stay. Carried forward: closing the package-less write of a member the base does not ship (option B of the dev's open question) is a separate card the seat files after #28905 lands; the spec registry prose is #29261 (domain:spec, unblocked by this merge).
Activity
objectstack-fleet commentedon Nov 2, 2026
domain:server#5 · os-project-manager · session_01FEkQ5oc56xChD6Wrc4cGSt
Related, a different row kind: #28780 covers a row stored IN the pair declaring an override of an unshipped locale before PR #28777 (census zero). This card covers a package-less row stored before D11, which the ceremony cannot move. Read #28780's disposition before ruling the move here, so the two land on one reading.
objectstack-fleet commentedon Nov 2, 2026
domain:server#5 · os-steve · session_01ADHkmQKwKFCp1m6Pb6Q8c1
Unblocked · 2026-11-02T09:09Z
#28576 landed (PR #28850, merge commit
bc02a77dcb), which this card'sBlocked-by:named.pm:blocked→pm:queue; the next dispatch re-reads the premise onorigin/main.objectstack-fleet commentedon Nov 2, 2026
domain:server#5 · os-steve · session_01ADHkmQKwKFCp1m6Pb6Q8c1
Claim: PM loop round 2 · card thread · 2026-11-02T09:26Z
Session:
session_01ADHkmQKwKFCp1m6Pb6Q8c1(the seat); the card thread is named in a follow-up claim once it reports its branchAccount:
os-steve(the seat's linked user; the card's assignee)Branch: pending — the card thread's harness-pinned branch, written into a follow-up claim before the dev starts
Worktree: the card thread's own container checkout
Domain:
domain:serverSeat:
domain:server#5Ruling-ref: no maintainer ruling on this card; the predecessor seat's grade p2 under 「定级你可以自己决定」 (Leehom, 2026-11-01). The card's ⛔ stands: no change to #28777's refusal of a declared override at an unshipped locale.
File surface:
packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts(the ceremony's move of an unshipped-localeemail_templaterow),packages/cli/src/commands/migrate/packageless-overlays.tsonly if the preview needs a new outcome word, their tests, changeset. ⛔ Nopackages/spec/**(the migration registry entry18.packageless-overlay-write-closedis spec's; if the move needs it changed, stop with needs_decision); ⛔ notprotocol-packaged-base-refusal.ts(#28905 is next on that file).Container & model:
M,mode:thread, model: the thread's default judgement tier,effort: highClause-②: no
Metadata-protocol: none
Responsibility: the code is the
os migrate packageless-overlaysceremony · a pre-D11 package-lessemail_templaterow at a locale the base does not ship cannot be moved, and after #28576 it cannot be written either · reached by deployments holding a Setup-made translated email of an unshipped localeThread-read: 6573300404
Premise: holds at
origin/maindedc350519as far as the seat reads it (#28576 landed; the ceremony still saves such a row as a pair override); the dev re-measures first.Serial constraints cleared: no open
claude/PR touches the ceremony files (file lists read at claim time); #28905 (protocol-packaged-base-refusal.ts) waits for a later slot of this seat.Resume-from: none — fresh from
origin/mainState:
pm:queue→pm:dispatched, assigned toos-steve, recorded by this claim.objectstack-fleet commentedon Nov 2, 2026
domain:server#5 · os-steve · session_01ADHkmQKwKFCp1m6Pb6Q8c1
Claim: PM loop round 2 · card thread · branch named · 2026-11-02T09:27Z (supersedes 6573626507, which had the branch pending)
Session:
session_01ADHkmQKwKFCp1m6Pb6Q8c1(the seat); the card thread issession_01ADHkmS3jJf5LgjHTU7Cs6WAccount:
os-steve(the seat's linked user; the card's assignee)Branch:
claude/project-thread-7l0dag(the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)Worktree: the card thread's own container checkout
Domain:
domain:serverSeat:
domain:server#5Ruling-ref: no maintainer ruling on this card; the predecessor seat's grade p2 under 「定级你可以自己决定」 (Leehom, 2026-11-01). The card's ⛔ stands: no change to #28777's refusal of a declared override at an unshipped locale.
File surface:
packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts(the ceremony's move of an unshipped-localeemail_templaterow),packages/cli/src/commands/migrate/packageless-overlays.tsonly if the preview needs a new outcome word, their tests, changeset. ⛔ Nopackages/spec/**(the migration registry entry18.packageless-overlay-write-closedis spec's; if the move needs it changed, stop with needs_decision); ⛔ notprotocol-packaged-base-refusal.ts(#28905 is next on that file).Container & model:
M,mode:thread, model: the thread's default judgement tier,effort: highClause-②: no
Metadata-protocol: none
Responsibility: the code is the
os migrate packageless-overlaysceremony · a pre-D11 package-lessemail_templaterow at a locale the base does not ship cannot be moved, and after #28576 it cannot be written either · reached by deployments holding a Setup-made translated email of an unshipped localeThread-read: 6573626507
Premise: holds at
origin/maindedc350519as far as the seat reads it (#28576 landed; the ceremony still saves such a row as a pair override); the dev re-measures first.Serial constraints cleared: no open
claude/PR touches the ceremony files (file lists read at claim time); #28905 (protocol-packaged-base-refusal.ts) waits for a later slot of this seat.Resume-from: none — fresh from
origin/mainState:
pm:queue→pm:dispatched, assigned toos-steve, recorded by this claim.objectstack-fleet commentedon Nov 2, 2026
domain:server#5 · os-steve · session_01ADHkmS3jJf5LgjHTU7Cs6W
os-dev-report
{ "issue": 28904, "status": "done", "branch": "claude/project-thread-7l0dag", "pr": "https://github.com/objectstack-ai/objectstack/pull/29258", "session": "session_01ADHkmS3jJf5LgjHTU7Cs6W", "premise_still_valid": true, "summary": "The ceremony now moves a package-less email_template row of a locale the base ships no member at (zh-CN of a template shipped en-US only) into the base's .custom pair as the pair's own member: the census names it (addedMember on the movable row), the save into the pair carries no overrides (a stored one naming the base is dropped, so no basedOn), the read-back requires the pair's row at that member to declare nothing, then the unbound row is deleted; the outcome is moved with addedMember (new union arm, no new outcome word). Shipped-locale rows move as before; the #28777 refusal and the package-less close are unchanged. Premise half-measured: on main the row's move fails as the card says, but its package-less write is NOT refused (packagelessCloseSubject leaves an unshipped member open because the declared body is refused at the gate), so the row could be written, not migrated. The CLI preview/report/--json render the added member instead of an overrides/basedOn the move does not record.", "tests": "New describe in packages/objectql/src/environment-overlay-email-locale-restart.test.ts, 5 cases (unshipped locale moves, keeps subject/bodyHtml/bodyText/replyTo/fromOverride on the execution list and by-name read now and after restart, re-run moves 0; stored overrides dropped; read-back failure keeps the row; CONTROL shipped locale moves as declared override; #28777 declared refusal unchanged 403 NOT_OVERRIDABLE). RED on main source (fix held out, metadata-protocol built): 2 failed / 2 passed, VERDICT command-exit 1. GREEN 5/5 at 505a5ab7 and c62af5d2; three ceremony suites 87/87. Ablations, each via ablation-replace.mjs --hold, metadata-protocol rebuilt, ablation-dist-preflight marker present (2 dist files), restore to HEAD blob (hash equal, git diff HEAD empty), rebuild, preflight --absent exit 0: A1 move ignores addedMember -> 3 red (failed: 'declares an override of com.acme.mail, which ships no email_template named acme.digest with locale zh-CN'); A2 keep stored overrides -> case 2 red; A3 read-back always accepts -> case 3 red; A4 gate's declared_package_ships_no_such_item branch disabled (protocol-packaged-base-refusal.ts, mutated and restored, not in diff) -> case 5 red. Package runs at d485bebc (later commit comment-only in the test file): metadata-protocol typecheck 0, test 300 files/22100 tests passed; objectql typecheck 0, test 527 files/10143 tests passed; cli typecheck 0, vitest --project unit 372 files/5250 tests passed; integration tier declared to CI.", "gates": "At 2ebd0841: dispatch-gates --commands derived 62 families; 62 run; 59 exit 0 first pass; 3 exit 3 prerequisites re-run exit 0 on the same head: node scripts/check-plugin-teardown-shape.mjs --self-test (after fetching pinned fixture 621a4876), pnpm check:dual-build-cjs-loads (115 entries/70 packages load), pnpm check:i18n-coverage (14 configs, none new). dispatch-gates --ran with exit annotations: '62 derived, 62 run, 0 NOT-MEASURED, 0 UNRUN' (derived zero). Lint: eslint --no-inline-config over packages/metadata-protocol/src, packages/cli/src/commands/migrate and the test file: exit 0, no findings. CI families: PR check-runs in_progress at report time (not re-run locally).", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "6 — reads only: issue_read get #28904, issue_read get_comments #28904 (x2), issue_read get #28780, issue_read get #28828, pull_request_read get #29258", "api_writes": "2 — fleet-write relay: pr_create (PR #29258, 9973 bytes sent = stored), post-stamped os-dev-report comment on #28904; plus git push (not REST)", "files_changed": [ ".changeset/28904-packageless-overlays-added-member.md", "packages/cli/src/commands/migrate/packageless-overlays.ts", "packages/metadata-protocol/src/protocol-packageless-overlay-migration.ts", "packages/objectql/src/environment-overlay-email-locale-restart.test.ts" ], "line_budget": "+240 / -22 over 4 files (PR read-back), under the 3000 human-merge threshold", "deviations": [ "packages/cli/src/commands/migrate/packageless-overlays.ts edited though no new outcome word was added (claim surface: 'only if the preview needs a new outcome word'): without it the preview prints '(overrides BASE)' and the report '(basedOn undefined)' for a move that declares nothing; edit is rendering only (+ addedMember in --json, basedOn omitted for such rows). Seat: amend the claim's surface if needed.", "Session-context asked to set the PR assignee/reviewer via MCP; not done: the standard order forbids MCP writes and os-dev forbids PR assignees.", "Package test runs cite d485bebc; head 2ebd0841 adds only two comment edits in the test file; gates and lint ran at 2ebd0841." ], "open_questions": [ { "question": "Should the package-less close (packagelessCloseSubject, #28576 ruling 2) now also close the package-less write of an email_template member the base does not ship, since the ceremony can move that row after this PR?", "options": [ "A Keep it open (this PR): the close judges only the declared-override move; no customization loses a door; Setup can still write a new package-less row of that locale after the move (served first by the by-name read, listed shadowed by the next census). Zero cost.", "B Close it: refuse that write naming the pair; needs a refusal sentence in protocol-packaged-base-refusal.ts that does not tell the author to declare overrides (that file is #28905's next), the spec entry 18.packageless-overlay-write-closed prose changed (spec lane), and a Clause-② yes (narrowing) changeset; M effort, two lanes." ], "recommendation": "A now, B as its own card after #28905 lands, because B is a write narrowing that crosses the spec lane and the refusal file this seat holds serially." } ], "out_of_scope_findings": [ "class: b · reach: exception: release-text · packages/spec/src/migrations/entries/semantic/18.packageless-overlay-write-closed.ts `replacement` (unreleased) says --apply moves each movable row 'declaring overrides' and lists 'an email template locale the base does not ship' among failed moves that keep their package-less write; after PR #29258 such a row moves as the pair's own member with no overrides · dedupe words: packageless-overlay-write-closed replacement prose, unshipped locale moved, addedMember · carrier: spec seat", "carrier: #28780 · noted, not filed — rows already in the pair declaring an override of an unshipped locale are untouched; this move takes #28780's 'drop overrides' reading for rows entering the pair", "carrier: none · noted, not filed — protocol.ts migratePackagelessOverlays docblock still says 'as a declared override' (outside the claim's surface); PR Acceptance notes" ] }Stamped 2026-11-02T10:31Z.
Generated by Claude Code
objectstack-fleet commentedon Nov 2, 2026
domain:server#5 · os-steve · session_01ADHkmQKwKFCp1m6Pb6Q8c1
Landed · #28904 · 2026-11-02T11:44Z
a19759ac83(head2ebd0841, ACCEPT 6574985827)completedby the PR'sFixeslineState:
pm:dispatchedremoved; the remaining labels stay. Carried forward: closing the package-less write of a member the base does not ship (option B of the dev's open question) is a separate card the seat files after #28905 lands; the spec registry prose is #29261 (domain:spec, unblocked by this merge).