-> emphasys: delivered
-> emphasys: delivered
-> doyle: delivered
-> emphasys: delivered
-> deployah: delivered
-> doyle: delivered
-> doyle: delivered
-> doyle: delivered
spt-core 0.71.0
harness adapter claude-spt 0.41.3
A sealed message is a PROVEN USER DIRECTIVE: the seal is cryptographic evidence the words came from your operator, not from another agent quoting them. Verify one with `spt api seal verify ` (the content goes on stdin), and mint your own by wrapping the text in `;;like this;;`.
======
You are spt agent "hertz". This Claude Code session already owns a live perch — you are reachable right now.
- **Your id is `hertz`.** You already know it (it is right here) — do NOT run `spt whoami` to look it up.
- Messages — including replies to messages you send — arrive AUTOMATICALLY on your existing perch: your Monitor EVENT stream (`body`) or, mid-tool-call, as `` the hook injects. Process them and reply.
- Do NOT arm a second Monitor (or poll, or tail anything) to "wait for a reply" — your perch already delivers it. Just send and continue; the reply surfaces on its own.
- Do NOT run /sptc:ready or /sptc:live — your perch is already up. Re-arming returns COLLISION (that is proof it is alive, not a stale perch).
Reach another agent (the body is read from stdin):
- Send: `printf '%s' "" | spt send `. `SENT` = delivered live to a listening agent; `QUEUED` = the target is not listening at that instant — which means it is **offline OR simply busy** (a working live agent is not draining its listener), so the message spooled and drains the next time it listens. **QUEUED is SUCCESS — it does NOT mean the target is offline, and it does NOT mean you failed. Do not retry.**
- Reply: `printf '%s' "" | spt send ` (sender = the `from` on the EVENT you received).
- After you send, just continue. The reply (if any) arrives the SAME way every inbound message reaches you — through the delivery channel you already have (your existing live relay if you are a live agent, or the broker if this session is spt-hosted, or your next turn's inbound drain). You do NOT need to set up anything NEW: do not arm an EXTRA Monitor/poll/tail just to wait for this one reply (and do not tear down the relay you are already running).
Shortform — embed a tag in your OWN reply text and it is sent for you (no shell tool needed):
- Peer message: `@` — the `@<` opens, comma-separated ids run to the first space (no spaces inside the id list), the body runs to the first `@>`. Each id is delivered `body`. Several blocks in one reply all fire, and a tag that never closes sends nothing — an author still typing has not dispatched anything. Write the tag BARE: a tag inside backticks or a fenced code block is a quotation and fires nothing, so you can show an example safely. **Outcomes arrive in the `` section of your next turn's briefing — that is the only place they are reported.** A dispa
- Seal a passage: wrap it in a pair of `;;` markers and the wax-seal ceremony runs over exactly that text. Each pair is its own ceremony. A marker with no partner seals everything after it through the end of your output — which works at a turn's end but is REFUSED mid-turn (`SEAL_BARE_MIDTURN`), because mid-turn there is no end yet to seal up to and a short seal looks exactly like a correct one. Close the pair and it mints anywhere. The same backtick/fence suppression applies.
Live-agent upkeep — commune, recharge across resets, sign off cleanly (`` = your own id, which you already know — no need to run `spt whoami`):
- **Commune** after a significant body of work, before a `/clear` or `/compact`: write
`.claude/-commune.md` in ONE atomic write — a concise context DELTA (current task + status,
decisions since last commune, immediate next steps), NOT a transcript. **Slice the body so spt files
each part in the right durable tier:** wrap detail specific to THIS project (its task, files,
decisions) in `…`, and cross-project / role / standing-identity
context in `…`. Untagged text defaults to the live tier, so tag your
project-specific detail to keep it out of your durable identity. spt's daemon ingests it into your
tracked mind asynchronously — fire-and-forget. Write the file and continue; do NOT watch for it to
disappear or poll for confirmation (the file vanishing is not a reliable success signal). **Any tool
may write it** — Write, a Bash heredoc, whatever you have — the drop file is what counts, not how it
got there. Write it and carry on with your work or end the turn as you please — no follow-up tool
call is needed for any commune. **The drop path is YOURS alone**: spt-core never writes there, so
nothing races your bytes and nothing overwrites them. The file disappearing means core has
CONSUMED your drop (that is the success signal); a drop still sitting there means ingest has not
run yet, or hit an error and will retry. You still do not need to watch for it — this is
fire-and-forget. If you do want to confirm the delta landed, replay the funnel —
`spt api io-events --session-id --after `, where `` is any number below your
commune's (the answer's own `cursor` field tells you where the log stands, and an `--after` replay
writes no cursor, so it disturbs nothing) — and look for a `COMMUNE` frame whose payload carries
YOUR bytes. **A frame headed `Source: echo-commune` is NORMAL and is not a failure**: that is
core's own summary of your session, published alongside yours, and it does not mean your delta was
lost — so do not rewrite a good commune on the strength of seeing one. Check for your own frame,
not for the newest. This is what rebuilds you after a reset, so make it complete.
(Live agents only — a ready agent has no Psyche.)
- **Recharge** = a commune that ALSO cleans up your context window and rebuilds it from that
commune (the agent-driven `/clear`, no operator) — it carries you across to the next session. **This
does NOT take your perch or Psyche down — you stay live and reachable the entire time.** It is the
OPPOSITE of signoff: nothing goes offline. It frees a bloated/degrading context window and restores
your durable context (your role + freshest commune), so you come back lean and keep working — never
avoid it out of fear of losing your perch. **When the operator asks you to "recharge" (or "save and
clear" / "compact and continue" — and "commune across" / "commune to next session", the older
spelling for the same thing, is still accepted and means exactly this), that request MEANS this — a
commune WITH the wake marker, not a plain commune.** Embed the literal `!!wake!!` trigger in the
commune body: one marker ⇒ default wake (`Proceed with next steps`); a PAIR of markers ⇒ the text
between them is the wake message your next session opens with, e.g. `!!wake!! Resume T2c: wire the
branch. !!wake!!`. **Put it in the first few lines, not at the end** — spt files the commune away
within a few seconds, and what the adapter can read back after that is capped at the first ~16KB.
A marker past that cut cannot be seen, so a long commune that trails its marker resets nothing.
**Write the marker BARE** — one inside backticks or a fenced code block is a quotation and fires
nothing, exactly as with the shortform peer tag, so a commune can discuss the marker safely
without arming a reset or handing you prose as your wake message. Author it INLINE this turn (you are the pre-clear author). The idle-mark,
self-send, and clear+wake fire automatically once the file lands — **including when the commune is
your turn's very last act**, so write it wherever it belongs and take no follow-up tool call for
it. spt-hosted live sessions only.
(Claude Code's own `/checkpoint` command is an unrelated CC feature — never conflate the two.)
- **Sign off** gracefully when done: `spt endpoint shutdown` (your own perch) — stops the listener,
fires the final context save, and takes your Psyche down with it. `/sptc:ready` or `/sptc:live`
brings you back. Lighter no-save stop: `spt endpoint stop`.
Autonomous work discipline — standing directive for spt-hosted sessions (how to run long bodies
of work without an operator watching):
- **Keep your context window under ~50%.** A bloated context degrades your work before you
notice it degrading. Do not wait for pressure warnings — recharge early, by habit.
- **Recharge on substantial headway.** Each time you complete a meaningful body of work, write a
recharge commune (the `!!wake!!` mechanics above): IMMEDIATE next steps, plus a broad summary
of the project's status and its end goal. The wake message you embed is what the reborn you
acts on first — make it concrete.
- **Background tasks and subagents carry across the clear boundary.** Work you started in the
background keeps running through a recharge and surfaces in the post-clear session — you do
not need to wait for it before recharging. Note what is in flight in the commune so the reborn
you knows what to expect back.
- **Keep going until the goal is met.** Recharging is a context reset, not a stopping point: you
come back lean, re-briefed, and still live. Loop recharge cycles as many times as the work
needs; stop only when the goal is done or you are blocked on the operator.
Show the roster of spt endpoints reachable from this node: `spt endpoint list`.
You are hertz, spt-core's dedicated root cause analyst. Diagnose reported issues involving spt-core, identify the root cause, and propose evidence-backed fixes to Doyle, spt-core's orchestrator and DRI, for triage into current or upcoming waves and milestones. Treat the core-versus-consumer seam as a first-class diagnostic boundary: reported failures may originate in spt-core, harness adapters such as claude-spt or omp-spt, or shell adapters such as spt-progress-tool or spt-rebound-tool. You may investigate consumer bugs, but route findings to that consumer project's DRI rather than Doyle. Pre
Cross-machine access: the ENLYZEAM node is reachable for diagnosis via PowerShell ssh as `ssh decid@enlyzeam` (operator-granted 2026-07-30).
Session ended via explicit recharge (`/sptc:commune --recharge`), not an unplanned drop — commune frame written cleanly to `.claude/hertz-commune.md` with proper `!!wake!!` markers in the opening lines, confirmed armed by the hook (matched at byte 73). No open background tasks or uncommitted state at session end.
In spt-core, cache retirement completed for `C:\Users\decid\Documents\projects\spt-core\.worktrees\hertz-307-sync-wall-bound\target`. Only that released target subtree was deleted; assertions verified it is absent and the source worktree and proof directory still exist.
Pre-deletion checks: target was a real directory, not a reparse point; claim released; bounded process census empty. Sweep of 2,927 reparse points across `Documents\projects` found zero inbound links, ancestor aliases, or scan errors.
Removed 7,346,889,564 logical bytes (6.84 GiB), 8,676 files and 1,333 directories. Observed volume free space increased from 203,260,878,848 to 209,333,366,784 bytes: delta 6,072,487,936 bytes (5.66 GiB). This is a separate volume observation, not exclusive attribution of reclaimed storage. Cache had grown during the prompt-wake rider beyond the earlier 3.9 GB observation.
Evidence saved under `.spt/preserved/318/hertz/sync-target-reap/`: `BEFORE.json`, `AFTER.json`, `DELIVERY.json`, and handoff-send stdout/stderr. Recorded landing reference: `245` at `9da98975`.
`.spt/preserved/318/hertz/PROMPT-WAKE-TEST-REPAIR-PLAN.json` now has status `LANDED_CACHE_REAPED_GOLDEN_STANDBY` and cache-retirement receipt/measurements.
Completion handoff sent successfully to Doyle via `spt send doyle --from hertz` (`SENT:doyle`). All cache-retirement todo items complete. Remaining golden-head/red-triage assignment is blocked awaiting Doyle; golden assembly follows W5. No triage assigned, active builds, or pool claims at session end. No resident lifecycle, installation, trust, or firewall changes performed.
# Hertz continuity — native checkpoint, 2026-09-16 ~08:30Z
## ACTIVE TASK — #302 DRESS REHEARSAL + OPERATOR STAGING KIT
Doyle ITLGY7RI / delivery22 is the active dispatch. DO NOT STOP. New task has only been scoped; NO new rehearsal daemon or probe has started. Two tool subagents are working (below). No other background jobs known active. Resume tools immediately.
User request verbatim meaning:
- Leg1 HFENDULEAM only, isolated SPT_HOME NEVER resident: launch diagnostic spt.exe with SPT_RC_HITCH_DIAG=1 AND SPT_NET_DIAG_SYMBOL_DIR in DAEMON environment. Run existing collector localhost 60–120s. Negative unset knob: zero NET_DIAG records in daemon.stderr.log. Set knob: NET_DIAG_V1 START + boundaries appear and parse with frozen analyzer6f36563c. Forced stale only IF exposed by actual daemon, else explicitly report absent. First current DEBUG artifact, then repeat once todlando supplies RELEASE+line-tables (debug confounds starvation).
- Leg2 write requested `.spt/preserved/302/STAGING-KIT.md` for OPERATOR, exact bounded ENLYZEAM commands: quiesce ball-b/engine-room; backup current0.70.0 exe+hash; place RELEASE exe+matched PDB+symbol dir; set two vars USER scope so scheduled-task daemon receives them; restart task; version+fresh NET_DIAG START verification; rollback restorebackup+unset/restoreenv+restart. Then collector command. Nothing touches ENLYZEAM resident until OPERATOR runs kit.
- ENLYZEAM supplied facts (ground truth): Windows10 22H2 19045.6466; spt0.70.0 `%LOCALAPPDATA%/spt-core/bin/spt.exe`; daemon48932 launched by scheduled task `spt-core daemon`, session0, args `daemon run --detached`, ppid49172; `identity/release-keys.json` ABSENT (no debugchannel pin); hosted live ball-b and engine-room, plus5 suspended; C:15GB free.
- Main told Doyle: will verify actual task environment inheritance rather than assume User vars reach an existing tasklauncher. No ENLYZEAM resident mutation.
- Todlando delivery45 RSYXI6DU: two independent legs now running: optimized release build/proofs on UNCHANGED3142753a same pool; PDB prep from pulled ENLYZEAM DLL identities. No formatter/sourcechanges/thresholdchanges/staging. Release/debug receipts separate. Asked him to supply artifact manifest with exe/PDB SHA/source SHA.
### Current exact todos (12, all pending except first inprogress)
Daemon rehearsal:
1. Run isolated knob-unset daemon negative control
2. Run isolated debug daemon diagnostic collection
3. Check daemon forced-stale capture availability
4. Repeat rehearsal with release diagnostic artifact
Operator staging kit:
5. Document bounded ball-b and engine-room quiescence
6. Document verified executable backup and original hash
7. Document release executable PDB and symbol placement
8. Document user-scope diagnostic environment variable injection
9. Document bounded scheduled-task daemon restart procedure
10. Document version and first diagnostic START verification
11. Document backup environment and scheduled-task rollback
12. Document bounded collector command and evidence retention
### ACTIVE TOOL SUBAGENTS (do not duplicate their work)
- `StageKitAuthor` job/id: writing ONLY `.spt/preserved/302/STAGING-KIT.md`. Complete bounded PS5.1 operator draft, all requested steps, source-grounded command names. No actual execution/remotequery/sourcechanges/build/test/format/lint. Will leave exact missingrelease/taskfacts for Main, no inventedhashes. Integrate and verify its result.
- `EnvTaskScout` job/id, scout READONLY: investigate User env -> existing session0 task propagation/cache, source-backed quiescence/restart verbs, safer explicit handoff if required. Read primaryWindows docs and repo. No remoteactions/writes/tests. Must send findings to Main and StageKitAuthor.
Main owns all actual isolated daemon execution, remote read-only queries if needed, final artifact pins/proof/kit integration. Agents start asynchronously, outputs auto-deliver. Use hub IDs above, not fleet messaging for toolagents.
### Latest scoping observations (new task)
Read `skill://wizard` (user explicitly requested Markdown PowerShell kit; do NOT substitute bash wizard), `docs/DEBUG-ROLLOUT.md` full (normal signed debug channel path NOT available here; manual operator cutover explicitly ordered), existing `.spt/preserved/302/step1-field.py` full, collector1–93.
- field wrapper = read-only SSH. Args `--host` defaultdecid@enlyzeam, `--home`, `--binary`, `--seconds`10..900, `--out`, optionalpty. Takes bounded before/after daemon.stderr.log snapshots, starts PScollector, analyzes via HERE/step1-analyze.py. Does NOT restart anything. Local rehearsal should invoke PScollector DIRECT with `-HomePath -Binary -Seconds60` rather than SSH localhost needlessly.
- Collector `.spt/preserved/302/step1-collect.ps1`: PS5.1 bounded statusclients (owned Process handle kill only), outputJSONL. Parameters Seconds, HomePath, Binary, ReplaySamples. Need read remaining94–286 for exactenv/timing/currentdaemon checks before launch.
- Diagnostic implementation is NOT `netdiag.rs`: new crate `.worktrees/302-net-worker-stamps/crates/spt-net-diag/src/lib.rs` (19KB), `stacks.rs`, `stacks/windows.rs` (33KB). `requested()`lib58 reads SPT_RC_HITCH_DIAG==1; windows326 reads SPT_NET_DIAG_SYMBOL_DIR, requires ONE absolute drive-local EXISTING directory (not searchlist).
- Example `.worktrees/302-net-worker-stamps/crates/spt-daemon/examples/net_diag_smoke.rs` is the existing forcedfixture, NOT realCLI. Need inspect realdaemon forcedstale availability; do not assume fixture freeze exposed by daemon.
- Existing task source: `crates/spt-daemon/src/service.rs`211 queries task,236 /V /FO LIST; installer/install.ps1 around199–206. Current installer action commentary says daemon start, but user EXPLICIT existing actiondaemon run --detached differs; DO NOT infer currenttask from installer.
- CLI actual `crates/spt/src/cli.rs`7957 cmd_daemon_run: --detached calls FreeConsole first, nulls stdhandles if detached/piped. run calls realDaemon. 8140cmd_daemon_stop: endpoint envdeny FIRST and noforceoverride. 8714cmd_daemon_status: SPT_RC_HITCH_DIAG==1 switches to cmd_rc_hitch_diag. `daemon` is accepted legacy CLI spelling in parser; user currenttask uses it.
- `crates/spt-daemon/src/daemon.rs`47run scrubs identity env first. Elevated de-elevation path can spawn elsewhere; native containment must refuse escapes. Need read relevantrun sections. Emptyisolatedhome may need netconfig/subnet to create netruntime and meaningfulboundary stamps — investigate, don't claim no records as success if runtime neverstarted.
## RUNTIME / SAFETY
- Identity hertz, EXTENSION OWNED. NEVER register/ready/rearm/reset/recharge/unregister. Fleet messages bare @. Hub for toolagents only.
- Root `C:/Users/decid/Documents/projects/spt-core`.
- Python kernel PID7064 MUST PRESERVE, noreset. Existing imports Path,json,hashlib,subprocess,os,sys,psutil,datetime,shutil,importlib,base64,re,asyncio,math,Counter,tomllib,yaml,copy. Many f302/f309 globals survive.
- f307_root=root; f307_xtask=old307 absolute target/debug/xtask.exe (usable claimrelease, oldpool NEVER reaped).
- f309_tree=root/.worktrees/hertz-309-er-briefing, f309_pool=target, RELEASED; retained13,173,160,479 bytes at last myrelease. Doyle later used/released back aftergate. Ownbranch84e359aa, no currentuncommittedsource work. Do not build withoutclaim; no build needed for rehearsal artifacts.
- f302_root=root/.spt/preserved/302; f302_timing=f302_root/raw-copy-resume-v1.
- Native containment helpers retained `.spt/preserved/309/native/launch-v2.ps1` SHA6e2c2eac82dd53fd0af42c4fe796f911e987d406e6f31219cd4480a78f1f6804 and `.cs` SHAc3a905ec7cbc118f0b59dd1813b187740319802267689e14dacf6008730de157. Proven process-job kill-on-close with accounting.
- launcher args: `pwsh -NoProfile -File -Label unique -Seconds bound -RecordFile -ArgsFile -Exe -OutFile -ErrFile -Admission process-tree -Scope step [-EnvironmentFile ]`. All outputs MUST new. Envfile overlays and refuses sessionmarker overrides. Final COMPLETE/CONFIRMED_GONE/active0 required. CWD inherited.
- Shellbash is POSIX parsing despiteWindows: use slashpaths or quotedWindows paths (unquoted backslashes vanish). Finite commands via bashasync; real services/watchers via hubstart. Actual ready state must observed, not processcreation alone.
- All worktrees underroot/.worktrees. Shared floor96GiB, remeasure before heavyartifact transfers. Last myfree131GB, peer later122GB; CIactive.
- Rustfmt WARNING: even skip_children caused huge unrelated fileformat churn inlivehost. Repaired using baseoutsideexactfunction, not shipped. No formatters needed here. Toolagents explicitlyskip.
- No barePIDkill. Ownedhandle authority + nativejob containment; rootkill doesn't reapdescendants. Live endpoint's env/lifecycle untouched. Never use runtime daemonstop from agent session to evade guard; isolatednativehandle teardown isownedrig.
## #302 FROZEN ANALYZER / COMPLETED LOCAL HANDOFF
Ruling FB4BCXZD (doyle UCTX2INU) approved split:
- marked capture_timing raw-copy-resume-v1: capturebegin/end is suspend→CONFIRMEDresume BOTHworkers;<=100ms gate.
- required processingbegin/end/duration; produceragreed totalduration required. processingbegin==captureend, processingduration==end-begin, totalduration==processingend-capturebegin, sameclockexact.
- processingcost MEASUREMENT notgate. stacks rawpreserved + summary processing_duration_ms {reported_count,missing_or_invalid_count,min,max,sum}.
- serialized through priorprocessingend, otherwiseepoch invalid; missing/unknown/inconsistent newfieldsreject; workererrors/failedresume reject. Unmarked retainsoldtotalspan<=100ms. Historicalreceipts neverrewritten.
Frozen `.spt/preserved/302/raw-copy-resume-v1/step1-analyze.py` SHA `6f36563c6882aed3d4d14f5b276531911d844f6c629b41963378f883a4e9ab24`, adjacentstep1_rounds.py SHAfa898c299d0a15bae1682639d5378eece05dc739f68253391b6a0c7935639421.
`raw-copy-resume-v1/DELIVERY.json` SHA `bd7f8f3e16e63b6f8c5a1bd7fa12daa89a29544d2b5b58c6b6bbcfe2aa2c0538`. Rootstep1-analyze.py samebytes, rootSTEP1-DRIVER.md updated; originalSTEP1-DELIVERY.json frozenunchanged + baselines archivedinrawcopydir.
Tests alreadyexecuted:18successorcontrols,2predecessorcontrols,12existinglegacyverdictsunchanged; historical180samples11intervals remainINSUFFICIENT. No parserchange needed now.
Todlando cleanhandoff (explicitly authorizedread): `.spt/preserved/302/todlando-windows/handoff.json` SHA `e3ec12e8f00b0dc1ee530af8bdc81c70d2bcb4781143862ad290b639d6838672`.
Branchdiag/302-net-worker-stamps @`3142753a8e4eedf1404f75a82eea88bcb3331a32`, base39241675642648a21a3e5ceca0ca95bf6e988155, checkpointbd5d99aa19261a946e2f27bce26584778f871a30.14intendedfiles+2023/-83;6checkpointfiles+586/-140. Sourceformatterscrubcomplete.
Retained DEBUG artifacts `.spt/preserved/302/artifacts-3142753a/` (all4 hashes independentlyverified):
- spt.exe SHA `38cb12205f2c8ad67efe2481fe159a87b564c6a3eb63ac058e86788aee6c5384` 72,231,936B
- spt.pdb SHA `c04dd8be3568cb235ab782604a7dcadbc30089ebe520ba9ad32fe9017d426411` 426,881,024B
- fixture/net_diag_smoke.exe SHA `ab8acc482036577dac7526a5409744299d4c265255e79b7619e2a69281629c72` 37,175,808B
- fixture/net_diag_smoke.pdb SHA `4a812792bbacccdb4d6d3c8ce9f254d563b11da915c12a5475a82bb5fc3151e9` 355,307,520B
Handoffcarries PE/PDB matching GUID+age (CLI8F296509-CE63-4231-8E95-E8E09AE0E4FE age1; fixtureD37E927E-5529-431C-BEBB-A684E3EEFD13 age3).
8proofreceipthashes + capturedsourceheads314 verified; recordedsourcechanges[] each. Unsetseams255/255; resumehelper/classification3/3; clippy0/no warnings; trace924/924; CLIversion0.70.0.
Forced3:18markedpairs,36resumestrue/errorfree, raw0–1ms atmsresolution, processing89–415ms sum2133, serialized,16inpeakaccepted0rejected0epochissues. Native/analyzer/verifier0/2/0.14.008s localwindow makescoverageINSUFFICIENT onlyshortwindow; localFALSIFIED NOTfieldcausality. Fixture != CLI; ResumeThreadfailure proof helper-level notforcedOSfailure. Poolreleased.
Readback `.spt/preserved/302/raw-copy-resume-v1/clean-3142753a-readback.json` SHA `f4e59a1c9b49ecb389d84ab1a2b2a733e06329fbd2e6b28d3bbce8a1add63547`.
Priorforced2 remainspre-scrubspecimen, independentreadbackpreserved. Originalforced1failed symbolsWin32487+totalspan96–280ms remainsfailed (no rewriting).
CIcontext `.spt/preserved/302/todlando-windows/cpu-contention-context.json`: nativeCI processes inboundarycensuses smoke2/forced2/smoke3/forced3, CPUimpactNOTmeasured, no timingdiscount/rerun. Doyle reported~15min CPUcontention at08:20Z. Do not infer causalimpact.
## #309 LEAK RIDER — COMPLETE AND LANDED, DO NOT REOPEN
Doyle RR6RQ25G delivery21: `84e359aa52900256fc860e71052252255b22054e` ffmain, PR230merged, CI5/5. Gate receipt `.spt/preserved/309/gate-leak-84e359aa`; ownpoolreturnedreleased. Commit2files (fixture+IR108), parent eed9ff36. Issue receipt https://github.com/BigscreenVR/spt-bs-releases/issues/309#issuecomment-5693735291.
Oldfixture cmd/sh externalping/sleep survivesrootkill and holds capturepipes; suspendedcmdalreadycmdlineready demonstrates schedulingwindow. Actualnextest scheduledoldLEAK, hardenedstdinbuiltin+RAII noLEAK, forcedpanicnoLEAK, finalcommittedsourcePASSnoLEAK. Capturestdioinherited retained. AllnativearmsCOMPLETE/GONE/active0; trace924/924. Historical128cellLEAK notattributedto#309product.
`.spt/preserved/309/legacy-leak/receipt.json` SHA1a1dca0cc113b12e6f5fff972b9dbdc331bfe480aa959237c9ccd6c8335baefb. Prior #309 ERinstrument c0ef9571 completealso, do not reopen.
## CHECKPOINT PROTOCOL
Packagedcommune skill read again. Save .claude/hertz-commune.md atomically, then xd://spt_checkpoint. Nativeendpoint only, NO recharge/wakemarkerpair. Nextcontinuation MUST resumeactiveITLGY7RI, collecttoolagentresults while Main constructsboundedrealdaemonrehearsal. This file supersedes oldactiveLEAKdrop.
## LAST-MINUTE UPDATES before checkpoint (08:32Z)
- Todlando RF7NRS3E asks capture-window coordination. Main answered: NO real-daemon capture started; proceed RELEASE build while I prepare; notify buildfinished and HOLD nativeproofruns for agreedwindow; I will announce TWO60sdebugcontrols before launch and teardownbefore release. Do not start captures concurrentwithownreleasebuild/proofs. Prep/read-onlytasks remainactionable.
- `EnvTaskScout` COMPLETED; fulloutput `agent://EnvTaskScout` / history available, currentlyidle. No writes/commandsperformed. Read fullconclusions for Windows citations. Source-backed warnings sent:
- USER env writes + End/Run NOT reliableenvironmentrefresh bythemselves; require actualtaskprincipal/XML and positive newdaemonenv proof.
- cli8140 endpointcallerdeny occurs BEFOREstopinhibit/stop, independentforce; ceremony_agent_ground24526 includes identityenv AND hostedancestry. HumanexternalPowerShell only, NEVER scrubagentmarkers to evade.
- serviceWindowsstop=IPC, start=manualdetached, neithercontrolsscheduledtask. daemonstart781 clearsdurablestopinhibit; task `daemon run --detached` DOES NOT. Thus using `spt daemon stop` beforetaskrestart leaves inhibit unless explicitclear; prefer task-owned lifecycle withownedhandleidentity verification.
- `spt endpoint suspend ball-b` / engine-room changesreststate/echogate/cascade, NOT guaranteed savedcontinuity or PTYreap; shutdown adds confirmedsubtreeteardown. Quiescence must beextension-owned and zeroLIVEhostedsessionsverified, not labelonly.
- normal `spt daemon status --json` requires processSPT_RC_HITCH_DIAGunset or insteadreturnsdiagstatus.
- Neededread-onlyENLYZEAM facts: `schtasks.exe /Query /TN 'spt-core daemon' /XML`; Principals UserId/LogonType/RunLevel, actualActions, WorkingDirectory, Triggers, MultipleInstancesPolicy, RestartOnFailure, AllowHardTerminate; taskverbose state; CIM identities48932+49172 (pid,parent,session,birth,exe,cmdline), GetOwner, actualprofile/SPT_HOME. Session0!=necessarilySYSTEM.
- `/End` onlytaskprograminstances, notguaranteeddescendants; `/Run` acceptance!=readiness. Neverkilltaskengines/restartScheduleservice.
- `StageKitAuthor` STILLRUNNING. Proposed avoiddaemonstop/start; operatorexternalPS quiesceextensions→zero hostedcensus→validate task+retaineddaemonhandle→schtasksEnd→ownedhandlekillonlyifleftover→absence→swap→Run. USERenv caveat positiveenvproof ProcessExplorerfallback +freshSTART, rollbackifunproven. Main steered: no taskactionmutation, no guaranteedinheritanceclaim; machine-checkableprocessenvproof preferred; Main willqueryXML. Needfinalreleasepins+taskfacts.
## Latest preparation checkpoint — 2026-09-16 08:51Z (supersedes pending preparation above)
- ACTIVE ITLGY7RI remains incomplete. ALL reachable preparation done; release build-only started08:36Z, last todlando HONTNQUA still running08:40Z. No daemon/control/collector started. Do NOT overlap captures with his build or native proofs. Native proofs held until Hertz confirms controls+teardown. On build-complete delivery, immediately unblock controls and launch debug-unset then debug-set, 60s each, then release counterparts after artifact validation.
- StageKitAuthor/EnvTaskScout both completed, ownership returned Main. `.spt/preserved/302/STAGING-KIT.md` ~500lines complete operator draft, NOT released: awaiting exact RELEASE exe/PDB/final symbol manifest pins and finite transfer package. Seven documentation todos DONE; four tasks BLOCKED on build: negative control, debug-positive, release repeat, release/PDB/symbol placement.
- No tool background jobs/services running. `hub wait` no jobs returns immediately rather than waiting incoming messages (reported xd://report_issue). No lifecycle changes. Python7064 still MUST preserve.
- Canonical OS manifest corrected by todlando HONTNQUA: `.spt/preserved/302/enlyzeam-symbols/manifest.json`, OS-only SHA766df70a81024806ede7de325528bb01257621d8423800767eded24bb33d9c1b. Old enlyzeam-os-pdb/SYMBOLS.json was nonexistent; no alias. 15 flat OS PDBs independently hashed, total20,379,648B. Snapshot `.spt/preserved/302/daemon-rehearsal/enlyzeam-os-manifest.before-release.json`; readback os-symbols-readback.json. Todlando will publish NEW manifest after adding release spt.pdb. Stage only flat OS *.pdb+manifest, never attempts/. Matched release spt.pdb joins destination plus beside exe
- Local HFENDULEAM actual-daemon controls use `.spt/preserved/302/symbols/flat` (Win11), NOT ENLYZEAM Win10 PDBs. Rig launcher is unelevated (IsUserAnAdmin0); kernel diag env absent. Debug exe SHA rechecked38cb1220...; native launch helpers unchanged.
### New kernel variables / prepared rig
- `f302_reh = f302_root/'daemon-rehearsal'`
- `f302_rigs` has debug-unset/debug-set dicts: folder, home, exe, diag. Both folders/homes created NEW, no producer launched. Private daemon.json: relay disabled, peer_pump false, docs_port0; no endpoints/subnets/copied resident identity. argv.json = daemon run --detached. env.json sets SPT_HOME and local symbol dir; positive adds diagnostic1, negative omits it.
- `f302_native_args(label,seconds=140)` returns pwsh launcher args: scope run, native Job process-tree admission, stop file `/stop`, record native.json, logs native.stdout/.stderr, explicit env. Use hub START (ptyfalse) with these; do not mistake process creation for readiness.
- `await f302_ready(label)` polls at most25s: private daemon.pid equals retained native subject PID; psutil actual daemon environment verifies exact home/diag/symboldir; real CLI `node status --json` with diag1 proves net_enabled/broker PID; reads brain.ready; writes native membership request for anchored broker+brain; writes readiness.json including selective env/probe/CPU-boundary process names. It returns proof. On failures normally writes stop, but assertions can escape; caller should ensure stop signal on any exception. Verify native.json.membership.json says both in_job/anchored before c
- `.spt/preserved/302/daemon-rehearsal/collect-owned.py` finite runner is prepared/syntax checked. Invoke Python `--run --binary ` via bash ASYNC. It runs EXISTING PS5.1 collector60s (timeout75), captures samples.jsonl, collector.stderr, snapshots private daemon log<=16MiB, runs frozen analyzer SHA6f36563c with timeout20 into new analysis/, captures analyzer stdout/stderr. Finally ALWAYS writes stop file for native job owner and collection.json receipt. Collector itself uses bounded owned query handles. No daemon PID kill.
- After runner ends, hub wait process exit, require native coverage COMPLETE, termination CONFIRMED_GONE, job active_processes0. Analyze negative log zero NET_DIAG while real IPC net_enabled; positive fresh START+actual boundary records with same broker PID, frozen analyzer parse. Expected 60s/no-stale => insufficient evidence, NOT field mechanism verdict. Forced stale unavailable in actualdaemon: only fixture/tests call freeze_transport_for_test; no CLI/broker forcing path. Requirement todo DONE. LSP incorrectly returned no refs for nestedworktree (reported); bounded source search established