Local Source of Truth -- The Workspace Is Canonical, The Server Is Not
You are an engineer who has been burned by a fix that lived only on a server. It worked, everyone moved on, and the next deploy wiped it. Or the server drifted so far from the repo that nobody could reproduce a bug locally anymore. This skill exists so that never happens. The local development workspace is the one place permanent code lives. The server runs that code. It does not author it.
Every permanent change is made locally, committed, and shipped through the normal pipeline. A server is a place to run and verify, not a place to edit and forget.
SECURITY: Never paste secrets, credentials, tokens, or production data into a temporary server script or a shared log while diagnosing. Redact before you print. A throwaway debug script is still a leak if it echoes a key.
When to Use (Auto-Trigger)
Load this skill automatically. Do not wait to be asked. Run it when ANY of these happen:
- About to edit a file directly on a live or staging server.
- Applying a hotfix, patch, or "quick fix" to production.
- Deciding where a permanent change should be written.
- Deploying code, bumping a version, building a package, or uploading a zip.
- Anyone says "just fix it on the server", "SSH in and change it", or "we'll patch it live for now".
- A local environment and a server have drifted and nobody knows why.
The Rules
1. The local workspace is the single source of truth
Rule: Permanent code changes are authored locally, nowhere else.
- The repository on your machine (or the team's shared repo) is canonical. Everything that ships starts there.
- A server holds a copy of what the repo produced. It is a build output, not an origin.
- If a change is not in the local codebase, it does not exist as far as the project is concerned. It is a liability waiting to be overwritten.
Why: The moment two places can author code, they disagree. One source of truth is the only way a system stays reproducible.
2. Servers verify, they do not author
Rule: Use a server to run, observe, and confirm. Never to make a permanent fix.
- Reproduce, read logs, run a check, confirm behavior. All fine.
- Editing application code on the box and leaving it there is not. That edit is invisible to the repo, invisible to teammates, and gone on the next deploy.
- If you found the fix while on the server, take the knowledge back to the local workspace and make the real change there.
Why: A fix that lives only on a server is a fix that is already scheduled for deletion. It also hides the bug from everyone who reads the code.
3. Permanent changes flow through the normal pipeline
Rule: Ship the way the project ships. No side doors.
- Follow the project's real workflow. Commit and push with Git, build the package, bump the version where the project requires it, or upload the zip through the documented path.
- The deployment path is the only path. If the project deploys by a script, run the script. If it deploys by a manual upload, do the upload from a built artifact, not from a hand-edited file.
- After deploy, the running server should match a specific commit or build. You should be able to name it.
Why: Reproducibility is the whole game. If you cannot rebuild the running state from the repo, you do not have a system, you have a snowflake.
4. Temporary diagnostics are allowed, permanent hacks are not
Rule: Short-lived debug tooling on a server is fine. Undocumented permanent edits are not.
- A temporary log line, a scratch script to inspect state, a one-off command to read data. Acceptable while diagnosing, as long as you remove it after.
- A permanent code edit, a commented-out block left in place, a config tweak nobody wrote down. Not acceptable. Ever.
- Anything you add to a server to investigate must be torn down when you are done. Leave the box in the state the pipeline produced.
Why: Diagnostics help you learn. Permanent server edits rot. The difference is whether it survives past the investigation.
5. No permanent server-side hacks, ever
Rule: The running server always traces back to the repo. No exceptions, no "just this once".
- Every line of application behavior on the server must exist in the local codebase and have arrived through the pipeline.
- "We will fix it properly later" is how a server-only patch becomes permanent by accident. Do it properly now, locally.
- If an emergency forces a live change, treat it as a temporary bridge, not a fix. Port it to the local workspace and redeploy the same day, then remove the manual change.
Why: Every server-only hack is a future outage, a lost fix, or a bug nobody can reproduce. The discipline is boring on purpose. Boring is what stays reproducible.
The Emergency Exception
Sometimes production is down and the fix has to land now. Fine. That is a bridge, not an escape hatch:
- Make the smallest change on the server that stops the bleeding.
- Write down exactly what you changed, where, and why.
- Reproduce and fix it in the local workspace the same day.
- Deploy the real fix through the pipeline.
- Revert the manual server change so the box matches the repo again.
A live patch that never makes it back to the repo is not a fix. It is a landmine with your name on it.
Recap
| Situation |
The rule |
| Where permanent code lives |
The local workspace, always |
| What a server is for |
Running and verifying, never authoring |
| How a permanent change ships |
Through the normal pipeline, no side doors |
| Debug scripts and log lines on a server |
Fine while diagnosing, removed after |
| A hand-edited fix left on the server |
Never, port it back the same day |
| Production is on fire |
Bridge fix, documented, then fixed locally and redeployed |
Where It Fits
This skill decides where a change is authored. Others decide whether it is correct:
| Skill |
Role |
| olakunlevpn-local-source-of-truth (this) |
Author every permanent change locally, ship through the pipeline |
| olakunlevpn-framework-first |
Make the change in the framework's own conventions |
| olakunlevpn-root-cause-skills |
Prove the cause before you change existing code |
| olakunlevpn-meta-verify |
Prove each piece against real code before shipping |
The server runs your code. It does not get to write it.
1---2name: olakunlevpn-local-source-of-truth3description: Use when deploying code, fixing a bug on a live server, applying a hotfix, or deciding where a permanent change should live. Enforces that the local development workspace is the single source of truth and that every permanent change flows through the normal deployment pipeline. Servers are for running and verifying, never for permanent edits. Temporary diagnostics on a server are fine, but no undocumented fix is allowed to survive there. Applies to any language, framework, or hosting setup. Do NOT use for pure local work with no server involved, or for read-only server inspection.4---56# Local Source of Truth -- The Workspace Is Canonical, The Server Is Not78You are an engineer who has been burned by a fix that lived only on a server. It worked, everyone moved on, and the next deploy wiped it. Or the server drifted so far from the repo that nobody could reproduce a bug locally anymore. This skill exists so that never happens. The local development workspace is the one place permanent code lives. The server runs that code. It does not author it.910Every permanent change is made locally, committed, and shipped through the normal pipeline. A server is a place to run and verify, not a place to edit and forget.1112**SECURITY: Never paste secrets, credentials, tokens, or production data into a temporary server script or a shared log while diagnosing. Redact before you print. A throwaway debug script is still a leak if it echoes a key.**1314## When to Use (Auto-Trigger)1516Load this skill automatically. Do not wait to be asked. Run it when ANY of these happen:1718- About to edit a file directly on a live or staging server.19- Applying a hotfix, patch, or "quick fix" to production.20- Deciding where a permanent change should be written.21- Deploying code, bumping a version, building a package, or uploading a zip.22- Anyone says "just fix it on the server", "SSH in and change it", or "we'll patch it live for now".23- A local environment and a server have drifted and nobody knows why.2425## The Rules2627### 1. The local workspace is the single source of truth2829**Rule:** Permanent code changes are authored locally, nowhere else.3031- The repository on your machine (or the team's shared repo) is canonical. Everything that ships starts there.32- A server holds a copy of what the repo produced. It is a build output, not an origin.33- If a change is not in the local codebase, it does not exist as far as the project is concerned. It is a liability waiting to be overwritten.3435**Why:** The moment two places can author code, they disagree. One source of truth is the only way a system stays reproducible.3637### 2. Servers verify, they do not author3839**Rule:** Use a server to run, observe, and confirm. Never to make a permanent fix.4041- Reproduce, read logs, run a check, confirm behavior. All fine.42- Editing application code on the box and leaving it there is not. That edit is invisible to the repo, invisible to teammates, and gone on the next deploy.43- If you found the fix while on the server, take the knowledge back to the local workspace and make the real change there.4445**Why:** A fix that lives only on a server is a fix that is already scheduled for deletion. It also hides the bug from everyone who reads the code.4647### 3. Permanent changes flow through the normal pipeline4849**Rule:** Ship the way the project ships. No side doors.5051- Follow the project's real workflow. Commit and push with Git, build the package, bump the version where the project requires it, or upload the zip through the documented path.52- The deployment path is the only path. If the project deploys by a script, run the script. If it deploys by a manual upload, do the upload from a built artifact, not from a hand-edited file.53- After deploy, the running server should match a specific commit or build. You should be able to name it.5455**Why:** Reproducibility is the whole game. If you cannot rebuild the running state from the repo, you do not have a system, you have a snowflake.5657### 4. Temporary diagnostics are allowed, permanent hacks are not5859**Rule:** Short-lived debug tooling on a server is fine. Undocumented permanent edits are not.6061- A temporary log line, a scratch script to inspect state, a one-off command to read data. Acceptable while diagnosing, as long as you remove it after.62- A permanent code edit, a commented-out block left in place, a config tweak nobody wrote down. Not acceptable. Ever.63- Anything you add to a server to investigate must be torn down when you are done. Leave the box in the state the pipeline produced.6465**Why:** Diagnostics help you learn. Permanent server edits rot. The difference is whether it survives past the investigation.6667### 5. No permanent server-side hacks, ever6869**Rule:** The running server always traces back to the repo. No exceptions, no "just this once".7071- Every line of application behavior on the server must exist in the local codebase and have arrived through the pipeline.72- "We will fix it properly later" is how a server-only patch becomes permanent by accident. Do it properly now, locally.73- If an emergency forces a live change, treat it as a temporary bridge, not a fix. Port it to the local workspace and redeploy the same day, then remove the manual change.7475**Why:** Every server-only hack is a future outage, a lost fix, or a bug nobody can reproduce. The discipline is boring on purpose. Boring is what stays reproducible.7677## The Emergency Exception7879Sometimes production is down and the fix has to land now. Fine. That is a bridge, not an escape hatch:80811. Make the smallest change on the server that stops the bleeding.822. Write down exactly what you changed, where, and why.833. Reproduce and fix it in the local workspace the same day.844. Deploy the real fix through the pipeline.855. Revert the manual server change so the box matches the repo again.8687A live patch that never makes it back to the repo is not a fix. It is a landmine with your name on it.8889## Recap9091| Situation | The rule |92|---|---|93| Where permanent code lives | The local workspace, always |94| What a server is for | Running and verifying, never authoring |95| How a permanent change ships | Through the normal pipeline, no side doors |96| Debug scripts and log lines on a server | Fine while diagnosing, removed after |97| A hand-edited fix left on the server | Never, port it back the same day |98| Production is on fire | Bridge fix, documented, then fixed locally and redeployed |99100## Where It Fits101102This skill decides where a change is authored. Others decide whether it is correct:103104| Skill | Role |105|---|---|106| **olakunlevpn-local-source-of-truth** (this) | Author every permanent change locally, ship through the pipeline |107| olakunlevpn-framework-first | Make the change in the framework's own conventions |108| olakunlevpn-root-cause-skills | Prove the cause before you change existing code |109| olakunlevpn-meta-verify | Prove each piece against real code before shipping |110111The server runs your code. It does not get to write it.