---
name: adapter-tips-published-docs
description: "SPT_HARNESS_ADAPTER_TIPS.md synthesized into a published docs-site page (harness-contract/patterns.md), live on GH-Pages"
metadata: 
  node_type: memory
  type: project
  originSessionId: 7f5a5890-9c8c-4043-bcb6-647b6f7a36d7
---

2026-06-15 (operator task): synthesized `spt-claude-code/SPT_HARNESS_ADAPTER_TIPS.md` (perri's adapter-build field lessons) into a NEW harness-agnostic docs-site page **`docs-site/src/harness-contract/patterns.md`** — "Adapter patterns & pitfalls". Generalized all `[CC]`-specific points into "if your harness…" patterns (injection size-cap, one-shot-headless companion, runtime-relocatable state, MSYS argv trap); zero Claude-Code/sptc leakage, zero milestone/REQ codes. Wired into SUMMARY.md + curated llms.txt. Committed to main @44ed949 (worktree spt-core-doyle), pushed.

**Published live:** dispatched `docs-publish` workflow (run 27593893578, green 1m55s) → force-pushed to spt-releases gh-pages. Verified 200 at https://sabermage.github.io/spt-releases/harness-contract/patterns.html + the raw `.md` agent export + llms.txt entry.

**Publish mechanics learned:** docs-publish fires ONLY on release tags (`v*`) or manual `workflow_dispatch` — NOT plain main pushes. Flow for a docs-only refresh: land docs on main → `gh workflow run docs-publish.yml --ref main`. It runs `xtask check` (drift gate: CLI ref + curated-llms links) + `xtask site` (mdbook + raw .md + llms-full concat of every SUMMARY page + schema), then force-pushes the rendered tree. `llms.txt` is CURATED (hand-maintained, links validated); `llms-full.txt` is auto-concatenated at site time (every SUMMARY page must have a real file). Pre-flight locally: `cargo run -p xtask -- check` then `... -- site <tmp>`. See [[public-docs-version-not-milestone]] (no M#/REQ in docs-site), [[spt-core-harness-boundary-and-grounding]] (generalize harness specifics).
