# Contributing (note-to-self) Solo-maintained. This file exists to keep future-me honest. ## The rule **Procedures only. No particulars.** This repo is public-read. Anything that identifies a client or would let a reader act against a client environment goes to the private tier — **no exceptions.** Never commit: - Client / business names, site identifiers - Hostnames, IPs, subnets, SSIDs, MAC addresses - Usernames, account names, email addresses - Passwords, keys, tokens, connection strings, license keys - Screenshots, exports, logs, or config dumps containing any of the above Instead use placeholders: ``, ``, ``, ``, ``, ``. Filled-in versions live in the **private tier** (private repo or Bitwarden secure note). ## Where things go | Content | Home | |---|---| | Generic procedure with placeholders | **This repo** | | Anything needing a credential | Private tier | | Client-specific config / values | Private tier | | Any identifying detail | Private tier | If a step can't be written without a real particular, it doesn't belong here — split the particular out to the private tier and reference it as a placeholder. ## Before every commit 1. Re-read the diff. Would a stranger learn *who* the client is, or *how to reach* their systems? If yes, stop. 2. No real hostnames/IPs/users/passwords — placeholders only. 3. No screenshots or pasted output with real data. 4. Scripts prompt for client-specifics at run time; they don't hard-code them. ## Scripts Scripts live under `scripts/`. Follow [`scripts/_template.ps1`](scripts/_template.ps1): - Prompt for placeholders with `Read-Host` — no editing before running, no `param()` (can't pass args through `irm | iex`). - Safe to run via `irm | iex` from our own server. - Confirm before anything destructive or that reboots. - Check for admin explicitly (`#Requires` is not enforced under `iex`). ## The as-is notice Every runbook and script carries a short as-is notice — two lines under the `#` title in a `.md`, or at the end of the `.NOTES` block in a `.ps1`. Copy it when you add a file. It is per-file rather than README-only for one reason: these are fetched by raw URL, so a reader who lands on a single runbook never sees the README or the LICENSE. The repo's context does not travel with the file. Keep it to those two lines. It sits above genuinely important, procedure-specific warnings — never a live chart, stop the service before copying, confirm authorization before acting — and a longer legal preamble would train people to skip the top of the file, which is exactly where those warnings live. Aim it at a stranger who found the repo, not at the quality of the procedure. These runbooks double as documented-procedure evidence; wording that implies the content is unreliable works against that.