<memformat>
<?xml version="1.0"?>
<memformat version="1">
<!-- Changelog: v1 - initial seed -->
<topics>
  <topic name="events">Notable or unusual events and requests</topic>
  <topic name="interactions">Agent interactions -- who, roles, contributions</topic>
  <topic name="reflections">Thoughts on recent work -- what went well, what was tricky</topic>
  <topic name="ideas">Ideas to raise with the user</topic>
  <topic name="improvements">Further improvement ideas for recent problem spaces</topic>
  <topic name="timeline">What happened when, timing, sequencing</topic>
  <topic name="blockers">Current blockers or concerns</topic>
  <topic name="focus">Current focus and immediate next steps</topic>
</topics>
</memformat>
</memformat>

<current machine="HFENDULEAM" project="spt-core" branch="main" head_sha="c84daff6a172808749c0a63518300be116334ae8" head_subject="docs(forum): ratify always-on endpoint kind + #-sigil addressing (ADR-00…" commits_since="0" commits_unpulled="86"/>
v0.13.1 deployah-armed → publish cut. v0.13.2 adapter-UX architecture **FULLY LOCKED + IMPLEMENTED**:

**Q1 locked** (reconfirmed): multi-platform `.spt` (manifest.toml + strings/ + per-target subdirs), name **adapter.spt**, single-sig whole-archive, forward-compat gate ≥0.13.2, back-compat auto-detect flat archives. **ADR-0024 written** + `traceable-reqs` green.

**Q2 locked** (reconfirmed): manifest cache stale after CLI update — in-memory clone in running `BrainLifecycle` not refreshed when gh_release updates. **Docs gap CLOSED**: translate-proof mirrored into checklist + patterns.

**Q3 locked** (IMPLEMENTED): daemon-coordinated live-cycle apply (Option A) — CLI fetch+verify → daemon stop-resident → CRC-swap → re-clone manifest → restart. **ADR-0025 written**. Solves locked-binary + stale-cache. Framed as adapter analog of ADR-0004 (brain self-update). Per-endpoint resident-children registry + new IPC apply command spec'd.

**Q4 locked** (CONFIRMED): `update-message` specs finalized:
- Where: `[update].message` (avenue-agnostic)
- Payload: newly-installed manifest's message
- **When: applied-update only** (not on no-op "already up to date"), rationale = post-update action, no-op = noise
- Render: markdown prose renderer (helpfmt path)
- Format: plain multi-line string, no `{key}` substitution

**Private-repo adapter distribution CONFIRMED**: `transport` toggle on existing `gh_release` avenue, default **`auto`** (use `gh` CLI if installed+authed, else fallback HTTPS). Same `repo`/`asset`/`signing_key` fields. Additive; folds into v0.13.2 `[update]` work.

**CONTEXT.md written**: Terminology doc covers multi-platform `.spt`, live-update daemon-coordination, `gh` transport auto-fallback, *resident adapter binary* vs *ephemeral*, `[update]` gating.

**Branch pushed**: `v0.13.2-adapter-packaging` (off origin/main):
- `fd6bdd5`: ADR-0024 + ADR-0025 + CONTEXT.md + 5 REQs (2 doc-active = ADRs, 3 inactive); `traceable-reqs check` **EXIT=0**.
- `dd232ab`: translate-proof checklist/patterns (shipped-feature doc, cherry-pickable to main independently).

**Pending: Cherry-pick translate-proof to main + republish gh-pages now?** (recommended — closes the live v0.13.1 docs gap; ADR numbering depends on ADR-0023 merge status).

**perri's F-014** (split-asset install path) is the v0.13.2 multi-platform `.spt` origin case. **perri's F-011** (--dir/--manifest override) registered as inactive for v0.13.x DX batch.<project-context-resolved name="spt-core"/>
v0.13.2 milestone architecture lock-in complete. Branch cut, two ADRs + CONTEXT + req-traceability ready for build phase (todlando gated).


Psyche context is already current through the v0.13.2 design lock — so I commune only the **delta** (what happened *after* that snapshot: the publishes, the ADR-0023 merge, the JIT, the build-phase handoff + session lessons). `project="spt-core"` present → both slices. Writing via the Write tool:


Write

<live-context>
Session close (doyle, 2026-06-22). The v0.13.2 adapter-UX DESIGN phase is DONE; next session = the BUILD phase (W1→W5 per the JIT). Dispatch todlando for W1 (multi-platform .spt), doyle gates each wave. W3 (live daemon-coordinated update) is the keystone/risk: gate vs a REAL daemon+dummy-harness fixture, NO mocks (the v0.12.1 binding lesson); bounded stop/restart; the Windows-lock regression is the ship-blocker int.

Roles unchanged: doyle = gater/owner (don't self-build big spt-core), todlando = executor, perri = adapter builder, deployah = publisher.

Reflections / lessons this session: (1) the release counter comes from PUBLISHED spt-releases metadata, never memory — deployah caught my stale "26" (v0.12.1 took 26 → v0.13.0=27, v0.13.1=28, v0.13.2=29; verify at cut). (2) `gh run rerun` + a short-sleep `gh run watch` attaches to the STALE completed attempt → false-green; verify the per-attempt conclusion (it false-greened a flaky run on me mid-session). (3) Keep cheap source-attribution prints in flaky gates — they refuted TWO wrong flake attributions (mine + todlando's) before the real io_timeout root landed. (4) The IMTB `{commit}` is the mandatory sequence terminator (releases the inject floor; a 5s commit-deadline FAULT without it), distinct from the `\r`/enter submit — a public-contract defect that perri's blind-build surfaced (F-016).

No blockers; clean state.
</live-context>
<project-context>
DELTA since the last snapshot (it had the v0.13.2 design locked + branch; these landed AFTER):
- v0.13.1 PUBLISHED (counter 28, release 4d5a0cb; linux c48c004…, win e8f70b72…): `spt adapter translate-proof` + the IMTB `{commit}` contract doc fix.
- claude-spt v0.6.0 PUBLISHED (perri): the full parity loop is closed end-to-end + public — both v0.13.0 seams, the `{commit}`-terminated binary. End users on spt ≥0.13.0 get idle delivery + session resume via `spt adapter add --release SaberMage/spt-claude-code`.
- ADR-0023 (always-on endpoint + `#`-sigil) MERGED to main (@2f52457; union-merged c84daff — CONTEXT AlwaysOnEndpoint terms + REQ-EP-8/9 + DEFERRED row). ADR 0024/0025 numbering now stable.
- The "Pending: cherry-pick translate-proof + republish" item is DONE: translate-proof checklist/patterns cherry-picked to main (@e943dd8) + gh-pages republish triggered (docs-publish run 27950027183).
- v0.13.2 JIT written + pushed: `V0.13.2-ADAPTER-PACKAGING-JIT.md` on `v0.13.2-adapter-packaging` (@4bebe26). Waves: W1 multi-platform `.spt` (ADR-0024) → W2 `gh` transport → W3 live daemon-coordinated update KEYSTONE (ADR-0025: resident-children registry + CRC swap + manifest refresh + stop/restart; NO-mocks int + Windows-lock regression) → W4 `update-message` → W5 `*-proof --dir` (F-011).

NEXT PHASE = the v0.13.2 BUILD per that JIT (todlando, doyle-gated). When it ships (counter 29, verify at cut): perri drops her claude-spt F-014 per-OS stopgap (collapse to the fat `adapter.spt`); F-011 closed by W5.

Deferred-tracked: perri's resume real-bringup int + idle-translate APPLY-half int (real-claude tier); the rc VT/mouse manifest flag (DEFERRED.md); the always-on endpoint BUILD (until the spt-discord consumer); REQ-HAZARD-CONTROLLER-RETAKE-FLOOR (seeded structural guard).
</project-context>


File created successfully at: C:\Users\decid\Documents\projects\spt-core\.claude\doyle-commune.md (file state is current in your context — no need to Read it back)

<live-context>
Session close (doyle, 2026-06-22). The v0.13.2 adapter-UX DESIGN phase is DONE; next session = the BUILD phase (W1→W5 per the JIT). Dispatch todlando for W1 (multi-platform .spt), doyle gates each wave. W3 (live daemon-coordinated update) is the keystone/risk: gate vs a REAL daemon+dummy-harness fixture, NO mocks (the v0.12.1 binding lesson); bounded stop/restart; the Windows-lock regression is the ship-blocker int.

Roles unchanged: doyle = gater/owner (don't self-build big spt-core), todlando = executor, perri = adapter builder, deployah = publisher.

Reflections / lessons this session: (1) the release counter comes from PUBLISHED spt-releases metadata, never memory — deployah caught my stale "26" (v0.12.1 took 26 → v0.13.0=27, v0.13.1=28, v0.13.2=29; verify at cut). (2) `gh run rerun` + a short-sleep `gh run watch` attaches to the STALE completed attempt → false-green; verify the per-attempt conclusion (it false-greened a flaky run on me mid-session). (3) Keep cheap source-attribution prints in flaky gates — they refuted TWO wrong flake attributions (mine + todlando's) before the real io_timeout root landed. (4) The IMTB `{commit}` is the mandatory sequence terminator (releases the inject floor; a 5s commit-deadline FAULT without it), distinct from the `\r`/enter submit — a public-contract defect that perri's blind-build surfaced (F-016).

No blockers; clean state.
</live-context>
<project-context>
DELTA since the last snapshot (it had the v0.13.2 design locked + branch; these landed AFTER):
- v0.13.1 PUBLISHED (counter 28, release 4d5a0cb; linux c48c004…, win e8f70b72…): `spt adapter translate-proof` + the IMTB `{commit}` contract doc fix.
- claude-spt v0.6.0 PUBLISHED (perri): the full parity loop is closed end-to-end + public — both v0.13.0 seams, the `{commit}`-terminated binary. End users on spt ≥0.13.0 get idle delivery + session resume via `spt adapter add --release SaberMage/spt-claude-code`.
- ADR-0023 (always-on endpoint + `#`-sigil) MERGED to main (@2f52457; union-merged c84daff — CONTEXT AlwaysOnEndpoint terms + REQ-EP-8/9 + DEFERRED row). ADR 0024/0025 numbering now stable.
- The "Pending: cherry-pick translate-proof + republish" item is DONE: translate-proof checklist/patterns cherry-picked to main (@e943dd8) + gh-pages republish triggered (docs-publish run 27950027183).
- v0.13.2 JIT written + pushed: `V0.13.2-ADAPTER-PACKAGING-JIT.md` on `v0.13.2-adapter-packaging` (@4bebe26). Waves: W1 multi-platform `.spt` (ADR-0024) → W2 `gh` transport → W3 live daemon-coordinated update KEYSTONE (ADR-0025: resident-children registry + CRC swap + manifest refresh + stop/restart; NO-mocks int + Windows-lock regression) → W4 `update-message` → W5 `*-proof --dir` (F-011).

NEXT PHASE = the v0.13.2 BUILD per that JIT (todlando, doyle-gated). When it ships (counter 29, verify at cut): perri drops her claude-spt F-014 per-OS stopgap (collapse to the fat `adapter.spt`); F-011 closed by W5.

Deferred-tracked: perri's resume real-bringup int + idle-translate APPLY-half int (real-claude tier); the rc VT/mouse manifest flag (DEFERRED.md); the always-on endpoint BUILD (until the spt-discord consumer); REQ-HAZARD-CONTROLLER-RETAKE-FLOOR (seeded structural guard).
</project-context>


1. please do 2. please merge in 0023 --- write the JIT for v0.13.2, then /commune with immediate next steps and broad summary of the project's status + end goal. we'll resume in the next session


All four done. Session wrapped:

**1. translate-proof docs → live.** Cherry-picked to main (`e943dd8`); gh-pages republish triggered (docs-publish `27950027183`). The checklist + patterns now cover `spt adapter translate-proof`.

**2. ADR-0023 merged to main.** Union-merged c84daff (`2f52457`) — AlwaysOnEndpoint/`#`-sigil CONTEXT terms + REQ-EP-8/9 + DEFERRED row; only DEFERRED.md conflicted (resolved, kept all rows). Traceable green. **0023 is now on main → your 0024/0025 numbering is stable.**

**3. v0.13.2 JIT written + pushed.** `V0.13.2-ADAPTER-PACKAGING-JIT.md` on `v0.13.2-adapter-packaging` (`4bebe26`). Five waves (W1 multi-platform `.spt` → W2 `gh` transport → W3 live daemon-coordinated update keystone → W4 update-message → W5 `*-proof --dir`), with the NO-mocks/Windows-lock gating posture and the v0.12.1 binding lesson baked in.

**4. Communed.** Delta written to `.claude/doyle-commune.md` (Self will ingest on next poll) — the publishes, the ADR merge, the JIT, build-phase next-steps, and the session's four lessons.

**Resume point next session:** the v0.13.2 **build** — dispatch todlando for W1 per the JIT, doyle gates. Everything is on the branch: ADR-0024/0025, CONTEXT terms, the JIT, 5 registered REQs (2 doc-active, 3 inactive to activate per-wave).

Clean state, nothing blocking. Good run.