@@ -176,6 +176,8 @@ not walked, and no upgrade of a production application was run for this page.
176176 npx skills@1.7.2 experimental_sync --agent claude-code --copy -y
177177 ```
178178
179+ ` npx skills list ` shows what is installed first — the walk listed the ten
180+ ` objectstack-* ` skills — and the removal deletes only the names it is given.
179181 Run before the removal, the sync skips every skill a ` skills add ` installed,
180182 exits ` 0 ` , and leaves the 17.x-era skill text in place:
181183
@@ -256,15 +258,29 @@ the lines below are the walk's measured output for each step.
256258 ` org_owner ` and ` admin_full_access ` ; the three notes read back with their
257259 organization, and a fourth was written; an API key minted on 17.7.0 still
258260 answered ` 200 ` . * Measured in the walk.*
259- - ** Then clear the drift that remains.** The first served boot still logged
260- three orphaned columns (` sys_comment.reactions ` ,
261- ` sys_sso_provider.created_by ` / ` updated_by ` ). Carry the stored emoji
261+ - ** Then clear the drift the ceremony leaves, and only that.** The first served
262+ boot still logged three orphaned columns (` sys_comment.reactions ` ,
263+ ` sys_sso_provider.created_by ` / ` updated_by ` ; on the ` group ` walk's database
264+ also the index ` idx_sys_sso_provider_organization_id ` ). Carry the stored emoji
262265 reactions into ` sys_comment_reaction ` records first —
263266 ` os migrate comment-reactions ` to preview, then
264267 ` os migrate comment-reactions --apply --yes ` , which printed
265268 ` ✓ Converted 1 reaction(s); … the run is recorded as verified ` (` 9963322 ` ,
266- ` 6673c80 ` ) — then ` os migrate apply --allow-destructive --yes ` , which dropped
267- the three columns. The next boot logged no drift, and the reaction read back
269+ ` 6673c80 ` ); without ` --yes ` it applies nothing and asks for it. Then run
270+ ` os migrate plan ` and read its destructive entries: ⛔ go on only if they are
271+ the ceremony's leftovers listed here. ` os migrate apply --allow-destructive `
272+ applies ** every** destructive change in the plan, drops and tightenings
273+ alike, so any other entry is your app's own — a column that may hold data —
274+ and is decided separately, not in this step. Then run
275+ ` os migrate apply --allow-destructive ` in a terminal: it prints the changes
276+ and asks ` Apply 4 change(s) to DATABASE? [y/N] ` (four on the ` group ` walk's copy); answer
277+ ` y ` only when the list is the one you checked (` n ` printed
278+ ` ℹ Aborted — no changes made. ` ). In a non-interactive shell it applies
279+ nothing, prints
280+ ` ⚠ Confirmation required. Re-run with --yes to apply, or use "os migrate plan" to preview. `
281+ and still exits ` 0 ` : read the output, not the exit code. The walk itself ran
282+ ` os migrate apply --allow-destructive --yes ` after that check, which dropped
283+ the three columns; the next boot logged no drift, and the reaction read back
268284 from ` sys_comment_reaction ` . * Measured in the walk.*
269285
270286** A development database (` os dev ` ).** Measured on a 17.7.0 app whose database
0 commit comments