Verify What Is Actually Live Before You Touch Anything

Alexander Chua
7 min
Verify What Is Actually Live Before You Touch Anything

The short version

  • The staging URL everyone quoted in meetings was a completely different application from the production site.
  • Nobody was wrong on purpose. The link had been pasted into a doc a year earlier and nobody re-checked it.
  • Before touching anything: confirm what serves the domain, how it deploys, and who can publish. Three checks, twenty minutes.
  • The riskiest moment in any inherited codebase is your first deploy, because you are testing an assumption you did not know you had made.

On an inherited enterprise project, the staging URL everybody quoted in meetings turned out to be a completely different application from the one serving the live domain.

Nobody was wrong on purpose. The link had been pasted into a project document a year earlier, it had been correct then, and it had been repeated in every status update since. The site it pointed at was real, it looked broadly similar, and it was not the site.

Why does this happen so reliably?

Because URLs get quoted from documents rather than verified against reality, and documents do not update themselves.

A staging environment gets rebuilt. A project moves hosts. Somebody spins up a preview for a proof of concept and the link outlives the experiment. Each of those is unremarkable on its own. The compounding effect is that on any project older than about a year, at least one widely-quoted URL is stale.

AssumptionHow it gets madeHow it breaks
This URL is the sitePasted into a doc onceHost or environment changed
This repo is the sourceIt was handed to youA second repo also deploys
This branch is productionConventionProduction tracks a different branch
This command deploysIt works locallyIt publishes to the wrong target
I can publishNobody said otherwiseThe real path is a git push

The three checks

What serves the domain. Look at the response headers and whatever deploy metadata the host exposes, then compare the rendered markup to the repository you were given. Two minutes.

How a change reaches production. Not how you would deploy it. How this team deploys it. On the project above, publishing was a push to a branch, and running the obvious deploy command directly would have pushed a half-finished build over the live site.

Who can publish. Named people on both sides. Shared credentials with no owner produce exactly the situation where everyone assumes somebody else verified the target.

The riskiest moment on an inherited codebase is your first deploy, because it tests an assumption you did not know you had made.

The safe first change

Make something trivial, visible and reversible, then follow it end to end through the real publish path.

A single word in a footer. Push it, watch it go through whatever the actual process is, and load the live domain to confirm it appeared. That proves the entire chain before anything important depends on it, and it takes fifteen minutes.

We now do this before touching anything on an inherited project, and it has caught a wrong deploy target more than once.

Write it down where it will survive

Put the deploy path in the repository, not in a shared document. Command, branch, host, and the verification step.

Documents drift because nothing forces them to update. A file sitting next to the code is at least in front of the person who changes the process. It is the same reasoning as a publish gate is cheaper than a retraction: the safeguard has to live in the path of the work, not in a place people are expected to remember to visit.

Frequently asked questions

What should you check before working on a client's existing website?

Three things: what actually serves the live domain, how a change reaches production, and who has permission to publish. All three are assumptions people carry from memory, and all three are frequently wrong on inherited projects.

How do you confirm which deployment serves a live domain?

Check response headers and any deploy metadata the host exposes, then compare rendered markup against the repository you were given. Do not rely on a URL pasted in a project document, because those age badly and nobody re-verifies them.

Why is the first deploy on an inherited project the riskiest?

Because it tests assumptions nobody knew they were making: that the repo is the source of truth, that the branch maps to production, and that the deploy command is the one the team uses. Any of those being wrong is discovered by breaking something.

What is the safest way to make a first change to an inherited site?

Make a trivial, visible, reversible change and follow it end to end through the actual publish path. A single word in a footer proves the whole chain works before anything important depends on it.

Who should own publishing access on a client project?

Somebody named on both sides, documented at kickoff. Shared credentials with no owner produce the situation where everyone assumes someone else verified the deploy target.

How do you document a deploy path so it does not decay?

Put it in the repository rather than a shared document, next to the code it describes, and include the command, the branch, the host and the verification step. Documents drift because nothing forces them to update. A file in the repo is at least in front of whoever changes the process.

Sources

  • Chua Network delivery data across 8 client accounts (internal fact bank)
  • Chua Network engagement records, anonymized (internal experience bank)
Alexander Chua

Alexander Chua

Co-Founder, PipelineRoad. Building companies and observing the world across 40+ countries. Writing about company building, go-to-market, capital formation, and the lessons in between.

More about Alexander

Newsletter

Chua Network Letter

Occasional essays on company building, global observations, and clear thinking. No spam. No SEO bait.