Repository navigation
docs(changelog): stored sys_comment.reactions survive the v18 upgrade; amend the retirement entries in place - #23981
Conversation
…; amend the retirement entries in place The published 18.0.0-next.0 entries said the emoji reactions stored in sys_comment.reactions are not converted into records and are gone after the upgrade. The shipped CLI does the opposite: `os migrate comment-reactions` converts them into sys_comment_reaction records, and `os migrate apply --allow-destructive` refuses to drop the column until that conversion is recorded verified. Amended in place, in @objectstack/plugin-audit's and @objectstack/spec's CHANGELOG.md and in the two consumed .changeset/pre notes the GA version re-renders from (the column retirement and the sys_comment_reaction introduction). Headings, commit hashes and every other fact are unchanged. Claude-Session: https://claude.ai/code/session_018VqJPGA1NDNSCZsnecsChP Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018VqJPGA1NDNSCZsnecsChP Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 144 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
席位核对 · ACCEPT · DELIBERATE CORRECTION confirmed ·
|
Fixes #23938
Clause-②: no — release text moves no export, type or accept set.
What this does
The published
18.0.0-next.0entries of@objectstack/plugin-auditand@objectstack/specsay the emoji reactions stored insys_comment.reactionsare not converted and are gone after the upgrade. The shipped CLI does the opposite. This PR amends those entries in place, as AGENTS.md's Documentation Guardrails row forpackages/*/CHANGELOG.mdprescribes ("amend that entry in a dedicated docs-only PR, never an erratum in a later entry"). It amends them in both CHANGELOGs and in the consumed.changeset/pre/notes they were rendered from, because@changesets/read1.0.1 reads.changeset/pre/*.mdback in at the GA version (readChangesets,fs.readdir(path.join(changesetBase, "pre"))), so the GA entry carries the corrected text.Release text only: no code, no test, no new changeset, no other entry. Commit hashes (
29a163f,9963322) and the rest of each entry are unchanged. The 23281 entry's supersession sentence stays as history, as the claim says.DELIBERATE CORRECTION: please confirm in writing
This PR changes two changesets it did not add:
.changeset/pre/22573-sys-comment-reactions-retired.md: the column-retirement note. What changed under it:os migrate comment-reactions(the 23281 changeset, shipped in@objectstack/cli18.0.0-next.1,packages/cli/CHANGELOG.md:695) now converts the stored reactions, andos migrate apply --allow-destructiverefuses the drop until that conversion is verified..changeset/pre/22566-comment-reaction-record.md: the note introducingsys_comment_reaction. Its last bullet carries the same "not converted" sentence (rendered atplugin-audit/CHANGELOG.md:197andspec/CHANGELOG.md:3290). The same change falsified it.Check Changesetstays red by design on this PR.node scripts/check-empty-changeset.mjs --base origin/mainexits 1 with "This PR changes a changeset it did not add", listing both notes. That is the DELIBERATE CORRECTION class its two-class refusal names, and its remedy is "do NOT restore it -- say so on the PR and get it confirmed". Its route 0 inpr-automation.ymlapplies too: every changeset row isMand none isA, so the job'sRequire a changesetstep also reds.skip-changesetis not applied, per ruling D on #18375: "the 'skip-changeset' label is never applied to a PR that edits an existing changeset".Check Changesetis not a required context. The ADR-0087 and major-bump steps still judge the two notes and pass locally (below).The premise, measured on
origin/main(6d1660dc3b; unchanged at68ffa5dc1a)packages/cli/src/commands/migrate/comment-reactions.ts:56-77: "carry the emoji reactions a 17.x deployment stored insys_comment.reactionsintosys_comment_reactionrecords".packages/cli/src/utils/comment-reactions-conversion.ts:30-46: each distinct (comment, emoji, user) becomes one row, in the comment's organization,created_by= the reactor. A value that does not read is listed with its comment id and converts into nothing. Integration testcomment-reactions.integration.test.ts:291("--apply writes one record per stored reaction, lists what did not read, and invents nothing for it").comment-reactions-conversion.ts:49-55("A second run inserts nothing; an interrupted run is finished by running it again"). Test:311("a re-run inserts nothing").:270("a dry run reports every stored reaction and writes nothing").packages/cli/src/commands/migrate/apply.ts:475-526: when the intended changes dropsys_comment.reactions, the apply reads thesys_migrationverdict (readCommentReactionsConversion,comment-reactions-conversion.ts:463-474, "Fails toward retention"). Unverified, it prints "Refusing to drop sys_comment.reactions: ... dropping the column would delete them" and exits 1 (--json:refused_comment_reactions_unconverted). Verified means no write failure, nothing left to convert and no unreadable value (conversionVerified,:420-426). Tests:257(refused before any conversion, column kept),:319(still refused while a value does not read),:345(after a verified run the drop proceeds and every reaction record survives it).packages/spec/src/migrations/entries/semantic/18.sys-comment-reactions-column-retired.ts:31-35and:52-58("The operator converts first, then drops").Every changed sentence, BEFORE and AFTER
Line numbers are at this PR's head. Each sentence is changed identically in every location listed for it.
S1: the
sys_comment_reactionintroduction (29a163f), last bullet, last sentence.packages/plugins/plugin-audit/CHANGELOG.md:197·packages/spec/CHANGELOG.md:3290·.changeset/pre/22566-comment-reaction-record.md:17S2: the retirement heading (
9963322). Only its false last clause changed.packages/plugins/plugin-audit/CHANGELOG.md:198·packages/spec/CHANGELOG.md:3321·.changeset/pre/22573-sys-comment-reactions-retired.md:6S3: the bold lead paragraph's first two sentences. The paragraph's last two sentences are unchanged.
packages/plugins/plugin-audit/CHANGELOG.md:206·packages/spec/CHANGELOG.md:3329·.changeset/pre/22573-sys-comment-reactions-retired.md:14S4: "Existing databases", last sentence. The paragraph's first three sentences are unchanged.
packages/plugins/plugin-audit/CHANGELOG.md:222·packages/spec/CHANGELOG.md:3345·.changeset/pre/22573-sys-comment-reactions-retired.md:30One file added to the claim's surface
The claim declares the CHANGELOG bullet at
:197(S1). It does not declare that bullet's consumed source,.changeset/pre/22566-comment-reaction-record.md. Without it the GA re-render would repeat S1's false sentence, for the same reason the claim includes the 22573 note. It is added as a bounded in-place fix, and all four conditions hold:check-empty-changesetis already red by design on the 22573 note, so no new verification surface.If the seat would rather not have it here, it is one file and one line.
The second reading (22360 / 15204-7b positions): measured, not edited
Measured false of
main, but not amended, because it is one member of a family rather than a one-entry error:main..changeset/pre/22360-declared-position-package-provenance.md(plugin-security/CHANGELOG.md:1114,18.0.0-next.0) describes thesys_positionadmin data door answering403and a row-state patch passing. Onmainnosys_positionrow object exists:packages/plugins/plugin-security/src/objects/index.tsexportsSysUserPermissionSet,SysUserPositionandSysAudienceBindingSuggestiononly, and nothing declaresname: 'sys_position'. The stage-8 retirement (66949b7,plugin-security/CHANGELOG.md:291,18.0.0-next.1) says its data and REST routes are gone.restampedPackageProvenanceand thedeclared positions seededline have zero hits outside CHANGELOGs.plugin-security/CHANGELOG.md's18.0.0-next.0section, 25 of 50 entries name a catalog row object (sys_position,sys_permission_set,sys_capability) that the next prerelease retires. They record intermediate ADR-0131 C3 stages. Amending 22360 alone would be a single-point fix of that family, and "keep the rest of its facts" has no reading for an entry whose heading and every section describe the retired row.The PM report raises it as an open question.
Acceptance notes (not filed)
packages/spec/CHANGELOG.md:1493(the 23281 entry,6673c80) still reads "This supersedes the 'stored reactions are not migrated' sentence in the entry that retired the column". The sentence it quotes no longer reads that way. The claim keeps it as history. Carrier: none.packages/plugins/plugin-audit/src/objects/sys-comment-retired-fields.test.ts:79is a test docblock: "as amended: the column retires and its stored reactions are not migrated". It records the retirement ruling and is not published release text. No code or test is edited here. Carrier: none.Verification
Local, on head
cc5948e02a(after the final merge oforigin/main68ffa5dc1a):git grep -n "are not converted\|not migrated\|go with it\|are gone after the upgrade"over both CHANGELOGs and both pre notes gives 10 hits. None states that thesys_comment.reactionsdata is lost. The one reactions hit isspec/CHANGELOG.md:1493, the history sentence above. The other nine are unrelated entries::296,:7098,:8367,:19912,:23369,:39804,:40618,:57912,:98229.dispatch-gates --commands --repo objectstack-ai/objectstackderived 68 commands. 64 exit 0. 1 is the designed red above (check-empty-changeset --base origin/main, exit 1). 3 are NOT MEASURED, exit 3 PREREQUISITE NOT MET because only@objectstack/specwas built locally:check:dual-build-cjs-loads,check:i18n,check:lean-entry-closure. CI'sLint & Repo Gatesruns them on a full build.--ranreconciliation: "68 derived famil(ies) accounted for — 65 run, 3 NOT-MEASURED".check-adr-0087-registration --base origin/mainandcheck-changeset-no-major --base origin/mainexit 0.check:nul-bytesexits 0.packages/spectest files referenceCHANGELOG.mdor.changeset. Run withvitest run --maxWorkers=2: "Test Files 32 passed (32) · Tests 489 passed (489)".dist/.Generated by Claude Code