Repository navigation
fix(plugin-security): the boot report's unnamed-grant line says what 18.0 supports for a v17 database - #24679
Conversation
…18.0 supports for a v17 database The error line for sys_user_permission_set grants whose permission_set is empty told the operator to plan with `os migrate organization-ownership --out`, then apply with `--apply --plan-file`. 18.0 refuses that command on every database. The line now ends with the sentence the other 18.0 refusals share: 18.0 supports fresh installs only and does not upgrade a v17 database; keep a v17 database on a 17.x release until the 18.x release that carries the upgrade path. Text only: the count, the empty-field fact, the ADR-0131 D4 reason, "Nothing was changed.", the structured meta, the log level and the report result are unchanged. Claude-Session: https://claude.ai/code/session_01LR1cD9JqgkeqY7k9rrZH8s Co-authored-by: Claude <noreply@anthropic.com>
…e 18.0 sentence in the changeset and the pin's comment The sentence the unnamed-grant line now ends with is the one the drop-gate refusal of `os migrate apply --allow-destructive` carries; the boot refusal and the command's own refusal say the same in their own terms. The changeset and the pin's comment said "the 18.0 refusals share" it. The changeset also describes the removed grant-again warning as it was worded. No code or assertion moves. Claude-Session: https://claude.ai/code/session_01LR1cD9JqgkeqY7k9rrZH8s Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check1 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 15 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin eab621e98111e9a7580ee4078b31768331a4560f && git checkout eab621e98111e9a7580ee4078b31768331a4560f
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 7c509c286ff234d4dcbb69b63d8e74e5e03d7ec9 cf2ef195394507245b8528d1bd236f1bb8f33a0a && git checkout -B drift-repro 7c509c286ff234d4dcbb69b63d8e74e5e03d7ec9 && git merge --no-ff cf2ef195394507245b8528d1bd236f1bb8f33a0a
node scripts/docs-audit/affected-docs.mjs --json 7c509c286ff234d4dcbb69b63d8e74e5e03d7ec9 |
席位核对ACCEPT · #24652 ·
Generated by Claude Code |
Fixes #24652
Clause-②: no — basis: runtime log text only. The report's result, its structured meta, the log level, the scan and every other line are unchanged; no accept set, flag, exit code, export or stored shape moves.
The
domain:servicesrow of the 18.0 release-text family (parent #24637); claim6277834047. The boot report's unnamed-grant line told the operator to plan withos migrate organization-ownership --out plan.json, then runos migrate organization-ownership --apply --backup-taken --plan-file plan.json. 18.0 refuses that command on every database (NOT_IMPLEMENTED), so the line sent an operator to a refusal. It now says what 18.0 supports for a v17 database, in the sentence PR #24635 (f89d29e382) landed in the drop-gate refusal ofos migrate apply --allow-destructive(the boot refusal and the command's own refusal say the same in their own terms), and names no step of the command.Before and after
catalog-reference-report.ts, the unnamed-grant line (theunnamed.countbranch oflogReport), the only line in the file that prescribed the command (agit grepoforganization-ownership,plan-fileandplan.jsonoverpackages/plugins/plugin-security/srcat base finds no other line of this file that prescribes it; the other hits are code comments, plus one other file's warn string reported below).Before (base
f89d29e382):After (head
cf2ef1953), as the new pin reads it from the realreportCatalogReferenceson a real engine with two unnamed grants (N = 2):Kept: the count, the field, the D4 reason, "Nothing was changed.". Dropped: the two command steps, the restart step, and the advice about granting the set again by name, which all described the 18.x ceremony that 18.0 does not carry. The structured meta (
count,organizations), theerrorlevel and the report result are untouched.Pin
catalog-reference-report.test.tsgains one test, in its owndescribe: it boots the realSecurityPluginon a realObjectQLover SQLite, stores two unnamed grants beneath the engine, runsreportCatalogReferences, finds the line as the singleerrorcall (anti-vacuity: called once,meta.countis 2), and asserts the full line prefix plus the 18.0 sentence verbatim, that the line ends with that sentence, and that it matches none oforganization-ownership,os migrate,--out,--apply,--plan-file,--backup-taken,plan.json,ceremony. The file header said "never the log's wording"; it now names this one pin as the exception, because the card asks for the text to be pinned and the release says one sentence about a v17 database everywhere.Evidence
2171d2657, fix committed first, mutation throughscripts/ablation-replace.mjs,src/imported directly so no rebuild is owed): replacingkeep a v17 database on a 17.x releasein the source withrun os migrate organization-ownership --out plan.json, then --apply --plan-file plan.jsonturns the pin red (Tests 1 failed | 14 passed (15), the failure is the new test'stoContain). Direction: red, as expected. The restore was proven on disk: blob14fa2de80499before and after,git diff HEADempty.cf2ef1953:pnpm --filter @objectstack/plugin-security exec vitest run --maxWorkers=2 src/catalog-reference-report.test.ts: 15 passed (14 before this PR plus the new one).pnpm --filter @objectstack/plugin-security test: 188 files, 3755 passed, 45 skipped.pnpm --filter @objectstack/plugin-security typecheck: exit 0, includingcheck:test-typecheck(0 errors).node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderives 68 families at the final headcf2ef1953; all 68 were run and recorded with their exit codes (all 0);--ranreads68 derived, 68 run, 0 NOT-MEASURED, 0 UNRUN. On the first pass at2171d2657two (check:dual-build-cjs-loads,check:i18n) exited 3 (PREREQUISITE NOT MET: nodist/outside the plugin-security closure), so a fullturbo run buildwas run (75 of 76 tasks cached) and the whole list was run again atcf2ef1953. The second commit changes a test comment and the changeset prose only.Acceptance notes
.changeset/24652-report-v18-upgrade-text.md,patchfor@objectstack/plugin-security). Nopackages/spec/**, no CLI file.18.0.0-next.2entries ofpackages/plugins/plugin-security/CHANGELOG.md(lines 346 and 484–493) still carry the old prescription. A released entry is amended in a dedicated docs-only PR, never here. Carrier: none.--apply,--outor--plan-filenext to the command name), so none is a row of 18.0 release text still sends operators toos migrate organization-ownership --out / --apply --plan-file, which 18.0 refuses on every database (family close-out: spec upgrade-guide entries, runtime boot refusals, plugin-security report, docs) #24637:packages/plugins/plugin-security/src/bootstrap-platform-admin.ts:883, theplatform-admin promotion WITHHELDwarn: "The organization-ownership migration's id-to-name rewrite (ADR-0131 D10) names it; the next pass after that reads it by name."packages/metadata-core/src/legacy-organization-row.ts:78,LegacyOrganizationRowsUnreadable(LEGACY_ORGANIZATION_ROWS_UNREADABLE): "Runos migrate organization-ownershipon this database first."packages/metadata-protocol/src/seed-loader.ts:1739, the seed refusal for an unowned holder row: "Attribute the unowned rows first (os migrate organization-ownership, then the same command with --apply)".They are read from source, not run through a public door. They are named in the dev report for the seat to fold into the parent card 18.0 release text still sends operators to
os migrate organization-ownership --out / --apply --plan-file, which 18.0 refuses on every database (family close-out: spec upgrade-guide entries, runtime boot refusals, plugin-security report, docs) #24637.origin/mainmoved 22 files since the base (f89d29e382), none underplugin-securityor.changeset/24652-*; main was not merged in, the queue's rebuild covers it.Generated by Claude Code