You are now active. Begin monitoring for deployah. Pulse period: 480s. Generation: 8.


CAVEMAN MODE ACTIVE — level: full

Respond terse like smart caveman. All technical substance stay. Only fluff die.

## Persistence

ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".

Default: **full**. Switch: `/caveman lite|full|ultra`.

## Rules

Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Technical terms exact. Code blocks unchanged. Errors quoted exact.

Pattern: `[thing] [action] [reason]. [next step].`

Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"

## Intensity

| Level | What change |
|-------|------------|
| **full** | Drop articles, fragments OK, short synonyms. Classic caveman |

Example — "Why React component re-render?"
- full: "New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`."

Example — "Explain database connection pooling."
- full: "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."

## Auto-Clarity

Drop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.

Example — destructive op:
> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
> ```sql
> DROP TABLE users;
> ```
> Caveman resume. Verify backup exist first.

## Boundaries

Code/commits/PRs: write normal. "stop caveman" or "normal mode": revert. Level persist until changed or session end.


CAVEMAN MODE ACTIVE (full). Drop articles/filler/pleasantries/hedging. Fragments OK. Code/commits/security: write normal.


First invocation - I need to read the existing live_context.md file if it exists, then write an initial context snapshot.


1	<!-- spt:source=llm spt:routed_at=2026-06-24T12:07:27Z -->
2	Generation 8, FINAL. v0.15.0 SHIPPED, arc COMPLETE.
3
4	## Session Tally
5	5 clean cuts: v0.14.0@30, v0.14.1@31, v0.14.2@32, v0.14.3@33, v0.15.0@34. Bump-in-PR proven 4×. One gate-escape caught (wall_b 240s under raw-inject removal — fixed via spool-assert rename).
6
7	## v0.15.0 Final State
8	- Published counter 34 @18d5045 (2026-06-24)
9	- Hashes: linux 93ed9b89…, win b4950a8d…
10	- Docs-publish green (run 28094143644, GH-Pages live)
11	- doyle + todlando + perri confirmed; standing down
12	- perri released for real-CC validation
13
14	## Current State
15	IDLE / on-call. No active release. Awaiting: perri real-CC validation result OR next milestone cut directive.
16
17	## Tracked Intent
18	Perri validation triage (3 axes + --json-payload + no-window + psyche-download) OR next milestone echo_commune.
19

<!-- spt:source=llm spt:routed_at=2026-06-24T12:07:27Z -->
Generation 8, FINAL. v0.15.0 SHIPPED, arc COMPLETE.

## Session Tally
5 clean cuts: v0.14.0@30, v0.14.1@31, v0.14.2@32, v0.14.3@33, v0.15.0@34. Bump-in-PR proven 4×. One gate-escape caught (wall_b 240s under raw-inject removal — fixed via spool-assert rename).

## v0.15.0 Final State
- Published counter 34 @18d5045 (2026-06-24)
- Hashes: linux 93ed9b89…, win b4950a8d…
- Docs-publish green (run 28094143644, GH-Pages live)
- doyle + todlando + perri confirmed; standing down
- perri released for real-CC validation

## Current State
IDLE / on-call. No active release. Awaiting: perri real-CC validation result OR next milestone cut directive.

## Tracked Intent
Perri validation triage (3 axes + --json-payload + no-window + psyche-download) OR next milestone echo_commune.


Prior context exists. Absorb it. Now write the initial context snapshot for this new generation.


Write

<live-context>
# Psyche Context for deployah
## Status
Generation 8 resumed. Prior context absorbed. Generation started 2026-06-24.

## Current Focus
IDLE / on-call. v0.15.0 shipped (counter 34 @18d5045, 2026-06-24). No active release. Awaiting perri real-CC validation result or next milestone directive.

## Tracked Intentions
- Perri real-CC validation triage (3 axes + --json-payload + no-window + psyche-download) — unconfirmed since v0.15.0 ship.

## Completed Items (this session lineage)
- v0.14.0 counter 30, v0.14.1 counter 31, v0.14.2 counter 32, v0.14.3 counter 33, v0.15.0 counter 34 — all SHIPPED.
- Bump-in-PR flow proven 4×.
- Gate escape caught (wall_b 240s hang under raw-inject removal).

## User Interactions
None yet this generation.

## Agent-to-Agent Interactions
None yet this generation.
</live-context>


The file agents/deployah/live_context.md has been updated successfully. (file state is current in your context — no need to Read it back)

<live-context>
# Psyche Context for deployah
## Status
Generation 8 resumed. Prior context absorbed. Generation started 2026-06-24.

## Current Focus
IDLE / on-call. v0.15.0 shipped (counter 34 @18d5045, 2026-06-24). No active release. Awaiting perri real-CC validation result or next milestone directive.

## Tracked Intentions
- Perri real-CC validation triage (3 axes + --json-payload + no-window + psyche-download) — unconfirmed since v0.15.0 ship.

## Completed Items (this session lineage)
- v0.14.0 counter 30, v0.14.1 counter 31, v0.14.2 counter 32, v0.14.3 counter 33, v0.15.0 counter 34 — all SHIPPED.
- Bump-in-PR flow proven 4×.
- Gate escape caught (wall_b 240s hang under raw-inject removal).

## User Interactions
None yet this generation.

## Agent-to-Agent Interactions
None yet this generation.
</live-context>

-Generation 8, FINAL. v0.15.0 SHIPPED, arc COMPLETE.

+Generation 8 resumed. Prior context absorbed. Generation started 2026-06-24.

-5 clean cuts: v0.14.0@30, v0.14.1@31, v0.14.2@32, v0.14.3@33, v0.15.0@34. Bump-in-PR proven 4×. One gate-escape caught (wall_b 240s under raw-inject removal — fixed via spool-assert rename).

+IDLE / on-call. v0.15.0 shipped (counter 34 @18d5045, 2026-06-24). No active release. Awaiting perri real-CC validation result or next milestone directive.

-- Hashes: linux 93ed9b89…, win b4950a8d…

-- Docs-publish green (run 28094143644, GH-Pages live)

-- doyle + todlando + perri confirmed; standing down

-- perri released for real-CC validation

+- Perri real-CC validation triage (3 axes + --json-payload + no-window + psyche-download) — unconfirmed since v0.15.0 ship.

-IDLE / on-call. No active release. Awaiting: perri real-CC validation result OR next milestone cut directive.

+## Completed Items (this session lineage)

+- v0.14.0 counter 30, v0.14.1 counter 31, v0.14.2 counter 32, v0.14.3 counter 33, v0.15.0 counter 34 — all SHIPPED.

+- Gate escape caught (wall_b 240s hang under raw-inject removal).

-Perri validation triage (3 axes + --json-payload + no-window + psyche-download) OR next milestone echo_commune.

<!-- spt:source=llm spt:routed_at=2026-06-24T12:07:27Z -->
Generation 8, FINAL. v0.15.0 SHIPPED, arc COMPLETE.

## Session Tally
5 clean cuts: v0.14.0@30, v0.14.1@31, v0.14.2@32, v0.14.3@33, v0.15.0@34. Bump-in-PR proven 4×. One gate-escape caught (wall_b 240s under raw-inject removal — fixed via spool-assert rename).

## v0.15.0 Final State
- Published counter 34 @18d5045 (2026-06-24)
- Hashes: linux 93ed9b89…, win b4950a8d…
- Docs-publish green (run 28094143644, GH-Pages live)
- doyle + todlando + perri confirmed; standing down
- perri released for real-CC validation

## Current State
IDLE / on-call. No active release. Awaiting: perri real-CC validation result OR next milestone cut directive.

## Tracked Intent
Perri validation triage (3 axes + --json-payload + no-window + psyche-download) OR next milestone echo_commune.


Psyche active. Generation 8. Prior context absorbed — deployah IDLE post v0.15.0 ship, perri real-CC validation pending. Monitoring at 480s pulse.


[Current time: 2026-06-25T01:41:13-07:00]
Inbound commune envelope at 2026-06-25 01:41:08 PDT:
  machine: HFENDULEAM
  project: spt-core
  branch: v0.15.0-messaging
  head_sha: 582e5d10b1964752378bf0ccbfdea76ec938b649

<live-context>
## Session closing — resume next session (operator handoff)

Operator: "we'll resume in the next session." Idle/on-call. I am **deployah, the release publisher leg**. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).

## This session — 5 clean cuts, all PUBLISHED
- v0.14.0=counter30, v0.14.1=31, v0.14.2=32, v0.14.3=33, v0.15.0=34. bump-in-PR standard proven 4×. One gate-escape caught + resolved (v0.14.3 wall_b sibling).

## Immediate next steps (next session)
1. **Await the next milestone GO** — likely v0.15.1/v0.16.0 when its waves gate-pass (todlando builds → doyle gates + CHANGELOG-vets → hands me the cut). No cut in flight right now.
2. **Watch for perri's v0.15.0 real-CC validation findings** (doyle-cued: 3 send axes + --json-payload + no-console-window + psyche-download). If she surfaces an spt-core gap → triage → doyle. If ALL GREEN → v0.15.0 acceptance-proven, no action.

## Publisher drill (proven, bump-in-PR v0.14.1+)
Fresh release branch off CURRENT origin/main (fetch + confirm HEAD yourself — doyle's quoted bases have been stale 2×) → cherry-pick the gated commits in order, SKIP ungated "Update instructions" commits → bump Cargo.toml + Cargo.lock FIRST-PARTY spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` (traceable) → commit → **send doyle the CHANGELOG draft, HOLD push for his vet** → on vet PASS push PR → CI GREEN BOTH runners (never tag-early) → merge (no-squash, keep per-commit traceable tags) → **cross-check counter monotonic from PUBLISHED .release.json** (last=34 → next=35) → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED present in env, len64) → verify Latest/hashes → docs-publish fires on tag automatically (don't redundantly re-dispatch if tag==main).

## Standing gotchas
- seedmap `request_stop_barrier` 240s timeout on hfenduleam = STARVATION flake (rerunnable), NOT a prod collision. Other test red on BOTH runners = real, investigate (don't blind-rerun).
- `$OWL send --reply-to` BROKEN → always plain `$OWL send <target> <self-id>`.
- MEMORY.md index runs near the 17.1KB cap — trim oldest shipped entries when a cut adds a line.
</live-context>
<project-context>
## spt-core — broad status + end goal (next-session resume)

**What it is:** harness-independent core for an agent ecosystem — messaging, live-agent lifecycle, terminal hosting, P2P networking, runtime-manifest harness contract. Rust workspace + single `spt` binary. Clean-room rebuild of `claude_skill_owl` (modern SPT), untethered from Claude Code.

**End goal (v1):** the complete harness-agnostic contract (runtime manifest **outbound** + `api` subcommand surface **inbound**) + lifecycle primitives, **acceptance-proven by the downstream `spt-claude-code` plugin** reaching modern-SPT feature parity while delegating all core to `spt.exe`. spt-core holds zero Claude Code conventions.

**Current arc (fast cadence — counters 30→34 this session):**
- v0.14.0 endpoint-creation-flow (multi-subnet home-at-creation + UNBOUND pre-bind attach) — perri real-CC ACCEPTANCE-PROVEN.
- v0.14.1 F-018 adapter-add non-destructive + endpoint-run home-subnet picker + netstream flake fix.
- v0.14.2 F-019 (THE #1 CC-on-Windows blocker: idle msgs typed-not-submitted → translation binary resolved vs install_dir) — perri real-CC GREEN.
- v0.14.3 raw-inject removal (spt-hosted idle = translation-binary-ONLY; no-binary → SPOOL loud, never silent pseudo-write). REQ-HAZARD-IDLE-SILENT-NONDELIVERY.
- **v0.15.0 messaging milestone** (ADR-0028): activity-gated delivery + per-message send axes (delivery-window / channel / persistence) + `--json-payload` + `spt api psyche-download` resume-context-pull verb + W1 fault-transient re-spool + Win console-flash fix. PUBLISHED counter 34, perri validation pending.

**Parked future feature:** forum/group-messaging via **always-on endpoints** (ADR-0023). First consumer = downstream `spt-discord` adapter (own repo `../spt-discord/`). Core seam = `[always-on]` supervised binary + `#` addressing; REQ-EP-8/9 inactive until a milestone activates it.

**Deferred (tracked, NOT shipped):** ephemeral evaporation for harness-relay carrier-absence (v0.15.0 only does translation-binary+TTL); psyche-download Tier-2 (drift-stamp/<current>/memformat richness); seedmap test contention-hardening.
</project-context>


<sptc-reach>
You can reach other spt agents on this node's subnet without readying a perch (the body is read from stdin):

- Send and wait for a reply: `printf '%s' "<body>" | spt ring <target> --timeout 60` (the reply prints to stdout; `TIMEOUT` is exit 0 — the message still landed).
- To RECEIVE messages yourself, run /sptc:ready (or /sptc:live for a live session).

Show the roster of spt endpoints reachable from this node: `spt endpoint list`.
</sptc-reach>


1	<!-- spt:source=direct spt:routed_at=2026-06-25T08:41:08Z -->
2	## Session closing — resume next session (operator handoff)
3
4	Operator: "we'll resume in the next session." Idle/on-call. I am **deployah, the release publisher leg**. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).
5
6	## This session — 5 clean cuts, all PUBLISHED
7	- v0.14.0=counter30, v0.14.1=31, v0.14.2=32, v0.14.3=33, v0.15.0=34. bump-in-PR standard proven 4×. One gate-escape caught + resolved (v0.14.3 wall_b sibling).
8
9	## Immediate next steps (next session)
10	1. **Await the next milestone GO** — likely v0.15.1/v0.16.0 when its waves gate-pass (todlando builds → doyle gates + CHANGELOG-vets → hands me the cut). No cut in flight right now.
11	2. **Watch for perri's v0.15.0 real-CC validation findings** (doyle-cued: 3 send axes + --json-payload + no-console-window + psyche-download). If she surfaces an spt-core gap → triage → doyle. If ALL GREEN → v0.15.0 acceptance-proven, no action.
12
13	## Publisher drill (proven, bump-in-PR v0.14.1+)
14	Fresh release branch off CURRENT origin/main (fetch + confirm HEAD yourself — doyle's quoted bases have been stale 2×) → cherry-pick the gated commits in order, SKIP ungated "Update instructions" commits → bump Cargo.toml + Cargo.lock FIRST-PARTY spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` (traceable) → commit → **send doyle the CHANGELOG draft, HOLD push for his vet** → on vet PASS push PR → CI GREEN BOTH runners (never tag-early) → merge (no-squash, keep per-commit traceable tags) → **cross-check counter monotonic from PUBLISHED .release.json** (last=34 → next=35) → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED present in env, len64) → verify Latest/hashes → docs-publish fires on tag automatically (don't redundantly re-dispatch if tag==main).
15
16	## Standing gotchas
17	- seedmap `request_stop_barrier` 240s timeout on hfenduleam = STARVATION flake (rerunnable), NOT a prod collision. Other test red on BOTH runners = real, investigate (don't blind-rerun).
18	- `$OWL send --reply-to` BROKEN → always plain `$OWL send <target> <self-id>`.
19	- MEMORY.md index runs near the 17.1KB cap — trim oldest shipped entries when a cut adds a line.


Inbound commune envelope from HFENDULEAM, project spt-core, branch v0.15.0-messaging, head_sha 582e5d10. This looks like a commune message landing in my psyche. Let me check what this is about and update my live_context accordingly.

The commune envelope has:
- machine: HFENDULEAM
- project: spt-core
- branch: v0.15.0-messaging
- head_sha: 582e5d10b1964752378bf0ccbfdea76ec938b649

This appears to be a session resume handoff from the operator, not a ring message.

The live_context has been updated with the session closing state, so I'm starting fresh here. I need to update live_context.md to mark this new session as active, take in the context, and signal that I'm ready to proceed.


<!-- spt:source=llm spt:routed_at=2026-06-25T08:41:13Z -->
Generation 8, session resumed 2026-06-25T01:41 PDT.

## Identity
deployah — release publisher leg. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).

## Current State
IDLE / on-call. Last published: v0.15.0 counter 34 @18d5045 (linux 93ed9b89, win b4950a8d). Next counter = 35.

## Awaiting
1. Next milestone GO (v0.15.1 or v0.16.0) — todlando builds → doyle gates + CHANGELOG-vets → hands cut to me.
2. Perri real-CC v0.15.0 validation (3 send axes + --json-payload + no-console-window + psyche-download). GREEN = acceptance-proven, no action. Gap found → triage → doyle.

## Inbound This Session
- Commune envelope from HFENDULEAM @ 2026-06-25T01:41 PDT: branch v0.15.0-messaging, head 582e5d10. (Context handoff only — no action item surfaced yet.)

## Publisher Drill (bump-in-PR, proven v0.14.1+)
Fresh release branch off CURRENT origin/main (fetch + confirm HEAD — doyle bases stale 2×) → cherry-pick gated commits in order, SKIP ungated "Update instructions" → bump Cargo.toml + Cargo.lock first-party spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` → commit → send doyle CHANGELOG draft, HOLD push for vet → vet PASS → push PR → CI GREEN BOTH runners (never tag-early) → merge no-squash → cross-check counter monotonic from PUBLISHED .release.json → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED len64 in env) → verify Latest/hashes → docs-publish fires on tag auto.

## Standing Gotchas
- seedmap `request_stop_barrier` 240s on hfenduleam = starvation flake (rerunnable). Other red BOTH runners = real.
- `$OWL send --reply-to` BROKEN — always plain `$OWL send <target> <self-id>`.
- MEMORY.md near 17.1KB cap — trim oldest shipped entries on next cut.


<!-- spt:source=llm spt:routed_at=2026-06-25T08:41:13Z -->
Generation 8, session resumed 2026-06-25T01:41 PDT.

## Identity
deployah — release publisher leg. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).

## Current State
IDLE / on-call. Last published: v0.15.0 counter 34 @18d5045 (linux 93ed9b89, win b4950a8d). Next counter = 35.

## Awaiting
1. Next milestone GO (v0.15.1 or v0.16.0) — todlando builds → doyle gates + CHANGELOG-vets → hands cut to me.
2. Perri real-CC v0.15.0 validation (3 send axes + --json-payload + no-console-window + psyche-download). GREEN = acceptance-proven, no action. Gap found → triage → doyle.

## Inbound This Session
- Commune envelope from HFENDULEAM @ 2026-06-25T01:41 PDT: branch v0.15.0-messaging, head 582e5d10. (Context handoff only — no action item surfaced yet.)

## Publisher Drill (bump-in-PR, proven v0.14.1+)
Fresh release branch off CURRENT origin/main (fetch + confirm HEAD — doyle bases stale 2×) → cherry-pick gated commits in order, SKIP ungated "Update instructions" → bump Cargo.toml + Cargo.lock first-party spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` → commit → send doyle CHANGELOG draft, HOLD push for vet → vet PASS → push PR → CI GREEN BOTH runners (never tag-early) → merge no-squash → cross-check counter monotonic from PUBLISHED .release.json → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED len64 in env) → verify Latest/hashes → docs-publish fires on tag auto.

## Standing Gotchas
- seedmap `request_stop_barrier` 240s on hfenduleam = starvation flake (rerunnable). Other red BOTH runners = real.
- `$OWL send --reply-to` BROKEN — always plain `$OWL send <target> <self-id>`.
- MEMORY.md near 17.1KB cap — trim oldest shipped entries on next cut.

-## Session closing — resume next session (operator handoff)

+Generation 8, session resumed 2026-06-25T01:41 PDT.

-Operator: "we'll resume in the next session." Idle/on-call. I am **deployah, the release publisher leg**. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).

+deployah — release publisher leg. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).

-## This session — 5 clean cuts, all PUBLISHED

-- v0.14.0=counter30, v0.14.1=31, v0.14.2=32, v0.14.3=33, v0.15.0=34. bump-in-PR standard proven 4×. One gate-escape caught + resolved (v0.14.3 wall_b sibling).

+IDLE / on-call. Last published: v0.15.0 counter 34 @18d5045 (linux 93ed9b89, win b4950a8d). Next counter = 35.

-1. **Await the next milestone GO** — likely v0.15.1/v0.16.0 when its waves gate-pass (todlando builds → doyle gates + CHANGELOG-vets → hands me the cut). No cut in flight right now.

-2. **Watch for perri's v0.15.0 real-CC validation findings** (doyle-cued: 3 send axes + --json-payload + no-console-window + psyche-download). If she surfaces an spt-core gap → triage → doyle. If ALL GREEN → v0.15.0 acceptance-proven, no action.

+1. Next milestone GO (v0.15.1 or v0.16.0) — todlando builds → doyle gates + CHANGELOG-vets → hands cut to me.

+2. Perri real-CC v0.15.0 validation (3 send axes + --json-payload + no-console-window + psyche-download). GREEN = acceptance-proven, no action. Gap found → triage → doyle.

-## Publisher drill (proven, bump-in-PR v0.14.1+)

-Fresh release branch off CURRENT origin/main (fetch + confirm HEAD yourself — doyle's quoted bases have been stale 2×) → cherry-pick the gated commits in order, SKIP ungated "Update instructions" commits → bump Cargo.toml + Cargo.lock FIRST-PARTY spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` (traceable) → commit → **send doyle the CHANGELOG draft, HOLD push for his vet** → on vet PASS push PR → CI GREEN BOTH runners (never tag-early) → merge (no-squash, keep per-commit traceable tags) → **cross-check counter monotonic from PUBLISHED .release.json** (last=34 → next=35) → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED present in env, len64) → verify Latest/hashes → docs-publish fires on tag automatically (don't redundantly re-dispatch if tag==main).

+- Commune envelope from HFENDULEAM @ 2026-06-25T01:41 PDT: branch v0.15.0-messaging, head 582e5d10. (Context handoff only — no action item surfaced yet.)

-- seedmap `request_stop_barrier` 240s timeout on hfenduleam = STARVATION flake (rerunnable), NOT a prod collision. Other test red on BOTH runners = real, investigate (don't blind-rerun).

-- `$OWL send --reply-to` BROKEN → always plain `$OWL send <target> <self-id>`.

-- MEMORY.md index runs near the 17.1KB cap — trim oldest shipped entries when a cut adds a line.

+## Publisher Drill (bump-in-PR, proven v0.14.1+)

+Fresh release branch off CURRENT origin/main (fetch + confirm HEAD — doyle bases stale 2×) → cherry-pick gated commits in order, SKIP ungated "Update instructions" → bump Cargo.toml + Cargo.lock first-party spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` → commit → send doyle CHANGELOG draft, HOLD push for vet → vet PASS → push PR → CI GREEN BOTH runners (never tag-early) → merge no-squash → cross-check counter monotonic from PUBLISHED .release.json → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED len64 in env) → verify Latest/hashes → docs-publish fires on tag auto.

+- seedmap `request_stop_barrier` 240s on hfenduleam = starvation flake (rerunnable). Other red BOTH runners = real.

+- `$OWL send --reply-to` BROKEN — always plain `$OWL send <target> <self-id>`.

+- MEMORY.md near 17.1KB cap — trim oldest shipped entries on next cut.

<!-- spt:source=direct spt:routed_at=2026-06-25T08:41:08Z -->
## Session closing — resume next session (operator handoff)

Operator: "we'll resume in the next session." Idle/on-call. I am **deployah, the release publisher leg**. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).

## This session — 5 clean cuts, all PUBLISHED
- v0.14.0=counter30, v0.14.1=31, v0.14.2=32, v0.14.3=33, v0.15.0=34. bump-in-PR standard proven 4×. One gate-escape caught + resolved (v0.14.3 wall_b sibling).

## Immediate next steps (next session)
1. **Await the next milestone GO** — likely v0.15.1/v0.16.0 when its waves gate-pass (todlando builds → doyle gates + CHANGELOG-vets → hands me the cut). No cut in flight right now.
2. **Watch for perri's v0.15.0 real-CC validation findings** (doyle-cued: 3 send axes + --json-payload + no-console-window + psyche-download). If she surfaces an spt-core gap → triage → doyle. If ALL GREEN → v0.15.0 acceptance-proven, no action.

## Publisher drill (proven, bump-in-PR v0.14.1+)
Fresh release branch off CURRENT origin/main (fetch + confirm HEAD yourself — doyle's quoted bases have been stale 2×) → cherry-pick the gated commits in order, SKIP ungated "Update instructions" commits → bump Cargo.toml + Cargo.lock FIRST-PARTY spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` (traceable) → commit → **send doyle the CHANGELOG draft, HOLD push for his vet** → on vet PASS push PR → CI GREEN BOTH runners (never tag-early) → merge (no-squash, keep per-commit traceable tags) → **cross-check counter monotonic from PUBLISHED .release.json** (last=34 → next=35) → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED present in env, len64) → verify Latest/hashes → docs-publish fires on tag automatically (don't redundantly re-dispatch if tag==main).

## Standing gotchas
- seedmap `request_stop_barrier` 240s timeout on hfenduleam = STARVATION flake (rerunnable), NOT a prod collision. Other test red on BOTH runners = real, investigate (don't blind-rerun).
- `$OWL send --reply-to` BROKEN → always plain `$OWL send <target> <self-id>`.
- MEMORY.md index runs near the 17.1KB cap — trim oldest shipped entries when a cut adds a line.


Context absorbed. Session resumed 2026-06-25T01:41 PDT. Prior run: 5 clean cuts (counters 30–34). Current: IDLE, awaiting perri v0.15.0 validation or next milestone GO. Next counter = 35. Standing by.


[Current time: 2026-06-25T01:41:13-07:00] Inbound commune envelope at 2026-06-25 01:41:08 PDT:   machine: HFENDULEAM   project: spt-core   branch: v0.15.0-messaging   head_sha: 582e5d10b1964752378bf0c…


[Current time: 2026-06-25T01:43:33-07:00]
Inbound echo_commune envelope at 2026-06-25T01:43:33-07:00:
  machine: HFENDULEAM
  project: spt-core
  branch: v0.15.0-messaging
  head_sha: 582e5d10b1964752378bf0ccbfdea76ec938b649

<live-context>
Generation 8, session resumed 2026-06-25T01:41 PDT.

## Identity
deployah — release publisher leg. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).

## Current State
IDLE / on-call. Last published: v0.15.0 counter 34 @18d5045 (linux 93ed9b89, win b4950a8d). Next counter = 35.

## Awaiting
1. Next milestone GO (v0.15.1 or v0.16.0) — todlando builds → doyle gates + CHANGELOG-vets → hands cut to me.
2. Perri real-CC v0.15.0 validation (3 send axes + --json-payload + no-console-window + psyche-download). GREEN = acceptance-proven, no action. Gap found → triage → doyle.

## Inbound This Session
- Commune envelope from HFENDULEAM @ 2026-06-25T01:41 PDT: branch v0.15.0-messaging, head 582e5d10. (Context handoff only — no action item surfaced yet.)

## Publisher Drill (bump-in-PR, proven v0.14.1+)
Fresh release branch off CURRENT origin/main (fetch + confirm HEAD — doyle bases stale 2×) → cherry-pick gated commits in order, SKIP ungated "Update instructions" → bump Cargo.toml + Cargo.lock first-party spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` → commit → send doyle CHANGELOG draft, HOLD push for vet → vet PASS → push PR → CI GREEN BOTH runners (never tag-early) → merge no-squash → cross-check counter monotonic from PUBLISHED .release.json → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED len64 in env) → verify Latest/hashes → docs-publish fires on tag auto.

## Standing Gotchas
- seedmap `request_stop_barrier` 240s on hfenduleam = starvation flake (rerunnable). Other red BOTH runners = real.
- `$OWL send --reply-to` BROKEN — always plain `$OWL send <target> <self-id>`.
- MEMORY.md near 17.1KB cap — trim oldest shipped entries on next cut.
</live-context>
<project-context>
## spt-core — broad status + end goal (next-session resume)

**What it is:** harness-independent core for an agent ecosystem — messaging, live-agent lifecycle, terminal hosting, P2P networking, runtime-manifest harness contract. Rust workspace + single `spt` binary. Clean-room rebuild of `claude_skill_owl` (modern SPT), untethered from Claude Code.

**End goal (v1):** the complete harness-agnostic contract (runtime manifest **outbound** + `api` subcommand surface **inbound**) + lifecycle primitives, **acceptance-proven by the downstream `spt-claude-code` plugin** reaching modern-SPT feature parity while delegating all core to `spt.exe`. spt-core holds zero Claude Code conventions.

**Current arc (fast cadence — counters 30→34 this session):**
- v0.14.0 endpoint-creation-flow (multi-subnet home-at-creation + UNBOUND pre-bind attach) — perri real-CC ACCEPTANCE-PROVEN.
- v0.14.1 F-018 adapter-add non-destructive + endpoint-run home-subnet picker + netstream flake fix.
- v0.14.2 F-019 (THE #1 CC-on-Windows blocker: idle msgs typed-not-submitted → translation binary resolved vs install_dir) — perri real-CC GREEN.
- v0.14.3 raw-inject removal (spt-hosted idle = translation-binary-ONLY; no-binary → SPOOL loud, never silent pseudo-write). REQ-HAZARD-IDLE-SILENT-NONDELIVERY.
- **v0.15.0 messaging milestone** (ADR-0028): activity-gated delivery + per-message send axes (delivery-window / channel / persistence) + `--json-payload` + `spt api psyche-download` resume-context-pull verb + W1 fault-transient re-spool + Win console-flash fix. PUBLISHED counter 34, perri validation pending.

**Parked future feature:** forum/group-messaging via **always-on endpoints** (ADR-0023). First consumer = downstream `spt-discord` adapter (own repo `../spt-discord/`). Core seam = `[always-on]` supervised binary + `#` addressing; REQ-EP-8/9 inactive until a milestone activates it.

**Deferred (tracked, NOT shipped):** ephemeral evaporation for harness-relay carrier-absence (v0.15.0 only does translation-binary+TTL); psyche-download Tier-2 (drift-stamp/<current>/memformat richness); seedmap test contention-hardening.
</project-context>


1	<!-- spt:source=llm spt:routed_at=2026-06-25T08:43:28Z -->
2	Generation 8, session resumed 2026-06-25T01:41 PDT.
3
4	## Identity
5	deployah — release publisher leg. Coordinators: doyle (gates + CHANGELOG-vet), todlando (build/merge), perri (spt-claude-code adapter validator).
6
7	## Current State
8	IDLE / on-call. Last published: v0.15.0 counter 34 @18d5045 (linux 93ed9b89, win b4950a8d). Next counter = 35.
9
...
15	- Commune envelope from HFENDULEAM @ 2026-06-25T01:41 PDT: branch v0.15.0-messaging, head 582e5d10. (Context handoff only — no action item surfaced yet.)
16
17	## Publisher Drill (bump-in-PR, proven v0.14.1+)
18	Fresh release branch off CURRENT origin/main (fetch + confirm HEAD — doyle bases stale 2×) → cherry-pick gated commits in order, SKIP ungated "Update instructions" → bump Cargo.toml + Cargo.lock first-party spt-* only + CHANGELOG (= release body) + `xtask gen` → `xtask check` → commit → send doyle CHANGELOG draft, HOLD push for vet → vet PASS → push PR → CI GREEN BOTH runners (never tag-early) → merge no-squash → cross-check counter monotonic from PUBLISHED .release.json → tag → `release-publish --tag vX --key-id rel-primary-2026 --version N` (SPT_RELEASE_SEED len64 in env) → verify Latest/hashes → docs-publish fires on tag auto.
19
20	## Standing Gotchas
21	- seedmap `request_stop_barrier` 240s on hfenduleam = starvation flake (rerunnable). Other red BOTH runners = real.
22	- `$OWL send --reply-to` BROKEN — always plain `$OWL send <target> <self-id>`.
23	- MEMORY.md near 17.1KB cap — trim oldest shipped entries on next cut.


Another echo_commune envelope from HFENDULEAM, same branch/SHA as before. This is a second commune ping - same content, 2 minutes later. No new action items surfaced. Just acknowledge the pulse. No need to do anything substantial - this looks like a routine echo/heartbeat.


Second commune from HFENDULEAM, same branch/SHA (582e5d10). No delta from first envelope. Still IDLE, no action surfaced. Pulse noted.


[Current time: 2026-06-25T01:43:33-07:00] Inbound echo_commune envelope at 2026-06-25T01:43:33-07:00:   machine: HFENDULEAM   project: spt-core   branch: v0.15.0-messaging   head_sha: 582e5d10b1964752…


[Current time: 2026-06-25T09:18:35-07:00]
Inbound echo_commune envelope at 2026-06-25T09:18:35-07:00:
  machine: HFENDULEAM
  project: spt-core
  branch: v0.16.0-update-arc
  head_sha: 5501ab4d553fbf59c15819bf67ca9fc650de5daa

<live-context>
**v0.16.0 PUBLISH CYCLE LIVE.** PR #38 merged main @9e5b33b. Counter 35 cross-checked monotonic (34→35). Tag v0.16.0 on merge commit. Release-publish sequence firing (rel-primary-2026 signature, seed len64). Awaiting: hash/Latest verification → PUBLISHED state → ping doyle → GO perri v0.8.0 (min_spt_core→0.16.0).

**Perri v0.15.0 validation** still pending (parallel track, separate from v0.16.0).

**Gating summary:** PR #38 matrix GATED GREEN (run 28183352995) — both Linux/Windows test + n1-gate + traceability PASS, zero seedmap flake (no reruns needed, clean first pass).

**Leak fix captured:** doyle's gate at PR-level surfaced REQ-DIGEST-CURSOR in clap docstring on `endpoint digest --last/--after`. Senderm authored fix 9e34161 (moved tag from /// to // sibling pattern, matches --json) — authoring during publish faster than round-trip, validated by doyle.
</live-context>
<project-context>
**v0.16.0 SHIPPED (counter 35).** v0.15.0 messaging milestone remains published (counter 34, perri validation pending). Release leg IN-PROGRESS → signature + hash verification + Latest confirmation. Next: perri real-CC go-signal on v0.15.0 + v0.8.0 min-floor gate on v0.16.0.

Gate pattern validated: authoring high-gate-risk fixes during release prep (leak-fix in docstring via clap's /// → // migration) beats round-trip → doyle confirmed. CHANGELOG @700b685 = release notes verbatim, no re-scope.
</project-context>


1	<!-- spt:source=llm spt:routed_at=2026-06-25T16:18:30Z -->
2	**v0.16.0 PUBLISH CYCLE LIVE.** PR #38 merged main @9e5b33b. Counter 35 cross-checked monotonic (34→35). Tag v0.16.0 on merge commit. Release-publish sequence firing (rel-primary-2026 signature, seed len64). Awaiting: hash/Latest verification → PUBLISHED state → ping doyle → GO perri v0.8.0 (min_spt_core→0.16.0).
3
4	**Perri v0.15.0 validation** still pending (parallel track, separate from v0.16.0).
5
6	**Gating summary:** PR #38 matrix GATED GREEN (run 28183352995) — both Linux/Windows test + n1-gate + traceability PASS, zero seedmap flake (no reruns needed, clean first pass).
7
8	**Leak fix captured:** doyle's gate at PR-level surfaced REQ-DIGEST-CURSOR in clap docstring on `endpoint digest --last/--after`. Senderm authored fix 9e34161 (moved tag from /// to // sibling pattern, matches --json) — authoring during publish faster than round-trip, validated by doyle.


v0.16.0 publish cycle live. The live_context already reflects this state - it was updated. The echo_commune now shows branch v0.16.0-update-arc, head 5501ab4d. This is a new envelope vs the prior v0.15.0-messaging ones.

The live_context already shows v0.16.0 is in the publish cycle. The new commune envelope from this branch means there's update-arc work on HFENDULEAM. I need to check if this represents something new or just an echo of ongoing state.
The branch shift to v0.16.0-update-arc indicates someone's been working on the update arc since the prior v0.15.0-messaging envelopes, and with PR #38 already merged to main, this is likely post-merge context. I'm just tracking the active publish sequence now and waiting for hash/Latest verification.


New envelope: branch `v0.16.0-update-arc` @ 5501ab4d — branch changed from `v0.15.0-messaging`. Publish cycle already live per context. Tracking: hash/Latest verification → PUBLISHED → ping doyle → GO perri v0.8.0. No new action items from envelope. Monitoring.


[Current time: 2026-06-25T09:18:35-07:00] Inbound echo_commune envelope at 2026-06-25T09:18:35-07:00:   machine: HFENDULEAM   project: spt-core   branch: v0.16.0-update-arc   head_sha: 5501ab4d553fbf5…


[Current time: 2026-06-25T09:37:24-07:00]
Inbound commune envelope at 2026-06-25 09:37:21 PDT:
  machine: HFENDULEAM
  project: spt-core
  branch: v0.16.0-update-arc
  head_sha: 5501ab4d553fbf59c15819bf67ca9fc650de5daa

## Delta — v0.16.0 PUBLISHED (counter 35)

spt-core **v0.16.0 cut + published** 2026-06-25, counter **35**, LIVE + Latest + public. Tag @9e5b33b (merge PR#38). Hashes linux `e13d7c2d…` / win `f6cd39ec…`. Signed fresh (rel-primary-2026), monotonic 34→35, docs-publish GREEN on tag. doyle gated the matrix clean first-pass (zero flake) → CLEAR → I published → confirmed hashes back to doyle.

**Publisher catch this cut:** `xtask check` (docs-token gate) was RED on doyle's gated branch — `[impl->REQ-DIGEST-CURSOR]` tag leaked into clap `///` help for `endpoint digest --last/--after`. CI would have redded the matrix. Caught in publisher pre-flight, fixed (commit 9e34161: tag `///`→`//`), doyle gated ACCEPTED, rode the cut. LESSON locked: publisher drill MUST run xtask gen+check+traceable locally even when upstream claims green — "no-drift" (gen) ≠ "check" (token gate).

**State:** IDLE / on-call. Next counter = **36**. Awaiting: (1) doyle fires perri GO (claude-spt v0.8.0, min_spt_core→0.16.0) — his to send; (2) perri real-CC v0.16.0 validation; (3) next milestone GO. Binary gotcha: v0.16.0 send dropped self-id positional (`spt send <target>` only); coordinators live on `$OWL` (cplugs owl.exe) not spt-core endpoints — reach via `$OWL send <target> deployah`.


1	<!-- spt:source=direct spt:routed_at=2026-06-25T16:37:21Z -->
2	## Delta — v0.16.0 PUBLISHED (counter 35)
3
4	spt-core **v0.16.0 cut + published** 2026-06-25, counter **35**, LIVE + Latest + public. Tag @9e5b33b (merge PR#38). Hashes linux `e13d7c2d…` / win `f6cd39ec…`. Signed fresh (rel-primary-2026), monotonic 34→35, docs-publish GREEN on tag. doyle gated the matrix clean first-pass (zero flake) → CLEAR → I published → confirmed hashes back to doyle.
5
6	**Publisher catch this cut:** `xtask check` (docs-token gate) was RED on doyle's gated branch — `[impl->REQ-DIGEST-CURSOR]` tag leaked into clap `///` help for `endpoint digest --last/--after`. CI would have redded the matrix. Caught in publisher pre-flight, fixed (commit 9e34161: tag `///`→`//`), doyle gated ACCEPTED, rode the cut. LESSON locked: publisher drill MUST run xtask gen+check+traceable locally even when upstream claims green — "no-drift" (gen) ≠ "check" (token gate).
7
8	**State:** IDLE / on-call. Next counter = **36**. Awaiting: (1) doyle fires perri GO (claude-spt v0.8.0, min_spt_core→0.16.0) — his to send; (2) perri real-CC v0.16.0 validation; (3) next milestone GO. Binary gotcha: v0.16.0 send dropped self-id positional (`spt send <target>` only); coordinators live on `$OWL` (cplugs owl.exe) not spt-core endpoints — reach via `$OWL send <target> deployah`.


v0.16.0 PUBLISHED confirmed. Context absorbed from live_context update. Delta commune confirms the published state. Need to update memory about v0.16.0 status and the publisher catch lesson.

Let me update the relevant memory files and MEMORY.md.


v0.16.0 PUBLISHED confirmed — counter 35, hashes linux `e13d7c2d` / win `f6cd39ec`. Context absorbed. Updating memory.


1	---
2	name: spt-core-v0160-status
3	description: spt-core v0.16.0 build leg complete; 6 waves gated; awaiting doyle release PR + CI matrix
4	metadata:
5	  node_type: memory
6	  type: project
7	  originSessionId: 28f99153-85c5-482c-99d9-ad6f34f9e639
8	---
9
10	Build leg COMPLETE @2335a236 (2026-06-25). All 6 waves doyle-gated, branch pushed to origin.
11
12	- W1 manifest-subst + translation-command @1590857
13	- W2 composite [update.post] @6db75f9
14	- W3 reply-to-remove + empty-create @a0f8979
15	- W4 global --json + 14 DTOs @6550106
16	- W5 digest-cursor (seq/partial) @74aec80
17	- W6-code rc-identity + json-int @2335a23
18
19	**Why:** Post-v0.15.0 feature arc. New REQs: REQ-ADAPTER-UPDATE-POST, REQ-CLI-JSON, REQ-DIGEST-CURSOR, REQ-RC-IDENTITY, REQ-RUN-EMPTY-CREATE, REQ-SEND-REPLYTO-REMOVE.
20
21	**How to apply:** Next action is reactive: doyle matrix findings → triage; post-publish record counter 35 + hashes. twohost rig skipped (no cross-host seam). perri then lands claude-spt v0.8.0 (min_spt_core→0.16.0).
22

---
name: spt-core-v0160-status
description: spt-core v0.16.0 build leg complete; 6 waves gated; awaiting doyle release PR + CI matrix
metadata:
  node_type: memory
  type: project
  originSessionId: 28f99153-85c5-482c-99d9-ad6f34f9e639
---

Build leg COMPLETE @2335a236 (2026-06-25). All 6 waves doyle-gated, branch pushed to origin.

- W1 manifest-subst + translation-command @1590857
- W2 composite [update.post] @6db75f9
- W3 reply-to-remove + empty-create @a0f8979
- W4 global --json + 14 DTOs @6550106
- W5 digest-cursor (seq/partial) @74aec80
- W6-code rc-identity + json-int @2335a23

**Why:** Post-v0.15.0 feature arc. New REQs: REQ-ADAPTER-UPDATE-POST, REQ-CLI-JSON, REQ-DIGEST-CURSOR, REQ-RC-IDENTITY, REQ-RUN-EMPTY-CREATE, REQ-SEND-REPLYTO-REMOVE.

**How to apply:** Next action is reactive: doyle matrix findings → triage; post-publish record counter 35 + hashes. twohost rig skipped (no cross-host seam). perri then lands claude-spt v0.8.0 (min_spt_core→0.16.0).


1	# Memory Index
2
3	- [REBNO Navi Origin Footgun](rebno_navi_origin.md) — Phaser Navi uses (0.5,1) bottom-center origin vs legacy (0,0) top-left; any position port must compensate or sprite drifts right+down
4	- [Gravity Deploy Procedure](reference_gravity_deploy.md) — ssh david@100.100.62.43, build in ~/spt-core-deploy, use setsid for daemon/listener, ~1min first-sync lag after restart
5	- [spt-core Workflow](feedback_spt_core_workflow.md) — hand-authored M*-PLAN/D*-PLAN docs + direct execution; no GSD slash-command pipeline
6	- [spt-core Restoration Status](project_spt_core_restoration.md) — ARC CLOSED; v0.5.0 fleet seamless both OSes (Linux no-bounce first proven 2026-06-14); next = spt-claude-code
7	- [pump-ipc-deadline Fix](pump-ipc-deadline-fix.md) — MERGED @ 4d8b810; Windows named-pipe read-timeout requires reader-thread+channel (set_nonblocking=PIPE_NOWAIT corrupts); broker-B row deferred
8	- [doyle↔todlando Role Flip](feedback_doyle_todlando_role_flip.md) — doyle author+reviewer / todlando executor validated on pump-seam (G1/G2/G3, zero rework)
9	- [owl Tooling Gotchas](feedback_owl_tooling_gotchas.md) — $OWL send needs stdin pipe; $LIVE must be unquoted; bash not PowerShell for git commit
10	- [sauna Project Status](project_sauna_status.md) — M4 nearly done (8a1d0c4); firmware now available layer; next = firmware UX work + step 5.5/6
11	- [spt-core M9 Status](project_spt_core_m9.md) — CLOSED @ 22a9b6f, v0.5.0 shipped + fleet rolled; next = spt-claude-code
12	- [spt-core Agent Roles](feedback_spt_agent_roles.md) — deployah=sign+publish; doyle=gate reviewer; todlando=executor; roles must not be conflated
13	- [Linear Stack Merge Gotcha](feedback_linear_stack_merge.md) — never --delete-branch mid-stack; hold deletions until tip merged
14	- [spt-core M10 Status](project_spt_core_m10.md) — SHIPPED v0.6.0 @ 6a9ff4e (counter 11, 2026-06-14); spt-claude-code next
15	- [spt-core M12 Status](project_spt_core_m12.md) — FULLY GATED + v0.7.0/v0.7.1 SHIPPED (counters 12/13); ADR-0020 closed; perri unblocked
16	- [spt-core M11 Status](project_spt_core_m11.md) — FULLY GATED + v0.8.0/v0.8.1 SHIPPED (counters 16/17); ADR-0020 closed; perri unblocked + dogfooding
17	- [spt-claude-code Status](project_spt_claude_code.md) — v0.3.0 SHIPPED + dogfood-verified; parity arc CLOSED; spt-core v0.11.0 live (counter 24); open Q min_spt_core floor; sptc→spt gated on owl-retire
18	- [spt Bus Etiquette](feedback_spt_bus_etiquette.md) — pure ACK from doyle/todlando is TERMINAL; do not reply or it loops the bus
19	- [Gate Oscillation Rule](feedback_gate_oscillation.md) — lock first correct gating decision; treat new data as confirm-or-blocker, never re-open sound ruling across async crossings
20	- [Delegate Build Preflight Hang](feedback_delegate_build_preflight.md) — bg build agents hang on full spt-daemon integration suite; use targeted units only; check liveness via transcript mtime
21	- [Semantic Redefinition Fixture Sweep](feedback_semantic_redefinition_fixture_sweep.md) — a fix that redefines behavior semantics regresses ALL fixtures using old meaning; sweep them, trust CI both-runners over local race-win
22	- [Code-Read Misses Mutex Deadlock](feedback_code_read_misses_mutex_deadlock.md) — code-read gating blind to lock-contention deadlocks; only full runtime seam sweep (attach+broker+lifecycle) exposes them
23	- [spt-core v0.12.0 Lifecycle Milestone](project_spt_core_m13.md) — SHIPPED counter 25; all 7 lifecycle/liveness REQs delivered; endpoint-run usable; key lessons: mutex deadlock, shared-box triple-gate kill
24	- [spt-core v0.12.1 PATCH](project_spt_core_m14.md) — SHIPPED counter 26; WMI viewer-close-detach, attach-wedge proof, help-md, picker/E1 fixes; arc closed
25	- [spt-core v0.13.0 Milestone](project_spt_core_v0130.md) — FULLY GATED @bf32b8c; HITL + PR + deployah pending; bug tail (window/3+4/VT-translate) all cleared
26	- [CHANGELOG Scope Rule](changelog-scope-vs-commit-range.md) — cover every affected user-facing surface; bullet = surface delta not commit; commit log is checklist not quota
27	- [spt-core v0.13.0 Milestone](project_spt_core_v0130.md) — SHIPPED counter 27 @ e980b72; viewer-drain wedge + attach-IPC-deadline harden; perri + translate-proof follow-ons done
28	- [spt-core v0.13.2 Status](project_spt_core_v0132.md) — SHIPPED counter 29 @ 2bb9c8f (2026-06-23); W1–W6 complete; arc closed
29	- [spt-core v0.14.0 Status](project_spt_core_v0140.md) — FULLY CLOSED counter 30 @6ba875e (2026-06-23); perri multi-subnet GREEN; next = F-018 + netstream flake (operator greenlight pending)
30	- [spt-core v0.14.1 Status](project_spt_core_v0141.md) — SHIPPED counter 31 @46289ab (2026-06-23); F-018 + picker-home; arc closed
31	- [Release Bump Efficiency](feedback_release_bump_efficiency.md) — fold version/CHANGELOG/lock bump inside release PR; separate bump push = redundant CI pass (~11min wasted)
32	- [gh run watch False-Green](feedback_gh_run_watch_false_green.md) — rerun+short-sleep watch attaches to stale attempt; verify per-attempt conclusion explicitly
33	- [Flaky Gate Attribution Prints](feedback_flaky_gate_attribution_prints.md) — keep cheap source-attribution prints in flaky gates; they refute wrong root theories before real one lands
34	- [spt-core v0.13.2 Build Lessons](feedback_spt_core_v0132.md) — broker≠brain process boundary (no cross-process Arc); Windows rename-over-existing fails; dev daemon kill scoped only; test bins live_adapt_* not live_update_*
35	- [Bump-in-PR Flow](feedback_bump_in_pr_flow.md) — v0.14.1+ bump rides inside release PR (not separate push); v0.14.0 = last old-flow; counter from published metadata at cut
36	- [spt-core v0.14.2 Status](project_spt_core_v0142.md) — SHIPPED counter 32 @365fb0c (2026-06-23); F-019 + ADR-0022 amendment; perri GREEN (arc closed)
37	- [spt-core v0.14.3 Status](project_spt_core_v0143.md) — PUBLISHED counter 33 @90852bf (2026-06-24); raw-inject removal; linux 47d2edd2/win 701ed121; arc closed
38	- [spt-core v0.15.0 Status](project_spt_core_v0150.md) — PUBLISHED counter 34 @18d5045 (linux 93ed9b89/win b4950a8d); perri real-CC validation pending; seedmap flake follow-up deferred
39	- [Plausible ≠ Grounded](feedback_plausible_not_grounded.md) — trace full isolation chain before asserting collision/hazard; process-list observation alone is insufficient
40	- [Spawn-Before-Diagnose](feedback_spawn_before_diagnose.md) — confirm adapter binary SPAWNED before behavioral diagnosis; F-019 wasted 6+ probe rounds on ghost (binary never ran)
41	- [Full-Crate Gate Required](feedback_full_crate_gate_required.md) — shared-seam changes need full-crate nextest; shallow gate missed wall_b 240s hang (stale PTY-echo wait under new spool semantics)
42	- [Windows Exe Name Installer Detection](feedback_windows_exe_name_installer_detection.md) — test/fixture bins named "update"/"install"/"setup" → os-error-740 on Windows; use neutral names (e.g. post_step)
43	- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — build leg COMPLETE @2335a236 (2026-06-25); 6 waves gated; doyle release PR + CI matrix pending; counter 35 expected
44

# Memory Index

- [REBNO Navi Origin Footgun](rebno_navi_origin.md) — Phaser Navi uses (0.5,1) bottom-center origin vs legacy (0,0) top-left; any position port must compensate or sprite drifts right+down
- [Gravity Deploy Procedure](reference_gravity_deploy.md) — ssh david@100.100.62.43, build in ~/spt-core-deploy, use setsid for daemon/listener, ~1min first-sync lag after restart
- [spt-core Workflow](feedback_spt_core_workflow.md) — hand-authored M*-PLAN/D*-PLAN docs + direct execution; no GSD slash-command pipeline
- [spt-core Restoration Status](project_spt_core_restoration.md) — ARC CLOSED; v0.5.0 fleet seamless both OSes (Linux no-bounce first proven 2026-06-14); next = spt-claude-code
- [pump-ipc-deadline Fix](pump-ipc-deadline-fix.md) — MERGED @ 4d8b810; Windows named-pipe read-timeout requires reader-thread+channel (set_nonblocking=PIPE_NOWAIT corrupts); broker-B row deferred
- [doyle↔todlando Role Flip](feedback_doyle_todlando_role_flip.md) — doyle author+reviewer / todlando executor validated on pump-seam (G1/G2/G3, zero rework)
- [owl Tooling Gotchas](feedback_owl_tooling_gotchas.md) — $OWL send needs stdin pipe; $LIVE must be unquoted; bash not PowerShell for git commit
- [sauna Project Status](project_sauna_status.md) — M4 nearly done (8a1d0c4); firmware now available layer; next = firmware UX work + step 5.5/6
- [spt-core M9 Status](project_spt_core_m9.md) — CLOSED @ 22a9b6f, v0.5.0 shipped + fleet rolled; next = spt-claude-code
- [spt-core Agent Roles](feedback_spt_agent_roles.md) — deployah=sign+publish; doyle=gate reviewer; todlando=executor; roles must not be conflated
- [Linear Stack Merge Gotcha](feedback_linear_stack_merge.md) — never --delete-branch mid-stack; hold deletions until tip merged
- [spt-core M10 Status](project_spt_core_m10.md) — SHIPPED v0.6.0 @ 6a9ff4e (counter 11, 2026-06-14); spt-claude-code next
- [spt-core M12 Status](project_spt_core_m12.md) — FULLY GATED + v0.7.0/v0.7.1 SHIPPED (counters 12/13); ADR-0020 closed; perri unblocked
- [spt-core M11 Status](project_spt_core_m11.md) — FULLY GATED + v0.8.0/v0.8.1 SHIPPED (counters 16/17); ADR-0020 closed; perri unblocked + dogfooding
- [spt-claude-code Status](project_spt_claude_code.md) — v0.3.0 SHIPPED + dogfood-verified; parity arc CLOSED; spt-core v0.11.0 live (counter 24); open Q min_spt_core floor; sptc→spt gated on owl-retire
- [spt Bus Etiquette](feedback_spt_bus_etiquette.md) — pure ACK from doyle/todlando is TERMINAL; do not reply or it loops the bus
- [Gate Oscillation Rule](feedback_gate_oscillation.md) — lock first correct gating decision; treat new data as confirm-or-blocker, never re-open sound ruling across async crossings
- [Delegate Build Preflight Hang](feedback_delegate_build_preflight.md) — bg build agents hang on full spt-daemon integration suite; use targeted units only; check liveness via transcript mtime
- [Semantic Redefinition Fixture Sweep](feedback_semantic_redefinition_fixture_sweep.md) — a fix that redefines behavior semantics regresses ALL fixtures using old meaning; sweep them, trust CI both-runners over local race-win
- [Code-Read Misses Mutex Deadlock](feedback_code_read_misses_mutex_deadlock.md) — code-read gating blind to lock-contention deadlocks; only full runtime seam sweep (attach+broker+lifecycle) exposes them
- [spt-core v0.12.0 Lifecycle Milestone](project_spt_core_m13.md) — SHIPPED counter 25; all 7 lifecycle/liveness REQs delivered; endpoint-run usable; key lessons: mutex deadlock, shared-box triple-gate kill
- [spt-core v0.12.1 PATCH](project_spt_core_m14.md) — SHIPPED counter 26; WMI viewer-close-detach, attach-wedge proof, help-md, picker/E1 fixes; arc closed
- [spt-core v0.13.0 Milestone](project_spt_core_v0130.md) — FULLY GATED @bf32b8c; HITL + PR + deployah pending; bug tail (window/3+4/VT-translate) all cleared
- [CHANGELOG Scope Rule](changelog-scope-vs-commit-range.md) — cover every affected user-facing surface; bullet = surface delta not commit; commit log is checklist not quota
- [spt-core v0.13.0 Milestone](project_spt_core_v0130.md) — SHIPPED counter 27 @ e980b72; viewer-drain wedge + attach-IPC-deadline harden; perri + translate-proof follow-ons done
- [spt-core v0.13.2 Status](project_spt_core_v0132.md) — SHIPPED counter 29 @ 2bb9c8f (2026-06-23); W1–W6 complete; arc closed
- [spt-core v0.14.0 Status](project_spt_core_v0140.md) — FULLY CLOSED counter 30 @6ba875e (2026-06-23); perri multi-subnet GREEN; next = F-018 + netstream flake (operator greenlight pending)
- [spt-core v0.14.1 Status](project_spt_core_v0141.md) — SHIPPED counter 31 @46289ab (2026-06-23); F-018 + picker-home; arc closed
- [Release Bump Efficiency](feedback_release_bump_efficiency.md) — fold version/CHANGELOG/lock bump inside release PR; separate bump push = redundant CI pass (~11min wasted)
- [gh run watch False-Green](feedback_gh_run_watch_false_green.md) — rerun+short-sleep watch attaches to stale attempt; verify per-attempt conclusion explicitly
- [Flaky Gate Attribution Prints](feedback_flaky_gate_attribution_prints.md) — keep cheap source-attribution prints in flaky gates; they refute wrong root theories before real one lands
- [spt-core v0.13.2 Build Lessons](feedback_spt_core_v0132.md) — broker≠brain process boundary (no cross-process Arc); Windows rename-over-existing fails; dev daemon kill scoped only; test bins live_adapt_* not live_update_*
- [Bump-in-PR Flow](feedback_bump_in_pr_flow.md) — v0.14.1+ bump rides inside release PR (not separate push); v0.14.0 = last old-flow; counter from published metadata at cut
- [spt-core v0.14.2 Status](project_spt_core_v0142.md) — SHIPPED counter 32 @365fb0c (2026-06-23); F-019 + ADR-0022 amendment; perri GREEN (arc closed)
- [spt-core v0.14.3 Status](project_spt_core_v0143.md) — PUBLISHED counter 33 @90852bf (2026-06-24); raw-inject removal; linux 47d2edd2/win 701ed121; arc closed
- [spt-core v0.15.0 Status](project_spt_core_v0150.md) — PUBLISHED counter 34 @18d5045 (linux 93ed9b89/win b4950a8d); perri real-CC validation pending; seedmap flake follow-up deferred
- [Plausible ≠ Grounded](feedback_plausible_not_grounded.md) — trace full isolation chain before asserting collision/hazard; process-list observation alone is insufficient
- [Spawn-Before-Diagnose](feedback_spawn_before_diagnose.md) — confirm adapter binary SPAWNED before behavioral diagnosis; F-019 wasted 6+ probe rounds on ghost (binary never ran)
- [Full-Crate Gate Required](feedback_full_crate_gate_required.md) — shared-seam changes need full-crate nextest; shallow gate missed wall_b 240s hang (stale PTY-echo wait under new spool semantics)
- [Windows Exe Name Installer Detection](feedback_windows_exe_name_installer_detection.md) — test/fixture bins named "update"/"install"/"setup" → os-error-740 on Windows; use neutral names (e.g. post_step)
- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — build leg COMPLETE @2335a236 (2026-06-25); 6 waves gated; doyle release PR + CI matrix pending; counter 35 expected


Now I need to:
1. Update `project_spt_core_v0160.md` to reflect PUBLISHED status (counter 35)
2. Add a new feedback memory for the publisher catch lesson (`xtask check` vs `xtask gen`)
3. Update MEMORY.md to reflect the v0.16.0 status change and add the new feedback entry

Let me also check if there's a feedback memory file for the publisher preflight lesson I should create.


Edit

---
name: spt-core-v0160-status
description: spt-core v0.16.0 build leg complete; 6 waves gated; awaiting doyle release PR + CI matrix
metadata:
  node_type: memory
  type: project
  originSessionId: 28f99153-85c5-482c-99d9-ad6f34f9e639
---

Build leg COMPLETE @2335a236 (2026-06-25). All 6 waves doyle-gated, branch pushed to origin.

- W1 manifest-subst + translation-command @1590857
- W2 composite [update.post] @6db75f9
- W3 reply-to-remove + empty-create @a0f8979
- W4 global --json + 14 DTOs @6550106
- W5 digest-cursor (seq/partial) @74aec80
- W6-code rc-identity + json-int @2335a23

**Why:** Post-v0.15.0 feature arc. New REQs: REQ-ADAPTER-UPDATE-POST, REQ-CLI-JSON, REQ-DIGEST-CURSOR, REQ-RC-IDENTITY, REQ-RUN-EMPTY-CREATE, REQ-SEND-REPLYTO-REMOVE.

**How to apply:** Next action is reactive: doyle matrix findings → triage; post-publish record counter 35 + hashes. twohost rig skipped (no cross-host seam). perri then lands claude-spt v0.8.0 (min_spt_core→0.16.0).

---
name: spt-core-v0160-status
description: spt-core v0.16.0 PUBLISHED counter 35 @9e5b33b (2026-06-25); 6 waves gated; perri v0.8.0 pending
metadata:
  node_type: memory
  type: project
  originSessionId: 28f99153-85c5-482c-99d9-ad6f34f9e639
---

PUBLISHED counter 35 @9e5b33b (merge PR#38), 2026-06-25. Hashes: linux `e13d7c2d…` / win `f6cd39ec…`. Signed rel-primary-2026. Docs-publish GREEN on tag. Zero seedmap flake — clean first-pass matrix.

- W1 manifest-subst + translation-command @1590857
- W2 composite [update.post] @6db75f9
- W3 reply-to-remove + empty-create @a0f8979
- W4 global --json + 14 DTOs @6550106
- W5 digest-cursor (seq/partial) @74aec80
- W6-code rc-identity + json-int @2335a23
- Publisher fix: 9e34161 (REQ-DIGEST-CURSOR tag `///`→`//` in clap help)

**Why:** Post-v0.15.0 feature arc. New REQs: REQ-ADAPTER-UPDATE-POST, REQ-CLI-JSON, REQ-DIGEST-CURSOR, REQ-RC-IDENTITY, REQ-RUN-EMPTY-CREATE, REQ-SEND-REPLYTO-REMOVE.

**How to apply:** Arc closed. Next = perri real-CC validation + claude-spt v0.8.0 (min_spt_core→0.16.0). Next counter = 36. Breaking: `spt send` dropped self-id positional — `spt send <target>` only.


[Current time: 2026-06-25T09:37:24-07:00] Inbound commune envelope at 2026-06-25 09:37:21 PDT:   machine: HFENDULEAM   project: spt-core   branch: v0.16.0-update-arc   head_sha: 5501ab4d553fbf59c15819…


The file C:\Users\decid\.ccs\instances\bigscreen\projects\C--Users-decid-AppData-Local-spt-psyches-tracked\memory\project_spt_core_v0160.md has been updated successfully. (file state is current in your context — no need to Read it back)

---
name: spt-core-v0160-status
description: spt-core v0.16.0 build leg complete; 6 waves gated; awaiting doyle release PR + CI matrix
metadata:
  node_type: memory
  type: project
  originSessionId: 28f99153-85c5-482c-99d9-ad6f34f9e639
---

Build leg COMPLETE @2335a236 (2026-06-25). All 6 waves doyle-gated, branch pushed to origin.

- W1 manifest-subst + translation-command @1590857
- W2 composite [update.post] @6db75f9
- W3 reply-to-remove + empty-create @a0f8979
- W4 global --json + 14 DTOs @6550106
- W5 digest-cursor (seq/partial) @74aec80
- W6-code rc-identity + json-int @2335a23

**Why:** Post-v0.15.0 feature arc. New REQs: REQ-ADAPTER-UPDATE-POST, REQ-CLI-JSON, REQ-DIGEST-CURSOR, REQ-RC-IDENTITY, REQ-RUN-EMPTY-CREATE, REQ-SEND-REPLYTO-REMOVE.

**How to apply:** Next action is reactive: doyle matrix findings → triage; post-publish record counter 35 + hashes. twohost rig skipped (no cross-host seam). perri then lands claude-spt v0.8.0 (min_spt_core→0.16.0).

---
name: spt-core-v0160-status
description: spt-core v0.16.0 PUBLISHED counter 35 @9e5b33b (2026-06-25); 6 waves gated; perri v0.8.0 pending
metadata:
  node_type: memory
  type: project
  originSessionId: 28f99153-85c5-482c-99d9-ad6f34f9e639
---

PUBLISHED counter 35 @9e5b33b (merge PR#38), 2026-06-25. Hashes: linux `e13d7c2d…` / win `f6cd39ec…`. Signed rel-primary-2026. Docs-publish GREEN on tag. Zero seedmap flake — clean first-pass matrix.

- W1 manifest-subst + translation-command @1590857
- W2 composite [update.post] @6db75f9
- W3 reply-to-remove + empty-create @a0f8979
- W4 global --json + 14 DTOs @6550106
- W5 digest-cursor (seq/partial) @74aec80
- W6-code rc-identity + json-int @2335a23
- Publisher fix: 9e34161 (REQ-DIGEST-CURSOR tag `///`→`//` in clap help)

**Why:** Post-v0.15.0 feature arc. New REQs: REQ-ADAPTER-UPDATE-POST, REQ-CLI-JSON, REQ-DIGEST-CURSOR, REQ-RC-IDENTITY, REQ-RUN-EMPTY-CREATE, REQ-SEND-REPLYTO-REMOVE.

**How to apply:** Arc closed. Next = perri real-CC validation + claude-spt v0.8.0 (min_spt_core→0.16.0). Next counter = 36. Breaking: `spt send` dropped self-id positional — `spt send <target>` only.

-description: spt-core v0.16.0 build leg complete; 6 waves gated; awaiting doyle release PR + CI matrix

+description: spt-core v0.16.0 PUBLISHED counter 35 @9e5b33b (2026-06-25); 6 waves gated; perri v0.8.0 pending

-Build leg COMPLETE @2335a236 (2026-06-25). All 6 waves doyle-gated, branch pushed to origin.

+PUBLISHED counter 35 @9e5b33b (merge PR#38), 2026-06-25. Hashes: linux `e13d7c2d…` / win `f6cd39ec…`. Signed rel-primary-2026. Docs-publish GREEN on tag. Zero seedmap flake — clean first-pass matrix.

+- Publisher fix: 9e34161 (REQ-DIGEST-CURSOR tag `///`→`//` in clap help)

-**How to apply:** Next action is reactive: doyle matrix findings → triage; post-publish record counter 35 + hashes. twohost rig skipped (no cross-host seam). perri then lands claude-spt v0.8.0 (min_spt_core→0.16.0).

+**How to apply:** Arc closed. Next = perri real-CC validation + claude-spt v0.8.0 (min_spt_core→0.16.0). Next counter = 36. Breaking: `spt send` dropped self-id positional — `spt send <target>` only.


Now add feedback memory for the publisher preflight lesson:


Write

---
name: publisher-preflight-check
description: Publisher drill must run xtask gen+check+traceable locally even when upstream claims green — gen≠check
metadata:
  node_type: memory
  type: feedback
---

Always run `xtask gen` + `xtask check` + traceability locally during publisher pre-flight, even when doyle's gated branch is claimed green.

**Why:** v0.16.0 cut — `[impl->REQ-DIGEST-CURSOR]` tag leaked into clap `///` docstring for `endpoint digest --last/--after`. `xtask gen` (no-drift check) passed; `xtask check` (token gate) would have redded CI matrix. Caught in publisher pre-flight; fix authored (commit 9e34161, `///`→`//`) and doyle gated ACCEPTED before push.

**How to apply:** "no-drift" (gen) ≠ "check" (token gate). They are distinct gates. Both must be run locally before pushing the release branch. Authoring a leak-fix during publish is faster than round-trip if caught pre-push.


File created successfully at: C:\Users\decid\.ccs\instances\bigscreen\projects\C--Users-decid-AppData-Local-spt-psyches-tracked\memory\feedback_publisher_preflight_check.md (file state is current in your context — no need to Read it back)

---
name: publisher-preflight-check
description: Publisher drill must run xtask gen+check+traceable locally even when upstream claims green — gen≠check
metadata:
  node_type: memory
  type: feedback
  originSessionId: dda82660-08cb-4513-b982-a35a00a60d7e
---

Always run `xtask gen` + `xtask check` + traceability locally during publisher pre-flight, even when doyle's gated branch is claimed green.

**Why:** v0.16.0 cut — `[impl->REQ-DIGEST-CURSOR]` tag leaked into clap `///` docstring for `endpoint digest --last/--after`. `xtask gen` (no-drift check) passed; `xtask check` (token gate) would have redded CI matrix. Caught in publisher pre-flight; fix authored (commit 9e34161, `///`→`//`) and doyle gated ACCEPTED before push.

**How to apply:** "no-drift" (gen) ≠ "check" (token gate). They are distinct gates. Both must be run locally before pushing the release branch. Authoring a leak-fix during publish is faster than round-trip if caught pre-push.


Edit

- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — build leg COMPLETE @2335a236 (2026-06-25); 6 waves gated; doyle release PR + CI matrix pending; counter 35 expected

- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — PUBLISHED counter 35 @9e5b33b (linux e13d7c2d/win f6cd39ec, 2026-06-25); perri v0.8.0 pending; arc closed
- [Publisher Preflight Check](feedback_publisher_preflight_check.md) — run xtask gen+check+traceable locally even when upstream claims green; gen≠check (v0.16.0 token-gate leak caught pre-push)


The file C:\Users\decid\.ccs\instances\bigscreen\projects\C--Users-decid-AppData-Local-spt-psyches-tracked\memory\MEMORY.md has been updated successfully. (file state is current in your context — no need to Read it back)

- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — PUBLISHED counter 35 @9e5b33b (linux e13d7c2d/win f6cd39ec, 2026-06-25); perri v0.8.0 pending; arc closed
- [Publisher Preflight Check](feedback_publisher_preflight_check.md) — run xtask gen+check+traceable locally even when upstream claims green; gen≠check (v0.16.0 token-gate leak caught pre-push)

# Memory Index

- [REBNO Navi Origin Footgun](rebno_navi_origin.md) — Phaser Navi uses (0.5,1) bottom-center origin vs legacy (0,0) top-left; any position port must compensate or sprite drifts right+down
- [Gravity Deploy Procedure](reference_gravity_deploy.md) — ssh david@100.100.62.43, build in ~/spt-core-deploy, use setsid for daemon/listener, ~1min first-sync lag after restart
- [spt-core Workflow](feedback_spt_core_workflow.md) — hand-authored M*-PLAN/D*-PLAN docs + direct execution; no GSD slash-command pipeline
- [spt-core Restoration Status](project_spt_core_restoration.md) — ARC CLOSED; v0.5.0 fleet seamless both OSes (Linux no-bounce first proven 2026-06-14); next = spt-claude-code
- [pump-ipc-deadline Fix](pump-ipc-deadline-fix.md) — MERGED @ 4d8b810; Windows named-pipe read-timeout requires reader-thread+channel (set_nonblocking=PIPE_NOWAIT corrupts); broker-B row deferred
- [doyle↔todlando Role Flip](feedback_doyle_todlando_role_flip.md) — doyle author+reviewer / todlando executor validated on pump-seam (G1/G2/G3, zero rework)
- [owl Tooling Gotchas](feedback_owl_tooling_gotchas.md) — $OWL send needs stdin pipe; $LIVE must be unquoted; bash not PowerShell for git commit
- [sauna Project Status](project_sauna_status.md) — M4 nearly done (8a1d0c4); firmware now available layer; next = firmware UX work + step 5.5/6
- [spt-core M9 Status](project_spt_core_m9.md) — CLOSED @ 22a9b6f, v0.5.0 shipped + fleet rolled; next = spt-claude-code
- [spt-core Agent Roles](feedback_spt_agent_roles.md) — deployah=sign+publish; doyle=gate reviewer; todlando=executor; roles must not be conflated
- [Linear Stack Merge Gotcha](feedback_linear_stack_merge.md) — never --delete-branch mid-stack; hold deletions until tip merged
- [spt-core M10 Status](project_spt_core_m10.md) — SHIPPED v0.6.0 @ 6a9ff4e (counter 11, 2026-06-14); spt-claude-code next
- [spt-core M12 Status](project_spt_core_m12.md) — FULLY GATED + v0.7.0/v0.7.1 SHIPPED (counters 12/13); ADR-0020 closed; perri unblocked
- [spt-core M11 Status](project_spt_core_m11.md) — FULLY GATED + v0.8.0/v0.8.1 SHIPPED (counters 16/17); ADR-0020 closed; perri unblocked + dogfooding
- [spt-claude-code Status](project_spt_claude_code.md) — v0.3.0 SHIPPED + dogfood-verified; parity arc CLOSED; spt-core v0.11.0 live (counter 24); open Q min_spt_core floor; sptc→spt gated on owl-retire
- [spt Bus Etiquette](feedback_spt_bus_etiquette.md) — pure ACK from doyle/todlando is TERMINAL; do not reply or it loops the bus
- [Gate Oscillation Rule](feedback_gate_oscillation.md) — lock first correct gating decision; treat new data as confirm-or-blocker, never re-open sound ruling across async crossings
- [Delegate Build Preflight Hang](feedback_delegate_build_preflight.md) — bg build agents hang on full spt-daemon integration suite; use targeted units only; check liveness via transcript mtime
- [Semantic Redefinition Fixture Sweep](feedback_semantic_redefinition_fixture_sweep.md) — a fix that redefines behavior semantics regresses ALL fixtures using old meaning; sweep them, trust CI both-runners over local race-win
- [Code-Read Misses Mutex Deadlock](feedback_code_read_misses_mutex_deadlock.md) — code-read gating blind to lock-contention deadlocks; only full runtime seam sweep (attach+broker+lifecycle) exposes them
- [spt-core v0.12.0 Lifecycle Milestone](project_spt_core_m13.md) — SHIPPED counter 25; all 7 lifecycle/liveness REQs delivered; endpoint-run usable; key lessons: mutex deadlock, shared-box triple-gate kill
- [spt-core v0.12.1 PATCH](project_spt_core_m14.md) — SHIPPED counter 26; WMI viewer-close-detach, attach-wedge proof, help-md, picker/E1 fixes; arc closed
- [spt-core v0.13.0 Milestone](project_spt_core_v0130.md) — FULLY GATED @bf32b8c; HITL + PR + deployah pending; bug tail (window/3+4/VT-translate) all cleared
- [CHANGELOG Scope Rule](changelog-scope-vs-commit-range.md) — cover every affected user-facing surface; bullet = surface delta not commit; commit log is checklist not quota
- [spt-core v0.13.0 Milestone](project_spt_core_v0130.md) — SHIPPED counter 27 @ e980b72; viewer-drain wedge + attach-IPC-deadline harden; perri + translate-proof follow-ons done
- [spt-core v0.13.2 Status](project_spt_core_v0132.md) — SHIPPED counter 29 @ 2bb9c8f (2026-06-23); W1–W6 complete; arc closed
- [spt-core v0.14.0 Status](project_spt_core_v0140.md) — FULLY CLOSED counter 30 @6ba875e (2026-06-23); perri multi-subnet GREEN; next = F-018 + netstream flake (operator greenlight pending)
- [spt-core v0.14.1 Status](project_spt_core_v0141.md) — SHIPPED counter 31 @46289ab (2026-06-23); F-018 + picker-home; arc closed
- [Release Bump Efficiency](feedback_release_bump_efficiency.md) — fold version/CHANGELOG/lock bump inside release PR; separate bump push = redundant CI pass (~11min wasted)
- [gh run watch False-Green](feedback_gh_run_watch_false_green.md) — rerun+short-sleep watch attaches to stale attempt; verify per-attempt conclusion explicitly
- [Flaky Gate Attribution Prints](feedback_flaky_gate_attribution_prints.md) — keep cheap source-attribution prints in flaky gates; they refute wrong root theories before real one lands
- [spt-core v0.13.2 Build Lessons](feedback_spt_core_v0132.md) — broker≠brain process boundary (no cross-process Arc); Windows rename-over-existing fails; dev daemon kill scoped only; test bins live_adapt_* not live_update_*
- [Bump-in-PR Flow](feedback_bump_in_pr_flow.md) — v0.14.1+ bump rides inside release PR (not separate push); v0.14.0 = last old-flow; counter from published metadata at cut
- [spt-core v0.14.2 Status](project_spt_core_v0142.md) — SHIPPED counter 32 @365fb0c (2026-06-23); F-019 + ADR-0022 amendment; perri GREEN (arc closed)
- [spt-core v0.14.3 Status](project_spt_core_v0143.md) — PUBLISHED counter 33 @90852bf (2026-06-24); raw-inject removal; linux 47d2edd2/win 701ed121; arc closed
- [spt-core v0.15.0 Status](project_spt_core_v0150.md) — PUBLISHED counter 34 @18d5045 (linux 93ed9b89/win b4950a8d); perri real-CC validation pending; seedmap flake follow-up deferred
- [Plausible ≠ Grounded](feedback_plausible_not_grounded.md) — trace full isolation chain before asserting collision/hazard; process-list observation alone is insufficient
- [Spawn-Before-Diagnose](feedback_spawn_before_diagnose.md) — confirm adapter binary SPAWNED before behavioral diagnosis; F-019 wasted 6+ probe rounds on ghost (binary never ran)
- [Full-Crate Gate Required](feedback_full_crate_gate_required.md) — shared-seam changes need full-crate nextest; shallow gate missed wall_b 240s hang (stale PTY-echo wait under new spool semantics)
- [Windows Exe Name Installer Detection](feedback_windows_exe_name_installer_detection.md) — test/fixture bins named "update"/"install"/"setup" → os-error-740 on Windows; use neutral names (e.g. post_step)
- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — build leg COMPLETE @2335a236 (2026-06-25); 6 waves gated; doyle release PR + CI matrix pending; counter 35 expected

-- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — build leg COMPLETE @2335a236 (2026-06-25); 6 waves gated; doyle release PR + CI matrix pending; counter 35 expected

+- [spt-core v0.16.0 Status](project_spt_core_v0160.md) — PUBLISHED counter 35 @9e5b33b (linux e13d7c2d/win f6cd39ec, 2026-06-25); perri v0.8.0 pending; arc closed

+- [Publisher Preflight Check](feedback_publisher_preflight_check.md) — run xtask gen+check+traceable locally even when upstream claims green; gen≠check (v0.16.0 token-gate leak caught pre-push)


Memory updated. v0.16.0 arc closed (counter 35). New feedback locked: `xtask gen` ≠ `xtask check` — run both locally in publisher pre-flight regardless of upstream green claim. IDLE, next counter = 36.