# Probity Institute — Publish Checklist

Pre-launch and post-launch checklist for the Probity Institute static site. Work through
every section before publishing. No step is optional.

---

## 1. Hosting — GitHub Pages

1. Create a public repository named `probity-institute-site` (or `probity-institute`).
2. Push this directory to the default branch (e.g. `main`), keeping the site files at the repo root.
3. Repository → Settings → Pages:
   - Source: **Deploy from a branch**
   - Branch: `main`, folder: `/ (root)`
   - Save. GitHub builds and serves the static files as-is; there is no build step.
4. After the first build, verify at `https://<user>.github.io/probity-institute-site/`.
5. Optional: enable Actions-based deployment (peaceiris/actions-gh-pages) only if you later
   add a build step. Not required for this site.

### Alternative — Cloudflare Pages

1. Cloudflare dashboard → Workers & Pages → Create → Pages → Connect to Git repository.
2. Build settings: **No build command**, output directory `/` (the repo root).
3. Deploy. Cloudflare Pages serves static files with no build step and gives you a
   `*.pages.dev` URL automatically.

---

## 2. Custom Domain — DNS Records

Choose one provider. Do not configure both.

### If the site is on GitHub Pages (with a custom apex/root domain)

Point the apex domain at GitHub Pages' anycast IPs (A records):

| Type | Name   | Value          |
|------|--------|----------------|
| A    | @      | 185.199.108.153|
| A    | @      | 185.199.109.153|
| A    | @      | 185.199.110.153|
| A    | @      | 185.199.111.153|

Add a `www` CNAME pointing to `<user>.github.io.` (trailing dot).

In the repository: Settings → Pages → Custom domain → enter the domain → **Save**.
GitHub will verify and create the `CNAME` file in the repo (keep it).

### If the site is on Cloudflare Pages

| Type | Name   | Value (target)                | Proxy   |
|------|--------|-------------------------------|---------|
| CNAME| @      | `<project>.pages.dev`          | Proxied |
| CNAME| www    | `<project>.pages.dev`          | Proxied |

Add the domain in Cloudflare Pages → Custom domains. HTTPS is provisioned automatically
through the Cloudflare proxy.

### After either setup

- Wait for DNS propagation (a few minutes to 48 hours).
- Confirm HTTPS is enabled and redirects are correct (`www` → apex or apex → `www`, pick one).
- Update the site email in `about.html` (currently `editorial@probity-institute.example`).

---

## 3. Pre-Launch QA Checklist (Mandatory)

Run every check below. If any fails, fix and re-run before publishing.

### 3.1 Guardrails — content rules

Search the whole site (including `newsfeed/data/`) for forbidden content:

```bash
cd ~/grift-street-site
grep -rni "grift" .            # MUST return nothing — no cross-links to any execution brand
grep -rni "takeover\|raider\|hostile" .   # Must return nothing in PUBLISHED copy. Only permitted
                                         # matches are the guardrail rule statements inside HTML
                                         # comments and the digest's editor notes — those are
                                         # instructions, not narrative. Review each match manually.
grep -rni "score\|rating" newsfeed/ index.html   # MUST return nothing in news — no ratings commentary
```

Review rules:

- [ ] **No ratings commentary in news.** News entries state proposals, votes, and treasury
      moves only. No "good/bad/weak/strong governance" adjectives about any DAO.
- [ ] **No score judgments pre-methodology-freeze.** The GSA table on the front page and the
      Rights 30 matrix must show `Awaiting methodology freeze` / blank cells. No DAO receives a
      PASS/FAIL/PARTIAL until the methodology v1.0 freeze is recorded in the revision log.
- [ ] **No takeover/raider narrative anywhere.** Do not publish stories that frame governance
      actions as acquisitions, takeovers, or hostile control moves.
- [ ] **No cross-links to any execution brand.** This site must contain no link to, mention of,
      or route toward the commercial execution brand. It stands alone as the nonprofit standards body.
- [ ] **No comment sections, no Discord/forum destinations.** The site links to nothing that hosts
      discussion. Corrections are handled by dated editorial notes appended to entries.

### 3.2 Technical checks

```bash
cd ~/grift-street-site
# Every internal link resolves to a file that exists
python3 - <<'PY'
import re, pathlib, sys
root = pathlib.Path(".")
html = {p for p in root.rglob("*.html")}
bad = 0
for p in html:
    t = p.read_text()
    for href in re.findall(r'href="([^"#]+)"', t):
        if href.startswith(("http://", "https://", "mailto:")):
            continue
        target = (p.parent / href).resolve()
        if not target.exists():
            print(f"MISSING: {p} -> {href}")
            bad += 1
print("OK — all internal links resolve" if not bad else f"{bad} broken links")
PY

# No emojis in any page copy (site policy)
grep -rP "[\x{1F300}-\x{1FAFF}\x{2600}-\x{27BF}]" --include="*.html" . && echo "EMOJI FOUND — remove" || echo "OK — no emojis"
```

- [ ] Internal links resolve (script above passes with zero MISSING lines).
- [ ] No emojis anywhere in site copy.
- [ ] `index.html` masthead/nav render correctly at mobile width (single column).
- [ ] Legal footer appears on every page.
- [ ] `about.html` contact email is the real address (not `.example`).

### 3.3 Release gates (business rules)

- [ ] Methodology v1.0 frozen and its entry recorded in the revision log on `methodology.html`.
- [ ] The Rights 30 universe (30 DAO names) is decided and rows renamed from "DAO name (pending publication)".
- [ ] The registry signer address is announced and the first EAS attestation is published.
- [ ] First GSA determinations are published as attestations and mirrored on `registry.html`.
- [ ] Homepage editorial slot refreshed with the latest digest lead, not the sample story.

---

## 4. Legal Footer Disclaimer

Every page footer must carry this exact disclaimer (already present on all pages — keep it verbatim):

> Probity Institute is an independent, non-commercial standards and monitoring body. Content on this
> site is provided for general informational purposes only and does not constitute investment advice,
> a recommendation to buy or sell any asset, or a solicitation. Probity Institute is not registered or
> regulated as a credit rating agency, investment adviser, or securities firm in any jurisdiction, and
> the GSA standards are not credit ratings or credit opinions. Governance observations describe publicly
> recorded proposals, votes, and treasury activity and do not express any opinion on the investment merits
> of any token or protocol. Verify all information independently before acting on it.

Rule: the disclaimer is informational only — Probity Institute is not a rating agency, is not regulated
as one, and the GSA standards must never be represented as credit ratings or credit opinions.
