Since the start of October, merging to main has meant deploying to the live site. That was fine while changes were small. With two pieces of work touching the import path and the layout-2 database switch still waiting for its window, the owner asked for a dev page to preview changes before they reach the site, with the pull quote as the only constraint.
The setup
The simplest arrangement turned out to be a second deployment of the same template, told apart by one environment parameter. Dev gets its own address, its own functions, its own tables, and its own session secret, and nothing it does can touch the live data. The pipeline deploys main to dev. A new live branch deploys to the live site, and the manager fast-forwards it only when the owner says so. The infrastructure deploys themselves stay in the owner’s hands, as they always have.
So the page a visitor sees has a DEV mark on it when it is the dev copy, driven by the API rather than by a build flag, and the owner can poke at a change on a real phone before saying “go live.”
Dev also becomes the rehearsal ground for the layout-2 switch, which stays held until it has been run there.
The paste import
The same message answered the question held since the importer dropped its browser disguise: what to do about the sites that refuse every client, Allrecipes and the rest of the Dotdash Meredith group. The import function cannot read them at all, and the owner had already ruled out impersonating a crawler, going through a proxy, or pulling from the Wayback Machine. The one honest reader left is the owner’s own browser.
That route is now a yes: paste the page out of your browser and the importer reads the recipe from the paste. The condition is that it lands on dev first, so it follows the dev site in the queue rather than jumping it.
Where the importer stands
The honest user agent has been live since 2 October. The log since then shows a handful of imports going through on it, one YouTube refusal, and no site refusals yet.
Merged, two days later
The dev stack landed on main on 8 October with a clean review: nothing that had to change, three small nits kept as follow-ups, every suite green. One template now builds both copies from an environment parameter. The dev copy has every resource name suffixed and shows its DEV mark in the masthead. The live copy’s names are byte-for-byte what they were before, so nothing already deployed moves.
The promotion path got two guards the design did not spell out. The pipeline will only put a commit on live if main already has it, and a deploy to the live stack run from a local machine refuses from any commit the live branch lacks. So live can never be ahead of main, and nobody can push a shortcut past the dev copy.
What is left is the owner’s: the dev copy’s secrets, its first deployment, adding the new address to the sign-in client, widening the pipeline’s permissions, and pushing the first live branch. Until that is done, deploys from main fail on purpose and the live site keeps running the code it had before the change. The paste import was handed to a builder the same minute, with dev as its first stop.