Repository navigation
Conversation
A provider's mapping.md or account.md, or a rewrite file, can ask for an item on the report's "Before cutover" list. Such items now go into the plan as notes that start with `before cutover:`, and Step 9 lists each one there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🧙 Wizard CIRun the Wizard CI and test your changes against wizard-workbench example apps by replying with a GitHub comment using one of the following commands: Test all apps:
Test all apps in a directory:
Test an individual app:
Show more apps
Test against a wizard branch:
Add Results will be posted here when complete. |
…undone When no site is left in a language, Step 7 undoes the SDK install with the other changes its rewrite file's Install made, and deletes the notes it wrote, so Step 9 never lists a stale item. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A site's undo runs after the email client module exists, so removing the SDK there would break the build. That path keeps the install, and its before-cutover note stays true. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…note Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d sends PostHog's Suppression list page adds an address only as a manual entry, which blocks marketing email but not a transactional send. When the import tool is missing, Step 5 and the report now say so, and Step 5 keeps the sites that rely on the provider's list to skip bounced addresses, with Step 3's reason. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The question that keeps sites comes before "continue to the next step", its note names the import as the way to move, and the inventory count follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… re-import Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s missing Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Silthus
marked this pull request as ready for review
November 14, 2026 19:43
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Step 9's "Before cutover" list collects "each item a rewrite file says to note for this list". A provider's
mapping.mdoraccount.mdcan ask for such an item too, such as a check that must happen before the deploy, but nothing told the agent to keep it until Step 9. Such an item could slip out of the report.Note
🔵 Merge risk: low, 🟡 at full use · two-way door until the next context-mill release ships the skill; one-way once agents run it, since a run's report and plan stay with each app
before cutover:, and Step 9 lists every such note in "Before cutover" and leaves it out of the sites-table notes. Today this covers PHP's ext-curl note; the provider lanes not yet onmain, such as Postmark, use the same prefix. A note whose install Step 7 undoes is deleted, so the report never lists it.ext-curlline incomposer.json, and deletes thebefore cutover:notes it wrote. A later per-site undo keeps the SDK, as on the base. Uncovered until a live run: an agent that misreads which lines its install added could remove a line the app had before, such as its ownext-curlrequirement, so a deploy where the extension is missing no longer fails at install.migrate-email-resendreference files andmanifest.jsonchange. Uncovered until a live run: an agent that skips the note loses the item, as on the base.Rollout
Changes
3-inventory.md, under "Write the plan file": in any step, when the provider'smapping.mdoraccount.md, or a rewrite file, says to note something for "Before cutover", write it under the sites table as a note that starts withbefore cutover:.9-report.md: "Before cutover" lists each plan note that starts withbefore cutover:, in place of each item a rewrite file says to note. The sites-table notes section leaves those notes out, so each item shows once.rewrite-php.md: the ext-curl item is written in that form.5-suppressions.mdand9-report.md, when the import tool is missing: they no longer tell the person to add the addresses by hand on PostHog's Suppression list page. That page adds only a manual entry (add_manual_suppression), which blocks marketing email but not a transactional send. Step 5 asks which moving sites rely on the provider's list to skip bounced addresses and keeps them, with Step 3's reasonrelies on <provider name>'s suppression listand a note that the import, once available, lets them move. It asks only outside a re-import, and only when the provider's list has entries; an empty list ticks asempty list: no import tool; the report says the addresses can't reach PostHog until the import tool is available.7-rewrite.md: when no site is left in a language, Step 7 undoes the SDK install with the other changes its rewrite file's "Install" made, such asext-curlincomposer.json, and deletes thebefore cutover:notes it wrote. A later per-site undo keeps the SDK installed, as on the base, since the email client already imports it; its note stays true.How it was tested
a14b591:vitest run scripts, 342 tests, andnode scripts/build.jspass, with a clean tree after the build. The existing test that every "Step N says under" pointer names a real section still passes.main(8cd7381) toa14b591: onlymigrate-email-resend/references/3-inventory.md,5-suppressions.md,7-rewrite.md,9-report.md,rewrite-php.mdandmanifest.jsonchange; every other bundle is byte-identical. Saved in proof storage.Agent context
before cutover:plan-note prefix the Postmark lane already usesmainafter #472 merged, in place of a change on #472Involvement: no grilling rounds, no prototypes. Review round 1 and final reads 1 to 8 (two lenses, two families each), every finding fixed or declined with a reason; ReviewHog on every head, all clean. Michael accepted the live-run gap and, when it fails only on that gap, the quality-judge gap on 2026-11-14. Proof captured: shadow diff; live run owed with the migrate-email skill's planned trial.
🤖 Generated with Claude Code