Repository navigation
docs(skills): objectstack-upgrade teaches the stored pass before 18.3 drops the ≤16.x conversions - #28918
Conversation
… drops the <=16.x conversions The stored-rows section said a protocol-16 row rehydrates in its protocol-17 shape forever. On 18.3 the conversions retired at or below 16.x leave the tree, so such a row is no longer rewritten at read. The section, the 3.6 assertion, the report template and eval 4 now say to canonicalize with `os migrate meta --stored --apply --yes` on the release being left (18.2 or earlier) before moving; new eval 5 asks the 18.1 -> 18.3 question. Claude-Session: https://claude.ai/code/session_01J8VVAkD2h5o5cmhTRa3bsF Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract-review-claim: session_01J8VVAnMUWA9rufXzFaEh4J · head 3bf0627 · 2026-11-02T04:18Z The seat review runs at CONTRACT_REVIEW_TIER in an isolated subagent (the seat session is not at that tier). |
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract reviewServed-tier: Reviewer: an isolated subagent at ① Derived judgments
② Semver level
③ Boundary flagsDev report 6568912467:
④ Design judgmentskills/objectstack-upgrade/SKILL.md — holds. Against the card's scenario (16-era skills/objectstack-upgrade/evals/protocol-major-upgrade.json — holds. Eval 4 keeps every skills/objectstack-upgrade/references/examples-upgrade.md — holds. The optional checklist item becomes a pending per-deployment gate under "Pending, per deployment", consistent with § Stored rows and § 3.6; within its 1197 ceiling. No must-fix. One should-fix (SKILL.md, the 18.3 exit-0 clause) and one escalation (the Prime Directive #12 / module-header drift). Check-runs still Implemented-by: VERDICT: PASS Generated by Claude Code |
…ly on the release being left On a release that no longer carries a row's conversions, the stored pass finds no notice and no todo on that row, records it canonical, and exits 0, so the check in 3.6 proves nothing there. Say so in 3.6, and extend eval 5's expected answer with the same point. Claude-Session: https://claude.ai/code/session_01J8VVAkD2h5o5cmhTRa3bsF Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Contract reviewServed-tier: Delta record over record 6569077178 on ① Derived judgments
② Semver levelUnchanged: ③ Boundary flagsDelta report 6569140493:
④ Design judgmentSKILL.md — holds; the prior should-fix is landed. Tried to break it: an 18.3 pass cannot flag such a row through No must-fix. No new should-fix. Check-runs at review time: several required lanes still Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J 维护者速读
席位核对 — ACCEPT · domain:skills#1 · head
|
…as it now reads The patch round changed 3.6 to say the stored-pass exit 0 counts only on the release being left; the changeset's Now bullet still described the earlier wording. Claude-Session: https://claude.ai/code/session_01J8VVAkD2h5o5cmhTRa3bsF Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#1 · huangyiirene · session_01J8VVAnMUWA9rufXzFaEh4J Regen-provenance: 6569183763 · 43d397d → 4e175a6 · git diff --stat 43d397d 4e175a6 -- ':!.changeset/' → (empty) Head moved on a prose face only. Generated by Claude Code |
Requested by Irene · project thread
Fixes #26303
Clause-②: no
Metadata-protocol: none
维护者速读
objectstack-upgrade技能不再教「16 时代存下的sys_metadata行读时会被永远自动改写、不必动」;改为:18.3 去掉 ≤16.x 的转换后这类行不再读时改写,所以要在 18.2 或更早版本上先跑一次os migrate meta --stored --apply --yes再升级。eval 4 同步改写,新增 eval 5 直接问「18.1 想直升 18.3」。skills/objectstack-upgrade/SKILL.md的 "Stored rows" 一节(两段改写)与 § 3.6 末句;②evals/protocol-major-upgrade.json的 eval 4 改句与新 eval 5;③references/examples-upgrade.md报告模板「Pending, per deployment」的存量迁移一行。node scripts/check-skills-token-ratchet.mjs && pnpm --filter @objectstack/spec check:skill-docs均绿,且grep -n "rehydrates in its protocol-17" skills/objectstack-upgrade/SKILL.md零命中。skills/**是 Tier H 治理面,批准后由席位落地)。What changes
The 18.3 changeset
.changeset/25767-retire-16x-retirement-kits.md(pending in the Version Packages PR) removes the 50 D2 conversions retired at or below 16.x, and its Stored rows bullet says asys_metadatarow still in such a shape "is no longer rewritten at read; canonicalize it once withos migrate meta --stored --applyon 18.2 or earlier, before moving to 18.3". The published upgrade skill still taught the opposite. This PR is the stored-rows half the card still owes (the floor half fell away under ruling 6434038284 on #25767:MIGRATION_SUPPORT_FLOORstays 16, soos migrate meta --from 16and eval 1 are untouched).SKILL.md§ "Stored rows". Heading and two paragraphs rewritten:applyConversionsToStoredItemreplays the conversions the installed release still carries (load-path-retired ones included); 18.3 drops those retired at or below 16.x, so such a row is no longer rewritten; ⛔ run the stored pass before you move (on 18.2 or earlier for such a row). The removed sentences are the two the card names: "including entries retired from the load path ... A row written under protocol 16 therefore rehydrates in its protocol-17 shape without anybody editing it" and "To make it durable, run the stored pass". The command block, the--yeswarning and the--fromnote are unchanged.SKILL.md§ 3.6. "the read-time rehydration is still the guarantee" becomes "so get0before you move" — the same claim in its second place.references/examples-upgrade.mdreport template: the stored-pass checklist line said "rows rehydrate correctly today; this makes it durable"; it now says the pass is owed "before any release that drops their conversions".evals/protocol-major-upgrade.json. Eval 4's expected answer says stored rows rehydrate only while the installed release carries their conversions and runs the stored pass before moving past 18.2; its assertions are unchanged. New eval 5 (Chinese prompt, like eval 1): on 18.1, going straight to 18.3, rows from 16 read fine today; the expected answer runs--stored,--stored --apply --yesand--stored --json(exit 0) on 18.1 before the bump, and refuses both hand-editingsys_metadataand bumping first..changeset/26303-upgrade-skill-stored-rows-before-18-3.md,'@objectstack/skills': patch, carrying both declaration lines.Tests
No code path changes, so no unit test applies; the teaching is exercised by eval 4 (amended) and eval 5 (new). The skill gates the card names are green on
3bf0627876:check:skill-docs,check:skill-refs,check:skill-examples(280 prose examples type-check across 3 surfaces). The full derived set is under Verification.Acceptance notes
Line and token readings (tree
objectstack-ai/objectstackat3bf0627876against baseb15b634c16; lines bywc -l, tokens by the token ratchet'sceil(utf8 bytes / 4)over the whole file):skills/objectstack-upgrade/SKILL.mdskills/objectstack-upgrade/references/examples-upgrade.mdskills/objectstack-upgrade/evals/protocol-major-upgrade.jsonskills/objectstack-upgrade/**(all files)skills/*/SKILL.mdNo ceiling row moves: the new teaching is paid for inside the stale sentences it replaces.
Premise readings. At tag
@objectstack/spec@18.2.0(27f38ada49)packages/spec/srccarries 45 conversions withretiredAfter16.x and 5 with 15.x; atb15b634c16it carries 0.packages/spec/package.jsonon the base reads18.2.0, so the drop ships in the next release, 18.3, per the changeset.Scope. The seat's brief named § "Stored rows" and the eval; § 3.6's last sentence and the report-template line state the same claim, so they were corrected in the same stroke (stale lines of the claim this card names, nothing else removed).
Observed, not filed (unrehearsed drift, outside this file surface): two code headers still state the pre-18.3 policy —
packages/spec/src/conversions/stored.ts("D3 keeps every conversion forever precisely so any past major can replay forward") andpackages/metadata-protocol/src/stored-migration.ts("a row written under any past protocol is served canonical forever"); Prime Directive #12 inAGENTS.mdsays every rehydration seam replays "the full conversion chain — retired entries included". None is published teaching; carrier: none.Verification
Derived gate set — 46 derived, 45 run with exit 0, 1 NOT MEASURED (head 3bf0627)
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran RECORDon3bf0627876: "✓ dispatch-gates --ran: 46 derived famil(ies) accounted for — 45 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3)".node scripts/check-skills-token-ratchet.mjs:: exit 0 — "57 authored bundle file(s) within their ceilings"; "skills/objectstack-upgrade/SKILL.md is 6166 tokens (ceiling 6188; headroom 22)"; "references/examples-upgrade.md is 1194 tokens (ceiling 1197; headroom 3)".pnpm --filter @objectstack/spec run check:skill-docs:: exit 0 — "Skill docs in sync".pnpm --filter @objectstack/spec run check:skill-refs:: exit 0 — "9 generated files in sync with packages/spec".pnpm --filter @objectstack/spec run check:skill-examples:: exit 0 (after building@objectstack/specand the@objectstack/client-reactclosure) — "280 prose examples type-check across 3 surface(s)".pnpm check:doc-authoring:: exit 0;pnpm check:nul-bytes:: exit 0;node scripts/check-empty-changeset.mjs --base origin/main:: exit 0;node scripts/check-adr-0087-registration.mjs --base origin/main:: exit 0;node scripts/check-changeset-no-major.mjs --base origin/main:: exit 0;pnpm check:role-word:: exit 0;pnpm check:skill-compatibility:: exit 0;pnpm check:skill-frame-sync:: exit 0;pnpm check:skill-identifier-liveness:: exit 0;pnpm check:published-files:: exit 0;pnpm check:pm-governed-merges:: exit 0; the remaining derived families :: exit 0.pnpm check:dts-closure,pnpm check:sourcemap-no-sources-content,pnpm check:lean-entry-closure,pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst answered exit 3 (no build); re-run after building the 38-package@objectstack/client-reactclosure plus@objectstack/formulaand@objectstack/lint:: exit 0 each (dts-closure and sourcemap swept the 38 built packages).pnpm check:dual-build-cjs-loads:: exit 3, PREREQUISITE NOT MET (reads every package'sdist/; a repo-wide build is not run locally) — CI's build lane carries it.Generated by Claude Code