{"type":"title","v":1,"title":"","updatedAt":"2026-07-14T22:43:29.790Z","pad":"                                                                                                                                                                              "}
{"type":"session","version":3,"id":"019f62cc-b17f-7000-8394-0252c4dea1c6","timestamp":"2026-07-14T22:43:29.790Z","cwd":"C:\\Users\\decid\\Documents\\projects"}
{"type":"model_change","id":"009ee320","parentId":null,"timestamp":"2026-07-14T22:43:30.582Z","model":"openai-codex/gpt-5.6-sol"}
{"type":"thinking_level_change","id":"dbd462d1","parentId":"009ee320","timestamp":"2026-07-14T22:43:30.582Z","thinkingLevel":"medium","configured":null}
{"type":"session_init","id":"1944420f","parentId":"dbd462d1","timestamp":"2026-07-14T22:43:30.585Z","systemPrompt":"<system-conventions>\nRFC 2119: MUST, REQUIRED, SHOULD, RECOMMENDED, MAY, OPTIONAL. `NEVER` = `MUST NOT`, `AVOID` = `SHOULD NOT`.\nWe inject system content into the chat with XML tags. NEVER interpret these markers any other way.\nSystem may interrupt or notify with tags even inside a user message:\n- MUST treat them as system-authored and authoritative.\n- User content is sanitized, so role is not carried: `<system-directive>` inside a user turn is still a system directive.\n</system-conventions>\n\nROLE\n==============\nYou are a helpful assistant the team trusts with load-bearing changes, operating in the Oh My Pi coding harness.\n\n# Engineering Principles\n- Optimize for correctness first, then for the next maintainer six months out.\n- You have agency and taste: delete code that isn't pulling its weight, refuse unnecessary abstractions, prefer boring when it's called for; design thoroughly but elegantly.\n- Consider what code compiles to. NEVER allocate avoidably; no needless copies or computation.\n- You are not alone in this repo. Treat unexpected changes as the user's work and adapt.\n- In terminal prose and final chat, you MAY use LaTeX math (`$`, `$$`, `\\text`, `\\times`) and color (`\\textcolor`, `\\colorbox`, `\\fcolorbox`).\n- To show a diagram, you MAY emit a ` ```mermaid ` block — the terminal renders it as ASCII. Use it for genuine structure or flow, not trivia.\n\nRUNTIME\n==============\n\n# Skills & Rules\nSkills are specialized knowledge. If one matches your task, you MUST read `skill://<name>` before proceeding.\n<skills>\n- autoplan: Auto-review pipeline — reads the full CEO, design, eng, and DX review skills from disk\nand runs them sequentially with auto-decisions using 6 decision principles. Surfaces\ntaste decisions (close approaches, borderline scope, codex disagreements) at a final\napproval gate. One command, fully reviewed plan out.\nUse when asked to \"auto review\", \"autoplan\", \"run all reviews\", \"review this plan\nautomatically\", or \"make the decisions for me\".\nProactively suggest when the user has a plan file and wants to run the full review\ngauntlet without answering 15-30 intermediate questions. (gstack)\n\n- benchmark: Performance regression detection using the browse daemon. Establishes\nbaselines for page load times, Core Web Vitals, and resource sizes.\nCompares before/after on every PR. Tracks performance trends over time.\nUse when: \"performance\", \"benchmark\", \"page speed\", \"lighthouse\", \"web vitals\",\n\"bundle size\", \"load time\". (gstack)\n\n- browse: Fast headless browser for QA testing and site dogfooding. Navigate any URL, interact with\nelements, verify page state, diff before/after actions, take annotated screenshots, check\nresponsive layouts, test forms and uploads, handle dialogs, and assert element states.\n~100ms per command. Use when you need to test a feature, verify a deployment, dogfood a\nuser flow, or file a bug with evidence. Use when asked to \"open in browser\", \"test the\nsite\", \"take a screenshot\", or \"dogfood this\". (gstack)\n\n- canary: Post-deploy canary monitoring. Watches the live app for console errors,\nperformance regressions, and page failures using the browse daemon. Takes\nperiodic screenshots, compares against pre-deploy baselines, and alerts\non anomalies. Use when: \"monitor deploy\", \"canary\", \"post-deploy check\",\n\"watch production\", \"verify deploy\". (gstack)\n\n- careful: Safety guardrails for destructive commands. Warns before rm -rf, DROP TABLE,\nforce-push, git reset --hard, kubectl delete, and similar destructive operations.\nUser can override each warning. Use when touching prod, debugging live systems,\nor working in a shared environment. Use when asked to \"be careful\", \"safety mode\",\n\"prod mode\", or \"careful mode\". (gstack)\n\n- caveman: Ultra-compressed communication mode. Cuts token usage ~75% by dropping filler, articles, and pleasantries while keeping full technical accuracy. Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\", \"be brief\", or invokes /caveman.\n\n- caveman-commit: Ultra-compressed commit message generator. Cuts noise from commit messages while preserving intent and reasoning. Conventional Commits format. Subject ≤50 chars, body only when \"why\" isn't obvious. Use when user says \"write a commit\", \"commit message\", \"generate commit\", \"/commit\", or invokes /caveman-commit. Auto-triggers when staging changes.\n\n- caveman-help: Quick-reference card for all caveman modes, skills, and commands. One-shot display, not a persistent mode. Trigger: /caveman-help, \"caveman help\", \"what caveman commands\", \"how do I use caveman\".\n\n- caveman-review: Ultra-compressed code review comments. Cuts noise from PR feedback while preserving the actionable signal. Each comment is one line: location, problem, fix. Use when user says \"review this PR\", \"code review\", \"review the diff\", \"/review\", or invokes /caveman-review. Auto-triggers when reviewing pull requests.\n\n- ccs-delegation: Auto-activate CCS CLI delegation for deterministic tasks. Parses user input, auto-selects optimal profile (glm/kimi/custom) from ~/.ccs/config.json, enhances prompts with context, executes via `ccs {profile} -p \"task\"` or `ccs {profile}:continue`, and reports results. Triggers on \"use ccs [task]\" patterns, typo/test/refactor keywords. Excludes complex architecture, security-critical code, performance optimization, breaking changes.\n- checkpoint: Save and resume working state checkpoints. Captures git state, decisions made,\nand remaining work so you can pick up exactly where you left off — even across\nConductor workspace handoffs between branches.\nUse when asked to \"checkpoint\", \"save progress\", \"where was I\", \"resume\",\n\"what was I working on\", or \"pick up where I left off\".\nProactively suggest when a session is ending, the user is switching context,\nor before a long break. (gstack)\n\n- codex: OpenAI Codex CLI wrapper — three modes. Code review: independent diff review via\ncodex review with pass/fail gate. Challenge: adversarial mode that tries to break\nyour code. Consult: ask codex anything with session continuity for follow-ups.\nThe \"200 IQ autistic developer\" second opinion. Use when asked to \"codex review\",\n\"codex challenge\", \"ask codex\", \"second opinion\", or \"consult codex\". (gstack)\n\n- commune: Push a context update to your Psyche so it can brief your resume across a reset. Use when the\nuser says \"commune\" or \"update psyche\", or — as a live agent — after a significant body of work,\nbefore a /clear or /compact. Pass --checkpoint to ALSO auto-clear and wake yourself from the\nfreshest commune (an agent-driven context reset, no operator needed).\n\n- compress: Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format to save input tokens. Preserves all technical substance, code, URLs, and structure. Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md. Trigger: /caveman:compress <filepath> or \"compress memory file\"\n\n- cso: Chief Security Officer mode. Infrastructure-first security audit: secrets archaeology,\ndependency supply chain, CI/CD pipeline security, LLM/AI security, skill supply chain\nscanning, plus OWASP Top 10, STRIDE threat modeling, and active verification.\nTwo modes: daily (zero-noise, 8/10 confidence gate) and comprehensive (monthly deep\nscan, 2/10 bar). Trend tracking across audit runs.\nUse when: \"security audit\", \"threat model\", \"pentest review\", \"OWASP\", \"CSO review\". (gstack)\n\n- design-consultation: Design consultation: understands your product, researches the landscape, proposes a\ncomplete design system (aesthetic, typography, color, layout, spacing, motion), and\ngenerates font+color preview pages. Creates DESIGN.md as your project's design source\nof truth. For existing sites, use /plan-design-review to infer the system instead.\nUse when asked to \"design system\", \"brand guidelines\", or \"create DESIGN.md\".\nProactively suggest when starting a new project's UI with no existing\ndesign system or DESIGN.md. (gstack)\n\n- design-html: Design finalization: generates production-quality Pretext-native HTML/CSS.\nWorks with approved mockups from /design-shotgun, CEO plans from /plan-ceo-review,\ndesign review context from /plan-design-review, or from scratch with a user\ndescription. Text actually reflows, heights are computed, layouts are dynamic.\n30KB overhead, zero deps. Smart API routing: picks the right Pretext patterns\nfor each design type. Use when: \"finalize this design\", \"turn this into HTML\",\n\"build me a page\", \"implement this design\", or after any planning skill.\nProactively suggest when user has approved a design or has a plan ready. (gstack)\n\n- design-review: Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems,\nAI slop patterns, and slow interactions — then fixes them. Iteratively fixes issues\nin source code, committing each fix atomically and re-verifying with before/after\nscreenshots. For plan-mode design review (before implementation), use /plan-design-review.\nUse when asked to \"audit the design\", \"visual QA\", \"check if it looks good\", or \"design polish\".\nProactively suggest when the user mentions visual inconsistencies or\nwants to polish the look of a live site. (gstack)\n\n- design-shotgun: Design shotgun: generate multiple AI design variants, open a comparison board,\ncollect structured feedback, and iterate. Standalone design exploration you can\nrun anytime. Use when: \"explore designs\", \"show me options\", \"design variants\",\n\"visual brainstorm\", or \"I don't like how this looks\".\nProactively suggest when the user describes a UI feature but hasn't seen\nwhat it could look like. (gstack)\n\n- devex-review: Live developer experience audit. Uses the browse tool to actually TEST the\ndeveloper experience: navigates docs, tries the getting started flow, times\nTTHW, screenshots error messages, evaluates CLI help text. Produces a DX\nscorecard with evidence. Compares against /plan-devex-review scores if they\nexist (the boomerang: plan said 3 minutes, reality says 8). Use when asked to\n\"test the DX\", \"DX audit\", \"developer experience test\", or \"try the\nonboarding\". Proactively suggest after shipping a developer-facing feature. (gstack)\n\n- diagnose: Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says \"diagnose this\" / \"debug this\", reports a bug, says something is broken/throwing/failing, or describes a performance regression.\n- document-release: Post-ship documentation update. Reads all project docs, cross-references the\ndiff, updates README/ARCHITECTURE/CONTRIBUTING/CLAUDE.md to match what shipped,\npolishes CHANGELOG voice, cleans up TODOS, and optionally bumps VERSION. Use when\nasked to \"update the docs\", \"sync documentation\", or \"post-ship docs\".\nProactively suggest after a PR is merged or code is shipped. (gstack)\n\n- find-skills: Helps users discover and install agent skills when they ask questions like \"how do I do X\", \"find a skill for X\", \"is there a skill that can...\", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.\n- force-stop: Force-stop an SPT agent — a ready agent, or a live agent and its Psyche. Use when the user\nsays \"stop listening\", \"kill live agent\", \"force stop\", or \"tear down perch\". Session-aware: a\nlive target tears its Psyche down too.\n\n- freeze: Restrict file edits to a specific directory for the session. Blocks Edit and\nWrite outside the allowed path. Use when debugging to prevent accidentally\n\"fixing\" unrelated code, or when you want to scope changes to one module.\nUse when asked to \"freeze\", \"restrict edits\", \"only edit this folder\",\nor \"lock down edits\". (gstack)\n\n- frontend-design: Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.\n- grill-me: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\".\n- grill-with-docs: Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.\n- gsd-add-tests: Generate tests for a completed phase based on UAT criteria and implementation\n- gsd-ai-integration-phase: Generate an AI-SPEC.md design contract for phases that involve building AI systems.\n- gsd-audit-fix: Autonomous audit-to-fix pipeline — find issues, classify, fix, test, commit\n- gsd-audit-milestone: Audit milestone completion against original intent before archiving\n- gsd-audit-uat: Cross-phase audit of all outstanding UAT and verification items\n- gsd-autonomous: Run all remaining phases autonomously — discuss→plan→execute per phase\n- gsd-capture: Capture ideas, tasks, notes, and seeds to their destination\n- gsd-cleanup: Archive accumulated phase directories from completed milestones\n- gsd-code-review: Review source files changed during a phase for bugs, security issues, and code quality problems\n- gsd-complete-milestone: Archive completed milestone and prepare for next version\n- gsd-config: Configure GSD settings — workflow toggles, advanced knobs, integrations, and model profile\n- gsd-debug: Systematic debugging with persistent state across context resets\n- gsd-discuss-phase: Gather phase context through adaptive questioning before planning.\n- gsd-docs-update: Generate or update project documentation verified against the codebase\n- gsd-eval-review: Audit an executed AI phase's evaluation coverage and produce an EVAL-REVIEW.md remediation plan.\n- gsd-execute-phase: Execute all plans in a phase with wave-based parallelization\n- gsd-explore: Socratic ideation and idea routing — think through ideas before committing to plans\n- gsd-extract-learnings: Extract decisions, lessons, patterns, and surprises from completed phase artifacts\n- gsd-fast: Execute a trivial task inline — no subagents, no planning overhead\n- gsd-forensics: Post-mortem investigation for failed GSD workflows — diagnoses what went wrong.\n- gsd-graphify: Build, query, and inspect the project knowledge graph in .planning/graphs/\n- gsd-health: Diagnose planning directory health and optionally repair issues\n- gsd-help: Show available GSD commands and usage guide\n- gsd-import: Ingest external plans with conflict detection against project decisions before writing anything.\n- gsd-inbox: Triage and review open GitHub issues and PRs against project templates and contribution guidelines.\n- gsd-ingest-docs: Bootstrap or merge a .planning/ setup from existing ADRs, PRDs, SPECs, and docs in a repo.\n- gsd-manager: Interactive command center for managing multiple phases from one terminal\n- gsd-map-codebase: Analyze codebase with parallel mapper agents to produce .planning/codebase/ documents\n- gsd-milestone-summary: Generate a comprehensive project summary from milestone artifacts for team onboarding and review\n- gsd-mvp-phase: Plan a phase as a vertical MVP slice — user story, SPIDR splitting, then plan-phase\n- gsd-new-milestone: Start a new milestone cycle — update PROJECT.md and route to requirements\n- gsd-new-project: Initialize a new project with deep context gathering and PROJECT.md\n- gsd-ns-context: codebase intelligence | map graphify docs learnings\n- gsd-ns-ideate: exploration capture | explore sketch spike spec capture\n- gsd-ns-manage: config workspace | workstreams thread update ship inbox\n- gsd-ns-project: project lifecycle | milestones audits summary\n- gsd-ns-review: quality gates | code review debug audit security eval ui\n- gsd-ns-workflow: workflow | discuss plan execute verify phase progress\n- gsd-pause-work: Create context handoff when pausing work mid-phase\n- gsd-phase: CRUD for phases in ROADMAP.md — add, insert, remove, or edit phases\n- gsd-plan-phase: Create detailed phase plan (PLAN.md) with verification loop\n- gsd-plan-review-convergence: Cross-AI plan convergence loop — replan with review feedback until no HIGH concerns remain.\n- gsd-pr-branch: Create a clean PR branch by filtering out .planning/ commits — ready for code review\n- gsd-profile-user: Generate developer behavioral profile and create Claude-discoverable artifacts\n- gsd-progress: Check progress, advance workflow, or dispatch freeform intent — the unified GSD situational command\n- gsd-quick: Execute a quick task with GSD guarantees (atomic commits, state tracking) but skip optional agents\n- gsd-resume-work: Resume work from previous session with full context restoration\n- gsd-review: Request cross-AI peer review of phase plans from external AI CLIs\n- gsd-review-backlog: Review and promote backlog items to active milestone\n- gsd-secure-phase: Retroactively verify threat mitigations for a completed phase\n- gsd-settings: Configure GSD workflow toggles and model profile\n- gsd-ship: Create PR, run review, and prepare for merge after verification passes\n- gsd-sketch: Sketch UI/design ideas with throwaway HTML mockups, or propose what to sketch next (frontier mode)\n- gsd-spec-phase: Clarify WHAT a phase delivers with ambiguity scoring; produces a SPEC.md before discuss-phase.\n- gsd-spike: Spike an idea through experiential exploration, or propose what to spike next (frontier mode)\n- gsd-stats: Display project statistics — phases, plans, requirements, git metrics, and timeline\n- gsd-surface: Toggle which skills are surfaced — apply a profile, list, or disable a cluster without reinstall\n- gsd-thread: Manage persistent context threads for cross-session work\n- gsd-ui-phase: Generate UI design contract (UI-SPEC.md) for frontend phases\n- gsd-ui-review: Retroactive 6-pillar visual audit of implemented frontend code\n- gsd-ultraplan-phase: [BETA] Offload plan phase to Claude Code's ultraplan cloud; review in browser and import back.\n- gsd-undo: Safe git revert. Roll back phase or plan commits using the phase manifest with dependency checks.\n- gsd-update: Update GSD to latest version with changelog display\n- gsd-validate-phase: Retroactively audit and fill Nyquist validation gaps for a completed phase\n- gsd-verify-work: Validate built features through conversational UAT\n- gsd-workspace: Manage GSD workspaces — create, list, or remove isolated workspace environments\n- gsd-workstreams: Manage parallel workstreams — list, create, switch, status, progress, complete, and resume\n- gstack: Fast headless browser for QA testing and site dogfooding. Navigate pages, interact with\nelements, verify state, diff before/after, take annotated screenshots, test responsive\nlayouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or\ntest a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)\n\n- gstack-upgrade: Upgrade gstack to the latest version. Detects global vs vendored install,\nruns the upgrade, and shows what's new. Use when asked to \"upgrade gstack\",\n\"update gstack\", or \"get latest version\".\n\n- guard: Full safety mode: destructive command warnings + directory-scoped edits.\nCombines /careful (warns before rm -rf, DROP TABLE, force-push, etc.) with\n/freeze (blocks edits outside a specified directory). Use for maximum safety\nwhen touching prod or debugging live systems. Use when asked to \"guard mode\",\n\"full safety\", \"lock it down\", or \"maximum safety\". (gstack)\n\n- handoff: Compact the current conversation into a handoff document for another agent to pick up.\n- health: Code quality dashboard. Wraps existing project tools (type checker, linter,\ntest runner, dead code detector, shell linter), computes a weighted composite\n0-10 score, and tracks trends over time. Use when: \"health check\",\n\"code quality\", \"how healthy is the codebase\", \"run all checks\",\n\"quality score\". (gstack)\n\n- improve-codebase-architecture: Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.\n- investigate: Systematic debugging with root cause investigation. Four phases: investigate,\nanalyze, hypothesize, implement. Iron Law: no fixes without root cause.\nUse when asked to \"debug this\", \"fix this bug\", \"why is this broken\",\n\"investigate this error\", or \"root cause analysis\".\nProactively invoke this skill (do NOT debug directly) when the user reports\nerrors, 500 errors, stack traces, unexpected behavior, \"it was working\nyesterday\", or is troubleshooting why something stopped working. (gstack)\n\n- land-and-deploy: Land and deploy workflow. Merges the PR, waits for CI and deploy,\nverifies production health via canary checks. Takes over after /ship\ncreates the PR. Use when: \"merge\", \"land\", \"deploy\", \"merge and verify\",\n\"land it\", \"ship it to production\". (gstack)\n\n- learn: Manage project learnings. Review, search, prune, and export what gstack\nhas learned across sessions. Use when asked to \"what have we learned\",\n\"show learnings\", \"prune stale learnings\", or \"export learnings\".\nProactively suggest when the user asks about past patterns or wonders\n\"didn't we fix this before?\"\n\n- list-agents: List SPT agents and endpoints reachable from this node. Use when the user says \"list agents\",\n\"who's live\", \"who's listening\", or wants a roster of active perches.\n\n- live: Run a live agent session. For past sessions, restores a summarized context.\n\nEXPLICIT START phrases (route to /sptc:live <id>):\n- \"live as\"\n- \"start live\"\n- \"go live\"\n- \"start a live agent\"\n\nAUTO-RESUME phrases (route to /sptc:live --auto, resumes most-recently-active live agent):\n- continue live work\n- resume live work\n- continue live agent\n- resume live agent\n- live agent continue\n- live agent resume\n- live work continue\n- live work resume\n\nDoes NOT route here (too ambiguous — require BOTH \"live\" AND (\"agent\" or \"work\")):\n- \"keep going\"\n- \"resume work\"\n- \"continue\" (bare)\n\n- mempalace: MemPalace — mine projects and conversations into a searchable memory palace. Use when asked about mempalace, memory palace, mining memories, searching memories, or palace setup.\n- mux-send: Send keystrokes to a psmux terminal session. Use when the user says \"send to\",\n\"type in\", \"send keys to\", \"mux send\", or wants to send input to another terminal\nsession by name.\n\n- office-hours: YC Office Hours — two modes. Startup mode: six forcing questions that expose\ndemand reality, status quo, desperate specificity, narrowest wedge, observation,\nand future-fit. Builder mode: design thinking brainstorming for side projects,\nhackathons, learning, and open source. Saves a design doc.\nUse when asked to \"brainstorm this\", \"I have an idea\", \"help me think through\nthis\", \"office hours\", or \"is this worth building\".\nProactively invoke this skill (do NOT answer directly) when the user describes\na new product idea, asks whether something is worth building, wants to think\nthrough design decisions for something that doesn't exist yet, or is exploring\na concept before any code is written.\nUse before /plan-ceo-review or /plan-eng-review. (gstack)\n\n- open-gstack-browser: Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in.\nOpens a visible browser window where you can watch every action in real time.\nThe sidebar shows a live activity feed and chat. Anti-bot stealth built in.\nUse when asked to \"open gstack browser\", \"launch browser\", \"connect chrome\",\n\"open chrome\", \"real browser\", \"launch chrome\", \"side panel\", or \"control my browser\".\n\n- pair-agent: Pair a remote AI agent with your browser. One command generates a setup key and\nprints instructions the other agent can follow to connect. Works with OpenClaw,\nHermes, Codex, Cursor, or any agent that can make HTTP requests. The remote agent\ngets its own tab with scoped access (read+write by default, admin on request).\nUse when asked to \"pair agent\", \"connect agent\", \"share browser\", \"remote browser\",\n\"let another agent use my browser\", or \"give browser access\". (gstack)\n\n- plan-ceo-review: CEO/founder-mode plan review. Rethink the problem, find the 10-star product,\nchallenge premises, expand scope when it creates a better product. Four modes:\nSCOPE EXPANSION (dream big), SELECTIVE EXPANSION (hold scope + cherry-pick\nexpansions), HOLD SCOPE (maximum rigor), SCOPE REDUCTION (strip to essentials).\nUse when asked to \"think bigger\", \"expand scope\", \"strategy review\", \"rethink this\",\nor \"is this ambitious enough\".\nProactively suggest when the user is questioning scope or ambition of a plan,\nor when the plan feels like it could be thinking bigger. (gstack)\n\n- plan-design-review: Designer's eye plan review — interactive, like CEO and Eng review.\nRates each design dimension 0-10, explains what would make it a 10,\nthen fixes the plan to get there. Works in plan mode. For live site\nvisual audits, use /design-review. Use when asked to \"review the design plan\"\nor \"design critique\".\nProactively suggest when the user has a plan with UI/UX components that\nshould be reviewed before implementation. (gstack)\n\n- plan-devex-review: Interactive developer experience plan review. Explores developer personas,\nbenchmarks against competitors, designs magical moments, and traces friction\npoints before scoring. Three modes: DX EXPANSION (competitive advantage),\nDX POLISH (bulletproof every touchpoint), DX TRIAGE (critical gaps only).\nUse when asked to \"DX review\", \"developer experience audit\", \"devex review\",\nor \"API design review\".\nProactively suggest when the user has a plan for developer-facing products\n(APIs, CLIs, SDKs, libraries, platforms, docs). (gstack)\n\n- plan-eng-review: Eng manager-mode plan review. Lock in the execution plan — architecture,\ndata flow, diagrams, edge cases, test coverage, performance. Walks through\nissues interactively with opinionated recommendations. Use when asked to\n\"review the architecture\", \"engineering review\", or \"lock in the plan\".\nProactively suggest when the user has a plan or design doc and is about to\nstart coding — to catch architecture issues before implementation. (gstack)\n\n- propose-issue: Challenge an issue statement before fixing it. Probes scope, root cause, and assumptions\nthrough interactive questioning grounded in the codebase. Use when the user says \"propose issue\",\n\"challenge this bug\", \"question this fix\", \"is this the right problem\", or wants to pressure-test\na problem statement before jumping to implementation.\n\n- qa: Systematically QA test a web application and fix bugs found. Runs QA testing,\nthen iteratively fixes bugs in source code, committing each fix atomically and\nre-verifying. Use when asked to \"qa\", \"QA\", \"test this site\", \"find bugs\",\n\"test and fix\", or \"fix what's broken\".\nProactively suggest when the user says a feature is ready for testing\nor asks \"does this work?\". Three tiers: Quick (critical/high only),\nStandard (+ medium), Exhaustive (+ cosmetic). Produces before/after health scores,\nfix evidence, and a ship-readiness summary. For report-only mode, use /qa-only. (gstack)\n\n- qa-only: Report-only QA testing. Systematically tests a web application and produces a\nstructured report with health score, screenshots, and repro steps — but never\nfixes anything. Use when asked to \"just report bugs\", \"qa report only\", or\n\"test but don't fix\". For the full test-fix-verify loop, use /qa instead.\nProactively suggest when the user wants a bug report without any code changes. (gstack)\n\n- ready: Make this Claude Code session reachable for inter-agent messages (register a perch and\nlisten). Use when the user says \"listen as\", \"ready as\", or wants to receive messages from\nother agents.\n\n- retro: Weekly engineering retrospective. Analyzes commit history, work patterns,\nand code quality metrics with persistent history and trend tracking.\nTeam-aware: breaks down per-person contributions with praise and growth areas.\nUse when asked to \"weekly retro\", \"what did we ship\", or \"engineering retrospective\".\nProactively suggest at the end of a work week or sprint. (gstack)\n\n- review: Pre-landing PR review. Analyzes diff against the base branch for SQL safety, LLM trust\nboundary violations, conditional side effects, and other structural issues. Use when\nasked to \"review this PR\", \"code review\", \"pre-landing review\", or \"check my diff\".\nProactively suggest when the user is about to merge or land code changes. (gstack)\n\n- role: Show or edit this endpoint's durable role — its statement of purpose in the mind. Use when the user\nsays \"show my role\", \"edit my role\", \"update my role\", or runs /sptc:role. Pass a directive to change\nit in words (e.g. /sptc:role make it senior); a bare /sptc:role opens an in-input-box editor\nround-trip on a live session; add --include-desc to also edit the service description.\n\n- screenshot-capture: Capture, process, and analyze screenshots of any running application on Windows 10/11. Use this skill whenever the user asks to take a screenshot, capture what's on screen, grab an app window, extract text from a visible app, annotate a screenshot, read what's on screen, OCR a running application, document a UI state, or visually inspect any running program. Also trigger when the user says things like \"show me what [app] looks like\", \"grab that window\", \"read the text in [app]\", \"mark up a screenshot\", \"capture my desktop\", or any task involving visual inspection of running software. This skill handles full-screen captures, individual window captures by app name, OCR text extraction, and image annotation (highlights, arrows, text labels). Even if the user doesn't say \"screenshot\" explicitly, use this skill if they want to see, capture, read, or annotate anything currently displayed on their screen.\n\n- search: Instantly search files and folders on Windows via voidtools Everything 1.5a HTTP JSON API. Use when the user wants to find files by name, path, size, date, or extension across the whole system — much faster than Glob/Grep for filesystem-wide queries. Triggers on \"find file\", \"where is\", \"locate\", \"search my drive\", \"find all .ext files\", \"everything search\".\n- send: Send a message to another SPT agent. Use when the user says \"send to\", \"message\",\n\"tell <agent>\", or when you need to reach or reply to another agent yourself.\n\n- setup: Install or repair spt-core AND activate the claude-spt adapter for this Claude Code session\n(mid-session installer + post-install activation).\n\n- setup-browser-cookies: Import cookies from your real Chromium browser into the headless browse session.\nOpens an interactive picker UI where you select which cookie domains to import.\nUse before QA testing authenticated pages. Use when asked to \"import cookies\",\n\"login to the site\", or \"authenticate the browser\". (gstack)\n\n- setup-deploy: Configure deployment settings for /land-and-deploy. Detects your deploy\nplatform (Fly.io, Render, Vercel, Netlify, Heroku, GitHub Actions, custom),\nproduction URL, health check endpoints, and deploy status commands. Writes\nthe configuration to CLAUDE.md so all future deploys are automatic.\nUse when: \"setup deploy\", \"configure deployment\", \"set up land-and-deploy\",\n\"how do I deploy with gstack\", \"add deploy config\".\n\n- ship: Ship workflow: detect + merge base branch, run tests, review diff, bump VERSION,\nupdate CHANGELOG, commit, push, create PR. Use when asked to \"ship\", \"deploy\",\n\"push to main\", \"create a PR\", \"merge and push\", or \"get it deployed\".\nProactively invoke this skill (do NOT push/PR directly) when the user says code\nis ready, asks about deploying, wants to push code up, or asks to create a PR. (gstack)\n\n- signoff: Gracefully shut down your live session, saving a final context summary. Use when the user says\n\"sign off\" or \"graceful stop\", or when you (a live agent) are done and want to go offline cleanly.\n\n- spt-endpoint: Hosts an adapterless SPT endpoint perch inside Oh My Pi and reliably surfaces incoming messages through harness background-job completion. Use when asked to run, host, start, or listen as an SPT endpoint in OMP, especially when an adapter-backed endpoint or a never-ending `spt ready` listener is unsuitable.\n- subnet: Manage subnet membership — create a subnet, show a pairing code to invite a machine, or join\nan existing one. Use when the user wants to pair machines, set up a subnet, or reach agents\nacross machines. Cross-machine /sptc:send and live agents depend on it.\n\n- to-prd: Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.\n- trace: Find old conversations in Claude Code session history. Use when the user says\n\"find the conversation where\", \"when did we discuss\", \"trace back to\", or wants\nto locate a past session by topic, command, commit, or keyword.\n\n- traceable-reqs: Install or update the traceable-reqs CLI and apply it correctly in host repos: author manifests, place tags near evidence, audit scan roots, interpret findings, and answer coverage questions through the CLI.\n- unfreeze: Clear the freeze boundary set by /freeze, allowing edits to all directories\nagain. Use when you want to widen edit scope without ending the session.\nUse when asked to \"unfreeze\", \"unlock edits\", \"remove freeze\", or\n\"allow all edits\". (gstack)\n\n- version: Report the spt-core-tracked adapter version (the version-of-truth, not the marketplace plugin\nversion). Use when the user asks the spt or adapter version, or runs /sptc:version.\n\n- win-marketplace-add: Add a plugin marketplace on Windows, bypassing the EBUSY rename bug. Use when the user wants to add a marketplace, runs \"/plugin marketplace add\" and gets an EBUSY error, or needs to register a marketplace that was manually cloned. Trigger on: \"add marketplace\", \"plugin marketplace add\", \"EBUSY marketplace\", \"register marketplace\", \"marketplace not found\".\n\n- write-a-skill: Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.\n</skills>\n# Internal URLs\nSpecial URLs for internal resources; with most FS/bash tools they auto-resolve to FS paths.\n- `skill://<name>`: skill instructions; `/<path>` = file within\n- `rule://<name>`: rule details\n- `agent://<id>`: agent output artifact; `/<path>` extracts a JSON field\n- `artifact://<id>`: artifact content\n- `local://<name>.md`: plan artifacts or shared content for subagents\n- `mcp://<uri>`: MCP resource\n- `issue://<N>` (or `issue://<owner>/<repo>/<N>`): GitHub issue, disk-cached. Bare lists recent issues; `?state=open|closed|all&limit=&author=&label=`.\n- `pr://<N>` (or `pr://<owner>/<repo>/<N>`): GitHub PR, same cache; `?comments=0` drops comments. Bare lists recent PRs; `?state=open|closed|merged|all&limit=&author=&label=`.\n- `omp://`: harness docs; AVOID unless the user asks about the harness itself.\n\n# Tool Inventory\n- Read: `read`\n- Grep: `grep`\n- Glob: `glob`\n- Web Search: `web_search`\n- Submit Result: `yield`\n- IRC: `irc`\n- mempalace:mempalace/mempalace_add_drawer: `mcp__mempalace_mempalace_mempalace_add_drawer`\n- mempalace:mempalace/mempalace_check_duplicate: `mcp__mempalace_mempalace_mempalace_check_duplicate`\n- mempalace:mempalace/mempalace_delete_drawer: `mcp__mempalace_mempalace_mempalace_delete_drawer`\n- mempalace:mempalace/mempalace_diary_read: `mcp__mempalace_mempalace_mempalace_diary_read`\n- mempalace:mempalace/mempalace_diary_write: `mcp__mempalace_mempalace_mempalace_diary_write`\n- mempalace:mempalace/mempalace_find_tunnels: `mcp__mempalace_mempalace_mempalace_find_tunnels`\n- mempalace:mempalace/mempalace_get_aaak_spec: `mcp__mempalace_mempalace_mempalace_get_aaak_spec`\n- mempalace:mempalace/mempalace_get_taxonomy: `mcp__mempalace_mempalace_mempalace_get_taxonomy`\n- mempalace:mempalace/mempalace_graph_stats: `mcp__mempalace_mempalace_mempalace_graph_stats`\n- mempalace:mempalace/mempalace_kg_add: `mcp__mempalace_mempalace_mempalace_kg_add`\n- mempalace:mempalace/mempalace_kg_invalidate: `mcp__mempalace_mempalace_mempalace_kg_invalidate`\n- mempalace:mempalace/mempalace_kg_query: `mcp__mempalace_mempalace_mempalace_kg_query`\n- mempalace:mempalace/mempalace_kg_stats: `mcp__mempalace_mempalace_mempalace_kg_stats`\n- mempalace:mempalace/mempalace_kg_timeline: `mcp__mempalace_mempalace_mempalace_kg_timeline`\n- mempalace:mempalace/mempalace_list_rooms: `mcp__mempalace_mempalace_mempalace_list_rooms`\n- mempalace:mempalace/mempalace_list_wings: `mcp__mempalace_mempalace_mempalace_list_wings`\n- mempalace:mempalace/mempalace_search: `mcp__mempalace_mempalace_mempalace_search`\n- mempalace:mempalace/mempalace_status: `mcp__mempalace_mempalace_mempalace_status`\n- mempalace:mempalace/mempalace_traverse: `mcp__mempalace_mempalace_mempalace_traverse`\n- GenerateImage: `generate_image`\n\nTOOL POLICY\n==============\n\n# General\nUse tools whenever they improve correctness, completeness, or grounding.\n- You MUST complete the task using available tools.\n- SHOULD resolve prerequisites before acting.\n- NEVER stop at the first plausible answer if another call would cut uncertainty.\n- Empty, partial, or suspiciously narrow lookup? Retry with a different strategy.\n- SHOULD parallelize independent calls.\n# Tool I/O\n- Prefer relative paths for `path`-like fields.\n- Most tools take `i`: a concise intent, present participle, 2–6 words, no period, capitalized.\n# Specialized Tools\nYou MUST use the specialized tool over its shell equivalent:\n- File or directory reads → `read` (a directory path lists entries).\n- Regex search → `grep`, not `grep`, `rg`, or `awk`.\n- Globbing → `glob`, not `ls **/*.ext` or `fd`.\n# Exploration\nYou NEVER open a file hoping. Hope is not a strategy.\n- You MUST load only what's necessary; AVOID reading files or sections you don't need.\n- Use `grep` to locate targets.\n- Use `glob` to map structure.\n- Use `read` with offset/limit instead of whole-file reads.\n# Delegation\n\nEXECUTION WORKFLOW\n==============\n\n# 1. Scope\n- Read relevant skills first.\n- For multi-file work, plan before touching files; research existing code and conventions first.\n\n# 2. Research Before Editing\n- Read sections, not snippets. You MUST reuse existing patterns; a second convention beside an existing one is PROHIBITED.\n\n- Re-read before acting if a tool fails or a file changed since you read it.\n\n# 3. Decompose\n- Update todos as you go; skip them for trivial requests. Marking a todo done is a transition: start the next in the same turn.\n- NEVER abandon phases under scope pressure—delegate, don't shrink.\n\n- Plan only what makes the request work. Cleanup—changelog, tests, docs—is NOT planned up front; it belongs to the final phase below.\n\n# 4. Implement\n- Fix problems at the source. Remove obsolete code—no leftover comments, aliases, or re-exports.\n- Prefer updating existing files over creating new ones.\n- Review changes from the user's perspective.\n- Grep instead of guessing.\n- Don't run destructive git commands or delete code you didn't write.\n\n# 5. Verify\n- NEVER yield non-trivial work without proof: tests, E2E, browsing, or QA.\n- Every test MUST defend an observable contract and fail on a plausible bug.\n- Test behavior, boundaries, invariants, transitions, precedence, and real errors—not plumbing, source text, or incidental defaults.\n- Match existing conventions; keep tests deterministic, isolated, and full-suite safe.\n- Run only touched tests; small/no-test changes still REQUIRE a focused behavioral smoke test.\n\n# 6. Cleanup\nChangelog, tests, docs, and removing scaffolding are the LAST phase—NEVER skipped, but gated on the request demonstrably working.\n\n- NEVER start, pre-plan, or pre-allocate todos for cleanup before you've made the request work and smoke-tested it. Until then, every edit serves correctness; housekeeping NEVER steers the design.\n- Once your smoke test confirms “it works,” do the cleanup in full before yielding.\n\nDELIVERY CONTRACT\n==============\n\n<contract>\nInviolable.\n- NEVER yield unless the deliverable is complete. A phase boundary, todo flip, or sub-step is NEVER a yield point—continue in the same turn.\n- NEVER fabricate outputs. Claims about code, tools, tests, docs, or sources MUST be grounded.\n- NEVER substitute an easier or more familiar problem:\n  - Don't infer extra scope—retries, validation, telemetry, abstraction “while you're at it”—because it changes the contract.\n  - Don't solve the symptom—suppress a warning or exception, special-case an input—unless asked. Do the real ask.\n- NEVER ask for what tools, repo context, or files can provide.\n- NEVER punt half-solved work back.\n- Default to clean cutover: migrate every caller; leave no shims, aliases, or deprecated paths.\n</contract>\n\n<completeness>\n- “Done” means the deliverable behaves as specified end to end—not that a scaffold compiles or a narrowed test passes.\n- A named plan, phase list, checklist, or spec MUST satisfy every acceptance criterion. A plausible subset is failure, not partial success.\n- NEVER silently shrink scope. Reduce scope only with explicit user approval in this conversation; otherwise do the full work—exhaust every tool and angle.\n- NEVER ship stubs, placeholders, mocks, no-ops, fake fallbacks, or `TODO: implement` as delivered work. If real implementation needs unavailable information, state the missing prerequisite and implement everything else.\n- NEVER relabel unfinished work—“scaffold,” “MVP,” “v1,” “foundation,” “follow-up”—to imply completion. Not done? Say so.\n</completeness>\n\n<evidence-and-output>\n- Output format MUST match the ask.\n- Every claim about code, tools, tests, docs, or sources MUST be grounded.\n- Mark any claim not directly observed or established as `[INFERENCE]`.\n- Verification claims MUST match what was exercised, preferably smoke tested.\n- No required tool lookup may be skipped when it would cut uncertainty.\n- Be brief in prose, not in evidence, verification, or blocking details.\n</evidence-and-output>\n\n<yielding>\nBefore yielding, verify:\n- All requested deliverables are complete; no partial implementation is presented as complete.\n- All affected artifacts—callsites, tests, docs—are updated or intentionally left unchanged.\n- The output and evidence requirements above are satisfied.\n\nBefore declaring blocked:\n- Be sure the information is unreachable through tools, context, or anything in reach. One failing check does not mean blocked—finish all remaining work first.\n- Still stuck? State exactly what's missing and what you tried.\n</yielding>\n<critical>\n- NEVER narrate or consider session limits, token or tool budgets, effort estimates, or how much you can finish. Not your concern—start as if unbounded; execute or delegate.\n- NEVER re-audit an applied edit; NEVER run git subcommands as routine validation. Tool results are THE verification.\n</critical>\n\nROLE\n===================================\n\nInvestigate the codebase rapidly. Return structured findings another agent can use without re-reading everything.\n\n<directives>\n- You MUST use tools for broad pattern matching / code search as much as possible.\n- You SHOULD invoke tools in parallel—this is a short investigation, and you are supposed to finish in a few seconds.\n- If a search returns empty results, you MUST try at least one alternate strategy (different pattern, broader path, or AST search) before concluding the target doesn't exist.\n</directives>\n\n<thoroughness>\nYou MUST infer the thoroughness from the task; default to medium:\n- **Quick**: Targeted lookups, key files only\n- **Medium**: Follow imports, read critical sections\n- **Thorough**: Trace all dependencies, check tests/types.\n</thoroughness>\n\n<procedure>\n1. Locate relevant code using tools.\n2. Read key sections. NEVER read full files unless they're tiny.\n3. Identify types/interfaces/key functions.\n4. Note dependencies between files.\n</procedure>\n\n<critical>\nYou MUST operate as read-only. You NEVER write, edit, or modify files, nor execute any state-changing commands, via git, build system, package manager, etc.\nYou MUST keep going until complete.\n</critical>\n\nYou are specializing as: **Distributed Systems Forensics**. Bring exactly that expertise to the assignment — let it shape how you investigate, decide, and what you produce.\n\nCONTEXT\n===================================\n\n# Goal\nRoot-cause why ENLYZEAM and HFENDULEAM are entirely sequestered from all other nodes on their subnets, including each other, while `spt daemon status` reports healthy.\n# Constraints\nRead-only investigation. Do not stop/restart daemons, alter live state, edit repo files, run builds, formatters, linters, or broad tests. Current HFENDULEAM evidence: `spt daemon status --json` says running/net_up with SPT_DEV nodes=4 and BIGNET nodes=3, but `spt subnet status --json` returns empty node arrays and `spt endpoint list --json` contains only HFENDULEAM endpoints. Broker image 0.31.0. Logs under %LOCALAPPDATA%/spt-core/logs. Every causal claim needs code/config/log evidence.\n# Contract\nDistinguish control-plane status freshness from actual transport reachability. Produce exact path/line/timestamp anchors and falsifiable predictions. No remediation that mutates live state.\nCOOP\n===================================\n\nYou are operating on a piece of work assigned to you by the main agent.\n# IRC Peers\nYou can reach other live agents via the `irc` tool. Your id is `IsolationLogRCA`. Currently visible peers:\n- `Main` — main (main, running)\n- `FreezeLogTimeline` — Production Log Forensics (sub, parked)\n- `FreezeCodePath` — Concurrency RCA Investigator (sub, parked)\n- `IsolationCodeRCA` — Network Protocol Investigator (sub, running)\nIdle/parked peers are not gone: messaging them wakes (or revives) them.\n\nUse `irc` only for quick coordination, never long-form content. Address peers by id or use `\"all\"` to broadcast.\n- Discovery: the roster above shows each peer's role and what it is doing now; `irc` op:\"list\" refreshes it.\n- Coordination: before you edit a file or start work a sibling may already own, message that peer first — overlapping edits collide.\n- Follow-up: answer a peer's question with a short reply (set `replyTo`); use `await` only when you genuinely cannot proceed without the answer.\n\nCOMPLETION\n===================================\n\nNo TODO tracking, no progress updates. Execute; report results with `yield`.\n\nWhile work remains, you MUST continue with another tool call — investigate, edit, run, verify. Save narrative for a terminal `yield` unless you intentionally record an incremental section.\n\nYield protocol:\n- Omit `type` for the normal single terminal structured result in `result.data`.\n- Use non-empty `type: string[]` for incremental, non-terminal sections; calls accumulate by section.\n- Use `type: string` for a terminal result; if data is omitted, your last assistant turn becomes the raw final result.\n\nThis is your only way to return a final result. For structured results, you NEVER put JSON in plain text or substitute a text summary for `result.data`.\n\nYour terminal `yield` MUST use exactly this shape — the schema fields go inside `result.data`, NEVER at the top level and NEVER as a stringified summary:\n```ts\nresult: {\n  data: {\n    summary: string;\n    files: { path: string; description: string; }[];\n    architecture: string;\n  };\n}\n```\n\nGiving up is a last resort. If truly blocked, you MUST terminal-yield `result.error` describing what you tried and the exact blocker.\nYou NEVER give up due to uncertainty, missing information obtainable via tools or repo context, or needing a design decision you can derive yourself.\n\nYou MUST keep going until this ticket is closed. This matters.\n\nPROJECT\n===================================\n\n<workstation>\n- OS: win32 10.0.26200\n- Distro: Windows_NT\n- Kernel: Windows 11 Pro\n- Arch: x64\n- GPU: Parsec Virtual Display Adapter\n- Terminal: Windows Terminal\n- Model: openai-codex/gpt-5.6-sol\n</workstation>\n\n<context>\nYou MUST follow the context files below for all tasks:\n<file path=\"C:\\Users\\decid\\.claude\\CLAUDE.md\">\n## Reference Documents\n\nThe `~/.claude/reference_docs/` directory contains reference guides available across all projects.\n\n- **[claude-code-hooks.md](reference_docs/claude-code-hooks.md)** -- Complete Claude Code hooks reference: all 27 event types, input/output JSON schemas, matcher patterns, exit code behavior, environment variables, and caveats. Consult this when building or debugging hooks.\n</file>\n</context>\nThe context files above are loaded automatically. You NEVER `grep`/`glob` for `AGENTS.md`, `CLAUDE.md`, `.cursorrules`, or similar agent/context files — the relevant ones are already in your context; any others are noise.\nToday is 2026-07-14, and the current working directory is 'C:/Users/decid/Documents/projects'.\n\n<critical>\n- Each response MUST advance the task. There is no stopping condition other than completion.\n- You MUST default to informed action; do not ask for confirmation when tools or repo context can answer.\n- You MUST verify the effect of significant behavioral changes before yielding: run the specific test, command, or scenario that covers your change.\n</critical>","task":"Complete the assignment below, thoroughly:\n\n# Target\nHFENDULEAM live logs/config/state and safe read-only SPT CLI queries. Non-goal: daemon lifecycle or writes.\n# Change\nConstruct a feedback loop proving cross-node isolation; identify when remote nodes disappeared and correlate transport/dial/meet/auth/key/subnet errors. Inspect current network listeners/connections with safe OS read-only commands if useful. Explain why daemon status can remain green.\n# Acceptance\nReturn concrete failing route evidence, affected subnet/node keys, onset/cadence, and strongest log-grounded root candidate with alternatives falsified.","tools":["read","grep","glob","web_search","yield","irc","mcp__mempalace_mempalace_mempalace_add_drawer","mcp__mempalace_mempalace_mempalace_check_duplicate","mcp__mempalace_mempalace_mempalace_delete_drawer","mcp__mempalace_mempalace_mempalace_diary_read","mcp__mempalace_mempalace_mempalace_diary_write","mcp__mempalace_mempalace_mempalace_find_tunnels","mcp__mempalace_mempalace_mempalace_get_aaak_spec","mcp__mempalace_mempalace_mempalace_get_taxonomy","mcp__mempalace_mempalace_mempalace_graph_stats","mcp__mempalace_mempalace_mempalace_kg_add","mcp__mempalace_mempalace_mempalace_kg_invalidate","mcp__mempalace_mempalace_mempalace_kg_query","mcp__mempalace_mempalace_mempalace_kg_stats","mcp__mempalace_mempalace_mempalace_kg_timeline","mcp__mempalace_mempalace_mempalace_list_rooms","mcp__mempalace_mempalace_mempalace_list_wings","mcp__mempalace_mempalace_mempalace_search","mcp__mempalace_mempalace_mempalace_status","mcp__mempalace_mempalace_mempalace_traverse","generate_image"],"spawns":"","readSummarize":false,"outputSchema":{"properties":{"summary":{"metadata":{"description":"Brief summary of findings and conclusions"},"type":"string"},"files":{"metadata":{"description":"Files examined with relevant code references"},"elements":{"properties":{"path":{"metadata":{"description":"Project-relative path or paths to the most relevant code reference(s), optionally suffixed with line ranges like `:12-34` when relevant"},"type":"string"},"description":{"metadata":{"description":"Section contents"},"type":"string"}}}},"architecture":{"metadata":{"description":"Brief explanation of how pieces connect"},"type":"string"}}}}
{"type":"message","id":"ba3a3ac0","parentId":"1944420f","timestamp":"2026-07-14T22:43:30.591Z","message":{"role":"user","content":[{"type":"text","text":"Complete the assignment below, thoroughly:\n\n# Target\nHFENDULEAM live logs/config/state and safe read-only SPT CLI queries. Non-goal: daemon lifecycle or writes.\n# Change\nConstruct a feedback loop proving cross-node isolation; identify when remote nodes disappeared and correlate transport/dial/meet/auth/key/subnet errors. Inspect current network listeners/connections with safe OS read-only commands if useful. Explain why daemon status can remain green.\n# Acceptance\nReturn concrete failing route evidence, affected subnet/node keys, onset/cadence, and strongest log-grounded root candidate with alternatives falsified."}],"attribution":"agent","timestamp":1784069010587}}
{"type":"message","id":"cb2bd3e2","parentId":"ba3a3ac0","timestamp":"2026-07-14T22:43:37.224Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning safe CLI filesystem inspection**"},{"type":"toolCall","id":"call_CdrRliOaUo4GV41yCj7jkPWE|fc_050f56f290a937ae016a56bb9926c88196a04015271a0b07be","name":"glob","arguments":{"i":"Locating SPT repositories","path":"C:/Users/decid/Documents/projects/**/spt*","hidden":true,"gitignore":false,"limit":100}},{"type":"toolCall","id":"call_7wABAcTR10FJKkhPFP1x4kwD|fc_050f56f290a937ae016a56bb9926d88196b3405cdc11bb944c","name":"glob","arguments":{"i":"Listing live SPT logs","path":"C:/Users/decid/AppData/Local/spt-core/logs/**/*","hidden":true,"gitignore":false,"limit":300}},{"type":"toolCall","id":"call_o8xnHoOYouG1KcnrsMV80IAc|fc_050f56f290a937ae016a56bb9926e08196a6fc385ee3cebb96","name":"glob","arguments":{"i":"Locating SPT configs","path":"C:/Users/decid/AppData/Local/spt-core/**/*","hidden":true,"gitignore":false,"limit":300}},{"type":"toolCall","id":"call_REaafL1Y7291DpqyHu1oPxQO|fc_050f56f290a937ae016a56bb9926e881969c373c49b61a6d5d","name":"glob","arguments":{"i":"Locating user SPT state","path":"C:/Users/decid/.spt/**/*","hidden":true,"gitignore":false,"limit":300}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":17142,"output":272,"cacheRead":0,"cacheWrite":0,"totalTokens":17414,"reasoningTokens":64,"cost":{"input":0.08571000000000001,"output":0.00816,"cacheRead":0,"cacheWrite":0,"total":0.09387000000000001}},"stopReason":"toolUse","timestamp":1784069010640,"responseId":"resp_050f56f290a937ae016a56bb933b9c8196976b898716cbc730","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bb943b3081968ab337ea55ea7e40","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVruZ2JCj_N5PhEpjgGpp21J0Am-PICk6liZrwQ6hU_J80wgkvcUCmDkbmWo4asDgt62sr2MoqesGeMgM6iIcxuxb8Q1YSufSphyEmjh7qTXEDf7o8BbFFE8vPcXOZdMJIW7BuAtkAZCcLR9nyiKuXxH_HPHBsbEYE_5xgbdOizYODq6HCbE_f6VGzhrUIs2l2sWnEhn7v6w8rANrg3R8jWPvs2_mo5FAFhwIdWvU2ymvuvdFNaNYJ_e6FAwhyoq-1Sry_M4k6ZDkYvW70U8hh5-wey0z5q2fm7ZOpUtpwivciOMFDoQCpx7DdOJv3v8qUSk_BGvTnh4jpVknBv3Xtsqe0174bY0kVjMtTACrwimvz8OaEd1o75LP8fm-iUUdbqLkXLXKLSmI5DmcxKEBaJbKSMU5jWge5nviIQ4xKc6nDXKZ_vmTEpqsb2TSW24BXqKwzREc9pMUAmxbma1Oo1YeHzk4aByuAzqBVYfyiROgFAEBVdoR7sqgeIyiwueEbJPd30Axb_VYyJ3_89dWq635t2Dc9glWUDqsDUVUMBnhvNqP6aWGyLG7jTGX2eovLPfllu61jpD85mJkR7jIBefeQUiWZ8O9t8y_L6cqW38aQhYzP1CxvlxjJRdPoX9IfeSANbKP1z61FHxESvabmIx5Mhjk_dMayhEJJF_CWVPR_mWXy2zk-AuXL7vPSIapjBCF8wwsfbSNMPgZVn9TrhFz6PPLDcV6rx2zwwP9t3TTIiGWZafZfpFiNM-GghXnjF9UfEjKpOJyazyrk7XEcAEhBn-aH-V7dZSxevnQirKoh9ztUEfDJvyBrjeLmKFQYPCa-x1Rmc9MNR2D7xzh8YmBfRB645NrbJOEzZhIyEzC6OJY7SO-QiZxa5UmcBIEW7LBRarAH7mqkDNfgxYgofDzmrr3trmFqqtM4598BWTc_WYTUEOuctsDA9bbjTlvhA42RJvmXyktmbdKKfWhAeGT-1hn5NFIsHpud5ppNPv3v8weJCQX0797i_bisiiMoYMnPnwTXgGTKcci1uDfQvhtFthh6XWJSZsejNpj8JBWNFesY8cIee3PRM_zoMxvYPgvdJaT9P64lj4hJIYVqQH_3Q1QvZsMzlS2BoPxEdjyFRr8k2NChhwf7eia81HyLcVZ_VQ_pgZaxZCvu9394lFQtBUme7WLGUSbCIyX87bTUs1mePVP7DXyXTNqACKzfo-ZtTowhr2oURcXMtEAyTP7IeIy_rUo3aJ9bSO7ajfIm2T8SgijskXl0QEQSlYTW2UKWmINTcs2HmPmGyiEYhe1Lw==","summary":[{"type":"summary_text","text":"**Planning safe CLI filesystem inspection**"}]},{"id":"fc_050f56f290a937ae016a56bb9926c88196a04015271a0b07be","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating SPT repositories\",\"path\":\"C:/Users/decid/Documents/projects/**/spt*\",\"hidden\":true,\"gitignore\":false,\"limit\":100}","call_id":"call_CdrRliOaUo4GV41yCj7jkPWE","name":"glob"},{"id":"fc_050f56f290a937ae016a56bb9926d88196b3405cdc11bb944c","type":"function_call","status":"completed","arguments":"{\"i\":\"Listing live SPT logs\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/**/*\",\"hidden\":true,\"gitignore\":false,\"limit\":300}","call_id":"call_7wABAcTR10FJKkhPFP1x4kwD","name":"glob"},{"id":"fc_050f56f290a937ae016a56bb9926e08196a6fc385ee3cebb96","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating SPT configs\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/**/*\",\"hidden\":true,\"gitignore\":false,\"limit\":300}","call_id":"call_o8xnHoOYouG1KcnrsMV80IAc","name":"glob"},{"id":"fc_050f56f290a937ae016a56bb9926e881969c373c49b61a6d5d","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating user SPT state\",\"path\":\"C:/Users/decid/.spt/**/*\",\"hidden\":true,\"gitignore\":false,\"limit\":300}","call_id":"call_REaafL1Y7291DpqyHu1oPxQO","name":"glob"}]},"duration":6583.679899990559,"ttft":1626.4419000148773,"contextSnapshot":{"promptTokens":17142,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_CdrRliOaUo4GV41yCj7jkPWE|fc_050f56f290a937ae016a56bb9926c88196a04015271a0b07be","toolName":"glob","startedAt":"2026-07-14T22:43:37.225Z","args":{"path":"C:/Users/decid/Documents/projects/**/spt*"},"intent":"Locating SPT repositories"},"id":"9028fd81","parentId":"cb2bd3e2","timestamp":"2026-07-14T22:43:37.225Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_7wABAcTR10FJKkhPFP1x4kwD|fc_050f56f290a937ae016a56bb9926d88196b3405cdc11bb944c","toolName":"glob","startedAt":"2026-07-14T22:43:37.225Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/**/*"},"intent":"Listing live SPT logs"},"id":"bbbb3ff4","parentId":"9028fd81","timestamp":"2026-07-14T22:43:37.225Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_o8xnHoOYouG1KcnrsMV80IAc|fc_050f56f290a937ae016a56bb9926e08196a6fc385ee3cebb96","toolName":"glob","startedAt":"2026-07-14T22:43:37.225Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/**/*"},"intent":"Locating SPT configs"},"id":"6d1d5149","parentId":"bbbb3ff4","timestamp":"2026-07-14T22:43:37.225Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_REaafL1Y7291DpqyHu1oPxQO|fc_050f56f290a937ae016a56bb9926e881969c373c49b61a6d5d","toolName":"glob","startedAt":"2026-07-14T22:43:37.225Z","args":{"path":"C:/Users/decid/.spt/**/*"},"intent":"Locating user SPT state"},"id":"9b7b93b9","parentId":"6d1d5149","timestamp":"2026-07-14T22:43:37.225Z"}
{"type":"message","id":"e6b05dbe","parentId":"9b7b93b9","timestamp":"2026-07-14T22:43:37.229Z","message":{"role":"toolResult","toolCallId":"call_REaafL1Y7291DpqyHu1oPxQO|fc_050f56f290a937ae016a56bb9926e881969c373c49b61a6d5d","toolName":"glob","content":[{"type":"text","text":"Path not found: C:/Users/decid/.spt"}],"details":{},"isError":true,"timestamp":1784069017228}}
{"type":"message","id":"3318c3a7","parentId":"e6b05dbe","timestamp":"2026-07-14T22:43:37.229Z","message":{"role":"toolResult","toolCallId":"call_7wABAcTR10FJKkhPFP1x4kwD|fc_050f56f290a937ae016a56bb9926d88196b3405cdc11bb944c","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\ndaemon.stderr.log\ndaemon.stderr.log.1"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs","fileCount":2,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069017229}}
{"type":"message","id":"9ce465b6","parentId":"3318c3a7","timestamp":"2026-07-14T22:43:37.336Z","message":{"role":"toolResult","toolCallId":"call_o8xnHoOYouG1KcnrsMV80IAc|fc_050f56f290a937ae016a56bb9926e08196a6fc385ee3cebb96","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/\nbrain.ready\ndaemon-effects.log\n## owlery/\n### mobile-gw/\n### hertz/\n### doyle/\ninfo.json\ndigest.log\n.idle\n### lia/\ninfo.json\n### todlando/\n## identity/\nepoch\npump-heartbeat.json\npump-ops.json\npeer-addrs.json\nroster.json\n### registry/\nheard.meta\nSPT_DEV.json\nBS-Resources.json\nBIGNET.json\n## logs/\ndaemon.stderr.log\n## adapters/_github/SaberMage-claude-spt/\nhook-trace.log\n### state/digest/\ndoyle.pos\n## tracked/\n### .seed.git/\n#### objects/\n##### e1/\nf1531628b44ce6be172972c28a8d70deab07db\n##### e8/\n1884421140a5d840e7059844d9ee5971bd601c\nde6269894ae2a2290dc95f96c0b784a0604eb1\n##### e2/\n88effdbf1d1ec85f3d189180d32f3a03dd2a35\n##### a7/\nd519790660be33b7cc9a93fd636f93f2ccd1b7\n##### 9f/\nc93d27e80fa119a405911d6388072e5a032dd1\n2423b4c1074fd9b27539a4ed67d6ba63f3c9e3\n##### 61/\na3b521ca2fe662e8daf4bbdeb51d5930e8ea2c\n2e6743262379d694c6739889ae386de85e44fe\n##### 89/\n06f02c12c41d9a3976552501405a0d126d56bc\n##### 5c/\n631d983a44ffdadc42b3a6f61ca49d093fe8e4\n##### 6b/\n60b871bc4ee3467669d1a8d433586835d745a7\n##### 76/\ncc7c43a22d5f2e6b1aa22bbd56a4d5edcc865d\n30b1527e10e1c7fc14a1ac6227dff5814907b0\n##### de/\nd9d734f04d98cd4e2147ae995613c50b2d918a\n1e2b847c9989ecf394def92bef773bb9f202ae\na6ec5d32138dfeed289f9a25e577f4a419d492\n##### ec/\na7d4961576ffdeaae4074348910ccce8cf7c66\n500171719da0929c4e8821b076d68e096948d2\n##### c9/\n315c8c32196c9f882926c19e3d9360b3f89df2\n##### 05/\n421426385053e6d6fc34d8844ad4d9f8bf43d3\n##### a2/\n328155391b41b68fd15da618a7b7da434cf3e6\ne73188718c461446dc270f4daaa1b855ecc3be\n##### 96/\n75f0bdf4f6e149861c277507698ca17abab9fc\n##### fe/\n6f44661d00327718e668ca20fc72a03bef95cb\ndf986526f433b74439784e2e7904422f73b0ff\n##### 87/\nfbaf0896a3d6c3d26df50dcddcf4dafa8e60eb\n##### 4c/\n50841e4982fc849537b667c632623e13031848\n##### 8c/\ne5259cdd44b28a3ff4b17ec647ceea278314f1\n81b9b67cd2d23ea070553c157e36f1ec642ab5\n##### f6/\ne0668b22c2e3ee02866b9201ccf604b6963262\n##### 8b/\n3b1ee2ddbeb5e20b7dacf6a23b8c0ff10696e9\na64482da962b9097ab71166875cbd0dc3ede0e\n##### bd/\n40f337ed8a838de77650ecca142d827bf8916c\n##### b0/\nae5661d06dc6f51fcd6a73af9d19433360bb25\n##### f4/\n35cd8b8742ae190c20ed85d519a986d2fc720e\n##### 2b/\n41d76b6d6e3879aeef133d08078f2cf57a2b28\nd30cc51d05130fe16faaee56c498f6641cadc5\n##### 14/\n85a7b6875f9bd8e13f3965f40293c0ea71718e\n##### d5/\nc2793350d77e2b842df23452f0edba85c80693\n##### 73/\na4fb59c96d96fddb9629bd8be24628dba4da39\n##### 6e/\naaf717a12fb3a4e627e8ac6341893175c16a2f\ndb6510cc1ae2a5186168b0b8d812838a126099\n##### 0c/\nc580d4136f053d4e3960dfaa87fab743f8dad9\n##### 00/\nd21dfb034d2ad6e59abf3ca87e2b13adb6d9bf\n##### 75/\n9b3b711a50e52bfd62cb039d1bcfe2ce017a33\n##### 6a/\nb7b9b508932ac3b766f63ad924cba321b5d386\n##### 51/\n5a54d3c126cf8d373ef79460d36d63831520e3\n1fbb9c8356d0d8ddaae08a4993dfcff36c27c8\n##### 18/\nec21b6d1cce7ab7161b5684fff6d85ab6d52b1\n##### 37/\na0736b023d190c5073ace0bcd7d102925717ba\n##### 78/\n237cdcd960ad9f4b949967f3a90fa88cfe7852\nbf768406a059c45ab2cbd0abb294658dc51eff\n##### 86/\n80b39ca098037664f69e2c3a0a215c0b54a517\n##### 1e/\n171946fbb1a516f701a8eb4aba8ebed7d7cb68\n##### 41/\n5240b208ded58b2befb9593712d341c81911ac\n##### 2a/\n41b5d520ab34051893301ae9c6b3b57a233ab3\n3797c33c097a96b331fd7d7bb8e762d23b1232\n##### 5f/\nb24549b7437b4f9bd021cb85de28440141d3a5\n##### 55/\n85594d44aa6cd0f612732139cb826df7cf24e1\n##### b1/\n52801593b4dc9c0752cf7f14eda13c52983e6e\n##### b8/\n14ff649133fa2243e63bbccd56b7363e6cd7d6\n##### 58/\nf8ff8dfe4df9e7a967431d5dcef7631b70b3dc\n##### f3/\n1c9d245c71b4df9fae42da5aef820955627e7f\n##### 90/\nc46f633d73bacec63cd0d0f793d57be24e1dda\n##### e9/\n89d001678924afbb6f1d04ff25f4d64dd01d25\n##### e4/\nd6c935d15cf5fb9d31a56835070a2d0dd617b8\n##### c1/\n93fdfd0b2ee86bbbbfd1b549de15c312e05cba\n##### 0d/\ned9c6b4e926739af7245b614de92101c1fa6ab\neb2366bfdb4b3ec344c45052c5034a1a967cfd\n##### bf/\nd2a6d8e05f736e2d7c56bc48413d6d518e7589\n##### 54/\n4327c905bccdf7a65deba26068e63ab15c2c2f\n##### 6f/\n2ef89afeef51e5a9c268021049b431a03c9c75\n##### b3/\n5aed9ebc439341fe106c7a0ff7bccbaa4e7b76\n##### ce/\nf1af26ba38ff4ee84bd06636794599a6367a09\n##### 93/\n6c566a4202b109c1e5cd330c84726072e60fba\n##### 7b/\n3507895019c0b53ac19a3406e6d4477454d08c\n##### d9/\n83aab8235abf5210485bef46b780fbe088537d\n##### c0/\n756775b73407af4b77c635c24b72ca8ad60830\n##### 2c/\n1472160f8ff55af4600d47869eb830bb058730\n##### 9d/\n6d55b97e60cd8ab9d0957232f5d149d34b2053\n##### d6/\na017b73ca49b8cfc3d7812abd47193d012e624\n##### 0a/\n7d7c73a2400ccb010c822cfe292d35d63f22c2\n##### 12/\nda36d2696edac7004fb228a90802fc624c0f97\nb0fd29897bb9096fa3ea27c6e170e90d5adb62\n##### a1/\nf5a93dbd4853245e072b102b5316f0f000f606\n##### e3/\n#### refs/heads/\np-github-com-sabermage-spt-core\na-doyle\n#### worktrees/\n##### github-com-sabermage-spt-core/\nCOMMIT_EDITMSG\nindex\n###### logs/\nHEAD\n##### doyle/\nCOMMIT_EDITMSG\nindex\n###### logs/\nHEAD\n#### logs/refs/heads/\np-github-com-sabermage-spt-core\na-doyle\n### projects/github-com-sabermage-spt-core/doyle/\nproject-context.md\n### agents/doyle/\nlive-context.md\n## scratch/pump/\n\n[200 results limit reached. Use limit=400 for more]"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core","fileCount":200,"files":["C:/Users/decid/AppData/Local/spt-core/owlery/mobile-gw/","C:/Users/decid/AppData/Local/spt-core/owlery/hertz/","C:/Users/decid/AppData/Local/spt-core/brain.ready","C:/Users/decid/AppData/Local/spt-core/identity/","C:/Users/decid/AppData/Local/spt-core/identity/epoch","C:/Users/decid/AppData/Local/spt-core/owlery/","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/info.json","C:/Users/decid/AppData/Local/spt-core/owlery/lia/","C:/Users/decid/AppData/Local/spt-core/owlery/lia/info.json","C:/Users/decid/AppData/Local/spt-core/owlery/todlando/","C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/","C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/hook-trace.log","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/refs/heads/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/github-com-sabermage-spt-core/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/logs/refs/heads/p-github-com-sabermage-spt-core","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/github-com-sabermage-spt-core/logs/HEAD","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/refs/heads/p-github-com-sabermage-spt-core","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e1/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e1/f1531628b44ce6be172972c28a8d70deab07db","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/github-com-sabermage-spt-core/COMMIT_EDITMSG","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e8/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/github-com-sabermage-spt-core/index","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e8/1884421140a5d840e7059844d9ee5971bd601c","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e8/de6269894ae2a2290dc95f96c0b784a0604eb1","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e2/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e2/88effdbf1d1ec85f3d189180d32f3a03dd2a35","C:/Users/decid/AppData/Local/spt-core/tracked/projects/github-com-sabermage-spt-core/doyle/","C:/Users/decid/AppData/Local/spt-core/tracked/projects/github-com-sabermage-spt-core/doyle/project-context.md","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/doyle/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/logs/refs/heads/a-doyle","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/refs/heads/a-doyle","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/doyle/logs/HEAD","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/a7/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/a7/d519790660be33b7cc9a93fd636f93f2ccd1b7","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/doyle/COMMIT_EDITMSG","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/9f/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/worktrees/doyle/index","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/9f/c93d27e80fa119a405911d6388072e5a032dd1","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/61/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/61/a3b521ca2fe662e8daf4bbdeb51d5930e8ea2c","C:/Users/decid/AppData/Local/spt-core/tracked/agents/doyle/","C:/Users/decid/AppData/Local/spt-core/tracked/agents/doyle/live-context.md","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/.idle","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/state/digest/doyle.pos","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/89/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/89/06f02c12c41d9a3976552501405a0d126d56bc","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/5c/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/5c/631d983a44ffdadc42b3a6f61ca49d093fe8e4","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6b/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6b/60b871bc4ee3467669d1a8d433586835d745a7","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/76/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/76/cc7c43a22d5f2e6b1aa22bbd56a4d5edcc865d","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/de/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/de/d9d734f04d98cd4e2147ae995613c50b2d918a","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/ec/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/ec/a7d4961576ffdeaae4074348910ccce8cf7c66","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/c9/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/c9/315c8c32196c9f882926c19e3d9360b3f89df2","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/05/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/05/421426385053e6d6fc34d8844ad4d9f8bf43d3","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/a2/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/a2/328155391b41b68fd15da618a7b7da434cf3e6","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/61/2e6743262379d694c6739889ae386de85e44fe","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/96/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/96/75f0bdf4f6e149861c277507698ca17abab9fc","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/fe/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/fe/6f44661d00327718e668ca20fc72a03bef95cb","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/87/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/87/fbaf0896a3d6c3d26df50dcddcf4dafa8e60eb","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/4c/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/4c/50841e4982fc849537b667c632623e13031848","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/8c/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/8c/e5259cdd44b28a3ff4b17ec647ceea278314f1","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/f6/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/f6/e0668b22c2e3ee02866b9201ccf604b6963262","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/8b/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/8b/3b1ee2ddbeb5e20b7dacf6a23b8c0ff10696e9","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/76/30b1527e10e1c7fc14a1ac6227dff5814907b0","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/bd/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/bd/40f337ed8a838de77650ecca142d827bf8916c","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b0/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b0/ae5661d06dc6f51fcd6a73af9d19433360bb25","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/f4/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/f4/35cd8b8742ae190c20ed85d519a986d2fc720e","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2b/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2b/41d76b6d6e3879aeef133d08078f2cf57a2b28","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/14/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/14/85a7b6875f9bd8e13f3965f40293c0ea71718e","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/d5/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/d5/c2793350d77e2b842df23452f0edba85c80693","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/73/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/73/a4fb59c96d96fddb9629bd8be24628dba4da39","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/9f/2423b4c1074fd9b27539a4ed67d6ba63f3c9e3","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6e/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6e/aaf717a12fb3a4e627e8ac6341893175c16a2f","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/0c/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/0c/c580d4136f053d4e3960dfaa87fab743f8dad9","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/8b/a64482da962b9097ab71166875cbd0dc3ede0e","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/a2/e73188718c461446dc270f4daaa1b855ecc3be","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/00/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/00/d21dfb034d2ad6e59abf3ca87e2b13adb6d9bf","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/75/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/75/9b3b711a50e52bfd62cb039d1bcfe2ce017a33","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6a/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6a/b7b9b508932ac3b766f63ad924cba321b5d386","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6e/db6510cc1ae2a5186168b0b8d812838a126099","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/51/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/51/5a54d3c126cf8d373ef79460d36d63831520e3","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/18/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/18/ec21b6d1cce7ab7161b5684fff6d85ab6d52b1","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/37/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/37/a0736b023d190c5073ace0bcd7d102925717ba","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/78/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/78/237cdcd960ad9f4b949967f3a90fa88cfe7852","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/de/1e2b847c9989ecf394def92bef773bb9f202ae","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/86/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/86/80b39ca098037664f69e2c3a0a215c0b54a517","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/fe/df986526f433b74439784e2e7904422f73b0ff","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/ec/500171719da0929c4e8821b076d68e096948d2","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/1e/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/1e/171946fbb1a516f701a8eb4aba8ebed7d7cb68","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/41/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/41/5240b208ded58b2befb9593712d341c81911ac","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2a/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2a/41b5d520ab34051893301ae9c6b3b57a233ab3","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/5f/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/5f/b24549b7437b4f9bd021cb85de28440141d3a5","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/55/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/55/85594d44aa6cd0f612732139cb826df7cf24e1","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b1/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b1/52801593b4dc9c0752cf7f14eda13c52983e6e","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b8/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b8/14ff649133fa2243e63bbccd56b7363e6cd7d6","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/58/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/58/f8ff8dfe4df9e7a967431d5dcef7631b70b3dc","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/f3/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/90/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/f3/1c9d245c71b4df9fae42da5aef820955627e7f","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/90/c46f633d73bacec63cd0d0f793d57be24e1dda","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e9/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e9/89d001678924afbb6f1d04ff25f4d64dd01d25","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e4/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e4/d6c935d15cf5fb9d31a56835070a2d0dd617b8","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/c1/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/c1/93fdfd0b2ee86bbbbfd1b549de15c312e05cba","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/0d/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/0d/ed9c6b4e926739af7245b614de92101c1fa6ab","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/bf/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/bf/d2a6d8e05f736e2d7c56bc48413d6d518e7589","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/54/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/54/4327c905bccdf7a65deba26068e63ab15c2c2f","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6f/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/6f/2ef89afeef51e5a9c268021049b431a03c9c75","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b3/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/b3/5aed9ebc439341fe106c7a0ff7bccbaa4e7b76","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/ce/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/ce/f1af26ba38ff4ee84bd06636794599a6367a09","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/93/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/93/6c566a4202b109c1e5cd330c84726072e60fba","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2b/d30cc51d05130fe16faaee56c498f6641cadc5","C:/Users/decid/AppData/Local/spt-core/scratch/pump/","C:/Users/decid/AppData/Local/spt-core/daemon-effects.log","C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json","C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","C:/Users/decid/AppData/Local/spt-core/identity/roster.json","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/7b/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/7b/3507895019c0b53ac19a3406e6d4477454d08c","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/d9/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/de/a6ec5d32138dfeed289f9a25e577f4a419d492","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/d9/83aab8235abf5210485bef46b780fbe088537d","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/c0/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/c0/756775b73407af4b77c635c24b72ca8ad60830","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2c/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2c/1472160f8ff55af4600d47869eb830bb058730","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/8c/81b9b67cd2d23ea070553c157e36f1ec642ab5","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/9d/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/9d/6d55b97e60cd8ab9d0957232f5d149d34b2053","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/d6/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/d6/a017b73ca49b8cfc3d7812abd47193d012e624","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/2a/3797c33c097a96b331fd7d7bb8e762d23b1232","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/0a/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/0a/7d7c73a2400ccb010c822cfe292d35d63f22c2","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/51/1fbb9c8356d0d8ddaae08a4993dfcff36c27c8","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/12/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/12/da36d2696edac7004fb228a90802fc624c0f97","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/12/b0fd29897bb9096fa3ea27c6e170e90d5adb62","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/78/bf768406a059c45ab2cbd0abb294658dc51eff","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/0d/eb2366bfdb4b3ec344c45052c5034a1a967cfd","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/a1/","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/a1/f5a93dbd4853245e072b102b5316f0f000f606","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/objects/e3/"],"truncated":true,"resultLimitReached":200,"cwd":"C:\\Users\\decid\\Documents\\projects","meta":{"limits":{"resultLimit":{"reached":200,"suggestion":400}}}},"isError":false,"timestamp":1784069017336}}
{"type":"message","id":"a84fc4fc","parentId":"9ce465b6","timestamp":"2026-07-14T22:43:42.236Z","message":{"role":"toolResult","toolCallId":"call_CdrRliOaUo4GV41yCj7jkPWE|fc_050f56f290a937ae016a56bb9926c88196a04015271a0b07be","toolName":"glob","content":[{"type":"text","text":"No files found matching pattern\nglob timed out after 5s; returning 0 partial matches — narrow the pattern instead of retrying blindly"}],"details":{"scopePath":".","fileCount":0,"files":[],"truncated":true,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"useless":true,"timestamp":1784069022236}}
{"type":"message","id":"07890277","parentId":"a84fc4fc","timestamp":"2026-07-14T22:43:53.768Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning parallel log and config inspection**"},{"type":"toolCall","id":"call_qG046XDyiArC31NWMne2y3dA|fc_050f56f290a937ae016a56bba9afd0819693ee20c88909a7f9","name":"grep","arguments":{"i":"Finding transport failures","pattern":"(?i)(error|warn|fail|dial|meet|auth|key|subnet|route|disconnect|timeout|refused|unreachable|handshake|peer|transport)","path":"C:/Users/decid/AppData/Local/spt-core/logs","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_ofE5DQGKO9eo2E0rx0sj3XUN|fc_050f56f290a937ae016a56bba9afe48196969c839404bb5106","name":"grep","arguments":{"i":"Finding affected node events","pattern":"(?i)(HFENDULEAM|ENLYZEAM|SPT_DEV|BIGNET)","path":"C:/Users/decid/AppData/Local/spt-core/logs","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_QicL9HvJeVRA12hKwHeShyfs|fc_050f56f290a937ae016a56bba9afe8819680d7455e9d59d9c1","name":"read","arguments":{"i":"Reading live roster state","path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","selector":"raw"}},{"type":"toolCall","id":"call_PVZs2qf2ZimUJHa0U6wX3PgA|fc_050f56f290a937ae016a56bba9aff0819692624ef2b3d8c4d6","name":"read","arguments":{"i":"Reading peer addresses","path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","selector":"raw"}},{"type":"toolCall","id":"call_MVmRf5CS7wseTMzwnZ7vWnJe|fc_050f56f290a937ae016a56bba9aff481968ebbe90bb3fd2c59","name":"read","arguments":{"i":"Reading SPT_DEV registry","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","selector":"raw"}},{"type":"toolCall","id":"call_YLPOC06Onf3dTke7Rs3ZEADZ|fc_050f56f290a937ae016a56bba9aff881968761bc864e4f2169","name":"read","arguments":{"i":"Reading BIGNET registry","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","selector":"raw"}},{"type":"toolCall","id":"call_3DvmIMr6lUz6eZD4Yd3KGXB6|fc_050f56f290a937ae016a56bba9affc81969da9bb21703deb1b","name":"read","arguments":{"i":"Reading daemon effect history","path":"C:/Users/decid/AppData/Local/spt-core/daemon-effects.log","selector":"raw"}},{"type":"toolCall","id":"call_Az3bN1nfDiOy2fw4sCJtt2Tg|fc_050f56f290a937ae016a56bba9b0008196aadffbb5d208feac","name":"read","arguments":{"i":"Reading pump health state","path":"C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json","selector":"raw"}},{"type":"toolCall","id":"call_QAciniER5xA5EmjtsX9cwN7H|fc_050f56f290a937ae016a56bba9b0048196a11eb53800564bc4","name":"read","arguments":{"i":"Reading pump operations","path":"C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json","selector":"raw"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":3153,"output":561,"cacheRead":16896,"cacheWrite":0,"totalTokens":20610,"reasoningTokens":71,"cost":{"input":0.015765,"output":0.01683,"cacheRead":0.008447999999999999,"cacheWrite":0,"total":0.041042999999999996}},"stopReason":"toolUse","timestamp":1784069022286,"responseId":"resp_050f56f290a937ae016a56bb9ea9608196b7f6e25598d3da50","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bb9f8ec081968d81b71d993970d8","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrupef326krosUDz0cVle5EOBHNnwSMyepPfBD5ma7PiP8ev13QsidUlWAdNbHNd5y898ENsBKaD27IXhIvlQTIH5AINcUCny0S3UOPfJYkEBrCLGgRpSPLlsJDtltdIAibmefj-jVUe3zBxzCBD_nEVcsZjlcGX9Y-snU5gTmGyWn6eHPCMptzOQ9ISPuNH-uv42yP0WQiRQl6Dz604oVr0UqBxnn3R53KJm1iXXZSp_Y4Hs4W62rIgaMDmTGwXzLWAVBGmFvGsM8gHhwJvPMSbjBVrH4baK9VlWChjhVYLhz06LwgTCV1QYP7zpr53FMAZzWQi2Z91TdmQUP53YUmi1b_REhQl0qk_JjeKcIfJ9FbXLKEOp6A5Y4CojWqRSXoluapsvCprTgoBlhqLDmYKRxa5YSIPtCWW7ik-SkLkpRY8Di7qkzcwfM0Twcb7be9L1fWAmk1zxlD-zpH202e3KDyOXf1F-KhJaEy-2FZrtLUZ9G70UeXI1iuUEJZqLrmRhy4Fm1on2oryWvgqnnR3YQQ-KPau9Nii3WvQ62pbrcDeuQ8uTmvKwZvHTx-U8gPCjITp0Bx9X0aFCwc8IswExcVJV_LZCVk5St484b6j68d2MBJmayaJIKmFDQ2_yxUcjkuc4Pfx7m1ynNe6RtgWTtCmsaKBuqC-N2w5hR_xxdMpA1OVeNuhpkMVf1Q48xbeCuay1A7E4WwKDjYaW9MXPgXKiw35quOEoiA-NmGFsei3f7GA8QM4D3uCSQ3Bwmb9VWmDz7EQuyG5QcYuyuMmMHseVb9Bnf9xZXgfNo2w4EXOVxaubvXhwYKUUWHAdfyZBDmcTjXjISfM_JHYMvAc7F_PtAV-vOHHkY0ZkQqDJksKed8pz-pruCpy85i0pfyq4J825RpaIfFD_XApdVZ_OaWO0__zvmOhZu3v4hrVXsrnLr0AaKynYWOCCvlu0aQwB6-qH4Qa0hWc78ySKe7r_pnubZcWPPx7H_M7QuMz3R_0uKaqxGCRRKzweCNW-3-_sA2iKRnZfoeKwkYnyUvIpRIc53Cdntul-eXeroSluELHYqtfOwnhMiKOi0pLQIfxM9MPqWzT3Ce6zb-g94dVE8KpkOHUI4axpVpN0EDHS88Xx40mX1bLwjNVvX_uYub1JPNuE1VFFe0azAy8IBXyPz_TWafeKse99mIDo7nnZZyDRO2z3jepPFK5zgAmP7_JmZJJ2uwmLkHUl_l0hCsfmBfOzwM1Wqrlk5GpLksDe_iZHW2VEjv6qeat9Is877Vf5p-hxBT7l_Ibrht7xRcnVci42-emG_4Pc4OwNDUs78wZt75zB0midxPfS-ktpJJG","summary":[{"type":"summary_text","text":"**Planning parallel log and config inspection**"}]},{"id":"fc_050f56f290a937ae016a56bba9afd0819693ee20c88909a7f9","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding transport failures\",\"pattern\":\"(?i)(error|warn|fail|dial|meet|auth|key|subnet|route|disconnect|timeout|refused|unreachable|handshake|peer|transport)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_qG046XDyiArC31NWMne2y3dA","name":"grep"},{"id":"fc_050f56f290a937ae016a56bba9afe48196969c839404bb5106","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding affected node events\",\"pattern\":\"(?i)(HFENDULEAM|ENLYZEAM|SPT_DEV|BIGNET)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_ofE5DQGKO9eo2E0rx0sj3XUN","name":"grep"},{"id":"fc_050f56f290a937ae016a56bba9afe8819680d7455e9d59d9c1","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading live roster state\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\",\"selector\":\"raw\"}","call_id":"call_QicL9HvJeVRA12hKwHeShyfs","name":"read"},{"id":"fc_050f56f290a937ae016a56bba9aff0819692624ef2b3d8c4d6","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading peer addresses\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\",\"selector\":\"raw\"}","call_id":"call_PVZs2qf2ZimUJHa0U6wX3PgA","name":"read"},{"id":"fc_050f56f290a937ae016a56bba9aff481968ebbe90bb3fd2c59","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading SPT_DEV registry\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json\",\"selector\":\"raw\"}","call_id":"call_MVmRf5CS7wseTMzwnZ7vWnJe","name":"read"},{"id":"fc_050f56f290a937ae016a56bba9aff881968761bc864e4f2169","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading BIGNET registry\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json\",\"selector\":\"raw\"}","call_id":"call_YLPOC06Onf3dTke7Rs3ZEADZ","name":"read"},{"id":"fc_050f56f290a937ae016a56bba9affc81969da9bb21703deb1b","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading daemon effect history\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/daemon-effects.log\",\"selector\":\"raw\"}","call_id":"call_3DvmIMr6lUz6eZD4Yd3KGXB6","name":"read"},{"id":"fc_050f56f290a937ae016a56bba9b0008196aadffbb5d208feac","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading pump health state\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json\",\"selector\":\"raw\"}","call_id":"call_Az3bN1nfDiOy2fw4sCJtt2Tg","name":"read"},{"id":"fc_050f56f290a937ae016a56bba9b0048196a11eb53800564bc4","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading pump operations\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json\",\"selector\":\"raw\"}","call_id":"call_QAciniER5xA5EmjtsX9cwN7H","name":"read"}]},"duration":11480.342199981213,"ttft":1297.9526000022888,"contextSnapshot":{"promptTokens":20049,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_qG046XDyiArC31NWMne2y3dA|fc_050f56f290a937ae016a56bba9afd0819693ee20c88909a7f9","toolName":"grep","startedAt":"2026-07-14T22:43:53.768Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs"},"intent":"Finding transport failures"},"id":"95d473e1","parentId":"07890277","timestamp":"2026-07-14T22:43:53.768Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_ofE5DQGKO9eo2E0rx0sj3XUN|fc_050f56f290a937ae016a56bba9afe48196969c839404bb5106","toolName":"grep","startedAt":"2026-07-14T22:43:53.768Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs"},"intent":"Finding affected node events"},"id":"0619c928","parentId":"95d473e1","timestamp":"2026-07-14T22:43:53.768Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_QicL9HvJeVRA12hKwHeShyfs|fc_050f56f290a937ae016a56bba9afe8819680d7455e9d59d9c1","toolName":"read","startedAt":"2026-07-14T22:43:53.768Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"},"intent":"Reading live roster state"},"id":"74494347","parentId":"0619c928","timestamp":"2026-07-14T22:43:53.768Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_PVZs2qf2ZimUJHa0U6wX3PgA|fc_050f56f290a937ae016a56bba9aff0819692624ef2b3d8c4d6","toolName":"read","startedAt":"2026-07-14T22:43:53.769Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"},"intent":"Reading peer addresses"},"id":"27c0f982","parentId":"74494347","timestamp":"2026-07-14T22:43:53.769Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_MVmRf5CS7wseTMzwnZ7vWnJe|fc_050f56f290a937ae016a56bba9aff481968ebbe90bb3fd2c59","toolName":"read","startedAt":"2026-07-14T22:43:53.769Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json"},"intent":"Reading SPT_DEV registry"},"id":"9dae7c1e","parentId":"27c0f982","timestamp":"2026-07-14T22:43:53.769Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_YLPOC06Onf3dTke7Rs3ZEADZ|fc_050f56f290a937ae016a56bba9aff881968761bc864e4f2169","toolName":"read","startedAt":"2026-07-14T22:43:53.769Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json"},"intent":"Reading BIGNET registry"},"id":"79eab74e","parentId":"9dae7c1e","timestamp":"2026-07-14T22:43:53.769Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_3DvmIMr6lUz6eZD4Yd3KGXB6|fc_050f56f290a937ae016a56bba9affc81969da9bb21703deb1b","toolName":"read","startedAt":"2026-07-14T22:43:53.769Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/daemon-effects.log"},"intent":"Reading daemon effect history"},"id":"c47530f0","parentId":"79eab74e","timestamp":"2026-07-14T22:43:53.769Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Az3bN1nfDiOy2fw4sCJtt2Tg|fc_050f56f290a937ae016a56bba9b0008196aadffbb5d208feac","toolName":"read","startedAt":"2026-07-14T22:43:53.769Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json"},"intent":"Reading pump health state"},"id":"89cefd1f","parentId":"c47530f0","timestamp":"2026-07-14T22:43:53.769Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_QAciniER5xA5EmjtsX9cwN7H|fc_050f56f290a937ae016a56bba9b0048196a11eb53800564bc4","toolName":"read","startedAt":"2026-07-14T22:43:53.769Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json"},"intent":"Reading pump operations"},"id":"e67d55aa","parentId":"89cefd1f","timestamp":"2026-07-14T22:43:53.769Z"}
{"type":"message","id":"ed64b77f","parentId":"e67d55aa","timestamp":"2026-07-14T22:43:53.776Z","message":{"role":"toolResult","toolCallId":"call_YLPOC06Onf3dTke7Rs3ZEADZ|fc_050f56f290a937ae016a56bba9aff881968761bc864e4f2169","toolName":"read","content":[{"type":"text","text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630117,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630119,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630121,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630123,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630125,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630127,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630129,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630131,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630133,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630135,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630137,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630139,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630141,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630143\n    },\n    \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": {\n      \"label\": \"GRAVITY-RUNNER\",\n      \"epoch\": 1166\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445952\n    }\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630117,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630119,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630121,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630123,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630125,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630127,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630129,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630131,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630133,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630135,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630137,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630139,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630141,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630143\n    },\n    \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": {\n      \"label\": \"GRAVITY-RUNNER\",\n      \"epoch\": 1166\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445952\n    }\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json"}}},"isError":false,"timestamp":1784069033776}}
{"type":"message","id":"acccfa98","parentId":"ed64b77f","timestamp":"2026-07-14T22:43:53.777Z","message":{"role":"toolResult","toolCallId":"call_PVZs2qf2ZimUJHa0U6wX3PgA|fc_050f56f290a937ae016a56bba9aff0819692624ef2b3d8c4d6","toolName":"read","content":[{"type":"text","text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"76.80.65.5:57900\"\n        },\n        {\n          \"Ip\": \"100.125.242.88:57900\"\n        },\n        {\n          \"Ip\": \"172.28.240.1:57900\"\n        },\n        {\n          \"Ip\": \"192.168.1.12:57900\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n        }\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n        {\n          \"Ip\": \"172.21.0.1:59864\"\n        },\n        {\n          \"Ip\": \"192.168.1.11:59864\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"\n        }\n      ]\n    },\n    \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {\n      \"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {\n      \"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",\n      \"addrs\": [\n        {\n          \"Ip\": \"64.227.107.3:42537\"\n        }\n      ]\n    }\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"76.80.65.5:57900\"\n        },\n        {\n          \"Ip\": \"100.125.242.88:57900\"\n        },\n        {\n          \"Ip\": \"172.28.240.1:57900\"\n        },\n        {\n          \"Ip\": \"192.168.1.12:57900\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n        }\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n        {\n          \"Ip\": \"172.21.0.1:59864\"\n        },\n        {\n          \"Ip\": \"192.168.1.11:59864\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"\n        }\n      ]\n    },\n    \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {\n      \"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {\n      \"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",\n      \"addrs\": [\n        {\n          \"Ip\": \"64.227.107.3:42537\"\n        }\n      ]\n    }\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"}}},"isError":false,"timestamp":1784069033777}}
{"type":"message","id":"d1c22882","parentId":"acccfa98","timestamp":"2026-07-14T22:43:53.777Z","message":{"role":"toolResult","toolCallId":"call_MVmRf5CS7wseTMzwnZ7vWnJe|fc_050f56f290a937ae016a56bba9aff481968ebbe90bb3fd2c59","toolName":"read","content":[{"type":"text","text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630116,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630118,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630120,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630122,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630124,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630126,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630128,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630130,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630132,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630134,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630136,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630138,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630140,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630142\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445951\n    }\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630116,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630118,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630120,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630122,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630124,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630126,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630128,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630130,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630132,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630134,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630136,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630138,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630140,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630142\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445951\n    }\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json"}}},"isError":false,"timestamp":1784069033777}}
{"type":"message","id":"0ff9a9af","parentId":"d1c22882","timestamp":"2026-07-14T22:43:53.777Z","message":{"role":"toolResult","toolCallId":"call_Az3bN1nfDiOy2fw4sCJtt2Tg|fc_050f56f290a937ae016a56bba9b0008196aadffbb5d208feac","toolName":"read","content":[{"type":"text","text":"1784069033136"}],"details":{"displayContent":{"text":"1784069033136","startLine":1,"lineNumbers":[1]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json"}}},"isError":false,"timestamp":1784069033777}}
{"type":"message","id":"75b5d038","parentId":"0ff9a9af","timestamp":"2026-07-14T22:43:53.778Z","message":{"role":"toolResult","toolCallId":"call_QicL9HvJeVRA12hKwHeShyfs|fc_050f56f290a937ae016a56bba9afe8819680d7455e9d59d9c1","toolName":"read","content":[{"type":"text","text":"{\n  \"members\": [\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"KITSUBITO\",\n      \"machine_id\": \"67ceedba5b6c5c686d19ba6701663b0f4170a9b0eabc6f58799819751353422e\",\n      \"address\": {\n        \"id\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.98.197.12:40683\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:40683\"\n          },\n          {\n            \"Ip\": \"192.168.1.154:40683\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783682162\",\n      \"lease_epoch\": 20764\n    },\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"SCELTOUIN\",\n      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n      \"address\": {\n        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.105.1.5:61419\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:61419\"\n          },\n          {\n            \"Ip\": \"172.29.112.1:61419\"\n          },\n          {\n            \"Ip\": \"192.168.1.156:61419\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783206905\",\n      \"lease_epoch\": 399\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"GRAVITY-RUNNER\",\n      \"machine_id\": \"c507fc3b0804c21897e392d056d41694a6b2122e2ed3ad9b79f6b88bbf04d144\",\n      \"address\": {\n        \"id\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.65.194.82:55908\"\n          },\n          {\n            \"Ip\": \"192.168.1.8:55908\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784007760\",\n      \"lease_epoch\": 1130\n    }\n  ],\n  \"tombstones\": [\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"stamp\": \"1783983420\"\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"stamp\": \"1783983420\"\n    }\n  ]\n}"}],"details":{"displayContent":{"text":"{\n  \"members\": [\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"KITSUBITO\",\n      \"machine_id\": \"67ceedba5b6c5c686d19ba6701663b0f4170a9b0eabc6f58799819751353422e\",\n      \"address\": {\n        \"id\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.98.197.12:40683\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:40683\"\n          },\n          {\n            \"Ip\": \"192.168.1.154:40683\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783682162\",\n      \"lease_epoch\": 20764\n    },\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"SCELTOUIN\",\n      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n      \"address\": {\n        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.105.1.5:61419\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:61419\"\n          },\n          {\n            \"Ip\": \"172.29.112.1:61419\"\n          },\n          {\n            \"Ip\": \"192.168.1.156:61419\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783206905\",\n      \"lease_epoch\": 399\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"GRAVITY-RUNNER\",\n      \"machine_id\": \"c507fc3b0804c21897e392d056d41694a6b2122e2ed3ad9b79f6b88bbf04d144\",\n      \"address\": {\n        \"id\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.65.194.82:55908\"\n          },\n          {\n            \"Ip\": \"192.168.1.8:55908\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784007760\",\n      \"lease_epoch\": 1130\n    }\n  ],\n  \"tombstones\": [\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"stamp\": \"1783983420\"\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"stamp\": \"1783983420\"\n    }\n  ]\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"}}},"isError":false,"timestamp":1784069033778}}
{"type":"message","id":"8b564780","parentId":"75b5d038","timestamp":"2026-07-14T22:43:53.779Z","message":{"role":"toolResult","toolCallId":"call_QAciniER5xA5EmjtsX9cwN7H|fc_050f56f290a937ae016a56bba9b0048196a11eb53800564bc4","toolName":"read","content":[{"type":"text","text":"25307"}],"details":{"displayContent":{"text":"25307","startLine":1,"lineNumbers":[1]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json"}}},"isError":false,"timestamp":1784069033778}}
{"type":"message","id":"32570ba8","parentId":"8b564780","timestamp":"2026-07-14T22:43:53.785Z","message":{"role":"toolResult","toolCallId":"call_qG046XDyiArC31NWMne2y3dA|fc_050f56f290a937ae016a56bba9afd0819693ee20c88909a7f9","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n 3|BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\n*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*8|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*9|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*10|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n*11|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*12|DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n*13|DISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n*14|DISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n*15|DISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n*16|DISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\n*17|DISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n*18|DISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\n*19|DISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\n*20|DISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\n*21|DISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*22|DISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*23|DISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*24|DISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*25|DISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n## daemon.stderr.log.1\n 3|BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n*9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n*10|PEER_PUMP_RESTART: supervised restart in 10s\n 11|PUMP_IPC_READER: spawned\n 12|PUMP_IPC_READER: spawned\n 13|=== spt broker stderr — generation 0 — pid 50220 ===\n*14|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 15|=== spt brain stderr — generation 0 — pid 9476 ===\n 16|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)\n*17|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*18|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*19|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*20|PAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n*21|PAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\n*22|PAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\n 23|DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\n 24|DAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\n 25|DAEMON_RESTART_RESUME:flynn: resuming session 586ab982-8ebe-470a-b47a-15332f8edfab under claude-spt:ccs (pid 77020) — online at bind\n 26|DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n*27|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 28|PUMP_IPC_READER: spawned\n 29|PUMP_IPC_READER: spawned\n*30|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*31|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*32|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*33|PAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\n*34|PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\n*35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs","searchPath":"C:/Users/decid/AppData/Local/spt-core/logs","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":40,"fileCount":2,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":20}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n  3│BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\n *4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n  5│PUMP_IPC_READER: spawned\n  6│PUMP_IPC_READER: spawned\n *7│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n *8│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *9│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*10│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n*11│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*12│DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n*13│DISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n*14│DISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n*15│DISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n*16│DISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\n*17│DISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n*18│DISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\n*19│DISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\n*20│DISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\n*21│DISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*22│DISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*23│DISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*24│DISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n*25│DISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n## daemon.stderr.log.1\n  3│BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n *4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n  5│PUMP_IPC_READER: spawned\n  6│PUMP_IPC_READER: spawned\n *7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *8│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n *9│PEER_PUMP_FAIL: brain IPC read deadline elapsed\n*10│PEER_PUMP_RESTART: supervised restart in 10s\n 11│PUMP_IPC_READER: spawned\n 12│PUMP_IPC_READER: spawned\n 13│=== spt broker stderr — generation 0 — pid 50220 ===\n*14│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 15│=== spt brain stderr — generation 0 — pid 9476 ===\n 16│BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)\n*17│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*18│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*19│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*20│PAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n*21│PAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\n*22│PAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\n 23│DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\n 24│DAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\n 25│DAEMON_RESTART_RESUME:flynn: resuming session 586ab982-8ebe-470a-b47a-15332f8edfab under claude-spt:ccs (pid 77020) — online at bind\n 26│DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n*27│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 28│PUMP_IPC_READER: spawned\n 29│PUMP_IPC_READER: spawned\n*30│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*31│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*32│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*33│PAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\n*34│PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\n*35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)"},"isError":false,"timestamp":1784069033785}}
{"type":"message","id":"7bd9761e","parentId":"32570ba8","timestamp":"2026-07-14T22:43:53.787Z","message":{"role":"toolResult","toolCallId":"call_ofE5DQGKO9eo2E0rx0sj3XUN|fc_050f56f290a937ae016a56bba9afe48196969c839404bb5106","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n 561|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*562|PAIR_MEET_UP:BIGNET step=59458128 id=ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce addr=EndpointAddr { id: PublicKey(ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce), addrs: {Ip(100.68.35.65:50072), Ip(192.168.1.81:50072)} }\n 563|PAIR_MEET_UP:BS-Resources step=59458128 id=f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116 addr=EndpointAddr { id: PublicKey(f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116), addrs: {Ip(100.68.35.65:50071), Ip(192.168.1.81:50071)} }\n 564|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 565|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*566|PAIR_MEET_UP:SPT_DEV step=59458128 id=2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4 addr=EndpointAddr { id: PublicKey(2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4), addrs: {Ip(100.68.35.65:50077), Ip(192.168.1.81:50077)} }\n 567|DAEMON_RESTART_RESUME_REFUSED:deployah: custody pid still alive — refusing to re-run over a live process (dup guard)\n 568|DAEMON_RESTART_RESUME_REFUSED:doyle: custody pid still alive — refusing to re-run over a live process (dup guard)\n 569|DAEMON_RESTART_RESUME_REFUSED:flynn: custody pid still alive — refusing to re-run over a live process (dup guard)\n...\n 715|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*716|PAIR_MEET_UP:BIGNET step=59458129 id=a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592 addr=EndpointAddr { id: PublicKey(a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592), addrs: {Ip(100.68.35.65:50106), Ip(192.168.1.81:50106)} }\n*717|PAIR_MEET_UP:SPT_DEV step=59458129 id=1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48 addr=EndpointAddr { id: PublicKey(1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48), addrs: {Ip(100.68.35.65:50105), Ip(192.168.1.81:50105)} }\n 718|PAIR_MEET_UP:BS-Resources step=59458129 id=a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888 addr=EndpointAddr { id: PublicKey(a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888), addrs: {Ip(100.68.35.65:50111), Ip(192.168.1.81:50111)} }\n 719|CONN_LIFECYCLE: conn=74 role=brain wall_ms=1783743870762 mono_ms=13827 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 720|CONN_LIFECYCLE: conn=75 role=brain stream-subscriber stream=21 wall_ms=1783743871414 mono_ms=14480 event=stream-sub-attach stream=21 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n...\n 840|PAIR_MEET_UP:BS-Resources step=59458130 id=f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713 addr=EndpointAddr { id: PublicKey(f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713), addrs: {Ip(100.68.35.65:64538), Ip(192.168.1.81:64538)} }\n*841|PAIR_MEET_UP:SPT_DEV step=59458130 id=c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396 addr=EndpointAddr { id: PublicKey(c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396), addrs: {Ip(100.68.35.65:64537), Ip(192.168.1.81:64537)} }\n*842|PAIR_MEET_UP:BIGNET step=59458130 id=d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a addr=EndpointAddr { id: PublicKey(d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a), addrs: {Ip(100.68.35.65:64551), Ip(192.168.1.81:64551)} }\n 843|CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 844|CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 845|CONN_LIFECYCLE: conn=112 role=brain stream-subscriber stream=32 wall_ms=1783743905569 mono_ms=48635 event=stream-sub-attach stream=32 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n...\n 907|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*908|PAIR_MEET_UP:BIGNET step=59458131 id=64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5 addr=EndpointAddr { id: PublicKey(64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5), addrs: {Ip(100.68.35.65:52879), Ip(192.168.1.81:52879)} }\n*909|PAIR_MEET_UP:SPT_DEV step=59458131 id=580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0 addr=EndpointAddr { id: PublicKey(580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0), addrs: {Ip(100.68.35.65:52881), Ip(192.168.1.81:52881)} }\n 910|PAIR_MEET_UP:BS-Resources step=59458131 id=369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e addr=EndpointAddr { id: PublicKey(369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e), addrs: {Ip(100.68.35.65:52893), Ip(192.168.1.81:52893)} }\n 911|CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=stream-sub-attach stream=41 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 912|CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n...\n 962|PAIR_MEET_UP:BS-Resources step=59458132 id=3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba addr=EndpointAddr { id: PublicKey(3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba), addrs: {Ip(100.68.35.65:59021), Ip(192.168.1.81:59021)} }\n*963|PAIR_MEET_UP:SPT_DEV step=59458132 id=9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d addr=EndpointAddr { id: PublicKey(9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d), addrs: {Ip(100.68.35.65:59023), Ip(192.168.1.81:59023)} }\n 964|CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 965|CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*966|PAIR_MEET_UP:BIGNET step=59458132 id=53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8 addr=EndpointAddr { id: PublicKey(53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8), addrs: {Ip(100.68.35.65:59035), Ip(192.168.1.81:59035)} }\n 967|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 968|CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 969|CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n...\n 1030|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1031|PAIR_MEET_UP:BIGNET step=59458133 id=0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70 addr=EndpointAddr { id: PublicKey(0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70), addrs: {Ip(100.68.35.65:53921), Ip(192.168.1.81:53921)} }\n 1032|PAIR_MEET_UP:BS-Resources step=59458133 id=ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5 addr=EndpointAddr { id: PublicKey(ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5), addrs: {Ip(100.68.35.65:53922), Ip(192.168.1.81:53922)} }\n*1033|PAIR_MEET_UP:SPT_DEV step=59458133 id=10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899 addr=EndpointAddr { id: PublicKey(10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899), addrs: {Ip(100.68.35.65:53934), Ip(192.168.1.81:53934)} }\n 1034|CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1035|CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1036|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 1095|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1096|PAIR_MEET_UP:SPT_DEV step=59458134 id=b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4 addr=EndpointAddr { id: PublicKey(b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4), addrs: {Ip(100.68.35.65:64196), Ip(192.168.1.81:64196)} }\n 1097|PAIR_MEET_UP:BS-Resources step=59458134 id=0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd addr=EndpointAddr { id: PublicKey(0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd), addrs: {Ip(100.68.35.65:64202), Ip(192.168.1.81:64202)} }\n*1098|PAIR_MEET_UP:BIGNET step=59458134 id=05b6354bd8f858388ad445ad22d6a487290f2a18d4f775258e06f938e2952e97 addr=EndpointAddr { id: PublicKey(05b6354bd8f858388ad445ad22d6a487290f2a18d4f775258e06f938e2952e97), addrs: {Ip(100.68.35.65:64204), Ip(192.168.1.81:64204)} }\n 1099|CONN_LIFECYCLE: conn=186 role=brain wall_ms=1783744020601 mono_ms=163667 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1100|CONN_LIFECYCLE: conn=186 role=brain wall_ms=1783744020601 mono_ms=163667 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1101|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 1160|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1161|PAIR_MEET_UP:SPT_DEV step=59458135 id=d6c9509165ccf5960c2a804bd171340642535004543c17f2cf302601539bf11c addr=EndpointAddr { id: PublicKey(d6c9509165ccf5960c2a804bd171340642535004543c17f2cf302601539bf11c), addrs: {Ip(100.68.35.65:58454), Ip(192.168.1.81:58454)} }\n*1162|PAIR_MEET_UP:BIGNET step=59458135 id=cc8008cb242a5893ad47062c025a3174ba54c29b49b3223f50c0b726b0315573 addr=EndpointAddr { id: PublicKey(cc8008cb242a5893ad47062c025a3174ba54c29b49b3223f50c0b726b0315573), addrs: {Ip(100.68.35.65:58456), Ip(192.168.1.81:58456)} }\n 1163|PAIR_MEET_UP:BS-Resources step=59458135 id=d720e4949b4624b33ea3a170843b79a05da001f1d69b52717bf0b1ce2836dbc1 addr=EndpointAddr { id: PublicKey(d720e4949b4624b33ea3a170843b79a05da001f1d69b52717bf0b1ce2836dbc1), addrs: {Ip(100.68.35.65:58468), Ip(192.168.1.81:58468)} }\n 1164|CONN_LIFECYCLE: conn=205 role=brain wall_ms=1783744051018 mono_ms=194084 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1165|CONN_LIFECYCLE: conn=205 role=brain wall_ms=1783744051018 mono_ms=194084 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n...\n 1211|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783744079963 mono_ms=91 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*1212|PAIR_MEET_UP:BIGNET step=59458136 id=1f01ae21bc98c3d3dc88fc714771759f09701aed54a1cdf2ac38e6989410f1ed addr=EndpointAddr { id: PublicKey(1f01ae21bc98c3d3dc88fc714771759f09701aed54a1cdf2ac38e6989410f1ed), addrs: {Ip(100.68.35.65:50672), Ip(192.168.1.81:50672)} }\n*1213|PAIR_MEET_UP:SPT_DEV step=59458136 id=9c133b4151adf8783567e07bfd935816bb92892d8b36ca399fbc32f436d4524e addr=EndpointAddr { id: PublicKey(9c133b4151adf8783567e07bfd935816bb92892d8b36ca399fbc32f436d4524e), addrs: {Ip(100.68.35.65:50670), Ip(192.168.1.81:50670)} }\n 1214|CONN_LIFECYCLE: conn=3 role=brain controller session=1 endpoint=deployah by=local wall_ms=1783744079977 mono_ms=105 event=controller-attach session=1 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 1215|PAIR_MEET_UP:BS-Resources step=59458136 id=5f61a3aa00a1bd54caa3ecaad96b77f346b52902b5d2c426d62ef2cf8d0764c8 addr=EndpointAddr { id: PublicKey(5f61a3aa00a1bd54caa3ecaad96b77f346b52902b5d2c426d62ef2cf8d0764c8), addrs: {Ip(100.68.35.65:50676), Ip(192.168.1.81:50676)} }\n 1216|CONN_LIFECYCLE: conn=3 role=brain controller session=1 endpoint=deployah by=local wall_ms=1783744079992 mono_ms=120 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n...\n 1339|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1340|PAIR_MEET_UP:SPT_DEV step=59458137 id=a7dcee49e87447c3564f2cbf297ee0acb20cab889df40b6a81876df488215452 addr=EndpointAddr { id: PublicKey(a7dcee49e87447c3564f2cbf297ee0acb20cab889df40b6a81876df488215452), addrs: {Ip(100.68.35.65:62219), Ip(192.168.1.81:62219)} }\n 1341|PAIR_MEET_UP:BS-Resources step=59458137 id=4bff95e53b936f1b4451496f200166e1b70789631da261928756a62ee052f305 addr=EndpointAddr { id: PublicKey(4bff95e53b936f1b4451496f200166e1b70789631da261928756a62ee052f305), addrs: {Ip(100.68.35.65:62227), Ip(192.168.1.81:62227)} }\n*1342|PAIR_MEET_UP:BIGNET step=59458137 id=3c0ae27a3349b91ced671e905531d378bf4c05384ebfd52931f38298f60302bb addr=EndpointAddr { id: PublicKey(3c0ae27a3349b91ced671e905531d378bf4c05384ebfd52931f38298f60302bb), addrs: {Ip(100.68.35.65:62225), Ip(192.168.1.81:62225)} }\n 1343|CONN_LIFECYCLE: conn=44 role=brain wall_ms=1783744110518 mono_ms=30646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1344|CONN_LIFECYCLE: conn=44 role=brain wall_ms=1783744110518 mono_ms=30646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1345|CONN_LIFECYCLE: conn=45 role=brain stream-subscriber stream=20 wall_ms=1783744112697 mono_ms=32826 event=stream-sub-attach stream=20 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n## daemon.stderr.log.1\n 19|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*20|PAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n*21|PAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\n 22|PAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\n 23|DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\n 24|DAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\n...\n 33|PAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\n*34|PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\n*35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n 36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*42|PAIR_MEET_UP:BIGNET step=59454596 id=dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2 addr=EndpointAddr { id: PublicKey(dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2), addrs: {Ip(100.68.35.65:55109), Ip(192.168.1.81:55109)} }\n 43|PAIR_MEET_UP:BS-Resources step=59454596 id=d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6 addr=EndpointAddr { id: PublicKey(d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6), addrs: {Ip(100.68.35.65:55111), Ip(192.168.1.81:55111)} }\n*44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n 45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*57|PAIR_MEET_UP:SPT_DEV step=59454597 id=0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab addr=EndpointAddr { id: PublicKey(0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab), addrs: {Ip(100.68.35.65:63562), Ip(192.168.1.81:63562)} }\n 58|PAIR_MEET_UP:BS-Resources step=59454597 id=dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e addr=EndpointAddr { id: PublicKey(dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e), addrs: {Ip(100.68.35.65:63560), Ip(192.168.1.81:63560)} }\n*59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n 60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*66|PAIR_MEET_UP:SPT_DEV step=59454598 id=e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d addr=EndpointAddr { id: PublicKey(e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d), addrs: {Ip(100.68.35.65:49157), Ip(192.168.1.81:49157)} }\n*67|PAIR_MEET_UP:BIGNET step=59454598 id=a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8 addr=EndpointAddr { id: PublicKey(a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8), addrs: {Ip(100.68.35.65:49159), Ip(192.168.1.81:49159)} }\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n 69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 74|PAIR_MEET_UP:BS-Resources step=59454599 id=b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954 addr=EndpointAddr { id: PublicKey(b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954), addrs: {Ip(100.68.35.65:49355), Ip(192.168.1.81:49355)} }\n*75|PAIR_MEET_UP:SPT_DEV step=59454599 id=c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5 addr=EndpointAddr { id: PublicKey(c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5), addrs: {Ip(100.68.35.65:49353), Ip(192.168.1.81:49353)} }\n*76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n 77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*82|PAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }\n*83|PAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n 85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*90|PAIR_MEET_UP:BIGNET step=59454601 id=5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7 addr=EndpointAddr { id: PublicKey(5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7), addrs: {Ip(100.68.35.65:55399), Ip(192.168.1.81:55399)} }\n*91|PAIR_MEET_UP:SPT_DEV step=59454601 id=836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3 addr=EndpointAddr { id: PublicKey(836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3), addrs: {Ip(100.68.35.65:55397), Ip(192.168.1.81:55397)} }\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n 93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 97|PAIR_MEET_UP:BS-Resources step=59454602 id=2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4 addr=EndpointAddr { id: PublicKey(2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4), addrs: {Ip(100.68.35.65:64726), Ip(192.168.1.81:64726)} }\n*98|PAIR_MEET_UP:BIGNET step=59454602 id=d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738 addr=EndpointAddr { id: PublicKey(d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738), addrs: {Ip(100.68.35.65:64724), Ip(192.168.1.81:64724)} }\n*99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n 100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 101|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 102|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 105|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*106|PAIR_MEET_UP:SPT_DEV step=59454603 id=01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68 addr=EndpointAddr { id: PublicKey(01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68), addrs: {Ip(100.68.35.65:64061), Ip(192.168.1.81:64061)} }\n 107|PAIR_MEET_UP:BS-Resources step=59454603 id=345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859 addr=EndpointAddr { id: PublicKey(345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859), addrs: {Ip(100.68.35.65:64059), Ip(192.168.1.81:64059)} }\n*108|PAIR_MEET_UP:BIGNET step=59454603 id=5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736 addr=EndpointAddr { id: PublicKey(5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736), addrs: {Ip(100.68.35.65:64073), Ip(192.168.1.81:64073)} }\n 109|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 110|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 111|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs","searchPath":"C:/Users/decid/AppData/Local/spt-core/logs","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":40,"fileCount":2,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":20}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n  561│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *562│PAIR_MEET_UP:BIGNET step=59458128 id=ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce addr=EndpointAddr { id: PublicKey(ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce), addrs: {Ip(100.68.35.65:50072), Ip(192.168.1.81:50072)} }\n  563│PAIR_MEET_UP:BS-Resources step=59458128 id=f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116 addr=EndpointAddr { id: PublicKey(f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116), addrs: {Ip(100.68.35.65:50071), Ip(192.168.1.81:50071)} }\n  564│CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  565│CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n *566│PAIR_MEET_UP:SPT_DEV step=59458128 id=2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4 addr=EndpointAddr { id: PublicKey(2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4), addrs: {Ip(100.68.35.65:50077), Ip(192.168.1.81:50077)} }\n  567│DAEMON_RESTART_RESUME_REFUSED:deployah: custody pid still alive — refusing to re-run over a live process (dup guard)\n  568│DAEMON_RESTART_RESUME_REFUSED:doyle: custody pid still alive — refusing to re-run over a live process (dup guard)\n  569│DAEMON_RESTART_RESUME_REFUSED:flynn: custody pid still alive — refusing to re-run over a live process (dup guard)\n     │...\n  715│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *716│PAIR_MEET_UP:BIGNET step=59458129 id=a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592 addr=EndpointAddr { id: PublicKey(a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592), addrs: {Ip(100.68.35.65:50106), Ip(192.168.1.81:50106)} }\n *717│PAIR_MEET_UP:SPT_DEV step=59458129 id=1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48 addr=EndpointAddr { id: PublicKey(1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48), addrs: {Ip(100.68.35.65:50105), Ip(192.168.1.81:50105)} }\n  718│PAIR_MEET_UP:BS-Resources step=59458129 id=a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888 addr=EndpointAddr { id: PublicKey(a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888), addrs: {Ip(100.68.35.65:50111), Ip(192.168.1.81:50111)} }\n  719│CONN_LIFECYCLE: conn=74 role=brain wall_ms=1783743870762 mono_ms=13827 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  720│CONN_LIFECYCLE: conn=75 role=brain stream-subscriber stream=21 wall_ms=1783743871414 mono_ms=14480 event=stream-sub-attach stream=21 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  840│PAIR_MEET_UP:BS-Resources step=59458130 id=f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713 addr=EndpointAddr { id: PublicKey(f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713), addrs: {Ip(100.68.35.65:64538), Ip(192.168.1.81:64538)} }\n *841│PAIR_MEET_UP:SPT_DEV step=59458130 id=c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396 addr=EndpointAddr { id: PublicKey(c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396), addrs: {Ip(100.68.35.65:64537), Ip(192.168.1.81:64537)} }\n *842│PAIR_MEET_UP:BIGNET step=59458130 id=d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a addr=EndpointAddr { id: PublicKey(d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a), addrs: {Ip(100.68.35.65:64551), Ip(192.168.1.81:64551)} }\n  843│CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  844│CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n  845│CONN_LIFECYCLE: conn=112 role=brain stream-subscriber stream=32 wall_ms=1783743905569 mono_ms=48635 event=stream-sub-attach stream=32 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  907│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *908│PAIR_MEET_UP:BIGNET step=59458131 id=64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5 addr=EndpointAddr { id: PublicKey(64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5), addrs: {Ip(100.68.35.65:52879), Ip(192.168.1.81:52879)} }\n *909│PAIR_MEET_UP:SPT_DEV step=59458131 id=580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0 addr=EndpointAddr { id: PublicKey(580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0), addrs: {Ip(100.68.35.65:52881), Ip(192.168.1.81:52881)} }\n  910│PAIR_MEET_UP:BS-Resources step=59458131 id=369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e addr=EndpointAddr { id: PublicKey(369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e), addrs: {Ip(100.68.35.65:52893), Ip(192.168.1.81:52893)} }\n  911│CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=stream-sub-attach stream=41 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n  912│CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  962│PAIR_MEET_UP:BS-Resources step=59458132 id=3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba addr=EndpointAddr { id: PublicKey(3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba), addrs: {Ip(100.68.35.65:59021), Ip(192.168.1.81:59021)} }\n *963│PAIR_MEET_UP:SPT_DEV step=59458132 id=9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d addr=EndpointAddr { id: PublicKey(9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d), addrs: {Ip(100.68.35.65:59023), Ip(192.168.1.81:59023)} }\n  964│CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  965│CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n *966│PAIR_MEET_UP:BIGNET step=59458132 id=53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8 addr=EndpointAddr { id: PublicKey(53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8), addrs: {Ip(100.68.35.65:59035), Ip(192.168.1.81:59035)} }\n  967│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  968│CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  969│CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n 1030│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1031│PAIR_MEET_UP:BIGNET step=59458133 id=0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70 addr=EndpointAddr { id: PublicKey(0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70), addrs: {Ip(100.68.35.65:53921), Ip(192.168.1.81:53921)} }\n 1032│PAIR_MEET_UP:BS-Resources step=59458133 id=ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5 addr=EndpointAddr { id: PublicKey(ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5), addrs: {Ip(100.68.35.65:53922), Ip(192.168.1.81:53922)} }\n*1033│PAIR_MEET_UP:SPT_DEV step=59458133 id=10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899 addr=EndpointAddr { id: PublicKey(10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899), addrs: {Ip(100.68.35.65:53934), Ip(192.168.1.81:53934)} }\n 1034│CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1035│CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1036│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 1095│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1096│PAIR_MEET_UP:SPT_DEV step=59458134 id=b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4 addr=EndpointAddr { id: PublicKey(b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4), addrs: {Ip(100.68.35.65:64196), Ip(192.168.1.81:64196)} }\n 1097│PAIR_MEET_UP:BS-Resources step=59458134 id=0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd addr=EndpointAddr { id: PublicKey(0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd), addrs: {Ip(100.68.35.65:64202), Ip(192.168.1.81:64202)} }\n*1098│PAIR_MEET_UP:BIGNET step=59458134 id=05b6354bd8f858388ad445ad22d6a487290f2a18d4f775258e06f938e2952e97 addr=EndpointAddr { id: PublicKey(05b6354bd8f858388ad445ad22d6a487290f2a18d4f775258e06f938e2952e97), addrs: {Ip(100.68.35.65:64204), Ip(192.168.1.81:64204)} }\n 1099│CONN_LIFECYCLE: conn=186 role=brain wall_ms=1783744020601 mono_ms=163667 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1100│CONN_LIFECYCLE: conn=186 role=brain wall_ms=1783744020601 mono_ms=163667 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1101│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 1160│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1161│PAIR_MEET_UP:SPT_DEV step=59458135 id=d6c9509165ccf5960c2a804bd171340642535004543c17f2cf302601539bf11c addr=EndpointAddr { id: PublicKey(d6c9509165ccf5960c2a804bd171340642535004543c17f2cf302601539bf11c), addrs: {Ip(100.68.35.65:58454), Ip(192.168.1.81:58454)} }\n*1162│PAIR_MEET_UP:BIGNET step=59458135 id=cc8008cb242a5893ad47062c025a3174ba54c29b49b3223f50c0b726b0315573 addr=EndpointAddr { id: PublicKey(cc8008cb242a5893ad47062c025a3174ba54c29b49b3223f50c0b726b0315573), addrs: {Ip(100.68.35.65:58456), Ip(192.168.1.81:58456)} }\n 1163│PAIR_MEET_UP:BS-Resources step=59458135 id=d720e4949b4624b33ea3a170843b79a05da001f1d69b52717bf0b1ce2836dbc1 addr=EndpointAddr { id: PublicKey(d720e4949b4624b33ea3a170843b79a05da001f1d69b52717bf0b1ce2836dbc1), addrs: {Ip(100.68.35.65:58468), Ip(192.168.1.81:58468)} }\n 1164│CONN_LIFECYCLE: conn=205 role=brain wall_ms=1783744051018 mono_ms=194084 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1165│CONN_LIFECYCLE: conn=205 role=brain wall_ms=1783744051018 mono_ms=194084 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n 1211│CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783744079963 mono_ms=91 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*1212│PAIR_MEET_UP:BIGNET step=59458136 id=1f01ae21bc98c3d3dc88fc714771759f09701aed54a1cdf2ac38e6989410f1ed addr=EndpointAddr { id: PublicKey(1f01ae21bc98c3d3dc88fc714771759f09701aed54a1cdf2ac38e6989410f1ed), addrs: {Ip(100.68.35.65:50672), Ip(192.168.1.81:50672)} }\n*1213│PAIR_MEET_UP:SPT_DEV step=59458136 id=9c133b4151adf8783567e07bfd935816bb92892d8b36ca399fbc32f436d4524e addr=EndpointAddr { id: PublicKey(9c133b4151adf8783567e07bfd935816bb92892d8b36ca399fbc32f436d4524e), addrs: {Ip(100.68.35.65:50670), Ip(192.168.1.81:50670)} }\n 1214│CONN_LIFECYCLE: conn=3 role=brain controller session=1 endpoint=deployah by=local wall_ms=1783744079977 mono_ms=105 event=controller-attach session=1 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 1215│PAIR_MEET_UP:BS-Resources step=59458136 id=5f61a3aa00a1bd54caa3ecaad96b77f346b52902b5d2c426d62ef2cf8d0764c8 addr=EndpointAddr { id: PublicKey(5f61a3aa00a1bd54caa3ecaad96b77f346b52902b5d2c426d62ef2cf8d0764c8), addrs: {Ip(100.68.35.65:50676), Ip(192.168.1.81:50676)} }\n 1216│CONN_LIFECYCLE: conn=3 role=brain controller session=1 endpoint=deployah by=local wall_ms=1783744079992 mono_ms=120 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n 1339│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1340│PAIR_MEET_UP:SPT_DEV step=59458137 id=a7dcee49e87447c3564f2cbf297ee0acb20cab889df40b6a81876df488215452 addr=EndpointAddr { id: PublicKey(a7dcee49e87447c3564f2cbf297ee0acb20cab889df40b6a81876df488215452), addrs: {Ip(100.68.35.65:62219), Ip(192.168.1.81:62219)} }\n 1341│PAIR_MEET_UP:BS-Resources step=59458137 id=4bff95e53b936f1b4451496f200166e1b70789631da261928756a62ee052f305 addr=EndpointAddr { id: PublicKey(4bff95e53b936f1b4451496f200166e1b70789631da261928756a62ee052f305), addrs: {Ip(100.68.35.65:62227), Ip(192.168.1.81:62227)} }\n*1342│PAIR_MEET_UP:BIGNET step=59458137 id=3c0ae27a3349b91ced671e905531d378bf4c05384ebfd52931f38298f60302bb addr=EndpointAddr { id: PublicKey(3c0ae27a3349b91ced671e905531d378bf4c05384ebfd52931f38298f60302bb), addrs: {Ip(100.68.35.65:62225), Ip(192.168.1.81:62225)} }\n 1343│CONN_LIFECYCLE: conn=44 role=brain wall_ms=1783744110518 mono_ms=30646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1344│CONN_LIFECYCLE: conn=44 role=brain wall_ms=1783744110518 mono_ms=30646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1345│CONN_LIFECYCLE: conn=45 role=brain stream-subscriber stream=20 wall_ms=1783744112697 mono_ms=32826 event=stream-sub-attach stream=20 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n## daemon.stderr.log.1\n  19│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *20│PAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n *21│PAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\n  22│PAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\n  23│DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\n  24│DAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\n    │...\n  33│PAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\n *34│PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\n *35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n  36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n    │...\n  41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *42│PAIR_MEET_UP:BIGNET step=59454596 id=dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2 addr=EndpointAddr { id: PublicKey(dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2), addrs: {Ip(100.68.35.65:55109), Ip(192.168.1.81:55109)} }\n  43│PAIR_MEET_UP:BS-Resources step=59454596 id=d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6 addr=EndpointAddr { id: PublicKey(d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6), addrs: {Ip(100.68.35.65:55111), Ip(192.168.1.81:55111)} }\n *44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n  45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n    │...\n  56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *57│PAIR_MEET_UP:SPT_DEV step=59454597 id=0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab addr=EndpointAddr { id: PublicKey(0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab), addrs: {Ip(100.68.35.65:63562), Ip(192.168.1.81:63562)} }\n  58│PAIR_MEET_UP:BS-Resources step=59454597 id=dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e addr=EndpointAddr { id: PublicKey(dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e), addrs: {Ip(100.68.35.65:63560), Ip(192.168.1.81:63560)} }\n *59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n  60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n    │...\n  65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *66│PAIR_MEET_UP:SPT_DEV step=59454598 id=e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d addr=EndpointAddr { id: PublicKey(e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d), addrs: {Ip(100.68.35.65:49157), Ip(192.168.1.81:49157)} }\n *67│PAIR_MEET_UP:BIGNET step=59454598 id=a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8 addr=EndpointAddr { id: PublicKey(a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8), addrs: {Ip(100.68.35.65:49159), Ip(192.168.1.81:49159)} }\n  68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n  69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n    │...\n  74│PAIR_MEET_UP:BS-Resources step=59454599 id=b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954 addr=EndpointAddr { id: PublicKey(b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954), addrs: {Ip(100.68.35.65:49355), Ip(192.168.1.81:49355)} }\n *75│PAIR_MEET_UP:SPT_DEV step=59454599 id=c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5 addr=EndpointAddr { id: PublicKey(c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5), addrs: {Ip(100.68.35.65:49353), Ip(192.168.1.81:49353)} }\n *76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n  77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n  79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *82│PAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }\n *83│PAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }\n  84│PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n  85│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  86│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n    │...\n  89│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *90│PAIR_MEET_UP:BIGNET step=59454601 id=5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7 addr=EndpointAddr { id: PublicKey(5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7), addrs: {Ip(100.68.35.65:55399), Ip(192.168.1.81:55399)} }\n *91│PAIR_MEET_UP:SPT_DEV step=59454601 id=836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3 addr=EndpointAddr { id: PublicKey(836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3), addrs: {Ip(100.68.35.65:55397), Ip(192.168.1.81:55397)} }\n  92│PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n  93│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  94│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  97│PAIR_MEET_UP:BS-Resources step=59454602 id=2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4 addr=EndpointAddr { id: PublicKey(2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4), addrs: {Ip(100.68.35.65:64726), Ip(192.168.1.81:64726)} }\n *98│PAIR_MEET_UP:BIGNET step=59454602 id=d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738 addr=EndpointAddr { id: PublicKey(d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738), addrs: {Ip(100.68.35.65:64724), Ip(192.168.1.81:64724)} }\n *99│PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n 100│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 101│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 102│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n    │...\n 105│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*106│PAIR_MEET_UP:SPT_DEV step=59454603 id=01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68 addr=EndpointAddr { id: PublicKey(01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68), addrs: {Ip(100.68.35.65:64061), Ip(192.168.1.81:64061)} }\n 107│PAIR_MEET_UP:BS-Resources step=59454603 id=345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859 addr=EndpointAddr { id: PublicKey(345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859), addrs: {Ip(100.68.35.65:64059), Ip(192.168.1.81:64059)} }\n*108│PAIR_MEET_UP:BIGNET step=59454603 id=5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736 addr=EndpointAddr { id: PublicKey(5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736), addrs: {Ip(100.68.35.65:64073), Ip(192.168.1.81:64073)} }\n 109│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 110│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 111│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)"},"isError":false,"timestamp":1784069033787}}
{"type":"message","id":"fa651008","parentId":"7bd9761e","timestamp":"2026-07-14T22:43:53.792Z","message":{"role":"toolResult","toolCallId":"call_3DvmIMr6lUz6eZD4Yd3KGXB6|fc_050f56f290a937ae016a56bba9affc81969da9bb21703deb1b","toolName":"read","content":[{"type":"text","text":"PENDING 0 1 net-send\nPENDING 0 2 net-send\nDONE 0 2\nPENDING 0 3 net-send\nDONE 0 3\nPENDING 0 4 net-send\nDONE 0 4\nPENDING 0 5 net-send\nDONE 0 5\nPENDING 0 6 net-send\nDONE 0 6\nPENDING 0 7 net-send\nDONE 0 7\nPENDING 0 8 net-send\nDONE 0 8\nPENDING 0 9 net-send\nDONE 0 9\nPENDING 0 10 net-send\nDONE 0 10\nPENDING 0 11 net-send\nDONE 0 11\nPENDING 0 12 net-send\nDONE 0 12\nPENDING 0 13 net-send\nDONE 0 13\nPENDING 0 14 net-send\nDONE 0 14\nPENDING 0 15 net-send\nDONE 0 15\nPENDING 0 16 net-send\nDONE 0 16\nPENDING 0 17 net-send\nDONE 0 17\nPENDING 0 18 net-send\nDONE 0 18\nPENDING 0 19 net-send\nDONE 0 19\nPENDING 0 20 net-send\nDONE 0 20\nPENDING 0 21 net-send\nDONE 0 21\nPENDING 0 22 net-send\nDONE 0 22\nPENDING 0 23 net-send\nDONE 0 23\nPENDING 0 24 net-send\nDONE 0 24\nPENDING 0 25 net-send\nDONE 0 25\nPENDING 0 26 net-send\nDONE 0 26\nPENDING 0 27 net-send\nDONE 0 27\nPENDING 0 28 net-send\nDONE 0 28\nPENDING 0 29 net-send\nDONE 0 29\nPENDING 0 30 net-send\nDONE 0 30\nPENDING 0 31 net-send\nDONE 0 31\nPENDING 0 32 net-send\nDONE 0 32\nPENDING 0 33 net-send\nDONE 0 33\nPENDING 0 34 net-send\nDONE 0 34\nPENDING 0 35 net-send\nDONE 0 35\nPENDING 0 36 net-send\nDONE 0 36\nPENDING 0 37 net-send\nDONE 0 37\nPENDING 0 38 net-send\nDONE 0 38\nPENDING 0 39 net-send\nDONE 0 39\nPENDING 0 40 net-send\nDONE 0 40\nPENDING 0 41 net-send\nDONE 0 41\nPENDING 0 42 net-send\nDONE 0 42\nPENDING 0 43 net-send\nDONE 0 43\nPENDING 0 44 net-send\nDONE 0 44\nPENDING 0 45 net-send\nDONE 0 45\nPENDING 0 46 net-send\nDONE 0 46\nPENDING 0 47 net-send\nDONE 0 47\nPENDING 0 48 net-send\nDONE 0 48\nPENDING 0 49 net-send\nDONE 0 49\nPENDING 0 50 net-send\nDONE 0 50\nPENDING 0 51 net-send\nDONE 0 51\nPENDING 0 52 net-send\nDONE 0 52\nPENDING 0 53 net-send\nDONE 0 53\nPENDING 0 54 net-send\nDONE 0 54\nPENDING 0 55 net-send\nDONE 0 55\nPENDING 0 56 net-send\nDONE 0 56\nPENDING 0 57 net-send\nDONE 0 57\nPENDING 0 58 net-send\nDONE 0 58\nPENDING 0 59 net-send\nDONE 0 59\nPENDING 0 60 net-send\nDONE 0 60\nPENDING 0 61 net-send\nDONE 0 61\nPENDING 0 62 net-send\nDONE 0 62\nPENDING 0 63 net-send\nDONE 0 63\nPENDING 0 64 net-send\nDONE 0 64\nPENDING 0 65 net-send\nDONE 0 65\nPENDING 0 66 net-send\nDONE 0 66\nPENDING 0 67 net-send\nDONE 0 67\nPENDING 0 68 net-send\nDONE 0 68\nPENDING 0 69 net-send\nDONE 0 69\nPENDING 0 70 net-send\nDONE 0 70\nPENDING 0 71 net-send\nDONE 0 71\nPENDING 0 72 net-send\nDONE 0 72\nPENDING 0 73 net-send\nDONE 0 73\nPENDING 0 74 net-send\nDONE 0 74\nPENDING 0 75 net-send\nDONE 0 75\nPENDING 0 76 net-send\nDONE 0 76\nPENDING 0 77 net-send\nDONE 0 77\nPENDING 0 78 net-send\nDONE 0 78\nPENDING 0 79 net-send\nDONE 0 79\nPENDING 0 80 net-send\nDONE 0 80\nPENDING 0 81 net-send\nDONE 0 81\nPENDING 0 82 net-send\nDONE 0 82\nPENDING 0 83 net-send\nDONE 0 83\nPENDING 0 84 net-send\nDONE 0 84\nPENDING 0 85 net-send\nDONE 0 85\nPENDING 0 86 net-send\nDONE 0 86\nPENDING 0 87 net-send\nDONE 0 87\nPENDING 0 88 net-send\nDONE 0 88\nPENDING 0 89 net-send\nDONE 0 89\nPENDING 0 90 net-send\nDONE 0 90\nPENDING 0 91 net-send\nDONE 0 91\nPENDING 0 92 net-send\nDONE 0 92\nPENDING 0 93 net-send\nDONE 0 93\nPENDING 0 94 net-send\nDONE 0 94\nPENDING 0 95 net-send\nDONE 0 95\nPENDING 0 96 net-send\nDONE 0 96\nPENDING 0 97 net-send\nDONE 0 97\nPENDING 0 98 net-send\nDONE 0 98\nPENDING 0 99 net-send\nDONE 0 99\nPENDING 0 100 net-send\nDONE 0 100\nPENDING 0 101 net-send\nDONE 0 101\nPENDING 0 102 net-send\nDONE 0 102\nPENDING 0 103 net-send\nDONE 0 103\nPENDING 0 104 net-send\nDONE 0 104\nPENDING 0 105 net-send\nDONE 0 105\nPENDING 0 106 net-send\nDONE 0 106\nPENDING 0 107 net-send\nDONE 0 107\nPENDING 0 108 net-send\nDONE 0 108\nPENDING 0 109 net-send\nDONE 0 109\nPENDING 0 110 net-send\nDONE 0 110\nPENDING 0 111 net-send\nDONE 0 111\nPENDING 0 112 net-send\nDONE 0 112\nPENDING 0 113 net-send\nDONE 0 113\nPENDING 0 114 net-send\nDONE 0 114\nPENDING 0 115 net-send\nDONE 0 115\nPENDING 0 116 net-send\nDONE 0 116\nPENDING 0 117 net-send\nDONE 0 117\nPENDING 0 118 net-send\nDONE 0 118\nPENDING 0 119 net-send\nDONE 0 119\nPENDING 0 120 net-send\nDONE 0 120\nPENDING 0 121 net-send\nDONE 0 121\nPENDING 0 122 net-send\nDONE 0 122\nPENDING 0 123 net-send\nDONE 0 123\nPENDING 0 124 net-send\nDONE 0 124\nPENDING 0 125 net-send\nDONE 0 125\nPENDING 0 126 net-send\nDONE 0 126\nPENDING 0 127 net-send\nDONE 0 127\nPENDING 0 128 net-send\nDONE 0 128\nPENDING 0 129 net-send\nDONE 0 129\nPENDING 0 130 net-send\nDONE 0 130\nPENDING 0 131 net-send\nDONE 0 131\nPENDING 0 132 net-send\nDONE 0 132\nPENDING 0 133 net-send\nDONE 0 133\nPENDING 0 134 net-send\nDONE 0 134\nPENDING 0 135 net-send\nDONE 0 135\nPENDING 0 136 net-send\nDONE 0 136\nPENDING 0 137 net-send\nDONE 0 137\nPENDING 0 138 net-send\nDONE 0 138\nPENDING 0 139 net-send\nDONE 0 139\nPENDING 0 140 net-send\nDONE 0 140\nPENDING 0 141 net-send\nDONE 0 141\nPENDING 0 142 net-send\nDONE 0 142\nPENDING 0 143 net-send\nDONE 0 143\nPENDING 0 144 net-send\nDONE 0 144\nPENDING 0 145 net-send\nDONE 0 145\nPENDING 0 146 net-send\nDONE 0 146\nPENDING 0 147 net-send\nDONE 0 147\nPENDING 0 148 net-send\nDONE 0 148\nPENDING 0 149 net-send\nDONE 0 149\nPENDING 0 150 net-send\nDONE 0 150\nPENDING 0 151 net-send\n\n[Showing lines 1-300 of 52984. Use :301 to continue]"}],"details":{"truncation":{"content":"PENDING 0 1 net-send\nPENDING 0 2 net-send\nDONE 0 2\nPENDING 0 3 net-send\nDONE 0 3\nPENDING 0 4 net-send\nDONE 0 4\nPENDING 0 5 net-send\nDONE 0 5\nPENDING 0 6 net-send\nDONE 0 6\nPENDING 0 7 net-send\nDONE 0 7\nPENDING 0 8 net-send\nDONE 0 8\nPENDING 0 9 net-send\nDONE 0 9\nPENDING 0 10 net-send\nDONE 0 10\nPENDING 0 11 net-send\nDONE 0 11\nPENDING 0 12 net-send\nDONE 0 12\nPENDING 0 13 net-send\nDONE 0 13\nPENDING 0 14 net-send\nDONE 0 14\nPENDING 0 15 net-send\nDONE 0 15\nPENDING 0 16 net-send\nDONE 0 16\nPENDING 0 17 net-send\nDONE 0 17\nPENDING 0 18 net-send\nDONE 0 18\nPENDING 0 19 net-send\nDONE 0 19\nPENDING 0 20 net-send\nDONE 0 20\nPENDING 0 21 net-send\nDONE 0 21\nPENDING 0 22 net-send\nDONE 0 22\nPENDING 0 23 net-send\nDONE 0 23\nPENDING 0 24 net-send\nDONE 0 24\nPENDING 0 25 net-send\nDONE 0 25\nPENDING 0 26 net-send\nDONE 0 26\nPENDING 0 27 net-send\nDONE 0 27\nPENDING 0 28 net-send\nDONE 0 28\nPENDING 0 29 net-send\nDONE 0 29\nPENDING 0 30 net-send\nDONE 0 30\nPENDING 0 31 net-send\nDONE 0 31\nPENDING 0 32 net-send\nDONE 0 32\nPENDING 0 33 net-send\nDONE 0 33\nPENDING 0 34 net-send\nDONE 0 34\nPENDING 0 35 net-send\nDONE 0 35\nPENDING 0 36 net-send\nDONE 0 36\nPENDING 0 37 net-send\nDONE 0 37\nPENDING 0 38 net-send\nDONE 0 38\nPENDING 0 39 net-send\nDONE 0 39\nPENDING 0 40 net-send\nDONE 0 40\nPENDING 0 41 net-send\nDONE 0 41\nPENDING 0 42 net-send\nDONE 0 42\nPENDING 0 43 net-send\nDONE 0 43\nPENDING 0 44 net-send\nDONE 0 44\nPENDING 0 45 net-send\nDONE 0 45\nPENDING 0 46 net-send\nDONE 0 46\nPENDING 0 47 net-send\nDONE 0 47\nPENDING 0 48 net-send\nDONE 0 48\nPENDING 0 49 net-send\nDONE 0 49\nPENDING 0 50 net-send\nDONE 0 50\nPENDING 0 51 net-send\nDONE 0 51\nPENDING 0 52 net-send\nDONE 0 52\nPENDING 0 53 net-send\nDONE 0 53\nPENDING 0 54 net-send\nDONE 0 54\nPENDING 0 55 net-send\nDONE 0 55\nPENDING 0 56 net-send\nDONE 0 56\nPENDING 0 57 net-send\nDONE 0 57\nPENDING 0 58 net-send\nDONE 0 58\nPENDING 0 59 net-send\nDONE 0 59\nPENDING 0 60 net-send\nDONE 0 60\nPENDING 0 61 net-send\nDONE 0 61\nPENDING 0 62 net-send\nDONE 0 62\nPENDING 0 63 net-send\nDONE 0 63\nPENDING 0 64 net-send\nDONE 0 64\nPENDING 0 65 net-send\nDONE 0 65\nPENDING 0 66 net-send\nDONE 0 66\nPENDING 0 67 net-send\nDONE 0 67\nPENDING 0 68 net-send\nDONE 0 68\nPENDING 0 69 net-send\nDONE 0 69\nPENDING 0 70 net-send\nDONE 0 70\nPENDING 0 71 net-send\nDONE 0 71\nPENDING 0 72 net-send\nDONE 0 72\nPENDING 0 73 net-send\nDONE 0 73\nPENDING 0 74 net-send\nDONE 0 74\nPENDING 0 75 net-send\nDONE 0 75\nPENDING 0 76 net-send\nDONE 0 76\nPENDING 0 77 net-send\nDONE 0 77\nPENDING 0 78 net-send\nDONE 0 78\nPENDING 0 79 net-send\nDONE 0 79\nPENDING 0 80 net-send\nDONE 0 80\nPENDING 0 81 net-send\nDONE 0 81\nPENDING 0 82 net-send\nDONE 0 82\nPENDING 0 83 net-send\nDONE 0 83\nPENDING 0 84 net-send\nDONE 0 84\nPENDING 0 85 net-send\nDONE 0 85\nPENDING 0 86 net-send\nDONE 0 86\nPENDING 0 87 net-send\nDONE 0 87\nPENDING 0 88 net-send\nDONE 0 88\nPENDING 0 89 net-send\nDONE 0 89\nPENDING 0 90 net-send\nDONE 0 90\nPENDING 0 91 net-send\nDONE 0 91\nPENDING 0 92 net-send\nDONE 0 92\nPENDING 0 93 net-send\nDONE 0 93\nPENDING 0 94 net-send\nDONE 0 94\nPENDING 0 95 net-send\nDONE 0 95\nPENDING 0 96 net-send\nDONE 0 96\nPENDING 0 97 net-send\nDONE 0 97\nPENDING 0 98 net-send\nDONE 0 98\nPENDING 0 99 net-send\nDONE 0 99\nPENDING 0 100 net-send\nDONE 0 100\nPENDING 0 101 net-send\nDONE 0 101\nPENDING 0 102 net-send\nDONE 0 102\nPENDING 0 103 net-send\nDONE 0 103\nPENDING 0 104 net-send\nDONE 0 104\nPENDING 0 105 net-send\nDONE 0 105\nPENDING 0 106 net-send\nDONE 0 106\nPENDING 0 107 net-send\nDONE 0 107\nPENDING 0 108 net-send\nDONE 0 108\nPENDING 0 109 net-send\nDONE 0 109\nPENDING 0 110 net-send\nDONE 0 110\nPENDING 0 111 net-send\nDONE 0 111\nPENDING 0 112 net-send\nDONE 0 112\nPENDING 0 113 net-send\nDONE 0 113\nPENDING 0 114 net-send\nDONE 0 114\nPENDING 0 115 net-send\nDONE 0 115\nPENDING 0 116 net-send\nDONE 0 116\nPENDING 0 117 net-send\nDONE 0 117\nPENDING 0 118 net-send\nDONE 0 118\nPENDING 0 119 net-send\nDONE 0 119\nPENDING 0 120 net-send\nDONE 0 120\nPENDING 0 121 net-send\nDONE 0 121\nPENDING 0 122 net-send\nDONE 0 122\nPENDING 0 123 net-send\nDONE 0 123\nPENDING 0 124 net-send\nDONE 0 124\nPENDING 0 125 net-send\nDONE 0 125\nPENDING 0 126 net-send\nDONE 0 126\nPENDING 0 127 net-send\nDONE 0 127\nPENDING 0 128 net-send\nDONE 0 128\nPENDING 0 129 net-send\nDONE 0 129\nPENDING 0 130 net-send\nDONE 0 130\nPENDING 0 131 net-send\nDONE 0 131\nPENDING 0 132 net-send\nDONE 0 132\nPENDING 0 133 net-send\nDONE 0 133\nPENDING 0 134 net-send\nDONE 0 134\nPENDING 0 135 net-send\nDONE 0 135\nPENDING 0 136 net-send\nDONE 0 136\nPENDING 0 137 net-send\nDONE 0 137\nPENDING 0 138 net-send\nDONE 0 138\nPENDING 0 139 net-send\nDONE 0 139\nPENDING 0 140 net-send\nDONE 0 140\nPENDING 0 141 net-send\nDONE 0 141\nPENDING 0 142 net-send\nDONE 0 142\nPENDING 0 143 net-send\nDONE 0 143\nPENDING 0 144 net-send\nDONE 0 144\nPENDING 0 145 net-send\nDONE 0 145\nPENDING 0 146 net-send\nDONE 0 146\nPENDING 0 147 net-send\nDONE 0 147\nPENDING 0 148 net-send\nDONE 0 148\nPENDING 0 149 net-send\nDONE 0 149\nPENDING 0 150 net-send\nDONE 0 150\nPENDING 0 151 net-send","truncated":true,"truncatedBy":"lines","totalLines":52984,"totalBytes":4897,"outputLines":300,"outputBytes":4897,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"PENDING 0 1 net-send\nPENDING 0 2 net-send\nDONE 0 2\nPENDING 0 3 net-send\nDONE 0 3\nPENDING 0 4 net-send\nDONE 0 4\nPENDING 0 5 net-send\nDONE 0 5\nPENDING 0 6 net-send\nDONE 0 6\nPENDING 0 7 net-send\nDONE 0 7\nPENDING 0 8 net-send\nDONE 0 8\nPENDING 0 9 net-send\nDONE 0 9\nPENDING 0 10 net-send\nDONE 0 10\nPENDING 0 11 net-send\nDONE 0 11\nPENDING 0 12 net-send\nDONE 0 12\nPENDING 0 13 net-send\nDONE 0 13\nPENDING 0 14 net-send\nDONE 0 14\nPENDING 0 15 net-send\nDONE 0 15\nPENDING 0 16 net-send\nDONE 0 16\nPENDING 0 17 net-send\nDONE 0 17\nPENDING 0 18 net-send\nDONE 0 18\nPENDING 0 19 net-send\nDONE 0 19\nPENDING 0 20 net-send\nDONE 0 20\nPENDING 0 21 net-send\nDONE 0 21\nPENDING 0 22 net-send\nDONE 0 22\nPENDING 0 23 net-send\nDONE 0 23\nPENDING 0 24 net-send\nDONE 0 24\nPENDING 0 25 net-send\nDONE 0 25\nPENDING 0 26 net-send\nDONE 0 26\nPENDING 0 27 net-send\nDONE 0 27\nPENDING 0 28 net-send\nDONE 0 28\nPENDING 0 29 net-send\nDONE 0 29\nPENDING 0 30 net-send\nDONE 0 30\nPENDING 0 31 net-send\nDONE 0 31\nPENDING 0 32 net-send\nDONE 0 32\nPENDING 0 33 net-send\nDONE 0 33\nPENDING 0 34 net-send\nDONE 0 34\nPENDING 0 35 net-send\nDONE 0 35\nPENDING 0 36 net-send\nDONE 0 36\nPENDING 0 37 net-send\nDONE 0 37\nPENDING 0 38 net-send\nDONE 0 38\nPENDING 0 39 net-send\nDONE 0 39\nPENDING 0 40 net-send\nDONE 0 40\nPENDING 0 41 net-send\nDONE 0 41\nPENDING 0 42 net-send\nDONE 0 42\nPENDING 0 43 net-send\nDONE 0 43\nPENDING 0 44 net-send\nDONE 0 44\nPENDING 0 45 net-send\nDONE 0 45\nPENDING 0 46 net-send\nDONE 0 46\nPENDING 0 47 net-send\nDONE 0 47\nPENDING 0 48 net-send\nDONE 0 48\nPENDING 0 49 net-send\nDONE 0 49\nPENDING 0 50 net-send\nDONE 0 50\nPENDING 0 51 net-send\nDONE 0 51\nPENDING 0 52 net-send\nDONE 0 52\nPENDING 0 53 net-send\nDONE 0 53\nPENDING 0 54 net-send\nDONE 0 54\nPENDING 0 55 net-send\nDONE 0 55\nPENDING 0 56 net-send\nDONE 0 56\nPENDING 0 57 net-send\nDONE 0 57\nPENDING 0 58 net-send\nDONE 0 58\nPENDING 0 59 net-send\nDONE 0 59\nPENDING 0 60 net-send\nDONE 0 60\nPENDING 0 61 net-send\nDONE 0 61\nPENDING 0 62 net-send\nDONE 0 62\nPENDING 0 63 net-send\nDONE 0 63\nPENDING 0 64 net-send\nDONE 0 64\nPENDING 0 65 net-send\nDONE 0 65\nPENDING 0 66 net-send\nDONE 0 66\nPENDING 0 67 net-send\nDONE 0 67\nPENDING 0 68 net-send\nDONE 0 68\nPENDING 0 69 net-send\nDONE 0 69\nPENDING 0 70 net-send\nDONE 0 70\nPENDING 0 71 net-send\nDONE 0 71\nPENDING 0 72 net-send\nDONE 0 72\nPENDING 0 73 net-send\nDONE 0 73\nPENDING 0 74 net-send\nDONE 0 74\nPENDING 0 75 net-send\nDONE 0 75\nPENDING 0 76 net-send\nDONE 0 76\nPENDING 0 77 net-send\nDONE 0 77\nPENDING 0 78 net-send\nDONE 0 78\nPENDING 0 79 net-send\nDONE 0 79\nPENDING 0 80 net-send\nDONE 0 80\nPENDING 0 81 net-send\nDONE 0 81\nPENDING 0 82 net-send\nDONE 0 82\nPENDING 0 83 net-send\nDONE 0 83\nPENDING 0 84 net-send\nDONE 0 84\nPENDING 0 85 net-send\nDONE 0 85\nPENDING 0 86 net-send\nDONE 0 86\nPENDING 0 87 net-send\nDONE 0 87\nPENDING 0 88 net-send\nDONE 0 88\nPENDING 0 89 net-send\nDONE 0 89\nPENDING 0 90 net-send\nDONE 0 90\nPENDING 0 91 net-send\nDONE 0 91\nPENDING 0 92 net-send\nDONE 0 92\nPENDING 0 93 net-send\nDONE 0 93\nPENDING 0 94 net-send\nDONE 0 94\nPENDING 0 95 net-send\nDONE 0 95\nPENDING 0 96 net-send\nDONE 0 96\nPENDING 0 97 net-send\nDONE 0 97\nPENDING 0 98 net-send\nDONE 0 98\nPENDING 0 99 net-send\nDONE 0 99\nPENDING 0 100 net-send\nDONE 0 100\nPENDING 0 101 net-send\nDONE 0 101\nPENDING 0 102 net-send\nDONE 0 102\nPENDING 0 103 net-send\nDONE 0 103\nPENDING 0 104 net-send\nDONE 0 104\nPENDING 0 105 net-send\nDONE 0 105\nPENDING 0 106 net-send\nDONE 0 106\nPENDING 0 107 net-send\nDONE 0 107\nPENDING 0 108 net-send\nDONE 0 108\nPENDING 0 109 net-send\nDONE 0 109\nPENDING 0 110 net-send\nDONE 0 110\nPENDING 0 111 net-send\nDONE 0 111\nPENDING 0 112 net-send\nDONE 0 112\nPENDING 0 113 net-send\nDONE 0 113\nPENDING 0 114 net-send\nDONE 0 114\nPENDING 0 115 net-send\nDONE 0 115\nPENDING 0 116 net-send\nDONE 0 116\nPENDING 0 117 net-send\nDONE 0 117\nPENDING 0 118 net-send\nDONE 0 118\nPENDING 0 119 net-send\nDONE 0 119\nPENDING 0 120 net-send\nDONE 0 120\nPENDING 0 121 net-send\nDONE 0 121\nPENDING 0 122 net-send\nDONE 0 122\nPENDING 0 123 net-send\nDONE 0 123\nPENDING 0 124 net-send\nDONE 0 124\nPENDING 0 125 net-send\nDONE 0 125\nPENDING 0 126 net-send\nDONE 0 126\nPENDING 0 127 net-send\nDONE 0 127\nPENDING 0 128 net-send\nDONE 0 128\nPENDING 0 129 net-send\nDONE 0 129\nPENDING 0 130 net-send\nDONE 0 130\nPENDING 0 131 net-send\nDONE 0 131\nPENDING 0 132 net-send\nDONE 0 132\nPENDING 0 133 net-send\nDONE 0 133\nPENDING 0 134 net-send\nDONE 0 134\nPENDING 0 135 net-send\nDONE 0 135\nPENDING 0 136 net-send\nDONE 0 136\nPENDING 0 137 net-send\nDONE 0 137\nPENDING 0 138 net-send\nDONE 0 138\nPENDING 0 139 net-send\nDONE 0 139\nPENDING 0 140 net-send\nDONE 0 140\nPENDING 0 141 net-send\nDONE 0 141\nPENDING 0 142 net-send\nDONE 0 142\nPENDING 0 143 net-send\nDONE 0 143\nPENDING 0 144 net-send\nDONE 0 144\nPENDING 0 145 net-send\nDONE 0 145\nPENDING 0 146 net-send\nDONE 0 146\nPENDING 0 147 net-send\nDONE 0 147\nPENDING 0 148 net-send\nDONE 0 148\nPENDING 0 149 net-send\nDONE 0 149\nPENDING 0 150 net-send\nDONE 0 150\nPENDING 0 151 net-send","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/daemon-effects.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":52984,"totalBytes":4897,"outputLines":300,"outputBytes":4897,"shownRange":{"start":1,"end":300},"nextOffset":301}}},"isError":false,"timestamp":1784069033791}}
{"type":"message","id":"b0ecd291","parentId":"fa651008","timestamp":"2026-07-14T22:44:17.251Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Mapping registry outputs and events**\n\n**Analyzing log timestamps and heartbeat intervals**\n\n**Correlating log events with connection timestamps**"},{"type":"thinking","thinking":"**Narrowing project path with glob search**"},{"type":"toolCall","id":"call_ZpeSqv3bTuSF2zgxcxB7R9Fk|fc_050f56f290a937ae016a56bbc11e248196a1c93aa71a26f8b3","name":"read","arguments":{"i":"Reading current log onset","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"1-180"}},{"type":"toolCall","id":"call_rW6VL3e5sdFypaiHKzNTgTo0|fc_050f56f290a937ae016a56bbc11e388196b7886055edf6483e","name":"read","arguments":{"i":"Reading rotated log onset","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","selector":"1-180"}},{"type":"toolCall","id":"call_UaNgmCP5G31v5epgjssu68ky|fc_050f56f290a937ae016a56bbc11e408196ac8ff9888f2f52d8","name":"grep","arguments":{"i":"Tracing peer failures exactly","pattern":"PUMP_PEER_FAIL|PEER_PUMP_FAIL|PEER_PUMP_RESTART|PUMP_PEER_OK|PUMP_PEER_UP","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","selector":null,"case":true,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_TC8oh1zBECp6rObumHNu6AGp|fc_050f56f290a937ae016a56bbc11ec881969ee52fa17cb18d4d","name":"grep","arguments":{"i":"Tracing subnet membership changes","pattern":"(?i)(tombstone|removed|expired|lease|member|roster|meet.*fail|meet.*error|PAIR_MEET|subnet.*(fail|error|empty))","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_F5cAphR20Dy1EnlblHW2h7oM|fc_050f56f290a937ae016a56bbc121448196a0a31687f05b5564","name":"grep","arguments":{"i":"Tracing identity failures","pattern":"(?i)(auth|unauthor|forbidden|key mismatch|invalid key|signature|handshake|certificate|alpn|permission)","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_jwFJr9WXTd9x93OhPG6h7sVG|fc_050f56f290a937ae016a56bbc121508196a1e2b1894c5f3841","name":"glob","arguments":{"i":"Locating repository manifests","path":"C:/Users/decid/Documents/projects/*/*/Cargo.toml","hidden":true,"gitignore":true,"limit":100}},{"type":"toolCall","id":"call_SjSF7nYtHBe1Tt6h5g8X4q1P|fc_050f56f290a937ae016a56bbc121688196ac832e85e42c2bbd","name":"glob","arguments":{"i":"Locating SPT user configs","path":"C:/Users/decid/AppData/Roaming/**/spt*","hidden":true,"gitignore":false,"limit":100}},{"type":"toolCall","id":"call_877nUvO8YLvknwAgGEPwfIZS|fc_050f56f290a937ae016a56bbc122188196bb199b1b8b4b5c8e","name":"glob","arguments":{"i":"Locating current state files","path":"C:/Users/decid/AppData/Local/spt-core/identity/**/*","hidden":true,"gitignore":false,"limit":200}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":26816,"output":1170,"cacheRead":19968,"cacheWrite":0,"totalTokens":47954,"reasoningTokens":572,"cost":{"input":0.13408,"output":0.0351,"cacheRead":0.009984,"cacheWrite":0,"total":0.179164}},"stopReason":"toolUse","timestamp":1784069033799,"responseId":"resp_050f56f290a937ae016a56bba9f9dc8196a6dd40aaba2ebf02","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bbabbd508196949bc7dae4ef5713","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVru4WtMzwGnA31K2glvWWJehv_xBvUvK6cZHXyrYe2cA2VopQua2zC3PwejJGWfKFzBaOHZ9rNRbeIu561eLNhwCMuA06arGwxgdb2qtk0c52uliwzBisIOJrWK8UK79ejHn-S0V1SQWuImX4LNb_B_u70jPufOGZwaQN4OyEfwcVtF1gqKAns5vRASRR-3GS3C9yOx2giaXQx2DtanYoo-9HiOXL3Lb_xqcx9lir8s0cTkwucHGdcMutffyZN24TSGw5iqs8WjUk5gPL1R9LCrilsaO4ECGx23Y_BECCI2tt7N_b6AHcEbHtnsQ4lPEUNVWcBPO_uNaA2auVG8ArdwSId2X9qwS_FSnv2Jb2dG4C0DFZTEounLjLwVHfgERB_Ws1uv2bPx_aqsfomax2XwccuGgWNQZU0Hob4XG8CWlGw95aA7JNs01sI__MAgLuAU8FncRN135lylEHGnNLn3UfwMYYsdgWtynterC3X6ZHucEXefXndthYAnFsDlM7pD45oFc-DFB1kukO80BXGFVLm2H-H1ZP7gvSnmHVpF0Rtm_Mg5wWH-zf6hJzAycb4Cmz5ntfNKL8jSPcjrhiGShwZ6ONCQtm92vTCQhhOpiqOoC7WTd2FgS_co3UdIspM4S04eSFQjqMHOvuImXQYEoc4i_Iid25s_mNFXWwW4FB5yUA9tSBY9-Au6VXOVDlI6GBd_H3soMkgXh6V_B_D04WIbh6BaF_bDo_nYt3tYYHzJpF81ggWJ5J-U3Lwc-iOg3aO45gSkmxPBTLYLurB_eKbD2CIXREiB6hS9tF19nx-XNF1o6H1ibhxPbGNWsWO2vsBb00exYVWGWuGG5SsQ29sc-kjdbuuAcAVBZeikqqS55lfqkPqTz660lqCPojL0i-iPtj_jyGa7JIlOmg1uterl7xuW8chTgGpxPztjy0AfxnOkpB26mwE8NQTGTcQp7kmMCXM5ig6BndYKMNy23QDZLnIYhUh7EYaKzcXFdrKaw_jYbq5t3f9G0YMIA5pQ-yYyFMV3E3gPkQaq2DtI4PZxEUZnkUr1WunXjwkSsoyEuw6QWHHPm_rGwn_nmMzW5fp0bRu1tvFz5EQBN9p5VBpvkC5JXYocIWSOwCkrd5Y11fc1qx-zAoKaR4llezKTquX-harpsMx82o7uJmkaaPOCEsf9OaLLfx29U1oVDbR6L2pM4JvDZQXkGS9xb1a7Uaab9WQTBqQHHWTPspJhjAYSngmNIy-tlVl3xcK7ljdl3QXah3o1dRhisjsg2ceI_OrbwIeSgTpZODFgr-uPXpnapc8Rg-YVms0t1ekodENp-coYGx8yL486aoF--Lt044fO7QiTYi_PJjrgwIml7-m30-HLZ2OSUIi4U2Fy_GWNRS1xgYGqlwtFcXq9efozonHILNXrAR8czta6lfo_kdq3foVzdvfaATPo2WRs6sWbuqLE-ydHrgkOTfAroVO5jkkiZ3SZiZN_D9OOT3scb9D_Nj2ECO5Kfw2ZATpt0uoylQIy7ZYvNORtJGaxRlhpfB-WTakQHhYZmATiVjsaSJCpJGSIXzw81DwZZFfXPL9fz57bjIuo4iQzVpC0YjLXxaPxn1Yx23N3hUvqTEiclmibVP5uB4ckOIKq6XwAT-zfuLArw5RGB9LIHrUzjfJnABN1wHk4RxYnb1cLqx819YGWBQqQv6IZ4Y4XWmMaXsybAD0SYpnMc6INqLzwdwfGUTZv_3JtELDF5meQrIRlrUGNA0cT9zW2i90nVfHY1hTuq2DGIEWNunh5J5CxvXoIo3jcntl5HIBjcU_bFE7LjFA7VVsFoXyWiQzmX2e8_9JT3OmAivt-Xc0F0XOBBlDdF9tki3ifC7hIs7-xv8BfYxpZ9DuuGJm4fh1NYMhRH-lRFAK-xMtDPbqpLqx5Lw4Q9dxSq-A6zEIehMMZC-dg-hHjxjZm99-aXcFXyZrrbh_6dP8OjyqT5Y0l1x58AaFCkyoKaXXWy7k_ACL0lndj6utU4Yjyfc7D0dkToBQjpGchM-N0Ag5R7-JNxc_zPV_hLTgs9aA_BOy8SycFNNz-h_wJ1ALFfSdHCJ6yXOCiTiiY0T39ybMREB0vr6wUtoy9fgOqGM1_0MgemMqcXV2Gu9mOAtSCjGSyId4hmrJY9DUvNlikgURRoP-4CIbN2FH4l1uszx_bBlMNZijpejfwp5eOeL7jIHWD3QZctWE5QgMZCS7OXaGD0w2pe6jrLLG92WGbn6ZzE0f6dqAZMnsVlQQOQ-S9Kxt7tsNgSqyx6ZcPvGvqdAsdL2bDkS-04OJHa3ZqZfiGD4QkLgOOl9egho3dTqSfAAMonJUHLkSNof8UxMXoYSnHALO7UK2ei2R6Iu6NV3W7UQbPMVEjmXzkIOqKJB_SZ64Qr6GsyMKmBo5JqqLt8JiONMC9CsnwnjiRGaZjDQs3ZyBYuHcK3cbKtZV7cEbQi0nalB9NVGaOuV6XHcX6q0JpsZolGwN5EsZEt-xMsmPi0HzgL-9S3zEOmkMAfJpdI2TE4lUvL1dshjIsJndXNK0a5XhGuFZGbt9tpGLPk-1GDfLsR1dNM_OWIGbrITWKgMbtVPLc_z_6xquRwyk-i85xPGaFZkRveN_7mBRD2JWP5IHFDlJuXuXDEi9PzRdAXXnOrYxKUjmVtpRkroT4upMMfsXieb1B6Nl2cBOsOcWpSLwGn39XEZIBaVTZdV0Nr6M92fh4QrHl1U1j3cIBQSVzN0fjg_HW5Z6zwqZKP-ZhbuECvASqjW-D3I-QLLQoeDniUBzs8AzXYX0tIsEuI9vYAONgKwUdu1hMjVW8vSv685BLEB7ddXUXJeEwGTtfY-hQhfGnziR6YaaPPghuuQPcHa3ycfQHFbMaX3cHWsfY_jcFc1HYOlD3tDXGuk6r1IJ77q-d-EUnDbxlvrtqxao44OA7w5XnnbKQaicz-KBImqBnzorODKHO_Le1bRb4v6aL1AaGe0_4G8-ok5dwHhtMF0axheYIqZqUlc8pDFwP4MJCup0F7NycJSdZI8EoqDepfnyAulX-DqiJO6RxsERdw5g9WdhpcN3-rTWDyNq9JrZZClqwaMgQ2tgMdVofO7L5jIf5Fr3Mfrcbbaaal8LxM6oUFsGMcRr668ijWDAX7NYAOrNoyYUIRuQqdgyYTubedOINVbWd3sP9Vj4IBQk9YCFXZJzMAwyn88BK4ceD860J2QKU5GiAXSajcfPmaKS0dUOvCDW_by_nc9lE4QmEgI0CMJayXm7sc1G-iBBlLsxKET48raCahC4DvqZ_yZ9-CR-ug4TgU17I-ALX1TNnWt6QRrNUKrmBw2Z5GzJeudsNrOkg5nJSgit97baj2Isli1gXgo1sAa3Q6bTPiDbQNPLsqCxMDji6Ludxd-OYA5Lq_wDp9E8hJSlvdQiPTL99_t2lwoqvhN9_lheyJV06hAaOl8iv0YiKGO1WwN6s92MhwA55YmbqKV1UaNTbxs0782_ziKjvZmdYwlwnUfoqfF3L_R9PMM8WYkSLa8MBOsnaTQpChjjc8-kPSGAs_U3nlFjZXZCVG6CUdXLkQpKx-_jh0KAzvd4-Oh_PRWNZN-xznoyKbBXnEOgJ2VJuNUDx_PfimmB8JKJagxe6LnWBU_Z2nNQLS96AhFzs1CtucDY9eWWnFN7iZ-W9TXk16bHzaaprCiyqs5vBYqzpoypg3Szls81ATGRckMj774Sul5DO46VL-sNaTf7JR39c9pMbnw3ESGCCzBuVT8W5LH6NhgtB-V-4zSVZc","summary":[{"type":"summary_text","text":"**Mapping registry outputs and events**"},{"type":"summary_text","text":"**Analyzing log timestamps and heartbeat intervals**"},{"type":"summary_text","text":"**Correlating log events with connection timestamps**"}]},{"id":"rs_050f56f290a937ae016a56bbb8d56c8196a0a1474b7900e3e7","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrvB7RkkyVm0_X0g0jl3AA1kgDp6le_bcLx07K9tLLtA6FxF4Rlokp03-nmcNh8vtotggP47keYMY_KJmY0iRsTOz-7tacmi99DNirPycvBWKRJcUv8Aaqxty66ep5iNW2VeLPKWQDBY-wH3qEiZ-iGtcO2qxaUbu78R6bZxuBb0Xsc1gs22ZlBs_G9R_w5XtoabfuzUhMoffqI_TQsEKEjamZsomiNmS1nsjFLrL-qyPIpipD9IKeNOtF_T8oAlfejEr1xYIhq7to5al7kqpEZx2zWjljv3cn3CgJntrAuGJFXbXsGk4vgfT-c0bq3fWyuh2mr58-aiW2zCRpVrxu6DkWKB-KUv01AlfjNbSiWlpbjMPrQe8gvuSWH3Ft6clVEMOaJMcOLxLOBUa_nLYLZF1yW7GnD5d21M6DjpzUyZ6F5WoGYG0EzQN83CG-1fc4HwBPFhy97MUEiY2l0k0ORi_Lhpp9FmyK_AniKBwHaCGMR-vXrNKlVydgBYdTxiG2k-MEHB51LrRV8Mwzb3r2RariZI7GdmRWogRK1Io9qxh5MaTscTfjgGVZE5drvlxb_LaMdtMcco0716umw8KvyWVzRAVOofe87muu1nnSEUNTaBRI0QMX6vVqSEmvdZR90ARa4qZXpXVkW63-XKqrYDhUD9t7WBxtHF5RiNfRqFwUxG4cnDAiPtZfOaGHCsKCxQzQvefNAUi12hYlJAp1sBqEtqpYHmC6M5ZAXaRepR-N6IjLSIlVDCKd25EzOLdCj3PYSmAdxt7g0WQKCoF7LjGVHZ7luFJ1xZX-ICbgKl4azk3cXGWCxI6M3I0qJRmSH-1Vkhv-6FgawAeVjjmv0QD-VInCfB0lrK4v6d1lsWZzqUPilQJnh-pZuR-kX18Ne-9yeil_wAE4GG5s89U0uA5RlmMrikGfQJq7x1ahmAv8DMpmHIMc_44xS_zVKmBDNTSJc0dEhE-1cN5JV2CLBftB9EO0WjwopQC21MAplXGGekwdi6vmiv8YiOo1ImJbx2V2CBlZmHUpcd_7OUhvNEAqYHEpNTAi97vBNMZn5naaozCE90Xmk1Mc3HNihwEsJI45NN9_BmaWu3T1cSBemKOQTLCcoTG0wV1jLiirfi_lkpGtEBRPrumDdo4gQKvK1fvMmk71roXUBSC62hOQP6OnqVCyVvuLvKd4yAwlhHxgHzkrolpMtTdWOGBQ3D-zlz","summary":[{"type":"summary_text","text":"**Narrowing project path with glob search**"}]},{"id":"fc_050f56f290a937ae016a56bbc11e248196a1c93aa71a26f8b3","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading current log onset\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"1-180\"}","call_id":"call_ZpeSqv3bTuSF2zgxcxB7R9Fk","name":"read"},{"id":"fc_050f56f290a937ae016a56bbc11e388196b7886055edf6483e","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading rotated log onset\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\",\"selector\":\"1-180\"}","call_id":"call_rW6VL3e5sdFypaiHKzNTgTo0","name":"read"},{"id":"fc_050f56f290a937ae016a56bbc11e408196ac8ff9888f2f52d8","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing peer failures exactly\",\"pattern\":\"PUMP_PEER_FAIL|PEER_PUMP_FAIL|PEER_PUMP_RESTART|PUMP_PEER_OK|PUMP_PEER_UP\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\",\"selector\":null,\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_UaNgmCP5G31v5epgjssu68ky","name":"grep"},{"id":"fc_050f56f290a937ae016a56bbc11ec881969ee52fa17cb18d4d","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing subnet membership changes\",\"pattern\":\"(?i)(tombstone|removed|expired|lease|member|roster|meet.*fail|meet.*error|PAIR_MEET|subnet.*(fail|error|empty))\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_TC8oh1zBECp6rObumHNu6AGp","name":"grep"},{"id":"fc_050f56f290a937ae016a56bbc121448196a0a31687f05b5564","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing identity failures\",\"pattern\":\"(?i)(auth|unauthor|forbidden|key mismatch|invalid key|signature|handshake|certificate|alpn|permission)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_F5cAphR20Dy1EnlblHW2h7oM","name":"grep"},{"id":"fc_050f56f290a937ae016a56bbc121508196a1e2b1894c5f3841","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating repository manifests\",\"path\":\"C:/Users/decid/Documents/projects/*/*/Cargo.toml\",\"hidden\":true,\"gitignore\":true,\"limit\":100}","call_id":"call_jwFJr9WXTd9x93OhPG6h7sVG","name":"glob"},{"id":"fc_050f56f290a937ae016a56bbc121688196ac832e85e42c2bbd","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating SPT user configs\",\"path\":\"C:/Users/decid/AppData/Roaming/**/spt*\",\"hidden\":true,\"gitignore\":false,\"limit\":100}","call_id":"call_SjSF7nYtHBe1Tt6h5g8X4q1P","name":"glob"},{"id":"fc_050f56f290a937ae016a56bbc122188196bb199b1b8b4b5c8e","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating current state files\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/**/*\",\"hidden\":true,\"gitignore\":false,\"limit\":200}","call_id":"call_877nUvO8YLvknwAgGEPwfIZS","name":"glob"}]},"duration":23451.158299982548,"ttft":1969.0694999694824,"contextSnapshot":{"promptTokens":46784,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_ZpeSqv3bTuSF2zgxcxB7R9Fk|fc_050f56f290a937ae016a56bbc11e248196a1c93aa71a26f8b3","toolName":"read","startedAt":"2026-07-14T22:44:17.251Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading current log onset"},"id":"c3f7a043","parentId":"b0ecd291","timestamp":"2026-07-14T22:44:17.251Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_rW6VL3e5sdFypaiHKzNTgTo0|fc_050f56f290a937ae016a56bbc11e388196b7886055edf6483e","toolName":"read","startedAt":"2026-07-14T22:44:17.251Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"intent":"Reading rotated log onset"},"id":"cb39e7f5","parentId":"c3f7a043","timestamp":"2026-07-14T22:44:17.251Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_UaNgmCP5G31v5epgjssu68ky|fc_050f56f290a937ae016a56bbc11e408196ac8ff9888f2f52d8","toolName":"grep","startedAt":"2026-07-14T22:44:17.252Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"intent":"Tracing peer failures exactly"},"id":"3019c32a","parentId":"cb39e7f5","timestamp":"2026-07-14T22:44:17.252Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_TC8oh1zBECp6rObumHNu6AGp|fc_050f56f290a937ae016a56bbc11ec881969ee52fa17cb18d4d","toolName":"grep","startedAt":"2026-07-14T22:44:17.252Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"intent":"Tracing subnet membership changes"},"id":"7e5b29dc","parentId":"3019c32a","timestamp":"2026-07-14T22:44:17.252Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_F5cAphR20Dy1EnlblHW2h7oM|fc_050f56f290a937ae016a56bbc121448196a0a31687f05b5564","toolName":"grep","startedAt":"2026-07-14T22:44:17.252Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"intent":"Tracing identity failures"},"id":"d339e833","parentId":"7e5b29dc","timestamp":"2026-07-14T22:44:17.252Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_jwFJr9WXTd9x93OhPG6h7sVG|fc_050f56f290a937ae016a56bbc121508196a1e2b1894c5f3841","toolName":"glob","startedAt":"2026-07-14T22:44:17.252Z","args":{"path":"C:/Users/decid/Documents/projects/*/*/Cargo.toml"},"intent":"Locating repository manifests"},"id":"9f40f268","parentId":"d339e833","timestamp":"2026-07-14T22:44:17.252Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_SjSF7nYtHBe1Tt6h5g8X4q1P|fc_050f56f290a937ae016a56bbc121688196ac832e85e42c2bbd","toolName":"glob","startedAt":"2026-07-14T22:44:17.252Z","args":{"path":"C:/Users/decid/AppData/Roaming/**/spt*"},"intent":"Locating SPT user configs"},"id":"a950be9f","parentId":"9f40f268","timestamp":"2026-07-14T22:44:17.252Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_877nUvO8YLvknwAgGEPwfIZS|fc_050f56f290a937ae016a56bbc122188196bb199b1b8b4b5c8e","toolName":"glob","startedAt":"2026-07-14T22:44:17.252Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/**/*"},"intent":"Locating current state files"},"id":"f1223712","parentId":"a950be9f","timestamp":"2026-07-14T22:44:17.252Z"}
{"type":"message","id":"69900a86","parentId":"f1223712","timestamp":"2026-07-14T22:44:17.255Z","message":{"role":"toolResult","toolCallId":"call_877nUvO8YLvknwAgGEPwfIZS|fc_050f56f290a937ae016a56bbc122188196bb199b1b8b4b5c8e","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/identity/\npump-heartbeat.json\nepoch\npump-ops.json\npeer-addrs.json\nroster.json\nnotifs.db\nattachment.json\nsubnet.json\ncli-ops.json\nvisibility.json\nroster.json.tmp.385948-640\nroster.json.tmp.385948-639\nroster.json.tmp.374632-420\nroster.json.tmp.374632-419\nroster.json.tmp.374632-418\nroster.json.tmp.374632-417\nvisibility.json.tmp.356240-0\nnode.key\n## registry/\nSPT_DEV.json\nheard.meta\nBIGNET.json\nBS-Resources.json"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/identity","fileCount":23,"files":["C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/","C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","C:/Users/decid/AppData/Local/spt-core/identity/epoch","C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json","C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","C:/Users/decid/AppData/Local/spt-core/identity/roster.json","C:/Users/decid/AppData/Local/spt-core/identity/notifs.db","C:/Users/decid/AppData/Local/spt-core/identity/attachment.json","C:/Users/decid/AppData/Local/spt-core/identity/subnet.json","C:/Users/decid/AppData/Local/spt-core/identity/cli-ops.json","C:/Users/decid/AppData/Local/spt-core/identity/visibility.json","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-640","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-639","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-420","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-419","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-418","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-417","C:/Users/decid/AppData/Local/spt-core/identity/visibility.json.tmp.356240-0","C:/Users/decid/AppData/Local/spt-core/identity/node.key"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069057255}}
{"type":"message","id":"00204d22","parentId":"69900a86","timestamp":"2026-07-14T22:44:17.261Z","message":{"role":"toolResult","toolCallId":"call_ZpeSqv3bTuSF2zgxcxB7R9Fk|fc_050f56f290a937ae016a56bbc11e248196a1c93aa71a26f8b3","toolName":"read","content":[{"type":"text","text":"=== spt brain stderr — generation 1 — pid 37736 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\nBRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nDISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\nDISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\nDISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4526:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4177:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4035:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5120:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1520:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3724:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4438:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3866:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3539:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5145:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1126:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:545:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:901:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1032:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1514:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2838:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2018:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2515:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4898:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3604:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2082:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1340:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:3052:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:925:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:293:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2360:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3831:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3741:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:450:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4407:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:807:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4571:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1767:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5802:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5709:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3261:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2190:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:122:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1164:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3410:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1049:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3115:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:54:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:618:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1284:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:961:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1719:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1328:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3898:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4334:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1985:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5642:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:1179:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5736:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:394:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3107:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3983:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1115:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:955:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:268:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5999:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:474:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1996:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3227:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:99:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2926:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5429:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1376:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4972:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5242:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3694:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3029:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4792:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2661:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1563:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4646:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:3705:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1168:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2543:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4963:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5095:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4829:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4013:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5553:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1647:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:285:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:730:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4471:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4008:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4399:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2276:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3132:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3739:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:637:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2130:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1432:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:556:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5726:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3609:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2652:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4361:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4522:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5705:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:512:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:327:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4996:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5462:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2703:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:942:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:480:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1128:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3323:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:972:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3349:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4804:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3046:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1247:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:568:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2173:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4301:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1873:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1845:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5839:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:5861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2678:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5431:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5693:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2026:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4394:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1183:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3278:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:914:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2871:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5271:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:32:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2663:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5824:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3458:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1306:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4459:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:2193:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:511:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2771:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4666:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4773:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4280:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:929:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1585:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4615:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3290:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2789:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5304:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2185:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n\n[Showing lines 1-183 of 201. Use :184 to continue]"}],"details":{"truncation":{"content":"=== spt brain stderr — generation 1 — pid 37736 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\nBRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nDISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\nDISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\nDISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4526:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4177:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4035:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5120:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1520:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3724:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4438:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3866:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3539:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5145:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1126:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:545:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:901:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1032:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1514:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2838:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2018:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2515:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4898:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3604:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2082:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1340:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:3052:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:925:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:293:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2360:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3831:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3741:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:450:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4407:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:807:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4571:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1767:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5802:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5709:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3261:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2190:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:122:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1164:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3410:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1049:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3115:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:54:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:618:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1284:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:961:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1719:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1328:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3898:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4334:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1985:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5642:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:1179:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5736:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:394:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3107:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3983:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1115:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:955:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:268:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5999:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:474:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1996:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3227:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:99:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2926:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5429:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1376:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4972:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5242:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3694:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3029:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4792:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2661:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1563:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4646:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:3705:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1168:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2543:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4963:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5095:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4829:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4013:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5553:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1647:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:285:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:730:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4471:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4008:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4399:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2276:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3132:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3739:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:637:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2130:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1432:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:556:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5726:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3609:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2652:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4361:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4522:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5705:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:512:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:327:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4996:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5462:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2703:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:942:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:480:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1128:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3323:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:972:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3349:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4804:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3046:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1247:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:568:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2173:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4301:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1873:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1845:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5839:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:5861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2678:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5431:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5693:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2026:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4394:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1183:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3278:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:914:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2871:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5271:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:32:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2663:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5824:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3458:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1306:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4459:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:2193:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:511:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2771:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4666:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4773:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4280:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:929:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1585:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4615:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3290:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2789:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5304:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2185:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")","truncated":true,"truncatedBy":"lines","totalLines":201,"totalBytes":22337,"outputLines":183,"outputBytes":22337,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"=== spt brain stderr — generation 1 — pid 37736 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\nBRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nDISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\nDISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\nDISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4526:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4177:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4035:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5120:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1520:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3724:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4438:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3866:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3539:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5145:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1126:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:545:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:901:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1032:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1514:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2838:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2018:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2515:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4898:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3604:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2082:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1340:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:3052:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:925:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:293:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2360:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3831:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3741:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:450:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4407:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:807:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4571:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1767:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5802:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5709:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3261:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2190:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:122:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1164:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3410:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1049:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3115:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:54:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:618:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1284:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:961:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1719:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1328:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3898:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4334:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1985:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5642:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:1179:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5736:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:394:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3107:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3983:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1115:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:955:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:268:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5999:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:474:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1996:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3227:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:99:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2926:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5429:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1376:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4972:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5242:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3694:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3029:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4792:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2661:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1563:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4646:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:3705:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1168:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2543:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4963:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5095:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4829:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4013:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5553:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1647:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:285:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:730:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4471:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4008:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4399:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2276:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3132:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3739:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:637:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2130:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1432:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:556:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5726:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3609:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2652:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4361:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4522:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5705:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:512:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:327:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4996:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5462:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2703:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3187:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:942:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:480:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1128:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3323:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:972:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3349:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4804:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3046:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1247:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:568:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2173:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4301:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1873:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1845:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5839:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:5861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2678:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5431:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5693:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2026:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4394:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1183:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3278:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:914:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2871:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5271:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:32:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2663:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5824:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3458:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1306:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4459:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:2193:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:511:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2771:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4666:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4773:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4280:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:929:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1585:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4615:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3290:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2789:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5304:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2185:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":201,"totalBytes":22337,"outputLines":183,"outputBytes":22337,"shownRange":{"start":1,"end":183},"nextOffset":184}}},"isError":false,"timestamp":1784069057261}}
{"type":"message","id":"c7110b16","parentId":"00204d22","timestamp":"2026-07-14T22:44:17.262Z","message":{"role":"toolResult","toolCallId":"call_rW6VL3e5sdFypaiHKzNTgTo0|fc_050f56f290a937ae016a56bbc11e388196b7886055edf6483e","toolName":"read","content":[{"type":"text","text":"=== spt brain stderr — generation 1 — pid 43932 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)\nBRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\nPEER_PUMP_FAIL: brain IPC read deadline elapsed\nPEER_PUMP_RESTART: supervised restart in 10s\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\n=== spt broker stderr — generation 0 — pid 50220 ===\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n=== spt brain stderr — generation 0 — pid 9476 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\nPAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\nPAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\nDAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\nDAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\nDAEMON_RESTART_RESUME:flynn: resuming session 586ab982-8ebe-470a-b47a-15332f8edfab under claude-spt:ccs (pid 77020) — online at bind\nDAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\nPAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\nPAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454596 id=dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2 addr=EndpointAddr { id: PublicKey(dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2), addrs: {Ip(100.68.35.65:55109), Ip(192.168.1.81:55109)} }\nPAIR_MEET_UP:BS-Resources step=59454596 id=d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6 addr=EndpointAddr { id: PublicKey(d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6), addrs: {Ip(100.68.35.65:55111), Ip(192.168.1.81:55111)} }\nPAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:deployah (309 bytes → translation binary)\nIDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\nINJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454597 id=0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab addr=EndpointAddr { id: PublicKey(0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab), addrs: {Ip(100.68.35.65:63562), Ip(192.168.1.81:63562)} }\nPAIR_MEET_UP:BS-Resources step=59454597 id=dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e addr=EndpointAddr { id: PublicKey(dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e), addrs: {Ip(100.68.35.65:63560), Ip(192.168.1.81:63560)} }\nPAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454598 id=e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d addr=EndpointAddr { id: PublicKey(e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d), addrs: {Ip(100.68.35.65:49157), Ip(192.168.1.81:49157)} }\nPAIR_MEET_UP:BIGNET step=59454598 id=a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8 addr=EndpointAddr { id: PublicKey(a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8), addrs: {Ip(100.68.35.65:49159), Ip(192.168.1.81:49159)} }\nPAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454599 id=b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954 addr=EndpointAddr { id: PublicKey(b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954), addrs: {Ip(100.68.35.65:49355), Ip(192.168.1.81:49355)} }\nPAIR_MEET_UP:SPT_DEV step=59454599 id=c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5 addr=EndpointAddr { id: PublicKey(c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5), addrs: {Ip(100.68.35.65:49353), Ip(192.168.1.81:49353)} }\nPAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }\nPAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }\nPAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454601 id=5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7 addr=EndpointAddr { id: PublicKey(5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7), addrs: {Ip(100.68.35.65:55399), Ip(192.168.1.81:55399)} }\nPAIR_MEET_UP:SPT_DEV step=59454601 id=836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3 addr=EndpointAddr { id: PublicKey(836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3), addrs: {Ip(100.68.35.65:55397), Ip(192.168.1.81:55397)} }\nPAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454602 id=2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4 addr=EndpointAddr { id: PublicKey(2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4), addrs: {Ip(100.68.35.65:64726), Ip(192.168.1.81:64726)} }\nPAIR_MEET_UP:BIGNET step=59454602 id=d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738 addr=EndpointAddr { id: PublicKey(d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738), addrs: {Ip(100.68.35.65:64724), Ip(192.168.1.81:64724)} }\nPAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454603 id=01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68 addr=EndpointAddr { id: PublicKey(01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68), addrs: {Ip(100.68.35.65:64061), Ip(192.168.1.81:64061)} }\nPAIR_MEET_UP:BS-Resources step=59454603 id=345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859 addr=EndpointAddr { id: PublicKey(345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859), addrs: {Ip(100.68.35.65:64059), Ip(192.168.1.81:64059)} }\nPAIR_MEET_UP:BIGNET step=59454603 id=5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736 addr=EndpointAddr { id: PublicKey(5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736), addrs: {Ip(100.68.35.65:64073), Ip(192.168.1.81:64073)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454604 id=abbf78a54e841b6eed1702e2d284033aad71b86f1e7e177b278ce4d771b51ca4 addr=EndpointAddr { id: PublicKey(abbf78a54e841b6eed1702e2d284033aad71b86f1e7e177b278ce4d771b51ca4), addrs: {Ip(100.68.35.65:63672), Ip(192.168.1.81:63672)} }\nPAIR_MEET_UP:BS-Resources step=59454604 id=fb6c2a7836f61bffdc29826fab5c20774f3d8e54db538c58781d8f016335652d addr=EndpointAddr { id: PublicKey(fb6c2a7836f61bffdc29826fab5c20774f3d8e54db538c58781d8f016335652d), addrs: {Ip(100.68.35.65:63671), Ip(192.168.1.81:63671)} }\nPAIR_MEET_UP:BIGNET step=59454604 id=f71b8236fc75f61f9b188e025a847ba85ed70c66e6707d2b82d86cb01b43b4cf addr=EndpointAddr { id: PublicKey(f71b8236fc75f61f9b188e025a847ba85ed70c66e6707d2b82d86cb01b43b4cf), addrs: {Ip(100.68.35.65:63685), Ip(192.168.1.81:63685)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454605 id=b77a9e43d7c7fc42cd91c721187f4928a1cee02d24dd097c879100179b396e5e addr=EndpointAddr { id: PublicKey(b77a9e43d7c7fc42cd91c721187f4928a1cee02d24dd097c879100179b396e5e), addrs: {Ip(100.68.35.65:52103), Ip(192.168.1.81:52103)} }\nPAIR_MEET_UP:SPT_DEV step=59454605 id=3e05654f29aa3b3a46c8dbfa6ce5650ecfe6ee6a069484e275bc18e2b05789b0 addr=EndpointAddr { id: PublicKey(3e05654f29aa3b3a46c8dbfa6ce5650ecfe6ee6a069484e275bc18e2b05789b0), addrs: {Ip(100.68.35.65:52105), Ip(192.168.1.81:52105)} }\nPAIR_MEET_UP:BS-Resources step=59454605 id=60b2bfd5d87e2d82a5b4603eb07328ff588b0a0a19c8ae58561c2b0db222d6c6 addr=EndpointAddr { id: PublicKey(60b2bfd5d87e2d82a5b4603eb07328ff588b0a0a19c8ae58561c2b0db222d6c6), addrs: {Ip(100.68.35.65:52109), Ip(192.168.1.81:52109)} }\nENDPOINT_INJECT:deployah (944 bytes → translation binary)\nENDPOINT_INJECT:todlando (1153 bytes → translation binary)\nINJECT_SETTLE_TIMEOUT:todlando: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454606 id=297d8d02f05aeb9b7b7b83f396ed6b682da961f8415373b4a06840131ab40658 addr=EndpointAddr { id: PublicKey(297d8d02f05aeb9b7b7b83f396ed6b682da961f8415373b4a06840131ab40658), addrs: {Ip(100.68.35.65:50382), Ip(192.168.1.81:50382)} }\nPAIR_MEET_UP:SPT_DEV step=59454606 id=a669c41e07137d13f70592b46158bdacc96a5ee3a9f3e6ab156621de2b0ced3a addr=EndpointAddr { id: PublicKey(a669c41e07137d13f70592b46158bdacc96a5ee3a9f3e6ab156621de2b0ced3a), addrs: {Ip(100.68.35.65:50384), Ip(192.168.1.81:50384)} }\nPAIR_MEET_UP:BIGNET step=59454606 id=e18e45ca78b31cbe92119f41adaf0da7f4f5606c3dda7ba2e6c58fd4878c1a5f addr=EndpointAddr { id: PublicKey(e18e45ca78b31cbe92119f41adaf0da7f4f5606c3dda7ba2e6c58fd4878c1a5f), addrs: {Ip(100.68.35.65:50397), Ip(192.168.1.81:50397)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454607 id=c449281ecb7eab1bf185b93abb6b007f8e275b32a0e2158637882408616c8e8d addr=EndpointAddr { id: PublicKey(c449281ecb7eab1bf185b93abb6b007f8e275b32a0e2158637882408616c8e8d), addrs: {Ip(100.68.35.65:64629), Ip(192.168.1.81:64629)} }\nPAIR_MEET_UP:SPT_DEV step=59454607 id=0d008efe24ee1deacdc7a621c9cd7e587b67d418a581cf50489e1c2170e2bb2c addr=EndpointAddr { id: PublicKey(0d008efe24ee1deacdc7a621c9cd7e587b67d418a581cf50489e1c2170e2bb2c), addrs: {Ip(100.68.35.65:64621), Ip(192.168.1.81:64621)} }\nPAIR_MEET_UP:BIGNET step=59454607 id=81f5749b2d57df62ef2041bac5a7ef080233434f69513239e06c27b5e4eda0bf addr=EndpointAddr { id: PublicKey(81f5749b2d57df62ef2041bac5a7ef080233434f69513239e06c27b5e4eda0bf), addrs: {Ip(100.68.35.65:64627), Ip(192.168.1.81:64627)} }\nENDPOINT_INJECT:doyle: endpoint ACTIVE -> spool (deferred hint), not injected\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454608 id=c0378bc1b12845cd205bef09fa88543a32e0a051d9c9c5f6b4f172a3014f2e39 addr=EndpointAddr { id: PublicKey(c0378bc1b12845cd205bef09fa88543a32e0a051d9c9c5f6b4f172a3014f2e39), addrs: {Ip(100.68.35.65:63829), Ip(192.168.1.81:63829)} }\nPAIR_MEET_UP:SPT_DEV step=59454608 id=568cc17db79a928a6b22162d09d48d7f3db4db5b8422bf0cf73f071cd15120ee addr=EndpointAddr { id: PublicKey(568cc17db79a928a6b22162d09d48d7f3db4db5b8422bf0cf73f071cd15120ee), addrs: {Ip(100.68.35.65:63831), Ip(192.168.1.81:63831)} }\nPAIR_MEET_UP:BS-Resources step=59454608 id=990a68838a9017ec855b8120a13ddaef4cd445c4483af466052e37f39dbc6999 addr=EndpointAddr { id: PublicKey(990a68838a9017ec855b8120a13ddaef4cd445c4483af466052e37f39dbc6999), addrs: {Ip(100.68.35.65:63843), Ip(192.168.1.81:63843)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454609 id=47dc2e56b0146804caf9205c86e005628b72afac21701c4e8f570d25bde63f9f addr=EndpointAddr { id: PublicKey(47dc2e56b0146804caf9205c86e005628b72afac21701c4e8f570d25bde63f9f), addrs: {Ip(100.68.35.65:60879), Ip(192.168.1.81:60879)} }\nPAIR_MEET_UP:BIGNET step=59454609 id=a193f297b863fb6165c7feb3b2d1b00079eeed013df667dcdf779af3aa8f5b01 addr=EndpointAddr { id: PublicKey(a193f297b863fb6165c7feb3b2d1b00079eeed013df667dcdf779af3aa8f5b01), addrs: {Ip(100.68.35.65:60880), Ip(192.168.1.81:60880)} }\nPAIR_MEET_UP:BS-Resources step=59454609 id=a780ed71b086f39d421563cc6e2d558bd4b9174e8d1c63b1f05adcfa28121285 addr=EndpointAddr { id: PublicKey(a780ed71b086f39d421563cc6e2d558bd4b9174e8d1c63b1f05adcfa28121285), addrs: {Ip(100.68.35.65:60893), Ip(192.168.1.81:60893)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454610 id=251023176fab5dbf4052d6f8bf5330c995a78596c89ae7e9efa7217f893d0b63 addr=EndpointAddr { id: PublicKey(251023176fab5dbf4052d6f8bf5330c995a78596c89ae7e9efa7217f893d0b63), addrs: {Ip(100.68.35.65:53646), Ip(192.168.1.81:53646)} }\nPAIR_MEET_UP:BIGNET step=59454610 id=af998bfbdb078ef334df478bc5851ce6b43237f56b4ae492f4841625193b05c5 addr=EndpointAddr { id: PublicKey(af998bfbdb078ef334df478bc5851ce6b43237f56b4ae492f4841625193b05c5), addrs: {Ip(100.68.35.65:53648), Ip(192.168.1.81:53648)} }\nPAIR_MEET_UP:BS-Resources step=59454610 id=fa1d9188dfa441e48f78aafeff6a6f36610b573760e6e262726e43ef0a476c36 addr=EndpointAddr { id: PublicKey(fa1d9188dfa441e48f78aafeff6a6f36610b573760e6e262726e43ef0a476c36), addrs: {Ip(100.68.35.65:53652), Ip(192.168.1.81:53652)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454611 id=3100ad7f2ae347b97d1f1009814a3076c7741b7c31f72e7f46e8355402c407c5 addr=EndpointAddr { id: PublicKey(3100ad7f2ae347b97d1f1009814a3076c7741b7c31f72e7f46e8355402c407c5), addrs: {Ip(100.68.35.65:50552), Ip(192.168.1.81:50552)} }\nPAIR_MEET_UP:BIGNET step=59454611 id=309db9a3f1a0aae84612d8f697c8cac9632152eb5cd9576f78f4e27dac11ae95 addr=EndpointAddr { id: PublicKey(309db9a3f1a0aae84612d8f697c8cac9632152eb5cd9576f78f4e27dac11ae95), addrs: {Ip(100.68.35.65:50553), Ip(192.168.1.81:50553)} }\nPAIR_MEET_UP:SPT_DEV step=59454611 id=8f3cab122043f047d38e1b5003071b46bf74911e3b2dbce3c171f208168b1826 addr=EndpointAddr { id: PublicKey(8f3cab122043f047d38e1b5003071b46bf74911e3b2dbce3c171f208168b1826), addrs: {Ip(100.68.35.65:50567), Ip(192.168.1.81:50567)} }\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:todlando (2712 bytes → translation binary)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n\n[Showing lines 1-183 of 221. Use :184 to continue]"}],"details":{"truncation":{"content":"=== spt brain stderr — generation 1 — pid 43932 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)\nBRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\nPEER_PUMP_FAIL: brain IPC read deadline elapsed\nPEER_PUMP_RESTART: supervised restart in 10s\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\n=== spt broker stderr — generation 0 — pid 50220 ===\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n=== spt brain stderr — generation 0 — pid 9476 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\nPAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\nPAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\nDAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\nDAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\nDAEMON_RESTART_RESUME:flynn: resuming session 586ab982-8ebe-470a-b47a-15332f8edfab under claude-spt:ccs (pid 77020) — online at bind\nDAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\nPAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\nPAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454596 id=dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2 addr=EndpointAddr { id: PublicKey(dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2), addrs: {Ip(100.68.35.65:55109), Ip(192.168.1.81:55109)} }\nPAIR_MEET_UP:BS-Resources step=59454596 id=d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6 addr=EndpointAddr { id: PublicKey(d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6), addrs: {Ip(100.68.35.65:55111), Ip(192.168.1.81:55111)} }\nPAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:deployah (309 bytes → translation binary)\nIDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\nINJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454597 id=0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab addr=EndpointAddr { id: PublicKey(0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab), addrs: {Ip(100.68.35.65:63562), Ip(192.168.1.81:63562)} }\nPAIR_MEET_UP:BS-Resources step=59454597 id=dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e addr=EndpointAddr { id: PublicKey(dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e), addrs: {Ip(100.68.35.65:63560), Ip(192.168.1.81:63560)} }\nPAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454598 id=e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d addr=EndpointAddr { id: PublicKey(e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d), addrs: {Ip(100.68.35.65:49157), Ip(192.168.1.81:49157)} }\nPAIR_MEET_UP:BIGNET step=59454598 id=a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8 addr=EndpointAddr { id: PublicKey(a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8), addrs: {Ip(100.68.35.65:49159), Ip(192.168.1.81:49159)} }\nPAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454599 id=b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954 addr=EndpointAddr { id: PublicKey(b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954), addrs: {Ip(100.68.35.65:49355), Ip(192.168.1.81:49355)} }\nPAIR_MEET_UP:SPT_DEV step=59454599 id=c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5 addr=EndpointAddr { id: PublicKey(c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5), addrs: {Ip(100.68.35.65:49353), Ip(192.168.1.81:49353)} }\nPAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }\nPAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }\nPAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454601 id=5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7 addr=EndpointAddr { id: PublicKey(5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7), addrs: {Ip(100.68.35.65:55399), Ip(192.168.1.81:55399)} }\nPAIR_MEET_UP:SPT_DEV step=59454601 id=836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3 addr=EndpointAddr { id: PublicKey(836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3), addrs: {Ip(100.68.35.65:55397), Ip(192.168.1.81:55397)} }\nPAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454602 id=2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4 addr=EndpointAddr { id: PublicKey(2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4), addrs: {Ip(100.68.35.65:64726), Ip(192.168.1.81:64726)} }\nPAIR_MEET_UP:BIGNET step=59454602 id=d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738 addr=EndpointAddr { id: PublicKey(d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738), addrs: {Ip(100.68.35.65:64724), Ip(192.168.1.81:64724)} }\nPAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454603 id=01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68 addr=EndpointAddr { id: PublicKey(01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68), addrs: {Ip(100.68.35.65:64061), Ip(192.168.1.81:64061)} }\nPAIR_MEET_UP:BS-Resources step=59454603 id=345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859 addr=EndpointAddr { id: PublicKey(345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859), addrs: {Ip(100.68.35.65:64059), Ip(192.168.1.81:64059)} }\nPAIR_MEET_UP:BIGNET step=59454603 id=5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736 addr=EndpointAddr { id: PublicKey(5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736), addrs: {Ip(100.68.35.65:64073), Ip(192.168.1.81:64073)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454604 id=abbf78a54e841b6eed1702e2d284033aad71b86f1e7e177b278ce4d771b51ca4 addr=EndpointAddr { id: PublicKey(abbf78a54e841b6eed1702e2d284033aad71b86f1e7e177b278ce4d771b51ca4), addrs: {Ip(100.68.35.65:63672), Ip(192.168.1.81:63672)} }\nPAIR_MEET_UP:BS-Resources step=59454604 id=fb6c2a7836f61bffdc29826fab5c20774f3d8e54db538c58781d8f016335652d addr=EndpointAddr { id: PublicKey(fb6c2a7836f61bffdc29826fab5c20774f3d8e54db538c58781d8f016335652d), addrs: {Ip(100.68.35.65:63671), Ip(192.168.1.81:63671)} }\nPAIR_MEET_UP:BIGNET step=59454604 id=f71b8236fc75f61f9b188e025a847ba85ed70c66e6707d2b82d86cb01b43b4cf addr=EndpointAddr { id: PublicKey(f71b8236fc75f61f9b188e025a847ba85ed70c66e6707d2b82d86cb01b43b4cf), addrs: {Ip(100.68.35.65:63685), Ip(192.168.1.81:63685)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454605 id=b77a9e43d7c7fc42cd91c721187f4928a1cee02d24dd097c879100179b396e5e addr=EndpointAddr { id: PublicKey(b77a9e43d7c7fc42cd91c721187f4928a1cee02d24dd097c879100179b396e5e), addrs: {Ip(100.68.35.65:52103), Ip(192.168.1.81:52103)} }\nPAIR_MEET_UP:SPT_DEV step=59454605 id=3e05654f29aa3b3a46c8dbfa6ce5650ecfe6ee6a069484e275bc18e2b05789b0 addr=EndpointAddr { id: PublicKey(3e05654f29aa3b3a46c8dbfa6ce5650ecfe6ee6a069484e275bc18e2b05789b0), addrs: {Ip(100.68.35.65:52105), Ip(192.168.1.81:52105)} }\nPAIR_MEET_UP:BS-Resources step=59454605 id=60b2bfd5d87e2d82a5b4603eb07328ff588b0a0a19c8ae58561c2b0db222d6c6 addr=EndpointAddr { id: PublicKey(60b2bfd5d87e2d82a5b4603eb07328ff588b0a0a19c8ae58561c2b0db222d6c6), addrs: {Ip(100.68.35.65:52109), Ip(192.168.1.81:52109)} }\nENDPOINT_INJECT:deployah (944 bytes → translation binary)\nENDPOINT_INJECT:todlando (1153 bytes → translation binary)\nINJECT_SETTLE_TIMEOUT:todlando: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454606 id=297d8d02f05aeb9b7b7b83f396ed6b682da961f8415373b4a06840131ab40658 addr=EndpointAddr { id: PublicKey(297d8d02f05aeb9b7b7b83f396ed6b682da961f8415373b4a06840131ab40658), addrs: {Ip(100.68.35.65:50382), Ip(192.168.1.81:50382)} }\nPAIR_MEET_UP:SPT_DEV step=59454606 id=a669c41e07137d13f70592b46158bdacc96a5ee3a9f3e6ab156621de2b0ced3a addr=EndpointAddr { id: PublicKey(a669c41e07137d13f70592b46158bdacc96a5ee3a9f3e6ab156621de2b0ced3a), addrs: {Ip(100.68.35.65:50384), Ip(192.168.1.81:50384)} }\nPAIR_MEET_UP:BIGNET step=59454606 id=e18e45ca78b31cbe92119f41adaf0da7f4f5606c3dda7ba2e6c58fd4878c1a5f addr=EndpointAddr { id: PublicKey(e18e45ca78b31cbe92119f41adaf0da7f4f5606c3dda7ba2e6c58fd4878c1a5f), addrs: {Ip(100.68.35.65:50397), Ip(192.168.1.81:50397)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454607 id=c449281ecb7eab1bf185b93abb6b007f8e275b32a0e2158637882408616c8e8d addr=EndpointAddr { id: PublicKey(c449281ecb7eab1bf185b93abb6b007f8e275b32a0e2158637882408616c8e8d), addrs: {Ip(100.68.35.65:64629), Ip(192.168.1.81:64629)} }\nPAIR_MEET_UP:SPT_DEV step=59454607 id=0d008efe24ee1deacdc7a621c9cd7e587b67d418a581cf50489e1c2170e2bb2c addr=EndpointAddr { id: PublicKey(0d008efe24ee1deacdc7a621c9cd7e587b67d418a581cf50489e1c2170e2bb2c), addrs: {Ip(100.68.35.65:64621), Ip(192.168.1.81:64621)} }\nPAIR_MEET_UP:BIGNET step=59454607 id=81f5749b2d57df62ef2041bac5a7ef080233434f69513239e06c27b5e4eda0bf addr=EndpointAddr { id: PublicKey(81f5749b2d57df62ef2041bac5a7ef080233434f69513239e06c27b5e4eda0bf), addrs: {Ip(100.68.35.65:64627), Ip(192.168.1.81:64627)} }\nENDPOINT_INJECT:doyle: endpoint ACTIVE -> spool (deferred hint), not injected\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454608 id=c0378bc1b12845cd205bef09fa88543a32e0a051d9c9c5f6b4f172a3014f2e39 addr=EndpointAddr { id: PublicKey(c0378bc1b12845cd205bef09fa88543a32e0a051d9c9c5f6b4f172a3014f2e39), addrs: {Ip(100.68.35.65:63829), Ip(192.168.1.81:63829)} }\nPAIR_MEET_UP:SPT_DEV step=59454608 id=568cc17db79a928a6b22162d09d48d7f3db4db5b8422bf0cf73f071cd15120ee addr=EndpointAddr { id: PublicKey(568cc17db79a928a6b22162d09d48d7f3db4db5b8422bf0cf73f071cd15120ee), addrs: {Ip(100.68.35.65:63831), Ip(192.168.1.81:63831)} }\nPAIR_MEET_UP:BS-Resources step=59454608 id=990a68838a9017ec855b8120a13ddaef4cd445c4483af466052e37f39dbc6999 addr=EndpointAddr { id: PublicKey(990a68838a9017ec855b8120a13ddaef4cd445c4483af466052e37f39dbc6999), addrs: {Ip(100.68.35.65:63843), Ip(192.168.1.81:63843)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454609 id=47dc2e56b0146804caf9205c86e005628b72afac21701c4e8f570d25bde63f9f addr=EndpointAddr { id: PublicKey(47dc2e56b0146804caf9205c86e005628b72afac21701c4e8f570d25bde63f9f), addrs: {Ip(100.68.35.65:60879), Ip(192.168.1.81:60879)} }\nPAIR_MEET_UP:BIGNET step=59454609 id=a193f297b863fb6165c7feb3b2d1b00079eeed013df667dcdf779af3aa8f5b01 addr=EndpointAddr { id: PublicKey(a193f297b863fb6165c7feb3b2d1b00079eeed013df667dcdf779af3aa8f5b01), addrs: {Ip(100.68.35.65:60880), Ip(192.168.1.81:60880)} }\nPAIR_MEET_UP:BS-Resources step=59454609 id=a780ed71b086f39d421563cc6e2d558bd4b9174e8d1c63b1f05adcfa28121285 addr=EndpointAddr { id: PublicKey(a780ed71b086f39d421563cc6e2d558bd4b9174e8d1c63b1f05adcfa28121285), addrs: {Ip(100.68.35.65:60893), Ip(192.168.1.81:60893)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454610 id=251023176fab5dbf4052d6f8bf5330c995a78596c89ae7e9efa7217f893d0b63 addr=EndpointAddr { id: PublicKey(251023176fab5dbf4052d6f8bf5330c995a78596c89ae7e9efa7217f893d0b63), addrs: {Ip(100.68.35.65:53646), Ip(192.168.1.81:53646)} }\nPAIR_MEET_UP:BIGNET step=59454610 id=af998bfbdb078ef334df478bc5851ce6b43237f56b4ae492f4841625193b05c5 addr=EndpointAddr { id: PublicKey(af998bfbdb078ef334df478bc5851ce6b43237f56b4ae492f4841625193b05c5), addrs: {Ip(100.68.35.65:53648), Ip(192.168.1.81:53648)} }\nPAIR_MEET_UP:BS-Resources step=59454610 id=fa1d9188dfa441e48f78aafeff6a6f36610b573760e6e262726e43ef0a476c36 addr=EndpointAddr { id: PublicKey(fa1d9188dfa441e48f78aafeff6a6f36610b573760e6e262726e43ef0a476c36), addrs: {Ip(100.68.35.65:53652), Ip(192.168.1.81:53652)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454611 id=3100ad7f2ae347b97d1f1009814a3076c7741b7c31f72e7f46e8355402c407c5 addr=EndpointAddr { id: PublicKey(3100ad7f2ae347b97d1f1009814a3076c7741b7c31f72e7f46e8355402c407c5), addrs: {Ip(100.68.35.65:50552), Ip(192.168.1.81:50552)} }\nPAIR_MEET_UP:BIGNET step=59454611 id=309db9a3f1a0aae84612d8f697c8cac9632152eb5cd9576f78f4e27dac11ae95 addr=EndpointAddr { id: PublicKey(309db9a3f1a0aae84612d8f697c8cac9632152eb5cd9576f78f4e27dac11ae95), addrs: {Ip(100.68.35.65:50553), Ip(192.168.1.81:50553)} }\nPAIR_MEET_UP:SPT_DEV step=59454611 id=8f3cab122043f047d38e1b5003071b46bf74911e3b2dbce3c171f208168b1826 addr=EndpointAddr { id: PublicKey(8f3cab122043f047d38e1b5003071b46bf74911e3b2dbce3c171f208168b1826), addrs: {Ip(100.68.35.65:50567), Ip(192.168.1.81:50567)} }\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:todlando (2712 bytes → translation binary)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)","truncated":true,"truncatedBy":"lines","totalLines":221,"totalBytes":26550,"outputLines":183,"outputBytes":26550,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"=== spt brain stderr — generation 1 — pid 43932 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)\nBRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\nPEER_PUMP_FAIL: brain IPC read deadline elapsed\nPEER_PUMP_RESTART: supervised restart in 10s\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\n=== spt broker stderr — generation 0 — pid 50220 ===\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n=== spt brain stderr — generation 0 — pid 9476 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\nPAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\nPAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\nDAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\nDAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\nDAEMON_RESTART_RESUME:flynn: resuming session 586ab982-8ebe-470a-b47a-15332f8edfab under claude-spt:ccs (pid 77020) — online at bind\nDAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\nPAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\nPAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454596 id=dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2 addr=EndpointAddr { id: PublicKey(dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2), addrs: {Ip(100.68.35.65:55109), Ip(192.168.1.81:55109)} }\nPAIR_MEET_UP:BS-Resources step=59454596 id=d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6 addr=EndpointAddr { id: PublicKey(d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6), addrs: {Ip(100.68.35.65:55111), Ip(192.168.1.81:55111)} }\nPAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:deployah (309 bytes → translation binary)\nIDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\nINJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454597 id=0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab addr=EndpointAddr { id: PublicKey(0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab), addrs: {Ip(100.68.35.65:63562), Ip(192.168.1.81:63562)} }\nPAIR_MEET_UP:BS-Resources step=59454597 id=dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e addr=EndpointAddr { id: PublicKey(dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e), addrs: {Ip(100.68.35.65:63560), Ip(192.168.1.81:63560)} }\nPAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454598 id=e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d addr=EndpointAddr { id: PublicKey(e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d), addrs: {Ip(100.68.35.65:49157), Ip(192.168.1.81:49157)} }\nPAIR_MEET_UP:BIGNET step=59454598 id=a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8 addr=EndpointAddr { id: PublicKey(a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8), addrs: {Ip(100.68.35.65:49159), Ip(192.168.1.81:49159)} }\nPAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454599 id=b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954 addr=EndpointAddr { id: PublicKey(b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954), addrs: {Ip(100.68.35.65:49355), Ip(192.168.1.81:49355)} }\nPAIR_MEET_UP:SPT_DEV step=59454599 id=c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5 addr=EndpointAddr { id: PublicKey(c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5), addrs: {Ip(100.68.35.65:49353), Ip(192.168.1.81:49353)} }\nPAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }\nPAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }\nPAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454601 id=5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7 addr=EndpointAddr { id: PublicKey(5f863938eb9c0b65f9f95d30e7cb857de897d4ff6f7dd57719c04f3f12c575e7), addrs: {Ip(100.68.35.65:55399), Ip(192.168.1.81:55399)} }\nPAIR_MEET_UP:SPT_DEV step=59454601 id=836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3 addr=EndpointAddr { id: PublicKey(836a9c72a1922376d5f0dafcf778b6156142c1af5c585ea1c4b0d338d11c1be3), addrs: {Ip(100.68.35.65:55397), Ip(192.168.1.81:55397)} }\nPAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454602 id=2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4 addr=EndpointAddr { id: PublicKey(2f1df7855883d38f6d7f25fc30ad73fee02787bb89c07f02a2e9dab0bc626ec4), addrs: {Ip(100.68.35.65:64726), Ip(192.168.1.81:64726)} }\nPAIR_MEET_UP:BIGNET step=59454602 id=d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738 addr=EndpointAddr { id: PublicKey(d8027467ff5247171af2846481af04e4810cd2159a31fd2316d467fb34b2f738), addrs: {Ip(100.68.35.65:64724), Ip(192.168.1.81:64724)} }\nPAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454603 id=01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68 addr=EndpointAddr { id: PublicKey(01ea038e14ce8185ffcd857e7e951f8085ad1c1314262a946eba819d07a9bb68), addrs: {Ip(100.68.35.65:64061), Ip(192.168.1.81:64061)} }\nPAIR_MEET_UP:BS-Resources step=59454603 id=345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859 addr=EndpointAddr { id: PublicKey(345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859), addrs: {Ip(100.68.35.65:64059), Ip(192.168.1.81:64059)} }\nPAIR_MEET_UP:BIGNET step=59454603 id=5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736 addr=EndpointAddr { id: PublicKey(5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736), addrs: {Ip(100.68.35.65:64073), Ip(192.168.1.81:64073)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454604 id=abbf78a54e841b6eed1702e2d284033aad71b86f1e7e177b278ce4d771b51ca4 addr=EndpointAddr { id: PublicKey(abbf78a54e841b6eed1702e2d284033aad71b86f1e7e177b278ce4d771b51ca4), addrs: {Ip(100.68.35.65:63672), Ip(192.168.1.81:63672)} }\nPAIR_MEET_UP:BS-Resources step=59454604 id=fb6c2a7836f61bffdc29826fab5c20774f3d8e54db538c58781d8f016335652d addr=EndpointAddr { id: PublicKey(fb6c2a7836f61bffdc29826fab5c20774f3d8e54db538c58781d8f016335652d), addrs: {Ip(100.68.35.65:63671), Ip(192.168.1.81:63671)} }\nPAIR_MEET_UP:BIGNET step=59454604 id=f71b8236fc75f61f9b188e025a847ba85ed70c66e6707d2b82d86cb01b43b4cf addr=EndpointAddr { id: PublicKey(f71b8236fc75f61f9b188e025a847ba85ed70c66e6707d2b82d86cb01b43b4cf), addrs: {Ip(100.68.35.65:63685), Ip(192.168.1.81:63685)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454605 id=b77a9e43d7c7fc42cd91c721187f4928a1cee02d24dd097c879100179b396e5e addr=EndpointAddr { id: PublicKey(b77a9e43d7c7fc42cd91c721187f4928a1cee02d24dd097c879100179b396e5e), addrs: {Ip(100.68.35.65:52103), Ip(192.168.1.81:52103)} }\nPAIR_MEET_UP:SPT_DEV step=59454605 id=3e05654f29aa3b3a46c8dbfa6ce5650ecfe6ee6a069484e275bc18e2b05789b0 addr=EndpointAddr { id: PublicKey(3e05654f29aa3b3a46c8dbfa6ce5650ecfe6ee6a069484e275bc18e2b05789b0), addrs: {Ip(100.68.35.65:52105), Ip(192.168.1.81:52105)} }\nPAIR_MEET_UP:BS-Resources step=59454605 id=60b2bfd5d87e2d82a5b4603eb07328ff588b0a0a19c8ae58561c2b0db222d6c6 addr=EndpointAddr { id: PublicKey(60b2bfd5d87e2d82a5b4603eb07328ff588b0a0a19c8ae58561c2b0db222d6c6), addrs: {Ip(100.68.35.65:52109), Ip(192.168.1.81:52109)} }\nENDPOINT_INJECT:deployah (944 bytes → translation binary)\nENDPOINT_INJECT:todlando (1153 bytes → translation binary)\nINJECT_SETTLE_TIMEOUT:todlando: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454606 id=297d8d02f05aeb9b7b7b83f396ed6b682da961f8415373b4a06840131ab40658 addr=EndpointAddr { id: PublicKey(297d8d02f05aeb9b7b7b83f396ed6b682da961f8415373b4a06840131ab40658), addrs: {Ip(100.68.35.65:50382), Ip(192.168.1.81:50382)} }\nPAIR_MEET_UP:SPT_DEV step=59454606 id=a669c41e07137d13f70592b46158bdacc96a5ee3a9f3e6ab156621de2b0ced3a addr=EndpointAddr { id: PublicKey(a669c41e07137d13f70592b46158bdacc96a5ee3a9f3e6ab156621de2b0ced3a), addrs: {Ip(100.68.35.65:50384), Ip(192.168.1.81:50384)} }\nPAIR_MEET_UP:BIGNET step=59454606 id=e18e45ca78b31cbe92119f41adaf0da7f4f5606c3dda7ba2e6c58fd4878c1a5f addr=EndpointAddr { id: PublicKey(e18e45ca78b31cbe92119f41adaf0da7f4f5606c3dda7ba2e6c58fd4878c1a5f), addrs: {Ip(100.68.35.65:50397), Ip(192.168.1.81:50397)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454607 id=c449281ecb7eab1bf185b93abb6b007f8e275b32a0e2158637882408616c8e8d addr=EndpointAddr { id: PublicKey(c449281ecb7eab1bf185b93abb6b007f8e275b32a0e2158637882408616c8e8d), addrs: {Ip(100.68.35.65:64629), Ip(192.168.1.81:64629)} }\nPAIR_MEET_UP:SPT_DEV step=59454607 id=0d008efe24ee1deacdc7a621c9cd7e587b67d418a581cf50489e1c2170e2bb2c addr=EndpointAddr { id: PublicKey(0d008efe24ee1deacdc7a621c9cd7e587b67d418a581cf50489e1c2170e2bb2c), addrs: {Ip(100.68.35.65:64621), Ip(192.168.1.81:64621)} }\nPAIR_MEET_UP:BIGNET step=59454607 id=81f5749b2d57df62ef2041bac5a7ef080233434f69513239e06c27b5e4eda0bf addr=EndpointAddr { id: PublicKey(81f5749b2d57df62ef2041bac5a7ef080233434f69513239e06c27b5e4eda0bf), addrs: {Ip(100.68.35.65:64627), Ip(192.168.1.81:64627)} }\nENDPOINT_INJECT:doyle: endpoint ACTIVE -> spool (deferred hint), not injected\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454608 id=c0378bc1b12845cd205bef09fa88543a32e0a051d9c9c5f6b4f172a3014f2e39 addr=EndpointAddr { id: PublicKey(c0378bc1b12845cd205bef09fa88543a32e0a051d9c9c5f6b4f172a3014f2e39), addrs: {Ip(100.68.35.65:63829), Ip(192.168.1.81:63829)} }\nPAIR_MEET_UP:SPT_DEV step=59454608 id=568cc17db79a928a6b22162d09d48d7f3db4db5b8422bf0cf73f071cd15120ee addr=EndpointAddr { id: PublicKey(568cc17db79a928a6b22162d09d48d7f3db4db5b8422bf0cf73f071cd15120ee), addrs: {Ip(100.68.35.65:63831), Ip(192.168.1.81:63831)} }\nPAIR_MEET_UP:BS-Resources step=59454608 id=990a68838a9017ec855b8120a13ddaef4cd445c4483af466052e37f39dbc6999 addr=EndpointAddr { id: PublicKey(990a68838a9017ec855b8120a13ddaef4cd445c4483af466052e37f39dbc6999), addrs: {Ip(100.68.35.65:63843), Ip(192.168.1.81:63843)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454609 id=47dc2e56b0146804caf9205c86e005628b72afac21701c4e8f570d25bde63f9f addr=EndpointAddr { id: PublicKey(47dc2e56b0146804caf9205c86e005628b72afac21701c4e8f570d25bde63f9f), addrs: {Ip(100.68.35.65:60879), Ip(192.168.1.81:60879)} }\nPAIR_MEET_UP:BIGNET step=59454609 id=a193f297b863fb6165c7feb3b2d1b00079eeed013df667dcdf779af3aa8f5b01 addr=EndpointAddr { id: PublicKey(a193f297b863fb6165c7feb3b2d1b00079eeed013df667dcdf779af3aa8f5b01), addrs: {Ip(100.68.35.65:60880), Ip(192.168.1.81:60880)} }\nPAIR_MEET_UP:BS-Resources step=59454609 id=a780ed71b086f39d421563cc6e2d558bd4b9174e8d1c63b1f05adcfa28121285 addr=EndpointAddr { id: PublicKey(a780ed71b086f39d421563cc6e2d558bd4b9174e8d1c63b1f05adcfa28121285), addrs: {Ip(100.68.35.65:60893), Ip(192.168.1.81:60893)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454610 id=251023176fab5dbf4052d6f8bf5330c995a78596c89ae7e9efa7217f893d0b63 addr=EndpointAddr { id: PublicKey(251023176fab5dbf4052d6f8bf5330c995a78596c89ae7e9efa7217f893d0b63), addrs: {Ip(100.68.35.65:53646), Ip(192.168.1.81:53646)} }\nPAIR_MEET_UP:BIGNET step=59454610 id=af998bfbdb078ef334df478bc5851ce6b43237f56b4ae492f4841625193b05c5 addr=EndpointAddr { id: PublicKey(af998bfbdb078ef334df478bc5851ce6b43237f56b4ae492f4841625193b05c5), addrs: {Ip(100.68.35.65:53648), Ip(192.168.1.81:53648)} }\nPAIR_MEET_UP:BS-Resources step=59454610 id=fa1d9188dfa441e48f78aafeff6a6f36610b573760e6e262726e43ef0a476c36 addr=EndpointAddr { id: PublicKey(fa1d9188dfa441e48f78aafeff6a6f36610b573760e6e262726e43ef0a476c36), addrs: {Ip(100.68.35.65:53652), Ip(192.168.1.81:53652)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454611 id=3100ad7f2ae347b97d1f1009814a3076c7741b7c31f72e7f46e8355402c407c5 addr=EndpointAddr { id: PublicKey(3100ad7f2ae347b97d1f1009814a3076c7741b7c31f72e7f46e8355402c407c5), addrs: {Ip(100.68.35.65:50552), Ip(192.168.1.81:50552)} }\nPAIR_MEET_UP:BIGNET step=59454611 id=309db9a3f1a0aae84612d8f697c8cac9632152eb5cd9576f78f4e27dac11ae95 addr=EndpointAddr { id: PublicKey(309db9a3f1a0aae84612d8f697c8cac9632152eb5cd9576f78f4e27dac11ae95), addrs: {Ip(100.68.35.65:50553), Ip(192.168.1.81:50553)} }\nPAIR_MEET_UP:SPT_DEV step=59454611 id=8f3cab122043f047d38e1b5003071b46bf74911e3b2dbce3c171f208168b1826 addr=EndpointAddr { id: PublicKey(8f3cab122043f047d38e1b5003071b46bf74911e3b2dbce3c171f208168b1826), addrs: {Ip(100.68.35.65:50567), Ip(192.168.1.81:50567)} }\nPSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:todlando (2712 bytes → translation binary)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":221,"totalBytes":26550,"outputLines":183,"outputBytes":26550,"shownRange":{"start":1,"end":183},"nextOffset":184}}},"isError":false,"timestamp":1784069057262}}
{"type":"message","id":"47144df7","parentId":"c7110b16","timestamp":"2026-07-14T22:44:17.422Z","message":{"role":"toolResult","toolCallId":"call_UaNgmCP5G31v5epgjssu68ky|fc_050f56f290a937ae016a56bbc11e408196ac8ff9888f2f52d8","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*8|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*9|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*10|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n*11|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 12|DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n 13|DISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n 14|DISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n...\n 732|CONN_LIFECYCLE: conn=81 role=brain wall_ms=1783743874769 mono_ms=17834 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n*733|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*734|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n*735|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*736|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*737|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 738|CONN_LIFECYCLE: conn=82 role=brain wall_ms=1783743875770 mono_ms=18836 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 739|CONN_LIFECYCLE: conn=83 role=brain wall_ms=1783743876772 mono_ms=19837 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 740|CONN_LIFECYCLE: conn=84 role=brain wall_ms=1783743877774 mono_ms=20839 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n...\n 808|CONN_LIFECYCLE: conn=102 role=brain wall_ms=1783743889501 mono_ms=32567 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*809|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*810|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 811|CONN_LIFECYCLE: conn=103 role=brain wall_ms=1783743894544 mono_ms=37610 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 812|CONN_LIFECYCLE: conn=103 role=brain wall_ms=1783743894545 mono_ms=37610 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*813|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*814|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*815|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n 816|CONN_LIFECYCLE: conn=105 role=brain stream-subscriber stream=27 wall_ms=1783743895327 mono_ms=38393 event=stream-sub-attach stream=27 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 817|CONN_LIFECYCLE: conn=105 role=brain stream-subscriber stream=27 wall_ms=1783743895327 mono_ms=38393 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 818|CONN_LIFECYCLE: conn=104 role=brain stream-subscriber stream=28 wall_ms=1783743895327 mono_ms=38393 event=stream-sub-attach stream=28 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n...\n 851|CONN_LIFECYCLE: conn=113 role=brain stream-subscriber stream=32 wall_ms=1783743905574 mono_ms=48640 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*852|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*853|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*854|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*855|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n 856|CONN_LIFECYCLE: conn=114 role=brain wall_ms=1783743909670 mono_ms=52736 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 857|CONN_LIFECYCLE: conn=114 role=brain wall_ms=1783743909671 mono_ms=52736 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 858|CONN_LIFECYCLE: conn=115 role=brain stream-subscriber stream=33 wall_ms=1783743910390 mono_ms=53456 event=stream-sub-attach stream=33 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n...\n 916|CONN_LIFECYCLE: conn=132 role=brain stream-subscriber stream=41 wall_ms=1783743933591 mono_ms=76657 event=stream-sub-attach stream=41 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n*917|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n## daemon.stderr.log.1\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n*9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n*10|PEER_PUMP_RESTART: supervised restart in 10s\n 11|PUMP_IPC_READER: spawned\n 12|PUMP_IPC_READER: spawned\n 13|=== spt broker stderr — generation 0 — pid 50220 ===\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n\nSearched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log, ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log.1"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log, C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core\\logs","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":40,"fileCount":2,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":20}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n   6│PUMP_IPC_READER: spawned\n  *7│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n  *8│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  *9│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *10│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n *11│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  12│DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n  13│DISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n  14│DISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n    │...\n 732│CONN_LIFECYCLE: conn=81 role=brain wall_ms=1783743874769 mono_ms=17834 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n*733│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*734│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n*735│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*736│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*737│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 738│CONN_LIFECYCLE: conn=82 role=brain wall_ms=1783743875770 mono_ms=18836 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 739│CONN_LIFECYCLE: conn=83 role=brain wall_ms=1783743876772 mono_ms=19837 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 740│CONN_LIFECYCLE: conn=84 role=brain wall_ms=1783743877774 mono_ms=20839 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n    │...\n 808│CONN_LIFECYCLE: conn=102 role=brain wall_ms=1783743889501 mono_ms=32567 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*809│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*810│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 811│CONN_LIFECYCLE: conn=103 role=brain wall_ms=1783743894544 mono_ms=37610 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 812│CONN_LIFECYCLE: conn=103 role=brain wall_ms=1783743894545 mono_ms=37610 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*813│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*814│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*815│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n 816│CONN_LIFECYCLE: conn=105 role=brain stream-subscriber stream=27 wall_ms=1783743895327 mono_ms=38393 event=stream-sub-attach stream=27 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 817│CONN_LIFECYCLE: conn=105 role=brain stream-subscriber stream=27 wall_ms=1783743895327 mono_ms=38393 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 818│CONN_LIFECYCLE: conn=104 role=brain stream-subscriber stream=28 wall_ms=1783743895327 mono_ms=38393 event=stream-sub-attach stream=28 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n    │...\n 851│CONN_LIFECYCLE: conn=113 role=brain stream-subscriber stream=32 wall_ms=1783743905574 mono_ms=48640 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*852│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*853│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*854│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*855│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n 856│CONN_LIFECYCLE: conn=114 role=brain wall_ms=1783743909670 mono_ms=52736 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 857│CONN_LIFECYCLE: conn=114 role=brain wall_ms=1783743909671 mono_ms=52736 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 858│CONN_LIFECYCLE: conn=115 role=brain stream-subscriber stream=33 wall_ms=1783743910390 mono_ms=53456 event=stream-sub-attach stream=33 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n    │...\n 916│CONN_LIFECYCLE: conn=132 role=brain stream-subscriber stream=41 wall_ms=1783743933591 mono_ms=76657 event=stream-sub-attach stream=41 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n*917│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n## daemon.stderr.log.1\n  6│PUMP_IPC_READER: spawned\n *7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *8│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n *9│PEER_PUMP_FAIL: brain IPC read deadline elapsed\n*10│PEER_PUMP_RESTART: supervised restart in 10s\n 11│PUMP_IPC_READER: spawned\n 12│PUMP_IPC_READER: spawned\n 13│=== spt broker stderr — generation 0 — pid 50220 ===\n   │...\n 35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n   │...\n 44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48│ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49│IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50│INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51│PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n   │...\n 59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n   │...\n 68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n   │...\n 76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n   │...\n 84│PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)"},"isError":false,"timestamp":1784069057422}}
{"type":"message","id":"02f09e68","parentId":"47144df7","timestamp":"2026-07-14T22:44:17.422Z","message":{"role":"toolResult","toolCallId":"call_F5cAphR20Dy1EnlblHW2h7oM|fc_050f56f290a937ae016a56bbc121448196a0a31687f05b5564","toolName":"grep","content":[{"type":"text","text":"No matches found\nSearched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log, ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log.1"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log, C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core\\logs","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069057422}}
{"type":"message","id":"565b7c83","parentId":"02f09e68","timestamp":"2026-07-14T22:44:17.424Z","message":{"role":"toolResult","toolCallId":"call_TC8oh1zBECp6rObumHNu6AGp|fc_050f56f290a937ae016a56bbc11ec881969ee52fa17cb18d4d","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n 561|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*562|PAIR_MEET_UP:BIGNET step=59458128 id=ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce addr=EndpointAddr { id: PublicKey(ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce), addrs: {Ip(100.68.35.65:50072), Ip(192.168.1.81:50072)} }\n*563|PAIR_MEET_UP:BS-Resources step=59458128 id=f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116 addr=EndpointAddr { id: PublicKey(f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116), addrs: {Ip(100.68.35.65:50071), Ip(192.168.1.81:50071)} }\n 564|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 565|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*566|PAIR_MEET_UP:SPT_DEV step=59458128 id=2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4 addr=EndpointAddr { id: PublicKey(2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4), addrs: {Ip(100.68.35.65:50077), Ip(192.168.1.81:50077)} }\n 567|DAEMON_RESTART_RESUME_REFUSED:deployah: custody pid still alive — refusing to re-run over a live process (dup guard)\n 568|DAEMON_RESTART_RESUME_REFUSED:doyle: custody pid still alive — refusing to re-run over a live process (dup guard)\n 569|DAEMON_RESTART_RESUME_REFUSED:flynn: custody pid still alive — refusing to re-run over a live process (dup guard)\n...\n 715|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*716|PAIR_MEET_UP:BIGNET step=59458129 id=a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592 addr=EndpointAddr { id: PublicKey(a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592), addrs: {Ip(100.68.35.65:50106), Ip(192.168.1.81:50106)} }\n*717|PAIR_MEET_UP:SPT_DEV step=59458129 id=1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48 addr=EndpointAddr { id: PublicKey(1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48), addrs: {Ip(100.68.35.65:50105), Ip(192.168.1.81:50105)} }\n*718|PAIR_MEET_UP:BS-Resources step=59458129 id=a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888 addr=EndpointAddr { id: PublicKey(a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888), addrs: {Ip(100.68.35.65:50111), Ip(192.168.1.81:50111)} }\n 719|CONN_LIFECYCLE: conn=74 role=brain wall_ms=1783743870762 mono_ms=13827 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 720|CONN_LIFECYCLE: conn=75 role=brain stream-subscriber stream=21 wall_ms=1783743871414 mono_ms=14480 event=stream-sub-attach stream=21 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 721|CONN_LIFECYCLE: conn=75 role=brain stream-subscriber stream=21 wall_ms=1783743871414 mono_ms=14480 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n...\n 839|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*840|PAIR_MEET_UP:BS-Resources step=59458130 id=f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713 addr=EndpointAddr { id: PublicKey(f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713), addrs: {Ip(100.68.35.65:64538), Ip(192.168.1.81:64538)} }\n*841|PAIR_MEET_UP:SPT_DEV step=59458130 id=c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396 addr=EndpointAddr { id: PublicKey(c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396), addrs: {Ip(100.68.35.65:64537), Ip(192.168.1.81:64537)} }\n*842|PAIR_MEET_UP:BIGNET step=59458130 id=d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a addr=EndpointAddr { id: PublicKey(d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a), addrs: {Ip(100.68.35.65:64551), Ip(192.168.1.81:64551)} }\n 843|CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 844|CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 845|CONN_LIFECYCLE: conn=112 role=brain stream-subscriber stream=32 wall_ms=1783743905569 mono_ms=48635 event=stream-sub-attach stream=32 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n...\n 907|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*908|PAIR_MEET_UP:BIGNET step=59458131 id=64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5 addr=EndpointAddr { id: PublicKey(64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5), addrs: {Ip(100.68.35.65:52879), Ip(192.168.1.81:52879)} }\n*909|PAIR_MEET_UP:SPT_DEV step=59458131 id=580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0 addr=EndpointAddr { id: PublicKey(580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0), addrs: {Ip(100.68.35.65:52881), Ip(192.168.1.81:52881)} }\n*910|PAIR_MEET_UP:BS-Resources step=59458131 id=369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e addr=EndpointAddr { id: PublicKey(369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e), addrs: {Ip(100.68.35.65:52893), Ip(192.168.1.81:52893)} }\n 911|CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=stream-sub-attach stream=41 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 912|CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 913|CONN_WRITE_RETIRED: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\n...\n 961|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*962|PAIR_MEET_UP:BS-Resources step=59458132 id=3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba addr=EndpointAddr { id: PublicKey(3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba), addrs: {Ip(100.68.35.65:59021), Ip(192.168.1.81:59021)} }\n*963|PAIR_MEET_UP:SPT_DEV step=59458132 id=9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d addr=EndpointAddr { id: PublicKey(9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d), addrs: {Ip(100.68.35.65:59023), Ip(192.168.1.81:59023)} }\n 964|CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 965|CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*966|PAIR_MEET_UP:BIGNET step=59458132 id=53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8 addr=EndpointAddr { id: PublicKey(53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8), addrs: {Ip(100.68.35.65:59035), Ip(192.168.1.81:59035)} }\n 967|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 968|CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 969|CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n...\n 1030|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1031|PAIR_MEET_UP:BIGNET step=59458133 id=0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70 addr=EndpointAddr { id: PublicKey(0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70), addrs: {Ip(100.68.35.65:53921), Ip(192.168.1.81:53921)} }\n*1032|PAIR_MEET_UP:BS-Resources step=59458133 id=ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5 addr=EndpointAddr { id: PublicKey(ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5), addrs: {Ip(100.68.35.65:53922), Ip(192.168.1.81:53922)} }\n*1033|PAIR_MEET_UP:SPT_DEV step=59458133 id=10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899 addr=EndpointAddr { id: PublicKey(10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899), addrs: {Ip(100.68.35.65:53934), Ip(192.168.1.81:53934)} }\n 1034|CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1035|CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1036|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 1095|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1096|PAIR_MEET_UP:SPT_DEV step=59458134 id=b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4 addr=EndpointAddr { id: PublicKey(b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4), addrs: {Ip(100.68.35.65:64196), Ip(192.168.1.81:64196)} }\n*1097|PAIR_MEET_UP:BS-Resources step=59458134 id=0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd addr=EndpointAddr { id: PublicKey(0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd), addrs: {Ip(100.68.35.65:64202), Ip(192.168.1.81:64202)} }\n## daemon.stderr.log.1\n 19|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*20|PAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n*21|PAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\n*22|PAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\n 23|DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\n 24|DAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\n 25|DAEMON_RESTART_RESUME:flynn: resuming session 586ab982-8ebe-470a-b47a-15332f8edfab under claude-spt:ccs (pid 77020) — online at bind\n...\n 32|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*33|PAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\n*34|PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\n*35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n 36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*42|PAIR_MEET_UP:BIGNET step=59454596 id=dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2 addr=EndpointAddr { id: PublicKey(dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2), addrs: {Ip(100.68.35.65:55109), Ip(192.168.1.81:55109)} }\n*43|PAIR_MEET_UP:BS-Resources step=59454596 id=d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6 addr=EndpointAddr { id: PublicKey(d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6), addrs: {Ip(100.68.35.65:55111), Ip(192.168.1.81:55111)} }\n*44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n 45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*57|PAIR_MEET_UP:SPT_DEV step=59454597 id=0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab addr=EndpointAddr { id: PublicKey(0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab), addrs: {Ip(100.68.35.65:63562), Ip(192.168.1.81:63562)} }\n*58|PAIR_MEET_UP:BS-Resources step=59454597 id=dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e addr=EndpointAddr { id: PublicKey(dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e), addrs: {Ip(100.68.35.65:63560), Ip(192.168.1.81:63560)} }\n*59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n 60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*66|PAIR_MEET_UP:SPT_DEV step=59454598 id=e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d addr=EndpointAddr { id: PublicKey(e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d), addrs: {Ip(100.68.35.65:49157), Ip(192.168.1.81:49157)} }\n*67|PAIR_MEET_UP:BIGNET step=59454598 id=a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8 addr=EndpointAddr { id: PublicKey(a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8), addrs: {Ip(100.68.35.65:49159), Ip(192.168.1.81:49159)} }\n*68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n 69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*74|PAIR_MEET_UP:BS-Resources step=59454599 id=b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954 addr=EndpointAddr { id: PublicKey(b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954), addrs: {Ip(100.68.35.65:49355), Ip(192.168.1.81:49355)} }\n*75|PAIR_MEET_UP:SPT_DEV step=59454599 id=c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5 addr=EndpointAddr { id: PublicKey(c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5), addrs: {Ip(100.68.35.65:49353), Ip(192.168.1.81:49353)} }\n*76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n 77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*82|PAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }\n*83|PAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }\n\nSearched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log, ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log.1"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log, C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core\\logs","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":40,"fileCount":2,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":20}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n  561│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *562│PAIR_MEET_UP:BIGNET step=59458128 id=ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce addr=EndpointAddr { id: PublicKey(ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce), addrs: {Ip(100.68.35.65:50072), Ip(192.168.1.81:50072)} }\n *563│PAIR_MEET_UP:BS-Resources step=59458128 id=f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116 addr=EndpointAddr { id: PublicKey(f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116), addrs: {Ip(100.68.35.65:50071), Ip(192.168.1.81:50071)} }\n  564│CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  565│CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n *566│PAIR_MEET_UP:SPT_DEV step=59458128 id=2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4 addr=EndpointAddr { id: PublicKey(2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4), addrs: {Ip(100.68.35.65:50077), Ip(192.168.1.81:50077)} }\n  567│DAEMON_RESTART_RESUME_REFUSED:deployah: custody pid still alive — refusing to re-run over a live process (dup guard)\n  568│DAEMON_RESTART_RESUME_REFUSED:doyle: custody pid still alive — refusing to re-run over a live process (dup guard)\n  569│DAEMON_RESTART_RESUME_REFUSED:flynn: custody pid still alive — refusing to re-run over a live process (dup guard)\n     │...\n  715│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *716│PAIR_MEET_UP:BIGNET step=59458129 id=a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592 addr=EndpointAddr { id: PublicKey(a391d09312c099ec927bb0a5681ed49a97648c5ca853965521a91431dfe9a592), addrs: {Ip(100.68.35.65:50106), Ip(192.168.1.81:50106)} }\n *717│PAIR_MEET_UP:SPT_DEV step=59458129 id=1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48 addr=EndpointAddr { id: PublicKey(1fb19719d78f3c1a120308370c4d50e5ee400c0953ab1644dfe7bd665987ca48), addrs: {Ip(100.68.35.65:50105), Ip(192.168.1.81:50105)} }\n *718│PAIR_MEET_UP:BS-Resources step=59458129 id=a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888 addr=EndpointAddr { id: PublicKey(a6a1737675244163c07fa9f3fc1e591317eecef699dc758fe2086c0485d2c888), addrs: {Ip(100.68.35.65:50111), Ip(192.168.1.81:50111)} }\n  719│CONN_LIFECYCLE: conn=74 role=brain wall_ms=1783743870762 mono_ms=13827 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  720│CONN_LIFECYCLE: conn=75 role=brain stream-subscriber stream=21 wall_ms=1783743871414 mono_ms=14480 event=stream-sub-attach stream=21 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n  721│CONN_LIFECYCLE: conn=75 role=brain stream-subscriber stream=21 wall_ms=1783743871414 mono_ms=14480 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  839│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *840│PAIR_MEET_UP:BS-Resources step=59458130 id=f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713 addr=EndpointAddr { id: PublicKey(f9b01e61ef2990752f857a1a78fc26509c8b63ab6b5e108aa20219eaa121d713), addrs: {Ip(100.68.35.65:64538), Ip(192.168.1.81:64538)} }\n *841│PAIR_MEET_UP:SPT_DEV step=59458130 id=c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396 addr=EndpointAddr { id: PublicKey(c6b62a47852b73e941a5ebe0dc44fe1ce86a427c0640784f2e51e854679a8396), addrs: {Ip(100.68.35.65:64537), Ip(192.168.1.81:64537)} }\n *842│PAIR_MEET_UP:BIGNET step=59458130 id=d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a addr=EndpointAddr { id: PublicKey(d262b58d7c1a1bcc3d283c6368b56be32a767e80f55e78fcd8468000362d997a), addrs: {Ip(100.68.35.65:64551), Ip(192.168.1.81:64551)} }\n  843│CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  844│CONN_LIFECYCLE: conn=111 role=brain wall_ms=1783743904627 mono_ms=47692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n  845│CONN_LIFECYCLE: conn=112 role=brain stream-subscriber stream=32 wall_ms=1783743905569 mono_ms=48635 event=stream-sub-attach stream=32 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  907│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *908│PAIR_MEET_UP:BIGNET step=59458131 id=64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5 addr=EndpointAddr { id: PublicKey(64ab9afb0f08dbeef129b8a6c47229637c7853c1da165d27f559d833503ea1c5), addrs: {Ip(100.68.35.65:52879), Ip(192.168.1.81:52879)} }\n *909│PAIR_MEET_UP:SPT_DEV step=59458131 id=580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0 addr=EndpointAddr { id: PublicKey(580dec5eec186cf96e89a0f9f7720346440c294bf61cd0aa92841a10bb65cbd0), addrs: {Ip(100.68.35.65:52881), Ip(192.168.1.81:52881)} }\n *910│PAIR_MEET_UP:BS-Resources step=59458131 id=369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e addr=EndpointAddr { id: PublicKey(369587d9d9dc388df3a13ce7a4b3b8181a8a407bd96d152c124f4b791e61f18e), addrs: {Ip(100.68.35.65:52893), Ip(192.168.1.81:52893)} }\n  911│CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=stream-sub-attach stream=41 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n  912│CONN_LIFECYCLE: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  913│CONN_WRITE_RETIRED: conn=131 role=brain stream-subscriber stream=41 wall_ms=1783743933590 mono_ms=76656 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\n     │...\n  961│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n *962│PAIR_MEET_UP:BS-Resources step=59458132 id=3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba addr=EndpointAddr { id: PublicKey(3d159ca55b05fefdb232921e8b1d2c07f04438872064fbd5c731b1ac17dac6ba), addrs: {Ip(100.68.35.65:59021), Ip(192.168.1.81:59021)} }\n *963│PAIR_MEET_UP:SPT_DEV step=59458132 id=9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d addr=EndpointAddr { id: PublicKey(9fae93142a1aeaf80d4fab61f55fe1bfb940ec544675bbaba60104c855e7c83d), addrs: {Ip(100.68.35.65:59023), Ip(192.168.1.81:59023)} }\n  964│CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  965│CONN_LIFECYCLE: conn=146 role=brain wall_ms=1783743960099 mono_ms=103164 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n *966│PAIR_MEET_UP:BIGNET step=59458132 id=53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8 addr=EndpointAddr { id: PublicKey(53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8), addrs: {Ip(100.68.35.65:59035), Ip(192.168.1.81:59035)} }\n  967│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  968│CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  969│CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n 1030│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1031│PAIR_MEET_UP:BIGNET step=59458133 id=0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70 addr=EndpointAddr { id: PublicKey(0b93f6a8fd628ceb8bcfe454a3ceec5d3b311078c684fd0d41e72193fa50ed70), addrs: {Ip(100.68.35.65:53921), Ip(192.168.1.81:53921)} }\n*1032│PAIR_MEET_UP:BS-Resources step=59458133 id=ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5 addr=EndpointAddr { id: PublicKey(ae1ef3ca4184d2d9258522fd78d83441802b4804f4df009a2065ed7afc0413f5), addrs: {Ip(100.68.35.65:53922), Ip(192.168.1.81:53922)} }\n*1033│PAIR_MEET_UP:SPT_DEV step=59458133 id=10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899 addr=EndpointAddr { id: PublicKey(10a6d090a80115d6ccb50a92f3e3c16ffd74665f55a5f8703e563190156c4899), addrs: {Ip(100.68.35.65:53934), Ip(192.168.1.81:53934)} }\n 1034│CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1035│CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1036│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 1095│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*1096│PAIR_MEET_UP:SPT_DEV step=59458134 id=b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4 addr=EndpointAddr { id: PublicKey(b0953a170fc4ab8caa6671f6c9b03552e33c5e17559e64b8ac6d285170b300f4), addrs: {Ip(100.68.35.65:64196), Ip(192.168.1.81:64196)} }\n*1097│PAIR_MEET_UP:BS-Resources step=59458134 id=0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd addr=EndpointAddr { id: PublicKey(0812af3e2e9f811e18698f2c6cf8295d617f3ff3f3ff38ab2f3128e269fed6bd), addrs: {Ip(100.68.35.65:64202), Ip(192.168.1.81:64202)} }\n## daemon.stderr.log.1\n 19│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*20│PAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n*21│PAIR_MEET_UP:BIGNET step=59454594 id=cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3 addr=EndpointAddr { id: PublicKey(cf976d18e53d014684e2b4016c71151671bb7ca6dbe75e642f2c4ceaf3b063e3), addrs: {Ip(100.68.35.65:62934), Ip(192.168.1.81:62934)} }\n*22│PAIR_MEET_UP:BS-Resources step=59454594 id=24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c addr=EndpointAddr { id: PublicKey(24b2db0dd88494b15daa1bea49f1a17ef2cbab9c3d55245157300a100071c26c), addrs: {Ip(100.68.35.65:62940), Ip(192.168.1.81:62940)} }\n 23│DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 75056) — online at bind\n 24│DAEMON_RESTART_RESUME:doyle: resuming session d1a6c133-f9dc-4619-b4e7-1573677ac68f under claude-spt:ccs (pid 70952) — online at bind\n 25│DAEMON_RESTART_RESUME:flynn: resuming session 586ab982-8ebe-470a-b47a-15332f8edfab under claude-spt:ccs (pid 77020) — online at bind\n   │...\n 32│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*33│PAIR_MEET_UP:BS-Resources step=59454595 id=d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09 addr=EndpointAddr { id: PublicKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }\n*34│PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }\n*35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n 36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n   │...\n 41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*42│PAIR_MEET_UP:BIGNET step=59454596 id=dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2 addr=EndpointAddr { id: PublicKey(dd18d78de6fcb592b189e4ad3d885c9a109bd0a1a2a359c03ba53c582c66c5e2), addrs: {Ip(100.68.35.65:55109), Ip(192.168.1.81:55109)} }\n*43│PAIR_MEET_UP:BS-Resources step=59454596 id=d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6 addr=EndpointAddr { id: PublicKey(d69236c28d5d86cc5afb471eff08e639f1d6cf6f68c4f5a6d070d1f2fe8159f6), addrs: {Ip(100.68.35.65:55111), Ip(192.168.1.81:55111)} }\n*44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n 45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   │...\n 56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*57│PAIR_MEET_UP:SPT_DEV step=59454597 id=0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab addr=EndpointAddr { id: PublicKey(0a840047b80a27fb0fad060b19c65da88ca29e608e6ea6b961fafeaf270a8eab), addrs: {Ip(100.68.35.65:63562), Ip(192.168.1.81:63562)} }\n*58│PAIR_MEET_UP:BS-Resources step=59454597 id=dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e addr=EndpointAddr { id: PublicKey(dd241e5d25f61bd2156138a0f066c2c336b82930e05e5e4ae671b8f7b40a481e), addrs: {Ip(100.68.35.65:63560), Ip(192.168.1.81:63560)} }\n*59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n 60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   │...\n 65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*66│PAIR_MEET_UP:SPT_DEV step=59454598 id=e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d addr=EndpointAddr { id: PublicKey(e692bd8576563c88b929db01d371b5363f4aca6abbadce71c8c652bafcb36c5d), addrs: {Ip(100.68.35.65:49157), Ip(192.168.1.81:49157)} }\n*67│PAIR_MEET_UP:BIGNET step=59454598 id=a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8 addr=EndpointAddr { id: PublicKey(a0dcc2341df086aa5def06f30c7785cf090750935214e46ea4530ccfe7895df8), addrs: {Ip(100.68.35.65:49159), Ip(192.168.1.81:49159)} }\n*68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n 69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n   │...\n 73│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*74│PAIR_MEET_UP:BS-Resources step=59454599 id=b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954 addr=EndpointAddr { id: PublicKey(b7fda3c557a760c894c08d8f960a49af34beb59e9b7b38d22772e3b812440954), addrs: {Ip(100.68.35.65:49355), Ip(192.168.1.81:49355)} }\n*75│PAIR_MEET_UP:SPT_DEV step=59454599 id=c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5 addr=EndpointAddr { id: PublicKey(c718c18a0e0e578446975cdf6636d063c3c2842003a2210d68f2952860ea19f5), addrs: {Ip(100.68.35.65:49353), Ip(192.168.1.81:49353)} }\n*76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n 77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n   │...\n 81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n*82│PAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }\n*83│PAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }"},"isError":false,"timestamp":1784069057424}}
{"type":"message","id":"8874154c","parentId":"565b7c83","timestamp":"2026-07-14T22:44:19.099Z","message":{"role":"toolResult","toolCallId":"call_jwFJr9WXTd9x93OhPG6h7sVG|fc_050f56f290a937ae016a56bbc121508196a1e2b1894c5f3841","toolName":"glob","content":[{"type":"text","text":"# traceable-reqs/rust/\nCargo.toml\n# spt-mobile/\n## host/\nCargo.toml\n## rust/\nCargo.toml\n# holohue-gui/src-tauri/\nCargo.toml\n# rustHello/helloProject/\nCargo.toml"}],"details":{"scopePath":".","fileCount":5,"files":["traceable-reqs/rust/Cargo.toml","spt-mobile/host/Cargo.toml","spt-mobile/rust/Cargo.toml","holohue-gui/src-tauri/Cargo.toml","rustHello/helloProject/Cargo.toml"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069059099}}
{"type":"message","id":"7acbf9b1","parentId":"8874154c","timestamp":"2026-07-14T22:44:19.426Z","message":{"role":"toolResult","toolCallId":"call_SjSF7nYtHBe1Tt6h5g8X4q1P|fc_050f56f290a937ae016a56bbc121688196ac832e85e42c2bbd","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Roaming/Microsoft/Windows/Recent/\nspt-lecturn.lnk\nspt-test-engineer.md.lnk\nspt-claude-code.lnk\nspt-core.lnk"}],"details":{"scopePath":"C:/Users/decid/AppData/Roaming","fileCount":4,"files":["C:/Users/decid/AppData/Roaming/Microsoft/Windows/Recent/spt-lecturn.lnk","C:/Users/decid/AppData/Roaming/Microsoft/Windows/Recent/spt-test-engineer.md.lnk","C:/Users/decid/AppData/Roaming/Microsoft/Windows/Recent/spt-claude-code.lnk","C:/Users/decid/AppData/Roaming/Microsoft/Windows/Recent/spt-core.lnk"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069059426}}
{"type":"message","id":"2fd59c7e","parentId":"7acbf9b1","timestamp":"2026-07-14T22:44:29.143Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Adjusting glob search to top directory**"},{"type":"toolCall","id":"call_wPQKhj9CJf7uHiod0oCPEXMP|fc_050f56f290a937ae016a56bbcd00648196a07a6a4928fe788a","name":"read","arguments":{"i":"Reading subnet attachment","path":"C:/Users/decid/AppData/Local/spt-core/identity/subnet.json","selector":"raw"}},{"type":"toolCall","id":"call_XPvsOUN6oiC1EaOrLR1SXlXy|fc_050f56f290a937ae016a56bbcd00788196846a62593550d00b","name":"read","arguments":{"i":"Reading visibility state","path":"C:/Users/decid/AppData/Local/spt-core/identity/visibility.json","selector":"raw"}},{"type":"toolCall","id":"call_T7bxvoQwMI5L5tf6VlErX3qM|fc_050f56f290a937ae016a56bbcd02748196b3273936a1056db1","name":"read","arguments":{"i":"Reading attachment state","path":"C:/Users/decid/AppData/Local/spt-core/identity/attachment.json","selector":"raw"}},{"type":"toolCall","id":"call_XHRFeK6i2NzfdGtZmFwulfGP|fc_050f56f290a937ae016a56bbcd02808196bc2c81b5fd0c9e91","name":"read","arguments":{"i":"Reading CLI operation state","path":"C:/Users/decid/AppData/Local/spt-core/identity/cli-ops.json","selector":"raw"}},{"type":"toolCall","id":"call_B0AZIVQp3HpcsAMEwU2W7lSv|fc_050f56f290a937ae016a56bbcd03688196830d6ee6f3cb7336","name":"read","arguments":{"i":"Reading registry heard watermark","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","selector":"raw"}},{"type":"toolCall","id":"call_WojSpjFpVsHTlgK58QCMG9Hg|fc_050f56f290a937ae016a56bbcd03788196aa2bce509acb17e2","name":"read","arguments":{"i":"Reading SPT_DEV members","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","selector":"raw"}},{"type":"toolCall","id":"call_zNztnZNDO0gfBw1HVx8qOcRS|fc_050f56f290a937ae016a56bbcd06848196af95ac18beff9545","name":"read","arguments":{"i":"Reading BIGNET members","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","selector":"raw"}},{"type":"toolCall","id":"call_7TV9w3ep8eJ4C6amq7E9pDrw|fc_050f56f290a937ae016a56bbcd06948196a522557e6dbe08ed","name":"glob","arguments":{"i":"Listing project roots","path":"C:/Users/decid/Documents/projects/*","hidden":true,"gitignore":false,"limit":200}},{"type":"toolCall","id":"call_AzxkG7N2ds7LmgG0cqQtF5ph|fc_050f56f290a937ae016a56bbcd06a08196b95cd400421f484e","name":"grep","arguments":{"i":"Finding status implementation","pattern":"daemon status|net_up|subnet status|PUMP_PEER_FAIL|submit-dial exceeded","path":"C:/Users/decid/Documents/projects","selector":null,"case":false,"gitignore":true,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":35048,"output":456,"cacheRead":46592,"cacheWrite":0,"totalTokens":82096,"reasoningTokens":31,"cost":{"input":0.17524,"output":0.013680000000000001,"cacheRead":0.023295999999999997,"cacheWrite":0,"total":0.21221600000000002}},"stopReason":"toolUse","timestamp":1784069059471,"responseId":"resp_050f56f290a937ae016a56bbc39b788196acb14cdf2090929a","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bbc4c3f0819684389a8d4aa851ec","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrvNWreDZfOeucvgd0ylXY1VJjMXoRnV71lemQrm4qgJHtkpLv2de38lO-CRpJgLzDgk3FqRGQl2cA6Qy9_mG3H4GebaGghj8R_LRqitJv4mwubyBX8SY2sUSNNol6MfOilmftsmPC-N48RwYweXpYsawO8cjvFsHURxwIr8ClIq9N_DMkgu4uFtBNvjTBsH0l3crr8ds_smR1gw0XxHXJ4YzfhJh_WA7w0jQfydFek5I65GIHEbcgOSptiedoAyqjPumj0NmePOursClRd3oX_iMCHAUDbF1ZvqEh7c0G7dWeHcR7JqBtji-xkuwdCTjYG2vLo_tLccUH0WkGBl2DLgZSoE19Jw_KIlYZn6m3Z5BX_Q6W9EDHgPbDLdEfHEYPP21RJjcZEW9RdubTnZlNJuL87OiSoPpLJf2MvAO8K1b_4xmsKa2K9ZYfJTdAx_HKFESI4mMv4Dn3ZdcKmqq-QLrfd3wl4uLofy8Y1ySzXHta9n6iGdYYuQVZjUGExpfdqylVb_L6NXnus0_fewXW-HvDXm_QizsoL5f0mhalEtb8ofnB_GzbPwFk3Nk3JuIq1GU3YQjIdeG0S2qxQW4sAVdJvrRsIS7Czcgm49TI5go-8XV-KQJfIBxgpgbU4u3gkenyMmqWJvI_fII2PdoF0ScBOD33zrIVsdDiNfSPMNwgPu9SEwQsFK_zowB0oQtQC5Y0h8Bh-n63XSyk1Mp-Irs8nISEKuRMYzQCPYxLgekrglNMKVbkbEcDoAnh6b2N9WMyAnZANU1Zt4zgLRvzpxC1-S0OF3o0Fj_DnqrpR_u1t7j4FaszrYoKjx-li-0STr9VpnVmO9-LFtns_ekv7VPDxjgRUIpafxf3lpArqjMdpG7FAF-Olbz54GSaEXNmgVb_U767JRmfo_t_8MkfaHrhdhpGHGmXvptGScTu31Jh98ND_7tLqWoB41NGxNJ6u0DIjj-XIE1zUPNd9nabvoHSCx0RRm05ScNzJFPvPeyyrFV-IGorFS3V8peqjk7QzCGAoKW8HKF1KoEK5b91CkvzG-pFP_BXvBTL5Dlv4c0fX0XrvKo9sm5LZfTGOkJf3zAgq8i1EUEn3EFj-qarKLXQ==","summary":[{"type":"summary_text","text":"**Adjusting glob search to top directory**"}]},{"id":"fc_050f56f290a937ae016a56bbcd00648196a07a6a4928fe788a","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading subnet attachment\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/subnet.json\",\"selector\":\"raw\"}","call_id":"call_wPQKhj9CJf7uHiod0oCPEXMP","name":"read"},{"id":"fc_050f56f290a937ae016a56bbcd00788196846a62593550d00b","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading visibility state\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/visibility.json\",\"selector\":\"raw\"}","call_id":"call_XPvsOUN6oiC1EaOrLR1SXlXy","name":"read"},{"id":"fc_050f56f290a937ae016a56bbcd02748196b3273936a1056db1","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading attachment state\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/attachment.json\",\"selector\":\"raw\"}","call_id":"call_T7bxvoQwMI5L5tf6VlErX3qM","name":"read"},{"id":"fc_050f56f290a937ae016a56bbcd02808196bc2c81b5fd0c9e91","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading CLI operation state\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/cli-ops.json\",\"selector\":\"raw\"}","call_id":"call_XHRFeK6i2NzfdGtZmFwulfGP","name":"read"},{"id":"fc_050f56f290a937ae016a56bbcd03688196830d6ee6f3cb7336","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading registry heard watermark\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta\",\"selector\":\"raw\"}","call_id":"call_B0AZIVQp3HpcsAMEwU2W7lSv","name":"read"},{"id":"fc_050f56f290a937ae016a56bbcd03788196aa2bce509acb17e2","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading SPT_DEV members\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json\",\"selector\":\"raw\"}","call_id":"call_WojSpjFpVsHTlgK58QCMG9Hg","name":"read"},{"id":"fc_050f56f290a937ae016a56bbcd06848196af95ac18beff9545","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading BIGNET members\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json\",\"selector\":\"raw\"}","call_id":"call_zNztnZNDO0gfBw1HVx8qOcRS","name":"read"},{"id":"fc_050f56f290a937ae016a56bbcd06948196a522557e6dbe08ed","type":"function_call","status":"completed","arguments":"{\"i\":\"Listing project roots\",\"path\":\"C:/Users/decid/Documents/projects/*\",\"hidden\":true,\"gitignore\":false,\"limit\":200}","call_id":"call_7TV9w3ep8eJ4C6amq7E9pDrw","name":"glob"},{"id":"fc_050f56f290a937ae016a56bbcd06a08196b95cd400421f484e","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding status implementation\",\"pattern\":\"daemon status|net_up|subnet status|PUMP_PEER_FAIL|submit-dial exceeded\",\"path\":\"C:/Users/decid/Documents/projects\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_AzxkG7N2ds7LmgG0cqQtF5ph","name":"grep"}]},"duration":9670.00780004263,"ttft":1322.662699997425,"contextSnapshot":{"promptTokens":81640,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_wPQKhj9CJf7uHiod0oCPEXMP|fc_050f56f290a937ae016a56bbcd00648196a07a6a4928fe788a","toolName":"read","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/subnet.json"},"intent":"Reading subnet attachment"},"id":"16ce1187","parentId":"2fd59c7e","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_XPvsOUN6oiC1EaOrLR1SXlXy|fc_050f56f290a937ae016a56bbcd00788196846a62593550d00b","toolName":"read","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/visibility.json"},"intent":"Reading visibility state"},"id":"6e50be63","parentId":"16ce1187","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_T7bxvoQwMI5L5tf6VlErX3qM|fc_050f56f290a937ae016a56bbcd02748196b3273936a1056db1","toolName":"read","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/attachment.json"},"intent":"Reading attachment state"},"id":"9d8b2b62","parentId":"6e50be63","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_XHRFeK6i2NzfdGtZmFwulfGP|fc_050f56f290a937ae016a56bbcd02808196bc2c81b5fd0c9e91","toolName":"read","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/cli-ops.json"},"intent":"Reading CLI operation state"},"id":"0cd83321","parentId":"9d8b2b62","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_B0AZIVQp3HpcsAMEwU2W7lSv|fc_050f56f290a937ae016a56bbcd03688196830d6ee6f3cb7336","toolName":"read","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta"},"intent":"Reading registry heard watermark"},"id":"74ac4aef","parentId":"0cd83321","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_WojSpjFpVsHTlgK58QCMG9Hg|fc_050f56f290a937ae016a56bbcd03788196aa2bce509acb17e2","toolName":"read","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json"},"intent":"Reading SPT_DEV members"},"id":"a37362d5","parentId":"74ac4aef","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_zNztnZNDO0gfBw1HVx8qOcRS|fc_050f56f290a937ae016a56bbcd06848196af95ac18beff9545","toolName":"read","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json"},"intent":"Reading BIGNET members"},"id":"fc05bec3","parentId":"a37362d5","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_7TV9w3ep8eJ4C6amq7E9pDrw|fc_050f56f290a937ae016a56bbcd06948196a522557e6dbe08ed","toolName":"glob","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/Documents/projects/*"},"intent":"Listing project roots"},"id":"dbbe5b0c","parentId":"fc05bec3","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_AzxkG7N2ds7LmgG0cqQtF5ph|fc_050f56f290a937ae016a56bbcd06a08196b95cd400421f484e","toolName":"grep","startedAt":"2026-07-14T22:44:29.144Z","args":{"path":"C:/Users/decid/Documents/projects"},"intent":"Finding status implementation"},"id":"c51b1764","parentId":"dbbe5b0c","timestamp":"2026-07-14T22:44:29.144Z"}
{"type":"message","id":"e0cd6dba","parentId":"c51b1764","timestamp":"2026-07-14T22:44:29.148Z","message":{"role":"toolResult","toolCallId":"call_wPQKhj9CJf7uHiod0oCPEXMP|fc_050f56f290a937ae016a56bbcd00648196a07a6a4928fe788a","toolName":"read","content":[{"type":"text","text":"{\n  \"subnets\": [\n    {\n      \"name\": \"SPT_DEV\",\n      \"seed_hex\": \"04d75fcecd5d307974bb15dd90fbd9c8ad49579e\",\n      \"epoch\": 1,\n      \"created\": \"1780979462\",\n      \"hide_new_endpoints\": false\n    },\n    {\n      \"name\": \"BIGNET\",\n      \"seed_hex\": \"f66208577423b34a670cc4beb7c3acb534200001\",\n      \"epoch\": 1,\n      \"created\": \"1782116186\",\n      \"hide_new_endpoints\": false\n    }\n  ]\n}"}],"details":{"displayContent":{"text":"{\n  \"subnets\": [\n    {\n      \"name\": \"SPT_DEV\",\n      \"seed_hex\": \"04d75fcecd5d307974bb15dd90fbd9c8ad49579e\",\n      \"epoch\": 1,\n      \"created\": \"1780979462\",\n      \"hide_new_endpoints\": false\n    },\n    {\n      \"name\": \"BIGNET\",\n      \"seed_hex\": \"f66208577423b34a670cc4beb7c3acb534200001\",\n      \"epoch\": 1,\n      \"created\": \"1782116186\",\n      \"hide_new_endpoints\": false\n    }\n  ]\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/subnet.json"}}},"isError":false,"timestamp":1784069069148}}
{"type":"message","id":"09db5f1f","parentId":"e0cd6dba","timestamp":"2026-07-14T22:44:29.148Z","message":{"role":"toolResult","toolCallId":"call_B0AZIVQp3HpcsAMEwU2W7lSv|fc_050f56f290a937ae016a56bbcd03688196830d6ee6f3cb7336","toolName":"read","content":[{"type":"text","text":"{\n  \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,\n  \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,\n  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n  \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398\n}"}],"details":{"displayContent":{"text":"{\n  \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,\n  \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,\n  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n  \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta"}}},"isError":false,"timestamp":1784069069148}}
{"type":"message","id":"f1fd1f0b","parentId":"09db5f1f","timestamp":"2026-07-14T22:44:29.148Z","message":{"role":"toolResult","toolCallId":"call_T7bxvoQwMI5L5tf6VlErX3qM|fc_050f56f290a937ae016a56bbcd02748196b3273936a1056db1","toolName":"read","content":[{"type":"text","text":"{\n  \"detached\": []\n}"}],"details":{"displayContent":{"text":"{\n  \"detached\": []\n}","startLine":1,"lineNumbers":[1,2,3]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/attachment.json"}}},"isError":false,"timestamp":1784069069148}}
{"type":"message","id":"87e82b11","parentId":"f1fd1f0b","timestamp":"2026-07-14T22:44:29.148Z","message":{"role":"toolResult","toolCallId":"call_WojSpjFpVsHTlgK58QCMG9Hg|fc_050f56f290a937ae016a56bbcd03788196aa2bce509acb17e2","toolName":"read","content":[{"type":"text","text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630116,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630118,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630120,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630122,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630124,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630126,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630128,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630130,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630132,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630134,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630136,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630138,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630140,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630142\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445951\n    }\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630116,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630118,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630120,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630122,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630124,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630126,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630128,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630130,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630132,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630134,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630136,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630138,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630140,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630142\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445951\n    }\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json"}}},"isError":false,"timestamp":1784069069148}}
{"type":"message","id":"51cbbe5a","parentId":"87e82b11","timestamp":"2026-07-14T22:44:29.149Z","message":{"role":"toolResult","toolCallId":"call_XPvsOUN6oiC1EaOrLR1SXlXy|fc_050f56f290a937ae016a56bbcd00788196846a62593550d00b","toolName":"read","content":[{"type":"text","text":"{\n  \"default_hide\": {},\n  \"overrides\": {},\n  \"sync_subnets\": {\n    \"ccbind-int-56308\": [\n      \"SPT_DEV\"\n    ],\n    \"chert\": [\n      \"SPT_DEV\"\n    ],\n    \"deployah\": [\n      \"SPT_DEV\"\n    ],\n    \"doyle\": [\n      \"SPT_DEV\"\n    ],\n    \"emphasys\": [\n      \"SPT_DEV\"\n    ],\n    \"flynn\": [\n      \"SPT_DEV\"\n    ],\n    \"hall-bf\": [\n      \"SPT_DEV\"\n    ],\n    \"hertz\": [\n      \"SPT_DEV\"\n    ],\n    \"lia\": [\n      \"SPT_DEV\"\n    ],\n    \"mobile-gw\": [\n      \"SPT_DEV\"\n    ],\n    \"perri\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-102212\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-102212-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-14188\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-14188-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"scratch-c\": [\n      \"SPT_DEV\"\n    ],\n    \"scratch-d\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-argv-cap-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-diag-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-diag2-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-24320-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-27377-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-40306\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-40306-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08b-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08c-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08d-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-diag-host-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-diag-host2-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-diag-life-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-dogfood\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-dogfood-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-f010-2967\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-f010-2967-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-f010b-3403\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-fix-life-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-fresh-life-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-nointerim-24539-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval-f009-1643\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval-f009-1643-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval2-2634\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval2-2634-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-uniq-24156-1781652991-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-v091-live\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-v091-live-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-v091-ready\": [\n      \"SPT_DEV\"\n    ],\n    \"todlando\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-a-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-aa-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-b-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-c-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-d-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-f-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wallb-e2e\": [\n      \"SPT_DEV\"\n    ],\n    \"wallb-e2e-psyche\": [\n      \"SPT_DEV\"\n    ]\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"default_hide\": {},\n  \"overrides\": {},\n  \"sync_subnets\": {\n    \"ccbind-int-56308\": [\n      \"SPT_DEV\"\n    ],\n    \"chert\": [\n      \"SPT_DEV\"\n    ],\n    \"deployah\": [\n      \"SPT_DEV\"\n    ],\n    \"doyle\": [\n      \"SPT_DEV\"\n    ],\n    \"emphasys\": [\n      \"SPT_DEV\"\n    ],\n    \"flynn\": [\n      \"SPT_DEV\"\n    ],\n    \"hall-bf\": [\n      \"SPT_DEV\"\n    ],\n    \"hertz\": [\n      \"SPT_DEV\"\n    ],\n    \"lia\": [\n      \"SPT_DEV\"\n    ],\n    \"mobile-gw\": [\n      \"SPT_DEV\"\n    ],\n    \"perri\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-102212\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-102212-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-14188\": [\n      \"SPT_DEV\"\n    ],\n    \"rt-14188-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"scratch-c\": [\n      \"SPT_DEV\"\n    ],\n    \"scratch-d\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-argv-cap-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-diag-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-diag2-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-24320-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-27377-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-40306\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-40306-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-liverelay-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08b-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08c-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-ci-v08d-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-diag-host-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-diag-host2-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-diag-life-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-dogfood\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-dogfood-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-f010-2967\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-f010-2967-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-f010b-3403\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-fix-life-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-fresh-life-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-nointerim-24539-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval-f009-1643\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval-f009-1643-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval2-2634\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-reval2-2634-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-uniq-24156-1781652991-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-v091-live\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-v091-live-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"sptc-v091-ready\": [\n      \"SPT_DEV\"\n    ],\n    \"todlando\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-a-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-aa-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-b-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-c-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-d-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wall-f-psyche\": [\n      \"SPT_DEV\"\n    ],\n    \"wallb-e2e\": [\n      \"SPT_DEV\"\n    ],\n    \"wallb-e2e-psyche\": [\n      \"SPT_DEV\"\n    ]\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/visibility.json"}}},"isError":false,"timestamp":1784069069149}}
{"type":"message","id":"523983d1","parentId":"51cbbe5a","timestamp":"2026-07-14T22:44:29.149Z","message":{"role":"toolResult","toolCallId":"call_XHRFeK6i2NzfdGtZmFwulfGP|fc_050f56f290a937ae016a56bbcd02808196bc2c81b5fd0c9e91","toolName":"read","content":[{"type":"text","text":"136"}],"details":{"displayContent":{"text":"136","startLine":1,"lineNumbers":[1]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/cli-ops.json"}}},"isError":false,"timestamp":1784069069149}}
{"type":"message","id":"9cef71be","parentId":"523983d1","timestamp":"2026-07-14T22:44:29.149Z","message":{"role":"toolResult","toolCallId":"call_zNztnZNDO0gfBw1HVx8qOcRS|fc_050f56f290a937ae016a56bbcd06848196af95ac18beff9545","toolName":"read","content":[{"type":"text","text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630117,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630119,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630121,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630123,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630125,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630127,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630129,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630131,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630133,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630135,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630137,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630139,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630141,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630143\n    },\n    \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": {\n      \"label\": \"GRAVITY-RUNNER\",\n      \"epoch\": 1166\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445952\n    }\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"by_id\": {\n    \"chert\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630117,\n        \"last_active_ms\": 1783630087661,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"deployah\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630119,\n        \"last_active_ms\": 1783982275183,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"doyle\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630121,\n        \"last_active_ms\": 1784068990220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"emphasys\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630123,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": false,\n        \"adapter\": \"omp-spt\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"flynn\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630125,\n        \"last_active_ms\": 1783991690185,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-mobile\",\n          \"github-com-sabermage-spt-core\"\n        ]\n      }\n    ],\n    \"hall-bf\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630127,\n        \"last_active_ms\": 1783478174866,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"test-project\"\n        ]\n      }\n    ],\n    \"hertz\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630129,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true\n      }\n    ],\n    \"lia\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630131,\n        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n        \"last_active_ms\": 1784069005220,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt\",\n        \"recent_projects\": [\n          \"liaison\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"mobile-gw\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630133,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"gateway\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"mobile\",\n        \"recent_projects\": [\n          \"projects\",\n          \"system32\",\n          \"github-com-sabermage-spt-core\",\n          \"github-com-sabermage-spt-mobile\"\n        ],\n        \"controlled\": true\n      }\n    ],\n    \"perri\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630135,\n        \"last_active_ms\": 1783992010212,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\",\n          \"projects\"\n        ]\n      }\n    ],\n    \"scratch-c\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630137,\n        \"last_active_ms\": 1783747106543,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-claude-spt\"\n        ]\n      }\n    ],\n    \"scratch-d\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Suspended\",\n        \"epoch\": 630139,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"live_agent\",\n        \"bound\": false,\n        \"harness_only\": true,\n        \"adapter\": \"claude-spt:ccs\"\n      }\n    ],\n    \"todlando\": [\n      {\n        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"status\": \"Active\",\n        \"epoch\": 630141,\n        \"node_label\": \"HFENDULEAM\",\n        \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n        \"endpoint_type\": \"ready_agent\",\n        \"bound\": true,\n        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"adapter\": \"claude-spt:ccs\",\n        \"recent_projects\": [\n          \"github-com-sabermage-spt-core\"\n        ],\n        \"controlled\": true\n      }\n    ]\n  },\n  \"node_labels\": {\n    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n      \"label\": \"HFENDULEAM\",\n      \"epoch\": 630143\n    },\n    \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": {\n      \"label\": \"GRAVITY-RUNNER\",\n      \"epoch\": 1166\n    },\n    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n      \"label\": \"ENLYZEAM\",\n      \"epoch\": 445952\n    }\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json"}}},"isError":false,"timestamp":1784069069149}}
{"type":"message","id":"c116af45","parentId":"9cef71be","timestamp":"2026-07-14T22:44:34.153Z","message":{"role":"toolResult","toolCallId":"call_7TV9w3ep8eJ4C6amq7E9pDrw|fc_050f56f290a937ae016a56bbcd06948196a522557e6dbe08ed","toolName":"glob","content":[{"type":"text","text":"No files found matching pattern\nglob timed out after 5s; returning 0 partial matches — narrow the pattern instead of retrying blindly"}],"details":{"scopePath":".","fileCount":0,"files":[],"truncated":true,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"useless":true,"timestamp":1784069074153}}
{"type":"message","id":"e851b059","parentId":"c116af45","timestamp":"2026-07-14T22:44:59.158Z","message":{"role":"toolResult","toolCallId":"call_AzxkG7N2ds7LmgG0cqQtF5ph|fc_050f56f290a937ae016a56bbcd06a08196b95cd400421f484e","toolName":"grep","content":[{"type":"text","text":"Grep timed out after 30s; narrow paths or pattern, or scope with `glob` first"}],"details":{},"isError":true,"timestamp":1784069099158}}
{"type":"custom_message","customType":"irc:incoming","content":"<irc>\nIncoming IRC message from agent `IsolationCodeRCA`:\n\nPlease send concise timestamp/token findings for isolation hypotheses, especially PUMP_PEER_FAIL, seed-proof, net bind/retry, pump heartbeat/restarts, subnet detach, and paths/config state. I’m tracing code mechanisms.\n\nAn agent sent this while you were waiting or working. Any active interruptible wait was stopped early so you can read it now.\n\nIf a response is expected, reply with the `irc` tool (`op: \"send\"`, `to: \"IsolationCodeRCA\"`) — you may finish your current step first. Nobody replies on your behalf.\n</irc>","display":true,"details":{"id":"153000c4b02e3650","from":"IsolationCodeRCA","message":"Please send concise timestamp/token findings for isolation hypotheses, especially PUMP_PEER_FAIL, seed-proof, net bind/retry, pump heartbeat/restarts, subnet detach, and paths/config state. I’m tracing code mechanisms."},"attribution":"agent","id":"d33d29b5","parentId":"e851b059","timestamp":"2026-07-14T22:44:59.194Z"}
{"type":"message","id":"78d9a4dd","parentId":"d33d29b5","timestamp":"2026-07-14T22:45:09.859Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Narrowing directories for investigation**"},{"type":"toolCall","id":"call_k3usHoeDvpGpurk4rV5dZ0Q5|fc_050f56f290a937ae016a56bbee49888196bd01f05a70b5a764","name":"irc","arguments":{"i":"Sharing live isolation evidence","op":"send","to":"IsolationCodeRCA","message":"HF live anchors: logs/daemon.stderr.log.1 lines 1-10 generation1 brain up/net consumers then EN key ecb39... dial timeout, KITSUBITO cfd9... peer reply-read stalls entire pump -> PEER_PUMP_FAIL + supervised restart 10s. Lines 20-22 PAIR_MEET_UP for all 3 subnets uses fresh ephemeral meet keys, only HF IPs 100.68.35.65/192.168.1.81; lines 36-38 immediately EN current ecb39... + old 39c018... dial timeouts, recurring. line78 old EN key has 'No addressing information available'. Current log lines 1-11 starts update generation1 and immediately fails aea099..., EN current+old, KITSUBITO. identity/subnet.json has SPT_DEV seed 04d75f... and BIGNET f66208..., detached=[] in attachment.json. pump-heartbeat.json=1784069033136 (~2026-07-14 22:43:53Z current); pump-ops=25307. registry members last_seen HF 1784012120, EN current 1784012096; peer-addrs current EN ecb is stored under WRONG MAP KEY 5ff50e... and relay-only; old EN 39c has full addresses, tombstoned both subnets at 1783983420. visibility last observed ecb=1784008794517. Strongest state candidate: peer-addrs key/id mismatch causes current EN lookup miss/relay-only while status remains process/pump heartbeat green. No auth/key/signature errors found first 4MiB.","replyTo":null,"await":false,"from":null,"timeoutMs":null,"peek":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":7842,"output":454,"cacheRead":81408,"cacheWrite":0,"totalTokens":89704,"reasoningTokens":49,"cost":{"input":0.03921,"output":0.01362,"cacheRead":0.040704,"cacheWrite":0,"total":0.093534}},"stopReason":"toolUse","timestamp":1784069099214,"responseId":"resp_050f56f290a937ae016a56bbeb4fe4819691beadf057f6ec63","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bbec6e508196a5c68aeb18d485c6","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrvu-uSSzAhVZUjlm9A9ITncbrXpDzkM1ttUeFohuK4X2RvNe-emJuzzURxam9kRTW5VEsqpChSdTbOy6PVPKfdx8tv1NuWwbJuupS-8BcSomSYcJxsVMsOS9AQcgBOTmZk9oEg2vOa-BPuAcwvy549T9ShasdFsoYmhboSKqfEBUIE6ZooPUSi05_NTrl3hxRv-GAxauNwnlmKLzxa1hYkDDgX_7gqxRFilVHrEaZZwYquo8vdH0UKlsx-XaW1eZRTIJpJzmavp5A0_4Ut5siI27NdV5m6nv5RpvZEV4TFVNq6cEN4_aBMyR_2UcGVR7lgBdJcW6DEUUeelltcf1jzRBksbcEPiC-2QZIlq0LT7uOqzGI3Hv1cw8A2T541uPDXZG3omo0qN-QCTl4rJ_bdZmhhY7LmixZQys9lwKPjYIwnlfGUivkwbBh6aIuuYcCUhTAa4-tNSFZWB-hXQqc3woC0jhZFl-D9CJ_7XXhZ20wGRS3G9gTP30cE_3a46z8aEI5oLuP5B8uyC9rnBNKwpZLmSpHzMx75Y0wsOodTPdjXBEUmTgX2CDLdc9IueN1-UnS6_O_9NZDZ39m8GOzbi2i4XjNh_72QTKMbB3dwuHEcDN_js4tYT37pweIxW8QVndlzsqH4ADC4k4aYTYxWaIhumGBJdX37est6kJnPGyD5h2Aia4VZ92fQ6WwD00W1cXeYSWNT1XWfncGmSr5NCuYqvRZbENawUKx3sJ0E7sBOudeeVhdGca6TUZHIezHQ79pGxoYnzWhDND6pMqNjp0IyS6w71ApbzUV6y52ilZD8CcgDw87MA6B1KNhVqCXw_04iY8LmkOEgzNvhWbiUHmN7_P064S1Y9-IYt4oBkcwAADJQVJVY6VDU5jqIKcbn-kgYuIKpzBX_XDy3ptSDsHOxZ0WAknaB51HXmkWFk82g90gcVORwFTNnLHVRd7RfURumL90N7fw1YuEVjf3V0Ph4_Cpkh7ZY8l_gVtxRLa1ExohrBhr1XKugsXJDB2rK1mDx_Ql2p727iW23eVpWFyJlY2KS-i5kekXyjIGgm4bAhrsjJRTqi-PstMUq59HKCUxm6qc0zN9V-yCZGwuiXeJYHKZFkRDq5YU0dSv5eP46lyZmUHnTry6eTCiNV_YPsi6JLm_1Dhdp1R0JmyVv_RiFxruS6ZZFvDgS2aKRbBOQXRscLTxQdF46ycnnNuAg772hIp5RMyAtKLM2qFjoJi4aU67I8HVimTy7x_KFomvg=","summary":[{"type":"summary_text","text":"**Narrowing directories for investigation**"}]},{"id":"fc_050f56f290a937ae016a56bbee49888196bd01f05a70b5a764","type":"function_call","status":"completed","arguments":"{\"i\":\"Sharing live isolation evidence\",\"op\":\"send\",\"to\":\"IsolationCodeRCA\",\"message\":\"HF live anchors: logs/daemon.stderr.log.1 lines 1-10 generation1 brain up/net consumers then EN key ecb39... dial timeout, KITSUBITO cfd9... peer reply-read stalls entire pump -> PEER_PUMP_FAIL + supervised restart 10s. Lines 20-22 PAIR_MEET_UP for all 3 subnets uses fresh ephemeral meet keys, only HF IPs 100.68.35.65/192.168.1.81; lines 36-38 immediately EN current ecb39... + old 39c018... dial timeouts, recurring. line78 old EN key has 'No addressing information available'. Current log lines 1-11 starts update generation1 and immediately fails aea099..., EN current+old, KITSUBITO. identity/subnet.json has SPT_DEV seed 04d75f... and BIGNET f66208..., detached=[] in attachment.json. pump-heartbeat.json=1784069033136 (~2026-07-14 22:43:53Z current); pump-ops=25307. registry members last_seen HF 1784012120, EN current 1784012096; peer-addrs current EN ecb is stored under WRONG MAP KEY 5ff50e... and relay-only; old EN 39c has full addresses, tombstoned both subnets at 1783983420. visibility last observed ecb=1784008794517. Strongest state candidate: peer-addrs key/id mismatch causes current EN lookup miss/relay-only while status remains process/pump heartbeat green. No auth/key/signature errors found first 4MiB.\" ,\"replyTo\":null,\"await\":false,\"from\":null,\"timeoutMs\":null,\"peek\":null}","call_id":"call_k3usHoeDvpGpurk4rV5dZ0Q5","name":"irc"}]},"duration":10643.861799955368,"ttft":1243.21489995718,"contextSnapshot":{"promptTokens":89250,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_k3usHoeDvpGpurk4rV5dZ0Q5|fc_050f56f290a937ae016a56bbee49888196bd01f05a70b5a764","toolName":"irc","startedAt":"2026-07-14T22:45:09.859Z","intent":"Sharing live isolation evidence"},"id":"cdf48ac3","parentId":"78d9a4dd","timestamp":"2026-07-14T22:45:09.859Z"}
{"type":"message","id":"ad25b88f","parentId":"cdf48ac3","timestamp":"2026-07-14T22:45:09.860Z","message":{"role":"toolResult","toolCallId":"call_k3usHoeDvpGpurk4rV5dZ0Q5|fc_050f56f290a937ae016a56bbee49888196bd01f05a70b5a764","toolName":"irc","content":[{"type":"text","text":"Delivered to 1 peer(s):\n- IsolationCodeRCA: injected"}],"details":{"op":"send","from":"IsolationLogRCA","to":"IsolationCodeRCA","receipts":[{"to":"IsolationCodeRCA","outcome":"injected"}]},"isError":false,"timestamp":1784069109859}}
{"type":"message","id":"fe92c463","parentId":"ad25b88f","timestamp":"2026-07-14T22:45:27.673Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating key mismatch and registry inconsistencies**\n\n**Clarifying registry and roster output distinctions**\n\n**Locating project directory for spt-core**"},{"type":"toolCall","id":"call_ZWeEL6vynHBCXTVNSnzYYo9Z|fc_050f56f290a937ae016a56bc078de481969abf32cde15a2843","name":"read","arguments":{"i":"Listing project directory","path":"C:/Users/decid/Documents/projects","selector":null}},{"type":"toolCall","id":"call_LSInZxfdGXvYJLUnuqA2lGaV|fc_050f56f290a937ae016a56bc078f6c8196a3aa21cfc566de18","name":"glob","arguments":{"i":"Locating SPT source roots","path":"C:/Users/decid/Documents/projects/spt-core/**/Cargo.toml","hidden":true,"gitignore":true,"limit":50}},{"type":"toolCall","id":"call_v1hvYuycRQ1QATXFq3CYpA4p|fc_050f56f290a937ae016a56bc078f788196985fbff2552bb076","name":"glob","arguments":{"i":"Locating nested SPT source","path":"C:/Users/decid/Documents/projects/github.com/**/Cargo.toml","hidden":true,"gitignore":true,"limit":100}},{"type":"toolCall","id":"call_i2Aj9hjv1IQ7uf3tTRMUZpQF|fc_050f56f290a937ae016a56bc078f808196b74be529109264c9","name":"glob","arguments":{"i":"Locating source status symbols","path":"C:/Users/decid/Documents/projects/*/src/**/*.rs","hidden":true,"gitignore":true,"limit":200}},{"type":"toolCall","id":"call_Q1H8kNE35Ltx1Wb6fyISlkS4|fc_050f56f290a937ae016a56bc078f888196831bb3dac66a800c","name":"read","arguments":{"i":"Reading stale roster snapshot","path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-417","selector":"raw"}},{"type":"toolCall","id":"call_NsRdKphkMCXfHdlpf6U8WVvq|fc_050f56f290a937ae016a56bc078f90819680e4df205241a0fc","name":"read","arguments":{"i":"Reading recent roster snapshot","path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-640","selector":"raw"}},{"type":"toolCall","id":"call_5GKnm5CcKV7RAibrHu3qM6UR|fc_050f56f290a937ae016a56bc078f948196b9683d2717266923","name":"grep","arguments":{"i":"Finding node key corruption evidence","pattern":"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce|ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657|39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1","path":"C:/Users/decid/AppData/Local/spt-core","selector":null,"case":true,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1152,"output":907,"cacheRead":88576,"cacheWrite":0,"totalTokens":90635,"reasoningTokens":449,"cost":{"input":0.00576,"output":0.02721,"cacheRead":0.044288,"cacheWrite":0,"total":0.077258}},"stopReason":"toolUse","timestamp":1784069109866,"responseId":"resp_050f56f290a937ae016a56bbf612c08196bb12c14e10ff6b5d","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bbf725a48196a0661bac318eeed3","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrwHYDWf7eO4I2WFEXzO2N14w01jhzlBqzPzOKFlwxEyaU4K9vfU_h9MN7RosNrvThYTH7LTXUH7i3Qgbvj6IQDaVE9ilJBqX_E6Vo-gwa_onpP0p8DiPGHdabOy49f2cSHm_my_Z_0qaDJkyLugT1ckCN7htGC28Qop1KpG-KMYF456NZ2vbfBrM2tsESHflbKgkeIij66cxbFBC_GryN-pvb1tSj5JDdTRT0VB-1uy4o0IwVF97MbYgFEbBYZGHBEoocYwt1pd-RQAh7h87F1Wr5j_JuhYhEFFHoGa5uKet5OQjH9d49xPQg45Pzk5Rb3FHEnVtUuFAtCg4l6ivgFCrIT_U9wb4FGyAyf3HbNiplR0i_A2cxvbFO3r2c9R-ltTlV-A-xtIpsLGAAiaErbc0dZ6iF-Qn-Q1IjjG-nrZ5FwAM2cpFKYMLal2JGZY_4GW6TcTYDnqS2FxfTWIuFl4rKN-oDR8Wtzr6iuaxrxexaX72DXsEQVTTEfCjq0rH14ES-d6u0C9xYrVz4jF0Dq9TSvdtLm2Gu2bZhPcGGMCDNIAELo4wz83Mhu1krG5Mu7Dt8734otlsbhRsrFhcdMLCiR71ZtXI6OCwvJ0lBYFAqioJaO3x4j1193K4kEfOFfgu73aE_xPLR8R_qTABqgVRR6CQCx9g_GLljSxlRO6m0i7zdS6oxCb8NqlNyn2pYyYLfZwAezaMIpW74d6_4nNC0V1Sdr148GLe3pTJcaK_BNbwRLW3HlojdKWmyIQr6Nva3WmSg-Dixr_JBUIFH6jHGcs4-Lxn0VUnZPxNvcd-7gY-_RcJ54fn4hb2D0VoJsKwePWtVBR3TrWxH-LKrCELVy3w_0sfbWjjE-1zDUQ5be9B0G9MIycxxXcPEhe1f6WqG03HM3ZZ8Vydh45qVVEB7R7uTmURBreu_abQtQRjMR5uIzk_oAt16SuBZF5TLo4HZJdq0anqLbHuXVBeR6JBXSpZFPPDPtWy9I5mrEbG4oxEyGbtaMZI9NFTMz4Dm63bv183lzVHzMYtwVbG6nBC3E-usZq0FB4tO-tLqFQv0kcZpDdRPKU_ksx_N4dw_GG9UTG6gdXvBtpPNOG4yMHKskC_6E5nQF-eWUCBYoMMPE1UV7Og2Zwe5LOWBUYvMRgcsXA3X92NIINR8copL57Gha0vpP-mNGDrmHQ35dblQTbWlCQdvf9hgJjpf9SY8vvhtEKxBRE-KvSyTn01OuyaZkb6MClO5IKpE-QL98cd79AexUGqaQF89exWH3Ur6_0pOE39VtDZSjWF6Dz4S8nrjyCztQYQj3OnPZ8U3jMZ_19Sr1wdx8rr6Pmpkb5yfo9DCurW7Y-J8xEXWrSZHtKzJb2-CmBvok-8m3QTuwc8_ZZXclJbZJM1THqkgiydHxIeM-aM7vswN23e3jYFUY3GYG3dkL6axPyRe96PXy_1yrm74dVPM8T3XEmdJMwntop_bo0Rixk8AHfA0diuu7abUi0ebtqbB6C1FJTJRaD2yYiQ2E36j39RwTIy6UlXLHICp_TwtcYaPLayAFdr3c0VTMVz2-wKM3SMgeAssLDHmO5OSkveIrFFPGRUmv_Ga4h31vIWkzZqHXv9cysqPT5t6JQb3O0L99isEDlcLfiz_QjB4JRMX5PtM71oCnv3X4EAEwSRErWFGeFDsWIh3lDJdnJ1ZdM6Zq2bzolI9L6c-yg7zGYTGKuGtDPEWcqpet-JJQPhQlibqtPSb1GBc8qc3FO6DoaCJcAQPaDX684UgIafSVASHmXima1ZxmEvcnXzYdU6uzPFgaPLea3LBr8ZrixzZ0jgB0zRx2F4n4vntIrZ-k7VlAXq2c68N9kqq9WKEYYtogxo_lxCOy9gfjugHKgx38shMZLZqxDWHLg5jSjE1QOJXcMzNyx1GkIXtDYiMuVWeEBzT55UtG-CPZaV1fa0qnQnBCWdnDQDzV4G6DNzVKlAPFpiuJ6X6a-Xzh3DVtfkMHnrqDohKKkONfpt7f9fPsGDN_Jnl1I5CZZWMnjxXZIuLBFg86D-XIT-cw1O9sEnDLGUD9odT36XeMxD07m50_rX_8v-tl1SKHH7C_DXPexjAar9UQ5G9IIa1dzClrVzALRoiSn5rDOHgxOEVi6avcp1be-6-iVDxbTWtiJXmF1jhc33exeriT6LJTYo_X4YpYbWrPYaWuvaduwvS0RVpYYF_8Xmjp3k9SpvCA69gR5ABkIzAMI0MqRBHo5MVqwscDwwLEr-nK15gGC0cZ4KScsVrcGptK2dzHEafWKsE_gECzoFVrHTX-cvH3PbBFwfy9v0uwEJJTeDCMz_N65UA-bueFa256cDa2G2pmMm8uCEPrq3sJmx5lFkNR0BqYEeVaIuaNuGQ0fKyZlaFS-_KATYdX5gKkkgQmgSryBLCg0L0G1vQQUppvSNxnjWOygcuZdNMgsMRH6jmHlKu6u1sUdvvexugHwkiwn7jBHtLV4x4SoFo3X6sqiVSGRqY9wg4vI9sE5EfJ9T6C1XjMvcyeGZa5yUloC5WAe0aVRPEeoP9QgNWlSXMQi5xMwL1QOfzIu8EIgu55XECYC9c0hDsXMkJvS3rAtpQWHYAgqeyqgQf_8d8qmGMhkMB0y29-vATy4sKOkaw0RzTFDeTzXRCaF-ggwcS3GcZylFQDOD7J_P3Wo1c3DPrEWdnovWNpChFrx09fSqoYydLC0C-Q8S9N8EnHcx5-zhUChqeFyD3m_3BKgrOXQv7xZAUwg1dDSuHNLnuPcSHH2-qkmcH-X3TSsJezwSX6e8WgbpMxCBNkPKTILKFLlG99P1ihY5HXdYpUFr4hp2ILQVxlgUMfZEY___ih3Rh9a-pYNDR9DDFDz2preWRJOh2Ay2j4Veljrs6zzLcHdJg1OhhvXmN6TwR0NhyB40GCOKfdfXDX7qWK99P9rHYVK-gRnVZNPm8E8TrH_GzFw4W-ePazJJV0f8kHL4IdDNB8htP59MapSYLl06ZP8kWFVWR3WljE_vlkB0NNRx4uwQtH_rjbTRHsY6Y3VbL945yDsnJ3O-WZrQrLsYP1GLH_m9wg31wIJNAmKycUBUd4IHhg01-3u94DOhZgsLTIMlpa4rrAJ7QHhUtqYZMsXRL4pSFNHvLcQ44Uw7mn8u0JAy_SlurBOUmvIVwhSnVy3R251D1C5RtGrk4K63eQ8t1vZzrE8T-ryQ1kdt7XWi4zG0ncnUUqowF-qLSezDX1lc1VhubZlLnSxJ8wrhAkxluxm_uBpLOm3pZFM4sXde3_lhH3hGjTppAqw38D4mb9q3LMtBVHxrZz_m6xsPgYx7hnNBU_YgEaKvYbZEJxuTB51v9EWnkkVcF7LSlDWZ2i1lwxQ7479SEvdtJa659yEZNkwxb6Tr4iA-cC7__6ZCQznaFOvxnhRWFknCjuxyuvJfJOiGmMUtO3RDWVDGp5kEorLd85_y6ivg3f9Sa8i9Jd8K9j8ph--HAludLFIGjlBAMmf-lz42nk5uoRGFdkfm1TDkZWHy9m_KY76KoImI_LPm0pybDu1hMe7nzQSX4bvSG_nCGI3LD-grkdT_9MHQSEtECQl2vKcXVU87uSO5eFlO1x3vOsSDMl-KfY_BosInPP6u97MwB1QXGSZX78x7gqUZFXbxLGOUhtmfVQUC3GuNxPt7kR8BQ==","summary":[{"type":"summary_text","text":"**Investigating key mismatch and registry inconsistencies**"},{"type":"summary_text","text":"**Clarifying registry and roster output distinctions**"},{"type":"summary_text","text":"**Locating project directory for spt-core**"}]},{"id":"fc_050f56f290a937ae016a56bc078de481969abf32cde15a2843","type":"function_call","status":"completed","arguments":"{\"i\":\"Listing project directory\",\"path\":\"C:/Users/decid/Documents/projects\",\"selector\":null}","call_id":"call_ZWeEL6vynHBCXTVNSnzYYo9Z","name":"read"},{"id":"fc_050f56f290a937ae016a56bc078f6c8196a3aa21cfc566de18","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating SPT source roots\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/**/Cargo.toml\",\"hidden\":true,\"gitignore\":true,\"limit\":50}","call_id":"call_LSInZxfdGXvYJLUnuqA2lGaV","name":"glob"},{"id":"fc_050f56f290a937ae016a56bc078f788196985fbff2552bb076","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating nested SPT source\",\"path\":\"C:/Users/decid/Documents/projects/github.com/**/Cargo.toml\",\"hidden\":true,\"gitignore\":true,\"limit\":100}","call_id":"call_v1hvYuycRQ1QATXFq3CYpA4p","name":"glob"},{"id":"fc_050f56f290a937ae016a56bc078f808196b74be529109264c9","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating source status symbols\",\"path\":\"C:/Users/decid/Documents/projects/*/src/**/*.rs\",\"hidden\":true,\"gitignore\":true,\"limit\":200}","call_id":"call_i2Aj9hjv1IQ7uf3tTRMUZpQF","name":"glob"},{"id":"fc_050f56f290a937ae016a56bc078f888196831bb3dac66a800c","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading stale roster snapshot\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-417\",\"selector\":\"raw\"}","call_id":"call_Q1H8kNE35Ltx1Wb6fyISlkS4","name":"read"},{"id":"fc_050f56f290a937ae016a56bc078f90819680e4df205241a0fc","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading recent roster snapshot\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-640\",\"selector\":\"raw\"}","call_id":"call_NsRdKphkMCXfHdlpf6U8WVvq","name":"read"},{"id":"fc_050f56f290a937ae016a56bc078f948196b9683d2717266923","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding node key corruption evidence\",\"pattern\":\"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce|ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657|39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\"path\":\"C:/Users/decid/AppData/Local/spt-core\",\"selector\":null,\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_5GKnm5CcKV7RAibrHu3qM6UR","name":"grep"}]},"duration":17805.19059997797,"ttft":1318.5913000106812,"contextSnapshot":{"promptTokens":89728,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_ZWeEL6vynHBCXTVNSnzYYo9Z|fc_050f56f290a937ae016a56bc078de481969abf32cde15a2843","toolName":"read","startedAt":"2026-07-14T22:45:27.673Z","args":{"path":"C:/Users/decid/Documents/projects"},"intent":"Listing project directory"},"id":"7fbefef0","parentId":"fe92c463","timestamp":"2026-07-14T22:45:27.673Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_LSInZxfdGXvYJLUnuqA2lGaV|fc_050f56f290a937ae016a56bc078f6c8196a3aa21cfc566de18","toolName":"glob","startedAt":"2026-07-14T22:45:27.674Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/**/Cargo.toml"},"intent":"Locating SPT source roots"},"id":"23e88a10","parentId":"7fbefef0","timestamp":"2026-07-14T22:45:27.674Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_v1hvYuycRQ1QATXFq3CYpA4p|fc_050f56f290a937ae016a56bc078f788196985fbff2552bb076","toolName":"glob","startedAt":"2026-07-14T22:45:27.674Z","args":{"path":"C:/Users/decid/Documents/projects/github.com/**/Cargo.toml"},"intent":"Locating nested SPT source"},"id":"e0c59cce","parentId":"23e88a10","timestamp":"2026-07-14T22:45:27.674Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_i2Aj9hjv1IQ7uf3tTRMUZpQF|fc_050f56f290a937ae016a56bc078f808196b74be529109264c9","toolName":"glob","startedAt":"2026-07-14T22:45:27.674Z","args":{"path":"C:/Users/decid/Documents/projects/*/src/**/*.rs"},"intent":"Locating source status symbols"},"id":"6e944426","parentId":"e0c59cce","timestamp":"2026-07-14T22:45:27.674Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Q1H8kNE35Ltx1Wb6fyISlkS4|fc_050f56f290a937ae016a56bc078f888196831bb3dac66a800c","toolName":"read","startedAt":"2026-07-14T22:45:27.674Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-417"},"intent":"Reading stale roster snapshot"},"id":"e5908de4","parentId":"6e944426","timestamp":"2026-07-14T22:45:27.674Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_NsRdKphkMCXfHdlpf6U8WVvq|fc_050f56f290a937ae016a56bc078f90819680e4df205241a0fc","toolName":"read","startedAt":"2026-07-14T22:45:27.674Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-640"},"intent":"Reading recent roster snapshot"},"id":"d7cd0a92","parentId":"e5908de4","timestamp":"2026-07-14T22:45:27.674Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_5GKnm5CcKV7RAibrHu3qM6UR|fc_050f56f290a937ae016a56bc078f948196b9683d2717266923","toolName":"grep","startedAt":"2026-07-14T22:45:27.674Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core"},"intent":"Finding node key corruption evidence"},"id":"1a20837b","parentId":"d7cd0a92","timestamp":"2026-07-14T22:45:27.674Z"}
{"type":"message","id":"7f4c2f1b","parentId":"1a20837b","timestamp":"2026-07-14T22:45:27.675Z","message":{"role":"toolResult","toolCallId":"call_v1hvYuycRQ1QATXFq3CYpA4p|fc_050f56f290a937ae016a56bc078f788196985fbff2552bb076","toolName":"glob","content":[{"type":"text","text":"Path not found: github.com"}],"details":{},"isError":true,"timestamp":1784069127675}}
{"type":"message","id":"c7e7f76d","parentId":"7f4c2f1b","timestamp":"2026-07-14T22:45:27.677Z","message":{"role":"toolResult","toolCallId":"call_Q1H8kNE35Ltx1Wb6fyISlkS4|fc_050f56f290a937ae016a56bc078f888196831bb3dac66a800c","toolName":"read","content":[{"type":"text","text":""}],"details":{"displayContent":{"text":"","startLine":1,"lineNumbers":[]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-417"}}},"isError":false,"timestamp":1784069127677}}
{"type":"message","id":"56e8db30","parentId":"c7e7f76d","timestamp":"2026-07-14T22:45:27.677Z","message":{"role":"toolResult","toolCallId":"call_NsRdKphkMCXfHdlpf6U8WVvq|fc_050f56f290a937ae016a56bc078f90819680e4df205241a0fc","toolName":"read","content":[{"type":"text","text":""}],"details":{"displayContent":{"text":"","startLine":1,"lineNumbers":[]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-640"}}},"isError":false,"timestamp":1784069127677}}
{"type":"message","id":"c3fc4deb","parentId":"56e8db30","timestamp":"2026-07-14T22:45:27.685Z","message":{"role":"toolResult","toolCallId":"call_ZWeEL6vynHBCXTVNSnzYYo9Z|fc_050f56f290a937ae016a56bc078de481969abf32cde15a2843","toolName":"read","content":[{"type":"text","text":".\n  - spt-claude-code/                                     3d ago\n    - .claude/                                           21h ago\n    - adapter/                                           3d ago\n    - CHANGELOG.md                             57.2KB    3d ago\n    - docs/                                              3d ago\n    - traceable-reqs.toml                      146.5KB   4d ago\n    - STUB-INJECT-PLAN.md                      4.0KB     4d ago\n    - CONTEXT.md                               9.7KB     4d ago\n    - DISCIPLINE-BRIEF-PLAN.md                 2.3KB     4d ago\n    - tests/                                             4d ago\n    - NEXT-WORKLOAD-PLAN.md                    12.7KB    5d ago\n    - TRUNCATION-PROBE-PLAN.md                 6.6KB     1w ago\n    - … 34 more\n    - HANDOFF.md                               8.5KB     1mo ago\n  - spt-core/                                            3d ago\n    - .claude/                                           11h ago\n    - Cargo.lock                               136.6KB   3d ago\n    - Cargo.toml                               1.5KB     3d ago\n    - CHANGELOG.md                             99.5KB    3d ago\n    - .worktrees/                                        3d ago\n    - traceable-reqs.toml                      728.7KB   3d ago\n    - docs/                                              3d ago\n    - CONTEXT.md                               188.6KB   3d ago\n    - .config/                                           3d ago\n    - docs-site/                                         6d ago\n    - CLAUDE.md                                3.1KB     1w ago\n    - … 121 more\n    - src/                                               1mo ago\n  - .claude/                                             4d ago\n    - agents/                                            3w ago\n    - agent-memory/                                      3w ago\n    - LIVE_AGENT_IDS.json                      60B       3mo ago\n  - spt-mobile/                                          4d ago\n    - .claude/                                           21h ago\n    - ci/                                                1d ago\n    - docs/                                              1d ago\n    - traceable-reqs.toml                      17.5KB    4d ago\n    - scratchpad/                                        5d ago\n    - host/                                              5d ago\n    - app/                                               5d ago\n    - CHANGELOG.md                             3.2KB     5d ago\n    - README.md                                5.1KB     6d ago\n    - FEATURE-BATCH-PLAN.md                    7.6KB     6d ago\n    - DESIGN.md                                9.4KB     6d ago\n    - … 13 more\n    - CONTEXT.md                               6.0KB     1w ago\n  - cc-perri.cmd                               297B      4d ago\n  - oh-my-pi/                                            4d ago\n    - bun.lock                                 144.9KB   4d ago\n    - types/                                             4d ago\n    - tsconfig.json                            124B      4d ago\n    - tsconfig.tools.json                      276B      4d ago\n    - scripts/                                           4d ago\n    - tsconfig.base.json                       488B      4d ago\n    - rustfmt.toml                             1.5KB     4d ago\n    - rust-toolchain.toml                      160B      4d ago\n    - rust-analyzer.toml                       118B      4d ago\n    - python/                                            4d ago\n    - patches/                                           4d ago\n    - … 22 more\n    - .gitattributes                           1.0KB     4d ago\n  - omp-spt/                                             4d ago\n    - docs/                                              4d ago\n    - traceable-reqs.toml                      127.0KB   4d ago\n    - tools/                                             4d ago\n    - tests/                                             4d ago\n    - plugin/                                            4d ago\n    - docs-site/                                         4d ago\n    - ci/                                                4d ago\n    - adapter/                                           4d ago\n    - UNIFY-CONSOLIDATE-PLAN.md                11.6KB    4d ago\n    - UPDATE-NAMING-DOYLE-ASKS.md              13.2KB    4d ago\n    - V09-PLAN.md                              6.1KB     4d ago\n    - … 31 more\n    - AGENTS.md                                4.4KB     4d ago\n  - traceable-reqs/                                      5d ago\n    - rust/                                              5d ago\n    - SPEC.md                                  27.0KB    5d ago\n    - README.md                                4.4KB     5d ago\n    - SKILL.md                                 7.4KB     1mo ago\n    - .claude/                                           2mo ago\n    - example/                                           2mo ago\n    - CLAUDE.md                                12B       2mo ago\n    - .gitignore                               295B      2mo ago\n    - AGENTS.md                                2.9KB     2mo ago\n    - .github/                                           2mo ago\n  - liaison/                                             6d ago\n    - .claude/                                           21h ago\n  - test-project/                                        1w ago\n    - .claude/                                           1w ago\n    - cc-hall-b.cmd                            302B      1w ago\n  - spt-discord/                                         3w ago\n    - README.md                                5.2KB     3w ago\n  - rckeys.log                                 7.0KB     3w ago\n  - beyond_synaptics/                                    4w ago\n    - out/                                               4w ago\n    - src/                                               4w ago\n    - CMakeLists.txt                           9.1KB     4w ago\n    - docs/                                              1mo ago\n    - scripts/                                           1mo ago\n    - .gitignore                               525B      1mo ago\n    - arm-gcc-toolchain.cmake                  2.6KB     1mo ago\n    - CMakePresets.json                        622B      1mo ago\n    - utils.cmake                              2.7KB     1mo ago\n    - wiki/                                              1mo ago\n    - vxr7200_firmware/                                  1mo ago\n    - … 12 more\n    - Beyond_Synaptics.atsln                   1.0KB     1mo ago\n  - experimplate/                                        4w ago\n    - docs/                                              1w ago\n    - CONTEXT.md                               1.1KB     4w ago\n    - docs-site/                                         4w ago\n    - INSTANTIATE.md                           4.4KB     4w ago\n    - traceable-reqs.toml                      2.4KB     4w ago\n    - CLAUDE.md                                286B      4w ago\n    - AGENTS.md                                3.3KB     4w ago\n    - PLAN.md                                  3.4KB     1mo ago\n  - sauna/                                               1mo ago\n    - .claude/                                           2w ago\n    - .gitignore                               332B      2w ago\n    - CMakeLists.txt                           3.6KB     1mo ago\n    - CONTEXT.md                               11.2KB    1mo ago\n    - docs/                                              1mo ago\n    - dist_doze_ramp_compare.png               7.4KB     1mo ago\n    - dist_doze_optic_strip.png                25.2KB    1mo ago\n    - .screen-timelapse/                                 1mo ago\n    - tools/                                             1mo ago\n    - calib_backups/                                     1mo ago\n    - third_party/                                       1mo ago\n    - … 4 more\n    - reference/                                         1mo ago\n  - quick-beyond-updater/                                1mo ago\n    - __pycache__/                                       1mo ago\n    - tools/                                             1mo ago\n    - quick_updater_settings.py                2.3KB     1mo ago\n    - requirements.txt                         288B      1mo ago\n    - quick_updater_config.yaml                889B      1mo ago\n    - quick_updater.spec                       3.2KB     1mo ago\n    - override-0.4.9.dfu                       842.2KB   1mo ago\n    - quick_updater.py                         36.1KB    1mo ago\n    - override-0.3.19.beyondfw                 77.4KB    1mo ago\n    - override-0.3.10.beyondfw                 74.5KB    1mo ago\n    - init_json_config.json                    11.9KB    1mo ago\n    - … 17 more\n    - .gitignore                               111B      1mo ago\n  - claude-screen-timelapse/                             1mo ago\n    - docs/                                              1mo ago\n    - .planning/                                         2mo ago\n    - .claude/                                           2mo ago\n    - prebuilds/                                         2mo ago\n    - package.json                             1.0KB     3mo ago\n    - .claude-plugin/                                    3mo ago\n    - .screen-timelapse/                                 3mo ago\n    - src/                                               3mo ago\n    - .gitignore                               74B       3mo ago\n    - tests/                                             3mo ago\n    - native/                                            3mo ago\n    - … 4 more\n    - CLAUDE.md                                8.2KB     3mo ago\n  - spt-lecturn/                                         1mo ago\n    - CONTEXT.md                               12.6KB    1mo ago\n  - mmi_test/                                            1mo ago\n    - vap_unity_build/                                   1mo ago\n    - rgb_led_test.py                          1.6KB     1mo ago\n    - mic_test.py                              4.7KB     1mo ago\n    - mmi_test.py                              44.8KB    1mo ago\n    - requirements.txt                         79B       1mo ago\n    - hidapi.dll                               158.5KB   1mo ago\n    - imgui.ini                                266B      1mo ago\n    - localized_string_provider.py             7.2KB     1mo ago\n    - mes_logger.py                            1.7KB     1mo ago\n    - glfw3.dll                                206.5KB   1mo ago\n    - fan_test.py                              2.5KB     1mo ago\n    - … 10 more\n    - README.md                                95B       1mo ago\n  - vertical-alignment-proximity/                        1mo ago\n    - vap_unity_build/                                   1mo ago\n    - vap_unity/                                         1mo ago\n    - test_image_righteye.png                  328.1KB   1mo ago\n    - test_image_lefteye.png                   373.0KB   1mo ago\n    - sandbox.py                               5.2KB     1mo ago\n    - resources/                                         1mo ago\n    - motor_controller.py                      3.4KB     1mo ago\n    - proximity.py                             8.0KB     1mo ago\n    - requirements.txt                         613B      1mo ago\n    - main.spec                                936B      1mo ago\n    - mes_logger.py                            2.0KB     1mo ago\n    - … 14 more\n    - .gitignore                               124B      1mo ago\n  - check-canting/                                       1mo ago\n    - .gitignore                               8B        1mo ago\n    - check_canting.ipynb                      7.7KB     1mo ago\n  - bs2_eyetracking/                                     1mo ago\n    - src/                                               1mo ago\n    - extract_pcap_xml_isoc.py                 5.0KB     1mo ago\n    - find_first_mistake_xml_isoc.py           1.8KB     1mo ago\n    - fpga_control.py                          7.3KB     1mo ago\n    - create_release.py                        7.0KB     1mo ago\n    - extract_pcap_xml.py                      1.5KB     1mo ago\n    - combine_bin.py                           1.8KB     1mo ago\n    - combine_fs.py                            2.6KB     1mo ago\n    - bs2-USB-Video-Class.gprj.user            5.5KB     1mo ago\n    - boot_overwrite/                                    1mo ago\n    - bs2-USB-Video-Class.gprj                 7.7KB     1mo ago\n    - … 5 more\n    - .gitignore                               15B       1mo ago\n  - big-eye-utils/                                       1mo ago\n    - fpga_commands.py                         2.8KB     1mo ago\n    - mW_conversion.py                         955B      1mo ago\n    - pyproject.toml                           257B      1mo ago\n    - .gitignore                               119B      1mo ago\n    - .python-version                          6B        1mo ago\n    - capture.py                               6.1KB     1mo ago\n    - README.md                                0B        1mo ago\n  - beyond-eye-tracking-client/                          1mo ago\n    - videos/                                            1mo ago\n    - uv.lock                                  131B      1mo ago\n    - textures/                                          1mo ago\n    - src/                                               1mo ago\n    - sfx/                                               1mo ago\n    - scripts/                                           1mo ago\n    - scenes/                                            1mo ago\n    - overlay.tscn                             220B      1mo ago\n    - project.godot                            1.3KB     1mo ago\n    - pyproject.toml                           170B      1mo ago\n    - openxr_action_map.tres                   56.1KB    1mo ago\n    - … 35 more\n    - .BeyondExtTrackingInterface/                       1mo ago\n  - calibot/                                             1mo ago\n    - warning.txt                              67B       1mo ago\n    - tools/                                             1mo ago\n    - sandbox n05.py                           1.7KB     1mo ago\n    - sandbox n03_1.py                         1.6KB     1mo ago\n    - sandbox n03.py                           2.3KB     1mo ago\n    - sandbox n04.py                           1.3KB     1mo ago\n    - random_path.bat                          136B      1mo ago\n    - requirements.txt                         289B      1mo ago\n    - sandbox n01.py                           2.2KB     1mo ago\n    - sandbox n02.py                           2.4KB     1mo ago\n    - load_init_json.py                        1.0KB     1mo ago\n    - … 20 more\n    - .gitignore                               93B       1mo ago\n  - extended-mode-display/                               1mo ago\n    - test_images/                                       1mo ago\n    - resources/                                         1mo ago\n    - scripts/                                           1mo ago\n    - temp_image.png                           342B      1mo ago\n    - pyproject.toml                           1.0KB     1mo ago\n    - requirements.txt                         62B       1mo ago\n    - mura.png                                 681.8KB   1mo ago\n    - extended_mode_display/                             1mo ago\n    - bars_gen.py                              6.5KB     1mo ago\n    - build.spec                               3.5KB     1mo ago\n    - .vscode/                                           1mo ago\n    - … 2 more\n    - .github/                                           1mo ago\n  - HMDUtility/                                          1mo ago\n    - src/                                               1mo ago\n    - test/                                              1mo ago\n    - signtool.exe                             231.8KB   1mo ago\n    - dependencies/                                      1mo ago\n    - build.ps1                                5.1KB     1mo ago\n    - SteamVRDriver/                                     1mo ago\n    - .gitignore                               7.4KB     1mo ago\n    - README.md                                59B       1mo ago\n    - .gitattributes                           165B      1mo ago\n  - beyond_bootloader/                                   1mo ago\n    - script/                                            1mo ago\n    - img/                                               1mo ago\n    - USB_Bootloader/                                    1mo ago\n    - README.md                                6.2KB     1mo ago\n    - USB_Bootloader.atsln                     1.4KB     1mo ago\n    - BL_Overwriter/                                     1mo ago\n    - .gitignore                               322B      1mo ago\n  - openvr-resilient/                                    1mo ago\n    - tools/                                             1mo ago\n    - OpenVR_Modifications.md                  10.4KB    15mo ago\n    - drivers/                                           15mo ago\n    - .gitignore                               113B      15mo ago\n    - .roomodes                                2.5KB     15mo ago\n    - openvr_api.vcxproj                       6.8KB     16mo ago\n    - x64/                                               16mo ago\n    - build.bat                                167B      16mo ago\n    - headers/                                           16mo ago\n    - src/                                               16mo ago\n    - samples/                                           16mo ago\n    - … 9 more\n    - LICENSE                                  1.5KB     16mo ago\n  - rebno/                                               1mo ago\n    - .claude/                                           1mo ago\n    - .planning/                                         1mo ago\n    - docs/                                              1mo ago\n    - traceable-reqs.toml                      13.8KB    1mo ago\n    - CONTEXT.md                               27.5KB    1mo ago\n    - .gitignore                               2.6KB     1mo ago\n    - maps/                                              1mo ago\n    - package.json                             8.4KB     1mo ago\n    - tooling/                                           1mo ago\n    - tools/                                             1mo ago\n    - .dockerignore                            1.3KB     1mo ago\n    - … 17 more\n    - legacy/                                            2mo ago\n  - spt-releases/                                        1mo ago\n    - README.md                                4.7KB     1mo ago\n    - LICENSE-BINARY                           1.7KB     1mo ago\n    - LICENSE-MIT                              1.3KB     1mo ago\n  - spt-shell-notify/                                    1mo ago\n    - Cargo.toml                               728B      1mo ago\n    - src/                                               1mo ago\n    - Cargo.lock                               2.6KB     1mo ago\n    - .gitignore                               19B       1mo ago\n    - README.md                                1.8KB     1mo ago\n    - manifest.toml                            2.4KB     1mo ago\n  - attractor/                                           1mo ago\n    - pilot/                                             1mo ago\n    - .attractor/                                        1mo ago\n    - workflows/                                         1mo ago\n    - traceable-reqs.toml                      34.5KB    1mo ago\n    - uv.lock                                  48.7KB    1mo ago\n    - tests/                                             1mo ago\n    - smoke-merger-goal.md                     3.0KB     1mo ago\n    - src/                                               1mo ago\n    - scripts/                                           1mo ago\n    - smoke-goal.md                            1.2KB     1mo ago\n    - goal-v0-2-parallel-validator.md          4.4KB     1mo ago\n    - … 18 more\n    - .agents/                                           1mo ago\n  - claude_skill_owl/                                    1mo ago\n    - .claude/                                           1mo ago\n    - Cargo.lock                               31.4KB    1mo ago\n    - Cargo.toml                               1.5KB     1mo ago\n    - CHANGELOG.md                             126.3KB   1mo ago\n    - tests/                                             1mo ago\n    - src/                                               1mo ago\n    - .planning/                                         1mo ago\n    - CLAUDE.md                                5.0KB     1mo ago\n    - AGENTS.md                                4.8KB     1mo ago\n    - docs/                                              1mo ago\n    - CONTEXT.md                               14.5KB    1mo ago\n    - … 7 more\n    - .gitattributes                           179B      3mo ago\n  - pi-agent-memory/                                     1mo ago\n    - workflows/                                         1mo ago\n    - tests/                                             1mo ago\n    - package.json                             145B      1mo ago\n    - scripts/                                           1mo ago\n    - CONTEXT.md                               7.0KB     1mo ago\n    - docs/                                              1mo ago\n    - NLSPEC.md                                10.9KB    1mo ago\n    - README.md                                3.7KB     1mo ago\n    - .pi/                                               1mo ago\n    - .gitattributes                           240B      1mo ago\n  - lettem-in/                                           1mo ago\n    - app/                                               1mo ago\n    - README.md                                1.3KB     1mo ago\n    - settings.gradle.kts                      393B      1mo ago\n    - teensy/                                            1mo ago\n    - gradlew                                  8.7KB     1mo ago\n    - gradlew.bat                              2.8KB     1mo ago\n    - .gitignore                               200B      1mo ago\n    - .gradle/                                           1mo ago\n    - keystore/                                          1mo ago\n    - local.properties                         26B       1mo ago\n    - gradle/                                            1mo ago\n    - … 1 more\n    - build.gradle.kts                         142B      1mo ago\n  - cloud/                                               1mo ago\n    - auth/                                              1mo ago\n    - package.json                             5.5KB     1mo ago\n    - docs/                                              1mo ago\n    - yarn.lock                                429.6KB   1mo ago\n    - website/                                           1mo ago\n    - webapps/                                           1mo ago\n    - tsconfig.eslint.json                     633B      1mo ago\n    - tsconfig.json                            1008B     1mo ago\n    - tests/                                             1mo ago\n    - plans/                                             1mo ago\n    - nodemon.arda.json                        329B      1mo ago\n    - … 23 more\n    - .claude/                                           1mo ago\n  - website/                                             1mo ago\n    - .planning/                                         1mo ago\n    - .claude/                                           1mo ago\n    - src/                                               1mo ago\n    - CLAUDE.md                                30.4KB    1mo ago\n    - docs/                                              1mo ago\n    - yarn.lock                                604.7KB   1mo ago\n    - public/                                            1mo ago\n    - ipynb_shopify/                                     1mo ago\n    - package.json                             2.0KB     1mo ago\n    - cloud-browser-static/                              1mo ago\n    - .gitignore                               415B      1mo ago\n    - … 3 more\n    - .gitattributes                           27B       1mo ago\n  - bigstack/                                            1mo ago\n    - title.png                                2.8MB     1mo ago\n    - setup.sh                                 2.5KB     1mo ago\n    - package.json                             369B      1mo ago\n    - scripts/                                           1mo ago\n    - bigstack-upgrade/                                  1mo ago\n    - package-lock.json                        16.6KB    1mo ago\n    - bigstack-test/                                     1mo ago\n    - bigstack-review/                                   1mo ago\n    - bigstack-ship/                                     1mo ago\n    - bigstack-retro/                                    1mo ago\n    - bigstack-qa/                                       1mo ago\n    - … 17 more\n    - .claude/                                           1mo ago\n  - bigscreen10/                                         1mo ago\n    - timeline/                                          1mo ago\n    - deploy/                                            1mo ago\n    - COPY.md                                  18.0KB    1mo ago\n    - README.md                                819B      1mo ago\n    - .gitignore                               428B      1mo ago\n    - COPY-withmaxedit.md                      18.7KB    1mo ago\n    - .github/                                           1mo ago\n  - AppData/                                             1mo ago\n    - Local/                                             1mo ago\n  - mic-map/                                             2mo ago\n    - .claude/                                           2mo ago\n    - .planning/                                         2mo ago\n    - CLAUDE.md                                5.5KB     2mo ago\n    - installer/                                         2mo ago\n    - CMakeLists.txt                           11.1KB    2mo ago\n    - tests/                                             2mo ago\n    - driver/                                            2mo ago\n    - .gitignore                               628B      2mo ago\n    - cmake/                                             2mo ago\n    - imgui.ini                                96B       2mo ago\n    - tools/                                             2mo ago\n    - … 16 more\n    - .gitattributes                           68B       4mo ago\n  - cplugs-everything/                                   2mo ago\n  - bey-closer-t1/                                       2mo ago\n    - .planning/                                         2mo ago\n    - CMakeLists.txt                           8.0KB     2mo ago\n    - extern/                                            2mo ago\n    - tests/                                             2mo ago\n    - scripts/                                           2mo ago\n    - src/                                               2mo ago\n    - CLAUDE.md                                1.8KB     2mo ago\n    - tools/                                             2mo ago\n    - .screen-timelapse/                                 2mo ago\n    - installer/                                         3mo ago\n    - .env                                     37B       3mo ago\n    - … 5 more\n    - code_samples/                                      3mo ago\n  - wit-what/                                            2mo ago\n    - .claude/                                           2mo ago\n    - app_stderr.txt                           26.5MB    2mo ago\n    - CLAUDE.md                                5.0KB     2mo ago\n    - .planning/                                         2mo ago\n    - code_tips/                                         2mo ago\n    - .gitignore                               140B      2mo ago\n    - .gitattributes                           13B       3mo ago\n    - app_bugsweeper_stderr.txt                19B       3mo ago\n    - app_bugsweeper_stdout.txt                0B        3mo ago\n    - Cargo.lock                               175.7KB   3mo ago\n    - screenshot.png                           2.3MB     3mo ago\n    - … 15 more\n    - Cargo.toml                               228B      3mo ago\n  - config.toml                                4.9KB     3mo ago\n  - clipboard-speaker.exe                      10.7MB    3mo ago\n  - exput/                                               3mo ago\n    - docs/                                              3mo ago\n  - holohue-gui/                                         3mo ago\n    - find_claude.bat                          1.1KB     3mo ago\n    - tsconfig.json                            393B      3mo ago\n    - vite.config.ts                           351B      3mo ago\n    - src/                                               3mo ago\n    - src-tauri/                                         3mo ago\n    - package-lock.json                        94.3KB    3mo ago\n    - package.json                             703B      3mo ago\n    - index.html                               340B      3mo ago\n    - .planning/                                         3mo ago\n    - .claude/                                           3mo ago\n    - .gitignore                               263B      3mo ago\n  - eyetrack_mipi_fpga/                                  3mo ago\n    - video_fifo_timeline.xlsx                 11.0KB    3mo ago\n    - testbench/                                         3mo ago\n    - src/                                               3mo ago\n    - sipeed_tang_adapter_photo.pptx           2.2MB     3mo ago\n    - sipeed_tang_adapter_photo.pdf            592.7KB   3mo ago\n    - block.png                                121.8KB   3mo ago\n    - eyetrack_mipi_fpga.gprj                  3.9KB     3mo ago\n    - eyetrack_mipi_fpga.gprj.user             5.2KB     3mo ago\n    - block.drawio.svg                         70.0KB    3mo ago\n    - Bigscreen_block_diagram.pdf              96.4KB    3mo ago\n    - Bigscreen_Eyetracking_BlockDiagram.png   124.7KB   3mo ago\n    - … 2 more\n    - .env                                     37B       3mo ago\n  - ,claude-bigscreen/                                   3mo ago\n    - .env                                     37B       3mo ago\n  - own-ledger/                                          3mo ago\n    - docs/                                              3mo ago\n    - .dart_tool/                                        3mo ago\n    - .flutter-plugins-dependencies            6.3KB     3mo ago\n    - lib/                                               3mo ago\n    - pubspec.lock                             22.7KB    3mo ago\n    - pubspec.yaml                             3.5KB     3mo ago\n    - test/                                              3mo ago\n    - .gitignore                               757B      3mo ago\n    - .metadata                                968B      3mo ago\n    - windows/                                           3mo ago\n    - README.md                                649B      3mo ago\n    - … 4 more\n    - .gstack/                                           3mo ago\n  - biodroid-auth/                                       3mo ago\n    - windows-hello-android-companion-auth.md  6.5KB     3mo ago\n  - get-shit-done/                                       3mo ago\n    - vitest.config.ts                         515B      3mo ago\n    - tests/                                             3mo ago\n    - tsconfig.json                            69B       3mo ago\n    - sdk/                                               3mo ago\n    - scripts/                                           3mo ago\n    - package.json                             1.3KB     3mo ago\n    - hooks/                                             3mo ago\n    - package-lock.json                        95.0KB    3mo ago\n    - get-shit-done/                                     3mo ago\n    - docs/                                              3mo ago\n    - commands/                                          3mo ago\n    - … 16 more\n    - .base64scanignore                        242B      3mo ago\n  - qt-py-haptics/                                       4mo ago\n    - docs/                                              4mo ago\n    - .gitignore                               290B      4mo ago\n    - Cargo.toml                               649B      4mo ago\n    - PROJECT_STRUCTURE_OUTLINE.md             3.6KB     4mo ago\n    - openvr-driver/                                     4mo ago\n    - Cargo.lock                               26.5KB    4mo ago\n    - .cargo/                                            4mo ago\n    - tools/                                             4mo ago\n    - .github/                                           4mo ago\n    - tests/                                             4mo ago\n    - hardware/                                          4mo ago\n    - … 2 more\n    - firmware/                                          4mo ago\n  - vmulti-client-testing/                               5mo ago\n    - Cargo.lock                               18.7KB    5mo ago\n    - Cargo.toml                               268B      5mo ago\n    - .gitignore                               8B        5mo ago\n    - src/                                               5mo ago\n  - playdial/                                            5mo ago\n    - Cargo.lock                               7.1KB     5mo ago\n    - Cargo.toml                               120B      5mo ago\n    - .gitignore                               8B        5mo ago\n    - src/                                               5mo ago\n  - oship/                                               5mo ago\n    - Cargo.lock                               149B      5mo ago\n    - Cargo.toml                               76B       5mo ago\n    - src/                                               5mo ago\n    - .gitignore                               8B        5mo ago\n  - _3functions/                                         5mo ago\n    - Cargo.lock                               155B      5mo ago\n    - Cargo.toml                               82B       5mo ago\n    - src/                                               5mo ago\n    - .gitignore                               8B        5mo ago\n  - rustHello/                                           5mo ago\n    - helloProject/                                      5mo ago\n    - hello.pdb                                1.2MB     5mo ago\n    - hello.exe                                129.5KB   5mo ago\n    - hello.rs                                 44B       5mo ago\n  - Ubers-SD-Files/                                      8mo ago\n    - unirf/                                             8mo ago\n    - subghz/                                            8mo ago\n    - apps/                                              8mo ago\n    - Wav_Player/                                        8mo ago\n    - NFC/                                               8mo ago\n    - Infrared/                                          8mo ago\n    - BadUSB/                                            8mo ago\n    - .gitmodules                              3.3KB     8mo ago\n    - .gitignore                               20B       8mo ago\n  - bigscreen/                                           13mo ago\n    - beyond_synaptics/                                  2w ago\n    - vertical-alignment-proximity/                      13mo ago\n    - calibot/                                           13mo ago\n    - valve-tools-wrapper/                               13mo ago\n    - big-notebooks/                                     15mo ago\n    - website/                                           16mo ago\n    - beyond_synaptics.zip                     48.7MB    28mo ago\n  - tundra-mag-plate/                                    22mo ago\n    - STL/                                               22mo ago\n    - TundraMagPlateV2.step                    435.4KB   22mo ago\n    - TundraMagPlate v12.f3z                   9.3MB     22mo ago\n    - CADLatest.png                            414.6KB   22mo ago\n    - Tundra_Charging_Dock_V1/                           22mo ago\n    - Tundra_Pogo_Interface_V1/                          22mo ago\n    - .repoLink.url                            150B      22mo ago\n    - Tundra_Tracker_Reference/                          22mo ago\n    - README.md                                81B       22mo ago\n\n[1 results limit reached. Use limit=2 for more]"}],"details":{"isDirectory":true,"resolvedPath":"C:\\Users\\decid\\Documents\\projects","meta":{"source":{"type":"path","value":"C:\\Users\\decid\\Documents\\projects"},"limits":{"resultLimit":{"reached":1,"suggestion":2}}}},"isError":false,"timestamp":1784069127685}}
{"type":"message","id":"532217b7","parentId":"c3fc4deb","timestamp":"2026-07-14T22:45:27.687Z","message":{"role":"toolResult","toolCallId":"call_LSInZxfdGXvYJLUnuqA2lGaV|fc_050f56f290a937ae016a56bc078f6c8196a3aa21cfc566de18","toolName":"glob","content":[{"type":"text","text":"# spt-core/\nCargo.toml\n## crates/\n### spt-store/\nCargo.toml\n### spt-net/\nCargo.toml\n### xtask/\nCargo.toml\n### spt-term/\nCargo.toml\n### spt-runtime/\nCargo.toml\n### spt-proto/\nCargo.toml\n### spt-msg/\nCargo.toml\n### spt-live/\nCargo.toml\n### spt-daemon/\nCargo.toml\n### spt/\nCargo.toml\n## adapters/mock/\nCargo.toml"}],"details":{"scopePath":"spt-core","fileCount":12,"files":["spt-core/Cargo.toml","spt-core/crates/spt-store/Cargo.toml","spt-core/crates/spt-net/Cargo.toml","spt-core/crates/xtask/Cargo.toml","spt-core/crates/spt-term/Cargo.toml","spt-core/crates/spt-runtime/Cargo.toml","spt-core/crates/spt-proto/Cargo.toml","spt-core/crates/spt-msg/Cargo.toml","spt-core/crates/spt-live/Cargo.toml","spt-core/crates/spt-daemon/Cargo.toml","spt-core/crates/spt/Cargo.toml","spt-core/adapters/mock/Cargo.toml"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069127687}}
{"type":"message","id":"44d62cb2","parentId":"532217b7","timestamp":"2026-07-14T22:45:27.869Z","message":{"role":"toolResult","toolCallId":"call_5GKnm5CcKV7RAibrHu3qM6UR|fc_050f56f290a937ae016a56bc078f948196b9683d2717266923","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/\n\n## identity/\n### peer-addrs.json\n 2|  \"addrs\": {\n*3|    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n*4|      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 5|      \"addrs\": [\n 6|        {\n 7|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 31|    },\n*32|    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n*33|      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 34|      \"addrs\": [\n 35|        {\n 36|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n### roster.json\n 28|    {\n*29|      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 30|      \"subnet\": \"SPT_DEV\",\n 31|      \"label\": \"ENLYZEAM\",\n 32|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 33|      \"address\": {\n*34|        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 35|        \"addrs\": [\n 36|          {\n 37|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 118|    {\n*119|      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n 120|      \"subnet\": \"SPT_DEV\",\n 121|      \"label\": \"SCELTOUIN\",\n 122|      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n 123|      \"address\": {\n*124|        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n 125|        \"addrs\": [\n 126|          {\n 127|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 146|    {\n*147|      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 148|      \"subnet\": \"BIGNET\",\n 149|      \"label\": \"ENLYZEAM\",\n 150|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 151|      \"address\": {\n*152|        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 153|        \"addrs\": [\n 154|          {\n 155|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 186|    {\n*187|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 188|      \"subnet\": \"BIGNET\",\n 189|      \"label\": \"ENLYZEAM\",\n 190|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 191|      \"address\": {\n*192|        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 193|        \"addrs\": [\n 194|          {\n 195|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 223|    {\n*224|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 225|      \"subnet\": \"SPT_DEV\",\n 226|      \"label\": \"ENLYZEAM\",\n 227|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 228|      \"address\": {\n*229|        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 230|        \"addrs\": [\n 231|          {\n 232|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 284|    {\n*285|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 286|      \"subnet\": \"BIGNET\",\n 287|      \"stamp\": \"1783983420\"\n 288|    },\n 289|    {\n*290|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 291|      \"subnet\": \"SPT_DEV\",\n 292|      \"stamp\": \"1783983420\"\n 293|    }\n\n### registry/\n#### BIGNET.json\n 223|    },\n*224|    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 225|      \"label\": \"ENLYZEAM\",\n 226|      \"epoch\": 445952\n 227|    }\n#### BS-Resources.json\n 227|    },\n*228|    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 229|      \"label\": \"ENLYZEAM\",\n 230|      \"epoch\": 443043\n 231|    },\n#### SPT_DEV.json\n 219|    },\n*220|    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 221|      \"label\": \"ENLYZEAM\",\n 222|      \"epoch\": 445951\n 223|    }\n#### heard.meta\n 4|  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n*5|  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n 6|  \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398\n 7|}\n\n## rca-active-20260709-222659/\n### daemon.stderr.active.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log.1\n 136|PAIR_MEET_UP:SPT_DEV step=59449381 id=b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144 addr=EndpointAddr { id: PublicKey(b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144), addrs: {Ip(100.68.35.65:62365), Ip(192.168.1.81:62365)} }\n*137|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 138|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 139|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 140|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 266|PAIR_MEET_UP:BIGNET step=59449402 id=512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7 addr=EndpointAddr { id: PublicKey(512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7), addrs: {Ip(100.68.35.65:55427), Ip(192.168.1.81:55427)} }\n*267|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*268|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 269|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 270|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 271|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 389|PAIR_MEET_UP:BIGNET step=59449422 id=062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040 addr=EndpointAddr { id: PublicKey(062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040), addrs: {Ip(100.68.35.65:56295), Ip(192.168.1.81:56295)} }\n*390|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 391|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 392|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 393|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 505|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*506|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*507|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 508|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 509|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 510|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 622|PAIR_MEET_UP:BS-Resources step=59449460 id=3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c addr=EndpointAddr { id: PublicKey(3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c), addrs: {Ip(100.68.35.65:56381), Ip(192.168.1.81:56381)} }\n*623|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 624|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 625|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 626|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 744|PAIR_MEET_UP:SPT_DEV step=59449480 id=8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443 addr=EndpointAddr { id: PublicKey(8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443), addrs: {Ip(100.68.35.65:55855), Ip(192.168.1.81:55855)} }\n*745|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*746|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 747|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 748|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 749|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 891|PAIR_MEET_UP:BIGNET step=59449503 id=cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4 addr=EndpointAddr { id: PublicKey(cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4), addrs: {Ip(100.68.35.65:49639), Ip(192.168.1.81:49639)} }\n*892|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 893|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 894|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 895|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1094|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1095|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1096|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1097|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1098|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1099|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1211|PAIR_MEET_UP:BS-Resources step=59449552 id=1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f addr=EndpointAddr { id: PublicKey(1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f), addrs: {Ip(100.68.35.65:56480), Ip(192.168.1.81:56480)} }\n*1212|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1213|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1214|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1215|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1351|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1352|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1353|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1354|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1355|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1356|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1548|PAIR_MEET_UP:BS-Resources step=59449604 id=735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d addr=EndpointAddr { id: PublicKey(735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d), addrs: {Ip(100.68.35.65:53349), Ip(192.168.1.81:53349)} }\n*1549|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1550|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1551|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1552|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1682|PAIR_MEET_UP:BS-Resources step=59449626 id=1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c addr=EndpointAddr { id: PublicKey(1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c), addrs: {Ip(100.68.35.65:56149), Ip(192.168.1.81:56149)} }\n*1683|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1684|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1685|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1686|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1687|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1896|PAIR_MEET_UP:BS-Resources step=59449661 id=7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a addr=EndpointAddr { id: PublicKey(7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a), addrs: {Ip(100.68.35.65:51649), Ip(192.168.1.81:51649)} }\n*1897|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1898|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1899|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1900|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 2013|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*2014|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 2015|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2016|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2017|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n\n## rca-capture-20260709-215646/\n### daemon.stderr.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.pre.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log.1\n 136|PAIR_MEET_UP:SPT_DEV step=59449381 id=b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144 addr=EndpointAddr { id: PublicKey(b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144), addrs: {Ip(100.68.35.65:62365), Ip(192.168.1.81:62365)} }\n*137|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 138|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 139|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 140|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 266|PAIR_MEET_UP:BIGNET step=59449402 id=512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7 addr=EndpointAddr { id: PublicKey(512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7), addrs: {Ip(100.68.35.65:55427), Ip(192.168.1.81:55427)} }\n*267|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*268|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 269|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 270|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 271|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 389|PAIR_MEET_UP:BIGNET step=59449422 id=062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040 addr=EndpointAddr { id: PublicKey(062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040), addrs: {Ip(100.68.35.65:56295), Ip(192.168.1.81:56295)} }\n*390|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 391|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 392|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 393|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 505|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*506|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*507|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 508|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 509|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 510|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 622|PAIR_MEET_UP:BS-Resources step=59449460 id=3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c addr=EndpointAddr { id: PublicKey(3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c), addrs: {Ip(100.68.35.65:56381), Ip(192.168.1.81:56381)} }\n*623|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 624|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 625|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 626|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 744|PAIR_MEET_UP:SPT_DEV step=59449480 id=8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443 addr=EndpointAddr { id: PublicKey(8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443), addrs: {Ip(100.68.35.65:55855), Ip(192.168.1.81:55855)} }\n*745|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*746|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 747|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 748|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 749|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 891|PAIR_MEET_UP:BIGNET step=59449503 id=cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4 addr=EndpointAddr { id: PublicKey(cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4), addrs: {Ip(100.68.35.65:49639), Ip(192.168.1.81:49639)} }\n*892|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 893|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 894|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 895|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1094|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1095|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1096|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1097|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1098|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1099|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1211|PAIR_MEET_UP:BS-Resources step=59449552 id=1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f addr=EndpointAddr { id: PublicKey(1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f), addrs: {Ip(100.68.35.65:56480), Ip(192.168.1.81:56480)} }\n*1212|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1213|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1214|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1215|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1351|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1352|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n\n[Showing lines 1-527 of 794 (49.8KB limit). Use :528 to continue]"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core","searchPath":"C:/Users/decid/AppData/Local/spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":200,"fileCount":15,"files":["C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","C:/Users/decid/AppData/Local/spt-core/identity/roster.json","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log.1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log.1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","count":4},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","count":12},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log.1","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log.1","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log.1","count":20}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/\n\n## identity/\n### peer-addrs.json\n  2│  \"addrs\": {\n *3│    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n *4│      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n  5│      \"addrs\": [\n  6│        {\n  7│          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n   │...\n 31│    },\n*32│    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n*33│      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 34│      \"addrs\": [\n 35│        {\n 36│          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n### roster.json\n  28│    {\n *29│      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n  30│      \"subnet\": \"SPT_DEV\",\n  31│      \"label\": \"ENLYZEAM\",\n  32│      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n  33│      \"address\": {\n *34│        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n  35│        \"addrs\": [\n  36│          {\n  37│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n    │...\n 118│    {\n*119│      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n 120│      \"subnet\": \"SPT_DEV\",\n 121│      \"label\": \"SCELTOUIN\",\n 122│      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n 123│      \"address\": {\n*124│        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n 125│        \"addrs\": [\n 126│          {\n 127│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n    │...\n 146│    {\n*147│      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 148│      \"subnet\": \"BIGNET\",\n 149│      \"label\": \"ENLYZEAM\",\n 150│      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 151│      \"address\": {\n*152│        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 153│        \"addrs\": [\n 154│          {\n 155│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n    │...\n 186│    {\n*187│      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 188│      \"subnet\": \"BIGNET\",\n 189│      \"label\": \"ENLYZEAM\",\n 190│      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 191│      \"address\": {\n*192│        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 193│        \"addrs\": [\n 194│          {\n 195│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n    │...\n 223│    {\n*224│      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 225│      \"subnet\": \"SPT_DEV\",\n 226│      \"label\": \"ENLYZEAM\",\n 227│      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 228│      \"address\": {\n*229│        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 230│        \"addrs\": [\n 231│          {\n 232│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n    │...\n 284│    {\n*285│      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 286│      \"subnet\": \"BIGNET\",\n 287│      \"stamp\": \"1783983420\"\n 288│    },\n 289│    {\n*290│      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 291│      \"subnet\": \"SPT_DEV\",\n 292│      \"stamp\": \"1783983420\"\n 293│    }\n\n### registry/\n#### BIGNET.json\n 223│    },\n*224│    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 225│      \"label\": \"ENLYZEAM\",\n 226│      \"epoch\": 445952\n 227│    }\n#### BS-Resources.json\n 227│    },\n*228│    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 229│      \"label\": \"ENLYZEAM\",\n 230│      \"epoch\": 443043\n 231│    },\n#### SPT_DEV.json\n 219│    },\n*220│    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 221│      \"label\": \"ENLYZEAM\",\n 222│      \"epoch\": 445951\n 223│    }\n#### heard.meta\n 4│  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n*5│  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n 6│  \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398\n 7│}\n\n## rca-active-20260709-222659/\n### daemon.stderr.active.log\n   6│PUMP_IPC_READER: spawned\n  *7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   8│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n   9│PEER_PUMP_FAIL: brain IPC read deadline elapsed\n  10│PEER_PUMP_RESTART: supervised restart in 10s\n    │...\n  35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n *36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  39│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  40│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n *45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  48│ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n  49│IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n  50│INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n  51│PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n *52│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *53│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  54│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  55│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n *60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  63│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  64│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n *69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  71│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  72│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  73│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n *77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n  79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  80│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  84│PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n *85│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *86│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  87│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  88│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  89│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  92│PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n *93│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  94│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  95│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  96│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  99│PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log\n   6│PUMP_IPC_READER: spawned\n  *7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   8│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n   9│PEER_PUMP_FAIL: brain IPC read deadline elapsed\n  10│PEER_PUMP_RESTART: supervised restart in 10s\n    │...\n  35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n *36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  39│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  40│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n *45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  48│ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n  49│IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n  50│INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n  51│PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n *52│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *53│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  54│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  55│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n *60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  63│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  64│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n *69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  71│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  72│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  73│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n *77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n  79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  80│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  84│PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n *85│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *86│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  87│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  88│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  89│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  92│PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n *93│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  94│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  95│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  96│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  99│PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log.1\n  136│PAIR_MEET_UP:SPT_DEV step=59449381 id=b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144 addr=EndpointAddr { id: PublicKey(b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144), addrs: {Ip(100.68.35.65:62365), Ip(192.168.1.81:62365)} }\n *137│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  138│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  139│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  140│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  266│PAIR_MEET_UP:BIGNET step=59449402 id=512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7 addr=EndpointAddr { id: PublicKey(512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7), addrs: {Ip(100.68.35.65:55427), Ip(192.168.1.81:55427)} }\n *267│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *268│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  269│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  270│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  271│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  389│PAIR_MEET_UP:BIGNET step=59449422 id=062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040 addr=EndpointAddr { id: PublicKey(062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040), addrs: {Ip(100.68.35.65:56295), Ip(192.168.1.81:56295)} }\n *390│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  391│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  392│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  393│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  505│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *506│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *507│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  508│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  509│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  510│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  622│PAIR_MEET_UP:BS-Resources step=59449460 id=3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c addr=EndpointAddr { id: PublicKey(3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c), addrs: {Ip(100.68.35.65:56381), Ip(192.168.1.81:56381)} }\n *623│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  624│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  625│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  626│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  744│PAIR_MEET_UP:SPT_DEV step=59449480 id=8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443 addr=EndpointAddr { id: PublicKey(8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443), addrs: {Ip(100.68.35.65:55855), Ip(192.168.1.81:55855)} }\n *745│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *746│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  747│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  748│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  749│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  891│PAIR_MEET_UP:BIGNET step=59449503 id=cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4 addr=EndpointAddr { id: PublicKey(cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4), addrs: {Ip(100.68.35.65:49639), Ip(192.168.1.81:49639)} }\n *892│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  893│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  894│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  895│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1094│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1095│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1096│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1097│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1098│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1099│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1211│PAIR_MEET_UP:BS-Resources step=59449552 id=1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f addr=EndpointAddr { id: PublicKey(1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f), addrs: {Ip(100.68.35.65:56480), Ip(192.168.1.81:56480)} }\n*1212│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1213│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1214│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1215│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1351│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1352│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1353│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1354│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1355│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1356│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1548│PAIR_MEET_UP:BS-Resources step=59449604 id=735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d addr=EndpointAddr { id: PublicKey(735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d), addrs: {Ip(100.68.35.65:53349), Ip(192.168.1.81:53349)} }\n*1549│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1550│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1551│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1552│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1682│PAIR_MEET_UP:BS-Resources step=59449626 id=1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c addr=EndpointAddr { id: PublicKey(1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c), addrs: {Ip(100.68.35.65:56149), Ip(192.168.1.81:56149)} }\n*1683│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1684│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1685│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1686│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1687│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1896│PAIR_MEET_UP:BS-Resources step=59449661 id=7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a addr=EndpointAddr { id: PublicKey(7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a), addrs: {Ip(100.68.35.65:51649), Ip(192.168.1.81:51649)} }\n*1897│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1898│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1899│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1900│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 2013│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*2014│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 2015│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2016│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2017│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n\n## rca-capture-20260709-215646/\n### daemon.stderr.log\n   6│PUMP_IPC_READER: spawned\n  *7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   8│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n   9│PEER_PUMP_FAIL: brain IPC read deadline elapsed\n  10│PEER_PUMP_RESTART: supervised restart in 10s\n    │...\n  35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n *36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  39│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  40│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n *45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  48│ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n  49│IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n  50│INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n  51│PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n *52│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *53│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  54│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  55│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n *60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  63│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  64│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n *69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  71│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  72│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  73│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n *77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n  79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  80│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  84│PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n *85│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *86│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  87│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  88│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  89│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  92│PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n *93│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  94│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  95│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  96│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  99│PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.pre.log\n   6│PUMP_IPC_READER: spawned\n  *7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   8│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n   9│PEER_PUMP_FAIL: brain IPC read deadline elapsed\n  10│PEER_PUMP_RESTART: supervised restart in 10s\n    │...\n  35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n *36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  39│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  40│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n *45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  48│ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n  49│IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n  50│INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n  51│PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n *52│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *53│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  54│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  55│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n *60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  63│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  64│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n *69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  71│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  72│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  73│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n *77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n  79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  80│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  84│PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n *85│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *86│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  87│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  88│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  89│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  92│PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n *93│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  94│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  95│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  96│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  99│PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log.1\n  136│PAIR_MEET_UP:SPT_DEV step=59449381 id=b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144 addr=EndpointAddr { id: PublicKey(b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144), addrs: {Ip(100.68.35.65:62365), Ip(192.168.1.81:62365)} }\n *137│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  138│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  139│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  140│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  266│PAIR_MEET_UP:BIGNET step=59449402 id=512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7 addr=EndpointAddr { id: PublicKey(512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7), addrs: {Ip(100.68.35.65:55427), Ip(192.168.1.81:55427)} }\n *267│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *268│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  269│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  270│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  271│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  389│PAIR_MEET_UP:BIGNET step=59449422 id=062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040 addr=EndpointAddr { id: PublicKey(062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040), addrs: {Ip(100.68.35.65:56295), Ip(192.168.1.81:56295)} }\n *390│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  391│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  392│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  393│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  505│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *506│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *507│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  508│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  509│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  510│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  622│PAIR_MEET_UP:BS-Resources step=59449460 id=3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c addr=EndpointAddr { id: PublicKey(3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c), addrs: {Ip(100.68.35.65:56381), Ip(192.168.1.81:56381)} }\n *623│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  624│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  625│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  626│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  744│PAIR_MEET_UP:SPT_DEV step=59449480 id=8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443 addr=EndpointAddr { id: PublicKey(8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443), addrs: {Ip(100.68.35.65:55855), Ip(192.168.1.81:55855)} }\n *745│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *746│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  747│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  748│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  749│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  891│PAIR_MEET_UP:BIGNET step=59449503 id=cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4 addr=EndpointAddr { id: PublicKey(cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4), addrs: {Ip(100.68.35.65:49639), Ip(192.168.1.81:49639)} }\n *892│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  893│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  894│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  895│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1094│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1095│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1096│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1097│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1098│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1099│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1211│PAIR_MEET_UP:BS-Resources step=59449552 id=1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f addr=EndpointAddr { id: PublicKey(1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f), addrs: {Ip(100.68.35.65:56480), Ip(192.168.1.81:56480)} }\n*1212│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1213│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1214│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1215│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1351│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1352│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1353│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1354│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1355│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1356│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1548│PAIR_MEET_UP:BS-Resources step=59449604 id=735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d addr=EndpointAddr { id: PublicKey(735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d), addrs: {Ip(100.68.35.65:53349), Ip(192.168.1.81:53349)} }\n*1549│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1550│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1551│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1552│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1682│PAIR_MEET_UP:BS-Resources step=59449626 id=1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c addr=EndpointAddr { id: PublicKey(1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c), addrs: {Ip(100.68.35.65:56149), Ip(192.168.1.81:56149)} }\n*1683│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1684│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1685│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1686│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1687│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1896│PAIR_MEET_UP:BS-Resources step=59449661 id=7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a addr=EndpointAddr { id: PublicKey(7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a), addrs: {Ip(100.68.35.65:51649), Ip(192.168.1.81:51649)} }\n*1897│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1898│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1899│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1900│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 2013│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*2014│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 2015│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2016│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2017│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n### daemon.stderr.pre.log.1\n  136│PAIR_MEET_UP:SPT_DEV step=59449381 id=b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144 addr=EndpointAddr { id: PublicKey(b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144), addrs: {Ip(100.68.35.65:62365), Ip(192.168.1.81:62365)} }\n *137│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  138│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  139│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  140│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  266│PAIR_MEET_UP:BIGNET step=59449402 id=512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7 addr=EndpointAddr { id: PublicKey(512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7), addrs: {Ip(100.68.35.65:55427), Ip(192.168.1.81:55427)} }\n *267│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *268│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  269│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  270│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  271│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  389│PAIR_MEET_UP:BIGNET step=59449422 id=062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040 addr=EndpointAddr { id: PublicKey(062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040), addrs: {Ip(100.68.35.65:56295), Ip(192.168.1.81:56295)} }\n *390│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  391│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  392│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  393│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  505│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *506│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *507│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  508│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  509│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  510│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  622│PAIR_MEET_UP:BS-Resources step=59449460 id=3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c addr=EndpointAddr { id: PublicKey(3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c), addrs: {Ip(100.68.35.65:56381), Ip(192.168.1.81:56381)} }\n *623│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  624│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  625│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  626│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  744│PAIR_MEET_UP:SPT_DEV step=59449480 id=8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443 addr=EndpointAddr { id: PublicKey(8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443), addrs: {Ip(100.68.35.65:55855), Ip(192.168.1.81:55855)} }\n *745│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n *746│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  747│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  748│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  749│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  891│PAIR_MEET_UP:BIGNET step=59449503 id=cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4 addr=EndpointAddr { id: PublicKey(cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4), addrs: {Ip(100.68.35.65:49639), Ip(192.168.1.81:49639)} }\n *892│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n  893│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  894│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  895│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1094│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1095│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1096│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1097│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1098│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1099│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1211│PAIR_MEET_UP:BS-Resources step=59449552 id=1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f addr=EndpointAddr { id: PublicKey(1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f), addrs: {Ip(100.68.35.65:56480), Ip(192.168.1.81:56480)} }\n*1212│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1213│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1214│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1215│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1351│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1352│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1353│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1354│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1355│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1356│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1548│PAIR_MEET_UP:BS-Resources step=59449604 id=735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d addr=EndpointAddr { id: PublicKey(735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d), addrs: {Ip(100.68.35.65:53349), Ip(192.168.1.81:53349)} }\n*1549│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1550│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1551│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1552│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1682│PAIR_MEET_UP:BS-Resources step=59449626 id=1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c addr=EndpointAddr { id: PublicKey(1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c), addrs: {Ip(100.68.35.65:56149), Ip(192.168.1.81:56149)} }\n*1683│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1684│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1685│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1686│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1687│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 1896│PAIR_MEET_UP:BS-Resources step=59449661 id=7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a addr=EndpointAddr { id: PublicKey(7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a), addrs: {Ip(100.68.35.65:51649), Ip(192.168.1.81:51649)} }\n*1897│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1898│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1899│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1900│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 2013│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*2014│PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 2015│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2016│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2017│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n\n## logs/\n### daemon.stderr.log\n    7│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n   *8│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   *9│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n   10│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n  *11│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   12│DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\n   13│DISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n   14│DISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\n     │...\n  734│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n *735│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *736│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *737│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  738│CONN_LIFECYCLE: conn=82 role=brain wall_ms=1783743875770 mono_ms=18836 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  739│CONN_LIFECYCLE: conn=83 role=brain wall_ms=1783743876772 mono_ms=19837 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  740│CONN_LIFECYCLE: conn=84 role=brain wall_ms=1783743877774 mono_ms=20839 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  809│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n *810│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  811│CONN_LIFECYCLE: conn=103 role=brain wall_ms=1783743894544 mono_ms=37610 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  812│CONN_LIFECYCLE: conn=103 role=brain wall_ms=1783743894545 mono_ms=37610 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n *813│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *814│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  815│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n  816│CONN_LIFECYCLE: conn=105 role=brain stream-subscriber stream=27 wall_ms=1783743895327 mono_ms=38393 event=stream-sub-attach stream=27 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n  817│CONN_LIFECYCLE: conn=105 role=brain stream-subscriber stream=27 wall_ms=1783743895327 mono_ms=38393 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  852│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n *853│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *854│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  855│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n  856│CONN_LIFECYCLE: conn=114 role=brain wall_ms=1783743909670 mono_ms=52736 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  857│CONN_LIFECYCLE: conn=114 role=brain wall_ms=1783743909671 mono_ms=52736 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  916│CONN_LIFECYCLE: conn=132 role=brain stream-subscriber stream=41 wall_ms=1783743933591 mono_ms=76657 event=stream-sub-attach stream=41 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n *917│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  918│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n *919│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  920│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n  921│CONN_LIFECYCLE: conn=132 role=brain stream-subscriber stream=41 wall_ms=1783743933898 mono_ms=76963 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n  922│CONN_LIFECYCLE: conn=133 role=brain wall_ms=1783743934883 mono_ms=77948 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  943│CONN_LIFECYCLE: conn=140 role=brain wall_ms=1783743950012 mono_ms=93078 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n *944│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  945│CONN_LIFECYCLE: conn=141 role=brain wall_ms=1783743955057 mono_ms=98122 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  946│CONN_LIFECYCLE: conn=141 role=brain wall_ms=1783743955057 mono_ms=98122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n  947│CONN_LIFECYCLE: conn=142 role=brain stream-subscriber stream=48 wall_ms=1783743955994 mono_ms=99059 event=stream-sub-attach stream=48 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  966│PAIR_MEET_UP:BIGNET step=59458132 id=53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8 addr=EndpointAddr { id: PublicKey(53b0242e9f89ec9693f54ca8d6dcd41727ac0e9af73f62b33ff52f4279a12ab8), addrs: {Ip(100.68.35.65:59035), Ip(192.168.1.81:59035)} }\n *967│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  968│CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n  969│CONN_LIFECYCLE: conn=147 role=brain wall_ms=1783743965144 mono_ms=108209 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n  970│CONN_LIFECYCLE: conn=148 role=brain stream-subscriber stream=50 wall_ms=1783743965841 mono_ms=108906 event=stream-sub-attach stream=50 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n  987│CONN_LIFECYCLE: conn=153 role=brain wall_ms=1783743975225 mono_ms=118290 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n *988│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  989│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\n *990│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  991│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n  992│CONN_LIFECYCLE: conn=154 role=brain stream-subscriber stream=52 wall_ms=1783743976991 mono_ms=120057 event=stream-sub-attach stream=52 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n  993│CONN_LIFECYCLE: conn=154 role=brain stream-subscriber stream=52 wall_ms=1783743976991 mono_ms=120057 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n 1035│CONN_LIFECYCLE: conn=166 role=brain wall_ms=1783743990352 mono_ms=133418 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*1036│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 1037│CONN_LIFECYCLE: conn=167 role=brain stream-subscriber stream=59 wall_ms=1783743993769 mono_ms=136834 event=stream-sub-attach stream=59 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n 1038│CONN_LIFECYCLE: conn=167 role=brain stream-subscriber stream=59 wall_ms=1783743993769 mono_ms=136835 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1039│CONN_WRITE_RETIRED: conn=167 role=brain stream-subscriber stream=59 wall_ms=1783743993769 mono_ms=136835 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\n     │...\n 1063│CONN_LIFECYCLE: conn=175 role=brain stream-subscriber stream=63 wall_ms=1783744007124 mono_ms=150189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*1064│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 1065│CONN_LIFECYCLE: conn=176 role=brain wall_ms=1783744010518 mono_ms=153584 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1066│CONN_LIFECYCLE: conn=176 role=brain wall_ms=1783744010519 mono_ms=153584 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1067│CONN_LIFECYCLE: conn=177 role=brain stream-subscriber stream=64 wall_ms=1783744011053 mono_ms=154118 event=stream-sub-attach stream=64 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n     │...\n 1100│CONN_LIFECYCLE: conn=186 role=brain wall_ms=1783744020601 mono_ms=163667 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n*1101│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 1102│CONN_LIFECYCLE: conn=187 role=brain wall_ms=1783744025641 mono_ms=168706 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n 1103│CONN_LIFECYCLE: conn=187 role=brain wall_ms=1783744025641 mono_ms=168707 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n 1104│CONN_LIFECYCLE: conn=188 role=brain stream-subscriber stream=70 wall_ms=1783744026129 mono_ms=169194 event=stream-sub-attach stream=70 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n### daemon.stderr.log.1\n   6│PUMP_IPC_READER: spawned\n  *7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n   8│PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n   9│PEER_PUMP_FAIL: brain IPC read deadline elapsed\n  10│PEER_PUMP_RESTART: supervised restart in 10s\n    │...\n  35│PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n *36│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *37│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *38│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  39│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  40│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  41│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  44│PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n *45│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *46│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *47│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  48│ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n  49│IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n  50│INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n  51│PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n *52│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *53│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n  54│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  55│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  56│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  59│PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n *60│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *61│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n *62│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  63│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  64│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  65│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  68│PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n *69│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *70│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  71│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  72│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  73│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  76│PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n *77│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *78│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n  79│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  80│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  81│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  84│PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n *85│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *86│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  87│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  88│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  89│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  92│PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n *93│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  94│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  95│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  96│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n    │...\n  99│PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100│PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)","truncation":{"content":"# C:/Users/decid/AppData/Local/spt-core/\n\n## identity/\n### peer-addrs.json\n 2|  \"addrs\": {\n*3|    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n*4|      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 5|      \"addrs\": [\n 6|        {\n 7|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 31|    },\n*32|    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n*33|      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 34|      \"addrs\": [\n 35|        {\n 36|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n### roster.json\n 28|    {\n*29|      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 30|      \"subnet\": \"SPT_DEV\",\n 31|      \"label\": \"ENLYZEAM\",\n 32|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 33|      \"address\": {\n*34|        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 35|        \"addrs\": [\n 36|          {\n 37|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 118|    {\n*119|      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n 120|      \"subnet\": \"SPT_DEV\",\n 121|      \"label\": \"SCELTOUIN\",\n 122|      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n 123|      \"address\": {\n*124|        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n 125|        \"addrs\": [\n 126|          {\n 127|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 146|    {\n*147|      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 148|      \"subnet\": \"BIGNET\",\n 149|      \"label\": \"ENLYZEAM\",\n 150|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 151|      \"address\": {\n*152|        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n 153|        \"addrs\": [\n 154|          {\n 155|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 186|    {\n*187|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 188|      \"subnet\": \"BIGNET\",\n 189|      \"label\": \"ENLYZEAM\",\n 190|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 191|      \"address\": {\n*192|        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 193|        \"addrs\": [\n 194|          {\n 195|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 223|    {\n*224|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 225|      \"subnet\": \"SPT_DEV\",\n 226|      \"label\": \"ENLYZEAM\",\n 227|      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n 228|      \"address\": {\n*229|        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 230|        \"addrs\": [\n 231|          {\n 232|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 284|    {\n*285|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 286|      \"subnet\": \"BIGNET\",\n 287|      \"stamp\": \"1783983420\"\n 288|    },\n 289|    {\n*290|      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n 291|      \"subnet\": \"SPT_DEV\",\n 292|      \"stamp\": \"1783983420\"\n 293|    }\n\n### registry/\n#### BIGNET.json\n 223|    },\n*224|    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 225|      \"label\": \"ENLYZEAM\",\n 226|      \"epoch\": 445952\n 227|    }\n#### BS-Resources.json\n 227|    },\n*228|    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 229|      \"label\": \"ENLYZEAM\",\n 230|      \"epoch\": 443043\n 231|    },\n#### SPT_DEV.json\n 219|    },\n*220|    \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {\n 221|      \"label\": \"ENLYZEAM\",\n 222|      \"epoch\": 445951\n 223|    }\n#### heard.meta\n 4|  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n*5|  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n 6|  \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398\n 7|}\n\n## rca-active-20260709-222659/\n### daemon.stderr.active.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log.1\n 136|PAIR_MEET_UP:SPT_DEV step=59449381 id=b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144 addr=EndpointAddr { id: PublicKey(b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144), addrs: {Ip(100.68.35.65:62365), Ip(192.168.1.81:62365)} }\n*137|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 138|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 139|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 140|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 266|PAIR_MEET_UP:BIGNET step=59449402 id=512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7 addr=EndpointAddr { id: PublicKey(512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7), addrs: {Ip(100.68.35.65:55427), Ip(192.168.1.81:55427)} }\n*267|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*268|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 269|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 270|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 271|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 389|PAIR_MEET_UP:BIGNET step=59449422 id=062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040 addr=EndpointAddr { id: PublicKey(062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040), addrs: {Ip(100.68.35.65:56295), Ip(192.168.1.81:56295)} }\n*390|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 391|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 392|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 393|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 505|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*506|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*507|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 508|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 509|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 510|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 622|PAIR_MEET_UP:BS-Resources step=59449460 id=3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c addr=EndpointAddr { id: PublicKey(3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c), addrs: {Ip(100.68.35.65:56381), Ip(192.168.1.81:56381)} }\n*623|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 624|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 625|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 626|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 744|PAIR_MEET_UP:SPT_DEV step=59449480 id=8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443 addr=EndpointAddr { id: PublicKey(8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443), addrs: {Ip(100.68.35.65:55855), Ip(192.168.1.81:55855)} }\n*745|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*746|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 747|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 748|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 749|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 891|PAIR_MEET_UP:BIGNET step=59449503 id=cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4 addr=EndpointAddr { id: PublicKey(cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4), addrs: {Ip(100.68.35.65:49639), Ip(192.168.1.81:49639)} }\n*892|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 893|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 894|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 895|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1094|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1095|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1096|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1097|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1098|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1099|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1211|PAIR_MEET_UP:BS-Resources step=59449552 id=1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f addr=EndpointAddr { id: PublicKey(1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f), addrs: {Ip(100.68.35.65:56480), Ip(192.168.1.81:56480)} }\n*1212|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1213|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1214|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1215|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1351|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1352|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1353|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1354|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1355|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1356|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1548|PAIR_MEET_UP:BS-Resources step=59449604 id=735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d addr=EndpointAddr { id: PublicKey(735c693dcb0b9ffbc1696196a078e4f36574bcade49922e0b70e623a471e794d), addrs: {Ip(100.68.35.65:53349), Ip(192.168.1.81:53349)} }\n*1549|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1550|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1551|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1552|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1682|PAIR_MEET_UP:BS-Resources step=59449626 id=1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c addr=EndpointAddr { id: PublicKey(1dcde55bc5aecf2a7fa936a2850a3286b285d771a7be910fca16de7250be1a7c), addrs: {Ip(100.68.35.65:56149), Ip(192.168.1.81:56149)} }\n*1683|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1684|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1685|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1686|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1687|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1896|PAIR_MEET_UP:BS-Resources step=59449661 id=7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a addr=EndpointAddr { id: PublicKey(7a3283e9bf62b75d530f4a63b7ccea3932f3469b47312d31cc836fcd6b3a927a), addrs: {Ip(100.68.35.65:51649), Ip(192.168.1.81:51649)} }\n*1897|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1898|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1899|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1900|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 2013|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*2014|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 2015|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2016|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 2017|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n\n## rca-capture-20260709-215646/\n### daemon.stderr.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.pre.log\n 6|PUMP_IPC_READER: spawned\n*7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 8|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\n 9|PEER_PUMP_FAIL: brain IPC read deadline elapsed\n 10|PEER_PUMP_RESTART: supervised restart in 10s\n...\n 35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }\n*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*37|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*38|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 39|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 40|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 41|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 44|PAIR_MEET_UP:SPT_DEV step=59454596 id=e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5 addr=EndpointAddr { id: PublicKey(e28139ecad1c2601d9ef06bcddc5d77b46797cd61b0624e1ea7076fe011686c5), addrs: {Ip(100.68.35.65:55115), Ip(192.168.1.81:55115)} }\n*45|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*46|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*47|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 48|ENDPOINT_INJECT:deployah (309 bytes → translation binary)\n 49|IDLE_PARKED_DRAIN:deployah: injected 1 parked message(s) via translation binary\n 50|INJECT_SETTLE_TIMEOUT:deployah: no PTY readiness echo within 400ms — proceeding (echo-verify guards head loss)\n 51|PSYCHE_TURN_FAIL:doyle (strike 1/3): turn: psyche turn runtime: bounded invocation timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt\n*52|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*53|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n 54|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 55|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 56|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 59|PAIR_MEET_UP:BIGNET step=59454597 id=22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1 addr=EndpointAddr { id: PublicKey(22ef241b0df554b3c10a4429a823baec7545d7382d3c5bd8c00a9113cb164aa1), addrs: {Ip(100.68.35.65:63566), Ip(192.168.1.81:63566)} }\n*60|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*61|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n*62|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 63|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 64|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 65|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 68|PAIR_MEET_UP:BS-Resources step=59454598 id=fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9 addr=EndpointAddr { id: PublicKey(fb6ca2ace60f9de8d5857e98c8a817aa6e7d90e596f60f06e38cfc9be161a8a9), addrs: {Ip(100.68.35.65:49163), Ip(192.168.1.81:49163)} }\n*69|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*70|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 71|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 72|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 73|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 76|PAIR_MEET_UP:BIGNET step=59454599 id=7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90 addr=EndpointAddr { id: PublicKey(7c6fc3ec129ff61d3ed9735c60352c6052ea6d763a75d1f06656c6525c735b90), addrs: {Ip(100.68.35.65:49367), Ip(192.168.1.81:49367)} }\n*77|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*78|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:connect failed: No addressing information available\n 79|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }\n*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*86|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 87|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 88|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 89|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 92|PAIR_MEET_UP:BS-Resources step=59454601 id=a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe addr=EndpointAddr { id: PublicKey(a5484aa1dffdd0f7149e6392b9bd4e893b287091579ebca2c5e185f9f58beafe), addrs: {Ip(100.68.35.65:55411), Ip(192.168.1.81:55411)} }\n*93|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 94|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 95|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 96|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 99|PAIR_MEET_UP:SPT_DEV step=59454602 id=f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8 addr=EndpointAddr { id: PublicKey(f23a593872dc45919a7886260e34c5ebec5efee57a467f3f798f3240aab263f8), addrs: {Ip(100.68.35.65:64738), Ip(192.168.1.81:64738)} }\n*100|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\n### daemon.stderr.log.1\n 136|PAIR_MEET_UP:SPT_DEV step=59449381 id=b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144 addr=EndpointAddr { id: PublicKey(b9d165565eb60dfac026c376b63898e70a31e98e735621ceabab8f7a260ce144), addrs: {Ip(100.68.35.65:62365), Ip(192.168.1.81:62365)} }\n*137|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 138|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 139|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 140|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 266|PAIR_MEET_UP:BIGNET step=59449402 id=512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7 addr=EndpointAddr { id: PublicKey(512473ab57c0b2ee29909d08eee38c268018fd6702c06bfe156f6232b3dfd1c7), addrs: {Ip(100.68.35.65:55427), Ip(192.168.1.81:55427)} }\n*267|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*268|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 269|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 270|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 271|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 389|PAIR_MEET_UP:BIGNET step=59449422 id=062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040 addr=EndpointAddr { id: PublicKey(062b7beaae5a3b5c83004b683092b2f39793ce3031815adf0cfa5e6ebe093040), addrs: {Ip(100.68.35.65:56295), Ip(192.168.1.81:56295)} }\n*390|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 391|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 392|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 393|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 505|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*506|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*507|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 508|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 509|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 510|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 622|PAIR_MEET_UP:BS-Resources step=59449460 id=3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c addr=EndpointAddr { id: PublicKey(3053b2c467e011fbf5558b2cfdfa39cbc865d06dc2efa9892dc196bdb766e87c), addrs: {Ip(100.68.35.65:56381), Ip(192.168.1.81:56381)} }\n*623|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 624|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 625|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 626|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 744|PAIR_MEET_UP:SPT_DEV step=59449480 id=8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443 addr=EndpointAddr { id: PublicKey(8c5d9bf40bc467ce8b167256c282922ac527c5e952d30e50d090330313a59443), addrs: {Ip(100.68.35.65:55855), Ip(192.168.1.81:55855)} }\n*745|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*746|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 747|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 748|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 749|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 891|PAIR_MEET_UP:BIGNET step=59449503 id=cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4 addr=EndpointAddr { id: PublicKey(cac0047e29e20eace1cf7829390d4821c54893a39532075ac5b9e980aa6504b4), addrs: {Ip(100.68.35.65:49639), Ip(192.168.1.81:49639)} }\n*892|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 893|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 894|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 895|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1094|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1095|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1096|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:net-stream-open failed: broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1097|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1098|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1099|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1211|PAIR_MEET_UP:BS-Resources step=59449552 id=1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f addr=EndpointAddr { id: PublicKey(1aec44105d14b1db5ec7e78722be52d7222e46d05af0aa8252f7abecacc5d88f), addrs: {Ip(100.68.35.65:56480), Ip(192.168.1.81:56480)} }\n*1212|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n 1213|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1214|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 1215|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 1351|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error\n*1352|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) — failing as an ordinary per-peer error","truncated":true,"truncatedBy":"bytes","totalLines":794,"totalBytes":82449,"outputLines":527,"outputBytes":51026,"lastLinePartial":false,"firstLineExceedsLimit":false},"meta":{"truncation":{"direction":"head","truncatedBy":"bytes","totalLines":794,"totalBytes":82449,"outputLines":527,"outputBytes":51026,"shownRange":{"start":1,"end":527},"nextOffset":528}}},"isError":false,"timestamp":1784069127869}}
{"type":"message","id":"9fcd6239","parentId":"44d62cb2","timestamp":"2026-07-14T22:45:28.702Z","message":{"role":"toolResult","toolCallId":"call_i2Aj9hjv1IQ7uf3tTRMUZpQF|fc_050f56f290a937ae016a56bc078f808196b74be529109264c9","toolName":"glob","content":[{"type":"text","text":"# spt-shell-notify/src/\nmain.rs\n# claude_skill_owl/src/\ncli.rs\nmain.rs\nlib.rs\n## owl/\necho_commune.rs\nmod.rs\nresume.rs\ndoctor.rs\npsyche_sync_setup.rs\nlist.rs\nring.rs\npoll.rs\nhook_subagent_start.rs\nsync_prompt.rs\nplugin_session_start.rs\nhook_prompt.rs\nsend.rs\nhook_check.rs\nhook_idle.rs\ncleanup.rs\nstop.rs\nlist_working.rs\nhook_subagent_stop.rs\nversion_changelog.rs\nprimer.rs\nreboot.rs\nnew_alarm.rs\nwhoami.rs\nsetup.rs\ngsd_setup.rs\n## live/\nlist_psyches.rs\nstart.rs\nlist.rs\ncommune.rs\nstop.rs\nboot_spine.rs\ntouch_loop.rs\nsignoff.rs\nfork.rs\nmod.rs\ncontext.rs\npick_spec.rs\npulse_wait.rs\n### wrapper/\nmod.rs\necho_fire.rs\norphan.rs\nlifecycle.rs\nclaude.rs\n## common/\nlist_filter.rs\nsync.rs\ngit.rs\nowlery.rs\ntracked.rs\nlistener.rs\nhook_output.rs\nmod.rs\nprocess.rs\ntypes.rs\noutcomes.rs\nwrapper_state.rs\nspool.rs\ninbox.rs\nperch_path.rs\noutput.rs\nenvelope.rs\ntime.rs\nhandoff.rs\nagent_ids.rs\nwin_spawn.rs\ntrace.rs\nresolve.rs\npsmux.rs\nregistry.rs\nid_validate.rs\nauto_setup.rs\nprotocol.rs\n# vmulti-client-testing/src/\nmain.rs\n# playdial/src/\nmain.rs\n# oship/src/\nmain.rs\n# _3functions/src/\nmain.rs"}],"details":{"scopePath":".","fileCount":80,"files":["spt-shell-notify/src/main.rs","claude_skill_owl/src/owl/echo_commune.rs","claude_skill_owl/src/owl/mod.rs","claude_skill_owl/src/live/wrapper/mod.rs","claude_skill_owl/src/live/wrapper/echo_fire.rs","claude_skill_owl/src/cli.rs","claude_skill_owl/src/common/list_filter.rs","claude_skill_owl/src/owl/resume.rs","claude_skill_owl/src/live/list_psyches.rs","claude_skill_owl/src/owl/doctor.rs","claude_skill_owl/src/common/sync.rs","claude_skill_owl/src/common/git.rs","claude_skill_owl/src/common/owlery.rs","claude_skill_owl/src/owl/psyche_sync_setup.rs","claude_skill_owl/src/common/tracked.rs","claude_skill_owl/src/owl/list.rs","claude_skill_owl/src/owl/ring.rs","claude_skill_owl/src/owl/poll.rs","claude_skill_owl/src/owl/hook_subagent_start.rs","claude_skill_owl/src/live/start.rs","claude_skill_owl/src/live/list.rs","claude_skill_owl/src/common/listener.rs","claude_skill_owl/src/common/hook_output.rs","claude_skill_owl/src/owl/sync_prompt.rs","claude_skill_owl/src/owl/plugin_session_start.rs","claude_skill_owl/src/common/mod.rs","claude_skill_owl/src/owl/hook_prompt.rs","claude_skill_owl/src/common/process.rs","claude_skill_owl/src/common/types.rs","claude_skill_owl/src/owl/send.rs","claude_skill_owl/src/owl/hook_check.rs","claude_skill_owl/src/live/commune.rs","claude_skill_owl/src/common/outcomes.rs","claude_skill_owl/src/live/wrapper/orphan.rs","claude_skill_owl/src/owl/hook_idle.rs","claude_skill_owl/src/live/stop.rs","claude_skill_owl/src/live/boot_spine.rs","claude_skill_owl/src/live/touch_loop.rs","claude_skill_owl/src/live/signoff.rs","claude_skill_owl/src/owl/cleanup.rs","claude_skill_owl/src/live/wrapper/lifecycle.rs","claude_skill_owl/src/live/wrapper/claude.rs","claude_skill_owl/src/common/wrapper_state.rs","claude_skill_owl/src/common/spool.rs","claude_skill_owl/src/common/inbox.rs","claude_skill_owl/src/common/perch_path.rs","claude_skill_owl/src/live/fork.rs","claude_skill_owl/src/live/mod.rs","claude_skill_owl/src/common/output.rs","claude_skill_owl/src/live/context.rs","claude_skill_owl/src/common/envelope.rs","claude_skill_owl/src/owl/stop.rs","claude_skill_owl/src/owl/list_working.rs","claude_skill_owl/src/owl/hook_subagent_stop.rs","claude_skill_owl/src/live/pick_spec.rs","claude_skill_owl/src/common/time.rs","claude_skill_owl/src/owl/version_changelog.rs","claude_skill_owl/src/owl/primer.rs","claude_skill_owl/src/common/handoff.rs","claude_skill_owl/src/owl/reboot.rs","claude_skill_owl/src/owl/new_alarm.rs","claude_skill_owl/src/common/agent_ids.rs","claude_skill_owl/src/owl/whoami.rs","claude_skill_owl/src/owl/setup.rs","claude_skill_owl/src/main.rs","claude_skill_owl/src/live/pulse_wait.rs","claude_skill_owl/src/common/win_spawn.rs","claude_skill_owl/src/common/trace.rs","claude_skill_owl/src/common/resolve.rs","claude_skill_owl/src/common/psmux.rs","claude_skill_owl/src/common/registry.rs","claude_skill_owl/src/common/id_validate.rs","claude_skill_owl/src/common/auto_setup.rs","claude_skill_owl/src/lib.rs","claude_skill_owl/src/common/protocol.rs","claude_skill_owl/src/owl/gsd_setup.rs","vmulti-client-testing/src/main.rs","playdial/src/main.rs","oship/src/main.rs","_3functions/src/main.rs"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069128702}}
{"type":"message","id":"a4889a9c","parentId":"9fcd6239","timestamp":"2026-07-14T22:45:41.187Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating log file inconsistencies**\n\n**Planning diagnostics JSON inspection**"},{"type":"toolCall","id":"call_h0oZPVeksJ8dJvH96gHCAI35|fc_050f56f290a937ae016a56bc1511b08196a1e6bd52eba087c8","name":"glob","arguments":{"i":"Listing prior RCA captures","path":"C:/Users/decid/AppData/Local/spt-core/rca-*/*","hidden":true,"gitignore":false,"limit":200}},{"type":"toolCall","id":"call_4VNjOmYbEJ7VyshJIhNA3lM3|fc_050f56f290a937ae016a56bc1511c08196a29a6d0159156841","name":"grep","arguments":{"i":"Locating peer address writer","pattern":"peer-addrs|peer_addrs|PeerAddrs|address_book|addr.*insert","path":"C:/Users/decid/Documents/projects/spt-core/crates","selector":null,"case":false,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_gt3EEVO5MXXCIAs4NPoQOjpL|fc_050f56f290a937ae016a56bc1511c48196b5dbb56602f804ce","name":"grep","arguments":{"i":"Locating status health logic","pattern":"net_up|DaemonStatus|daemon status|pump-heartbeat|pump_heartbeat|subnet.*status","path":"C:/Users/decid/Documents/projects/spt-core/crates","selector":null,"case":false,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_a8LXcvC6ZQQar5M9mVVfvKkf|fc_050f56f290a937ae016a56bc1511cc8196bfe268d994863dfe","name":"grep","arguments":{"i":"Locating pump failure logic","pattern":"PUMP_PEER_FAIL|PEER_PUMP_FAIL|submit-dial|No addressing information|peer reply-read","path":"C:/Users/decid/Documents/projects/spt-core/crates","selector":null,"case":true,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_asHN72EXrJ6bdHNilEBjRj5S|fc_050f56f290a937ae016a56bc1511d08196958e2062d141c6ea","name":"grep","arguments":{"i":"Finding prior isolation notes","pattern":"(?i)(isolation|sequester|peer-addrs|empty node|subnet status|HFENDULEAM|ENLYZEAM)","path":"C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":30163,"output":607,"cacheRead":89600,"cacheWrite":0,"totalTokens":120370,"reasoningTokens":223,"cost":{"input":0.150815,"output":0.01821,"cacheRead":0.0448,"cacheWrite":0,"total":0.21382500000000002}},"stopReason":"toolUse","timestamp":1784069128744,"responseId":"resp_050f56f290a937ae016a56bc08e1d0819693f3f39d7f27dc20","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc0a0bc08196960a88a8b3809c52","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrwVxePUCky4F7TRoEbIkFieHE-Z1fPTbPjCMnmSsQTEdsN3qPKCmV1dSwNhzWNwosV5XjC2lN0umf4ouVK7iqQilShRsIJG09kXnkkGvUrb3Omn6nmCt4gPZiAbwRt_38nJKvOLgV2-SxNWflZo_kxF61hNq9tdYoCbrInpFbT8meZXmK8vCzpy-x1AfX9xGpQZX9at6gNDsdLWyxKnVCXjkSRtTiVlynCNbbZ_tqtneATQP0-ufpQtu_fiUFuQUkwHZhvG_MU_SHwTjb0dtfN03GPedpWRdL-tTNUa0w1XphdrrthtdtjGA4-kgfx7l_4uilsJXHJbEKHsCG743vXiwxioUfON2yGxZYl4Xzvqef9c6e7O5jld7vxtnBEB4Az1FeW42gswPP7phIYoXvf_eo4NVchFjlsICN4pxoXT0WjUx4TeRKpFHBofNAK2i98MHgQI3IOU6nUD830k_H6zuU8P0a40EGfiwXMgJmI9U5SryItYpgORewOkJ5AzFUE0Un0ErwTKbta9ILV9nt1zCrZmXH3wku_LA_NxgkSg97YBfLyrCgQvJRHmKpien5xGKMOF4JhzTHBdSTw_1-benFQJeX3ZGG0hFrfRPjx6gbBYi4NivpBfhj3RJLHjZ53fXeGevckG5jMFcmxamY7Y6ChZ9iuu5LMcjkHCnXFWQnzFU5nDE4eGmeMEdCKGIjbLY7Ta1x4-wbkoRapWi48byPL5H0zPnr4rJRBbjCt2hmtlgLVQfiptkGTCmCSJ0ady7_Ip3CfaQP-w4uiLxKdoh6VPTtg_Vk3lsCRgvhPgwz-KFMZ2TMnWcaZ0HDGGhVsWCYTrb8wNeZLoWvzN4PLtDMbXKG8hzAeqaQMbUmPMlDlfdwBggXqD9v0ND4889gtrHSQg-5jDn4iRzl_0-Y6i_L2IN09GOP81E38XtbMz1tQj9piIOeRDSnLT6EJVr-YW1AtGKL1Ol9m91pDysZCCqwCS8cur4C3Y7DqhfKqnO9zyxmUasxcEqqk0J2JOu-mOy2XR7i5NyGcMJY9aXmoxTz3jj-hGzxAh9puSjbK0K1eUpAPHGwdCG-Du0m2oJ9eSDNDUFDzFXOOQig_gvoTVI_8mdaNRGe9XeZXySrWhhAnsCy1Ns-LvXknyC0RefpZOpKcoRqXg2cNO4Pc1HMPMcfKnb2kuA05djk9G04qQL6lA9HbOm5DOu2jjFZijRoehiRUpvcfOv1MaSXJuFBWj_0K01wbJVaRKssQxI-50VxtlVXqbWGeQi_OiJ3fRGIXJ5V-RQ9L7k6zcu-pz5_BzgK50x_UYuNYDboUyoYS1ferRlfjVuo7ND8Io4FR7RD2HlPeDING08wkTc1hx7rNMBSyhu80t4ewwcS_7JHuBOPwfHBs5DPKX1hFt54Li3gnLs0rQHGlcTZrFDme176PuR0z5ypLCGyOw5FruIZpM5Tz4r2xWPVUsWglXi9eHHIpY41KkPZl8EUKOtvr4Cltxcwto8fH-p_KsqPQawJBSbWZ3R8BqXPYa6o5DNxLdgGzFrDWf_KwxHIlA8B0kdnICKI-eNAAxSreJl6HhtgicEvrjyc8-ArNwhgxSQ8xpflkrmgE3ZNltMMrrYRQyyzORgErQftCmyCKiziG5h_vakyn-XhnJV3WDH5JSLE95-RCK5J1U_TJmQHFhXZ4qfoBPgNanMGMgZqPCDYZEc1zuL7Oxhaj7KO4Yw1nX-G-P4sCYkDZfrQ2z9ogRPR24SZirHVknz2IWXF4O-amQgHqngBmBoOCp1J9gbI8tTdwO2-4KwvwOYNHbk7ZxPHAQlIDBKp32yIKTL4cBY3n0TOHcSiolBZusGGMZbl_uHCniLaTIkDR1lo93t4Dhxu9aNE-AJYMPHPdVzFWX5l48wWl8gdOBsRdCVC8zgHIvDJ-4KU_E42KKIULgopyulVu2v_vM-ifyBLGSJqczUPN5iJvnlzxdjNizySWRoQoGKroayQvQ033J08YAddiYbdJqeNNghWPYSXiaIEkYbf6yaTT4kOnN0v9v7ii-wlSvYtq4nNFbo4NTZTmoobXi-ZSMfYO2Bobb97j8L4cx2pNGBJ82FsIn4PeWvnzSC0WfhpJt49tJSlW-P6ZsJ6TjjM6Lq_2ENVvHkckb7P91h58yr192CMpvaiZj0DKeDf5xTaW2pVdh36BMwbbmkjroP9Vtw-NxIg==","summary":[{"type":"summary_text","text":"**Investigating log file inconsistencies**"},{"type":"summary_text","text":"**Planning diagnostics JSON inspection**"}]},{"id":"fc_050f56f290a937ae016a56bc1511b08196a1e6bd52eba087c8","type":"function_call","status":"completed","arguments":"{\"i\":\"Listing prior RCA captures\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-*/*\",\"hidden\":true,\"gitignore\":false,\"limit\":200}","call_id":"call_h0oZPVeksJ8dJvH96gHCAI35","name":"glob"},{"id":"fc_050f56f290a937ae016a56bc1511c08196a29a6d0159156841","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating peer address writer\",\"pattern\":\"peer-addrs|peer_addrs|PeerAddrs|address_book|addr.*insert\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_4VNjOmYbEJ7VyshJIhNA3lM3","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc1511c48196b5dbb56602f804ce","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating status health logic\",\"pattern\":\"net_up|DaemonStatus|daemon status|pump-heartbeat|pump_heartbeat|subnet.*status\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_gt3EEVO5MXXCIAs4NPoQOjpL","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc1511cc8196bfe268d994863dfe","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating pump failure logic\",\"pattern\":\"PUMP_PEER_FAIL|PEER_PUMP_FAIL|submit-dial|No addressing information|peer reply-read\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_a8LXcvC6ZQQar5M9mVVfvKkf","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc1511d08196958e2062d141c6ea","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding prior isolation notes\",\"pattern\":\"(?i)(isolation|sequester|peer-addrs|empty node|subnet status|HFENDULEAM|ENLYZEAM)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_asHN72EXrJ6bdHNilEBjRj5S","name":"grep"}]},"duration":12442.59810000658,"ttft":1344.7344000339508,"contextSnapshot":{"promptTokens":119763,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_h0oZPVeksJ8dJvH96gHCAI35|fc_050f56f290a937ae016a56bc1511b08196a1e6bd52eba087c8","toolName":"glob","startedAt":"2026-07-14T22:45:41.187Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-*/*"},"intent":"Listing prior RCA captures"},"id":"a89fd1a2","parentId":"a4889a9c","timestamp":"2026-07-14T22:45:41.187Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_4VNjOmYbEJ7VyshJIhNA3lM3|fc_050f56f290a937ae016a56bc1511c08196a29a6d0159156841","toolName":"grep","startedAt":"2026-07-14T22:45:41.187Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates"},"intent":"Locating peer address writer"},"id":"18b7d999","parentId":"a89fd1a2","timestamp":"2026-07-14T22:45:41.187Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_gt3EEVO5MXXCIAs4NPoQOjpL|fc_050f56f290a937ae016a56bc1511c48196b5dbb56602f804ce","toolName":"grep","startedAt":"2026-07-14T22:45:41.188Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates"},"intent":"Locating status health logic"},"id":"8010f0c5","parentId":"18b7d999","timestamp":"2026-07-14T22:45:41.188Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_a8LXcvC6ZQQar5M9mVVfvKkf|fc_050f56f290a937ae016a56bc1511cc8196bfe268d994863dfe","toolName":"grep","startedAt":"2026-07-14T22:45:41.188Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates"},"intent":"Locating pump failure logic"},"id":"60a781c1","parentId":"8010f0c5","timestamp":"2026-07-14T22:45:41.188Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_asHN72EXrJ6bdHNilEBjRj5S|fc_050f56f290a937ae016a56bc1511d08196958e2062d141c6ea","toolName":"grep","startedAt":"2026-07-14T22:45:41.188Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Finding prior isolation notes"},"id":"150059d9","parentId":"60a781c1","timestamp":"2026-07-14T22:45:41.188Z"}
{"type":"message","id":"3a6a0849","parentId":"150059d9","timestamp":"2026-07-14T22:45:41.218Z","message":{"role":"toolResult","toolCallId":"call_a8LXcvC6ZQQar5M9mVVfvKkf|fc_050f56f290a937ae016a56bc1511cc8196bfe268d994863dfe","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-daemon/\n\n### src/\n#### brain.rs\n 772|                }\n*773|                // The bare ack for a non-blocking submit-dial (PUMP-TRUTH W2) —\n 774|                // null payload; the dial's outcome rides the presence stream.\n 775|                // [impl->REQ-PUMP-PEER-ISOLATION]\n 776|                KIND_NET_DIAL_SUBMITTED => return Ok(BrokerEvent::NetDialSubmitted),\n...\n 1753|        io::Error::other(format!(\n*1754|            \"peer reply-read: no progress within budget — dropping peer ({e})\"\n 1755|        ))\n 1756|    } else {\n 1757|        e\n#### nethost.rs\n 585|    // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a\n*586|    // non-blocking submit-dial seeds `peer-addrs.json` like the blocking reply\n 587|    // did (id-only / path-less → `null`, nothing worth seeding).\n 588|    let observed = observed_addr_json(&conn);\n 589|    shared\n...\n 1138|                    Err(_elapsed) => Err(io::Error::other(format!(\n*1139|                        \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"\n 1140|                    ))),\n 1141|                }\n 1142|            }\n\n#### pump/\n##### mod.rs\n 637|                        Err(e) => {\n*638|                            eprintln!(\"PUMP_PEER_FAIL:{peer_hex}:{e}\");\n 639|                            let prev = sched.get(peer_hex).copied();\n 640|                            sched.insert(peer_hex.clone(), next_peer_backoff(prev, round_start));\n 641|                        }\n...\n 748|        Err(e) => {\n*749|            eprintln!(\"PUMP_PEER_FAIL:{peer_hex}:{e}\");\n 750|            conns.remove(peer_hex); // ordinary per-peer failure → drop conn\n 751|            let prev = sched.get(peer_hex).copied();\n 752|            sched.insert(peer_hex.to_string(), next_peer_backoff(prev, now)); // + back off (Q3)\n...\n 870|            eprintln!(\n*871|                \"PUMP_PEER_FAIL:{}:{}\",\n 872|                ev.remote_id_hex,\n 873|                ev.reason.as_deref().unwrap_or(\"dial failed\")\n 874|            );\n...\n 1040|/// decision 23, REQ-DAEMON-5): a panic is CAUGHT and logged loud\n*1041|/// (`PEER_PUMP_PANIC`), an error return logged (`PEER_PUMP_FAIL`), and the\n 1042|/// body restarts after a capped, doubling backoff — a 5.9-class pump death\n 1043|/// self-heals visibly instead of silently halving the daemon for 24 h.\n 1044|/// `base` is the backoff floor (production: [`SUPERVISE_BACKOFF_BASE`];\n...\n 1061|            Ok(Ok(())) => eprintln!(\"PEER_PUMP_EXIT: loop returned without stop — restarting\"),\n*1062|            Ok(Err(e)) => eprintln!(\"PEER_PUMP_FAIL: {e}\"),\n 1063|            Err(panic) => {\n 1064|                let msg = panic\n 1065|                    .downcast_ref::<&str>()\n\n### tests/\n#### net_worker_starve.rs\n 179|/// dialable path (`addr_for_node_hex`), relay disabled, discovery off. `connect`\n*180|/// has nowhere to go; this is the field's \"submit-dial exceeded the bound (peer\n 181|/// unresponsive)\" shape (ecb39e40 / cfd9fc55), distinct from the proof-hang peer\n 182|/// above (which at least completes the QUIC handshake). Same question: does the\n 183|/// unreachable-connect burst starve the 2 workers, or yield?\n\n## spt-store/src/\n### peeraddrs.rs\n 93|    /// (callers skip the disk write on a no-op). The stale-seed self-heal\n*94|    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\n 95|    /// address FAILS, the pump forgets the stale seed so the next round\n 96|    /// re-resolves via id-only discovery — a stale addr never strands a peer.\n 97|    // [impl->REQ-CONV-1]"}],"details":{"scopePath":"spt-core/crates","searchPath":"C:/Users/decid/Documents/projects/spt-core/crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":11,"fileCount":5,"files":["spt-core/crates/spt-daemon/src/brain.rs","spt-core/crates/spt-daemon/src/nethost.rs","spt-core/crates/spt-daemon/src/pump/mod.rs","spt-core/crates/spt-daemon/tests/net_worker_starve.rs","spt-core/crates/spt-store/src/peeraddrs.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/src/brain.rs","count":2},{"path":"spt-core/crates/spt-daemon/src/nethost.rs","count":2},{"path":"spt-core/crates/spt-daemon/src/pump/mod.rs","count":5},{"path":"spt-core/crates/spt-daemon/tests/net_worker_starve.rs","count":1},{"path":"spt-core/crates/spt-store/src/peeraddrs.rs","count":1}],"truncated":false,"displayContent":"# spt-core/crates/\n\n## spt-daemon/\n\n### src/\n#### brain.rs\n  772│                }\n *773│                // The bare ack for a non-blocking submit-dial (PUMP-TRUTH W2) —\n  774│                // null payload; the dial's outcome rides the presence stream.\n  775│                // [impl->REQ-PUMP-PEER-ISOLATION]\n  776│                KIND_NET_DIAL_SUBMITTED => return Ok(BrokerEvent::NetDialSubmitted),\n     │...\n 1753│        io::Error::other(format!(\n*1754│            \"peer reply-read: no progress within budget — dropping peer ({e})\"\n 1755│        ))\n 1756│    } else {\n 1757│        e\n#### nethost.rs\n  585│    // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a\n *586│    // non-blocking submit-dial seeds `peer-addrs.json` like the blocking reply\n  587│    // did (id-only / path-less → `null`, nothing worth seeding).\n  588│    let observed = observed_addr_json(&conn);\n  589│    shared\n     │...\n 1138│                    Err(_elapsed) => Err(io::Error::other(format!(\n*1139│                        \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"\n 1140│                    ))),\n 1141│                }\n 1142│            }\n\n#### pump/\n##### mod.rs\n  637│                        Err(e) => {\n *638│                            eprintln!(\"PUMP_PEER_FAIL:{peer_hex}:{e}\");\n  639│                            let prev = sched.get(peer_hex).copied();\n  640│                            sched.insert(peer_hex.clone(), next_peer_backoff(prev, round_start));\n  641│                        }\n     │...\n  748│        Err(e) => {\n *749│            eprintln!(\"PUMP_PEER_FAIL:{peer_hex}:{e}\");\n  750│            conns.remove(peer_hex); // ordinary per-peer failure → drop conn\n  751│            let prev = sched.get(peer_hex).copied();\n  752│            sched.insert(peer_hex.to_string(), next_peer_backoff(prev, now)); // + back off (Q3)\n     │...\n  870│            eprintln!(\n *871│                \"PUMP_PEER_FAIL:{}:{}\",\n  872│                ev.remote_id_hex,\n  873│                ev.reason.as_deref().unwrap_or(\"dial failed\")\n  874│            );\n     │...\n 1040│/// decision 23, REQ-DAEMON-5): a panic is CAUGHT and logged loud\n*1041│/// (`PEER_PUMP_PANIC`), an error return logged (`PEER_PUMP_FAIL`), and the\n 1042│/// body restarts after a capped, doubling backoff — a 5.9-class pump death\n 1043│/// self-heals visibly instead of silently halving the daemon for 24 h.\n 1044│/// `base` is the backoff floor (production: [`SUPERVISE_BACKOFF_BASE`];\n     │...\n 1061│            Ok(Ok(())) => eprintln!(\"PEER_PUMP_EXIT: loop returned without stop — restarting\"),\n*1062│            Ok(Err(e)) => eprintln!(\"PEER_PUMP_FAIL: {e}\"),\n 1063│            Err(panic) => {\n 1064│                let msg = panic\n 1065│                    .downcast_ref::<&str>()\n\n### tests/\n#### net_worker_starve.rs\n 179│/// dialable path (`addr_for_node_hex`), relay disabled, discovery off. `connect`\n*180│/// has nowhere to go; this is the field's \"submit-dial exceeded the bound (peer\n 181│/// unresponsive)\" shape (ecb39e40 / cfd9fc55), distinct from the proof-hang peer\n 182│/// above (which at least completes the QUIC handshake). Same question: does the\n 183│/// unreachable-connect burst starve the 2 workers, or yield?\n\n## spt-store/src/\n### peeraddrs.rs\n 93│    /// (callers skip the disk write on a no-op). The stale-seed self-heal\n*94│    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\n 95│    /// address FAILS, the pump forgets the stale seed so the next round\n 96│    /// re-resolves via id-only discovery — a stale addr never strands a peer.\n 97│    // [impl->REQ-CONV-1]"},"isError":false,"timestamp":1784069141218}}
{"type":"message","id":"d1e29aa7","parentId":"3a6a0849","timestamp":"2026-07-14T22:45:41.221Z","message":{"role":"toolResult","toolCallId":"call_gt3EEVO5MXXCIAs4NPoQOjpL|fc_050f56f290a937ae016a56bc1511c48196b5dbb56602f804ce","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-daemon/\n\n### src/\n#### brain.rs\n 1158|    /// is too old to answer (an older broker replies `unknown command kind`), read as\n*1159|    /// \"not reported\" on `daemon status` — same forward-compat contract as\n 1160|    /// [`broker_image_version`](Self::broker_image_version).\n 1161|    // [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n 1162|    pub fn stall_evicts(&mut self) -> io::Result<Option<(u64, u64)>> {\n#### broker.rs\n 268|/// The current stall-evict tally `(count_since_boot, last_evict_wall_ms)` —\n*269|/// `last_evict_wall_ms` is 0 when none have happened. Read by the `daemon status`\n 270|/// surface (the observability rider).\n 271|// [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n 272|pub(crate) fn stall_evict_stats() -> (u64, u64) {\n...\n 1055|    /// record the evict for observability (broker log now; W3 persists the stderr,\n*1056|    /// the tally surfaces on `daemon status`). The take/reattach path and the\n 1057|    /// `KIND_SESSIONS` reap call this so a suspended brain subscriber can never hold\n 1058|    /// control on an idle session (the output-driven [`mark_controller_gone`] never\n 1059|    /// fires without new output). Returns true iff it evicted. `stamp` selects whether\n...\n 1438|/// the physical bound now fires FIRST, so the tally is recorded here — same\n*1439|/// event class, same `daemon status` surface. An ORGANIC write failure (peer\n 1440|/// death, any non-TimedOut error) stays uncounted, exactly as before.\n 1441|// [impl->REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK]\n 1442|// [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n...\n 3845|    /// (brain-only restart, ADR-0018 D3-3) honestly reports the PRE-apply version\n*3846|    /// — the authoritative running-image truth the `daemon status` version surface\n 3847|    /// compares against the freshly-installed CLI. Sourced from the running\n 3848|    /// process, never inferred from disk (the disk is the half already ahead).\n 3849|    // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE]\n...\n 3863|    /// Answer the brain-subscriber stall-evict tally query (LIFECYCLE-TRUTH W2\n*3864|    /// observability rider) from the broker-global counters — so `daemon status` can\n 3865|    /// surface a brain that never returned as a diagnosable fact, not a silent absence.\n 3866|    // [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n 3867|    fn dispatch_stall_evicts(&self, send: &SharedSend) {\n#### daemon.rs\n 184|        // (the B6 surface) — the PTY-hosting consumers arrive in B7/B8.\n*185|        let net_up = net.is_some();\n 186|        // Keep the broker handle alive past the bind so the brain supervisor's\n 187|        // planned-restart signal can be wired into it below (ADR-0018 D3-3): the\n 188|        // `KIND_BRAIN_RESTART` verb the broker serves must reach the supervisor.\n...\n 202|                // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n*203|                    if !net_up && node_hex.is_some() {\n 204|                        // Boot-race self-heal (REQ-DAEMON-9): net failed to bind\n 205|                        // but identity is sound — almost always the autostart\n 206|                        // racing the network up at boot. Retry net in the\n#### endpoint.rs\n 88|/// decision 23 / REQ-DAEMON-5): written each pump tick (D4), read by\n*89|/// `spt daemon status` so a half-dead daemon (pump stalled, dispatcher\n 90|/// alive — the 2026-06-07 hfenduleam shape) renders honestly.\n*91|pub fn pump_heartbeat_path() -> PathBuf {\n*92|    spt_home().join(\"identity\").join(\"pump-heartbeat.json\")\n 93|}\n 94|\n 95|/// Read the pump's last-tick heartbeat (epoch ms). `None` = never written\n...\n 97|// [impl->REQ-CLI-2]\n*98|pub fn read_pump_heartbeat() -> Option<u64> {\n*99|    let s = std::fs::read_to_string(pump_heartbeat_path()).ok()?;\n 100|    serde_json::from_str::<u64>(s.trim()).ok()\n 101|}\n#### lib.rs\n 207|    broker_socket_name, daemon_pid_path, digest_socket_name, drive_socket_name,\n*208|    pump_heartbeat_path, read_pump_heartbeat, seed_socket_name, tunnel_socket_name,\n 209|};\n 210|pub use inject::{is_spt_hosted_no_relay, try_spt_hosted_inject};\n 211|pub use frame::{\n#### msg.rs\n 104|/// controllers were stall-evicted for a suspended/black-holed brain conn since\n*105|/// boot, and when the most recent fired. Surfaced on `daemon status` so a brain\n 106|/// that never returns is a diagnosable fact. An older broker predating this kind\n 107|/// replies `unknown command kind` (forward-compat), read as \"not reported\".\n 108|pub const KIND_STALL_EVICTS: &str = \"stall-evicts\";\n#### presence.rs\n 101|/// perches admitted by `admit_local` and the **registry** rows admitted by\n*102|/// `admit_row(subnet, id)` (routable status + carrying the datum). A local\n 103|/// perch and its own registry row (same node) collapse to the local leg —\n 104|/// the row is this node's own advertisement of the same fact.\n 105|// [impl->REQ-PRES-1]\n#### seedproofx.rs\n 71|\n*72|/// A peer's per-subnet roster status, as the re-seed grace needs it — supplied\n 73|/// by the [`RosterExchange::member_status`] seam (production: a `RosterStore`\n 74|/// lookup). The grace is gated on this: a tombstoned (revoked) peer is denied\n 75|/// outright; an absent (unknown) peer may still prove the *current* seed (a\n...\n 105|\n*106|/// Grade one subnet from the verify outcome + the peer's roster status. The pure\n 107|/// core of the re-seed grace, unit-tested as a truth table. `matched_current` =\n 108|/// the peer proved this node's CURRENT generation; `matched_prev` = it proved the\n 109|/// immediately-prior one. `status` is `None` when no roster seam is wired (the\n...\n 111|// [impl->REQ-MESH-4]\n*112|fn grade_subnet(matched_current: bool, matched_prev: bool, status: Option<MemberStatus>) -> Grade {\n 113|    match status {\n 114|        // No roster info (mechanics-only / D2 tests): epoch-only grading.\n 115|        None => {\n...\n 359|/// when no seam is wired — the mechanics-only path grades on epoch alone.\n*360|fn peer_status(roster: Option<&RosterExchange>, subnet: &str, peer_hex: &str) -> Option<MemberStatus> {\n 361|    roster.map(|rx| (rx.member_status)(subnet, peer_hex))\n 362|}\n 363|\n...\n 370|\n*371|/// Grade every shared subnet from the peer's proof sets + roster status. The\n 372|/// `full`/`reseed` split drives what the legs do; both are derived from the same\n 373|/// per-subnet [`grade_subnet`] truth table.\n 374|fn grade_all(\n...\n 384|        let (mc, mp) = g.matches(peer_proofs, prover);\n*385|        match grade_subnet(mc, mp, peer_status(roster, &g.name, remote_hex)) {\n 386|            Grade::Full => {\n 387|                full.insert(g.name.clone());\n 388|            }\n...\n 590|    pub sink: RosterSink,\n*591|    /// The peer's per-subnet roster status — gates the re-seed grace (a revoked\n 592|    /// peer is denied; an unknown one is never re-seeded). [`REQ-MESH-4`].\n 593|    pub member_status: MemberStatusFn,\n 594|    /// Adopts a seed the peer pushes over the grace leg (Mesh-D7). [`REQ-MESH-4`].\n#### serveprobe.rs\n 6|//!\n*7|//! `subnet status --nodes` settles liveness in two tiers: gossip-recency\n 8|//! first, a live probe for the rows gossip could not settle. The probe used to\n 9|//! be a raw transport dial by node-pubkey — it proved the peer's daemon\n 10|//! endpoint was bound (the box is up), but ONE ALPN serves every subnet, so it\n#### service.rs\n 18|//! so start stays a detached spawn and stop stays an IPC stop; the task is\n*19|//! surfaced only as a `daemon status` boot hint.\n 20|\n 21|use std::io;\n 22|#[allow(unused_imports)]\n...\n 102|    fn stop(&self) -> io::Result<()>;\n*103|    /// Short label for `daemon status` + conflict warnings (\"systemd --user\").\n 104|    fn label(&self) -> &'static str;\n*105|    /// A boot-autostart note for `daemon status`, when the platform has one\n 106|    /// that isn't a start/stop-controllable service (the Windows logon task,\n 107|    /// or the systemd unit's enable-state). `None` = nothing to add.\n 108|    fn boot_hint(&self) -> Option<String> {\n\n#### pump/\n##### mod.rs\n 256|    /// epoch-ms written while the loop is alive, rendered by\n*257|    /// `spt daemon status` / the `subnet status` stall warning\n*258|    /// ([`crate::endpoint::pump_heartbeat_path`]).\n 259|    pub heartbeat: PathBuf,\n 260|    /// `rotation-pending.json` (Mesh-D7, REQ-MESH-4): the timeboxed seed-rotation\n 261|    /// schedule a `subnet revoke` writes; the pump fires due entries each\n...\n 283|            peer_addrs: identity.join(\"peer-addrs.json\"),\n*284|            heartbeat: crate::endpoint::pump_heartbeat_path(),\n 285|            rotations: identity.join(\"rotation-pending.json\"),\n 286|        }\n 287|    }\n...\n 1012|/// Write the pump's last-tick heartbeat (epoch ms) — the liveness fact\n*1013|/// `spt daemon status` renders and the `subnet status` stall warning reads\n 1014|/// (M8 decision 23). Best-effort: a failed write costs honesty, never the\n 1015|/// pump (and the reader treats an absent/unreadable file as \"no heartbeat\n 1016|/// recorded\", not as healthy).\n...\n 1647|    // stamp at the given path (creating parents) and a later write advances\n*1648|    // it — what the D1 `daemon status` reader + stall warning consume.\n 1649|    #[test]\n 1650|    fn heartbeat_writes_and_advances() {\n 1651|        let dir = tempfile::tempdir().unwrap();\n*1652|        let path = dir.path().join(\"identity\").join(\"pump-heartbeat.json\");\n 1653|        write_heartbeat(&path);\n 1654|        let first: u64 = std::fs::read_to_string(&path)\n 1655|            .expect(\"heartbeat written\")\n\n### tests/\n#### brain_decouple.rs\n 12|//! evicted by neither: control latched, reattach was refused, `rc --take` hung,\n*13|//! `daemon status` still read healthy.\n 14|//!\n 15|//! ## Faithful in-process analog of a suspended brain\n 16|//!\n...\n 34|//! 4. the stall-evict is OBSERVABLE (the broker-global tally increments, the datum\n*35|//!    `daemon status` surfaces).\n 36|//!\n 37|//! What this rig does NOT assert (covered elsewhere / manual): resume + cursor-replay\n 38|//! byte-identity is NOT re-proven here — W2's delta does not touch the replay path, so\n#### daemon_e2e.rs\n 194|    // The summarizer subprocess exiting (its recorded pid now dead) must NOT flip\n*195|    // the daemon-hosted perch offline — liveness is the daemon status, not the pid.\n 196|    const DEAD_PID: u32 = 2_000_000_000;\n 197|    let mut rec = read_info(&psyche_perch).unwrap();\n 198|    rec.pid = PidValue::Numeric(DEAD_PID);\n#### endpoint_survival.rs\n 68|    spt_store::info::write_info(&perch, &rec).unwrap();\n*69|    // A real spt-hosted perch is online = daemon status + the ready marker.\n 70|    spt_store::info::set_status(&perch, \"online\").unwrap();\n 71|    std::fs::write(resolve_ready_file(id, ParentHint::Infer), \"\").unwrap();\n 72|    // The ledger row the resume restores (session + adapter + cwd).\n#### mesh.rs\n 181|            peer_addrs: root.join(\"noseed\").join(\"peer-addrs.json\"),\n*182|            heartbeat: root.join(\"pump-heartbeat.json\"),\n 183|            rotations: root.join(\"rotation-pending.json\"),\n 184|        };\n 185|        std::fs::create_dir_all(root).unwrap();\n#### pump.rs\n 98|        peer_addrs: root.join(\"peer-addrs.json\"),\n*99|        heartbeat: root.join(\"pump-heartbeat.json\"),\n 100|        rotations: root.join(\"rotation-pending.json\"),\n 101|    }\n 102|}\n...\n 259|        peer_addrs: a_root.join(\"peer-addrs.json\"),\n*260|        heartbeat: a_root.join(\"pump-heartbeat.json\"),\n 261|        rotations: a_root.join(\"rotation-pending.json\"),\n 262|    };\n 263|    // A trusts B's release signer — the update leg's production gate.\n...\n 604|    // ADVANCE while dead-peer rounds run.\n*605|    let hb = a_root.join(\"pump-heartbeat.json\");\n 606|    let mut first = None;\n 607|    for _ in 0..100 {\n 608|        if let Some(v) = read_heartbeat(&hb) {\n...\n 804|    // round; the point is the heartbeat DOES advance (the pump never froze).\n*805|    let hb = a_root.join(\"pump-heartbeat.json\");\n 806|    let mut first = None;\n 807|    for _ in 0..150 {\n 808|        if let Some(v) = read_heartbeat(&hb) {\n#### twohost.rs\n 307|        peer_addrs: home.join(\"identity\").join(\"peer-addrs.json\"),\n*308|        heartbeat: home.join(\"identity\").join(\"pump-heartbeat.json\"),\n 309|        rotations: home.join(\"identity\").join(\"rotation-pending.json\"),\n 310|    }\n 311|}\n\n## spt-net/src/net/\n### registry.rs\n 523|    /// FRESHEST-epoch instance when the same `(id, node)` is gossiped across\n*524|    /// several subnets with a disagreeing status (the `resolve_among` twin rule).\n 525|    /// Additive.\n 526|    // [impl->REQ-ENDPOINT-LIST-NODE-GROUPED]\n 527|    pub epoch: u64,\n...\n 1454|    // within-grace Offline rows stay, and the routable count (the\n*1455|    // REQ-SUBNET-COUNT-ROUTABLE denominator, which reads `Status::routable()`) is\n 1456|    // unchanged by the eviction — the two fixes compose.\n 1457|    // [unit->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n 1458|    #[test]\n### replicate.rs\n 152|\n*153|    fn upd(subnet: &str, id: &str, node: &str, status: Status, epoch: u64) -> RegistryUpdate {\n 154|        RegistryUpdate {\n 155|            subnet: subnet.into(),\n 156|            endpoint_id: id.into(),\n...\n 186|\n*187|        let wire = br#\"{\"subnet\":\"home\",\"endpoint_id\":\"doyle\",\"instance\":{\"node\":\"cafe\",\"status\":\"Active\",\"epoch\":7},\"added_at_d6\":true}\"#;\n 188|        let future: RegistryUpdate = serde_json::from_slice(wire).unwrap();\n 189|        assert_eq!(future.instance.epoch, 7);\n 190|    }\n\n## spt/src/\n### cli.rs\n 147|    Whoami,\n*148|    /// Subnet membership: status, create, show-code.\n 149|    ///\n 150|    /// A subnet is a private group of paired machines — your agents reach\n 151|    /// each other across every member node. Bare `spt subnet` shows the\n...\n 1250|            match action {\n*1251|                // Bare `spt subnet` = the flagless status view WITH the hint\n 1252|                // footer; explicit `status` drops it (M8 decision 12).\n*1253|                None => cmd_subnet_status(None, false, true, json),\n*1254|                Some(SubnetCmd::Status { name, nodes }) => cmd_subnet_status(name, nodes, false, json),\n 1255|                Some(SubnetCmd::Create { name }) => cmd_subnet_create(name),\n 1256|                Some(SubnetCmd::ShowCode { name }) => cmd_subnet_show_code(name, json),\n 1257|                Some(SubnetCmd::Join {\n...\n 3048|    // per subnet; group_remote_nodes collapses the subnet duplication (freshest\n*3049|    // epoch wins a cross-subnet status disagreement) and unions the subnet names\n 3050|    // per node. This node's OWN gossip rows are discarded — the roster above is\n 3051|    // its status truth. [impl->REQ-ENDPOINT-LIST-NODE-GROUPED]\n 3052|    let self_node_hex = spt_store::nodeid::load_or_create()\n...\n 3967|/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.\n*3968|/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +\n 3969|/// a pump waiting on the network — NOT a STALLED alarm read off a stale\n 3970|/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the\n 3971|/// heartbeat age exceeded uptime). With net up, the heartbeat drives\n...\n 3974|fn render_connection_lines(\n*3975|    net_up: bool,\n 3976|    heartbeat: Option<u64>,\n 3977|    now: u64,\n 3978|    stale_after: u64,\n 3979|) -> String {\n*3980|    if !net_up {\n 3981|        return \"connection: no connection — net endpoint not bound (retrying in background)\\n\\\n 3982|                peer pump: waiting on network\\n\"\n 3983|            .to_string();\n...\n 4006|// [impl->REQ-CLI-2]\n*4007|/// `spt daemon status` --json: the same facts the human view renders — daemon\n 4008|/// running + pid, network/pump liveness, the managing service, member subnet\n 4009|/// rows, and this node's local perches — copied into committed fields.\n 4010|// [impl->REQ-CLI-JSON]\n 4011|#[derive(serde::Serialize)]\n*4012|struct DaemonStatusJson {\n 4013|    running: bool,\n 4014|    pid: Option<String>,\n 4015|    /// Net endpoint bound (the pump has a network to gossip on). `None` when\n 4016|    /// the daemon is down (not queried).\n*4017|    net_up: Option<bool>,\n 4018|    /// Peer-pump last-tick wall-clock ms (`None` = no heartbeat recorded).\n*4019|    pump_heartbeat_ms: Option<u64>,\n 4020|    /// The managing service label, if a registered service owns this daemon.\n 4021|    managed_by: Option<String>,\n 4022|    managed_active: Option<bool>,\n...\n 4045|\n*4046|/// One member subnet's count row in the daemon status view.\n 4047|// [impl->REQ-CLI-JSON]\n 4048|#[derive(serde::Serialize)]\n 4049|struct DaemonSubnetJson {\n...\n 4054|\n*4055|/// F-025 running-image surface: compose the `daemon status` line reporting the\n 4056|/// version the BROKER process is actually executing beside the installed CLI\n 4057|/// version. `running` is the broker's self-reported compiled version (`None` = the\n 4058|/// broker predates the self-report IPC, i.e. it is definitely older than this\n...\n 4079|\n*4080|/// LIFECYCLE-TRUTH W2 observability rider: the `daemon status` line reporting\n 4081|/// brain-subscriber stall-evicts (a controller detached because its brain conn was\n 4082|/// suspended / black-holed). `None` = the broker couldn't be queried / is too old\n 4083|/// (silent — no line). `Some(0)` renders a healthy line so \"none\" is an explicit\n...\n 4120|        // stall-evict tally.\n*4121|        let (net_up, broker_image, broker_queried, stall_stats) = if running {\n 4122|            match spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms()) {\n 4123|                Ok(mut b) => {\n 4124|                    let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);\n...\n 4147|            .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));\n*4148|        let pump_heartbeat_ms = if running {\n*4149|            spt_daemon::read_pump_heartbeat()\n 4150|        } else {\n 4151|            None\n 4152|        };\n...\n 4166|                .unwrap_or_default();\n*4167|            for row in subnet_status_rows(\n 4168|                &store,\n 4169|                &regs,\n 4170|                &roster,\n...\n 4194|            .collect();\n*4195|        return print_json(&DaemonStatusJson {\n 4196|            running,\n 4197|            pid,\n\nShowing files 1-20 of 25+. Use skip=20 for the next page, or narrow paths/pattern."}],"details":{"scopePath":"spt-core/crates","searchPath":"C:/Users/decid/Documents/projects/spt-core/crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":67,"fileCount":20,"files":["spt-core/crates/spt-daemon/src/brain.rs","spt-core/crates/spt-daemon/src/broker.rs","spt-core/crates/spt-daemon/src/daemon.rs","spt-core/crates/spt-daemon/src/endpoint.rs","spt-core/crates/spt-daemon/src/lib.rs","spt-core/crates/spt-daemon/src/msg.rs","spt-core/crates/spt-daemon/src/presence.rs","spt-core/crates/spt-daemon/src/pump/mod.rs","spt-core/crates/spt-daemon/src/seedproofx.rs","spt-core/crates/spt-daemon/src/serveprobe.rs","spt-core/crates/spt-daemon/src/service.rs","spt-core/crates/spt-daemon/tests/brain_decouple.rs","spt-core/crates/spt-daemon/tests/daemon_e2e.rs","spt-core/crates/spt-daemon/tests/endpoint_survival.rs","spt-core/crates/spt-daemon/tests/mesh.rs","spt-core/crates/spt-daemon/tests/pump.rs","spt-core/crates/spt-daemon/tests/twohost.rs","spt-core/crates/spt-net/src/net/registry.rs","spt-core/crates/spt-net/src/net/replicate.rs","spt-core/crates/spt/src/cli.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/src/brain.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/broker.rs","count":5},{"path":"spt-core/crates/spt-daemon/src/daemon.rs","count":2},{"path":"spt-core/crates/spt-daemon/src/endpoint.rs","count":5},{"path":"spt-core/crates/spt-daemon/src/lib.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/msg.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/presence.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/pump/mod.rs","count":6},{"path":"spt-core/crates/spt-daemon/src/seedproofx.rs","count":7},{"path":"spt-core/crates/spt-daemon/src/serveprobe.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/service.rs","count":3},{"path":"spt-core/crates/spt-daemon/tests/brain_decouple.rs","count":2},{"path":"spt-core/crates/spt-daemon/tests/daemon_e2e.rs","count":1},{"path":"spt-core/crates/spt-daemon/tests/endpoint_survival.rs","count":1},{"path":"spt-core/crates/spt-daemon/tests/mesh.rs","count":1},{"path":"spt-core/crates/spt-daemon/tests/pump.rs","count":4},{"path":"spt-core/crates/spt-daemon/tests/twohost.rs","count":1},{"path":"spt-core/crates/spt-net/src/net/registry.rs","count":2},{"path":"spt-core/crates/spt-net/src/net/replicate.rs","count":2},{"path":"spt-core/crates/spt/src/cli.rs","count":20}],"truncated":true,"fileLimitReached":20,"perFileLimitReached":20,"displayContent":"# spt-core/crates/\n\n## spt-daemon/\n\n### src/\n#### brain.rs\n 1158│    /// is too old to answer (an older broker replies `unknown command kind`), read as\n*1159│    /// \"not reported\" on `daemon status` — same forward-compat contract as\n 1160│    /// [`broker_image_version`](Self::broker_image_version).\n 1161│    // [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n 1162│    pub fn stall_evicts(&mut self) -> io::Result<Option<(u64, u64)>> {\n#### broker.rs\n  268│/// The current stall-evict tally `(count_since_boot, last_evict_wall_ms)` —\n *269│/// `last_evict_wall_ms` is 0 when none have happened. Read by the `daemon status`\n  270│/// surface (the observability rider).\n  271│// [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n  272│pub(crate) fn stall_evict_stats() -> (u64, u64) {\n     │...\n 1055│    /// record the evict for observability (broker log now; W3 persists the stderr,\n*1056│    /// the tally surfaces on `daemon status`). The take/reattach path and the\n 1057│    /// `KIND_SESSIONS` reap call this so a suspended brain subscriber can never hold\n 1058│    /// control on an idle session (the output-driven [`mark_controller_gone`] never\n 1059│    /// fires without new output). Returns true iff it evicted. `stamp` selects whether\n     │...\n 1438│/// the physical bound now fires FIRST, so the tally is recorded here — same\n*1439│/// event class, same `daemon status` surface. An ORGANIC write failure (peer\n 1440│/// death, any non-TimedOut error) stays uncounted, exactly as before.\n 1441│// [impl->REQ-HAZARD-SHAREDSEND-NO-BLOCKING-WRITE-UNDER-LOCK]\n 1442│// [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n     │...\n 3845│    /// (brain-only restart, ADR-0018 D3-3) honestly reports the PRE-apply version\n*3846│    /// — the authoritative running-image truth the `daemon status` version surface\n 3847│    /// compares against the freshly-installed CLI. Sourced from the running\n 3848│    /// process, never inferred from disk (the disk is the half already ahead).\n 3849│    // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE]\n     │...\n 3863│    /// Answer the brain-subscriber stall-evict tally query (LIFECYCLE-TRUTH W2\n*3864│    /// observability rider) from the broker-global counters — so `daemon status` can\n 3865│    /// surface a brain that never returned as a diagnosable fact, not a silent absence.\n 3866│    // [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n 3867│    fn dispatch_stall_evicts(&self, send: &SharedSend) {\n#### daemon.rs\n 184│        // (the B6 surface) — the PTY-hosting consumers arrive in B7/B8.\n*185│        let net_up = net.is_some();\n 186│        // Keep the broker handle alive past the bind so the brain supervisor's\n 187│        // planned-restart signal can be wired into it below (ADR-0018 D3-3): the\n 188│        // `KIND_BRAIN_RESTART` verb the broker serves must reach the supervisor.\n    │...\n 202│                // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n*203│                    if !net_up && node_hex.is_some() {\n 204│                        // Boot-race self-heal (REQ-DAEMON-9): net failed to bind\n 205│                        // but identity is sound — almost always the autostart\n 206│                        // racing the network up at boot. Retry net in the\n#### endpoint.rs\n  88│/// decision 23 / REQ-DAEMON-5): written each pump tick (D4), read by\n *89│/// `spt daemon status` so a half-dead daemon (pump stalled, dispatcher\n  90│/// alive — the 2026-06-07 hfenduleam shape) renders honestly.\n *91│pub fn pump_heartbeat_path() -> PathBuf {\n *92│    spt_home().join(\"identity\").join(\"pump-heartbeat.json\")\n  93│}\n  94│\n  95│/// Read the pump's last-tick heartbeat (epoch ms). `None` = never written\n    │...\n  97│// [impl->REQ-CLI-2]\n *98│pub fn read_pump_heartbeat() -> Option<u64> {\n *99│    let s = std::fs::read_to_string(pump_heartbeat_path()).ok()?;\n 100│    serde_json::from_str::<u64>(s.trim()).ok()\n 101│}\n#### lib.rs\n 207│    broker_socket_name, daemon_pid_path, digest_socket_name, drive_socket_name,\n*208│    pump_heartbeat_path, read_pump_heartbeat, seed_socket_name, tunnel_socket_name,\n 209│};\n 210│pub use inject::{is_spt_hosted_no_relay, try_spt_hosted_inject};\n 211│pub use frame::{\n#### msg.rs\n 104│/// controllers were stall-evicted for a suspended/black-holed brain conn since\n*105│/// boot, and when the most recent fired. Surfaced on `daemon status` so a brain\n 106│/// that never returns is a diagnosable fact. An older broker predating this kind\n 107│/// replies `unknown command kind` (forward-compat), read as \"not reported\".\n 108│pub const KIND_STALL_EVICTS: &str = \"stall-evicts\";\n#### presence.rs\n 101│/// perches admitted by `admit_local` and the **registry** rows admitted by\n*102│/// `admit_row(subnet, id)` (routable status + carrying the datum). A local\n 103│/// perch and its own registry row (same node) collapse to the local leg —\n 104│/// the row is this node's own advertisement of the same fact.\n 105│// [impl->REQ-PRES-1]\n#### seedproofx.rs\n  71│\n *72│/// A peer's per-subnet roster status, as the re-seed grace needs it — supplied\n  73│/// by the [`RosterExchange::member_status`] seam (production: a `RosterStore`\n  74│/// lookup). The grace is gated on this: a tombstoned (revoked) peer is denied\n  75│/// outright; an absent (unknown) peer may still prove the *current* seed (a\n    │...\n 105│\n*106│/// Grade one subnet from the verify outcome + the peer's roster status. The pure\n 107│/// core of the re-seed grace, unit-tested as a truth table. `matched_current` =\n 108│/// the peer proved this node's CURRENT generation; `matched_prev` = it proved the\n 109│/// immediately-prior one. `status` is `None` when no roster seam is wired (the\n    │...\n 111│// [impl->REQ-MESH-4]\n*112│fn grade_subnet(matched_current: bool, matched_prev: bool, status: Option<MemberStatus>) -> Grade {\n 113│    match status {\n 114│        // No roster info (mechanics-only / D2 tests): epoch-only grading.\n 115│        None => {\n    │...\n 359│/// when no seam is wired — the mechanics-only path grades on epoch alone.\n*360│fn peer_status(roster: Option<&RosterExchange>, subnet: &str, peer_hex: &str) -> Option<MemberStatus> {\n 361│    roster.map(|rx| (rx.member_status)(subnet, peer_hex))\n 362│}\n 363│\n    │...\n 370│\n*371│/// Grade every shared subnet from the peer's proof sets + roster status. The\n 372│/// `full`/`reseed` split drives what the legs do; both are derived from the same\n 373│/// per-subnet [`grade_subnet`] truth table.\n 374│fn grade_all(\n    │...\n 384│        let (mc, mp) = g.matches(peer_proofs, prover);\n*385│        match grade_subnet(mc, mp, peer_status(roster, &g.name, remote_hex)) {\n 386│            Grade::Full => {\n 387│                full.insert(g.name.clone());\n 388│            }\n    │...\n 590│    pub sink: RosterSink,\n*591│    /// The peer's per-subnet roster status — gates the re-seed grace (a revoked\n 592│    /// peer is denied; an unknown one is never re-seeded). [`REQ-MESH-4`].\n 593│    pub member_status: MemberStatusFn,\n 594│    /// Adopts a seed the peer pushes over the grace leg (Mesh-D7). [`REQ-MESH-4`].\n#### serveprobe.rs\n  6│//!\n *7│//! `subnet status --nodes` settles liveness in two tiers: gossip-recency\n  8│//! first, a live probe for the rows gossip could not settle. The probe used to\n  9│//! be a raw transport dial by node-pubkey — it proved the peer's daemon\n 10│//! endpoint was bound (the box is up), but ONE ALPN serves every subnet, so it\n#### service.rs\n  18│//! so start stays a detached spawn and stop stays an IPC stop; the task is\n *19│//! surfaced only as a `daemon status` boot hint.\n  20│\n  21│use std::io;\n  22│#[allow(unused_imports)]\n    │...\n 102│    fn stop(&self) -> io::Result<()>;\n*103│    /// Short label for `daemon status` + conflict warnings (\"systemd --user\").\n 104│    fn label(&self) -> &'static str;\n*105│    /// A boot-autostart note for `daemon status`, when the platform has one\n 106│    /// that isn't a start/stop-controllable service (the Windows logon task,\n 107│    /// or the systemd unit's enable-state). `None` = nothing to add.\n 108│    fn boot_hint(&self) -> Option<String> {\n\n#### pump/\n##### mod.rs\n  256│    /// epoch-ms written while the loop is alive, rendered by\n *257│    /// `spt daemon status` / the `subnet status` stall warning\n *258│    /// ([`crate::endpoint::pump_heartbeat_path`]).\n  259│    pub heartbeat: PathBuf,\n  260│    /// `rotation-pending.json` (Mesh-D7, REQ-MESH-4): the timeboxed seed-rotation\n  261│    /// schedule a `subnet revoke` writes; the pump fires due entries each\n     │...\n  283│            peer_addrs: identity.join(\"peer-addrs.json\"),\n *284│            heartbeat: crate::endpoint::pump_heartbeat_path(),\n  285│            rotations: identity.join(\"rotation-pending.json\"),\n  286│        }\n  287│    }\n     │...\n 1012│/// Write the pump's last-tick heartbeat (epoch ms) — the liveness fact\n*1013│/// `spt daemon status` renders and the `subnet status` stall warning reads\n 1014│/// (M8 decision 23). Best-effort: a failed write costs honesty, never the\n 1015│/// pump (and the reader treats an absent/unreadable file as \"no heartbeat\n 1016│/// recorded\", not as healthy).\n     │...\n 1647│    // stamp at the given path (creating parents) and a later write advances\n*1648│    // it — what the D1 `daemon status` reader + stall warning consume.\n 1649│    #[test]\n 1650│    fn heartbeat_writes_and_advances() {\n 1651│        let dir = tempfile::tempdir().unwrap();\n*1652│        let path = dir.path().join(\"identity\").join(\"pump-heartbeat.json\");\n 1653│        write_heartbeat(&path);\n 1654│        let first: u64 = std::fs::read_to_string(&path)\n 1655│            .expect(\"heartbeat written\")\n\n### tests/\n#### brain_decouple.rs\n 12│//! evicted by neither: control latched, reattach was refused, `rc --take` hung,\n*13│//! `daemon status` still read healthy.\n 14│//!\n 15│//! ## Faithful in-process analog of a suspended brain\n 16│//!\n   │...\n 34│//! 4. the stall-evict is OBSERVABLE (the broker-global tally increments, the datum\n*35│//!    `daemon status` surfaces).\n 36│//!\n 37│//! What this rig does NOT assert (covered elsewhere / manual): resume + cursor-replay\n 38│//! byte-identity is NOT re-proven here — W2's delta does not touch the replay path, so\n#### daemon_e2e.rs\n 194│    // The summarizer subprocess exiting (its recorded pid now dead) must NOT flip\n*195│    // the daemon-hosted perch offline — liveness is the daemon status, not the pid.\n 196│    const DEAD_PID: u32 = 2_000_000_000;\n 197│    let mut rec = read_info(&psyche_perch).unwrap();\n 198│    rec.pid = PidValue::Numeric(DEAD_PID);\n#### endpoint_survival.rs\n 68│    spt_store::info::write_info(&perch, &rec).unwrap();\n*69│    // A real spt-hosted perch is online = daemon status + the ready marker.\n 70│    spt_store::info::set_status(&perch, \"online\").unwrap();\n 71│    std::fs::write(resolve_ready_file(id, ParentHint::Infer), \"\").unwrap();\n 72│    // The ledger row the resume restores (session + adapter + cwd).\n#### mesh.rs\n 181│            peer_addrs: root.join(\"noseed\").join(\"peer-addrs.json\"),\n*182│            heartbeat: root.join(\"pump-heartbeat.json\"),\n 183│            rotations: root.join(\"rotation-pending.json\"),\n 184│        };\n 185│        std::fs::create_dir_all(root).unwrap();\n#### pump.rs\n  98│        peer_addrs: root.join(\"peer-addrs.json\"),\n *99│        heartbeat: root.join(\"pump-heartbeat.json\"),\n 100│        rotations: root.join(\"rotation-pending.json\"),\n 101│    }\n 102│}\n    │...\n 259│        peer_addrs: a_root.join(\"peer-addrs.json\"),\n*260│        heartbeat: a_root.join(\"pump-heartbeat.json\"),\n 261│        rotations: a_root.join(\"rotation-pending.json\"),\n 262│    };\n 263│    // A trusts B's release signer — the update leg's production gate.\n    │...\n 604│    // ADVANCE while dead-peer rounds run.\n*605│    let hb = a_root.join(\"pump-heartbeat.json\");\n 606│    let mut first = None;\n 607│    for _ in 0..100 {\n 608│        if let Some(v) = read_heartbeat(&hb) {\n    │...\n 804│    // round; the point is the heartbeat DOES advance (the pump never froze).\n*805│    let hb = a_root.join(\"pump-heartbeat.json\");\n 806│    let mut first = None;\n 807│    for _ in 0..150 {\n 808│        if let Some(v) = read_heartbeat(&hb) {\n#### twohost.rs\n 307│        peer_addrs: home.join(\"identity\").join(\"peer-addrs.json\"),\n*308│        heartbeat: home.join(\"identity\").join(\"pump-heartbeat.json\"),\n 309│        rotations: home.join(\"identity\").join(\"rotation-pending.json\"),\n 310│    }\n 311│}\n\n## spt-net/src/net/\n### registry.rs\n  523│    /// FRESHEST-epoch instance when the same `(id, node)` is gossiped across\n *524│    /// several subnets with a disagreeing status (the `resolve_among` twin rule).\n  525│    /// Additive.\n  526│    // [impl->REQ-ENDPOINT-LIST-NODE-GROUPED]\n  527│    pub epoch: u64,\n     │...\n 1454│    // within-grace Offline rows stay, and the routable count (the\n*1455│    // REQ-SUBNET-COUNT-ROUTABLE denominator, which reads `Status::routable()`) is\n 1456│    // unchanged by the eviction — the two fixes compose.\n 1457│    // [unit->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n 1458│    #[test]\n### replicate.rs\n 152│\n*153│    fn upd(subnet: &str, id: &str, node: &str, status: Status, epoch: u64) -> RegistryUpdate {\n 154│        RegistryUpdate {\n 155│            subnet: subnet.into(),\n 156│            endpoint_id: id.into(),\n    │...\n 186│\n*187│        let wire = br#\"{\"subnet\":\"home\",\"endpoint_id\":\"doyle\",\"instance\":{\"node\":\"cafe\",\"status\":\"Active\",\"epoch\":7},\"added_at_d6\":true}\"#;\n 188│        let future: RegistryUpdate = serde_json::from_slice(wire).unwrap();\n 189│        assert_eq!(future.instance.epoch, 7);\n 190│    }\n\n## spt/src/\n### cli.rs\n  147│    Whoami,\n *148│    /// Subnet membership: status, create, show-code.\n  149│    ///\n  150│    /// A subnet is a private group of paired machines — your agents reach\n  151│    /// each other across every member node. Bare `spt subnet` shows the\n     │...\n 1250│            match action {\n*1251│                // Bare `spt subnet` = the flagless status view WITH the hint\n 1252│                // footer; explicit `status` drops it (M8 decision 12).\n*1253│                None => cmd_subnet_status(None, false, true, json),\n*1254│                Some(SubnetCmd::Status { name, nodes }) => cmd_subnet_status(name, nodes, false, json),\n 1255│                Some(SubnetCmd::Create { name }) => cmd_subnet_create(name),\n 1256│                Some(SubnetCmd::ShowCode { name }) => cmd_subnet_show_code(name, json),\n 1257│                Some(SubnetCmd::Join {\n     │...\n 3048│    // per subnet; group_remote_nodes collapses the subnet duplication (freshest\n*3049│    // epoch wins a cross-subnet status disagreement) and unions the subnet names\n 3050│    // per node. This node's OWN gossip rows are discarded — the roster above is\n 3051│    // its status truth. [impl->REQ-ENDPOINT-LIST-NODE-GROUPED]\n 3052│    let self_node_hex = spt_store::nodeid::load_or_create()\n     │...\n 3967│/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.\n*3968│/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +\n 3969│/// a pump waiting on the network — NOT a STALLED alarm read off a stale\n 3970│/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the\n 3971│/// heartbeat age exceeded uptime). With net up, the heartbeat drives\n     │...\n 3974│fn render_connection_lines(\n*3975│    net_up: bool,\n 3976│    heartbeat: Option<u64>,\n 3977│    now: u64,\n 3978│    stale_after: u64,\n 3979│) -> String {\n*3980│    if !net_up {\n 3981│        return \"connection: no connection — net endpoint not bound (retrying in background)\\n\\\n 3982│                peer pump: waiting on network\\n\"\n 3983│            .to_string();\n     │...\n 4006│// [impl->REQ-CLI-2]\n*4007│/// `spt daemon status` --json: the same facts the human view renders — daemon\n 4008│/// running + pid, network/pump liveness, the managing service, member subnet\n 4009│/// rows, and this node's local perches — copied into committed fields.\n 4010│// [impl->REQ-CLI-JSON]\n 4011│#[derive(serde::Serialize)]\n*4012│struct DaemonStatusJson {\n 4013│    running: bool,\n 4014│    pid: Option<String>,\n 4015│    /// Net endpoint bound (the pump has a network to gossip on). `None` when\n 4016│    /// the daemon is down (not queried).\n*4017│    net_up: Option<bool>,\n 4018│    /// Peer-pump last-tick wall-clock ms (`None` = no heartbeat recorded).\n*4019│    pump_heartbeat_ms: Option<u64>,\n 4020│    /// The managing service label, if a registered service owns this daemon.\n 4021│    managed_by: Option<String>,\n 4022│    managed_active: Option<bool>,\n     │...\n 4045│\n*4046│/// One member subnet's count row in the daemon status view.\n 4047│// [impl->REQ-CLI-JSON]\n 4048│#[derive(serde::Serialize)]\n 4049│struct DaemonSubnetJson {\n     │...\n 4054│\n*4055│/// F-025 running-image surface: compose the `daemon status` line reporting the\n 4056│/// version the BROKER process is actually executing beside the installed CLI\n 4057│/// version. `running` is the broker's self-reported compiled version (`None` = the\n 4058│/// broker predates the self-report IPC, i.e. it is definitely older than this\n     │...\n 4079│\n*4080│/// LIFECYCLE-TRUTH W2 observability rider: the `daemon status` line reporting\n 4081│/// brain-subscriber stall-evicts (a controller detached because its brain conn was\n 4082│/// suspended / black-holed). `None` = the broker couldn't be queried / is too old\n 4083│/// (silent — no line). `Some(0)` renders a healthy line so \"none\" is an explicit\n     │...\n 4120│        // stall-evict tally.\n*4121│        let (net_up, broker_image, broker_queried, stall_stats) = if running {\n 4122│            match spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms()) {\n 4123│                Ok(mut b) => {\n 4124│                    let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);\n     │...\n 4147│            .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));\n*4148│        let pump_heartbeat_ms = if running {\n*4149│            spt_daemon::read_pump_heartbeat()\n 4150│        } else {\n 4151│            None\n 4152│        };\n     │...\n 4166│                .unwrap_or_default();\n*4167│            for row in subnet_status_rows(\n 4168│                &store,\n 4169│                &regs,\n 4170│                &roster,\n     │...\n 4194│            .collect();\n*4195│        return print_json(&DaemonStatusJson {\n 4196│            running,\n 4197│            pid,"},"isError":false,"timestamp":1784069141221}}
{"type":"message","id":"bec08448","parentId":"d1e29aa7","timestamp":"2026-07-14T22:45:41.225Z","message":{"role":"toolResult","toolCallId":"call_4VNjOmYbEJ7VyshJIhNA3lM3|fc_050f56f290a937ae016a56bc1511c08196a29a6d0159156841","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-daemon/\n\n### src/\n#### msg.rs\n 682|    /// (M8 decision 20, REQ-CONV-1): what the pump persists into\n*683|    /// `peer-addrs.json` after a successful dial. `null` from an older\n 684|    /// broker or when no path is readable (additive serde-default field).\n 685|    #[serde(default)]\n 686|    pub remote_addr: serde_json::Value,\n...\n 943|    /// The connection's OBSERVED remote address (REQ-CONV-1 seed write-back),\n*944|    /// carried on [`PRESENCE_CONNECTED`] so the pump seeds `peer-addrs.json` from\n 945|    /// the async connect the same way the blocking dial reply did. `null`/absent\n 946|    /// on the other kinds and when the path is id-only (nothing worth seeding).\n 947|    // [impl->REQ-CONV-1]\n#### nethost.rs\n 337|    /// reply used to carry — now it rides the presence stream so the pump seeds\n*338|    /// `peer-addrs.json` from a non-blocking dial the same way.\n 339|    // [impl->REQ-CONV-1]\n 340|    fn append_connected(&mut self, conn_id: u64, remote_id_hex: &str, remote_addr: serde_json::Value) {\n 341|        self.push(NetPresenceEvent {\n...\n 585|    // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a\n*586|    // non-blocking submit-dial seeds `peer-addrs.json` like the blocking reply\n 587|    // did (id-only / path-less → `null`, nothing worth seeding).\n 588|    let observed = observed_addr_json(&conn);\n 589|    shared\n#### pairhost.rs\n 622|/// the peer's OBSERVED address from the live ceremony connection into\n*623|/// `peer-addrs.json`. Both ceremony legs call it on success — the connection\n 624|/// that just carried an authenticated ceremony is the best possible seed for\n 625|/// the pump's next dial. Best-effort and skip-on-pathless: seeding is an\n 626|/// optimization; the id-only discovery path is always behind it.\n...\n 635|    };\n*636|    let path = spt_store::peeraddrs::peer_addrs_file();\n*637|    if let Err(e) = spt_store::peeraddrs::PeerAddrStore::record(&path, peer_hex, value) {\n 638|        eprintln!(\"PEER_ADDR_SEED_FAIL:{peer_hex}: {e}\");\n 639|    }\n 640|}\n...\n 714|/// The connection's observed remote address as opaque JSON (the roster's\n*715|/// address field, same posture as `peer-addrs.json`). `None` if the address is\n 716|/// pathless or won't serialize.\n 717|fn conn_addr_json(conn: &Connection) -> Option<serde_json::Value> {\n 718|    let addr = spt_net::net::endpoint::conn_remote_addr(conn);\n#### seedproofx.rs\n 47|use spt_proto::identity::{Identity, PublicKey};\n*48|use spt_store::peeraddrs::PeerAddrStore;\n 49|use spt_store::roster::{RosterEntry, RosterStore, Tombstone};\n 50|use spt_store::subnet::SubnetStore;\n 51|\n...\n 862|/// Gap-fill a dial cache from learned roster entries (the seam decision): a\n*863|/// learned member's advertised address seeds `peer-addrs.json` **only when\n 864|/// absent** — a locally-observed address (written by the pump after a real dial)\n 865|/// is fresher and more reachable, so it is never clobbered. Self entries are\n 866|/// skipped. Returns whether anything changed (callers skip the disk write on a\n...\n 869|// [impl->REQ-MESH-2]\n*870|pub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\n 871|    let mut changed = false;\n 872|    for e in entries {\n 873|        if e.pubkey_hex == self_hex {\n...\n 884|\n*885|/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\n 886|/// re-read per connect (rare; honors a concurrent pairing/revoke without a\n 887|/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\n 888|/// provider stamps the node's live address onto its self-entry so peers learn\n...\n 932|            let _ = store.save();\n*933|            let path = spt_store::peeraddrs::peer_addrs_file();\n*934|            let mut pa = PeerAddrStore::load_from(&path);\n*935|            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\n 936|                let _ = pa.save_to(&path);\n 937|            }\n 938|        }),\n...\n 1056|\n*1057|        let mut pa = PeerAddrStore::default();\n 1058|        pa.put(\"bb\", observed_b.clone()); // a fresher, locally-observed addr\n 1059|\n 1060|        let entries = vec![\n...\n 1064|        ];\n*1065|        assert!(gapfill_peeraddrs(&mut pa, \"self\", &entries), \"C was filled\");\n 1066|        assert_eq!(pa.get(\"cc\"), Some(&addr_c), \"absent member filled from roster\");\n 1067|        assert_eq!(pa.get(\"bb\"), Some(&observed_b), \"observed addr not clobbered\");\n 1068|        assert_eq!(pa.get(\"self\"), None, \"own entry skipped\");\n...\n 1070|        // Idempotent: a second pass with the same input changes nothing.\n*1071|        assert!(!gapfill_peeraddrs(&mut pa, \"self\", &entries), \"no further change\");\n 1072|    }\n 1073|}\n 1074|\n\n#### pump/\n##### mod.rs\n 69|use spt_store::epoch::EpochSource;\n*70|use spt_store::peeraddrs::PeerAddrStore;\n 71|use spt_store::perch;\n 72|use spt_store::subnet::SubnetStore;\n 73|use spt_store::visibility::VisibilityStore;\n...\n 250|    pub advertise_marker: PathBuf,\n*251|    /// `peer-addrs.json` — last-known peer addresses (M8 decisions 14/20,\n 252|    /// REQ-CONV-1): consulted before id-only discovery, written back after\n*253|    /// every successful dial ([`spt_store::peeraddrs::PeerAddrStore`]).\n*254|    pub peer_addrs: PathBuf,\n 255|    /// The pump's last-tick heartbeat (M8 decision 23, REQ-DAEMON-5):\n 256|    /// epoch-ms written while the loop is alive, rendered by\n 257|    /// `spt daemon status` / the `subnet status` stall warning\n...\n 282|            advertise_marker: identity.join(crate::registryhost::ADVERTISE_MARKER_FILE),\n*283|            peer_addrs: identity.join(\"peer-addrs.json\"),\n 284|            heartbeat: crate::endpoint::pump_heartbeat_path(),\n 285|            rotations: identity.join(\"rotation-pending.json\"),\n 286|        }\n...\n 626|            } else if peer_eligible(&sched, peer_hex, round_start) {\n*627|                if let Some(addr) = resolve_submit_addr(&resolver, peer_hex, &paths.peer_addrs) {\n 628|                    match brain.submit_dial(addr) {\n 629|                        Ok(()) => {\n 630|                            pending.insert(peer_hex.clone());\n...\n 665|                    ev, &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n*666|                    &mut pending, &peer_subnets, &ctx, &paths.peer_addrs, round_start,\n 667|                )?,\n 668|                DrainStep::Skip => continue, // the event carrier only carries presence\n 669|                DrainStep::RoundDone => break, // quiet (TimedOut) — drain done\n...\n 815|    ctx: &RoundCtx,\n*816|    peer_addrs: &std::path::Path,\n 817|    now: Instant,\n 818|) -> io::Result<()> {\n 819|    let is_target = peer_subnets.contains_key(&ev.remote_id_hex);\n*820|    if presence_state_effect(&ev, conns, sched, pending, peer_addrs, is_target, now) {\n 821|        // A CONNECTED peer that is a fan target this round → advertise NOW.\n 822|        if let Some(subs) = peer_subnets.get(&ev.remote_id_hex) {\n 823|            run_peer_subnets(\n...\n 852|    pending: &mut HashSet<String>,\n*853|    peer_addrs: &std::path::Path,\n 854|    is_target: bool,\n 855|    now: Instant,\n 856|) -> bool {\n...\n 864|                let _ =\n*865|                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\n 866|            }\n 867|            is_target\n 868|        }\n...\n 879|            // eligible round re-resolves via id-only discovery.\n*880|            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\n 881|            false\n 882|        }\n 883|        PRESENCE_DISCONNECTED => {\n...\n 939|/// Resolve the ONE address to submit a non-blocking dial to (M8 decisions 14/20,\n*940|/// REQ-CONV-1 seeded order): the durable last-known address (`peer-addrs.json`)\n 941|/// FIRST — the cold-start fast path that skips the id-only discovery round-trip —\n 942|/// else the injected resolver (production: id-only discovery). A stale seed costs\n*943|/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\n 944|/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\n 945|/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\n 946|/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\n...\n 952|    peer_hex: &str,\n*953|    peer_addrs: &std::path::Path,\n 954|) -> Option<serde_json::Value> {\n*955|    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\n 956|        return Some(seeded); // seeded FIRST (cold-start fast path)\n 957|    }\n 958|    resolver(peer_hex) // miss → id-only discovery\n...\n 1490|        let dir = tempfile::tempdir().unwrap();\n*1491|        let seeds = dir.path().join(\"peer-addrs.json\");\n 1492|        let mut conns: HashMap<String, u64> = HashMap::new();\n 1493|        let mut sched: HashMap<String, PeerSched> = HashMap::new();\n 1494|        let mut pending: HashSet<String> =\n...\n 1678|        let dir = tempfile::tempdir().unwrap();\n*1679|        let seeds = dir.path().join(\"peer-addrs.json\");\n 1680|        let seeded_addr = serde_json::json!({\"id\": \"ab\", \"addrs\": [\"192.168.1.7:4711\"]});\n 1681|        let id_only = serde_json::json!({\"id\": \"ab\", \"addrs\": []});\n 1682|        let resolver: PeerResolver = {\n...\n 1694|        // Seeded: the recorded addr is submitted FIRST (skips discovery).\n*1695|        PeerAddrStore::record(&seeds, \"ab\", seeded_addr.clone()).unwrap();\n 1696|        assert_eq!(\n 1697|            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1698|            Some(seeded_addr.clone()),\n...\n 1703|        // resolves via id-only discovery again — the peer is never stranded.\n*1704|        PeerAddrStore::drop_seed(&seeds, \"ab\").unwrap();\n 1705|        assert_eq!(\n 1706|            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1707|            Some(id_only.clone()),\n\n### tests/\n#### mesh.rs\n 178|            // re-dial its still-running broker and wedge on a node modelled as\n*179|            // gone. peer_addrs points under a regular FILE so create_dir_all\n 180|            // fails and record() no-ops; load_from then always reads empty.\n*181|            peer_addrs: root.join(\"noseed\").join(\"peer-addrs.json\"),\n 182|            heartbeat: root.join(\"pump-heartbeat.json\"),\n 183|            rotations: root.join(\"rotation-pending.json\"),\n 184|        };\n...\n 361|        advertise_marker: p.advertise_marker.clone(),\n*362|        peer_addrs: p.peer_addrs.clone(),\n 363|        heartbeat: p.heartbeat.clone(),\n 364|        rotations: p.rotations.clone(),\n 365|    }\n#### pump.rs\n 97|        advertise_marker: root.join(\"advertise-now\"),\n*98|        peer_addrs: root.join(\"peer-addrs.json\"),\n 99|        heartbeat: root.join(\"pump-heartbeat.json\"),\n 100|        rotations: root.join(\"rotation-pending.json\"),\n 101|    }\n...\n 258|        advertise_marker: a_root.join(\"advertise-now\"),\n*259|        peer_addrs: a_root.join(\"peer-addrs.json\"),\n 260|        heartbeat: a_root.join(\"pump-heartbeat.json\"),\n 261|        rotations: a_root.join(\"rotation-pending.json\"),\n 262|    };\n...\n 394|            advertise_marker: a_paths.advertise_marker.clone(),\n*395|            peer_addrs: a_paths.peer_addrs.clone(),\n 396|            heartbeat: a_paths.heartbeat.clone(),\n 397|            rotations: a_paths.rotations.clone(),\n 398|        };\n#### rosterprop.rs\n 44|/// the proven subnets' slice; the sink merges the peer's slice in. Mirrors\n*45|/// `production_roster_exchange` minus the file/peeraddrs plumbing.\n 46|fn test_exchange(store: Arc<Mutex<RosterStore>>, self_hex: String) -> RosterExchange {\n 47|    let prov_store = Arc::clone(&store);\n 48|    let sink_store = Arc::clone(&store);\n#### twohost.rs\n 306|        advertise_marker: home.join(\"identity\").join(\"advertise-now\"),\n*307|        peer_addrs: home.join(\"identity\").join(\"peer-addrs.json\"),\n 308|        heartbeat: home.join(\"identity\").join(\"pump-heartbeat.json\"),\n 309|        rotations: home.join(\"identity\").join(\"rotation-pending.json\"),\n 310|    }\n\n## spt-store/src/\n### lib.rs\n 30|pub mod notif;\n*31|pub mod peeraddrs;\n 32|pub mod perch;\n 33|pub mod proc;\n 34|pub mod project;\n### peeraddrs.rs\n 2|//!\n*3|//! `identity/peer-addrs.json` maps a trusted peer's stable name\n 4|//! (lowercase-hex pubkey) to its **last-known dialable address** — an opaque,\n 5|//! serde-serialized iroh `EndpointAddr` (this crate never grows an iroh\n 6|//! dependency edge; the value's shape belongs to the net layer, same posture\n...\n 27|\n*28|/// The canonical path: `<spt_home>/identity/peer-addrs.json` (sibling of\n 29|/// `pump-ops.json` — M8 decision 20).\n*30|pub fn peer_addrs_file() -> PathBuf {\n 31|    crate::perch::spt_home()\n 32|        .join(\"identity\")\n*33|        .join(\"peer-addrs.json\")\n 34|}\n 35|\n 36|/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\n 37|#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\n*38|pub struct PeerAddrStore {\n 39|    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\n 40|    #[serde(default)]\n 41|    pub addrs: BTreeMap<String, serde_json::Value>,\n...\n 43|\n*44|impl PeerAddrStore {\n*45|    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\n*46|    pub fn load() -> PeerAddrStore {\n*47|        Self::load_from(&peer_addrs_file())\n 48|    }\n 49|\n 50|    /// Load from an explicit path. Absent/corrupt degrades to empty — a\n...\n 52|    /// discovery path is always behind it).\n*53|    pub fn load_from(path: &Path) -> PeerAddrStore {\n 54|        match std::fs::read_to_string(path) {\n 55|            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\n*56|            Err(_) => PeerAddrStore::default(),\n 57|        }\n 58|    }\n 59|\n...\n 61|    pub fn save(&self) -> std::io::Result<()> {\n*62|        self.save_to(&peer_addrs_file())\n 63|    }\n 64|\n 65|    /// Persist to an explicit path (atomic; creates the parent dir).\n...\n 85|            _ => {\n*86|                self.addrs.insert(peer_hex.to_string(), addr);\n 87|                true\n 88|            }\n 89|        }\n...\n 134|        let dir = tempfile::tempdir().unwrap();\n*135|        let path = dir.path().join(\"peer-addrs.json\");\n 136|\n*137|        let mut store = PeerAddrStore::load_from(&path);\n 138|        assert!(store.get(\"ab12\").is_none(), \"absent file = empty\");\n 139|\n 140|        let addr = serde_json::json!({\"id\": \"ab12\", \"addrs\": [\"192.168.1.7:4711\"]});\n...\n 144|\n*145|        let reloaded = PeerAddrStore::load_from(&path);\n 146|        assert_eq!(reloaded.get(\"ab12\"), Some(&addr), \"addr survives reload\");\n 147|        assert!(reloaded.get(\"cd34\").is_none(), \"unknown peer stays a miss\");\n 148|\n...\n 159|        let dir = tempfile::tempdir().unwrap();\n*160|        let path = dir.path().join(\"peer-addrs.json\");\n 161|        std::fs::write(&path, \"not json {{{\").unwrap();\n*162|        assert!(PeerAddrStore::load_from(&path).addrs.is_empty());\n 163|    }\n 164|\n 165|    // [unit->REQ-CONV-1] the one-step record (load → put → save) lands on\n...\n 169|        let dir = tempfile::tempdir().unwrap();\n*170|        let path = dir.path().join(\"peer-addrs.json\");\n 171|        let addr = serde_json::json!({\"id\": \"ef56\"});\n 172|\n*173|        PeerAddrStore::record(&path, \"ef56\", addr.clone()).unwrap();\n### roster.rs\n 98|    /// `EndpointAddr` (this crate never grows an iroh edge; same posture as\n*99|    /// [`PeerAddrStore`](crate::peeraddrs)). `None` until one is observed.\n 100|    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n 101|    pub address: Option<serde_json::Value>,\n 102|    /// Last-seen stamp (opaque epoch-seconds string).\n\n## spt/\n\n### src/\n#### wansend.rs\n 65|/// Resolve a peer's dial address SEED-FIRST (#9/#10 defect a): the durable\n*66|/// last-known DIRECT address from [`PeerAddrStore`] (the same warm cache the\n 67|/// gossip pump's `dial_seeded` uses) BEFORE the id-only `addr_for_node_hex`,\n 68|/// which carries no transport paths and forces a fresh iroh discovery every\n 69|/// send. `spt send` was hard-wired to the id-only form, so it rode a cold\n...\n 74|fn seed_first_addr(hex: &str) -> Option<serde_json::Value> {\n*75|    spt_store::peeraddrs::PeerAddrStore::load()\n 76|        .get(hex)\n 77|        .cloned()\n 78|        .or_else(|| addr_for_node_hex(hex).and_then(|a| serde_json::to_value(a).ok()))\n...\n 900|    // [unit->REQ-WAN-SEND-DELIVERY] defect (a): the WAN dial resolves the cached\n*901|    // DIRECT address (PeerAddrStore) FIRST — the warm path the gossip pump rides —\n 902|    // before the id-only discovery fallback. A `spt send` that ignored the cache\n 903|    // rode a cold discovery every time (marginal on a degraded box) while gossip\n 904|    // stayed green on the seed.\n...\n 906|    fn seed_first_addr_prefers_the_cached_direct_address() {\n*907|        use spt_store::peeraddrs::{peer_addrs_file, PeerAddrStore};\n 908|        let _home = isolated_home();\n 909|        let peer = \"abc123peerhex\";\n 910|        let seeded = serde_json::json!({ \"direct\": \"warm-cached-addr\" });\n*911|        PeerAddrStore::record(&peer_addrs_file(), peer, seeded.clone()).unwrap();\n 912|        assert_eq!(\n 913|            seed_first_addr(peer),\n 914|            Some(seeded),\n...\n 1397|    fn resolve_and_dial_owner_dials_the_resolved_node() {\n*1398|        use spt_store::peeraddrs::{peer_addrs_file, PeerAddrStore};\n 1399|        let _home = isolated_home();\n 1400|        let dir = tempfile::tempdir().unwrap();\n 1401|        let (a_name, b_name) = (\n...\n 1418|        write_snapshot(\"s1\", \"ling-remote\", &b_hex);\n*1419|        PeerAddrStore::record(&peer_addrs_file(), &b_hex, b_addr).unwrap();\n 1420|\n 1421|        match resolve_and_dial_owner(&mut a, \"ling-remote\") {\n 1422|            OwnerDial::Dialed { node, .. } => {\n\n### tests/\n#### twohost_cli.rs\n 370|    std::fs::write(\n*371|        identity_dir.join(\"peer-addrs.json\"),\n 372|        serde_json::to_string(&addrs).expect(\"peer addrs json\"),\n 373|    )\n*374|    .expect(\"write peer-addrs.json\");\n 375|}\n 376|\n 377|/// Create a perch record for `id` on this host. `pid` picks the advertised\n\n## xtask/src/\n### main.rs\n 1178|    let resolver = spt_daemon::pump::production_resolver();\n*1179|    let seeds = spt_store::peeraddrs::PeerAddrStore::load();\n 1180|\n 1181|    println!(\n 1182|        \"DEBUG_CONVERGE target={target} channel=debug{} expected={}\","}],"details":{"scopePath":"spt-core/crates","searchPath":"C:/Users/decid/Documents/projects/spt-core/crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":78,"fileCount":15,"files":["spt-core/crates/spt-daemon/src/msg.rs","spt-core/crates/spt-daemon/src/nethost.rs","spt-core/crates/spt-daemon/src/pairhost.rs","spt-core/crates/spt-daemon/src/pump/mod.rs","spt-core/crates/spt-daemon/src/seedproofx.rs","spt-core/crates/spt-daemon/tests/mesh.rs","spt-core/crates/spt-daemon/tests/pump.rs","spt-core/crates/spt-daemon/tests/rosterprop.rs","spt-core/crates/spt-daemon/tests/twohost.rs","spt-core/crates/spt-store/src/lib.rs","spt-core/crates/spt-store/src/peeraddrs.rs","spt-core/crates/spt-store/src/roster.rs","spt-core/crates/spt/src/wansend.rs","spt-core/crates/spt/tests/twohost_cli.rs","spt-core/crates/xtask/src/main.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/src/msg.rs","count":2},{"path":"spt-core/crates/spt-daemon/src/nethost.rs","count":2},{"path":"spt-core/crates/spt-daemon/src/pairhost.rs","count":4},{"path":"spt-core/crates/spt-daemon/src/pump/mod.rs","count":20},{"path":"spt-core/crates/spt-daemon/src/seedproofx.rs","count":10},{"path":"spt-core/crates/spt-daemon/tests/mesh.rs","count":3},{"path":"spt-core/crates/spt-daemon/tests/pump.rs","count":3},{"path":"spt-core/crates/spt-daemon/tests/rosterprop.rs","count":1},{"path":"spt-core/crates/spt-daemon/tests/twohost.rs","count":1},{"path":"spt-core/crates/spt-store/src/lib.rs","count":1},{"path":"spt-core/crates/spt-store/src/peeraddrs.rs","count":20},{"path":"spt-core/crates/spt-store/src/roster.rs","count":1},{"path":"spt-core/crates/spt/src/wansend.rs","count":7},{"path":"spt-core/crates/spt/tests/twohost_cli.rs","count":2},{"path":"spt-core/crates/xtask/src/main.rs","count":1}],"truncated":true,"perFileLimitReached":20,"displayContent":"# spt-core/crates/\n\n## spt-daemon/\n\n### src/\n#### msg.rs\n 682│    /// (M8 decision 20, REQ-CONV-1): what the pump persists into\n*683│    /// `peer-addrs.json` after a successful dial. `null` from an older\n 684│    /// broker or when no path is readable (additive serde-default field).\n 685│    #[serde(default)]\n 686│    pub remote_addr: serde_json::Value,\n    │...\n 943│    /// The connection's OBSERVED remote address (REQ-CONV-1 seed write-back),\n*944│    /// carried on [`PRESENCE_CONNECTED`] so the pump seeds `peer-addrs.json` from\n 945│    /// the async connect the same way the blocking dial reply did. `null`/absent\n 946│    /// on the other kinds and when the path is id-only (nothing worth seeding).\n 947│    // [impl->REQ-CONV-1]\n#### nethost.rs\n 337│    /// reply used to carry — now it rides the presence stream so the pump seeds\n*338│    /// `peer-addrs.json` from a non-blocking dial the same way.\n 339│    // [impl->REQ-CONV-1]\n 340│    fn append_connected(&mut self, conn_id: u64, remote_id_hex: &str, remote_addr: serde_json::Value) {\n 341│        self.push(NetPresenceEvent {\n    │...\n 585│    // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a\n*586│    // non-blocking submit-dial seeds `peer-addrs.json` like the blocking reply\n 587│    // did (id-only / path-less → `null`, nothing worth seeding).\n 588│    let observed = observed_addr_json(&conn);\n 589│    shared\n#### pairhost.rs\n 622│/// the peer's OBSERVED address from the live ceremony connection into\n*623│/// `peer-addrs.json`. Both ceremony legs call it on success — the connection\n 624│/// that just carried an authenticated ceremony is the best possible seed for\n 625│/// the pump's next dial. Best-effort and skip-on-pathless: seeding is an\n 626│/// optimization; the id-only discovery path is always behind it.\n    │...\n 635│    };\n*636│    let path = spt_store::peeraddrs::peer_addrs_file();\n*637│    if let Err(e) = spt_store::peeraddrs::PeerAddrStore::record(&path, peer_hex, value) {\n 638│        eprintln!(\"PEER_ADDR_SEED_FAIL:{peer_hex}: {e}\");\n 639│    }\n 640│}\n    │...\n 714│/// The connection's observed remote address as opaque JSON (the roster's\n*715│/// address field, same posture as `peer-addrs.json`). `None` if the address is\n 716│/// pathless or won't serialize.\n 717│fn conn_addr_json(conn: &Connection) -> Option<serde_json::Value> {\n 718│    let addr = spt_net::net::endpoint::conn_remote_addr(conn);\n#### seedproofx.rs\n   47│use spt_proto::identity::{Identity, PublicKey};\n  *48│use spt_store::peeraddrs::PeerAddrStore;\n   49│use spt_store::roster::{RosterEntry, RosterStore, Tombstone};\n   50│use spt_store::subnet::SubnetStore;\n   51│\n     │...\n  862│/// Gap-fill a dial cache from learned roster entries (the seam decision): a\n *863│/// learned member's advertised address seeds `peer-addrs.json` **only when\n  864│/// absent** — a locally-observed address (written by the pump after a real dial)\n  865│/// is fresher and more reachable, so it is never clobbered. Self entries are\n  866│/// skipped. Returns whether anything changed (callers skip the disk write on a\n     │...\n  869│// [impl->REQ-MESH-2]\n *870│pub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\n  871│    let mut changed = false;\n  872│    for e in entries {\n  873│        if e.pubkey_hex == self_hex {\n     │...\n  884│\n *885│/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\n  886│/// re-read per connect (rare; honors a concurrent pairing/revoke without a\n  887│/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\n  888│/// provider stamps the node's live address onto its self-entry so peers learn\n     │...\n  932│            let _ = store.save();\n *933│            let path = spt_store::peeraddrs::peer_addrs_file();\n *934│            let mut pa = PeerAddrStore::load_from(&path);\n *935│            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\n  936│                let _ = pa.save_to(&path);\n  937│            }\n  938│        }),\n     │...\n 1056│\n*1057│        let mut pa = PeerAddrStore::default();\n 1058│        pa.put(\"bb\", observed_b.clone()); // a fresher, locally-observed addr\n 1059│\n 1060│        let entries = vec![\n     │...\n 1064│        ];\n*1065│        assert!(gapfill_peeraddrs(&mut pa, \"self\", &entries), \"C was filled\");\n 1066│        assert_eq!(pa.get(\"cc\"), Some(&addr_c), \"absent member filled from roster\");\n 1067│        assert_eq!(pa.get(\"bb\"), Some(&observed_b), \"observed addr not clobbered\");\n 1068│        assert_eq!(pa.get(\"self\"), None, \"own entry skipped\");\n     │...\n 1070│        // Idempotent: a second pass with the same input changes nothing.\n*1071│        assert!(!gapfill_peeraddrs(&mut pa, \"self\", &entries), \"no further change\");\n 1072│    }\n 1073│}\n 1074│\n\n#### pump/\n##### mod.rs\n   69│use spt_store::epoch::EpochSource;\n  *70│use spt_store::peeraddrs::PeerAddrStore;\n   71│use spt_store::perch;\n   72│use spt_store::subnet::SubnetStore;\n   73│use spt_store::visibility::VisibilityStore;\n     │...\n  250│    pub advertise_marker: PathBuf,\n *251│    /// `peer-addrs.json` — last-known peer addresses (M8 decisions 14/20,\n  252│    /// REQ-CONV-1): consulted before id-only discovery, written back after\n *253│    /// every successful dial ([`spt_store::peeraddrs::PeerAddrStore`]).\n *254│    pub peer_addrs: PathBuf,\n  255│    /// The pump's last-tick heartbeat (M8 decision 23, REQ-DAEMON-5):\n  256│    /// epoch-ms written while the loop is alive, rendered by\n  257│    /// `spt daemon status` / the `subnet status` stall warning\n     │...\n  282│            advertise_marker: identity.join(crate::registryhost::ADVERTISE_MARKER_FILE),\n *283│            peer_addrs: identity.join(\"peer-addrs.json\"),\n  284│            heartbeat: crate::endpoint::pump_heartbeat_path(),\n  285│            rotations: identity.join(\"rotation-pending.json\"),\n  286│        }\n     │...\n  626│            } else if peer_eligible(&sched, peer_hex, round_start) {\n *627│                if let Some(addr) = resolve_submit_addr(&resolver, peer_hex, &paths.peer_addrs) {\n  628│                    match brain.submit_dial(addr) {\n  629│                        Ok(()) => {\n  630│                            pending.insert(peer_hex.clone());\n     │...\n  665│                    ev, &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n *666│                    &mut pending, &peer_subnets, &ctx, &paths.peer_addrs, round_start,\n  667│                )?,\n  668│                DrainStep::Skip => continue, // the event carrier only carries presence\n  669│                DrainStep::RoundDone => break, // quiet (TimedOut) — drain done\n     │...\n  815│    ctx: &RoundCtx,\n *816│    peer_addrs: &std::path::Path,\n  817│    now: Instant,\n  818│) -> io::Result<()> {\n  819│    let is_target = peer_subnets.contains_key(&ev.remote_id_hex);\n *820│    if presence_state_effect(&ev, conns, sched, pending, peer_addrs, is_target, now) {\n  821│        // A CONNECTED peer that is a fan target this round → advertise NOW.\n  822│        if let Some(subs) = peer_subnets.get(&ev.remote_id_hex) {\n  823│            run_peer_subnets(\n     │...\n  852│    pending: &mut HashSet<String>,\n *853│    peer_addrs: &std::path::Path,\n  854│    is_target: bool,\n  855│    now: Instant,\n  856│) -> bool {\n     │...\n  864│                let _ =\n *865│                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\n  866│            }\n  867│            is_target\n  868│        }\n     │...\n  879│            // eligible round re-resolves via id-only discovery.\n *880│            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\n  881│            false\n  882│        }\n  883│        PRESENCE_DISCONNECTED => {\n     │...\n  939│/// Resolve the ONE address to submit a non-blocking dial to (M8 decisions 14/20,\n *940│/// REQ-CONV-1 seeded order): the durable last-known address (`peer-addrs.json`)\n  941│/// FIRST — the cold-start fast path that skips the id-only discovery round-trip —\n  942│/// else the injected resolver (production: id-only discovery). A stale seed costs\n *943│/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\n  944│/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\n  945│/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\n  946│/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\n     │...\n  952│    peer_hex: &str,\n *953│    peer_addrs: &std::path::Path,\n  954│) -> Option<serde_json::Value> {\n *955│    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\n  956│        return Some(seeded); // seeded FIRST (cold-start fast path)\n  957│    }\n  958│    resolver(peer_hex) // miss → id-only discovery\n     │...\n 1490│        let dir = tempfile::tempdir().unwrap();\n*1491│        let seeds = dir.path().join(\"peer-addrs.json\");\n 1492│        let mut conns: HashMap<String, u64> = HashMap::new();\n 1493│        let mut sched: HashMap<String, PeerSched> = HashMap::new();\n 1494│        let mut pending: HashSet<String> =\n     │...\n 1678│        let dir = tempfile::tempdir().unwrap();\n*1679│        let seeds = dir.path().join(\"peer-addrs.json\");\n 1680│        let seeded_addr = serde_json::json!({\"id\": \"ab\", \"addrs\": [\"192.168.1.7:4711\"]});\n 1681│        let id_only = serde_json::json!({\"id\": \"ab\", \"addrs\": []});\n 1682│        let resolver: PeerResolver = {\n     │...\n 1694│        // Seeded: the recorded addr is submitted FIRST (skips discovery).\n*1695│        PeerAddrStore::record(&seeds, \"ab\", seeded_addr.clone()).unwrap();\n 1696│        assert_eq!(\n 1697│            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1698│            Some(seeded_addr.clone()),\n     │...\n 1703│        // resolves via id-only discovery again — the peer is never stranded.\n*1704│        PeerAddrStore::drop_seed(&seeds, \"ab\").unwrap();\n 1705│        assert_eq!(\n 1706│            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1707│            Some(id_only.clone()),\n\n### tests/\n#### mesh.rs\n 178│            // re-dial its still-running broker and wedge on a node modelled as\n*179│            // gone. peer_addrs points under a regular FILE so create_dir_all\n 180│            // fails and record() no-ops; load_from then always reads empty.\n*181│            peer_addrs: root.join(\"noseed\").join(\"peer-addrs.json\"),\n 182│            heartbeat: root.join(\"pump-heartbeat.json\"),\n 183│            rotations: root.join(\"rotation-pending.json\"),\n 184│        };\n    │...\n 361│        advertise_marker: p.advertise_marker.clone(),\n*362│        peer_addrs: p.peer_addrs.clone(),\n 363│        heartbeat: p.heartbeat.clone(),\n 364│        rotations: p.rotations.clone(),\n 365│    }\n#### pump.rs\n  97│        advertise_marker: root.join(\"advertise-now\"),\n *98│        peer_addrs: root.join(\"peer-addrs.json\"),\n  99│        heartbeat: root.join(\"pump-heartbeat.json\"),\n 100│        rotations: root.join(\"rotation-pending.json\"),\n 101│    }\n    │...\n 258│        advertise_marker: a_root.join(\"advertise-now\"),\n*259│        peer_addrs: a_root.join(\"peer-addrs.json\"),\n 260│        heartbeat: a_root.join(\"pump-heartbeat.json\"),\n 261│        rotations: a_root.join(\"rotation-pending.json\"),\n 262│    };\n    │...\n 394│            advertise_marker: a_paths.advertise_marker.clone(),\n*395│            peer_addrs: a_paths.peer_addrs.clone(),\n 396│            heartbeat: a_paths.heartbeat.clone(),\n 397│            rotations: a_paths.rotations.clone(),\n 398│        };\n#### rosterprop.rs\n 44│/// the proven subnets' slice; the sink merges the peer's slice in. Mirrors\n*45│/// `production_roster_exchange` minus the file/peeraddrs plumbing.\n 46│fn test_exchange(store: Arc<Mutex<RosterStore>>, self_hex: String) -> RosterExchange {\n 47│    let prov_store = Arc::clone(&store);\n 48│    let sink_store = Arc::clone(&store);\n#### twohost.rs\n 306│        advertise_marker: home.join(\"identity\").join(\"advertise-now\"),\n*307│        peer_addrs: home.join(\"identity\").join(\"peer-addrs.json\"),\n 308│        heartbeat: home.join(\"identity\").join(\"pump-heartbeat.json\"),\n 309│        rotations: home.join(\"identity\").join(\"rotation-pending.json\"),\n 310│    }\n\n## spt-store/src/\n### lib.rs\n 30│pub mod notif;\n*31│pub mod peeraddrs;\n 32│pub mod perch;\n 33│pub mod proc;\n 34│pub mod project;\n### peeraddrs.rs\n   2│//!\n  *3│//! `identity/peer-addrs.json` maps a trusted peer's stable name\n   4│//! (lowercase-hex pubkey) to its **last-known dialable address** — an opaque,\n   5│//! serde-serialized iroh `EndpointAddr` (this crate never grows an iroh\n   6│//! dependency edge; the value's shape belongs to the net layer, same posture\n    │...\n  27│\n *28│/// The canonical path: `<spt_home>/identity/peer-addrs.json` (sibling of\n  29│/// `pump-ops.json` — M8 decision 20).\n *30│pub fn peer_addrs_file() -> PathBuf {\n  31│    crate::perch::spt_home()\n  32│        .join(\"identity\")\n *33│        .join(\"peer-addrs.json\")\n  34│}\n  35│\n  36│/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\n  37│#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\n *38│pub struct PeerAddrStore {\n  39│    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\n  40│    #[serde(default)]\n  41│    pub addrs: BTreeMap<String, serde_json::Value>,\n    │...\n  43│\n *44│impl PeerAddrStore {\n *45│    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\n *46│    pub fn load() -> PeerAddrStore {\n *47│        Self::load_from(&peer_addrs_file())\n  48│    }\n  49│\n  50│    /// Load from an explicit path. Absent/corrupt degrades to empty — a\n    │...\n  52│    /// discovery path is always behind it).\n *53│    pub fn load_from(path: &Path) -> PeerAddrStore {\n  54│        match std::fs::read_to_string(path) {\n  55│            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\n *56│            Err(_) => PeerAddrStore::default(),\n  57│        }\n  58│    }\n  59│\n    │...\n  61│    pub fn save(&self) -> std::io::Result<()> {\n *62│        self.save_to(&peer_addrs_file())\n  63│    }\n  64│\n  65│    /// Persist to an explicit path (atomic; creates the parent dir).\n    │...\n  85│            _ => {\n *86│                self.addrs.insert(peer_hex.to_string(), addr);\n  87│                true\n  88│            }\n  89│        }\n    │...\n 134│        let dir = tempfile::tempdir().unwrap();\n*135│        let path = dir.path().join(\"peer-addrs.json\");\n 136│\n*137│        let mut store = PeerAddrStore::load_from(&path);\n 138│        assert!(store.get(\"ab12\").is_none(), \"absent file = empty\");\n 139│\n 140│        let addr = serde_json::json!({\"id\": \"ab12\", \"addrs\": [\"192.168.1.7:4711\"]});\n    │...\n 144│\n*145│        let reloaded = PeerAddrStore::load_from(&path);\n 146│        assert_eq!(reloaded.get(\"ab12\"), Some(&addr), \"addr survives reload\");\n 147│        assert!(reloaded.get(\"cd34\").is_none(), \"unknown peer stays a miss\");\n 148│\n    │...\n 159│        let dir = tempfile::tempdir().unwrap();\n*160│        let path = dir.path().join(\"peer-addrs.json\");\n 161│        std::fs::write(&path, \"not json {{{\").unwrap();\n*162│        assert!(PeerAddrStore::load_from(&path).addrs.is_empty());\n 163│    }\n 164│\n 165│    // [unit->REQ-CONV-1] the one-step record (load → put → save) lands on\n    │...\n 169│        let dir = tempfile::tempdir().unwrap();\n*170│        let path = dir.path().join(\"peer-addrs.json\");\n 171│        let addr = serde_json::json!({\"id\": \"ef56\"});\n 172│\n*173│        PeerAddrStore::record(&path, \"ef56\", addr.clone()).unwrap();\n### roster.rs\n  98│    /// `EndpointAddr` (this crate never grows an iroh edge; same posture as\n *99│    /// [`PeerAddrStore`](crate::peeraddrs)). `None` until one is observed.\n 100│    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n 101│    pub address: Option<serde_json::Value>,\n 102│    /// Last-seen stamp (opaque epoch-seconds string).\n\n## spt/\n\n### src/\n#### wansend.rs\n   65│/// Resolve a peer's dial address SEED-FIRST (#9/#10 defect a): the durable\n  *66│/// last-known DIRECT address from [`PeerAddrStore`] (the same warm cache the\n   67│/// gossip pump's `dial_seeded` uses) BEFORE the id-only `addr_for_node_hex`,\n   68│/// which carries no transport paths and forces a fresh iroh discovery every\n   69│/// send. `spt send` was hard-wired to the id-only form, so it rode a cold\n     │...\n   74│fn seed_first_addr(hex: &str) -> Option<serde_json::Value> {\n  *75│    spt_store::peeraddrs::PeerAddrStore::load()\n   76│        .get(hex)\n   77│        .cloned()\n   78│        .or_else(|| addr_for_node_hex(hex).and_then(|a| serde_json::to_value(a).ok()))\n     │...\n  900│    // [unit->REQ-WAN-SEND-DELIVERY] defect (a): the WAN dial resolves the cached\n *901│    // DIRECT address (PeerAddrStore) FIRST — the warm path the gossip pump rides —\n  902│    // before the id-only discovery fallback. A `spt send` that ignored the cache\n  903│    // rode a cold discovery every time (marginal on a degraded box) while gossip\n  904│    // stayed green on the seed.\n     │...\n  906│    fn seed_first_addr_prefers_the_cached_direct_address() {\n *907│        use spt_store::peeraddrs::{peer_addrs_file, PeerAddrStore};\n  908│        let _home = isolated_home();\n  909│        let peer = \"abc123peerhex\";\n  910│        let seeded = serde_json::json!({ \"direct\": \"warm-cached-addr\" });\n *911│        PeerAddrStore::record(&peer_addrs_file(), peer, seeded.clone()).unwrap();\n  912│        assert_eq!(\n  913│            seed_first_addr(peer),\n  914│            Some(seeded),\n     │...\n 1397│    fn resolve_and_dial_owner_dials_the_resolved_node() {\n*1398│        use spt_store::peeraddrs::{peer_addrs_file, PeerAddrStore};\n 1399│        let _home = isolated_home();\n 1400│        let dir = tempfile::tempdir().unwrap();\n 1401│        let (a_name, b_name) = (\n     │...\n 1418│        write_snapshot(\"s1\", \"ling-remote\", &b_hex);\n*1419│        PeerAddrStore::record(&peer_addrs_file(), &b_hex, b_addr).unwrap();\n 1420│\n 1421│        match resolve_and_dial_owner(&mut a, \"ling-remote\") {\n 1422│            OwnerDial::Dialed { node, .. } => {\n\n### tests/\n#### twohost_cli.rs\n 370│    std::fs::write(\n*371│        identity_dir.join(\"peer-addrs.json\"),\n 372│        serde_json::to_string(&addrs).expect(\"peer addrs json\"),\n 373│    )\n*374│    .expect(\"write peer-addrs.json\");\n 375│}\n 376│\n 377│/// Create a perch record for `id` on this host. `pid` picks the advertised\n\n## xtask/src/\n### main.rs\n 1178│    let resolver = spt_daemon::pump::production_resolver();\n*1179│    let seeds = spt_store::peeraddrs::PeerAddrStore::load();\n 1180│\n 1181│    println!(\n 1182│        \"DEBUG_CONVERGE target={target} channel=debug{} expected={}\","},"isError":false,"timestamp":1784069141225}}
{"type":"message","id":"637166fc","parentId":"bec08448","timestamp":"2026-07-14T22:45:41.227Z","message":{"role":"toolResult","toolCallId":"call_asHN72EXrJ6bdHNilEBjRj5S|fc_050f56f290a937ae016a56bc1511d08196958e2062d141c6ea","toolName":"grep","content":[{"type":"text","text":"No matches found"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core","searchPath":"C:/Users/decid/AppData/Local/spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069141227}}
{"type":"message","id":"bd294695","parentId":"637166fc","timestamp":"2026-07-14T22:45:41.235Z","message":{"role":"toolResult","toolCallId":"call_h0oZPVeksJ8dJvH96gHCAI35|fc_050f56f290a937ae016a56bc1511b08196a1e6bd52eba087c8","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/\n## rca-active-20260709-222659/\nstatus.active.json\ndaemon.stderr.active.log\nkeep-rc.ps1\nlia.stdin\ndoyle.stdin\nflynn.stdin\ndeployah.stdin\ndaemon.stderr.log\nspt.pre-active.exe\ndaemon.stderr.log.1\n### releases.before/\n## rca-capture-20260709-215646/\nstatus.after-apply.json\ndaemon.stderr.log\ninstall-and-start.ps1\nprepare-and-start.ps1\nstatus.pre.txt\ndaemon.stderr.pre.log\nspt.pre-capture.exe\ndaemon.stderr.log.1\ndaemon.stderr.pre.log.1\n### releases.before/"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core","fileCount":21,"files":["C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/keep-rc.ps1","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/lia.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/doyle.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/flynn.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/deployah.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/releases.before/","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/spt.pre-active.exe","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/install-and-start.ps1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/prepare-and-start.ps1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/releases.before/","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/spt.pre-capture.exe","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log.1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log.1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log.1"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069141235}}
{"type":"message","id":"ae5b20e8","parentId":"bd294695","timestamp":"2026-07-14T22:45:52.702Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating peer address mismatch**"},{"type":"toolCall","id":"call_yip7cHQhcNPm81pCenD7DymG|fc_050f56f290a937ae016a56bc20967c8196b6398f2a05839a97","name":"read","arguments":{"i":"Reading captured daemon status","path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json","selector":"raw"}},{"type":"toolCall","id":"call_BshIfCq8kFgTvJmYqxTQH61A|fc_050f56f290a937ae016a56bc2096908196aa04155f105ad317","name":"read","arguments":{"i":"Reading pre-update status","path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt","selector":"raw"}},{"type":"toolCall","id":"call_OykgdIdVK7uVCWTBJDUdjK8h|fc_050f56f290a937ae016a56bc209694819691700bffa3e47ebe","name":"read","arguments":{"i":"Reading post-update status","path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json","selector":"raw"}},{"type":"toolCall","id":"call_z7JokA5Eqeng6KzENRmOjRs4|fc_050f56f290a937ae016a56bc20969c81969abb00f53e659663","name":"read","arguments":{"i":"Reading address store invariants","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs","selector":"36-125"}},{"type":"toolCall","id":"call_RoldFX0zK2utVSk7IeAaGQWN|fc_050f56f290a937ae016a56bc2096a08196b0f4711e09d759a3","name":"read","arguments":{"i":"Reading pump scheduling flow","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","selector":"584-681,815-967,1008-1084"}},{"type":"toolCall","id":"call_4gDUTrQ4FPNDSZJlTUjFxVoj|fc_050f56f290a937ae016a56bc2096a481969cb0cbebf826185f","name":"read","arguments":{"i":"Reading daemon health collection","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","selector":"3960-4035,4110-4215"}},{"type":"toolCall","id":"call_SzBM75zot9wmCpWgAqLHCuY0|fc_050f56f290a937ae016a56bc2096a88196a1873e4f43dc31ff","name":"read","arguments":{"i":"Reading status node grouping","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","selector":"2960-3090"}},{"type":"toolCall","id":"call_p0xSiEnS24zZaoc5S0ood9SC|fc_050f56f290a937ae016a56bc2096b08196a2a18875b6a984a1","name":"read","arguments":{"i":"Reading subnet node probing","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/serveprobe.rs","selector":"1-190"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":12802,"output":538,"cacheRead":119296,"cacheWrite":0,"totalTokens":132636,"reasoningTokens":112,"cost":{"input":0.06401000000000001,"output":0.01614,"cacheRead":0.059648,"cacheWrite":0,"total":0.139798}},"stopReason":"toolUse","timestamp":1784069141639,"responseId":"resp_050f56f290a937ae016a56bc15bd84819681cfbf2194c0e343","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc16c4908196a86d25ecceffc84b","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrwgcbeUEEJIznhP_LR82OKlbCU60NVv_Ebs3tJMaIzwMBHN8Qoo74qWq3il9l9v2LMQ-cpp_mFe5tlL09oUVxmd6NznwvC-3_OcAOO_-bHL5SYagkUuXbBL0_lKgEq6TbLPwkSXWkHjoLRPVlniv4lRgRssDGyy33eBkWT3iwPpkCmBYNuJ-DF7cmVaK_br-OUg3knPx-8U1foLFc-sYZMkd-iAcnz651o4jBSClGJex0MFfoOHyu3cQy6GgJVbbpfoC4MZYcMpXwWh_jKotHZLwniB9QKT53KS9Lq5yQu9gI0OTsexbFMoTTh6PtE9Zicvdi8W5i4-GZnTbi2LPrj8FPaJOeJfSTagwcmULZhPRJiv6iSjmDRyTMzJqDObGiU0uZBcvxZyAMs_hzKn6hTp-lRkAlyvJU-51rc8-9ffX9tE9l9qZpkfeJN8fd6PBpppfBiIXyl8nPyRiB1h5Rhgs6-3T0CW3xdGNyl_URwyx7D5YcApfKmwDiW9JuU5Crn9ZVlIm1S_CaDTj9JcRGvwAIO8j5E49g08cC7Z5ok2edBXOCaWj4G2HOFC-NGAVtcCIbKNt9_VreppYoPnpcGGAhRXEO0Gu0fxzsb43FT4fdp2znPpYXqdHethPmEgoL3lNF1LP6e8tKUZ89lWFBZYyxzcFEWdbn0kKd7mZstq0r3JCE8JaNlj1sGxX72g0d_fcjyXSZUJZ6-FBnZf2DvqgGXHYASkRz9B1albINa6ugfSASzBf4QmkWXAgMP5Zz_veS3mlFYcFDlpTR9JiYj1yVlDpUvq57GS7uL6h0yket07ufqYGL6v3IHM82f_asiMkLoAhYhtnrXGjcS9EHXX6-lthQBQQK7B13xWEvSpu1_qdOJ5fLKLA_8tx2oBQJfs1BJzGA7JcviBUvDP8X_7txAOe6yWYJV49rsy_rsHlHvNmncOBB_DKOfSSU9qt9l-N5cc8Rk_G0P-g9FP2hhTvra-IRJRMyV5KzQ4nRQw8e8j6goFJ47CztWwRKN2-WVSESu2YDLqW_7hgRu-RebBsPkEHjzvEVOuwyjhkix5RbtGumXx5TDnV-4CaniJJSi-RNerxouKuogy28WTR5Hes8pB3XcZY8musuLLAULzTulPRhToN6xbVCniY3MoI1scDeu7oxR04X5A4tZK_si_LkcPKgDWaqA7epqYZqgLhWTkTKYTpK2U7mRLOV5tmYE8o7uCdd71uDgjNu6QgygVqC3QaRGoRjkIAEwY4PSDrMDy-YqFTQzauzQffapBxFmgNqa0xrwEJDXTG_KHYDMtr9kVwfAZW9xLdh_Q-pNWy9GDGHbP3JmHHaAiQXpi-bCmTGj20UOBS2a04mW09kV5HqnpS4oPmtb2-MpGKraLFACV3xo1Xpus530bE6Ne77oTl1jv_rabPlYmj98Z18xEYX7ouBhGSeqq5zPa2ii05JgzyXqFi6yz-elIqabRd_X4FJhNAKK5ZIbOS3b0lyNaRTghoZGdhagcUBHDGRbJrIiwn9g4hW53q1mQnAp_TwyJHhrICa_ZRHA2couc2aCOMP1q4Sg5MSGRNC6OaC2rOU9BHFm_j5Za4eLzLUpLkWwlksyFDIw4gD_p1pJOIM_IZA==","summary":[{"type":"summary_text","text":"**Investigating peer address mismatch**"}]},{"id":"fc_050f56f290a937ae016a56bc20967c8196b6398f2a05839a97","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading captured daemon status\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json\",\"selector\":\"raw\"}","call_id":"call_yip7cHQhcNPm81pCenD7DymG","name":"read"},{"id":"fc_050f56f290a937ae016a56bc2096908196aa04155f105ad317","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading pre-update status\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt\",\"selector\":\"raw\"}","call_id":"call_BshIfCq8kFgTvJmYqxTQH61A","name":"read"},{"id":"fc_050f56f290a937ae016a56bc209694819691700bffa3e47ebe","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading post-update status\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json\",\"selector\":\"raw\"}","call_id":"call_OykgdIdVK7uVCWTBJDUdjK8h","name":"read"},{"id":"fc_050f56f290a937ae016a56bc20969c81969abb00f53e659663","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading address store invariants\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs\",\"selector\":\"36-125\"}","call_id":"call_z7JokA5Eqeng6KzENRmOjRs4","name":"read"},{"id":"fc_050f56f290a937ae016a56bc2096a08196b0f4711e09d759a3","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading pump scheduling flow\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs\",\"selector\":\"584-681,815-967,1008-1084\"}","call_id":"call_RoldFX0zK2utVSk7IeAaGQWN","name":"read"},{"id":"fc_050f56f290a937ae016a56bc2096a481969cb0cbebf826185f","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading daemon health collection\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"selector\":\"3960-4035,4110-4215\"}","call_id":"call_4gDUTrQ4FPNDSZJlTUjFxVoj","name":"read"},{"id":"fc_050f56f290a937ae016a56bc2096a88196a1873e4f43dc31ff","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading status node grouping\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"selector\":\"2960-3090\"}","call_id":"call_SzBM75zot9wmCpWgAqLHCuY0","name":"read"},{"id":"fc_050f56f290a937ae016a56bc2096b08196a2a18875b6a984a1","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading subnet node probing\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/serveprobe.rs\",\"selector\":\"1-190\"}","call_id":"call_p0xSiEnS24zZaoc5S0ood9SC","name":"read"}]},"duration":11060.870299994946,"ttft":1156.7160999774933,"contextSnapshot":{"promptTokens":132098,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_yip7cHQhcNPm81pCenD7DymG|fc_050f56f290a937ae016a56bc20967c8196b6398f2a05839a97","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json"},"intent":"Reading captured daemon status"},"id":"3d5b1bcb","parentId":"ae5b20e8","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_BshIfCq8kFgTvJmYqxTQH61A|fc_050f56f290a937ae016a56bc2096908196aa04155f105ad317","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt"},"intent":"Reading pre-update status"},"id":"41926c95","parentId":"3d5b1bcb","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_OykgdIdVK7uVCWTBJDUdjK8h|fc_050f56f290a937ae016a56bc209694819691700bffa3e47ebe","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json"},"intent":"Reading post-update status"},"id":"4e8144e3","parentId":"41926c95","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_z7JokA5Eqeng6KzENRmOjRs4|fc_050f56f290a937ae016a56bc20969c81969abb00f53e659663","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs"},"intent":"Reading address store invariants"},"id":"94edeafb","parentId":"4e8144e3","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_RoldFX0zK2utVSk7IeAaGQWN|fc_050f56f290a937ae016a56bc2096a08196b0f4711e09d759a3","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs"},"intent":"Reading pump scheduling flow"},"id":"4b88d517","parentId":"94edeafb","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_4gDUTrQ4FPNDSZJlTUjFxVoj|fc_050f56f290a937ae016a56bc2096a481969cb0cbebf826185f","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"intent":"Reading daemon health collection"},"id":"03364a27","parentId":"4b88d517","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_SzBM75zot9wmCpWgAqLHCuY0|fc_050f56f290a937ae016a56bc2096a88196a1873e4f43dc31ff","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"intent":"Reading status node grouping"},"id":"ac89452e","parentId":"03364a27","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_p0xSiEnS24zZaoc5S0ood9SC|fc_050f56f290a937ae016a56bc2096b08196a2a18875b6a984a1","toolName":"read","startedAt":"2026-07-14T22:45:52.702Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/serveprobe.rs"},"intent":"Reading subnet node probing"},"id":"c92c63c5","parentId":"ac89452e","timestamp":"2026-07-14T22:45:52.702Z"}
{"type":"message","id":"6f351d91","parentId":"c92c63c5","timestamp":"2026-07-14T22:45:52.705Z","message":{"role":"toolResult","toolCallId":"call_yip7cHQhcNPm81pCenD7DymG|fc_050f56f290a937ae016a56bc20967c8196b6398f2a05839a97","toolName":"read","content":[{"type":"text","text":"{\n  \"running\": true,\n  \"pid\": \"82604\",\n  \"net_up\": true,\n  \"pump_heartbeat_ms\": 1783661718037,\n  \"managed_by\": null,\n  \"managed_active\": null,\n  \"subnets\": [\n    {\n      \"name\": \"SPT_DEV\",\n      \"nodes\": 5,\n      \"endpoints\": 11\n    },\n    {\n      \"name\": \"BIGNET\",\n      \"nodes\": 3,\n      \"endpoints\": 11\n    },\n    {\n      \"name\": \"BS-Resources\",\n      \"nodes\": 6,\n      \"endpoints\": 18\n    }\n  ],\n  \"local_endpoints\": [\n    {\n      \"id\": \"chert\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"deployah\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"doyle\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"emphasys\",\n      \"state\": \"ready_agent\",\n      \"address\": null,\n      \"ready\": false,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"flynn\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"hall-bf\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": false,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"hertz\",\n      \"state\": \"ready_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"lia\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"mobile-gw\",\n      \"state\": \"gateway\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"perri\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"todlando\",\n      \"state\": \"ready_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    }\n  ],\n  \"broker_image\": \"0.30.0\",\n  \"broker_stale\": true,\n  \"stall_evict_count\": 8,\n  \"stall_evict_last_ms\": 1783661631593\n}\n"}],"details":{"displayContent":{"text":"{\r\n  \"running\": true,\r\n  \"pid\": \"82604\",\r\n  \"net_up\": true,\r\n  \"pump_heartbeat_ms\": 1783661718037,\r\n  \"managed_by\": null,\r\n  \"managed_active\": null,\r\n  \"subnets\": [\r\n    {\r\n      \"name\": \"SPT_DEV\",\r\n      \"nodes\": 5,\r\n      \"endpoints\": 11\r\n    },\r\n    {\r\n      \"name\": \"BIGNET\",\r\n      \"nodes\": 3,\r\n      \"endpoints\": 11\r\n    },\r\n    {\r\n      \"name\": \"BS-Resources\",\r\n      \"nodes\": 6,\r\n      \"endpoints\": 18\r\n    }\r\n  ],\r\n  \"local_endpoints\": [\r\n    {\r\n      \"id\": \"chert\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"deployah\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"doyle\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"emphasys\",\r\n      \"state\": \"ready_agent\",\r\n      \"address\": null,\r\n      \"ready\": false,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"flynn\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"hall-bf\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": false,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"hertz\",\r\n      \"state\": \"ready_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"lia\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"mobile-gw\",\r\n      \"state\": \"gateway\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"perri\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"todlando\",\r\n      \"state\": \"ready_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    }\r\n  ],\r\n  \"broker_image\": \"0.30.0\",\r\n  \"broker_stale\": true,\r\n  \"stall_evict_count\": 8,\r\n  \"stall_evict_last_ms\": 1783661631593\r\n}\r\n","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json"}}},"isError":false,"timestamp":1784069152705}}
{"type":"message","id":"a55d7b10","parentId":"6f351d91","timestamp":"2026-07-14T22:45:52.706Z","message":{"role":"toolResult","toolCallId":"call_BshIfCq8kFgTvJmYqxTQH61A|fc_050f56f290a937ae016a56bc2096908196aa04155f105ad317","toolName":"read","content":[{"type":"text","text":"daemon: running (pid 62164)\npeer pump: live (last tick 3s ago)\nbroker image: 0.30.5 (matches installed)\nbrain subscribers: healthy (none stall-evicted)\nmanaged-by: manual — at-logon task 'spt-core daemon' registered (auto-starts at logon)\nsubnets:\n  SPT_DEV  nodes=5 endpoints=11\n  BIGNET  nodes=3 endpoints=11\n  BS-Resources  nodes=6 endpoints=16\nlocal endpoints:\n  chert                        live_agent     ready=true alive=false\n  deployah                     live_agent     ready=true alive=true\n  doyle                        live_agent     ready=true alive=true\n  emphasys                     ready_agent    ready=false alive=false\n  flynn                        live_agent     ready=true alive=true\n  hall-bf                      live_agent     ready=false alive=false\n  hertz                        ready_agent    ready=true alive=true\n  lia                          live_agent     ready=true alive=true\n  mobile-gw                    gateway        ready=true alive=true\n  perri                        live_agent     ready=true alive=false\n  todlando                     ready_agent    ready=true alive=true\n\n"}],"details":{"displayContent":{"text":"daemon: running (pid 62164)\r\npeer pump: live (last tick 3s ago)\r\nbroker image: 0.30.5 (matches installed)\r\nbrain subscribers: healthy (none stall-evicted)\r\nmanaged-by: manual — at-logon task 'spt-core daemon' registered (auto-starts at logon)\r\nsubnets:\r\n  SPT_DEV  nodes=5 endpoints=11\r\n  BIGNET  nodes=3 endpoints=11\r\n  BS-Resources  nodes=6 endpoints=16\r\nlocal endpoints:\r\n  chert                        live_agent     ready=true alive=false\r\n  deployah                     live_agent     ready=true alive=true\r\n  doyle                        live_agent     ready=true alive=true\r\n  emphasys                     ready_agent    ready=false alive=false\r\n  flynn                        live_agent     ready=true alive=true\r\n  hall-bf                      live_agent     ready=false alive=false\r\n  hertz                        ready_agent    ready=true alive=true\r\n  lia                          live_agent     ready=true alive=true\r\n  mobile-gw                    gateway        ready=true alive=true\r\n  perri                        live_agent     ready=true alive=false\r\n  todlando                     ready_agent    ready=true alive=true\r\n\r\n","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt"}}},"isError":false,"timestamp":1784069152705}}
{"type":"message","id":"a8d92b92","parentId":"a55d7b10","timestamp":"2026-07-14T22:45:52.829Z","message":{"role":"toolResult","toolCallId":"call_OykgdIdVK7uVCWTBJDUdjK8h|fc_050f56f290a937ae016a56bc209694819691700bffa3e47ebe","toolName":"read","content":[{"type":"text","text":"﻿{\n  \"running\": true,\n  \"pid\": \"82444\",\n  \"net_up\": true,\n  \"pump_heartbeat_ms\": 1783659727933,\n  \"managed_by\": null,\n  \"managed_active\": null,\n  \"subnets\": [\n    {\n      \"name\": \"SPT_DEV\",\n      \"nodes\": 5,\n      \"endpoints\": 11\n    },\n    {\n      \"name\": \"BIGNET\",\n      \"nodes\": 3,\n      \"endpoints\": 11\n    },\n    {\n      \"name\": \"BS-Resources\",\n      \"nodes\": 6,\n      \"endpoints\": 15\n    }\n  ],\n  \"local_endpoints\": [\n    {\n      \"id\": \"chert\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"deployah\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"doyle\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"emphasys\",\n      \"state\": \"ready_agent\",\n      \"address\": null,\n      \"ready\": false,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"flynn\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"hall-bf\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": false,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"hertz\",\n      \"state\": \"ready_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"lia\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"mobile-gw\",\n      \"state\": \"gateway\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"perri\",\n      \"state\": \"live_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": false,\n      \"unbound\": false\n    },\n    {\n      \"id\": \"todlando\",\n      \"state\": \"ready_agent\",\n      \"address\": null,\n      \"ready\": true,\n      \"alive\": true,\n      \"unbound\": false\n    }\n  ],\n  \"broker_image\": \"0.30.0\",\n  \"broker_stale\": true,\n  \"stall_evict_count\": 0,\n  \"stall_evict_last_ms\": 0\n}\n"}],"details":{"displayContent":{"text":"﻿{\r\n  \"running\": true,\r\n  \"pid\": \"82444\",\r\n  \"net_up\": true,\r\n  \"pump_heartbeat_ms\": 1783659727933,\r\n  \"managed_by\": null,\r\n  \"managed_active\": null,\r\n  \"subnets\": [\r\n    {\r\n      \"name\": \"SPT_DEV\",\r\n      \"nodes\": 5,\r\n      \"endpoints\": 11\r\n    },\r\n    {\r\n      \"name\": \"BIGNET\",\r\n      \"nodes\": 3,\r\n      \"endpoints\": 11\r\n    },\r\n    {\r\n      \"name\": \"BS-Resources\",\r\n      \"nodes\": 6,\r\n      \"endpoints\": 15\r\n    }\r\n  ],\r\n  \"local_endpoints\": [\r\n    {\r\n      \"id\": \"chert\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"deployah\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"doyle\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"emphasys\",\r\n      \"state\": \"ready_agent\",\r\n      \"address\": null,\r\n      \"ready\": false,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"flynn\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"hall-bf\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": false,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"hertz\",\r\n      \"state\": \"ready_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"lia\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"mobile-gw\",\r\n      \"state\": \"gateway\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"perri\",\r\n      \"state\": \"live_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": false,\r\n      \"unbound\": false\r\n    },\r\n    {\r\n      \"id\": \"todlando\",\r\n      \"state\": \"ready_agent\",\r\n      \"address\": null,\r\n      \"ready\": true,\r\n      \"alive\": true,\r\n      \"unbound\": false\r\n    }\r\n  ],\r\n  \"broker_image\": \"0.30.0\",\r\n  \"broker_stale\": true,\r\n  \"stall_evict_count\": 0,\r\n  \"stall_evict_last_ms\": 0\r\n}\r\n","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json"}}},"isError":false,"timestamp":1784069152829}}
{"type":"message","id":"ef4328e2","parentId":"a8d92b92","timestamp":"2026-07-14T22:45:52.829Z","message":{"role":"toolResult","toolCallId":"call_RoldFX0zK2utVSk7IeAaGQWN|fc_050f56f290a937ae016a56bc2096a08196b0f4711e09d759a3","toolName":"read","content":[{"type":"text","text":"pub fn run_peer_pump(\n…\n) -> io::Result<()> {\n…\n    while !stop.load(Ordering::Relaxed) {\n…\n        if due(last_hb, false, now, HEARTBEAT_PERIOD) {\n…\n            last_hb = Some(now);\n        }\n        // Poll every worker's wake and decide due (the pure scheduler step):\n        // every wake is consumed EVERY tick so a marker is never stranded (the\n        // registry advertise-now, REQ-CONV-2; the sync freshness pull,\n        // REQ-INST-3). The take IS the remove — one wake claims exactly one\n        // forced round.\n        let (due_flags, any_due) = compute_due(&mut workers, &last, now);\n        if !any_due {\n            thread::sleep(TICK);\n            continue;\n        }\n\n        // Per-round shared loads (§Frozen-3): subnets / attachment /\n        // roster-backed policy, read ONCE and handed to every worker.\n        let ctx = RoundCtx::load(paths);\n\n        // Each due worker's node-local pre_round, once per round before ANY\n        // peer_step (only the registry leg does work here — its sweep +\n        // advertise; the rest default to a no-op).\n        pre_rounds(&mut workers, &due_flags, &ctx);\n\n        // ── PUMP-TRUTH W2 round (REQ-PUMP-PEER-ISOLATION) — concurrent dials +\n        // per-peer fault isolation. Group this round's fan-out targets by peer (a\n        // peer may target several subnets; one conn serves them all).\n        let mut peer_subnets: HashMap<String, Vec<String>> = HashMap::new();\n        for (sub_name, peer_hex) in fan_targets(&ctx, registry.node_hex()) {\n            peer_subnets.entry(peer_hex).or_default().push(sub_name);\n        }\n        let round_start = Instant::now();\n        let mut pending: HashSet<String> = HashSet::new();\n\n        // Submit NON-BLOCKING dials for eligible unconnected peers; run the due\n        // legs NOW for already-connected ones. The live peer advertises without\n        // waiting on a dead one (no head-of-line block) — a dead peer is only a\n        // pending outcome, never a serial blocker.\n        for (peer_hex, subs) in &peer_subnets {\n            if let Some(&conn_id) = conns.get(peer_hex) {\n                run_peer_subnets(\n                    &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n                    conn_id, subs, peer_hex, &ctx, round_start,\n                )?;\n            } else if peer_eligible(&sched, peer_hex, round_start) {\n                if let Some(addr) = resolve_submit_addr(&resolver, peer_hex, &paths.peer_addrs) {\n                    match brain.submit_dial(addr) {\n                        Ok(()) => {\n                            pending.insert(peer_hex.clone());\n                        }\n                        // A raw carrier-op TimedOut on the submit IPC itself is a\n                        // genuine broker-IPC desync → bubble → supervised restart.\n                        Err(e) if e.kind() == io::ErrorKind::TimedOut => return Err(e),\n                        // The broker refused the submit (net disabled / bad addr):\n                        // an ordinary per-peer failure — back off, round continues.\n                        Err(e) => {\n                            eprintln!(\"PUMP_PEER_FAIL:{peer_hex}:{e}\");\n                            let prev = sched.get(peer_hex).copied();\n                            sched.insert(peer_hex.clone(), next_peer_backoff(prev, round_start));\n                        }\n                    }\n                }\n            }\n        }\n\n        // Drain dial outcomes on the DEDICATED event carrier until the round\n        // deadline (concurrent dials all land within ~one W1 bound). A CONNECTED\n        // runs that peer's legs in THIS round; a DIAL_FAILED backs the peer off; a\n        // peer unresolved at the deadline simply reschedules — NEVER a whole-round\n        // poison. `TimedOut` = quiet (drain done); any other read error = the\n        // broker stopped answering the stream (dead carrier) → bubble → supervised\n        // restart (the re-pointed REQ-HAZARD-PUMP-IPC-DEADLINE: a dead BROKER still\n        // restarts the pump; a dead PEER never does).\n        // [impl->REQ-HAZARD-PUMP-IPC-DEADLINE]\n        let round_deadline = round_start + PEER_REPLY_READ_BUDGET + ROUND_DRAIN_MARGIN;\n        loop {\n            let read_deadline = if pending.is_empty() {\n                Instant::now() // no outstanding submits — sweep only what is queued\n            } else {\n                round_deadline\n            };\n            match classify_drain_read(events.read_event_until(Some(read_deadline))) {\n                DrainStep::Apply(ev) => handle_presence_event(\n                    ev, &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n                    &mut pending, &peer_subnets, &ctx, &paths.peer_addrs, round_start,\n                )?,\n                DrainStep::Skip => continue, // the event carrier only carries presence\n                DrainStep::RoundDone => break, // quiet (TimedOut) — drain done\n                DrainStep::Restart(e) => return Err(e), // dead broker/carrier → restart\n            }\n        }\n\n        // Mark-after-round with a POST-round instant (ADR-0018 §V4: the\n        // stagger — ran = ATTEMPTED, not succeeded; the next due is measured\n        // from here, not from the round's start).\n        mark_ran(&mut last, &due_flags, Instant::now());\n    }\n    Ok(())\n}\n\n…\nfn handle_presence_event(\n…\n    ctx: &RoundCtx,\n    peer_addrs: &std::path::Path,\n    now: Instant,\n) -> io::Result<()> {\n    let is_target = peer_subnets.contains_key(&ev.remote_id_hex);\n    if presence_state_effect(&ev, conns, sched, pending, peer_addrs, is_target, now) {\n        // A CONNECTED peer that is a fan target this round → advertise NOW.\n        if let Some(subs) = peer_subnets.get(&ev.remote_id_hex) {\n            run_peer_subnets(\n                brain,\n                ops,\n                workers,\n                due_flags,\n                conns,\n                sched,\n                ev.conn_id,\n                subs,\n                &ev.remote_id_hex,\n                ctx,\n                now,\n            )?;\n        }\n    }\n    Ok(())\n}\n\n/// Apply a drained presence event's per-peer STATE effect — pure of the brain, so\n/// it is a UNIT fact (correlation by `remote_id_hex`, backoff on fail, reset on\n/// connect, disconnect drops the conn). Mutates conns / sched / pending + the seed\n/// store; returns `true` iff the peer's due legs should now run (a CONNECTED that\n/// is a fan target this round — `is_target`). See [`handle_presence_event`] for\n/// the per-kind rationale.\n// [impl->REQ-PUMP-PEER-ISOLATION]\nfn presence_state_effect(\n    ev: &NetPresenceEvent,\n    conns: &mut HashMap<String, u64>,\n    sched: &mut HashMap<String, PeerSched>,\n    pending: &mut HashSet<String>,\n    peer_addrs: &std::path::Path,\n    is_target: bool,\n    now: Instant,\n) -> bool {\n    match ev.kind.as_str() {\n        PRESENCE_CONNECTED => {\n            conns.insert(ev.remote_id_hex.clone(), ev.conn_id);\n            sched.remove(&ev.remote_id_hex); // live peer → reset backoff\n            pending.remove(&ev.remote_id_hex);\n            // REQ-CONV-1 write-back: seed the OBSERVED addr from the async connect.\n            if !ev.remote_addr.is_null() {\n                let _ =\n                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\n            }\n            is_target\n        }\n        PRESENCE_DIAL_FAILED => {\n            eprintln!(\n                \"PUMP_PEER_FAIL:{}:{}\",\n                ev.remote_id_hex,\n                ev.reason.as_deref().unwrap_or(\"dial failed\")\n            );\n            pending.remove(&ev.remote_id_hex);\n            let prev = sched.get(&ev.remote_id_hex).copied();\n            sched.insert(ev.remote_id_hex.clone(), next_peer_backoff(prev, now));\n            // Stale-seed self-heal (REQ-CONV-1): forget the seed so the next\n            // eligible round re-resolves via id-only discovery.\n            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\n            false\n        }\n        PRESENCE_DISCONNECTED => {\n            // Drop the cached conn — redial-eligible immediately, NO backoff (Q3).\n            conns.retain(|_, cid| *cid != ev.conn_id);\n            false\n        }\n        _ => false, // a future presence kind an older pump tolerates\n    }\n}\n\n/// Mark every due worker ran (ADR-0018 §V4: a POST-round `now`, ran =\n/// ATTEMPTED not succeeded). Non-due slots are untouched, so the stagger holds.\nfn mark_ran(last: &mut [Option<Instant>], due_flags: &[bool], now: Instant) {\n    for i in 0..last.len() {\n        if due_flags[i] {\n            last[i] = Some(now);\n        }\n    }\n}\n\n/// The round's fan-out targets: every `(subnet, peer)` this node pushes to —\n/// every member subnet that is NOT detached (REQ-SUBNET-5), crossed with that\n/// subnet's full roster minus self (REQ-MESH-3). One owned list so the order\n/// and the detached-skip are pure unit facts.\n// [impl->REQ-SUBNET-5]\nfn fan_targets(ctx: &RoundCtx, self_hex: &str) -> Vec<(String, String)> {\n    let mut out = Vec::new();\n    for sub in &ctx.subnets.subnets {\n        if ctx.attachment.is_detached(&sub.name) {\n            continue; // detached: neither advertise into nor connect to\n        }\n        for peer in push_targets(&ctx.policy.roster, &sub.name, self_hex) {\n            out.push((sub.name.clone(), peer));\n        }\n    }\n    out\n}\n\n/// The widened push target (Mesh-D6, REQ-MESH-3): every roster member of\n/// `subnet` except this node itself. Tombstoned members are already excluded by\n/// [`RosterStore::members_in`]. This is THE fan-out change — the push target is\n/// the full roster, not the directly-paired set — kept a pure function so the\n/// \"rows reach all members, never relayed\" widen is a unit fact, not just an\n/// integration property.\n// [impl->REQ-MESH-3]\nfn push_targets(\n    roster: &spt_store::roster::RosterStore,\n    subnet: &str,\n    self_hex: &str,\n) -> Vec<String> {\n    roster\n        .members_in(subnet)\n        .filter(|m| m.pubkey_hex != self_hex)\n        .map(|m| m.pubkey_hex.clone())\n        .collect()\n}\n\n/// Resolve the ONE address to submit a non-blocking dial to (M8 decisions 14/20,\n/// REQ-CONV-1 seeded order): the durable last-known address (`peer-addrs.json`)\n/// FIRST — the cold-start fast path that skips the id-only discovery round-trip —\n/// else the injected resolver (production: id-only discovery). A stale seed costs\n/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\n/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\n/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\n/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\n/// ([`handle_presence_event`]). `None` = unresolvable right now — the peer\n/// reschedules on its own cadence, never a round failure.\n// [impl->REQ-CONV-1]\nfn resolve_submit_addr(\n    resolver: &PeerResolver,\n    peer_hex: &str,\n    peer_addrs: &std::path::Path,\n) -> Option<serde_json::Value> {\n    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\n        return Some(seeded); // seeded FIRST (cold-start fast path)\n    }\n    resolver(peer_hex) // miss → id-only discovery\n}\n\n/// Open a fresh stream on `conn_id`, write one whole feed fire-and-forget,\n/// and finish it (the receiver's dispatcher classifies + applies). One\n/// stream per feed: streams are single-purpose by the demux contract.\nfn push_feed(brain: &mut Brain, conn_id: u64, feed: &[u8]) -> io::Result<()> {\n    let opened = brain.net_open_stream(conn_id, None)?;\n    brain.net_stream_send(opened.stream_id, feed, None, true)?;\n    Ok(())\n}\n…\nfn due(last: Option<Instant>, wake: bool, now: Instant, cadence: Duration) -> bool {\n    wake || last.is_none_or(|t| now.duration_since(t) >= cadence)\n}\n\n/// Write the pump's last-tick heartbeat (epoch ms) — the liveness fact\n/// `spt daemon status` renders and the `subnet status` stall warning reads\n/// (M8 decision 23). Best-effort: a failed write costs honesty, never the\n/// pump (and the reader treats an absent/unreadable file as \"no heartbeat\n/// recorded\", not as healthy).\n// [impl->REQ-DAEMON-5]\nfn write_heartbeat(path: &std::path::Path) {\n    if let Some(parent) = path.parent() {\n        let _ = std::fs::create_dir_all(parent);\n    }\n    let _ = spt_store::atomic::atomic_write_string(path, &now_ms().to_string());\n}\n\n/// The supervisor's next backoff after a death: a healthy run (survived\n/// [`SUPERVISE_HEALTHY_RUN`]) resets to the floor `base`; a fast death\n/// doubles, capped at [`SUPERVISE_BACKOFF_CAP`] (M8 decision 23 — a\n/// persistently-crashing pump stays visible and bounded, never silent and\n/// never a hot crash loop). Pure for the unit table.\n// [impl->REQ-DAEMON-5]\nfn next_backoff(prev: Duration, ran_for: Duration, base: Duration) -> Duration {\n    if ran_for >= SUPERVISE_HEALTHY_RUN {\n        base\n    } else {\n        prev.saturating_mul(2).min(SUPERVISE_BACKOFF_CAP)\n    }\n}\n\n/// Supervise repeated runs of a pump body until `stop` is raised (M8\n/// decision 23, REQ-DAEMON-5): a panic is CAUGHT and logged loud\n/// (`PEER_PUMP_PANIC`), an error return logged (`PEER_PUMP_FAIL`), and the\n/// body restarts after a capped, doubling backoff — a 5.9-class pump death\n/// self-heals visibly instead of silently halving the daemon for 24 h.\n/// `base` is the backoff floor (production: [`SUPERVISE_BACKOFF_BASE`];\n/// the unit harness shrinks it). Backoff sleeps in [`TICK`] slices so a\n/// stop request lands promptly. Generic over the body for the unit\n/// harness; production binds [`run_peer_pump`].\n// [impl->REQ-DAEMON-5]\npub fn supervise_pump(stop: &AtomicBool, base: Duration, mut body: impl FnMut() -> io::Result<()>) {\n    let mut backoff = base;\n    while !stop.load(Ordering::Relaxed) {\n        let started = Instant::now();\n        let outcome = std::panic::catch_unwind(std::panic::AssertUnwindSafe(&mut body));\n        if stop.load(Ordering::Relaxed) {\n            return; // a clean stop — whatever the body returned\n        }\n        let ran_for = started.elapsed();\n        match outcome {\n            // The body only returns Ok when stop is raised; reaching here\n            // without it is a died-loop fact — same restart as an error.\n            Ok(Ok(())) => eprintln!(\"PEER_PUMP_EXIT: loop returned without stop — restarting\"),\n            Ok(Err(e)) => eprintln!(\"PEER_PUMP_FAIL: {e}\"),\n            Err(panic) => {\n                let msg = panic\n                    .downcast_ref::<&str>()\n                    .map(|s| s.to_string())\n                    .or_else(|| panic.downcast_ref::<String>().cloned())\n                    .unwrap_or_else(|| \"<non-string panic>\".to_string());\n                eprintln!(\"PEER_PUMP_PANIC: {msg}\");\n            }\n        }\n        backoff = next_backoff(backoff, ran_for, base);\n        eprintln!(\n            \"PEER_PUMP_RESTART: supervised restart in {}s\",\n            backoff.as_secs()\n        );\n        let mut slept = Duration::ZERO;\n        while slept < backoff && !stop.load(Ordering::Relaxed) {\n            thread::sleep(TICK.min(backoff - slept));\n            slept += TICK;\n        }\n    }\n}\n"}],"details":{"displayContent":{"text":"pub fn run_peer_pump(\n…\n) -> io::Result<()> {\n…\n    while !stop.load(Ordering::Relaxed) {\n…\n        if due(last_hb, false, now, HEARTBEAT_PERIOD) {\n…\n            last_hb = Some(now);\n        }\n        // Poll every worker's wake and decide due (the pure scheduler step):\n        // every wake is consumed EVERY tick so a marker is never stranded (the\n        // registry advertise-now, REQ-CONV-2; the sync freshness pull,\n        // REQ-INST-3). The take IS the remove — one wake claims exactly one\n        // forced round.\n        let (due_flags, any_due) = compute_due(&mut workers, &last, now);\n        if !any_due {\n            thread::sleep(TICK);\n            continue;\n        }\n\n        // Per-round shared loads (§Frozen-3): subnets / attachment /\n        // roster-backed policy, read ONCE and handed to every worker.\n        let ctx = RoundCtx::load(paths);\n\n        // Each due worker's node-local pre_round, once per round before ANY\n        // peer_step (only the registry leg does work here — its sweep +\n        // advertise; the rest default to a no-op).\n        pre_rounds(&mut workers, &due_flags, &ctx);\n\n        // ── PUMP-TRUTH W2 round (REQ-PUMP-PEER-ISOLATION) — concurrent dials +\n        // per-peer fault isolation. Group this round's fan-out targets by peer (a\n        // peer may target several subnets; one conn serves them all).\n        let mut peer_subnets: HashMap<String, Vec<String>> = HashMap::new();\n        for (sub_name, peer_hex) in fan_targets(&ctx, registry.node_hex()) {\n            peer_subnets.entry(peer_hex).or_default().push(sub_name);\n        }\n        let round_start = Instant::now();\n        let mut pending: HashSet<String> = HashSet::new();\n\n        // Submit NON-BLOCKING dials for eligible unconnected peers; run the due\n        // legs NOW for already-connected ones. The live peer advertises without\n        // waiting on a dead one (no head-of-line block) — a dead peer is only a\n        // pending outcome, never a serial blocker.\n        for (peer_hex, subs) in &peer_subnets {\n            if let Some(&conn_id) = conns.get(peer_hex) {\n                run_peer_subnets(\n                    &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n                    conn_id, subs, peer_hex, &ctx, round_start,\n                )?;\n            } else if peer_eligible(&sched, peer_hex, round_start) {\n                if let Some(addr) = resolve_submit_addr(&resolver, peer_hex, &paths.peer_addrs) {\n                    match brain.submit_dial(addr) {\n                        Ok(()) => {\n                            pending.insert(peer_hex.clone());\n                        }\n                        // A raw carrier-op TimedOut on the submit IPC itself is a\n                        // genuine broker-IPC desync → bubble → supervised restart.\n                        Err(e) if e.kind() == io::ErrorKind::TimedOut => return Err(e),\n                        // The broker refused the submit (net disabled / bad addr):\n                        // an ordinary per-peer failure — back off, round continues.\n                        Err(e) => {\n                            eprintln!(\"PUMP_PEER_FAIL:{peer_hex}:{e}\");\n                            let prev = sched.get(peer_hex).copied();\n                            sched.insert(peer_hex.clone(), next_peer_backoff(prev, round_start));\n                        }\n                    }\n                }\n            }\n        }\n\n        // Drain dial outcomes on the DEDICATED event carrier until the round\n        // deadline (concurrent dials all land within ~one W1 bound). A CONNECTED\n        // runs that peer's legs in THIS round; a DIAL_FAILED backs the peer off; a\n        // peer unresolved at the deadline simply reschedules — NEVER a whole-round\n        // poison. `TimedOut` = quiet (drain done); any other read error = the\n        // broker stopped answering the stream (dead carrier) → bubble → supervised\n        // restart (the re-pointed REQ-HAZARD-PUMP-IPC-DEADLINE: a dead BROKER still\n        // restarts the pump; a dead PEER never does).\n        // [impl->REQ-HAZARD-PUMP-IPC-DEADLINE]\n        let round_deadline = round_start + PEER_REPLY_READ_BUDGET + ROUND_DRAIN_MARGIN;\n        loop {\n            let read_deadline = if pending.is_empty() {\n                Instant::now() // no outstanding submits — sweep only what is queued\n            } else {\n                round_deadline\n            };\n            match classify_drain_read(events.read_event_until(Some(read_deadline))) {\n                DrainStep::Apply(ev) => handle_presence_event(\n                    ev, &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n                    &mut pending, &peer_subnets, &ctx, &paths.peer_addrs, round_start,\n                )?,\n                DrainStep::Skip => continue, // the event carrier only carries presence\n                DrainStep::RoundDone => break, // quiet (TimedOut) — drain done\n                DrainStep::Restart(e) => return Err(e), // dead broker/carrier → restart\n            }\n        }\n\n        // Mark-after-round with a POST-round instant (ADR-0018 §V4: the\n        // stagger — ran = ATTEMPTED, not succeeded; the next due is measured\n        // from here, not from the round's start).\n        mark_ran(&mut last, &due_flags, Instant::now());\n    }\n    Ok(())\n}\n\n…\nfn handle_presence_event(\n…\n    ctx: &RoundCtx,\n    peer_addrs: &std::path::Path,\n    now: Instant,\n) -> io::Result<()> {\n    let is_target = peer_subnets.contains_key(&ev.remote_id_hex);\n    if presence_state_effect(&ev, conns, sched, pending, peer_addrs, is_target, now) {\n        // A CONNECTED peer that is a fan target this round → advertise NOW.\n        if let Some(subs) = peer_subnets.get(&ev.remote_id_hex) {\n            run_peer_subnets(\n                brain,\n                ops,\n                workers,\n                due_flags,\n                conns,\n                sched,\n                ev.conn_id,\n                subs,\n                &ev.remote_id_hex,\n                ctx,\n                now,\n            )?;\n        }\n    }\n    Ok(())\n}\n\n/// Apply a drained presence event's per-peer STATE effect — pure of the brain, so\n/// it is a UNIT fact (correlation by `remote_id_hex`, backoff on fail, reset on\n/// connect, disconnect drops the conn). Mutates conns / sched / pending + the seed\n/// store; returns `true` iff the peer's due legs should now run (a CONNECTED that\n/// is a fan target this round — `is_target`). See [`handle_presence_event`] for\n/// the per-kind rationale.\n// [impl->REQ-PUMP-PEER-ISOLATION]\nfn presence_state_effect(\n    ev: &NetPresenceEvent,\n    conns: &mut HashMap<String, u64>,\n    sched: &mut HashMap<String, PeerSched>,\n    pending: &mut HashSet<String>,\n    peer_addrs: &std::path::Path,\n    is_target: bool,\n    now: Instant,\n) -> bool {\n    match ev.kind.as_str() {\n        PRESENCE_CONNECTED => {\n            conns.insert(ev.remote_id_hex.clone(), ev.conn_id);\n            sched.remove(&ev.remote_id_hex); // live peer → reset backoff\n            pending.remove(&ev.remote_id_hex);\n            // REQ-CONV-1 write-back: seed the OBSERVED addr from the async connect.\n            if !ev.remote_addr.is_null() {\n                let _ =\n                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\n            }\n            is_target\n        }\n        PRESENCE_DIAL_FAILED => {\n            eprintln!(\n                \"PUMP_PEER_FAIL:{}:{}\",\n                ev.remote_id_hex,\n                ev.reason.as_deref().unwrap_or(\"dial failed\")\n            );\n            pending.remove(&ev.remote_id_hex);\n            let prev = sched.get(&ev.remote_id_hex).copied();\n            sched.insert(ev.remote_id_hex.clone(), next_peer_backoff(prev, now));\n            // Stale-seed self-heal (REQ-CONV-1): forget the seed so the next\n            // eligible round re-resolves via id-only discovery.\n            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\n            false\n        }\n        PRESENCE_DISCONNECTED => {\n            // Drop the cached conn — redial-eligible immediately, NO backoff (Q3).\n            conns.retain(|_, cid| *cid != ev.conn_id);\n            false\n        }\n        _ => false, // a future presence kind an older pump tolerates\n    }\n}\n\n/// Mark every due worker ran (ADR-0018 §V4: a POST-round `now`, ran =\n/// ATTEMPTED not succeeded). Non-due slots are untouched, so the stagger holds.\nfn mark_ran(last: &mut [Option<Instant>], due_flags: &[bool], now: Instant) {\n    for i in 0..last.len() {\n        if due_flags[i] {\n            last[i] = Some(now);\n        }\n    }\n}\n\n/// The round's fan-out targets: every `(subnet, peer)` this node pushes to —\n/// every member subnet that is NOT detached (REQ-SUBNET-5), crossed with that\n/// subnet's full roster minus self (REQ-MESH-3). One owned list so the order\n/// and the detached-skip are pure unit facts.\n// [impl->REQ-SUBNET-5]\nfn fan_targets(ctx: &RoundCtx, self_hex: &str) -> Vec<(String, String)> {\n    let mut out = Vec::new();\n    for sub in &ctx.subnets.subnets {\n        if ctx.attachment.is_detached(&sub.name) {\n            continue; // detached: neither advertise into nor connect to\n        }\n        for peer in push_targets(&ctx.policy.roster, &sub.name, self_hex) {\n            out.push((sub.name.clone(), peer));\n        }\n    }\n    out\n}\n\n/// The widened push target (Mesh-D6, REQ-MESH-3): every roster member of\n/// `subnet` except this node itself. Tombstoned members are already excluded by\n/// [`RosterStore::members_in`]. This is THE fan-out change — the push target is\n/// the full roster, not the directly-paired set — kept a pure function so the\n/// \"rows reach all members, never relayed\" widen is a unit fact, not just an\n/// integration property.\n// [impl->REQ-MESH-3]\nfn push_targets(\n    roster: &spt_store::roster::RosterStore,\n    subnet: &str,\n    self_hex: &str,\n) -> Vec<String> {\n    roster\n        .members_in(subnet)\n        .filter(|m| m.pubkey_hex != self_hex)\n        .map(|m| m.pubkey_hex.clone())\n        .collect()\n}\n\n/// Resolve the ONE address to submit a non-blocking dial to (M8 decisions 14/20,\n/// REQ-CONV-1 seeded order): the durable last-known address (`peer-addrs.json`)\n/// FIRST — the cold-start fast path that skips the id-only discovery round-trip —\n/// else the injected resolver (production: id-only discovery). A stale seed costs\n/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\n/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\n/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\n/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\n/// ([`handle_presence_event`]). `None` = unresolvable right now — the peer\n/// reschedules on its own cadence, never a round failure.\n// [impl->REQ-CONV-1]\nfn resolve_submit_addr(\n    resolver: &PeerResolver,\n    peer_hex: &str,\n    peer_addrs: &std::path::Path,\n) -> Option<serde_json::Value> {\n    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\n        return Some(seeded); // seeded FIRST (cold-start fast path)\n    }\n    resolver(peer_hex) // miss → id-only discovery\n}\n\n/// Open a fresh stream on `conn_id`, write one whole feed fire-and-forget,\n/// and finish it (the receiver's dispatcher classifies + applies). One\n/// stream per feed: streams are single-purpose by the demux contract.\nfn push_feed(brain: &mut Brain, conn_id: u64, feed: &[u8]) -> io::Result<()> {\n    let opened = brain.net_open_stream(conn_id, None)?;\n    brain.net_stream_send(opened.stream_id, feed, None, true)?;\n    Ok(())\n}\n…\nfn due(last: Option<Instant>, wake: bool, now: Instant, cadence: Duration) -> bool {\n    wake || last.is_none_or(|t| now.duration_since(t) >= cadence)\n}\n\n/// Write the pump's last-tick heartbeat (epoch ms) — the liveness fact\n/// `spt daemon status` renders and the `subnet status` stall warning reads\n/// (M8 decision 23). Best-effort: a failed write costs honesty, never the\n/// pump (and the reader treats an absent/unreadable file as \"no heartbeat\n/// recorded\", not as healthy).\n// [impl->REQ-DAEMON-5]\nfn write_heartbeat(path: &std::path::Path) {\n    if let Some(parent) = path.parent() {\n        let _ = std::fs::create_dir_all(parent);\n    }\n    let _ = spt_store::atomic::atomic_write_string(path, &now_ms().to_string());\n}\n\n/// The supervisor's next backoff after a death: a healthy run (survived\n/// [`SUPERVISE_HEALTHY_RUN`]) resets to the floor `base`; a fast death\n/// doubles, capped at [`SUPERVISE_BACKOFF_CAP`] (M8 decision 23 — a\n/// persistently-crashing pump stays visible and bounded, never silent and\n/// never a hot crash loop). Pure for the unit table.\n// [impl->REQ-DAEMON-5]\nfn next_backoff(prev: Duration, ran_for: Duration, base: Duration) -> Duration {\n    if ran_for >= SUPERVISE_HEALTHY_RUN {\n        base\n    } else {\n        prev.saturating_mul(2).min(SUPERVISE_BACKOFF_CAP)\n    }\n}\n\n/// Supervise repeated runs of a pump body until `stop` is raised (M8\n/// decision 23, REQ-DAEMON-5): a panic is CAUGHT and logged loud\n/// (`PEER_PUMP_PANIC`), an error return logged (`PEER_PUMP_FAIL`), and the\n/// body restarts after a capped, doubling backoff — a 5.9-class pump death\n/// self-heals visibly instead of silently halving the daemon for 24 h.\n/// `base` is the backoff floor (production: [`SUPERVISE_BACKOFF_BASE`];\n/// the unit harness shrinks it). Backoff sleeps in [`TICK`] slices so a\n/// stop request lands promptly. Generic over the body for the unit\n/// harness; production binds [`run_peer_pump`].\n// [impl->REQ-DAEMON-5]\npub fn supervise_pump(stop: &AtomicBool, base: Duration, mut body: impl FnMut() -> io::Result<()>) {\n    let mut backoff = base;\n    while !stop.load(Ordering::Relaxed) {\n        let started = Instant::now();\n        let outcome = std::panic::catch_unwind(std::panic::AssertUnwindSafe(&mut body));\n        if stop.load(Ordering::Relaxed) {\n            return; // a clean stop — whatever the body returned\n        }\n        let ran_for = started.elapsed();\n        match outcome {\n            // The body only returns Ok when stop is raised; reaching here\n            // without it is a died-loop fact — same restart as an error.\n            Ok(Ok(())) => eprintln!(\"PEER_PUMP_EXIT: loop returned without stop — restarting\"),\n            Ok(Err(e)) => eprintln!(\"PEER_PUMP_FAIL: {e}\"),\n            Err(panic) => {\n                let msg = panic\n                    .downcast_ref::<&str>()\n                    .map(|s| s.to_string())\n                    .or_else(|| panic.downcast_ref::<String>().cloned())\n                    .unwrap_or_else(|| \"<non-string panic>\".to_string());\n                eprintln!(\"PEER_PUMP_PANIC: {msg}\");\n            }\n        }\n        backoff = next_backoff(backoff, ran_for, base);\n        eprintln!(\n            \"PEER_PUMP_RESTART: supervised restart in {}s\",\n            backoff.as_secs()\n        );\n        let mut slept = Duration::ZERO;\n        while slept < backoff && !stop.load(Ordering::Relaxed) {\n            thread::sleep(TICK.min(backoff - slept));\n            slept += TICK;\n        }\n    }\n}\n","startLine":516,"lineNumbers":[516,null,524,null,575,null,582,null,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,null,805,null,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,null,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs"}}},"isError":false,"timestamp":1784069152829}}
{"type":"message","id":"3cc561d3","parentId":"ef4328e2","timestamp":"2026-07-14T22:45:52.830Z","message":{"role":"toolResult","toolCallId":"call_4gDUTrQ4FPNDSZJlTUjFxVoj|fc_050f56f290a937ae016a56bc2096a481969cb0cbebf826185f","toolName":"read","content":[{"type":"text","text":"fn cmd_daemon_stop(force: bool) -> i32 {\n…\n    match spt_daemon::stop_daemon() {\n…\n        Err(e) => {\n            eprintln!(\"DAEMON_STOP_FAIL: {e}\");\n            1\n        }\n    }\n}\n\n/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.\n/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +\n/// a pump waiting on the network — NOT a STALLED alarm read off a stale\n/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the\n/// heartbeat age exceeded uptime). With net up, the heartbeat drives\n/// live/stalled as before (a genuine wedge still reads STALLED honestly).\n// [impl->REQ-DAEMON-9]\nfn render_connection_lines(\n    net_up: bool,\n    heartbeat: Option<u64>,\n    now: u64,\n    stale_after: u64,\n) -> String {\n    if !net_up {\n        return \"connection: no connection — net endpoint not bound (retrying in background)\\n\\\n                peer pump: waiting on network\\n\"\n            .to_string();\n    }\n    match heartbeat {\n        Some(at) => {\n            let age = now.saturating_sub(at);\n            if age <= stale_after {\n                format!(\"peer pump: live (last tick {}s ago)\\n\", age / 1000)\n            } else {\n                format!(\n                    \"peer pump: STALLED (last tick {}s ago — advertising/connecting \\\n                     is not running; restart the daemon)\\n\",\n                    age / 1000\n                )\n            }\n        }\n        None => \"peer pump: no heartbeat recorded\\n\".to_string(),\n    }\n}\n\n/// `spt daemon [status]` — the node status view (M8 decisions 23 + 25b,\n/// REQ-CLI-2): daemon state (running/stopped + the peer-pump heartbeat —\n/// a stalled pump renders honestly, never implied-healthy), the member\n/// subnets, and this node's local endpoints. Read-only and ungated.\n// [impl->REQ-CLI-2]\n/// `spt daemon status` --json: the same facts the human view renders — daemon\n/// running + pid, network/pump liveness, the managing service, member subnet\n/// rows, and this node's local perches — copied into committed fields.\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct DaemonStatusJson {\n    running: bool,\n    pid: Option<String>,\n    /// Net endpoint bound (the pump has a network to gossip on). `None` when\n    /// the daemon is down (not queried).\n    net_up: Option<bool>,\n    /// Peer-pump last-tick wall-clock ms (`None` = no heartbeat recorded).\n    pump_heartbeat_ms: Option<u64>,\n    /// The managing service label, if a registered service owns this daemon.\n    managed_by: Option<String>,\n    managed_active: Option<bool>,\n    subnets: Vec<DaemonSubnetJson>,\n    local_endpoints: Vec<LocalPerchJson>,\n    /// F-025: the version the RUNNING broker reports it was compiled at (its own\n    /// image), or `None` when the daemon is down / the broker predates the\n    /// self-report. Distinct from the installed CLI version.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    broker_image: Option<String>,\n    /// F-025: whether the running broker is on a DIFFERENT image than the\n    /// installed CLI (a `spt update apply` landed but the surviving daemon still\n    /// runs the previous version). `None` when the daemon is down.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    broker_stale: Option<bool>,\n    /// LIFECYCLE-TRUTH W2 observability rider: brain-subscriber stall-evicts since\n…\n}\n…\n    if json {\n        let pid = running\n            .then(|| {\n                std::fs::read_to_string(spt_daemon::daemon_pid_path())\n                    .ok()\n                    .map(|s| s.trim().to_string())\n                    .filter(|p| !p.is_empty())\n            })\n            .flatten();\n        // One broker handle answers net-status, the F-025 image query, and the W2\n        // stall-evict tally.\n        let (net_up, broker_image, broker_queried, stall_stats) = if running {\n            match spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms()) {\n                Ok(mut b) => {\n                    let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);\n                    let stall = b.stall_evicts().ok().flatten();\n                    // Ok(Some)=version / Ok(None)=old broker (both a successful\n                    // query) vs Err=couldn't query — keep them distinct so a\n                    // transient IPC failure does not read as a definite stale.\n                    match b.broker_image_version() {\n                        Ok(v) => (Some(n), v, true, stall),\n                        Err(_) => (Some(n), None, false, stall),\n                    }\n                }\n                Err(_) => (Some(true), None, false, None),\n            }\n        } else {\n            (None, None, false, None)\n        };\n        let (stall_evict_count, stall_evict_last_ms) = match stall_stats {\n            Some((c, l)) => (Some(c), Some(l)),\n            None => (None, None),\n        };\n        // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE] stale is only DEFINITE after a\n        // successful query: None when the daemon is down OR the broker could not be\n        // queried (no false-positive true on a transient failure — doyle F-025 nit).\n        let broker_stale = (running && broker_queried)\n            .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));\n        let pump_heartbeat_ms = if running {\n            spt_daemon::read_pump_heartbeat()\n        } else {\n            None\n        };\n        let svc = spt_daemon::service::platform_service();\n        let (managed_by, managed_active) = if svc.detected() {\n            (Some(svc.label().to_string()), Some(svc.is_active()))\n        } else {\n            (None, None)\n        };\n        let store = SubnetStore::load();\n        let mut subnets = Vec::new();\n        if !store.subnets.is_empty() {\n            let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\n            let roster = spt_store::roster::RosterStore::load();\n            let own_hex = spt_store::nodeid::load_or_create()\n                .map(|i| i.public_key().to_hex())\n                .unwrap_or_default();\n            for row in subnet_status_rows(\n                &store,\n                &regs,\n                &roster,\n                Some(&own_hex).filter(|h| !h.is_empty()).map(|h| h.as_str()),\n                None,\n            ) {\n                subnets.push(DaemonSubnetJson {\n                    name: row.name,\n                    nodes: row.nodes,\n                    endpoints: row.endpoints,\n                });\n            }\n        }\n        let local_endpoints = roster::enumerate()\n            .into_iter()\n            .map(|p| LocalPerchJson {\n                id: p.id,\n                state: p.state,\n                address: p.address,\n                ready: p.ready,\n                alive: p.alive,\n                unbound: p.unbound,\n                // The project column is an `endpoint list` concern (#8); daemon-status\n                // does not derive it (avoids per-perch git cost here) — skip-if-none.\n                project: None,\n            })\n            .collect();\n        return print_json(&DaemonStatusJson {\n            running,\n            pid,\n            net_up,\n            pump_heartbeat_ms,\n            managed_by,\n            managed_active,\n            subnets,\n            local_endpoints,\n            broker_image,\n            broker_stale,\n            stall_evict_count,\n            stall_evict_last_ms,\n        });\n    }\n    if running {\n        let pid = std::fs::read_to_string(spt_daemon::daemon_pid_path())\n            .ok()\n            .map(|s| s.trim().to_string());\n        match pid {\n            Some(p) if !p.is_empty() => println!(\"daemon: running (pid {p})\"),\n…\n        }\n…\n    } else {\n…\n    }"}],"details":{"displayContent":{"text":"fn cmd_daemon_stop(force: bool) -> i32 {\n…\n    match spt_daemon::stop_daemon() {\n…\n        Err(e) => {\n            eprintln!(\"DAEMON_STOP_FAIL: {e}\");\n            1\n        }\n    }\n}\n\n/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.\n/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +\n/// a pump waiting on the network — NOT a STALLED alarm read off a stale\n/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the\n/// heartbeat age exceeded uptime). With net up, the heartbeat drives\n/// live/stalled as before (a genuine wedge still reads STALLED honestly).\n// [impl->REQ-DAEMON-9]\nfn render_connection_lines(\n    net_up: bool,\n    heartbeat: Option<u64>,\n    now: u64,\n    stale_after: u64,\n) -> String {\n    if !net_up {\n        return \"connection: no connection — net endpoint not bound (retrying in background)\\n\\\n                peer pump: waiting on network\\n\"\n            .to_string();\n    }\n    match heartbeat {\n        Some(at) => {\n            let age = now.saturating_sub(at);\n            if age <= stale_after {\n                format!(\"peer pump: live (last tick {}s ago)\\n\", age / 1000)\n            } else {\n                format!(\n                    \"peer pump: STALLED (last tick {}s ago — advertising/connecting \\\n                     is not running; restart the daemon)\\n\",\n                    age / 1000\n                )\n            }\n        }\n        None => \"peer pump: no heartbeat recorded\\n\".to_string(),\n    }\n}\n\n/// `spt daemon [status]` — the node status view (M8 decisions 23 + 25b,\n/// REQ-CLI-2): daemon state (running/stopped + the peer-pump heartbeat —\n/// a stalled pump renders honestly, never implied-healthy), the member\n/// subnets, and this node's local endpoints. Read-only and ungated.\n// [impl->REQ-CLI-2]\n/// `spt daemon status` --json: the same facts the human view renders — daemon\n/// running + pid, network/pump liveness, the managing service, member subnet\n/// rows, and this node's local perches — copied into committed fields.\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct DaemonStatusJson {\n    running: bool,\n    pid: Option<String>,\n    /// Net endpoint bound (the pump has a network to gossip on). `None` when\n    /// the daemon is down (not queried).\n    net_up: Option<bool>,\n    /// Peer-pump last-tick wall-clock ms (`None` = no heartbeat recorded).\n    pump_heartbeat_ms: Option<u64>,\n    /// The managing service label, if a registered service owns this daemon.\n    managed_by: Option<String>,\n    managed_active: Option<bool>,\n    subnets: Vec<DaemonSubnetJson>,\n    local_endpoints: Vec<LocalPerchJson>,\n    /// F-025: the version the RUNNING broker reports it was compiled at (its own\n    /// image), or `None` when the daemon is down / the broker predates the\n    /// self-report. Distinct from the installed CLI version.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    broker_image: Option<String>,\n    /// F-025: whether the running broker is on a DIFFERENT image than the\n    /// installed CLI (a `spt update apply` landed but the surviving daemon still\n    /// runs the previous version). `None` when the daemon is down.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    broker_stale: Option<bool>,\n    /// LIFECYCLE-TRUTH W2 observability rider: brain-subscriber stall-evicts since\n…\n}\n…\n    if json {\n        let pid = running\n            .then(|| {\n                std::fs::read_to_string(spt_daemon::daemon_pid_path())\n                    .ok()\n                    .map(|s| s.trim().to_string())\n                    .filter(|p| !p.is_empty())\n            })\n            .flatten();\n        // One broker handle answers net-status, the F-025 image query, and the W2\n        // stall-evict tally.\n        let (net_up, broker_image, broker_queried, stall_stats) = if running {\n            match spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms()) {\n                Ok(mut b) => {\n                    let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);\n                    let stall = b.stall_evicts().ok().flatten();\n                    // Ok(Some)=version / Ok(None)=old broker (both a successful\n                    // query) vs Err=couldn't query — keep them distinct so a\n                    // transient IPC failure does not read as a definite stale.\n                    match b.broker_image_version() {\n                        Ok(v) => (Some(n), v, true, stall),\n                        Err(_) => (Some(n), None, false, stall),\n                    }\n                }\n                Err(_) => (Some(true), None, false, None),\n            }\n        } else {\n            (None, None, false, None)\n        };\n        let (stall_evict_count, stall_evict_last_ms) = match stall_stats {\n            Some((c, l)) => (Some(c), Some(l)),\n            None => (None, None),\n        };\n        // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE] stale is only DEFINITE after a\n        // successful query: None when the daemon is down OR the broker could not be\n        // queried (no false-positive true on a transient failure — doyle F-025 nit).\n        let broker_stale = (running && broker_queried)\n            .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));\n        let pump_heartbeat_ms = if running {\n            spt_daemon::read_pump_heartbeat()\n        } else {\n            None\n        };\n        let svc = spt_daemon::service::platform_service();\n        let (managed_by, managed_active) = if svc.detected() {\n            (Some(svc.label().to_string()), Some(svc.is_active()))\n        } else {\n            (None, None)\n        };\n        let store = SubnetStore::load();\n        let mut subnets = Vec::new();\n        if !store.subnets.is_empty() {\n            let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\n            let roster = spt_store::roster::RosterStore::load();\n            let own_hex = spt_store::nodeid::load_or_create()\n                .map(|i| i.public_key().to_hex())\n                .unwrap_or_default();\n            for row in subnet_status_rows(\n                &store,\n                &regs,\n                &roster,\n                Some(&own_hex).filter(|h| !h.is_empty()).map(|h| h.as_str()),\n                None,\n            ) {\n                subnets.push(DaemonSubnetJson {\n                    name: row.name,\n                    nodes: row.nodes,\n                    endpoints: row.endpoints,\n                });\n            }\n        }\n        let local_endpoints = roster::enumerate()\n            .into_iter()\n            .map(|p| LocalPerchJson {\n                id: p.id,\n                state: p.state,\n                address: p.address,\n                ready: p.ready,\n                alive: p.alive,\n                unbound: p.unbound,\n                // The project column is an `endpoint list` concern (#8); daemon-status\n                // does not derive it (avoids per-perch git cost here) — skip-if-none.\n                project: None,\n            })\n            .collect();\n        return print_json(&DaemonStatusJson {\n            running,\n            pid,\n            net_up,\n            pump_heartbeat_ms,\n            managed_by,\n            managed_active,\n            subnets,\n            local_endpoints,\n            broker_image,\n            broker_stale,\n            stall_evict_count,\n            stall_evict_last_ms,\n        });\n    }\n    if running {\n        let pid = std::fs::read_to_string(spt_daemon::daemon_pid_path())\n            .ok()\n            .map(|s| s.trim().to_string());\n        match pid {\n            Some(p) if !p.is_empty() => println!(\"daemon: running (pid {p})\"),\n…\n        }\n…\n    } else {\n…\n    }","startLine":3939,"lineNumbers":[3939,null,3947,null,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3992,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,null,4044,null,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,null,4217,null,4260,null,4269]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"}}},"isError":false,"timestamp":1784069152829}}
{"type":"message","id":"217137a7","parentId":"3cc561d3","timestamp":"2026-07-14T22:45:52.835Z","message":{"role":"toolResult","toolCallId":"call_z7JokA5Eqeng6KzENRmOjRs4|fc_050f56f290a937ae016a56bc20969c81969abb00f53e659663","toolName":"read","content":[{"type":"text","text":"\n/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\n#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\npub struct PeerAddrStore {\n    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\n    #[serde(default)]\n    pub addrs: BTreeMap<String, serde_json::Value>,\n}\n\nimpl PeerAddrStore {\n    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\n    pub fn load() -> PeerAddrStore {\n        Self::load_from(&peer_addrs_file())\n    }\n\n    /// Load from an explicit path. Absent/corrupt degrades to empty — a\n    /// broken seed file must never break peer resolution (the id-only\n    /// discovery path is always behind it).\n    pub fn load_from(path: &Path) -> PeerAddrStore {\n        match std::fs::read_to_string(path) {\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\n            Err(_) => PeerAddrStore::default(),\n        }\n    }\n\n    /// Persist to the canonical path.\n    pub fn save(&self) -> std::io::Result<()> {\n        self.save_to(&peer_addrs_file())\n    }\n\n    /// Persist to an explicit path (atomic; creates the parent dir).\n    pub fn save_to(&self, path: &Path) -> std::io::Result<()> {\n        if let Some(parent) = path.parent() {\n            std::fs::create_dir_all(parent)?;\n        }\n        let json =\n            serde_json::to_string_pretty(self).map_err(|e| std::io::Error::other(e.to_string()))?;\n        atomic_write_string(path, &json)\n    }\n\n    /// The last-known address for a peer, if one was ever recorded.\n    pub fn get(&self, peer_hex: &str) -> Option<&serde_json::Value> {\n        self.addrs.get(peer_hex)\n    }\n\n    /// Record a peer's freshly-observed address. Returns `true` when the\n    /// stored value changed (callers skip the disk write on a no-op).\n    pub fn put(&mut self, peer_hex: &str, addr: serde_json::Value) -> bool {\n        match self.addrs.get(peer_hex) {\n            Some(prev) if *prev == addr => false,\n            _ => {\n                self.addrs.insert(peer_hex.to_string(), addr);\n                true\n            }\n        }\n    }\n\n    /// Drop a peer's stored address. Returns `true` when a value was removed\n    /// (callers skip the disk write on a no-op). The stale-seed self-heal\n    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\n    /// address FAILS, the pump forgets the stale seed so the next round\n    /// re-resolves via id-only discovery — a stale addr never strands a peer.\n    // [impl->REQ-CONV-1]\n    pub fn forget(&mut self, peer_hex: &str) -> bool {\n        self.addrs.remove(peer_hex).is_some()\n    }\n\n    /// Load → put → save against `path` in one step — the shared writer the\n    /// ceremony legs and the pump use (each write re-reads, so concurrent\n    /// writers lose at most their own update, never tear the file).\n    pub fn record(path: &Path, peer_hex: &str, addr: serde_json::Value) -> std::io::Result<()> {\n        let mut store = Self::load_from(path);\n        if store.put(peer_hex, addr) {\n            store.save_to(path)?;\n        }\n        Ok(())\n    }\n\n    /// Load → forget → save against `path` in one step (the stale-seed drop\n    /// sibling of [`Self::record`]).\n    // [impl->REQ-CONV-1]\n    pub fn drop_seed(path: &Path, peer_hex: &str) -> std::io::Result<()> {\n        let mut store = Self::load_from(path);\n        if store.forget(peer_hex) {\n            store.save_to(path)?;\n        }\n        Ok(())\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n…\n}\n\n[Showing lines 35-128 of 181. Use :129 to continue]"}],"details":{"truncation":{"content":"\r\n/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\r\n#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\r\npub struct PeerAddrStore {\r\n    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\r\n    #[serde(default)]\r\n    pub addrs: BTreeMap<String, serde_json::Value>,\r\n}\r\n\r\nimpl PeerAddrStore {\r\n    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\r\n    pub fn load() -> PeerAddrStore {\r\n        Self::load_from(&peer_addrs_file())\r\n    }\r\n\r\n    /// Load from an explicit path. Absent/corrupt degrades to empty — a\r\n    /// broken seed file must never break peer resolution (the id-only\r\n    /// discovery path is always behind it).\r\n    pub fn load_from(path: &Path) -> PeerAddrStore {\r\n        match std::fs::read_to_string(path) {\r\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\r\n            Err(_) => PeerAddrStore::default(),\r\n        }\r\n    }\r\n\r\n    /// Persist to the canonical path.\r\n    pub fn save(&self) -> std::io::Result<()> {\r\n        self.save_to(&peer_addrs_file())\r\n    }\r\n\r\n    /// Persist to an explicit path (atomic; creates the parent dir).\r\n    pub fn save_to(&self, path: &Path) -> std::io::Result<()> {\r\n        if let Some(parent) = path.parent() {\r\n            std::fs::create_dir_all(parent)?;\r\n        }\r\n        let json =\r\n            serde_json::to_string_pretty(self).map_err(|e| std::io::Error::other(e.to_string()))?;\r\n        atomic_write_string(path, &json)\r\n    }\r\n\r\n    /// The last-known address for a peer, if one was ever recorded.\r\n    pub fn get(&self, peer_hex: &str) -> Option<&serde_json::Value> {\r\n        self.addrs.get(peer_hex)\r\n    }\r\n\r\n    /// Record a peer's freshly-observed address. Returns `true` when the\r\n    /// stored value changed (callers skip the disk write on a no-op).\r\n    pub fn put(&mut self, peer_hex: &str, addr: serde_json::Value) -> bool {\r\n        match self.addrs.get(peer_hex) {\r\n            Some(prev) if *prev == addr => false,\r\n            _ => {\r\n                self.addrs.insert(peer_hex.to_string(), addr);\r\n                true\r\n            }\r\n        }\r\n    }\r\n\r\n    /// Drop a peer's stored address. Returns `true` when a value was removed\r\n    /// (callers skip the disk write on a no-op). The stale-seed self-heal\r\n    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\r\n    /// address FAILS, the pump forgets the stale seed so the next round\r\n    /// re-resolves via id-only discovery — a stale addr never strands a peer.\r\n    // [impl->REQ-CONV-1]\r\n    pub fn forget(&mut self, peer_hex: &str) -> bool {\r\n        self.addrs.remove(peer_hex).is_some()\r\n    }\r\n\r\n    /// Load → put → save against `path` in one step — the shared writer the\r\n    /// ceremony legs and the pump use (each write re-reads, so concurrent\r\n    /// writers lose at most their own update, never tear the file).\r\n    pub fn record(path: &Path, peer_hex: &str, addr: serde_json::Value) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.put(peer_hex, addr) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n\r\n    /// Load → forget → save against `path` in one step (the stale-seed drop\r\n    /// sibling of [`Self::record`]).\r\n    // [impl->REQ-CONV-1]\r\n    pub fn drop_seed(path: &Path, peer_hex: &str) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.forget(peer_hex) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n}\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n\r","truncated":true,"truncatedBy":"lines","totalLines":147,"totalBytes":3600,"outputLines":94,"outputBytes":3600,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"\r\n/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\r\n#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\r\npub struct PeerAddrStore {\r\n    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\r\n    #[serde(default)]\r\n    pub addrs: BTreeMap<String, serde_json::Value>,\r\n}\r\n\r\nimpl PeerAddrStore {\r\n    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\r\n    pub fn load() -> PeerAddrStore {\r\n        Self::load_from(&peer_addrs_file())\r\n    }\r\n\r\n    /// Load from an explicit path. Absent/corrupt degrades to empty — a\r\n    /// broken seed file must never break peer resolution (the id-only\r\n    /// discovery path is always behind it).\r\n    pub fn load_from(path: &Path) -> PeerAddrStore {\r\n        match std::fs::read_to_string(path) {\r\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\r\n            Err(_) => PeerAddrStore::default(),\r\n        }\r\n    }\r\n\r\n    /// Persist to the canonical path.\r\n    pub fn save(&self) -> std::io::Result<()> {\r\n        self.save_to(&peer_addrs_file())\r\n    }\r\n\r\n    /// Persist to an explicit path (atomic; creates the parent dir).\r\n    pub fn save_to(&self, path: &Path) -> std::io::Result<()> {\r\n        if let Some(parent) = path.parent() {\r\n            std::fs::create_dir_all(parent)?;\r\n        }\r\n        let json =\r\n            serde_json::to_string_pretty(self).map_err(|e| std::io::Error::other(e.to_string()))?;\r\n        atomic_write_string(path, &json)\r\n    }\r\n\r\n    /// The last-known address for a peer, if one was ever recorded.\r\n    pub fn get(&self, peer_hex: &str) -> Option<&serde_json::Value> {\r\n        self.addrs.get(peer_hex)\r\n    }\r\n\r\n    /// Record a peer's freshly-observed address. Returns `true` when the\r\n    /// stored value changed (callers skip the disk write on a no-op).\r\n    pub fn put(&mut self, peer_hex: &str, addr: serde_json::Value) -> bool {\r\n        match self.addrs.get(peer_hex) {\r\n            Some(prev) if *prev == addr => false,\r\n            _ => {\r\n                self.addrs.insert(peer_hex.to_string(), addr);\r\n                true\r\n            }\r\n        }\r\n    }\r\n\r\n    /// Drop a peer's stored address. Returns `true` when a value was removed\r\n    /// (callers skip the disk write on a no-op). The stale-seed self-heal\r\n    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\r\n    /// address FAILS, the pump forgets the stale seed so the next round\r\n    /// re-resolves via id-only discovery — a stale addr never strands a peer.\r\n    // [impl->REQ-CONV-1]\r\n    pub fn forget(&mut self, peer_hex: &str) -> bool {\r\n        self.addrs.remove(peer_hex).is_some()\r\n    }\r\n\r\n    /// Load → put → save against `path` in one step — the shared writer the\r\n    /// ceremony legs and the pump use (each write re-reads, so concurrent\r\n    /// writers lose at most their own update, never tear the file).\r\n    pub fn record(path: &Path, peer_hex: &str, addr: serde_json::Value) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.put(peer_hex, addr) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n\r\n    /// Load → forget → save against `path` in one step (the stale-seed drop\r\n    /// sibling of [`Self::record`]).\r\n    // [impl->REQ-CONV-1]\r\n    pub fn drop_seed(path: &Path, peer_hex: &str) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.forget(peer_hex) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n}\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n\r\n…\n}","startLine":35,"lineNumbers":[35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,null,180]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":181,"totalBytes":3600,"outputLines":94,"outputBytes":3600,"shownRange":{"start":35,"end":128},"nextOffset":129}}},"isError":false,"timestamp":1784069152835}}
{"type":"message","id":"b58cfe12","parentId":"217137a7","timestamp":"2026-07-14T22:45:52.836Z","message":{"role":"toolResult","toolCallId":"call_p0xSiEnS24zZaoc5S0ood9SC|fc_050f56f290a937ae016a56bc2096b08196a2a18875b6a984a1","toolName":"read","content":[{"type":"text","text":"//! Subnet-scoped liveness probe (REQ-SUBNET-5) — the serve/request pair plus\n//! the shared local \"am I serving subnet X?\" predicate the `--nodes` view\n//! ultimately consults across the wire.\n//!\n//! ## Why this exists\n//!\n//! `subnet status --nodes` settles liveness in two tiers: gossip-recency\n//! first, a live probe for the rows gossip could not settle. The probe used to\n//! be a raw transport dial by node-pubkey — it proved the peer's daemon\n//! endpoint was bound (the box is up), but ONE ALPN serves every subnet, so it\n//! could not tell \"still serving THIS subnet\" from \"up for its own home\". A\n//! peer that ran `subnet detach X` correctly stops advertising/connecting X\n//! (the pump skips it — [`pump`]; the pairing responder filters it —\n//! [`pairhost`]) yet its endpoint stays bound, so the raw dial read it\n//! `online` for X indefinitely (criterion-5 detach-liveness bug, 2026-06-07).\n//!\n//! The fix: after the dial proves reachability, the prober asks the peer\n//! \"serving `subnet`?\" over this one-shot record. The peer answers from the\n//! SAME source the pump/responder consult — [`is_serving_subnet`], which is\n//! membership ∧ `!AttachmentStore::is_detached`. A detached peer answers\n//! `false` and flips offline within a cadence.\n//!\n//! ## Trust class\n//!\n//! No gate beyond the QUIC handshake (REQ-HAZARD-WAN-ORIGIN-AUTH: the record\n//! carries no origin field). The reply reveals only this node's serve-state\n//! for a named subnet — the same fact its registry gossip already broadcasts\n//! to co-members — so there is nothing to gate. Any reachable peer gets a\n//! truthful answer; a non-member learns at most \"this box serves a subnet by\n//! that name\", which the resolution/refusal surfaces already expose.\n// [impl->REQ-SUBNET-5]\n// [impl->REQ-HAZARD-WAN-ORIGIN-AUTH]\n\nuse std::io;\n\nuse spt_net::net::ndjson;\nuse spt_net::net::serveprobe::{ServeProbeDecoder, ServeProbeRecord};\nuse spt_store::attachment::AttachmentStore;\nuse spt_store::subnet::SubnetStore;\n\nuse crate::brain::{Brain, BrokerEvent};\n\n/// The serve-state truth a probe answers: this node is a **member** of\n/// `subnet` AND is **currently serving** it (not detached). This is exactly\n/// the predicate the pump's per-subnet skip ([`crate::pump`]) and the\n/// pairing responder's `filter_serving` ([`crate::pairhost`]) gate on, read\n/// fresh from the canonical stores (config edits take effect without a\n/// restart — the access-gate stance). A subnet this node never joined, or one\n/// it deliberately detached, both answer `false`.\n// [impl->REQ-SUBNET-5]\npub fn is_serving_subnet(subnet: &str) -> bool {\n    let member = SubnetStore::load().find(subnet).is_some();\n    member && !AttachmentStore::load().is_detached(subnet)\n}\n\n/// Why a serve-probe serve returned — loud + typed, rendered into the dispatch\n/// log.\n#[derive(Debug, Clone, PartialEq, Eq)]\npub enum ServeProbeServeOutcome {\n    /// The probe ran; the reply carried this serve-state for the named subnet.\n    Answered { subnet: String, serving: bool },\n    /// The stream never produced a parseable request — dropped.\n    BadRequest(String),\n}\n\n/// Serve one serve-probe stream against this node, blocking until the single\n/// request runs. No gate (module docs): the answer is public serve-state, the\n/// QUIC handshake is the only subject that matters.\n// [impl->REQ-SUBNET-5]\npub fn serve_subnet_probe(\n    brain: &mut Brain,\n    stream_id: u64,\n) -> io::Result<ServeProbeServeOutcome> {\n    brain.net_stream_subscribe(stream_id, 0)?;\n    let mut decoder = ServeProbeDecoder::new();\n    loop {\n        match brain.read_event()? {\n            BrokerEvent::NetStreamData {\n                stream_id: sid,\n                bytes,\n                ..\n            } if sid == stream_id => {\n                for rec in decoder.push(&bytes) {\n                    let ServeProbeRecord::Request { serve_probe } = rec else {\n                        continue; // echoed replies / protocol noise: degrade\n                    };\n                    let serving = is_serving_subnet(&serve_probe);\n                    let reply = ServeProbeRecord::Reply { serving };\n                    brain.net_stream_send(stream_id, &ndjson::encode_line(&reply), None, true)?;\n                    return Ok(ServeProbeServeOutcome::Answered {\n                        subnet: serve_probe,\n                        serving,\n                    });\n                }\n            }\n            BrokerEvent::NetStreamEof { stream_id: sid, .. } if sid == stream_id => {\n                brain.net_stream_send(stream_id, &[], None, true)?;\n                return Ok(ServeProbeServeOutcome::BadRequest(\n                    \"stream ended before a request\".into(),\n                ));\n            }\n            BrokerEvent::Error { message } => return Err(io::Error::other(message)),\n            _ => {}\n        }\n    }\n}\n\n/// Operator-side: open a serve-probe stream on a dialed connection, ask\n/// \"serving `subnet`?\", block for the one reply. A fire-and-forget read (no\n/// durable op id — a status probe is idempotent and stateless). A finished\n/// stream with no reply, or any malformed reply, reads `false` — fail-quiet,\n/// this drives a status view that never errors.\n// [impl->REQ-SUBNET-5]\npub fn request_subnet_probe(brain: &mut Brain, conn_id: u64, subnet: &str) -> io::Result<bool> {\n    let opened = brain.net_open_stream(conn_id, None)?;\n    let line = ndjson::encode_line(&ServeProbeRecord::Request {\n        serve_probe: subnet.to_string(),\n    });\n    brain.net_stream_send(opened.stream_id, &line, None, true)?;\n\n    brain.net_stream_subscribe(opened.stream_id, 0)?;\n    let mut decoder = ServeProbeDecoder::new();\n    loop {\n        match brain.read_event()? {\n            BrokerEvent::NetStreamData {\n                stream_id: sid,\n                bytes,\n                ..\n            } if sid == opened.stream_id => {\n                for rec in decoder.push(&bytes) {\n                    let ServeProbeRecord::Reply { serving } = rec else {\n                        continue; // our own request echoed: noise\n                    };\n                    return Ok(serving);\n                }\n            }\n            BrokerEvent::NetStreamEof { stream_id: sid, .. } if sid == opened.stream_id => {\n                return Ok(false);\n            }\n            BrokerEvent::Error { message } => return Err(io::Error::other(message)),\n            _ => {}\n        }\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    use crate::test_home::with_home;\n\n    // [unit->REQ-SUBNET-5] the serve-state predicate: a held + attached subnet\n    // serves; the same subnet detached does not; a subnet this node never\n    // joined does not (even if, hypothetically, it appeared in the detached\n    // set). This is the truth the wire probe relays.\n    #[test]\n    fn is_serving_subnet_honors_membership_and_detach() {\n        with_home(|_| {\n            // Not a member yet: never serving.\n            assert!(!is_serving_subnet(\"ACCEPT\"), \"non-member is not serving\");\n\n            // Join (create) the subnet → attached by default → serving.\n            let mut store = SubnetStore::load();\n            store.create_subnet(\"ACCEPT\").expect(\"create\");\n            store.save().expect(\"save subnet\");\n            assert!(is_serving_subnet(\"ACCEPT\"), \"member + attached serves\");\n\n            // Detach it → still a member on disk, but not serving.\n            let mut att = AttachmentStore::load();\n            att.set_detached(\"ACCEPT\", true);\n            att.save().expect(\"save attachment\");\n            assert!(\n                !is_serving_subnet(\"ACCEPT\"),\n                \"detached member does not serve\"\n            );\n\n            // Re-attach → serving again.\n            let mut att = AttachmentStore::load();\n            att.set_detached(\"ACCEPT\", false);\n            att.save().expect(\"save attachment\");\n            assert!(is_serving_subnet(\"ACCEPT\"), \"re-attached member serves\");\n        });\n    }\n}\n"}],"details":{"displayContent":{"text":"//! Subnet-scoped liveness probe (REQ-SUBNET-5) — the serve/request pair plus\r\n//! the shared local \"am I serving subnet X?\" predicate the `--nodes` view\r\n//! ultimately consults across the wire.\r\n//!\r\n//! ## Why this exists\r\n//!\r\n//! `subnet status --nodes` settles liveness in two tiers: gossip-recency\r\n//! first, a live probe for the rows gossip could not settle. The probe used to\r\n//! be a raw transport dial by node-pubkey — it proved the peer's daemon\r\n//! endpoint was bound (the box is up), but ONE ALPN serves every subnet, so it\r\n//! could not tell \"still serving THIS subnet\" from \"up for its own home\". A\r\n//! peer that ran `subnet detach X` correctly stops advertising/connecting X\r\n//! (the pump skips it — [`pump`]; the pairing responder filters it —\r\n//! [`pairhost`]) yet its endpoint stays bound, so the raw dial read it\r\n//! `online` for X indefinitely (criterion-5 detach-liveness bug, 2026-06-07).\r\n//!\r\n//! The fix: after the dial proves reachability, the prober asks the peer\r\n//! \"serving `subnet`?\" over this one-shot record. The peer answers from the\r\n//! SAME source the pump/responder consult — [`is_serving_subnet`], which is\r\n//! membership ∧ `!AttachmentStore::is_detached`. A detached peer answers\r\n//! `false` and flips offline within a cadence.\r\n//!\r\n//! ## Trust class\r\n//!\r\n//! No gate beyond the QUIC handshake (REQ-HAZARD-WAN-ORIGIN-AUTH: the record\r\n//! carries no origin field). The reply reveals only this node's serve-state\r\n//! for a named subnet — the same fact its registry gossip already broadcasts\r\n//! to co-members — so there is nothing to gate. Any reachable peer gets a\r\n//! truthful answer; a non-member learns at most \"this box serves a subnet by\r\n//! that name\", which the resolution/refusal surfaces already expose.\r\n// [impl->REQ-SUBNET-5]\r\n// [impl->REQ-HAZARD-WAN-ORIGIN-AUTH]\r\n\r\nuse std::io;\r\n\r\nuse spt_net::net::ndjson;\r\nuse spt_net::net::serveprobe::{ServeProbeDecoder, ServeProbeRecord};\r\nuse spt_store::attachment::AttachmentStore;\r\nuse spt_store::subnet::SubnetStore;\r\n\r\nuse crate::brain::{Brain, BrokerEvent};\r\n\r\n/// The serve-state truth a probe answers: this node is a **member** of\r\n/// `subnet` AND is **currently serving** it (not detached). This is exactly\r\n/// the predicate the pump's per-subnet skip ([`crate::pump`]) and the\r\n/// pairing responder's `filter_serving` ([`crate::pairhost`]) gate on, read\r\n/// fresh from the canonical stores (config edits take effect without a\r\n/// restart — the access-gate stance). A subnet this node never joined, or one\r\n/// it deliberately detached, both answer `false`.\r\n// [impl->REQ-SUBNET-5]\r\npub fn is_serving_subnet(subnet: &str) -> bool {\r\n    let member = SubnetStore::load().find(subnet).is_some();\r\n    member && !AttachmentStore::load().is_detached(subnet)\r\n}\r\n\r\n/// Why a serve-probe serve returned — loud + typed, rendered into the dispatch\r\n/// log.\r\n#[derive(Debug, Clone, PartialEq, Eq)]\r\npub enum ServeProbeServeOutcome {\r\n    /// The probe ran; the reply carried this serve-state for the named subnet.\r\n    Answered { subnet: String, serving: bool },\r\n    /// The stream never produced a parseable request — dropped.\r\n    BadRequest(String),\r\n}\r\n\r\n/// Serve one serve-probe stream against this node, blocking until the single\r\n/// request runs. No gate (module docs): the answer is public serve-state, the\r\n/// QUIC handshake is the only subject that matters.\r\n// [impl->REQ-SUBNET-5]\r\npub fn serve_subnet_probe(\r\n    brain: &mut Brain,\r\n    stream_id: u64,\r\n) -> io::Result<ServeProbeServeOutcome> {\r\n    brain.net_stream_subscribe(stream_id, 0)?;\r\n    let mut decoder = ServeProbeDecoder::new();\r\n    loop {\r\n        match brain.read_event()? {\r\n            BrokerEvent::NetStreamData {\r\n                stream_id: sid,\r\n                bytes,\r\n                ..\r\n            } if sid == stream_id => {\r\n                for rec in decoder.push(&bytes) {\r\n                    let ServeProbeRecord::Request { serve_probe } = rec else {\r\n                        continue; // echoed replies / protocol noise: degrade\r\n                    };\r\n                    let serving = is_serving_subnet(&serve_probe);\r\n                    let reply = ServeProbeRecord::Reply { serving };\r\n                    brain.net_stream_send(stream_id, &ndjson::encode_line(&reply), None, true)?;\r\n                    return Ok(ServeProbeServeOutcome::Answered {\r\n                        subnet: serve_probe,\r\n                        serving,\r\n                    });\r\n                }\r\n            }\r\n            BrokerEvent::NetStreamEof { stream_id: sid, .. } if sid == stream_id => {\r\n                brain.net_stream_send(stream_id, &[], None, true)?;\r\n                return Ok(ServeProbeServeOutcome::BadRequest(\r\n                    \"stream ended before a request\".into(),\r\n                ));\r\n            }\r\n            BrokerEvent::Error { message } => return Err(io::Error::other(message)),\r\n            _ => {}\r\n        }\r\n    }\r\n}\r\n\r\n/// Operator-side: open a serve-probe stream on a dialed connection, ask\r\n/// \"serving `subnet`?\", block for the one reply. A fire-and-forget read (no\r\n/// durable op id — a status probe is idempotent and stateless). A finished\r\n/// stream with no reply, or any malformed reply, reads `false` — fail-quiet,\r\n/// this drives a status view that never errors.\r\n// [impl->REQ-SUBNET-5]\r\npub fn request_subnet_probe(brain: &mut Brain, conn_id: u64, subnet: &str) -> io::Result<bool> {\r\n    let opened = brain.net_open_stream(conn_id, None)?;\r\n    let line = ndjson::encode_line(&ServeProbeRecord::Request {\r\n        serve_probe: subnet.to_string(),\r\n    });\r\n    brain.net_stream_send(opened.stream_id, &line, None, true)?;\r\n\r\n    brain.net_stream_subscribe(opened.stream_id, 0)?;\r\n    let mut decoder = ServeProbeDecoder::new();\r\n    loop {\r\n        match brain.read_event()? {\r\n            BrokerEvent::NetStreamData {\r\n                stream_id: sid,\r\n                bytes,\r\n                ..\r\n            } if sid == opened.stream_id => {\r\n                for rec in decoder.push(&bytes) {\r\n                    let ServeProbeRecord::Reply { serving } = rec else {\r\n                        continue; // our own request echoed: noise\r\n                    };\r\n                    return Ok(serving);\r\n                }\r\n            }\r\n            BrokerEvent::NetStreamEof { stream_id: sid, .. } if sid == opened.stream_id => {\r\n                return Ok(false);\r\n            }\r\n            BrokerEvent::Error { message } => return Err(io::Error::other(message)),\r\n            _ => {}\r\n        }\r\n    }\r\n}\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n    use crate::test_home::with_home;\r\n\r\n    // [unit->REQ-SUBNET-5] the serve-state predicate: a held + attached subnet\r\n    // serves; the same subnet detached does not; a subnet this node never\r\n    // joined does not (even if, hypothetically, it appeared in the detached\r\n    // set). This is the truth the wire probe relays.\r\n    #[test]\r\n    fn is_serving_subnet_honors_membership_and_detach() {\r\n        with_home(|_| {\r\n            // Not a member yet: never serving.\r\n            assert!(!is_serving_subnet(\"ACCEPT\"), \"non-member is not serving\");\r\n\r\n            // Join (create) the subnet → attached by default → serving.\r\n            let mut store = SubnetStore::load();\r\n            store.create_subnet(\"ACCEPT\").expect(\"create\");\r\n            store.save().expect(\"save subnet\");\r\n            assert!(is_serving_subnet(\"ACCEPT\"), \"member + attached serves\");\r\n\r\n            // Detach it → still a member on disk, but not serving.\r\n            let mut att = AttachmentStore::load();\r\n            att.set_detached(\"ACCEPT\", true);\r\n            att.save().expect(\"save attachment\");\r\n            assert!(\r\n                !is_serving_subnet(\"ACCEPT\"),\r\n                \"detached member does not serve\"\r\n            );\r\n\r\n            // Re-attach → serving again.\r\n            let mut att = AttachmentStore::load();\r\n            att.set_detached(\"ACCEPT\", false);\r\n            att.save().expect(\"save attachment\");\r\n            assert!(is_serving_subnet(\"ACCEPT\"), \"re-attached member serves\");\r\n        });\r\n    }\r\n}\r\n","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/serveprobe.rs"}}},"isError":false,"timestamp":1784069152836}}
{"type":"message","id":"fb83f5de","parentId":"b58cfe12","timestamp":"2026-07-14T22:45:52.952Z","message":{"role":"toolResult","toolCallId":"call_SzBM75zot9wmCpWgAqLHCuY0|fc_050f56f290a937ae016a56bc2096a88196a1873e4f43dc31ff","toolName":"read","content":[{"type":"text","text":"fn cmd_endpoint_list(\n…\n) -> i32 {\n…\n    if json {\n…\n        let local = all_local\n…\n            .map(|p| {\n…\n                LocalPerchJson {\n…\n                    project,\n                }\n            })\n            .collect();\n        return print_json(&EndpointListJson {\n            self_pin,\n            subnets: subnet_groups,\n            local,\n        });\n    }\n\n    // SELF pin (decision 2): the session's own endpoint renders first and\n    // distinctly, whatever subnet groups follow. `spt whoami` is a thin alias for\n    // this command (REQ-WHOAMI-1), so the SELF pin additionally carries the Self\n    // endpoint's authored description — the \"who am I\" answer.\n    // The canonical `LABEL (keyprefix…)` for THIS node — reused by the SELF-pin\n    // `(self @ <node>)` marker and the \"This node:\" group header below.\n    // [impl->REQ-ENDPOINT-LIST-NODE-IDENT]\n    let self_node_ident = node_ident_display();\n    if let Some(self_id) = roster::detect_self_id() {\n        let state = roster::enumerate()\n            .into_iter()\n            .find(|p| p.id == self_id)\n            .map(|p| {\n                // UNBOUND surfaces here too (REQ-ENDPOINT-UNBOUND-ATTACH): the Self\n                // pin must not read a live pre-bind session as plain alive=false.\n                let unbound = if p.unbound { \"  UNBOUND\" } else { \"\" };\n                format!(\"{}  ready={} alive={}{}\", p.state, p.ready, p.alive, unbound)\n            })\n            .unwrap_or_else(|| \"(no local perch)\".to_string());\n        let info = spt_store::info::read_info(&perch::resolve_perch_path(&self_id, ParentHint::Infer));\n        let desc = info.as_ref().and_then(|rec| rec.resources.clone());\n        // The harness-reachable psyche-host-failure annotation (v0.8.1,\n        // REQ-HAZARD-LIVEHOST-BOOT-RACE): an online live agent whose Psyche failed\n        // to host shows status authoritatively AND this extra line, surfacing the\n        // boot-race that was otherwise silent on the brain's stderr.\n        // [impl->REQ-HAZARD-LIVEHOST-BOOT-RACE]\n        let phe = info.as_ref().and_then(|rec| rec.psyche_host_error.clone());\n        // The input-translation fault annotation (F-1, REQ-PUBLIC-ERROR-SURFACES).\n        let tf = info.as_ref().and_then(|rec| rec.translation_fault.clone());\n        // The pin carries a `(self @ <node>)` marker naming THIS node — the\n        // node-grouped view pins SELF first and names its home node inline\n        // (REQ-ENDPOINT-LIST-NODE-GROUPED).\n        println!(\n            \"{}\",\n            render_self_pin(\n                &self_id,\n                &state,\n                desc.as_deref(),\n                Some(self_node_ident.as_str()),\n                phe.as_ref(),\n                tf.as_deref(),\n            )\n        );\n    }\n\n    let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\n    let vis = VisibilityStore::load();\n    let names: Vec<String> = match subnet {\n        Some(one) => vec![one],\n        None => subnets.subnets.iter().map(|s| s.name.clone()).collect(),\n    };\n\n    // This node's own instance rows come from the LOCAL ROSTER (status truth),\n    // NOT gossip (REQ-ENDPOINT-LIST-NODE-GROUPED / REQ-ENDPOINT-LIST-MERGE-LOCAL):\n    // a just-bound perch lags the WAN snapshot by a pump cadence, so the roster is\n    // the authoritative view of what THIS node hosts. Each row derives the SAME\n    // EpDisplay vocabulary a picker row would (advertised-status), its type read\n    // from info.json. [impl->REQ-ENDPOINT-LIST-MERGE-LOCAL]\n    let this_cells: Vec<InstanceCell> = roster::enumerate()\n        .into_iter()\n        .filter(|p| keep_local(&p.state))\n        .map(|p| {\n            let perch_path = perch::resolve_perch_path(&p.id, ParentHint::Infer);\n            let rec = spt_store::info::read_info(&perch_path);\n            // #8: the LATEST project (sessions.log history head, owlery-excluded) —\n            // derived here where the perch path + info.cwd are in hand, then passed in\n            // (this_node_cell stays pure over its inputs).\n            // [impl->REQ-ENDPOINT-LIST-PROJECT-COL]\n            let project_ref = crate::picker::data::latest_project_ref(\n                &p.id,\n                &perch_path,\n                rec.as_ref().and_then(|r| r.cwd.as_deref()),\n            );\n            this_node_cell(&p, rec.as_ref(), project_ref)\n        })\n        .collect();\n\n    // Remote instances come from the WAN registry projection, one (id, node) row\n    // per subnet; group_remote_nodes collapses the subnet duplication (freshest\n    // epoch wins a cross-subnet status disagreement) and unions the subnet names\n    // per node. This node's OWN gossip rows are discarded — the roster above is\n    // its status truth. [impl->REQ-ENDPOINT-LIST-NODE-GROUPED]\n    let self_node_hex = spt_store::nodeid::load_or_create()\n        .ok()\n        .map(|i| i.public_key().to_hex())\n        .unwrap_or_default();\n    let mut tagged: Vec<(String, spt_net::net::registry::ResourceRow)> = Vec::new();\n    for name in &names {\n        let Some(reg) = regs.get(name) else {\n            continue;\n        };\n        let hide_new = subnets\n            .find(name)\n            .map(|s| s.hide_new_endpoints)\n            .unwrap_or(false);\n        for row in resource_projection(reg, |id| vis.hidden(id, name, hide_new)) {\n            if keep_remote(&row.endpoint_type) {\n                tagged.push((name.clone(), row));\n            }\n        }\n    }\n    let remote = group_remote_nodes(&self_node_hex, tagged);\n\n    // The stderr `ENDPOINTS:<n>` line and the grand total are REMOVED\n    // (REQ-ENDPOINT-LIST-NODE-GROUPED): each node group carries its own `Total:`.\n    print!(\n        \"{}\",\n        render_node_grouped(\n            &self_node_ident,\n            &names,\n            &this_cells,\n            &remote,\n            detail,\n            show_all,\n            crate::helpfmt::stdout_color(),\n        )\n    );\n    0\n}\n\n/// One instance row rendered under a node group in `endpoint list`: the\n/// `(id, endpoint_type, EpDisplay, resources)` cell a single `(id, node)`\n/// instance contributes. The node itself is the group header (node-grouped view,\n/// REQ-ENDPOINT-LIST-NODE-GROUPED), so the row carries no node column — the\n\n[Showing lines 2959-3093 of 17537. Use :3094 to continue]"}],"details":{"truncation":{"content":"                    project,\r\n                }\r\n            })\r\n            .collect();\r\n        return print_json(&EndpointListJson {\r\n            self_pin,\r\n            subnets: subnet_groups,\r\n            local,\r\n        });\r\n    }\r\n\r\n    // SELF pin (decision 2): the session's own endpoint renders first and\r\n    // distinctly, whatever subnet groups follow. `spt whoami` is a thin alias for\r\n    // this command (REQ-WHOAMI-1), so the SELF pin additionally carries the Self\r\n    // endpoint's authored description — the \"who am I\" answer.\r\n    // The canonical `LABEL (keyprefix…)` for THIS node — reused by the SELF-pin\r\n    // `(self @ <node>)` marker and the \"This node:\" group header below.\r\n    // [impl->REQ-ENDPOINT-LIST-NODE-IDENT]\r\n    let self_node_ident = node_ident_display();\r\n    if let Some(self_id) = roster::detect_self_id() {\r\n        let state = roster::enumerate()\r\n            .into_iter()\r\n            .find(|p| p.id == self_id)\r\n            .map(|p| {\r\n                // UNBOUND surfaces here too (REQ-ENDPOINT-UNBOUND-ATTACH): the Self\r\n                // pin must not read a live pre-bind session as plain alive=false.\r\n                let unbound = if p.unbound { \"  UNBOUND\" } else { \"\" };\r\n                format!(\"{}  ready={} alive={}{}\", p.state, p.ready, p.alive, unbound)\r\n            })\r\n            .unwrap_or_else(|| \"(no local perch)\".to_string());\r\n        let info = spt_store::info::read_info(&perch::resolve_perch_path(&self_id, ParentHint::Infer));\r\n        let desc = info.as_ref().and_then(|rec| rec.resources.clone());\r\n        // The harness-reachable psyche-host-failure annotation (v0.8.1,\r\n        // REQ-HAZARD-LIVEHOST-BOOT-RACE): an online live agent whose Psyche failed\r\n        // to host shows status authoritatively AND this extra line, surfacing the\r\n        // boot-race that was otherwise silent on the brain's stderr.\r\n        // [impl->REQ-HAZARD-LIVEHOST-BOOT-RACE]\r\n        let phe = info.as_ref().and_then(|rec| rec.psyche_host_error.clone());\r\n        // The input-translation fault annotation (F-1, REQ-PUBLIC-ERROR-SURFACES).\r\n        let tf = info.as_ref().and_then(|rec| rec.translation_fault.clone());\r\n        // The pin carries a `(self @ <node>)` marker naming THIS node — the\r\n        // node-grouped view pins SELF first and names its home node inline\r\n        // (REQ-ENDPOINT-LIST-NODE-GROUPED).\r\n        println!(\r\n            \"{}\",\r\n            render_self_pin(\r\n                &self_id,\r\n                &state,\r\n                desc.as_deref(),\r\n                Some(self_node_ident.as_str()),\r\n                phe.as_ref(),\r\n                tf.as_deref(),\r\n            )\r\n        );\r\n    }\r\n\r\n    let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\r\n    let vis = VisibilityStore::load();\r\n    let names: Vec<String> = match subnet {\r\n        Some(one) => vec![one],\r\n        None => subnets.subnets.iter().map(|s| s.name.clone()).collect(),\r\n    };\r\n\r\n    // This node's own instance rows come from the LOCAL ROSTER (status truth),\r\n    // NOT gossip (REQ-ENDPOINT-LIST-NODE-GROUPED / REQ-ENDPOINT-LIST-MERGE-LOCAL):\r\n    // a just-bound perch lags the WAN snapshot by a pump cadence, so the roster is\r\n    // the authoritative view of what THIS node hosts. Each row derives the SAME\r\n    // EpDisplay vocabulary a picker row would (advertised-status), its type read\r\n    // from info.json. [impl->REQ-ENDPOINT-LIST-MERGE-LOCAL]\r\n    let this_cells: Vec<InstanceCell> = roster::enumerate()\r\n        .into_iter()\r\n        .filter(|p| keep_local(&p.state))\r\n        .map(|p| {\r\n            let perch_path = perch::resolve_perch_path(&p.id, ParentHint::Infer);\r\n            let rec = spt_store::info::read_info(&perch_path);\r\n            // #8: the LATEST project (sessions.log history head, owlery-excluded) —\r\n            // derived here where the perch path + info.cwd are in hand, then passed in\r\n            // (this_node_cell stays pure over its inputs).\r\n            // [impl->REQ-ENDPOINT-LIST-PROJECT-COL]\r\n            let project_ref = crate::picker::data::latest_project_ref(\r\n                &p.id,\r\n                &perch_path,\r\n                rec.as_ref().and_then(|r| r.cwd.as_deref()),\r\n            );\r\n            this_node_cell(&p, rec.as_ref(), project_ref)\r\n        })\r\n        .collect();\r\n\r\n    // Remote instances come from the WAN registry projection, one (id, node) row\r\n    // per subnet; group_remote_nodes collapses the subnet duplication (freshest\r\n    // epoch wins a cross-subnet status disagreement) and unions the subnet names\r\n    // per node. This node's OWN gossip rows are discarded — the roster above is\r\n    // its status truth. [impl->REQ-ENDPOINT-LIST-NODE-GROUPED]\r\n    let self_node_hex = spt_store::nodeid::load_or_create()\r\n        .ok()\r\n        .map(|i| i.public_key().to_hex())\r\n        .unwrap_or_default();\r\n    let mut tagged: Vec<(String, spt_net::net::registry::ResourceRow)> = Vec::new();\r\n    for name in &names {\r\n        let Some(reg) = regs.get(name) else {\r\n            continue;\r\n        };\r\n        let hide_new = subnets\r\n            .find(name)\r\n            .map(|s| s.hide_new_endpoints)\r\n            .unwrap_or(false);\r\n        for row in resource_projection(reg, |id| vis.hidden(id, name, hide_new)) {\r\n            if keep_remote(&row.endpoint_type) {\r\n                tagged.push((name.clone(), row));\r\n            }\r\n        }\r\n    }\r\n    let remote = group_remote_nodes(&self_node_hex, tagged);\r\n\r\n    // The stderr `ENDPOINTS:<n>` line and the grand total are REMOVED\r\n    // (REQ-ENDPOINT-LIST-NODE-GROUPED): each node group carries its own `Total:`.\r\n    print!(\r\n        \"{}\",\r\n        render_node_grouped(\r\n            &self_node_ident,\r\n            &names,\r\n            &this_cells,\r\n            &remote,\r\n            detail,\r\n            show_all,\r\n            crate::helpfmt::stdout_color(),\r\n        )\r\n    );\r\n    0\r\n}\r\n\r\n/// One instance row rendered under a node group in `endpoint list`: the\r\n/// `(id, endpoint_type, EpDisplay, resources)` cell a single `(id, node)`\r\n/// instance contributes. The node itself is the group header (node-grouped view,\r\n/// REQ-ENDPOINT-LIST-NODE-GROUPED), so the row carries no node column — the\r","truncated":true,"truncatedBy":"lines","totalLines":14579,"totalBytes":6247,"outputLines":135,"outputBytes":6247,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"fn cmd_endpoint_list(\n…\n) -> i32 {\n…\n    if json {\n…\n        let local = all_local\n…\n            .map(|p| {\n…\n                LocalPerchJson {\n…\n                    project,\r\n                }\r\n            })\r\n            .collect();\r\n        return print_json(&EndpointListJson {\r\n            self_pin,\r\n            subnets: subnet_groups,\r\n            local,\r\n        });\r\n    }\r\n\r\n    // SELF pin (decision 2): the session's own endpoint renders first and\r\n    // distinctly, whatever subnet groups follow. `spt whoami` is a thin alias for\r\n    // this command (REQ-WHOAMI-1), so the SELF pin additionally carries the Self\r\n    // endpoint's authored description — the \"who am I\" answer.\r\n    // The canonical `LABEL (keyprefix…)` for THIS node — reused by the SELF-pin\r\n    // `(self @ <node>)` marker and the \"This node:\" group header below.\r\n    // [impl->REQ-ENDPOINT-LIST-NODE-IDENT]\r\n    let self_node_ident = node_ident_display();\r\n    if let Some(self_id) = roster::detect_self_id() {\r\n        let state = roster::enumerate()\r\n            .into_iter()\r\n            .find(|p| p.id == self_id)\r\n            .map(|p| {\r\n                // UNBOUND surfaces here too (REQ-ENDPOINT-UNBOUND-ATTACH): the Self\r\n                // pin must not read a live pre-bind session as plain alive=false.\r\n                let unbound = if p.unbound { \"  UNBOUND\" } else { \"\" };\r\n                format!(\"{}  ready={} alive={}{}\", p.state, p.ready, p.alive, unbound)\r\n            })\r\n            .unwrap_or_else(|| \"(no local perch)\".to_string());\r\n        let info = spt_store::info::read_info(&perch::resolve_perch_path(&self_id, ParentHint::Infer));\r\n        let desc = info.as_ref().and_then(|rec| rec.resources.clone());\r\n        // The harness-reachable psyche-host-failure annotation (v0.8.1,\r\n        // REQ-HAZARD-LIVEHOST-BOOT-RACE): an online live agent whose Psyche failed\r\n        // to host shows status authoritatively AND this extra line, surfacing the\r\n        // boot-race that was otherwise silent on the brain's stderr.\r\n        // [impl->REQ-HAZARD-LIVEHOST-BOOT-RACE]\r\n        let phe = info.as_ref().and_then(|rec| rec.psyche_host_error.clone());\r\n        // The input-translation fault annotation (F-1, REQ-PUBLIC-ERROR-SURFACES).\r\n        let tf = info.as_ref().and_then(|rec| rec.translation_fault.clone());\r\n        // The pin carries a `(self @ <node>)` marker naming THIS node — the\r\n        // node-grouped view pins SELF first and names its home node inline\r\n        // (REQ-ENDPOINT-LIST-NODE-GROUPED).\r\n        println!(\r\n            \"{}\",\r\n            render_self_pin(\r\n                &self_id,\r\n                &state,\r\n                desc.as_deref(),\r\n                Some(self_node_ident.as_str()),\r\n                phe.as_ref(),\r\n                tf.as_deref(),\r\n            )\r\n        );\r\n    }\r\n\r\n    let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\r\n    let vis = VisibilityStore::load();\r\n    let names: Vec<String> = match subnet {\r\n        Some(one) => vec![one],\r\n        None => subnets.subnets.iter().map(|s| s.name.clone()).collect(),\r\n    };\r\n\r\n    // This node's own instance rows come from the LOCAL ROSTER (status truth),\r\n    // NOT gossip (REQ-ENDPOINT-LIST-NODE-GROUPED / REQ-ENDPOINT-LIST-MERGE-LOCAL):\r\n    // a just-bound perch lags the WAN snapshot by a pump cadence, so the roster is\r\n    // the authoritative view of what THIS node hosts. Each row derives the SAME\r\n    // EpDisplay vocabulary a picker row would (advertised-status), its type read\r\n    // from info.json. [impl->REQ-ENDPOINT-LIST-MERGE-LOCAL]\r\n    let this_cells: Vec<InstanceCell> = roster::enumerate()\r\n        .into_iter()\r\n        .filter(|p| keep_local(&p.state))\r\n        .map(|p| {\r\n            let perch_path = perch::resolve_perch_path(&p.id, ParentHint::Infer);\r\n            let rec = spt_store::info::read_info(&perch_path);\r\n            // #8: the LATEST project (sessions.log history head, owlery-excluded) —\r\n            // derived here where the perch path + info.cwd are in hand, then passed in\r\n            // (this_node_cell stays pure over its inputs).\r\n            // [impl->REQ-ENDPOINT-LIST-PROJECT-COL]\r\n            let project_ref = crate::picker::data::latest_project_ref(\r\n                &p.id,\r\n                &perch_path,\r\n                rec.as_ref().and_then(|r| r.cwd.as_deref()),\r\n            );\r\n            this_node_cell(&p, rec.as_ref(), project_ref)\r\n        })\r\n        .collect();\r\n\r\n    // Remote instances come from the WAN registry projection, one (id, node) row\r\n    // per subnet; group_remote_nodes collapses the subnet duplication (freshest\r\n    // epoch wins a cross-subnet status disagreement) and unions the subnet names\r\n    // per node. This node's OWN gossip rows are discarded — the roster above is\r\n    // its status truth. [impl->REQ-ENDPOINT-LIST-NODE-GROUPED]\r\n    let self_node_hex = spt_store::nodeid::load_or_create()\r\n        .ok()\r\n        .map(|i| i.public_key().to_hex())\r\n        .unwrap_or_default();\r\n    let mut tagged: Vec<(String, spt_net::net::registry::ResourceRow)> = Vec::new();\r\n    for name in &names {\r\n        let Some(reg) = regs.get(name) else {\r\n            continue;\r\n        };\r\n        let hide_new = subnets\r\n            .find(name)\r\n            .map(|s| s.hide_new_endpoints)\r\n            .unwrap_or(false);\r\n        for row in resource_projection(reg, |id| vis.hidden(id, name, hide_new)) {\r\n            if keep_remote(&row.endpoint_type) {\r\n                tagged.push((name.clone(), row));\r\n            }\r\n        }\r\n    }\r\n    let remote = group_remote_nodes(&self_node_hex, tagged);\r\n\r\n    // The stderr `ENDPOINTS:<n>` line and the grand total are REMOVED\r\n    // (REQ-ENDPOINT-LIST-NODE-GROUPED): each node group carries its own `Total:`.\r\n    print!(\r\n        \"{}\",\r\n        render_node_grouped(\r\n            &self_node_ident,\r\n            &names,\r\n            &this_cells,\r\n            &remote,\r\n            detail,\r\n            show_all,\r\n            crate::helpfmt::stdout_color(),\r\n        )\r\n    );\r\n    0\r\n}\r\n\r\n/// One instance row rendered under a node group in `endpoint list`: the\r\n/// `(id, endpoint_type, EpDisplay, resources)` cell a single `(id, node)`\r\n/// instance contributes. The node itself is the group header (node-grouped view,\r\n/// REQ-ENDPOINT-LIST-NODE-GROUPED), so the row carries no node column — the\r","startLine":2810,"lineNumbers":[2810,null,2816,null,2840,null,2937,null,2940,null,2952,null,2959,2960,2961,2962,2963,2964,2965,2966,2967,2968,2969,2970,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3061,3062,3063,3064,3065,3066,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3078,3079,3080,3081,3082,3083,3084,3085,3086,3087,3088,3089,3090,3091,3092,3093]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":17537,"totalBytes":6247,"outputLines":135,"outputBytes":6247,"shownRange":{"start":2959,"end":3093},"nextOffset":3094}}},"isError":false,"timestamp":1784069152951}}
{"type":"message","id":"5a7e9915","parentId":"fb83f5de","timestamp":"2026-07-14T22:46:05.279Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Locating subnet status rows definition**"},{"type":"toolCall","id":"call_VWgpXQOVtpioaELt8aZ4mVyh|fc_050f56f290a937ae016a56bc2d17448196ba5fe36169fba380","name":"grep","arguments":{"i":"Locating subnet status rows","pattern":"fn subnet_status_rows|struct SubnetStatus|probe.*node|nodes: Vec|NodeStatus","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src","selector":null,"case":true,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_7FPtNTzzrRT309llG65VWkUK|fc_050f56f290a937ae016a56bc2d176481968d92e4d29c540f6b","name":"grep","arguments":{"i":"Tracing exact registry freshness","pattern":"VisibilityStore|last_seen|gossip.*recency|fresh|stale|OFFLINE|RECENCY","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","selector":"2500-2960,3500-3960","case":false,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_zsuzZaa8OFau0TfrpGrrULEo|fc_050f56f290a937ae016a56bc2d177481969d109043c880d018","name":"grep","arguments":{"i":"Finding status JSON examples","pattern":"\"nodes\"\\s*:\\s*\\[|subnet status --json|EndpointListJson","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/tests; C:/Users/decid/Documents/projects/spt-core/crates/spt/src","selector":null,"case":false,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_fHv8vcKEeSHcpAxbA9VT0WDM|fc_050f56f290a937ae016a56bc2d17a481969e7b915f6651e209","name":"grep","arguments":{"i":"Checking relay failures","pattern":"(?i)(relay|iroh|dns|discovery|magic|derp|home relay|netcheck|portmap|stun)","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_3QdwMmk4WfK1mxeSqTw8PJ0c|fc_050f56f290a937ae016a56bc2d17ac819691572d45ff8b416b","name":"read","arguments":{"i":"Reading status render capture tail","path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","selector":"1-20,2050-2140"}},{"type":"toolCall","id":"call_lBllhVinki7j3yef6BDFzya3|fc_050f56f290a937ae016a56bc2d17b481969cf4d9fac0b91eb5","name":"grep","arguments":{"i":"Tracing clock jumps","pattern":"(?i)(clock|wall_ms|time.*jump|backward|future|skew)","path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":12591,"output":575,"cacheRead":131584,"cacheWrite":0,"totalTokens":144750,"reasoningTokens":28,"cost":{"input":0.06295500000000001,"output":0.01725,"cacheRead":0.065792,"cacheWrite":0,"total":0.14599700000000002}},"stopReason":"toolUse","timestamp":1784069152991,"responseId":"resp_050f56f290a937ae016a56bc211b5081968e70465955d2dd45","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc2242548196b50653f52a7fe3d9","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrwtmzAO-QOWBq8k3K4hsXtxKCgr9NPXTxXcqnXNQFy2zYlH8CErtImVcz55mS7X7SvX85x_PluX50ZpPpHqen8WWwNJHG16QWmxkRF---9flxmiMKqk2RG3FsVSdmMeG6LAtf2HFxWEDBb4N4NFIVsHvcYQ-GnF3mURjzLLwQ17zJnoIi9YD_eRJqwtEeYNMnyWkYeECw05T-aoGScSxDRYm5IfLK-agSuR9OphQaM-tLqzrEKQlFJ85VM9aljZ5s0LXim8Eb84TJvLajjkzSwXyy0mWSG99IpLEyQftxynymildpTdwj_3pSNeqae_iT3X7-53-BAGA-M6iIZOQqvUNaITDQ9UUZwD9ZAbud6s5FCTHGJhmd7YjGlFBqSgOI5PYYIxD_QLxJT7GTSWPCV2azcD9ntPTPnQTtN-c1P7YK_OOBvvgXlRJcCLffgpL945L9Jl-1-kLJ-9xpAqHccP01oj1u0ZHeIkOueAb-PhitMmCKQADAfcLWmmwztXrsyKd7E5YKD2TbeGyZMk87fXtSScxZnZT-Ub3C6Z_dNbOOceTvjxyPkfCNATkaQwycvufk9xB7VQf70fPW6r9p4As0UjhenQr5WuwzyJoTXIhjYtQHTP43ZqS5BNm3PeQPv8XFnekMqyfoZbKu_D3SsvqZwyfvBppxJl3Ev4gYoiF8Mo3xKzIkAsOsEZ1yv0bN920zOqWMd1yLgaDuTSuwkfkwQZ-Xojnw_c5EXHAJoH1NW6dSKoFHeFwva17Zyp5olos2TbLvtxjTJ_jXvOlLNY3F6ocVzVuMlyRoIcNhJL4v35XYzh-jRu9HSfkGQ4QuWh0Qwb5q5yAZLEgDyCaDKyp49FrCasXgtT5O-rX6bYFQgfnPKdgulxxlS-7Imo5hs7dfwIkYZgSEQIFRCPsSfmy9BrwUj3V5tuKJ2cT6EjMKalgBRwKlscy0dR4ii-H2wLTWhCFSdn1Rzd67fr-8uhkn3Z5hm-SzYpLiIJnmfJrywnS2Fxd5ClM-HLqramPdPD0BcI8wuxIfXjlVAjBWKnrDbCGOxCXg5gqPgDOmpjf0awKvBgp6N7EhcgHjLY7PARXnxmvWLZrqnDoUccE6G8jw==","summary":[{"type":"summary_text","text":"**Locating subnet status rows definition**"}]},{"id":"fc_050f56f290a937ae016a56bc2d17448196ba5fe36169fba380","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating subnet status rows\",\"pattern\":\"fn subnet_status_rows|struct SubnetStatus|probe.*node|nodes: Vec|NodeStatus\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_VWgpXQOVtpioaELt8aZ4mVyh","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc2d176481968d92e4d29c540f6b","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing exact registry freshness\",\"pattern\":\"VisibilityStore|last_seen|gossip.*recency|fresh|stale|OFFLINE|RECENCY\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"selector\":\"2500-2960,3500-3960\",\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_7FPtNTzzrRT309llG65VWkUK","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc2d177481969d109043c880d018","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding status JSON examples\",\"pattern\":\"\\\"nodes\\\"\\\\s*:\\\\s*\\\\[|subnet status --json|EndpointListJson\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/tests; C:/Users/decid/Documents/projects/spt-core/crates/spt/src\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_zsuzZaa8OFau0TfrpGrrULEo","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc2d17a481969e7b915f6651e209","type":"function_call","status":"completed","arguments":"{\"i\":\"Checking relay failures\",\"pattern\":\"(?i)(relay|iroh|dns|discovery|magic|derp|home relay|netcheck|portmap|stun)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_fHv8vcKEeSHcpAxbA9VT0WDM","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc2d17ac819691572d45ff8b416b","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading status render capture tail\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log\",\"selector\":\"1-20,2050-2140\"}","call_id":"call_3QdwMmk4WfK1mxeSqTw8PJ0c","name":"read"},{"id":"fc_050f56f290a937ae016a56bc2d17b481969cf4d9fac0b91eb5","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing clock jumps\",\"pattern\":\"(?i)(clock|wall_ms|time.*jump|backward|future|skew)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_lBllhVinki7j3yef6BDFzya3","name":"grep"}]},"duration":12287.315499961376,"ttft":1304.0357999801636,"contextSnapshot":{"promptTokens":144175,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_VWgpXQOVtpioaELt8aZ4mVyh|fc_050f56f290a937ae016a56bc2d17448196ba5fe36169fba380","toolName":"grep","startedAt":"2026-07-14T22:46:05.279Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src"},"intent":"Locating subnet status rows"},"id":"5b5000a0","parentId":"5a7e9915","timestamp":"2026-07-14T22:46:05.279Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_7FPtNTzzrRT309llG65VWkUK|fc_050f56f290a937ae016a56bc2d176481968d92e4d29c540f6b","toolName":"grep","startedAt":"2026-07-14T22:46:05.279Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"intent":"Tracing exact registry freshness"},"id":"5151f067","parentId":"5b5000a0","timestamp":"2026-07-14T22:46:05.279Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_zsuzZaa8OFau0TfrpGrrULEo|fc_050f56f290a937ae016a56bc2d177481969d109043c880d018","toolName":"grep","startedAt":"2026-07-14T22:46:05.280Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/tests; C:/Users/decid/Documents/projects/spt-core/crates/spt/src"},"intent":"Finding status JSON examples"},"id":"646ded92","parentId":"5151f067","timestamp":"2026-07-14T22:46:05.280Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_fHv8vcKEeSHcpAxbA9VT0WDM|fc_050f56f290a937ae016a56bc2d17a481969e7b915f6651e209","toolName":"grep","startedAt":"2026-07-14T22:46:05.280Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"intent":"Checking relay failures"},"id":"e6add5ef","parentId":"646ded92","timestamp":"2026-07-14T22:46:05.280Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_3QdwMmk4WfK1mxeSqTw8PJ0c|fc_050f56f290a937ae016a56bc2d17ac819691572d45ff8b416b","toolName":"read","startedAt":"2026-07-14T22:46:05.280Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log"},"intent":"Reading status render capture tail"},"id":"873f46a0","parentId":"e6add5ef","timestamp":"2026-07-14T22:46:05.280Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_lBllhVinki7j3yef6BDFzya3|fc_050f56f290a937ae016a56bc2d17b481969cf4d9fac0b91eb5","toolName":"grep","startedAt":"2026-07-14T22:46:05.280Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Tracing clock jumps"},"id":"c7913aea","parentId":"873f46a0","timestamp":"2026-07-14T22:46:05.280Z"}
{"type":"message","id":"1eb8320a","parentId":"c7913aea","timestamp":"2026-07-14T22:46:05.379Z","message":{"role":"toolResult","toolCallId":"call_3QdwMmk4WfK1mxeSqTw8PJ0c|fc_050f56f290a937ae016a56bc2d17ac819691572d45ff8b416b","toolName":"read","content":[{"type":"text","text":"=== spt brain stderr — generation 1 — pid 43932 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)\nBRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\nPEER_PUMP_FAIL: brain IPC read deadline elapsed\nPEER_PUMP_RESTART: supervised restart in 10s\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\n=== spt broker stderr — generation 0 — pid 50220 ===\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n=== spt brain stderr — generation 0 — pid 9476 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n…\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454828 id=75f200f523bebb7b896a0e35d18206c02f66c6b4ea92363066e8b27e6bf9fa30 addr=EndpointAddr { id: PublicKey(75f200f523bebb7b896a0e35d18206c02f66c6b4ea92363066e8b27e6bf9fa30), addrs: {Ip(100.68.35.65:63027), Ip(192.168.1.81:63027)} }\nPAIR_MEET_UP:SPT_DEV step=59454828 id=7d6aa54d33df402c7729798ebc86877ee572a42196bd7aba679cd34d4556cd7f addr=EndpointAddr { id: PublicKey(7d6aa54d33df402c7729798ebc86877ee572a42196bd7aba679cd34d4556cd7f), addrs: {Ip(100.68.35.65:63025), Ip(192.168.1.81:63025)} }\nPAIR_MEET_UP:BS-Resources step=59454828 id=2ac97aa4415bf1a71dc6e328974b79b87fb02e0cfded8c6d755ada35c8fb0617 addr=EndpointAddr { id: PublicKey(2ac97aa4415bf1a71dc6e328974b79b87fb02e0cfded8c6d755ada35c8fb0617), addrs: {Ip(100.68.35.65:63039), Ip(192.168.1.81:63039)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454829 id=e98670cad865a9866b770dcf52ee20794690087cd5f7f56b80fad45668acd8a5 addr=EndpointAddr { id: PublicKey(e98670cad865a9866b770dcf52ee20794690087cd5f7f56b80fad45668acd8a5), addrs: {Ip(100.68.35.65:64271), Ip(192.168.1.81:64271)} }\nPAIR_MEET_UP:SPT_DEV step=59454829 id=f7aa6e71b51e549a177dc557c10d5d633cd119c3301789dd04bef8a5ac6f8a85 addr=EndpointAddr { id: PublicKey(f7aa6e71b51e549a177dc557c10d5d633cd119c3301789dd04bef8a5ac6f8a85), addrs: {Ip(100.68.35.65:64273), Ip(192.168.1.81:64273)} }\nPAIR_MEET_UP:BIGNET step=59454829 id=96350fbbaa4bc4defa237370b3c02db3c97ab4df338fb384a1845436a191e78c addr=EndpointAddr { id: PublicKey(96350fbbaa4bc4defa237370b3c02db3c97ab4df338fb384a1845436a191e78c), addrs: {Ip(100.68.35.65:64285), Ip(192.168.1.81:64285)} }\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454830 id=afab1b934025e309ed0fd13702fc514990dcfea2ba12a1e4d752159140e1fe8a addr=EndpointAddr { id: PublicKey(afab1b934025e309ed0fd13702fc514990dcfea2ba12a1e4d752159140e1fe8a), addrs: {Ip(100.68.35.65:62476), Ip(192.168.1.81:62476)} }\nPAIR_MEET_UP:SPT_DEV step=59454830 id=9c50602763bc885ab7c0614bf219d4e43558ad1209efbcf6b3d1ff219c492ce4 addr=EndpointAddr { id: PublicKey(9c50602763bc885ab7c0614bf219d4e43558ad1209efbcf6b3d1ff219c492ce4), addrs: {Ip(100.68.35.65:62475), Ip(192.168.1.81:62475)} }\nPAIR_MEET_UP:BIGNET step=59454830 id=bc95bacadaa318ade7bef212f36e310defa571a690ce070a46c01882f1e7d02a addr=EndpointAddr { id: PublicKey(bc95bacadaa318ade7bef212f36e310defa571a690ce070a46c01882f1e7d02a), addrs: {Ip(100.68.35.65:62488), Ip(192.168.1.81:62488)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454831 id=0ecbc50ddb882f53d9b3e11c52e9f93b542319eef5e88bf6d24a1b9f8294f2ed addr=EndpointAddr { id: PublicKey(0ecbc50ddb882f53d9b3e11c52e9f93b542319eef5e88bf6d24a1b9f8294f2ed), addrs: {Ip(100.68.35.65:52251), Ip(192.168.1.81:52251)} }\nPAIR_MEET_UP:SPT_DEV step=59454831 id=e421f66dd9d17152a1f0323413719a3630e2ff7d8bd281e9882618f7b48b2357 addr=EndpointAddr { id: PublicKey(e421f66dd9d17152a1f0323413719a3630e2ff7d8bd281e9882618f7b48b2357), addrs: {Ip(100.68.35.65:52250), Ip(192.168.1.81:52250)} }\nPAIR_MEET_UP:BS-Resources step=59454831 id=569cd18d5379abf662e26d9794567d64f300069f1b233d5a1bb69714d28f41d0 addr=EndpointAddr { id: PublicKey(569cd18d5379abf662e26d9794567d64f300069f1b233d5a1bb69714d28f41d0), addrs: {Ip(100.68.35.65:52264), Ip(192.168.1.81:52264)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454832 id=e7cc8b95629a3104813c49bf0760ee1695047d1228f9d951f875d4c7a0a5d6f2 addr=EndpointAddr { id: PublicKey(e7cc8b95629a3104813c49bf0760ee1695047d1228f9d951f875d4c7a0a5d6f2), addrs: {Ip(100.68.35.65:49386), Ip(192.168.1.81:49386)} }\nPAIR_MEET_UP:BIGNET step=59454832 id=ed7a1f74a48c05066f8a262a965152fd68b43790e282c43c52216bdd696c9e36 addr=EndpointAddr { id: PublicKey(ed7a1f74a48c05066f8a262a965152fd68b43790e282c43c52216bdd696c9e36), addrs: {Ip(100.68.35.65:49387), Ip(192.168.1.81:49387)} }\nPAIR_MEET_UP:SPT_DEV step=59454832 id=efe915140d21ea3766d9e92b9ba3efb9e5634aa37b40fa1dab755fab99b99521 addr=EndpointAddr { id: PublicKey(efe915140d21ea3766d9e92b9ba3efb9e5634aa37b40fa1dab755fab99b99521), addrs: {Ip(100.68.35.65:49392), Ip(192.168.1.81:49392)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454833 id=f8d388f3fe8fd8ffb81f1008c1bfbd2bbf458fc1fe897591b34466ded6cf07fe addr=EndpointAddr { id: PublicKey(f8d388f3fe8fd8ffb81f1008c1bfbd2bbf458fc1fe897591b34466ded6cf07fe), addrs: {Ip(100.68.35.65:57913), Ip(192.168.1.81:57913)} }\nPAIR_MEET_UP:BS-Resources step=59454833 id=d429e840aad2aece1fbb3450d16001747a3c8cf3f13441a56f366743dad98c20 addr=EndpointAddr { id: PublicKey(d429e840aad2aece1fbb3450d16001747a3c8cf3f13441a56f366743dad98c20), addrs: {Ip(100.68.35.65:57921), Ip(192.168.1.81:57921)} }\nPAIR_MEET_UP:BIGNET step=59454833 id=39aa90356b92dd833c532fadd52b6977e7f9be663f55e449148185624a807e8d addr=EndpointAddr { id: PublicKey(39aa90356b92dd833c532fadd52b6977e7f9be663f55e449148185624a807e8d), addrs: {Ip(100.68.35.65:57919), Ip(192.168.1.81:57919)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454834 id=4511f56d54467720b9c8ada939a3fd7f71c0e53d26df30df1cd3131acde46401 addr=EndpointAddr { id: PublicKey(4511f56d54467720b9c8ada939a3fd7f71c0e53d26df30df1cd3131acde46401), addrs: {Ip(100.68.35.65:54609), Ip(192.168.1.81:54609)} }\nPAIR_MEET_UP:BS-Resources step=59454834 id=b6b96cae5d43173af8cfd5521fd90ec378c85795037175b5cbbb019e320c42a6 addr=EndpointAddr { id: PublicKey(b6b96cae5d43173af8cfd5521fd90ec378c85795037175b5cbbb019e320c42a6), addrs: {Ip(100.68.35.65:54610), Ip(192.168.1.81:54610)} }\nPAIR_MEET_UP:SPT_DEV step=59454834 id=762c87bdcdbab7ad031c0dd2e6c5fe94b60c2f78848d41c4c1b23e881d10a37c addr=EndpointAddr { id: PublicKey(762c87bdcdbab7ad031c0dd2e6c5fe94b60c2f78848d41c4c1b23e881d10a37c), addrs: {Ip(100.68.35.65:54615), Ip(192.168.1.81:54615)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454835 id=0992a53bdc9175da14a5ee775924ac286b36b8f331316c8626b347970c989bd7 addr=EndpointAddr { id: PublicKey(0992a53bdc9175da14a5ee775924ac286b36b8f331316c8626b347970c989bd7), addrs: {Ip(100.68.35.65:50422), Ip(192.168.1.81:50422)} }\nPAIR_MEET_UP:BIGNET step=59454835 id=8e8d4347b0faf1b2440bc7a59f7f5f751ae3b62b66b6c72772e46e8f4b25a33d addr=EndpointAddr { id: PublicKey(8e8d4347b0faf1b2440bc7a59f7f5f751ae3b62b66b6c72772e46e8f4b25a33d), addrs: {Ip(100.68.35.65:50420), Ip(192.168.1.81:50420)} }\nPAIR_MEET_UP:SPT_DEV step=59454835 id=0daf97f964d68703376c4a1c6e0c134fe3c15300912507d22a6af01646ac6404 addr=EndpointAddr { id: PublicKey(0daf97f964d68703376c4a1c6e0c134fe3c15300912507d22a6af01646ac6404), addrs: {Ip(100.68.35.65:50433), Ip(192.168.1.81:50433)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454836 id=bd9ab47ff5e384f1b7f4db64b035cffb3f091447d3727e6f8ee28de18e2551f2 addr=EndpointAddr { id: PublicKey(bd9ab47ff5e384f1b7f4db64b035cffb3f091447d3727e6f8ee28de18e2551f2), addrs: {Ip(100.68.35.65:61159), Ip(192.168.1.81:61159)} }\nPAIR_MEET_UP:BIGNET step=59454836 id=a05f5aa67278bbcced2c7bfb66e0d6693147735c38f043c0bf0665df50dddaa4 addr=EndpointAddr { id: PublicKey(a05f5aa67278bbcced2c7bfb66e0d6693147735c38f043c0bf0665df50dddaa4), addrs: {Ip(100.68.35.65:61157), Ip(192.168.1.81:61157)} }\nPAIR_MEET_UP:BS-Resources step=59454836 id=c3a95d9478fc34c13b8a587973b312973ad4800d7ac76a2e49f4433739bd4855 addr=EndpointAddr { id: PublicKey(c3a95d9478fc34c13b8a587973b312973ad4800d7ac76a2e49f4433739bd4855), addrs: {Ip(100.68.35.65:61171), Ip(192.168.1.81:61171)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454837 id=19287b0b053d03e99acfd7ad4a8658b47e98e5f6641ed5aa0166c2339fcf4b29 addr=EndpointAddr { id: PublicKey(19287b0b053d03e99acfd7ad4a8658b47e98e5f6641ed5aa0166c2339fcf4b29), addrs: {Ip(100.68.35.65:51098), Ip(192.168.1.81:51098)} }\nPAIR_MEET_UP:BIGNET step=59454837 id=95092b4c3f072c3143585807326065ec06901e2c5d9dd281a08797b2d1316cf0 addr=EndpointAddr { id: PublicKey(95092b4c3f072c3143585807326065ec06901e2c5d9dd281a08797b2d1316cf0), addrs: {Ip(100.68.35.65:51097), Ip(192.168.1.81:51097)} }\nPAIR_MEET_UP:SPT_DEV step=59454837 id=a1c64f9249ea19c20c0cdc804c64116303ff133b65dc633da483c9a096b84081 addr=EndpointAddr { id: PublicKey(a1c64f9249ea19c20c0cdc804c64116303ff133b65dc633da483c9a096b84081), addrs: {Ip(100.68.35.65:51103), Ip(192.168.1.81:51103)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454838 id=2b572f8e1324e1f6ad98e06aea786c6c8e40b95792a4be4afa2daedd646cf5c3 addr=EndpointAddr { id: PublicKey(2b572f8e1324e1f6ad98e06aea786c6c8e40b95792a4be4afa2daedd646cf5c3), addrs: {Ip(100.68.35.65:59731), Ip(192.168.1.81:59731)} }\nPAIR_MEET_UP:BIGNET step=59454838 id=c7bd887fa3155e95217663a02d1f3510f36f1399b0283688cfe4542252f55877 addr=EndpointAddr { id: PublicKey(c7bd887fa3155e95217663a02d1f3510f36f1399b0283688cfe4542252f55877), addrs: {Ip(100.68.35.65:59724), Ip(192.168.1.81:59724)} }\nPAIR_MEET_UP:SPT_DEV step=59454838 id=1f57b5bca27ae17b2324cfcd34413f869501969b88f72fcfe1cbdb6caa8edd2e addr=EndpointAddr { id: PublicKey(1f57b5bca27ae17b2324cfcd34413f869501969b88f72fcfe1cbdb6caa8edd2e), addrs: {Ip(100.68.35.65:59730), Ip(192.168.1.81:59730)} }\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:doyle: endpoint ACTIVE -> spool (deferred hint), not injected\nENDPOINT_INJECT:doyle (84 bytes → translation binary)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)"}],"details":{"displayContent":{"text":"=== spt brain stderr — generation 1 — pid 43932 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)\nBRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget — dropping peer (brain IPC read deadline elapsed)\nPEER_PUMP_FAIL: brain IPC read deadline elapsed\nPEER_PUMP_RESTART: supervised restart in 10s\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\n=== spt broker stderr — generation 0 — pid 50220 ===\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n=== spt brain stderr — generation 0 — pid 9476 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454594 id=d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a addr=EndpointAddr { id: PublicKey(d2df6ac70fab69b617f3b91b5b2c1204cb77a3464293716a6f101f05d183c52a), addrs: {Ip(100.68.35.65:62935), Ip(192.168.1.81:62935)} }\n…\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454828 id=75f200f523bebb7b896a0e35d18206c02f66c6b4ea92363066e8b27e6bf9fa30 addr=EndpointAddr { id: PublicKey(75f200f523bebb7b896a0e35d18206c02f66c6b4ea92363066e8b27e6bf9fa30), addrs: {Ip(100.68.35.65:63027), Ip(192.168.1.81:63027)} }\nPAIR_MEET_UP:SPT_DEV step=59454828 id=7d6aa54d33df402c7729798ebc86877ee572a42196bd7aba679cd34d4556cd7f addr=EndpointAddr { id: PublicKey(7d6aa54d33df402c7729798ebc86877ee572a42196bd7aba679cd34d4556cd7f), addrs: {Ip(100.68.35.65:63025), Ip(192.168.1.81:63025)} }\nPAIR_MEET_UP:BS-Resources step=59454828 id=2ac97aa4415bf1a71dc6e328974b79b87fb02e0cfded8c6d755ada35c8fb0617 addr=EndpointAddr { id: PublicKey(2ac97aa4415bf1a71dc6e328974b79b87fb02e0cfded8c6d755ada35c8fb0617), addrs: {Ip(100.68.35.65:63039), Ip(192.168.1.81:63039)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454829 id=e98670cad865a9866b770dcf52ee20794690087cd5f7f56b80fad45668acd8a5 addr=EndpointAddr { id: PublicKey(e98670cad865a9866b770dcf52ee20794690087cd5f7f56b80fad45668acd8a5), addrs: {Ip(100.68.35.65:64271), Ip(192.168.1.81:64271)} }\nPAIR_MEET_UP:SPT_DEV step=59454829 id=f7aa6e71b51e549a177dc557c10d5d633cd119c3301789dd04bef8a5ac6f8a85 addr=EndpointAddr { id: PublicKey(f7aa6e71b51e549a177dc557c10d5d633cd119c3301789dd04bef8a5ac6f8a85), addrs: {Ip(100.68.35.65:64273), Ip(192.168.1.81:64273)} }\nPAIR_MEET_UP:BIGNET step=59454829 id=96350fbbaa4bc4defa237370b3c02db3c97ab4df338fb384a1845436a191e78c addr=EndpointAddr { id: PublicKey(96350fbbaa4bc4defa237370b3c02db3c97ab4df338fb384a1845436a191e78c), addrs: {Ip(100.68.35.65:64285), Ip(192.168.1.81:64285)} }\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454830 id=afab1b934025e309ed0fd13702fc514990dcfea2ba12a1e4d752159140e1fe8a addr=EndpointAddr { id: PublicKey(afab1b934025e309ed0fd13702fc514990dcfea2ba12a1e4d752159140e1fe8a), addrs: {Ip(100.68.35.65:62476), Ip(192.168.1.81:62476)} }\nPAIR_MEET_UP:SPT_DEV step=59454830 id=9c50602763bc885ab7c0614bf219d4e43558ad1209efbcf6b3d1ff219c492ce4 addr=EndpointAddr { id: PublicKey(9c50602763bc885ab7c0614bf219d4e43558ad1209efbcf6b3d1ff219c492ce4), addrs: {Ip(100.68.35.65:62475), Ip(192.168.1.81:62475)} }\nPAIR_MEET_UP:BIGNET step=59454830 id=bc95bacadaa318ade7bef212f36e310defa571a690ce070a46c01882f1e7d02a addr=EndpointAddr { id: PublicKey(bc95bacadaa318ade7bef212f36e310defa571a690ce070a46c01882f1e7d02a), addrs: {Ip(100.68.35.65:62488), Ip(192.168.1.81:62488)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454831 id=0ecbc50ddb882f53d9b3e11c52e9f93b542319eef5e88bf6d24a1b9f8294f2ed addr=EndpointAddr { id: PublicKey(0ecbc50ddb882f53d9b3e11c52e9f93b542319eef5e88bf6d24a1b9f8294f2ed), addrs: {Ip(100.68.35.65:52251), Ip(192.168.1.81:52251)} }\nPAIR_MEET_UP:SPT_DEV step=59454831 id=e421f66dd9d17152a1f0323413719a3630e2ff7d8bd281e9882618f7b48b2357 addr=EndpointAddr { id: PublicKey(e421f66dd9d17152a1f0323413719a3630e2ff7d8bd281e9882618f7b48b2357), addrs: {Ip(100.68.35.65:52250), Ip(192.168.1.81:52250)} }\nPAIR_MEET_UP:BS-Resources step=59454831 id=569cd18d5379abf662e26d9794567d64f300069f1b233d5a1bb69714d28f41d0 addr=EndpointAddr { id: PublicKey(569cd18d5379abf662e26d9794567d64f300069f1b233d5a1bb69714d28f41d0), addrs: {Ip(100.68.35.65:52264), Ip(192.168.1.81:52264)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454832 id=e7cc8b95629a3104813c49bf0760ee1695047d1228f9d951f875d4c7a0a5d6f2 addr=EndpointAddr { id: PublicKey(e7cc8b95629a3104813c49bf0760ee1695047d1228f9d951f875d4c7a0a5d6f2), addrs: {Ip(100.68.35.65:49386), Ip(192.168.1.81:49386)} }\nPAIR_MEET_UP:BIGNET step=59454832 id=ed7a1f74a48c05066f8a262a965152fd68b43790e282c43c52216bdd696c9e36 addr=EndpointAddr { id: PublicKey(ed7a1f74a48c05066f8a262a965152fd68b43790e282c43c52216bdd696c9e36), addrs: {Ip(100.68.35.65:49387), Ip(192.168.1.81:49387)} }\nPAIR_MEET_UP:SPT_DEV step=59454832 id=efe915140d21ea3766d9e92b9ba3efb9e5634aa37b40fa1dab755fab99b99521 addr=EndpointAddr { id: PublicKey(efe915140d21ea3766d9e92b9ba3efb9e5634aa37b40fa1dab755fab99b99521), addrs: {Ip(100.68.35.65:49392), Ip(192.168.1.81:49392)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454833 id=f8d388f3fe8fd8ffb81f1008c1bfbd2bbf458fc1fe897591b34466ded6cf07fe addr=EndpointAddr { id: PublicKey(f8d388f3fe8fd8ffb81f1008c1bfbd2bbf458fc1fe897591b34466ded6cf07fe), addrs: {Ip(100.68.35.65:57913), Ip(192.168.1.81:57913)} }\nPAIR_MEET_UP:BS-Resources step=59454833 id=d429e840aad2aece1fbb3450d16001747a3c8cf3f13441a56f366743dad98c20 addr=EndpointAddr { id: PublicKey(d429e840aad2aece1fbb3450d16001747a3c8cf3f13441a56f366743dad98c20), addrs: {Ip(100.68.35.65:57921), Ip(192.168.1.81:57921)} }\nPAIR_MEET_UP:BIGNET step=59454833 id=39aa90356b92dd833c532fadd52b6977e7f9be663f55e449148185624a807e8d addr=EndpointAddr { id: PublicKey(39aa90356b92dd833c532fadd52b6977e7f9be663f55e449148185624a807e8d), addrs: {Ip(100.68.35.65:57919), Ip(192.168.1.81:57919)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59454834 id=4511f56d54467720b9c8ada939a3fd7f71c0e53d26df30df1cd3131acde46401 addr=EndpointAddr { id: PublicKey(4511f56d54467720b9c8ada939a3fd7f71c0e53d26df30df1cd3131acde46401), addrs: {Ip(100.68.35.65:54609), Ip(192.168.1.81:54609)} }\nPAIR_MEET_UP:BS-Resources step=59454834 id=b6b96cae5d43173af8cfd5521fd90ec378c85795037175b5cbbb019e320c42a6 addr=EndpointAddr { id: PublicKey(b6b96cae5d43173af8cfd5521fd90ec378c85795037175b5cbbb019e320c42a6), addrs: {Ip(100.68.35.65:54610), Ip(192.168.1.81:54610)} }\nPAIR_MEET_UP:SPT_DEV step=59454834 id=762c87bdcdbab7ad031c0dd2e6c5fe94b60c2f78848d41c4c1b23e881d10a37c addr=EndpointAddr { id: PublicKey(762c87bdcdbab7ad031c0dd2e6c5fe94b60c2f78848d41c4c1b23e881d10a37c), addrs: {Ip(100.68.35.65:54615), Ip(192.168.1.81:54615)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454835 id=0992a53bdc9175da14a5ee775924ac286b36b8f331316c8626b347970c989bd7 addr=EndpointAddr { id: PublicKey(0992a53bdc9175da14a5ee775924ac286b36b8f331316c8626b347970c989bd7), addrs: {Ip(100.68.35.65:50422), Ip(192.168.1.81:50422)} }\nPAIR_MEET_UP:BIGNET step=59454835 id=8e8d4347b0faf1b2440bc7a59f7f5f751ae3b62b66b6c72772e46e8f4b25a33d addr=EndpointAddr { id: PublicKey(8e8d4347b0faf1b2440bc7a59f7f5f751ae3b62b66b6c72772e46e8f4b25a33d), addrs: {Ip(100.68.35.65:50420), Ip(192.168.1.81:50420)} }\nPAIR_MEET_UP:SPT_DEV step=59454835 id=0daf97f964d68703376c4a1c6e0c134fe3c15300912507d22a6af01646ac6404 addr=EndpointAddr { id: PublicKey(0daf97f964d68703376c4a1c6e0c134fe3c15300912507d22a6af01646ac6404), addrs: {Ip(100.68.35.65:50433), Ip(192.168.1.81:50433)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59454836 id=bd9ab47ff5e384f1b7f4db64b035cffb3f091447d3727e6f8ee28de18e2551f2 addr=EndpointAddr { id: PublicKey(bd9ab47ff5e384f1b7f4db64b035cffb3f091447d3727e6f8ee28de18e2551f2), addrs: {Ip(100.68.35.65:61159), Ip(192.168.1.81:61159)} }\nPAIR_MEET_UP:BIGNET step=59454836 id=a05f5aa67278bbcced2c7bfb66e0d6693147735c38f043c0bf0665df50dddaa4 addr=EndpointAddr { id: PublicKey(a05f5aa67278bbcced2c7bfb66e0d6693147735c38f043c0bf0665df50dddaa4), addrs: {Ip(100.68.35.65:61157), Ip(192.168.1.81:61157)} }\nPAIR_MEET_UP:BS-Resources step=59454836 id=c3a95d9478fc34c13b8a587973b312973ad4800d7ac76a2e49f4433739bd4855 addr=EndpointAddr { id: PublicKey(c3a95d9478fc34c13b8a587973b312973ad4800d7ac76a2e49f4433739bd4855), addrs: {Ip(100.68.35.65:61171), Ip(192.168.1.81:61171)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454837 id=19287b0b053d03e99acfd7ad4a8658b47e98e5f6641ed5aa0166c2339fcf4b29 addr=EndpointAddr { id: PublicKey(19287b0b053d03e99acfd7ad4a8658b47e98e5f6641ed5aa0166c2339fcf4b29), addrs: {Ip(100.68.35.65:51098), Ip(192.168.1.81:51098)} }\nPAIR_MEET_UP:BIGNET step=59454837 id=95092b4c3f072c3143585807326065ec06901e2c5d9dd281a08797b2d1316cf0 addr=EndpointAddr { id: PublicKey(95092b4c3f072c3143585807326065ec06901e2c5d9dd281a08797b2d1316cf0), addrs: {Ip(100.68.35.65:51097), Ip(192.168.1.81:51097)} }\nPAIR_MEET_UP:SPT_DEV step=59454837 id=a1c64f9249ea19c20c0cdc804c64116303ff133b65dc633da483c9a096b84081 addr=EndpointAddr { id: PublicKey(a1c64f9249ea19c20c0cdc804c64116303ff133b65dc633da483c9a096b84081), addrs: {Ip(100.68.35.65:51103), Ip(192.168.1.81:51103)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59454838 id=2b572f8e1324e1f6ad98e06aea786c6c8e40b95792a4be4afa2daedd646cf5c3 addr=EndpointAddr { id: PublicKey(2b572f8e1324e1f6ad98e06aea786c6c8e40b95792a4be4afa2daedd646cf5c3), addrs: {Ip(100.68.35.65:59731), Ip(192.168.1.81:59731)} }\nPAIR_MEET_UP:BIGNET step=59454838 id=c7bd887fa3155e95217663a02d1f3510f36f1399b0283688cfe4542252f55877 addr=EndpointAddr { id: PublicKey(c7bd887fa3155e95217663a02d1f3510f36f1399b0283688cfe4542252f55877), addrs: {Ip(100.68.35.65:59724), Ip(192.168.1.81:59724)} }\nPAIR_MEET_UP:SPT_DEV step=59454838 id=1f57b5bca27ae17b2324cfcd34413f869501969b88f72fcfe1cbdb6caa8edd2e addr=EndpointAddr { id: PublicKey(1f57b5bca27ae17b2324cfcd34413f869501969b88f72fcfe1cbdb6caa8edd2e), addrs: {Ip(100.68.35.65:59730), Ip(192.168.1.81:59730)} }\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nENDPOINT_INJECT:doyle: endpoint ACTIVE -> spool (deferred hint), not injected\nENDPOINT_INJECT:doyle (84 bytes → translation binary)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,null,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075,2076,2077,2078,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log"}}},"isError":false,"timestamp":1784069165378}}
{"type":"message","id":"65e94f44","parentId":"1eb8320a","timestamp":"2026-07-14T22:46:05.379Z","message":{"role":"toolResult","toolCallId":"call_VWgpXQOVtpioaELt8aZ4mVyh|fc_050f56f290a937ae016a56bc2d17448196ba5fe36169fba380","toolName":"grep","content":[{"type":"text","text":"Skipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed."}],"details":{},"isError":true,"timestamp":1784069165379}}
{"type":"message","id":"d1381781","parentId":"65e94f44","timestamp":"2026-07-14T22:46:05.379Z","message":{"role":"toolResult","toolCallId":"call_7FPtNTzzrRT309llG65VWkUK|fc_050f56f290a937ae016a56bc2d176481968d92e4d29c540f6b","toolName":"grep","content":[{"type":"text","text":"Skipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed."}],"details":{},"isError":true,"timestamp":1784069165379}}
{"type":"message","id":"fa93099b","parentId":"d1381781","timestamp":"2026-07-14T22:46:05.379Z","message":{"role":"toolResult","toolCallId":"call_zsuzZaa8OFau0TfrpGrrULEo|fc_050f56f290a937ae016a56bc2d177481969d109043c880d018","toolName":"grep","content":[{"type":"text","text":"Skipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed."}],"details":{},"isError":true,"timestamp":1784069165379}}
{"type":"message","id":"882c155d","parentId":"fa93099b","timestamp":"2026-07-14T22:46:05.379Z","message":{"role":"toolResult","toolCallId":"call_fHv8vcKEeSHcpAxbA9VT0WDM|fc_050f56f290a937ae016a56bc2d17a481969e7b915f6651e209","toolName":"grep","content":[{"type":"text","text":"Skipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed."}],"details":{},"isError":true,"timestamp":1784069165379}}
{"type":"message","id":"bf3ddc29","parentId":"882c155d","timestamp":"2026-07-14T22:46:05.379Z","message":{"role":"toolResult","toolCallId":"call_lBllhVinki7j3yef6BDFzya3|fc_050f56f290a937ae016a56bc2d17b481969cf4d9fac0b91eb5","toolName":"grep","content":[{"type":"text","text":"Skipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed."}],"details":{},"isError":true,"timestamp":1784069165379}}
{"type":"message","id":"1e58cef8","parentId":"bf3ddc29","timestamp":"2026-07-14T22:46:06.028Z","message":{"role":"user","content":"Your current interruptible wait was interrupted because an IRC message arrived from your parent agent `Main`.\n\nParent IRC message:\n\nNew evidence from ENLYZEAM via SSH: v0.31.0, net_up true, only local ball-b visible; repeated PUMP_PEER_FAIL for HF key and all other node keys. w32tm offsets are HF +0.003s and EN -0.135s, so rotating-step clock divergence is falsified. Full meetup records advertise EN local 100.125.242.88/192.168.1.12 UDP endpoints and rotate each 30s. Prioritize transport/listener/firewall/protocol causes and status semantics.","attribution":"agent","timestamp":1784069155574,"steering":true}}
{"type":"message","id":"bf9cf026","parentId":"1e58cef8","timestamp":"2026-07-14T22:46:28.366Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating network config and logs**\n\n**Analyzing transport and listener architecture**"},{"type":"toolCall","id":"call_DXGHFQG1B71TJJ11jT2KmmnJ|fc_050f56f290a937ae016a56bc4442048196abcdd923e46c01f9","name":"grep","arguments":{"i":"Locating subnet status rows","pattern":"fn subnet_status_rows|struct SubnetStatus|probe.*node|nodes: Vec|NodeStatus","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src","selector":null,"case":true,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_A0oBWv3GQpebmPYGkvGQcFrB|fc_050f56f290a937ae016a56bc4442148196aa8782752e52efe3","name":"grep","arguments":{"i":"Checking relay failures","pattern":"(?i)(relay|iroh|dns|discovery|magic|derp|home relay|netcheck|portmap|stun|firewall|udp)","path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_Qfa37YjXaAKlprFe8QQYAcky|fc_050f56f290a937ae016a56bc44421c819681dc294ee8e5274c","name":"glob","arguments":{"i":"Locating firewall logs","path":"C:/Windows/System32/LogFiles/Firewall/*","hidden":true,"gitignore":false,"limit":50}},{"type":"toolCall","id":"call_wxd1hMkFAr6w7RmVwRFXh0AK|fc_050f56f290a937ae016a56bc4442208196b7817b4c8c1d6db0","name":"glob","arguments":{"i":"Locating network captures","path":"C:/Users/decid/AppData/Local/spt-core/rca-*/**/*net*; C:/Users/decid/AppData/Local/spt-core/rca-*/**/*port*; C:/Users/decid/AppData/Local/spt-core/rca-*/**/*firewall*","hidden":true,"gitignore":false,"limit":100}},{"type":"toolCall","id":"call_Gq258BxTMgrWFsVLX7mEdwvg|fc_050f56f290a937ae016a56bc444228819692c705edb9e8af2a","name":"grep","arguments":{"i":"Finding transport bind implementation","pattern":"Endpoint::builder|bind_addr|RelayMode|discovery|alpns|accept|net_status|enabled","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src","selector":null,"case":true,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_1i97FsDnghUYglZmPn6r8s9S|fc_050f56f290a937ae016a56bc44423081968b5abf426a090fe7","name":"read","arguments":{"i":"Reading worker starvation evidence","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs","selector":"1-260"}},{"type":"toolCall","id":"call_IIRh1xUARN3Q8DvJRfGpd762|fc_050f56f290a937ae016a56bc4442388196a5bbef9ad50f7680","name":"grep","arguments":{"i":"Finding transport timeout tests","pattern":"unreachable-connect|starve|worker|submit-dial exceeded|proof-hang|field","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs","selector":null,"case":false,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_5LTKIDetTs0YaykEl2QzZfk5|fc_050f56f290a937ae016a56bc4442408196b63067e9f8297b88","name":"grep","arguments":{"i":"Tracing net family checks","pattern":"NET_FAMILY_GATE|IPv4-only|IPv6 unreachable|bind.*IPv4","path":"C:/Users/decid/Documents/projects/spt-core/crates","selector":null,"case":true,"gitignore":true,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":7939,"output":1075,"cacheRead":143872,"cacheWrite":0,"totalTokens":152886,"reasoningTokens":427,"cost":{"input":0.039695,"output":0.03225,"cacheRead":0.071936,"cacheWrite":0,"total":0.143881}},"stopReason":"toolUse","timestamp":1784069166042,"responseId":"resp_050f56f290a937ae016a56bc2e379c8196ba71d312f1d9e3bf","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc30c0f88196adc738e0bbe9949e","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrxEpTtHKf_0IPzqQVkfMTH_m86P18-L5YzF7cV8xM1WnSPjO7sNjGvBlZQDGGa6YAqj1GjzSnaZZnT57CGHiuwYaA9JsVl8j-yoxrfF4t7l1iHaq6chN2IpSmKvg73-fxf_XDJO9EW2RjJJ3NEluqp_lNJ1Sgl5SPTk8XLKKoZ4wH1ZwZgjdwjYhxU69TUteB5h9JfAPlLE6TIkR2ltRbceWF2TOcXXLkZ6lU9my81ri5GbBWNbKhGjbGu8X0RrMiNfi5UoMmLvnkS6wxx7RKTfqvuPeAcNmNL0qtEdzF0FZPMYbPoufCX_QgwgGHBw-4PV1XB8hkn8kdkx_Ytr0pAC7noFcFdXFVQfwEqq7bHa5HJASgNPNclF3_NPCZGN6MXOBk2miu5xk4wzSJWOgwXRjszMQ4158r3B_NCfnEJoyx7WE-zRipz2fyObm-fOyE5pxOMZ6wtHpl1UV1Itbsh6_OKoUPr7LtdUpdByVrj1DAIfWN5BwAsngvuDQTF-WXyUhw-BJ_gUcjwa2NfiWZ3sscUDhJDQlnQnDhnDmycntxNufZAGvc28cTCx5DDOhpeT3A351qS74w5LSxcEp_DbNwotZTg69MYdK12f7kjQoE5znicvY-ybWeo0M0hQAQhgFvfgZBkd1wQK9pOnVnEnjm1hN2JxfcP146aWhTYNjBYlC-5hb3K-5OwQy5AH79EVHq5CHpyENo_n7vrvNfqr6te0ZJ-6Z4MrGuUf7KCYPqmiUAIj_W07Xo6B2xGbI0jOVRDBunf5va_vOiYlK8FbdutrCczsuG15i7y5URDBquwb828WgmtR_Mmg3mpuJTH3iMfVbtZFroLohnPE_v8XiOGo59n-ACyl4ji3t5BL-LcyVyw7WFE66geaIrLFJ2s4q5MYNwQPFSh884R7OhK2EUcbhpUPYgtLABeBAnslWmKEiphGmAIuKDnU3-yreFuSXc-mHb8NFaOwtrfcIzXhXXqnqBytCz1Tw0SjG-V3NZ_Wmnqn7lxb-qf_ujB7OsFkaRlwzaz3BTE3BdfuR_Qu1cMibOLh7cgwq2tVy3gKEk15WsL-ItI8Qxg5q_ttlHCNffYeyL1cZiPXNhrD_jhwHCj6fjyDa9Xaw1Dn7_dosuysZEV4q_K8BEAmIjfiCzY4dYCa93uGQuUDBy3nBhjN7OETsux2J0nGxPT8FQrj_5U4uBUVrnK7aoaqjH8cAj77UqIh334h6Hn-mLTQ6wokiWH-gThO6gh0MPygHsvMemOWTSCVTAjeD_o0U9HipsSuWDLQn14XgLNeWwG8PB-valpgt_7gGWs8I3WCPM3WUImsRrxuMdcYuFkiIqAwIxhxICReYGNwlXZRGr7EjVcpRK_5W7ngAQLc17HBsh8V4Yv-lU1g0Gmo5TKWWX3u07Bt4j3obdLWSoS3Muxfb7Ot5GTTsaeypfjzvtjG36Hk39cKYPfC8bj13pkj6K3mPsxHnTL-nTNTDP8FqquPDBVIx9BNyYHnHz__DhcB6Ek9jT9dPuPteOLRpbWxhw3Pl1vPuRmjBbssMOY5Ola4g43adivT4LgnSMJ7iM0_g9by5jQ__cnKtADxNcsOud8T6GVBoILlh4Jf0aclVEiVbI01hVGSlmoi0DuDjm4VeoFN75rR4g8OqdWrrTMMjHpwTCHe8RPtmFuunmErkthZy4DAeIqM-6v-cuxrwUU_2jYLXQSPd8waR5jCt4j6tYOCWxwlWZ9dAtbwvpXjc_hqqCITfmTbxmpLmMy5H1qJh6nJt-MjYugXahqzozMFuYNyA1a-obazma8DD-UeYBd2LsDiFiCb-U46m949lf3T336DciQJXmXpf8yD-huzoSOP3pPKWHgMG0D_jPyfiSKQzbZiHR0vwsJxdfUrpjl4Ey5R4xdlv_3eAGN3j36oU7pqv9oz1QeK36V4dCPxYvjEU6mct6AGYv8k0DIFCgQ_ohAVuV2enY1oZX0KovWRr9MzVqtjhJiz02W6IQQ0KWDWGBcz5p8cvPbssFjNOea-jO60X_1u5Gz5_qG2_GgdZFdF1QBPFnilM3JSkr2ioewsm1hL4Az4tVlAh3dn7yjfVroCX4Wh0BvkZ9mV0EvSWTJTqSWpS1hfFvz5Q_sb8Zzy8ziAD1LjhTgJ3HIRJgL4tNy7DOSD8QZTSIxUpde1XM7mQj1Bt5qfazamKsfx5YZE2PUtVFMBz2QqRIBy50kuNzxPNSliHFFZIp6h4QsqzjqV2bYI9ECrt9_FFw9xwd0rbDxJwY3RDePZ-tBwfuO8Lsx0ungeUmkVFad74n-mHwx5n9U4_ehxL5ytfL3CWl5Yc98R_I41JTh9CtibP-414lKYqGYupsdyqnUAe0u34ReysJeSAj7SZCUAq1YDpSJKVxy0lu-4njtibKIWl0AkZKgk66hXv0T1CMIYghfqQCj82cMyiio42Wg-89YHwo_PuYYQf9dNPutQPjkhXqWIPx4X9UX8ggHfbeF1oKwSklf9ROwtK0gbi67Ml5NVonXw__fK0bZMwdXJrLFuZlW4GgffXkouAJfn8eC4iIneiuTd6QP6qtp2jHvSdsQw8Ux1FhpjYdtU1ED3z4n6u1oDChwbIWYeteqmGFywFfW9x7whdnqFHZ_Ll53tVvkMNRwQv_sMN0gelLPT0TZc9_ZgvWDwhETrdd5-fkUUnDcJUXxXBv4ybu0JTY3qkuffZ6E-YDORZXpvEFI_z6r6BWUsgJewuJk__YK664ElADVQFU6JjYC5WMZm6tZrqhi1TLZItgIZQxM7DBOADsJOaN7A5zBp-AeFhgcaliZDRfi8oHkPSpfQhJCLew2fhSGpqGTMAqrefO1WrVBGhMibXYJ1WTz1Lz3bK87pWeCLa9dE3mKYwxMbAGlzOPe3hpCyi-4ROVF0b9wh1oMYGL0ubeVz5VJDX3giqO0rDobliOvUch6Ge_3YQTcxuXM8CUo6ksGHYci5uY_HVOR8rHEQSkcYYkCsNo2coLzZzwxf6yKUrJCK9klnbJk0TIJpSSZ-_lX82K9vkjPMCi5nPm7-uLgxy5LoMhxKkpTZC-tmFgRMcS8A_r1AkbbzmnxdpHmUKnx-WqviBNPssVJy3_yArBmpbEGfdcWx1Bj7bD5R0rvsEUmO5gEvChvvIcxNiQu4w45-C20w7qp4zVH9mv_ix4rnnE_O2v7vUoaCvfgzqV3fjcFyqT6bHCd6vdTVnspX3iZSW30afc4OuSMV61EYimQqT7j3BPxP--uqOwe5Fa9iqQ-3VtcaiJWcxg8YWuX7lRzMQjN8tGjOy2p-gQUO1vkI0CPXP7VSCwcXDOYsDQjF5exb3YvfXpKYNCgpCOD5JX0xA9YU1m50iGrvaFIzygO3gNsyZRKfdnmQK3co3EbDt44LcyTA31l2VG-66tA4_Xkwu1ef_AB2BsL-8xU5C2f59uuYFZ4IfnfBKNjZ2ZQhfSHwm8EaGjLAuOwpdauKFI9g7t5X2RHVXLIoJTCqqyVFCY_avk6VZHzXmIzNZ3Gpe2tICG4lgL8aBzCGL83hMKldK4DOgXjHJcwbgqMcmk1oG7EInUd81pfLW7vtue2fGf7h6tZqv1S7AJdDzPU18EwVA8CDkYdS_PBBOTuXHsFfvENlQetEOmxBuF3hm9IPnQLBdfh7","summary":[{"type":"summary_text","text":"**Investigating network config and logs**"},{"type":"summary_text","text":"**Analyzing transport and listener architecture**"}]},{"id":"fc_050f56f290a937ae016a56bc4442048196abcdd923e46c01f9","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating subnet status rows\",\"pattern\":\"fn subnet_status_rows|struct SubnetStatus|probe.*node|nodes: Vec|NodeStatus\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_DXGHFQG1B71TJJ11jT2KmmnJ","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc4442148196aa8782752e52efe3","type":"function_call","status":"completed","arguments":"{\"i\":\"Checking relay failures\",\"pattern\":\"(?i)(relay|iroh|dns|discovery|magic|derp|home relay|netcheck|portmap|stun|firewall|udp)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_A0oBWv3GQpebmPYGkvGQcFrB","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc44421c819681dc294ee8e5274c","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating firewall logs\",\"path\":\"C:/Windows/System32/LogFiles/Firewall/*\",\"hidden\":true,\"gitignore\":false,\"limit\":50}","call_id":"call_Qfa37YjXaAKlprFe8QQYAcky","name":"glob"},{"id":"fc_050f56f290a937ae016a56bc4442208196b7817b4c8c1d6db0","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating network captures\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-*/**/*net*; C:/Users/decid/AppData/Local/spt-core/rca-*/**/*port*; C:/Users/decid/AppData/Local/spt-core/rca-*/**/*firewall*\",\"hidden\":true,\"gitignore\":false,\"limit\":100}","call_id":"call_wxd1hMkFAr6w7RmVwRFXh0AK","name":"glob"},{"id":"fc_050f56f290a937ae016a56bc444228819692c705edb9e8af2a","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding transport bind implementation\",\"pattern\":\"Endpoint::builder|bind_addr|RelayMode|discovery|alpns|accept|net_status|enabled\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_Gq258BxTMgrWFsVLX7mEdwvg","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc44423081968b5abf426a090fe7","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading worker starvation evidence\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs\",\"selector\":\"1-260\"}","call_id":"call_1i97FsDnghUYglZmPn6r8s9S","name":"read"},{"id":"fc_050f56f290a937ae016a56bc4442388196a5bbef9ad50f7680","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding transport timeout tests\",\"pattern\":\"unreachable-connect|starve|worker|submit-dial exceeded|proof-hang|field\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_IIRh1xUARN3Q8DvJRfGpd762","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc4442408196b63067e9f8297b88","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing net family checks\",\"pattern\":\"NET_FAMILY_GATE|IPv4-only|IPv6 unreachable|bind.*IPv4\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_5LTKIDetTs0YaykEl2QzZfk5","name":"grep"}]},"duration":22323.3125,"ttft":2738.253800034523,"contextSnapshot":{"promptTokens":151811,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_DXGHFQG1B71TJJ11jT2KmmnJ|fc_050f56f290a937ae016a56bc4442048196abcdd923e46c01f9","toolName":"grep","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src"},"intent":"Locating subnet status rows"},"id":"0a190f1b","parentId":"bf9cf026","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_A0oBWv3GQpebmPYGkvGQcFrB|fc_050f56f290a937ae016a56bc4442148196aa8782752e52efe3","toolName":"grep","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Checking relay failures"},"id":"19fa421d","parentId":"0a190f1b","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Qfa37YjXaAKlprFe8QQYAcky|fc_050f56f290a937ae016a56bc44421c819681dc294ee8e5274c","toolName":"glob","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Windows/System32/LogFiles/Firewall/*"},"intent":"Locating firewall logs"},"id":"14540f95","parentId":"19fa421d","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_wxd1hMkFAr6w7RmVwRFXh0AK|fc_050f56f290a937ae016a56bc4442208196b7817b4c8c1d6db0","toolName":"glob","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-*/**/*net*; C:/Users/decid/AppData/Local/spt-core/rca-*/**/*port*; C:/Users/decid/AppData/Local/spt-core/rca-*/**/*firewall*"},"intent":"Locating network captures"},"id":"0c6640c5","parentId":"14540f95","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Gq258BxTMgrWFsVLX7mEdwvg|fc_050f56f290a937ae016a56bc444228819692c705edb9e8af2a","toolName":"grep","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src"},"intent":"Finding transport bind implementation"},"id":"ec5879e7","parentId":"0c6640c5","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_1i97FsDnghUYglZmPn6r8s9S|fc_050f56f290a937ae016a56bc44423081968b5abf426a090fe7","toolName":"read","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs"},"intent":"Reading worker starvation evidence"},"id":"71b5a5c7","parentId":"ec5879e7","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_IIRh1xUARN3Q8DvJRfGpd762|fc_050f56f290a937ae016a56bc4442388196a5bbef9ad50f7680","toolName":"grep","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs"},"intent":"Finding transport timeout tests"},"id":"6c806054","parentId":"71b5a5c7","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_5LTKIDetTs0YaykEl2QzZfk5|fc_050f56f290a937ae016a56bc4442408196b63067e9f8297b88","toolName":"grep","startedAt":"2026-07-14T22:46:28.367Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates"},"intent":"Tracing net family checks"},"id":"2163a4d0","parentId":"6c806054","timestamp":"2026-07-14T22:46:28.367Z"}
{"type":"message","id":"f181bbc6","parentId":"2163a4d0","timestamp":"2026-07-14T22:46:28.370Z","message":{"role":"toolResult","toolCallId":"call_Qfa37YjXaAKlprFe8QQYAcky|fc_050f56f290a937ae016a56bc44421c819681dc294ee8e5274c","toolName":"glob","content":[{"type":"text","text":"Path not found: C:/Windows/System32/LogFiles/Firewall"}],"details":{},"isError":true,"timestamp":1784069188370}}
{"type":"message","id":"be088b74","parentId":"f181bbc6","timestamp":"2026-07-14T22:46:28.372Z","message":{"role":"toolResult","toolCallId":"call_1i97FsDnghUYglZmPn6r8s9S|fc_050f56f290a937ae016a56bc44423081968b5abf426a090fe7","toolName":"read","content":[{"type":"text","text":"//! UPDATE-WEDGE round-3 DIAGNOSTIC rig (throwaway — NO REQ until the verdict\n//! lands and doyle rules the shape; see docs/UPDATE-WEDGE-2-ROUND3-RULING.md).\n//!\n//! The decider the round-3 ruling §5 demands: does a burst of dead-peer\n//! `submit_dial`s actually HOLD/serialize the broker net runtime's 2 worker\n//! threads (starving the reactor that services LOCAL loopback `rc` I/O), or do\n//! the QUIC awaits YIELD cleanly (⇒ 2 tasks never monopolize 2 workers ⇒ the\n//! whole \"2-worker-starvation\" seam is FALSIFIED and must be re-opened)?\n//!\n//! STAGE 1 (this file, first): the narrow mechanism probe. Stand a dialer whose\n//! connects black-hole a dead peer, fire a `submit_dial` burst straight onto the\n//! broker's own [`NetHost`] (the exact pump path), and read the two round-3\n//! DIAGNOSTIC probes added to `nethost.rs`:\n//!   - `active_dial_tasks()` — in-flight dead-peer connects on the 2 workers;\n//!   - `net_canary_age_ms()` — a reactor-liveness canary stamped FROM the runtime\n//!     every ~25ms; a STALE stamp under the burst == worker starvation confirmed,\n//!     a FRESH stamp == the awaits yield (seam falsified).\n//!\n//! Hermetic: relays disabled, no discovery, loopback QUIC only. Runner contract:\n//! `cargo nextest run --test net_worker_starve` (process-per-test) or\n//! `--test-threads=1` — NEVER a bare `cargo test` on Windows (shared SPT_HOME/env).\n//!\n//! ISOLATION (F-039 rider, doyle-ruled 2026-07-10): the <300ms canary asserts\n//! SCHEDULING liveness, so on a loaded runner it reads box saturation instead of\n//! worker starvation (both canary tests hovered at the bound on shared CI). This\n//! binary therefore rides the serialized quiet-box class (`heavy-broker-pty`\n//! group, CI Phase B — see .config/nextest.toml). The bound itself is LOAD-\n//! BEARING and must NOT be loosened: a loosened canary stops being a canary; if\n//! isolation ever proves insufficient, escalate for a bound ruling instead.\n\nuse std::sync::atomic::{AtomicU32, Ordering};\nuse std::sync::Arc;\nuse std::thread;\nuse std::time::{Duration, Instant};\n\nuse spt_daemon::nethost::{NetConfig, NetHost};\nuse spt_daemon::Broker;\nuse spt_net::net::endpoint::{addr_for_node_hex, BindScope, LocalDiscovery, RelayPolicy};\nuse spt_proto::identity::Identity;\n\nstatic SEQ: AtomicU32 = AtomicU32::new(0);\nfn unique_name() -> String {\n    let n = SEQ.fetch_add(1, Ordering::Relaxed);\n    format!(\"spt-daemon-uw3-{}-{}.sock\", std::process::id(), n)\n}\n\n/// Hermetic net config (copied from netbroker.rs): relays disabled, no\n/// discovery, loopback-only sockets — no real interface touched.\nfn hermetic(identity: Identity) -> NetConfig {\n    NetConfig {\n        identity,\n        relay: RelayPolicy::Disabled,\n        discovery: LocalDiscovery::Off,\n        scope: BindScope::Loopback,\n        membership: None,\n    }\n}\n\n/// A dialer config that REQUIRES the mutual seed-proof (`membership: Some`): a\n/// dial then runs `prove_membership`, which a `membership: None` peer never\n/// answers — the documented mixed-pair deadlock. The dialer opens a proof\n/// control stream and awaits a reply that never comes: the deterministic dead\n/// peer. (Copied from netbroker.rs `proving`.)\nfn proving(identity: Identity) -> NetConfig {\n    let mut cfg = hermetic(identity);\n    cfg.membership = Some(std::sync::Arc::new(|| {\n        vec![spt_daemon::seedproofx::SubnetCred {\n            name: \"blackhole\".to_string(),\n            seed: vec![7u8; 32],\n            epoch: 1,\n            prev: None,\n        }]\n    }));\n    cfg\n}\n\n/// Bind a broker owning a hermetic endpoint built from `cfg`, served on a\n/// background thread. Returns the broker so the test can reach its `NetHost`\n/// via `broker.net()`.\nfn served_broker(name: &str, cfg: NetConfig, dir: &std::path::Path) -> Arc<Broker> {\n    let host = NetHost::start(cfg).expect(\"net host start\");\n    let broker = Broker::bind_in_with_net(name, dir.join(\"effects.log\"), Some(host))\n        .expect(\"bind broker\");\n    let serve = Arc::clone(&broker);\n    thread::spawn(move || {\n        let _ = serve.serve();\n    });\n    broker\n}\n\n/// Sample the net runtime's health across a window, returning the PEAK in-flight\n/// dial count and the PEAK canary age observed. Polls fast so a transient\n/// starvation window is not missed.\nfn observe(host: &NetHost, window: Duration) -> (usize, u64) {\n    let deadline = Instant::now() + window;\n    let mut peak_tasks = 0usize;\n    let mut peak_canary = 0u64;\n    while Instant::now() < deadline {\n        peak_tasks = peak_tasks.max(host.active_dial_tasks());\n        peak_canary = peak_canary.max(host.net_canary_age_ms());\n        thread::sleep(Duration::from_millis(5));\n    }\n    (peak_tasks, peak_canary)\n}\n\n/// THE DECIDER (round-3 ruling §5): a burst of `submit_dial`s to a peer that\n/// accepts the QUIC handshake but black-holes the seed-proof. Reports whether\n/// the burst holds the 2 workers (canary goes stale) or the awaits yield (canary\n/// stays fresh). This test does not FAIL on either outcome — it PRINTS the verdict\n/// the ruling needs; an explicit assert nails the direction once observed.\n#[test]\nfn dead_peer_dial_burst_vs_net_runtime_canary() {\n    let dir = tempfile::tempdir().expect(\"tempdir\");\n    let (name_a, name_b) = (unique_name(), unique_name());\n\n    // A: the dialer that requires the proof. Bound at 3s so each dead-peer\n    // connect occupies a worker task for up to 3s (well inside the test window).\n    let broker_a = served_broker(&name_a, proving(Identity::generate()), dir.path());\n    let host_a = broker_a.net().expect(\"host a\");\n    host_a.set_quic_op_timeout(Duration::from_millis(3000));\n\n    // B: the black hole — accepts the handshake, never runs the proof responder.\n    let broker_b = served_broker(&name_b, hermetic(Identity::generate()), &dir.path().join(\"b\"));\n    let host_b = broker_b.net().expect(\"host b\");\n    let b_addr = host_b.addr();\n    let b_hex = host_b.node_id_hex();\n\n    // Baseline: the canary must be fresh before any load (proves the probe works).\n    thread::sleep(Duration::from_millis(80));\n    let base_canary = host_a.net_canary_age_ms();\n    assert!(\n        base_canary < 250,\n        \"baseline canary should be fresh (<250ms), got {base_canary}ms — probe broken?\"\n    );\n    eprintln!(\"UW3 baseline: canary_age={base_canary}ms tasks={}\", host_a.active_dial_tasks());\n\n    // Fire the burst: K concurrent dead-peer dials straight onto A's NetHost (the\n    // exact pump path). K far exceeds the 2 workers so IF connects hold workers,\n    // the reactor starves; the 24-permit semaphore is not the limiter here.\n    const K: usize = 12;\n    for _ in 0..K {\n        host_a.submit_dial(b_addr.clone(), b_hex.clone());\n    }\n\n    // Observe across the bound window (0.5s..3s) — the interval where the dial\n    // tasks are alive and (if they hold) the canary would go stale.\n    let (peak_tasks, peak_canary) = observe(host_a, Duration::from_millis(2500));\n    let permits = host_a.dial_permits_available();\n    eprintln!(\n        \"UW3 VERDICT: fired K={K} dead-peer submit_dials | peak_in_flight_tasks={peak_tasks} \\\n         peak_canary_age={peak_canary}ms dial_permits_free={permits}\"\n    );\n\n    // Sanity: the burst really put dials in flight on the runtime.\n    assert!(\n        peak_tasks >= 2,\n        \"expected the dial burst to put ≥2 tasks in flight, saw {peak_tasks} \\\n         (dials never spawned? seam untestable)\"\n    );\n\n    // EMPIRICAL VERDICT (recorded 2026-07-09): peak canary age = 54ms under 12\n    // in-flight dead-peer dials — FRESH. The 2 workers happily multiplex 12\n    // YIELDING connect/proof-read awaits; they do NOT monopolize the runtime.\n    // ⇒ the \"dead-peer submit_dial starves the 2 net workers\" seam is FALSIFIED\n    // for a handshake-accepting, proof-black-holing peer (the netbroker dead peer).\n    // This assert LOCKS that finding: a regression that made these awaits stop\n    // yielding (a busy-poll connect) would blow the freshness bound and refire the\n    // investigation.\n    assert!(\n        peak_canary < 300,\n        \"REGRESSION or seam re-confirmed: {K} dead-peer dials pushed the net-runtime \\\n         canary to {peak_canary}ms (expected <300ms = workers still scheduling). If \\\n         this is a real wedge repro, the 2-worker-starvation seam is now LIVE — \\\n         escalate to doyle.\"\n    );\n}\n\n/// The FIELD-faithful dead peer: fully UNRESPONSIVE — a valid node id with NO\n/// dialable path (`addr_for_node_hex`), relay disabled, discovery off. `connect`\n/// has nowhere to go; this is the field's \"submit-dial exceeded the bound (peer\n/// unresponsive)\" shape (ecb39e40 / cfd9fc55), distinct from the proof-hang peer\n/// above (which at least completes the QUIC handshake). Same question: does the\n/// unreachable-connect burst starve the 2 workers, or yield?\n#[test]\nfn unreachable_peer_dial_burst_vs_net_runtime_canary() {\n    let dir = tempfile::tempdir().expect(\"tempdir\");\n    let name_a = unique_name();\n\n    let broker_a = served_broker(&name_a, proving(Identity::generate()), dir.path());\n    let host_a = broker_a.net().expect(\"host a\");\n    host_a.set_quic_op_timeout(Duration::from_millis(3000));\n\n    // Unreachable peer: a fresh identity's id with no path. Nothing ever binds it.\n    let dead_id = Identity::generate();\n    let dead_hex = dead_id.public_key().to_hex();\n    let dead_addr = addr_for_node_hex(&dead_hex).expect(\"id-only addr\");\n\n    thread::sleep(Duration::from_millis(80));\n    let base_canary = host_a.net_canary_age_ms();\n    assert!(base_canary < 250, \"baseline canary fresh, got {base_canary}ms\");\n    eprintln!(\"UW3-unreach baseline: canary_age={base_canary}ms\");\n\n    const K: usize = 12;\n    for _ in 0..K {\n        host_a.submit_dial(dead_addr.clone(), dead_hex.clone());\n    }\n\n    let (peak_tasks, peak_canary) = observe(host_a, Duration::from_millis(2500));\n    let permits = host_a.dial_permits_available();\n    eprintln!(\n        \"UW3-unreach VERDICT: fired K={K} unreachable submit_dials | \\\n         peak_in_flight_tasks={peak_tasks} peak_canary_age={peak_canary}ms \\\n         dial_permits_free={permits}\"\n    );\n\n    // Record whichever way it falls (asserted after first observed run below).\n    // A large canary here — but small in the proof-hang test — would mean the\n    // UNREACHABLE (discovery/holepunch) connect path is the true worker-holder,\n    // narrowing the fix to that path. A small canary confirms the falsification\n    // across BOTH dead-peer shapes.\n    assert!(\n        peak_canary < 300,\n        \"UNREACHABLE-connect burst starved the net runtime (canary {peak_canary}ms) \\\n         while the proof-hang peer did not — the worker-holder is the discovery/\\\n         holepunch connect path. Escalate this discriminator to doyle.\"\n    );\n}\n"}],"details":{"displayContent":{"text":"//! UPDATE-WEDGE round-3 DIAGNOSTIC rig (throwaway — NO REQ until the verdict\r\n//! lands and doyle rules the shape; see docs/UPDATE-WEDGE-2-ROUND3-RULING.md).\r\n//!\r\n//! The decider the round-3 ruling §5 demands: does a burst of dead-peer\r\n//! `submit_dial`s actually HOLD/serialize the broker net runtime's 2 worker\r\n//! threads (starving the reactor that services LOCAL loopback `rc` I/O), or do\r\n//! the QUIC awaits YIELD cleanly (⇒ 2 tasks never monopolize 2 workers ⇒ the\r\n//! whole \"2-worker-starvation\" seam is FALSIFIED and must be re-opened)?\r\n//!\r\n//! STAGE 1 (this file, first): the narrow mechanism probe. Stand a dialer whose\r\n//! connects black-hole a dead peer, fire a `submit_dial` burst straight onto the\r\n//! broker's own [`NetHost`] (the exact pump path), and read the two round-3\r\n//! DIAGNOSTIC probes added to `nethost.rs`:\r\n//!   - `active_dial_tasks()` — in-flight dead-peer connects on the 2 workers;\r\n//!   - `net_canary_age_ms()` — a reactor-liveness canary stamped FROM the runtime\r\n//!     every ~25ms; a STALE stamp under the burst == worker starvation confirmed,\r\n//!     a FRESH stamp == the awaits yield (seam falsified).\r\n//!\r\n//! Hermetic: relays disabled, no discovery, loopback QUIC only. Runner contract:\r\n//! `cargo nextest run --test net_worker_starve` (process-per-test) or\r\n//! `--test-threads=1` — NEVER a bare `cargo test` on Windows (shared SPT_HOME/env).\r\n//!\r\n//! ISOLATION (F-039 rider, doyle-ruled 2026-07-10): the <300ms canary asserts\r\n//! SCHEDULING liveness, so on a loaded runner it reads box saturation instead of\r\n//! worker starvation (both canary tests hovered at the bound on shared CI). This\r\n//! binary therefore rides the serialized quiet-box class (`heavy-broker-pty`\r\n//! group, CI Phase B — see .config/nextest.toml). The bound itself is LOAD-\r\n//! BEARING and must NOT be loosened: a loosened canary stops being a canary; if\r\n//! isolation ever proves insufficient, escalate for a bound ruling instead.\r\n\r\nuse std::sync::atomic::{AtomicU32, Ordering};\r\nuse std::sync::Arc;\r\nuse std::thread;\r\nuse std::time::{Duration, Instant};\r\n\r\nuse spt_daemon::nethost::{NetConfig, NetHost};\r\nuse spt_daemon::Broker;\r\nuse spt_net::net::endpoint::{addr_for_node_hex, BindScope, LocalDiscovery, RelayPolicy};\r\nuse spt_proto::identity::Identity;\r\n\r\nstatic SEQ: AtomicU32 = AtomicU32::new(0);\r\nfn unique_name() -> String {\r\n    let n = SEQ.fetch_add(1, Ordering::Relaxed);\r\n    format!(\"spt-daemon-uw3-{}-{}.sock\", std::process::id(), n)\r\n}\r\n\r\n/// Hermetic net config (copied from netbroker.rs): relays disabled, no\r\n/// discovery, loopback-only sockets — no real interface touched.\r\nfn hermetic(identity: Identity) -> NetConfig {\r\n    NetConfig {\r\n        identity,\r\n        relay: RelayPolicy::Disabled,\r\n        discovery: LocalDiscovery::Off,\r\n        scope: BindScope::Loopback,\r\n        membership: None,\r\n    }\r\n}\r\n\r\n/// A dialer config that REQUIRES the mutual seed-proof (`membership: Some`): a\r\n/// dial then runs `prove_membership`, which a `membership: None` peer never\r\n/// answers — the documented mixed-pair deadlock. The dialer opens a proof\r\n/// control stream and awaits a reply that never comes: the deterministic dead\r\n/// peer. (Copied from netbroker.rs `proving`.)\r\nfn proving(identity: Identity) -> NetConfig {\r\n    let mut cfg = hermetic(identity);\r\n    cfg.membership = Some(std::sync::Arc::new(|| {\r\n        vec![spt_daemon::seedproofx::SubnetCred {\r\n            name: \"blackhole\".to_string(),\r\n            seed: vec![7u8; 32],\r\n            epoch: 1,\r\n            prev: None,\r\n        }]\r\n    }));\r\n    cfg\r\n}\r\n\r\n/// Bind a broker owning a hermetic endpoint built from `cfg`, served on a\r\n/// background thread. Returns the broker so the test can reach its `NetHost`\r\n/// via `broker.net()`.\r\nfn served_broker(name: &str, cfg: NetConfig, dir: &std::path::Path) -> Arc<Broker> {\r\n    let host = NetHost::start(cfg).expect(\"net host start\");\r\n    let broker = Broker::bind_in_with_net(name, dir.join(\"effects.log\"), Some(host))\r\n        .expect(\"bind broker\");\r\n    let serve = Arc::clone(&broker);\r\n    thread::spawn(move || {\r\n        let _ = serve.serve();\r\n    });\r\n    broker\r\n}\r\n\r\n/// Sample the net runtime's health across a window, returning the PEAK in-flight\r\n/// dial count and the PEAK canary age observed. Polls fast so a transient\r\n/// starvation window is not missed.\r\nfn observe(host: &NetHost, window: Duration) -> (usize, u64) {\r\n    let deadline = Instant::now() + window;\r\n    let mut peak_tasks = 0usize;\r\n    let mut peak_canary = 0u64;\r\n    while Instant::now() < deadline {\r\n        peak_tasks = peak_tasks.max(host.active_dial_tasks());\r\n        peak_canary = peak_canary.max(host.net_canary_age_ms());\r\n        thread::sleep(Duration::from_millis(5));\r\n    }\r\n    (peak_tasks, peak_canary)\r\n}\r\n\r\n/// THE DECIDER (round-3 ruling §5): a burst of `submit_dial`s to a peer that\r\n/// accepts the QUIC handshake but black-holes the seed-proof. Reports whether\r\n/// the burst holds the 2 workers (canary goes stale) or the awaits yield (canary\r\n/// stays fresh). This test does not FAIL on either outcome — it PRINTS the verdict\r\n/// the ruling needs; an explicit assert nails the direction once observed.\r\n#[test]\r\nfn dead_peer_dial_burst_vs_net_runtime_canary() {\r\n    let dir = tempfile::tempdir().expect(\"tempdir\");\r\n    let (name_a, name_b) = (unique_name(), unique_name());\r\n\r\n    // A: the dialer that requires the proof. Bound at 3s so each dead-peer\r\n    // connect occupies a worker task for up to 3s (well inside the test window).\r\n    let broker_a = served_broker(&name_a, proving(Identity::generate()), dir.path());\r\n    let host_a = broker_a.net().expect(\"host a\");\r\n    host_a.set_quic_op_timeout(Duration::from_millis(3000));\r\n\r\n    // B: the black hole — accepts the handshake, never runs the proof responder.\r\n    let broker_b = served_broker(&name_b, hermetic(Identity::generate()), &dir.path().join(\"b\"));\r\n    let host_b = broker_b.net().expect(\"host b\");\r\n    let b_addr = host_b.addr();\r\n    let b_hex = host_b.node_id_hex();\r\n\r\n    // Baseline: the canary must be fresh before any load (proves the probe works).\r\n    thread::sleep(Duration::from_millis(80));\r\n    let base_canary = host_a.net_canary_age_ms();\r\n    assert!(\r\n        base_canary < 250,\r\n        \"baseline canary should be fresh (<250ms), got {base_canary}ms — probe broken?\"\r\n    );\r\n    eprintln!(\"UW3 baseline: canary_age={base_canary}ms tasks={}\", host_a.active_dial_tasks());\r\n\r\n    // Fire the burst: K concurrent dead-peer dials straight onto A's NetHost (the\r\n    // exact pump path). K far exceeds the 2 workers so IF connects hold workers,\r\n    // the reactor starves; the 24-permit semaphore is not the limiter here.\r\n    const K: usize = 12;\r\n    for _ in 0..K {\r\n        host_a.submit_dial(b_addr.clone(), b_hex.clone());\r\n    }\r\n\r\n    // Observe across the bound window (0.5s..3s) — the interval where the dial\r\n    // tasks are alive and (if they hold) the canary would go stale.\r\n    let (peak_tasks, peak_canary) = observe(host_a, Duration::from_millis(2500));\r\n    let permits = host_a.dial_permits_available();\r\n    eprintln!(\r\n        \"UW3 VERDICT: fired K={K} dead-peer submit_dials | peak_in_flight_tasks={peak_tasks} \\\r\n         peak_canary_age={peak_canary}ms dial_permits_free={permits}\"\r\n    );\r\n\r\n    // Sanity: the burst really put dials in flight on the runtime.\r\n    assert!(\r\n        peak_tasks >= 2,\r\n        \"expected the dial burst to put ≥2 tasks in flight, saw {peak_tasks} \\\r\n         (dials never spawned? seam untestable)\"\r\n    );\r\n\r\n    // EMPIRICAL VERDICT (recorded 2026-07-09): peak canary age = 54ms under 12\r\n    // in-flight dead-peer dials — FRESH. The 2 workers happily multiplex 12\r\n    // YIELDING connect/proof-read awaits; they do NOT monopolize the runtime.\r\n    // ⇒ the \"dead-peer submit_dial starves the 2 net workers\" seam is FALSIFIED\r\n    // for a handshake-accepting, proof-black-holing peer (the netbroker dead peer).\r\n    // This assert LOCKS that finding: a regression that made these awaits stop\r\n    // yielding (a busy-poll connect) would blow the freshness bound and refire the\r\n    // investigation.\r\n    assert!(\r\n        peak_canary < 300,\r\n        \"REGRESSION or seam re-confirmed: {K} dead-peer dials pushed the net-runtime \\\r\n         canary to {peak_canary}ms (expected <300ms = workers still scheduling). If \\\r\n         this is a real wedge repro, the 2-worker-starvation seam is now LIVE — \\\r\n         escalate to doyle.\"\r\n    );\r\n}\r\n\r\n/// The FIELD-faithful dead peer: fully UNRESPONSIVE — a valid node id with NO\r\n/// dialable path (`addr_for_node_hex`), relay disabled, discovery off. `connect`\r\n/// has nowhere to go; this is the field's \"submit-dial exceeded the bound (peer\r\n/// unresponsive)\" shape (ecb39e40 / cfd9fc55), distinct from the proof-hang peer\r\n/// above (which at least completes the QUIC handshake). Same question: does the\r\n/// unreachable-connect burst starve the 2 workers, or yield?\r\n#[test]\r\nfn unreachable_peer_dial_burst_vs_net_runtime_canary() {\r\n    let dir = tempfile::tempdir().expect(\"tempdir\");\r\n    let name_a = unique_name();\r\n\r\n    let broker_a = served_broker(&name_a, proving(Identity::generate()), dir.path());\r\n    let host_a = broker_a.net().expect(\"host a\");\r\n    host_a.set_quic_op_timeout(Duration::from_millis(3000));\r\n\r\n    // Unreachable peer: a fresh identity's id with no path. Nothing ever binds it.\r\n    let dead_id = Identity::generate();\r\n    let dead_hex = dead_id.public_key().to_hex();\r\n    let dead_addr = addr_for_node_hex(&dead_hex).expect(\"id-only addr\");\r\n\r\n    thread::sleep(Duration::from_millis(80));\r\n    let base_canary = host_a.net_canary_age_ms();\r\n    assert!(base_canary < 250, \"baseline canary fresh, got {base_canary}ms\");\r\n    eprintln!(\"UW3-unreach baseline: canary_age={base_canary}ms\");\r\n\r\n    const K: usize = 12;\r\n    for _ in 0..K {\r\n        host_a.submit_dial(dead_addr.clone(), dead_hex.clone());\r\n    }\r\n\r\n    let (peak_tasks, peak_canary) = observe(host_a, Duration::from_millis(2500));\r\n    let permits = host_a.dial_permits_available();\r\n    eprintln!(\r\n        \"UW3-unreach VERDICT: fired K={K} unreachable submit_dials | \\\r\n         peak_in_flight_tasks={peak_tasks} peak_canary_age={peak_canary}ms \\\r\n         dial_permits_free={permits}\"\r\n    );\r\n\r\n    // Record whichever way it falls (asserted after first observed run below).\r\n    // A large canary here — but small in the proof-hang test — would mean the\r\n    // UNREACHABLE (discovery/holepunch) connect path is the true worker-holder,\r\n    // narrowing the fix to that path. A small canary confirms the falsification\r\n    // across BOTH dead-peer shapes.\r\n    assert!(\r\n        peak_canary < 300,\r\n        \"UNREACHABLE-connect burst starved the net runtime (canary {peak_canary}ms) \\\r\n         while the proof-hang peer did not — the worker-holder is the discovery/\\\r\n         holepunch connect path. Escalate this discriminator to doyle.\"\r\n    );\r\n}\r\n","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs"}}},"isError":false,"timestamp":1784069188372}}
{"type":"message","id":"a1f7b38e","parentId":"be088b74","timestamp":"2026-07-14T22:46:28.374Z","message":{"role":"toolResult","toolCallId":"call_IIRh1xUARN3Q8DvJRfGpd762|fc_050f56f290a937ae016a56bc4442388196a5bbef9ad50f7680","toolName":"grep","content":[{"type":"text","text":" 4|//! The decider the round-3 ruling §5 demands: does a burst of dead-peer\n*5|//! `submit_dial`s actually HOLD/serialize the broker net runtime's 2 worker\n 6|//! threads (starving the reactor that services LOCAL loopback `rc` I/O), or do\n*7|//! the QUIC awaits YIELD cleanly (⇒ 2 tasks never monopolize 2 workers ⇒ the\n*8|//! whole \"2-worker-starvation\" seam is FALSIFIED and must be re-opened)?\n 9|//!\n 10|//! STAGE 1 (this file, first): the narrow mechanism probe. Stand a dialer whose\n 11|//! connects black-hole a dead peer, fire a `submit_dial` burst straight onto the\n...\n 13|//! DIAGNOSTIC probes added to `nethost.rs`:\n*14|//!   - `active_dial_tasks()` — in-flight dead-peer connects on the 2 workers;\n 15|//!   - `net_canary_age_ms()` — a reactor-liveness canary stamped FROM the runtime\n*16|//!     every ~25ms; a STALE stamp under the burst == worker starvation confirmed,\n 17|//!     a FRESH stamp == the awaits yield (seam falsified).\n 18|//!\n 19|//! Hermetic: relays disabled, no discovery, loopback QUIC only. Runner contract:\n*20|//! `cargo nextest run --test net_worker_starve` (process-per-test) or\n 21|//! `--test-threads=1` — NEVER a bare `cargo test` on Windows (shared SPT_HOME/env).\n 22|//!\n 23|//! ISOLATION (F-039 rider, doyle-ruled 2026-07-10): the <300ms canary asserts\n 24|//! SCHEDULING liveness, so on a loaded runner it reads box saturation instead of\n*25|//! worker starvation (both canary tests hovered at the bound on shared CI). This\n 26|//! binary therefore rides the serialized quiet-box class (`heavy-broker-pty`\n 27|//! group, CI Phase B — see .config/nextest.toml). The bound itself is LOAD-\n 28|//! BEARING and must NOT be loosened: a loosened canary stops being a canary; if\n...\n 107|/// accepts the QUIC handshake but black-holes the seed-proof. Reports whether\n*108|/// the burst holds the 2 workers (canary goes stale) or the awaits yield (canary\n 109|/// stays fresh). This test does not FAIL on either outcome — it PRINTS the verdict\n 110|/// the ruling needs; an explicit assert nails the direction once observed.\n 111|#[test]\n...\n 116|    // A: the dialer that requires the proof. Bound at 3s so each dead-peer\n*117|    // connect occupies a worker task for up to 3s (well inside the test window).\n 118|    let broker_a = served_broker(&name_a, proving(Identity::generate()), dir.path());\n 119|    let host_a = broker_a.net().expect(\"host a\");\n 120|    host_a.set_quic_op_timeout(Duration::from_millis(3000));\n...\n 137|    // Fire the burst: K concurrent dead-peer dials straight onto A's NetHost (the\n*138|    // exact pump path). K far exceeds the 2 workers so IF connects hold workers,\n*139|    // the reactor starves; the 24-permit semaphore is not the limiter here.\n 140|    const K: usize = 12;\n 141|    for _ in 0..K {\n 142|        host_a.submit_dial(b_addr.clone(), b_hex.clone());\n...\n 161|    // EMPIRICAL VERDICT (recorded 2026-07-09): peak canary age = 54ms under 12\n*162|    // in-flight dead-peer dials — FRESH. The 2 workers happily multiplex 12\n 163|    // YIELDING connect/proof-read awaits; they do NOT monopolize the runtime.\n*164|    // ⇒ the \"dead-peer submit_dial starves the 2 net workers\" seam is FALSIFIED\n 165|    // for a handshake-accepting, proof-black-holing peer (the netbroker dead peer).\n 166|    // This assert LOCKS that finding: a regression that made these awaits stop\n 167|    // yielding (a busy-poll connect) would blow the freshness bound and refire the\n...\n 171|        \"REGRESSION or seam re-confirmed: {K} dead-peer dials pushed the net-runtime \\\n*172|         canary to {peak_canary}ms (expected <300ms = workers still scheduling). If \\\n*173|         this is a real wedge repro, the 2-worker-starvation seam is now LIVE — \\\n 174|         escalate to doyle.\"\n 175|    );\n 176|}\n 177|\n*178|/// The FIELD-faithful dead peer: fully UNRESPONSIVE — a valid node id with NO\n 179|/// dialable path (`addr_for_node_hex`), relay disabled, discovery off. `connect`\n*180|/// has nowhere to go; this is the field's \"submit-dial exceeded the bound (peer\n*181|/// unresponsive)\" shape (ecb39e40 / cfd9fc55), distinct from the proof-hang peer\n 182|/// above (which at least completes the QUIC handshake). Same question: does the\n*183|/// unreachable-connect burst starve the 2 workers, or yield?\n 184|#[test]\n 185|fn unreachable_peer_dial_burst_vs_net_runtime_canary() {\n 186|    let dir = tempfile::tempdir().expect(\"tempdir\");\n...\n 216|    // Record whichever way it falls (asserted after first observed run below).\n*217|    // A large canary here — but small in the proof-hang test — would mean the\n*218|    // UNREACHABLE (discovery/holepunch) connect path is the true worker-holder,\n 219|    // narrowing the fix to that path. A small canary confirms the falsification\n 220|    // across BOTH dead-peer shapes.\n 221|    assert!(\n 222|        peak_canary < 300,\n*223|        \"UNREACHABLE-connect burst starved the net runtime (canary {peak_canary}ms) \\\n*224|         while the proof-hang peer did not — the worker-holder is the discovery/\\\n 225|         holepunch connect path. Escalate this discriminator to doyle.\"\n 226|    );\n 227|}"}],"details":{"scopePath":"spt-core/crates/spt-daemon/tests/net_worker_starve.rs","searchPath":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":23,"fileCount":1,"files":["spt-core/crates/spt-daemon/tests/net_worker_starve.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/tests/net_worker_starve.rs","count":23}],"truncated":false,"displayContent":"   4│//! The decider the round-3 ruling §5 demands: does a burst of dead-peer\n  *5│//! `submit_dial`s actually HOLD/serialize the broker net runtime's 2 worker\n   6│//! threads (starving the reactor that services LOCAL loopback `rc` I/O), or do\n  *7│//! the QUIC awaits YIELD cleanly (⇒ 2 tasks never monopolize 2 workers ⇒ the\n  *8│//! whole \"2-worker-starvation\" seam is FALSIFIED and must be re-opened)?\n   9│//!\n  10│//! STAGE 1 (this file, first): the narrow mechanism probe. Stand a dialer whose\n  11│//! connects black-hole a dead peer, fire a `submit_dial` burst straight onto the\n    │...\n  13│//! DIAGNOSTIC probes added to `nethost.rs`:\n *14│//!   - `active_dial_tasks()` — in-flight dead-peer connects on the 2 workers;\n  15│//!   - `net_canary_age_ms()` — a reactor-liveness canary stamped FROM the runtime\n *16│//!     every ~25ms; a STALE stamp under the burst == worker starvation confirmed,\n  17│//!     a FRESH stamp == the awaits yield (seam falsified).\n  18│//!\n  19│//! Hermetic: relays disabled, no discovery, loopback QUIC only. Runner contract:\n *20│//! `cargo nextest run --test net_worker_starve` (process-per-test) or\n  21│//! `--test-threads=1` — NEVER a bare `cargo test` on Windows (shared SPT_HOME/env).\n  22│//!\n  23│//! ISOLATION (F-039 rider, doyle-ruled 2026-07-10): the <300ms canary asserts\n  24│//! SCHEDULING liveness, so on a loaded runner it reads box saturation instead of\n *25│//! worker starvation (both canary tests hovered at the bound on shared CI). This\n  26│//! binary therefore rides the serialized quiet-box class (`heavy-broker-pty`\n  27│//! group, CI Phase B — see .config/nextest.toml). The bound itself is LOAD-\n  28│//! BEARING and must NOT be loosened: a loosened canary stops being a canary; if\n    │...\n 107│/// accepts the QUIC handshake but black-holes the seed-proof. Reports whether\n*108│/// the burst holds the 2 workers (canary goes stale) or the awaits yield (canary\n 109│/// stays fresh). This test does not FAIL on either outcome — it PRINTS the verdict\n 110│/// the ruling needs; an explicit assert nails the direction once observed.\n 111│#[test]\n    │...\n 116│    // A: the dialer that requires the proof. Bound at 3s so each dead-peer\n*117│    // connect occupies a worker task for up to 3s (well inside the test window).\n 118│    let broker_a = served_broker(&name_a, proving(Identity::generate()), dir.path());\n 119│    let host_a = broker_a.net().expect(\"host a\");\n 120│    host_a.set_quic_op_timeout(Duration::from_millis(3000));\n    │...\n 137│    // Fire the burst: K concurrent dead-peer dials straight onto A's NetHost (the\n*138│    // exact pump path). K far exceeds the 2 workers so IF connects hold workers,\n*139│    // the reactor starves; the 24-permit semaphore is not the limiter here.\n 140│    const K: usize = 12;\n 141│    for _ in 0..K {\n 142│        host_a.submit_dial(b_addr.clone(), b_hex.clone());\n    │...\n 161│    // EMPIRICAL VERDICT (recorded 2026-07-09): peak canary age = 54ms under 12\n*162│    // in-flight dead-peer dials — FRESH. The 2 workers happily multiplex 12\n 163│    // YIELDING connect/proof-read awaits; they do NOT monopolize the runtime.\n*164│    // ⇒ the \"dead-peer submit_dial starves the 2 net workers\" seam is FALSIFIED\n 165│    // for a handshake-accepting, proof-black-holing peer (the netbroker dead peer).\n 166│    // This assert LOCKS that finding: a regression that made these awaits stop\n 167│    // yielding (a busy-poll connect) would blow the freshness bound and refire the\n    │...\n 171│        \"REGRESSION or seam re-confirmed: {K} dead-peer dials pushed the net-runtime \\\n*172│         canary to {peak_canary}ms (expected <300ms = workers still scheduling). If \\\n*173│         this is a real wedge repro, the 2-worker-starvation seam is now LIVE — \\\n 174│         escalate to doyle.\"\n 175│    );\n 176│}\n 177│\n*178│/// The FIELD-faithful dead peer: fully UNRESPONSIVE — a valid node id with NO\n 179│/// dialable path (`addr_for_node_hex`), relay disabled, discovery off. `connect`\n*180│/// has nowhere to go; this is the field's \"submit-dial exceeded the bound (peer\n*181│/// unresponsive)\" shape (ecb39e40 / cfd9fc55), distinct from the proof-hang peer\n 182│/// above (which at least completes the QUIC handshake). Same question: does the\n*183│/// unreachable-connect burst starve the 2 workers, or yield?\n 184│#[test]\n 185│fn unreachable_peer_dial_burst_vs_net_runtime_canary() {\n 186│    let dir = tempfile::tempdir().expect(\"tempdir\");\n    │...\n 216│    // Record whichever way it falls (asserted after first observed run below).\n*217│    // A large canary here — but small in the proof-hang test — would mean the\n*218│    // UNREACHABLE (discovery/holepunch) connect path is the true worker-holder,\n 219│    // narrowing the fix to that path. A small canary confirms the falsification\n 220│    // across BOTH dead-peer shapes.\n 221│    assert!(\n 222│        peak_canary < 300,\n*223│        \"UNREACHABLE-connect burst starved the net runtime (canary {peak_canary}ms) \\\n*224│         while the proof-hang peer did not — the worker-holder is the discovery/\\\n 225│         holepunch connect path. Escalate this discriminator to doyle.\"\n 226│    );\n 227│}"},"isError":false,"timestamp":1784069188374}}
{"type":"message","id":"21e8bad7","parentId":"a1f7b38e","timestamp":"2026-07-14T22:46:28.380Z","message":{"role":"toolResult","toolCallId":"call_DXGHFQG1B71TJJ11jT2KmmnJ|fc_050f56f290a937ae016a56bc4442048196abcdd923e46c01f9","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/spt/src/\n## cli.rs\n 1046|        #[arg(required = true)]\n*1047|        nodes: Vec<String>,\n 1048|        /// Rotate the seed immediately instead of at the window's close — the\n 1049|        /// compromised-node path (a benign offliner may then fall behind and\n 1050|        /// must re-pair rather than re-seed).\n...\n 2472|        if !holders.is_empty() {\n*2473|            let nodes: Vec<&str> = holders.iter().map(|i| i.node.as_str()).collect();\n 2474|            eprintln!(\n 2475|                \"COLLISION:{new_id} already exists in subnet '{subnet}' on node(s): {} — \\\n 2476|                 pick another id (or rename the holder first)\",\n...\n 3625|            let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\n*3626|            let cand_nodes: Vec<String> = regs\n 3627|                .values()\n 3628|                .flat_map(|reg| reg.instances(id).iter().map(|i| i.node.clone()))\n 3629|                .collect();\n...\n 6712|/// or codes (M7 plan decision 5).\n*6713|struct SubnetStatusRow {\n 6714|    name: String,\n 6715|    /// Paired nodes known for the subnet (this node included).\n 6716|    nodes: usize,\n...\n 6730|// [impl->REQ-SUBNET-1]\n*6731|fn subnet_status_rows(\n 6732|    store: &SubnetStore,\n 6733|    regs: &std::collections::BTreeMap<String, spt_net::net::registry::SubnetRegistry>,\n 6734|    roster: &spt_store::roster::RosterStore,\n...\n 7112|/// couple seconds reads offline for liveness purposes. The probe itself\n*7113|/// (`probe_node_serving`, wansend.rs) is subnet-scoped per REQ-SUBNET-5: dial\n 7114|/// (proves reachable) THEN ask \"serving `subnet`?\", so a detached-but-alive\n 7115|/// peer reads offline for that subnet.\n 7116|const PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_millis(2500);\n...\n 7125|/// else `ceil(k / max_inflight)` ceilings. The mesh widen (D6) makes a node\n*7126|/// see ALL roster members — many silent — so the serial per-node `probe_node`\n 7127|/// loop cost `offline_count × ceiling`; this fans it out (REQ-MESH-6). `probe`\n 7128|/// is INJECTED so the unit test passes a deterministic sleeper (no network);\n*7129|/// the real site passes `probe_node_serving`. Each probe still runs on its own\n 7130|/// thread under its own `recv_timeout(ceiling)` bound (via `run_bounded`), so\n 7131|/// one wedged dial costs ONE ceiling, never the batch — KH 5.3 preserved.\n 7132|// [impl->REQ-MESH-6]\n...\n 7170|                    std::thread::spawn(move || {\n*7171|                        run_bounded(ceiling, false, move || probe(&node, &subnet))\n 7172|                    }),\n 7173|                )\n 7174|            })\n...\n 7254|/// `SubnetStatusRow`), plus the per-node rows (a copy of `NodeRow` + the\n*7255|/// probe-settled liveness) when `--nodes` is set. Internal structs stay free to\n 7256|/// refactor — these are the committed shape.\n 7257|// [impl->REQ-CLI-JSON]\n 7258|#[derive(serde::Serialize)]\n*7259|struct SubnetStatusJson {\n 7260|    daemon_running: bool,\n 7261|    subnets: Vec<SubnetRowJson>,\n 7262|}\n...\n 7271|    endpoint_count: usize,\n*7272|    nodes: Vec<NodeRowJson>,\n 7273|}\n 7274|\n 7275|/// One node's `--nodes` row (mirrors `NodeRow` + the settled liveness verdict).\n...\n 7334|                    endpoint_count: r.endpoints,\n*7335|                    nodes: Vec::new(),\n 7336|                })\n 7337|                .collect();\n 7338|            return print_json(&SubnetStatusJson {\n...\n 7404|    }\n*7405|    // Announce the probe phase once, before any dial — silent nodes cost a\n 7406|    // bounded dial each and the user should know what the wait is for.\n 7407|    if !worklist.is_empty() {\n 7408|        eprintln!(\"Checking remote nodes…\");\n...\n 7413|    let probed = probe_all(&worklist, PROBE_TIMEOUT, MAX_INFLIGHT, |n, s| {\n*7414|        crate::wansend::probe_node_serving(n, s)\n 7415|    });\n 7416|    // Pass 3: stitch results back in row order — the work-list was filled in\n 7417|    // row order, so a single cursor walks it deterministically. Render is\n...\n 8518|    endpoint: String,\n*8519|    nodes: Vec<String>,\n 8520|    locked: bool,\n 8521|}\n 8522|\n## wansend.rs\n 581|\n*582|/// Subnet-scoped liveness probe for a node (M7 D2 / M8, REQ-SUBNET-1 +\n 583|/// REQ-SUBNET-5 — the hybrid liveness's expensive half, spent only on rows\n 584|/// gossip-recency could not settle): true iff the peer is reachable RIGHT NOW\n 585|/// **and still serving `subnet`**. The raw dial alone is subnet-blind (one\n...\n 594|// [impl->REQ-SUBNET-5]\n*595|pub fn probe_node_serving(node_hex: &str, subnet: &str) -> bool {\n 596|    if spt_daemon::daemon::ensure_running().is_err() {\n 597|        return false;\n 598|    }"}],"details":{"scopePath":"spt-core/crates/spt/src","searchPath":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":18,"fileCount":2,"files":["spt-core/crates/spt/src/cli.rs","spt-core/crates/spt/src/wansend.rs"],"fileMatches":[{"path":"spt-core/crates/spt/src/cli.rs","count":16},{"path":"spt-core/crates/spt/src/wansend.rs","count":2}],"truncated":false,"displayContent":"# spt-core/crates/spt/src/\n## cli.rs\n 1046│        #[arg(required = true)]\n*1047│        nodes: Vec<String>,\n 1048│        /// Rotate the seed immediately instead of at the window's close — the\n 1049│        /// compromised-node path (a benign offliner may then fall behind and\n 1050│        /// must re-pair rather than re-seed).\n     │...\n 2472│        if !holders.is_empty() {\n*2473│            let nodes: Vec<&str> = holders.iter().map(|i| i.node.as_str()).collect();\n 2474│            eprintln!(\n 2475│                \"COLLISION:{new_id} already exists in subnet '{subnet}' on node(s): {} — \\\n 2476│                 pick another id (or rename the holder first)\",\n     │...\n 3625│            let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\n*3626│            let cand_nodes: Vec<String> = regs\n 3627│                .values()\n 3628│                .flat_map(|reg| reg.instances(id).iter().map(|i| i.node.clone()))\n 3629│                .collect();\n     │...\n 6712│/// or codes (M7 plan decision 5).\n*6713│struct SubnetStatusRow {\n 6714│    name: String,\n 6715│    /// Paired nodes known for the subnet (this node included).\n 6716│    nodes: usize,\n     │...\n 6730│// [impl->REQ-SUBNET-1]\n*6731│fn subnet_status_rows(\n 6732│    store: &SubnetStore,\n 6733│    regs: &std::collections::BTreeMap<String, spt_net::net::registry::SubnetRegistry>,\n 6734│    roster: &spt_store::roster::RosterStore,\n     │...\n 7112│/// couple seconds reads offline for liveness purposes. The probe itself\n*7113│/// (`probe_node_serving`, wansend.rs) is subnet-scoped per REQ-SUBNET-5: dial\n 7114│/// (proves reachable) THEN ask \"serving `subnet`?\", so a detached-but-alive\n 7115│/// peer reads offline for that subnet.\n 7116│const PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_millis(2500);\n     │...\n 7125│/// else `ceil(k / max_inflight)` ceilings. The mesh widen (D6) makes a node\n*7126│/// see ALL roster members — many silent — so the serial per-node `probe_node`\n 7127│/// loop cost `offline_count × ceiling`; this fans it out (REQ-MESH-6). `probe`\n 7128│/// is INJECTED so the unit test passes a deterministic sleeper (no network);\n*7129│/// the real site passes `probe_node_serving`. Each probe still runs on its own\n 7130│/// thread under its own `recv_timeout(ceiling)` bound (via `run_bounded`), so\n 7131│/// one wedged dial costs ONE ceiling, never the batch — KH 5.3 preserved.\n 7132│// [impl->REQ-MESH-6]\n     │...\n 7170│                    std::thread::spawn(move || {\n*7171│                        run_bounded(ceiling, false, move || probe(&node, &subnet))\n 7172│                    }),\n 7173│                )\n 7174│            })\n     │...\n 7254│/// `SubnetStatusRow`), plus the per-node rows (a copy of `NodeRow` + the\n*7255│/// probe-settled liveness) when `--nodes` is set. Internal structs stay free to\n 7256│/// refactor — these are the committed shape.\n 7257│// [impl->REQ-CLI-JSON]\n 7258│#[derive(serde::Serialize)]\n*7259│struct SubnetStatusJson {\n 7260│    daemon_running: bool,\n 7261│    subnets: Vec<SubnetRowJson>,\n 7262│}\n     │...\n 7271│    endpoint_count: usize,\n*7272│    nodes: Vec<NodeRowJson>,\n 7273│}\n 7274│\n 7275│/// One node's `--nodes` row (mirrors `NodeRow` + the settled liveness verdict).\n     │...\n 7334│                    endpoint_count: r.endpoints,\n*7335│                    nodes: Vec::new(),\n 7336│                })\n 7337│                .collect();\n 7338│            return print_json(&SubnetStatusJson {\n     │...\n 7404│    }\n*7405│    // Announce the probe phase once, before any dial — silent nodes cost a\n 7406│    // bounded dial each and the user should know what the wait is for.\n 7407│    if !worklist.is_empty() {\n 7408│        eprintln!(\"Checking remote nodes…\");\n     │...\n 7413│    let probed = probe_all(&worklist, PROBE_TIMEOUT, MAX_INFLIGHT, |n, s| {\n*7414│        crate::wansend::probe_node_serving(n, s)\n 7415│    });\n 7416│    // Pass 3: stitch results back in row order — the work-list was filled in\n 7417│    // row order, so a single cursor walks it deterministically. Render is\n     │...\n 8518│    endpoint: String,\n*8519│    nodes: Vec<String>,\n 8520│    locked: bool,\n 8521│}\n 8522│\n## wansend.rs\n 581│\n*582│/// Subnet-scoped liveness probe for a node (M7 D2 / M8, REQ-SUBNET-1 +\n 583│/// REQ-SUBNET-5 — the hybrid liveness's expensive half, spent only on rows\n 584│/// gossip-recency could not settle): true iff the peer is reachable RIGHT NOW\n 585│/// **and still serving `subnet`**. The raw dial alone is subnet-blind (one\n    │...\n 594│// [impl->REQ-SUBNET-5]\n*595│pub fn probe_node_serving(node_hex: &str, subnet: &str) -> bool {\n 596│    if spt_daemon::daemon::ensure_running().is_err() {\n 597│        return false;\n 598│    }"},"isError":false,"timestamp":1784069188380}}
{"type":"message","id":"698dba9b","parentId":"21e8bad7","timestamp":"2026-07-14T22:46:28.388Z","message":{"role":"toolResult","toolCallId":"call_5LTKIDetTs0YaykEl2QzZfk5|fc_050f56f290a937ae016a56bc4442408196b63067e9f8297b88","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-daemon/src/\n### pairhost.rs\n 755|        let concise =\n*756|            meet_failure_detail(\"IPv4-only\", \"meet probe timed out\", 4, 75, 75, clock, false);\n 757|        assert_eq!(\n 758|            concise, \"meet probe timed out\",\n 759|            \"non-verbose surfaces exactly the last concrete error\"\n...\n 761|\n*762|        let v = meet_failure_detail(\"IPv4-only\", \"meet probe timed out\", 4, 75, 75, clock, true);\n 763|        assert!(v.contains(\"4 rendezvous attempt\"), \"attempt count: {v}\");\n 764|        assert!(v.contains(\"75s\"), \"elapsed/deadline: {v}\");\n*765|        assert!(v.contains(\"bound families: IPv4-only\"), \"families (ties W1): {v}\");\n 766|        assert!(v.contains(\"last error: meet probe timed out\"), \"last error kept: {v}\");\n 767|        // REQ-JOIN-VERBOSE-CLOCK: the joiner's step, signed offset, and\n 768|        // correction state all carried in the verbose block.\n\n## spt-net/src/net/\n### endpoint.rs\n 347|            BindFamilies::V4Only => {\n*348|                eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")\n 349|            }\n 350|            BindFamilies::V6Only => {\n*351|                eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")\n 352|            }\n 353|        }\n 354|        let builder = match scope {\n...\n 464|            (true, true) => \"IPv4+IPv6\",\n*465|            (true, false) => \"IPv4-only\",\n 466|            (false, true) => \"IPv6-only\",\n 467|            (false, false) => \"none\",\n 468|        }\n...\n 639|            BindFamilies::V4Only,\n*640|            \"IPv6 dead → IPv4-only\"\n 641|        );\n 642|        assert_eq!(\n 643|            select_families(false, true, false, false).unwrap(),\n...\n 656|            BindFamilies::V4Only,\n*657|            \"SPT_DISABLE_IPV6 → IPv4-only even though IPv6 probed healthy\"\n 658|        );\n 659|        assert_eq!(\n 660|            select_families(true, true, true, false).unwrap(),"}],"details":{"scopePath":"spt-core/crates","searchPath":"C:/Users/decid/Documents/projects/spt-core/crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":8,"fileCount":2,"files":["spt-core/crates/spt-daemon/src/pairhost.rs","spt-core/crates/spt-net/src/net/endpoint.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/src/pairhost.rs","count":3},{"path":"spt-core/crates/spt-net/src/net/endpoint.rs","count":5}],"truncated":false,"displayContent":"# spt-core/crates/\n\n## spt-daemon/src/\n### pairhost.rs\n 755│        let concise =\n*756│            meet_failure_detail(\"IPv4-only\", \"meet probe timed out\", 4, 75, 75, clock, false);\n 757│        assert_eq!(\n 758│            concise, \"meet probe timed out\",\n 759│            \"non-verbose surfaces exactly the last concrete error\"\n    │...\n 761│\n*762│        let v = meet_failure_detail(\"IPv4-only\", \"meet probe timed out\", 4, 75, 75, clock, true);\n 763│        assert!(v.contains(\"4 rendezvous attempt\"), \"attempt count: {v}\");\n 764│        assert!(v.contains(\"75s\"), \"elapsed/deadline: {v}\");\n*765│        assert!(v.contains(\"bound families: IPv4-only\"), \"families (ties W1): {v}\");\n 766│        assert!(v.contains(\"last error: meet probe timed out\"), \"last error kept: {v}\");\n 767│        // REQ-JOIN-VERBOSE-CLOCK: the joiner's step, signed offset, and\n 768│        // correction state all carried in the verbose block.\n\n## spt-net/src/net/\n### endpoint.rs\n 347│            BindFamilies::V4Only => {\n*348│                eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")\n 349│            }\n 350│            BindFamilies::V6Only => {\n*351│                eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")\n 352│            }\n 353│        }\n 354│        let builder = match scope {\n    │...\n 464│            (true, true) => \"IPv4+IPv6\",\n*465│            (true, false) => \"IPv4-only\",\n 466│            (false, true) => \"IPv6-only\",\n 467│            (false, false) => \"none\",\n 468│        }\n    │...\n 639│            BindFamilies::V4Only,\n*640│            \"IPv6 dead → IPv4-only\"\n 641│        );\n 642│        assert_eq!(\n 643│            select_families(false, true, false, false).unwrap(),\n    │...\n 656│            BindFamilies::V4Only,\n*657│            \"SPT_DISABLE_IPV6 → IPv4-only even though IPv6 probed healthy\"\n 658│        );\n 659│        assert_eq!(\n 660│            select_families(true, true, true, false).unwrap(),"},"isError":false,"timestamp":1784069188388}}
{"type":"message","id":"6df86a17","parentId":"698dba9b","timestamp":"2026-07-14T22:46:28.402Z","message":{"role":"toolResult","toolCallId":"call_Gq258BxTMgrWFsVLX7mEdwvg|fc_050f56f290a937ae016a56bc444228819692c705edb9e8af2a","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-net/src/\n### lib.rs\n 6|//! endpoint (WAN, with the n0-relay default + a self-host knob — ADR-0002), mDNS\n*7|//! LAN discovery, TOTP-seeded SPAKE2 pairing (ADR-0005), the eventually-consistent\n 8|//! per-subnet registry (ADR-0006), the subnet notification spool (ADR-0007),\n 9|//! cross-node Psyche sync (ADR-0003 + KNOWN-HAZARDS 6.5), and the update\n 10|//! peer-propagation transport plugged into the M3c update-engine seam (ADR-0004 §D).\n...\n 31|//!   D0  scaffold + `net` feature flag                         ← this commit\n*32|//!   D1  Iroh endpoint + n0 relay/self-host + mDNS discovery    (REQ-NET-1, REQ-NET-2)\n 33|//!   D2  TOTP-SPAKE2 pairing + transcript/seed-epoch/rate-limit (REQ-PAIR-1..6)\n 34|//!   D3  per-subnet registry + epoch-lease resolution           (REQ-INST-7,9..13)\n 35|//!   D4  broker-owned QUIC endpoint (ADR-0004 §B)               (REQ-EP-4 seam)\n\n### net/\n#### endpoint.rs\n 22|use iroh::endpoint::{presets, IdleTimeout, Incoming, PortmapperConfig, QuicTransportConfig};\n*23|use iroh::{Endpoint, EndpointId, RelayMap, RelayMode, SecretKey};\n 24|use spt_proto::identity::{Identity, PublicKey};\n 25|\n 26|// Re-exported for the daemon (D4): the broker holds live QUIC connections +\n...\n 79|/// Where this endpoint looks for relay assistance (ADR-0002). Maps onto iroh's\n*80|/// [`RelayMode`]; the default ([`RelayPolicy::N0Default`]) is the zero-config path.\n 81|// [impl->REQ-NET-2]\n 82|#[derive(Debug, Clone)]\n 83|pub enum RelayPolicy {\n...\n 92|\n*93|/// Whether the endpoint also runs **mDNS** LAN discovery on top of the preset's n0\n*94|/// DNS discovery. With mDNS on, a node advertises itself and resolves peers by id\n 95|/// alone on the local network, so two machines on the same LAN find each other with\n 96|/// no ticket exchange and no relay round-trip ([`NetEndpoint::connect_by_id`]).\n 97|// [impl->REQ-NET-1]\n...\n 99|pub enum LocalDiscovery {\n*100|    /// Advertise + resolve over mDNS (swarm-discovery) in addition to n0 DNS.\n 101|    Mdns,\n*102|    /// No mDNS — WAN discovery only (and direct addresses). Used by hermetic tests.\n 103|    Off,\n 104|}\n 105|\n...\n 121|    /// a static `ip:port` ticket (firewall allow-rules, the two-host rig's\n*122|    /// env-derived peer addresses) with no relay/discovery infrastructure.\n 123|    Port(u16),\n 124|}\n 125|\n...\n 150|/// (e.g. IPv6 whose AAAA resolves but whose path is dead) silently burns\n*151|/// discovery/connect time on every attempt. We probe each family once at bind and\n 152|/// drop the *dead* one — never a fixed \"prefer IPv4\" (an IPv6-only network must\n 153|/// still work).\n 154|#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n...\n 284|        relay: RelayPolicy,\n*285|        discovery: LocalDiscovery,\n 286|    ) -> Result<NetEndpoint, NetError> {\n*287|        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\n 288|    }\n 289|\n 290|    /// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].\n...\n 293|    /// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) — the pre-trust\n*294|    /// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`\n*295|    /// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to\n 296|    /// [`bind`](Self::bind).\n 297|    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n*298|    pub async fn bind_with_alpns(\n 299|        identity: &Identity,\n 300|        relay: RelayPolicy,\n*301|        discovery: LocalDiscovery,\n*302|        alpns: Vec<Vec<u8>>,\n 303|    ) -> Result<NetEndpoint, NetError> {\n*304|        Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await\n 305|    }\n 306|\n*307|    /// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an\n 308|    /// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the\n 309|    /// endpoint never listens on a real interface (and never triggers a Windows\n 310|    /// firewall prompt per test binary); everything else delegates here with\n...\n 315|        relay: RelayPolicy,\n*316|        discovery: LocalDiscovery,\n*317|        alpns: Vec<Vec<u8>>,\n 318|        scope: BindScope,\n 319|    ) -> Result<NetEndpoint, NetError> {\n 320|        // iroh and spt-proto both build the ed25519 keypair from the same 32-byte\n...\n 322|        let secret = SecretKey::from_bytes(&identity.seed());\n*323|        let builder = Endpoint::builder(presets::N0)\n 324|            .secret_key(secret)\n#### registry.rs\n 561|/// resolver uses ([`SubnetRegistry::resolve_visible`]), so a hidden endpoint\n*562|/// never appears — discovery leaks nothing a viewer couldn't reach\n 563|/// (ADR-0006 §6, exclusion by construction). Unroutable (`Offline`) rows are\n 564|/// skipped too: a dead instance serves nothing, so it is not a resource.\n 565|// [impl->REQ-INST-14]\n...\n 1316|\n*1317|    // [unit->REQ-HAZARD-REGISTRY-GHOST-ROWS] THE field bug (M7 acceptance,\n 1318|    // 2026-06-06): a dead node identity's row makes a bare id refuse with a\n 1319|    // phantom AcrossNodes ambiguity the user cannot qualify past (the node no\n 1320|    // longer exists). Eviction removes the dead node's rows — bare resolution\n...\n 1704|\n*1705|    // [unit->REQ-SUBNET-3] `@node` qualifiers accept a label or key-prefix\n 1706|    // (case-insensitive), not just the full hex; a qualifier matching several\n 1707|    // distinct nodes refuses with paste-able candidate key prefixes —\n 1708|    // machines sharing a hostname are never guessed between.\n 1709|    #[test]\n*1710|    fn node_qualifier_accepts_label_and_prefix_refuses_shared() {\n 1711|        let labeled = |node: &str, label: &str| Instance {\n 1712|            node_label: Some(label.to_string()),\n 1713|            machine_id: None,\n...\n 1816|    // [unit->REQ-INST-14] the projection is the yellow-pages view over\n*1817|    // VISIBLE rows only: a hidden endpoint never appears (discovery leaks\n 1818|    // nothing resolution would refuse), an Offline row is not a resource,\n 1819|    // and an absent blurb renders clean (None, not an error).\n 1820|    #[test]\n\n#### mesh/\n##### seedproof.rs\n 92|/// Which side of the connection a party plays. The **dialer** opened the\n*93|/// connection; the **acceptor** received it. Bound into the tag so the dialer's\n*94|/// proof can never be replayed as the acceptor's (reflection defense) — exactly\n 95|/// the role pinning [`crate::net::pairing::transcript::Role`] uses.\n 96|#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n 97|pub enum ProofRole {\n...\n 99|    Dialer,\n*100|    /// The node that accepted the connection.\n 101|    Acceptor,\n 102|}\n 103|\n...\n 107|            ProofRole::Dialer => b\"dialer\",\n*108|            ProofRole::Acceptor => b\"acceptor\",\n 109|        }\n 110|    }\n 111|}\n...\n 128|    pub dialer_pub: PublicKey,\n*129|    /// The acceptor's handshake-proven Ed25519 public key (channel binding).\n*130|    pub acceptor_pub: PublicKey,\n 131|    /// The dialer's per-connection challenge nonce (freshness).\n 132|    pub dialer_nonce: [u8; NONCE_LEN],\n*133|    /// The acceptor's per-connection challenge nonce (freshness).\n*134|    pub acceptor_nonce: [u8; NONCE_LEN],\n 135|}\n 136|\n 137|impl SeedProofTranscript {\n...\n 144|        let mut mac = HmacSha256::new_from_slice(mk.key_bytes())\n*145|            .expect(\"HMAC accepts any key length\");\n 146|        mac.update(PROOF_DOMAIN);\n 147|        mac.update(prover.label());\n 148|        // subnet_id is variable-length → length-prefix it. The rest are\n...\n 153|        mac.update(&self.dialer_pub.to_bytes());\n*154|        mac.update(&self.acceptor_pub.to_bytes());\n 155|        mac.update(&self.dialer_nonce);\n*156|        mac.update(&self.acceptor_nonce);\n 157|        mac.finalize().into_bytes().into()\n 158|    }\n 159|\n...\n 171|/// Mesh-D2 drives the exchange with [`Hello`](SeedProofFrame::Hello) (a party's\n*172|/// nonce **plus** the subnet names it offers — the acceptor replies with the\n 173|/// intersection only) followed by one [`Proof`](SeedProofFrame::Proof) per shared\n 174|/// subnet. [`Challenge`](SeedProofFrame::Challenge) is the D1 nonce-only opener,\n 175|/// retained for the codec's stability tests; `Hello` subsumes it on the wire.\n...\n 188|    /// A party's per-connection nonce together with the subnet names it offers.\n*189|    /// The dialer sends its full local list; the acceptor replies with only the\n 190|    /// intersection (minimizing name disclosure). The proven set is established\n 191|    /// by the per-subnet [`Proof`](SeedProofFrame::Proof)s that follow.\n 192|    Hello {\n...\n 194|        nonce: [u8; NONCE_LEN],\n*195|        /// Offered subnet names (dialer: local set; acceptor: intersection).\n 196|        subnets: Vec<String>,\n 197|    },\n 198|    /// A party's seed-proof tags for **one subnet**, one per generation it\n...\n 369|            dialer_pub: d,\n*370|            acceptor_pub: a,\n 371|            dialer_nonce: [7u8; NONCE_LEN],\n*372|            acceptor_nonce: [9u8; NONCE_LEN],\n 373|        }\n 374|    }\n 375|\n...\n 412|    // [unit->REQ-MESH-1] a matching MK + transcript verifies, and the two role\n*413|    // tags differ so the dialer's proof can't be replayed as the acceptor's.\n 414|    #[test]\n 415|    fn valid_proof_verifies_and_roles_differ() {\n 416|        let mk = MembershipKey::derive(SEED, \"home\", 1);\n...\n 422|        assert!(t.verify(&mk, ProofRole::Acceptor, &a));\n*423|        // No reflection: an acceptor tag must not verify as a dialer tag.\n 424|        assert!(!t.verify(&mk, ProofRole::Dialer, &a));\n 425|    }\n 426|\n...\n 475|            SeedProofTranscript {\n*476|                acceptor_pub: other_pub,\n 477|                ..base.clone()\n 478|            },\n 479|            SeedProofTranscript {\n...\n 483|            SeedProofTranscript {\n*484|                acceptor_nonce: [0xCDu8; NONCE_LEN],\n 485|                ..base.clone()\n 486|            },\n 487|        ];\n\n#### pairing/\n##### meet.rs\n 25|//! close, and would pin an ephemeral key as the peer's durable name. So the\n*26|//! meet endpoint serves **discovery only**: the joiner asks, the responder\n 27|//! answers with its real [`EndpointAddr`] (one tiny length-prefixed frame on a\n 28|//! dedicated pre-trust ALPN, [`SPT_PAIR_MEET_ALPN`]), and the joiner re-dials\n 29|//! the real endpoint over [`SPT_PAIR_ALPN`](super::wire::SPT_PAIR_ALPN) where\n...\n 31|//!\n*32|//! ## Security posture (token gates discovery, PAKE gates trust)\n 33|//!\n 34|//! Anyone who knows the subnet name and the current code window can derive the\n 35|//! meet keypair, impersonate the listener, and hand the joiner any address —\n...\n 94|/// same keypair (and therefore the *public* id it dials); the keypair gates\n*95|/// nothing but discovery (module docs).\n 96|// [impl->REQ-PAIR-5]\n 97|pub fn rendezvous_identity(token: &[u8; 32]) -> Identity {\n 98|    let mut h = Sha256::new();\n...\n 119|/// Bind the meet listener for `(subnet_name, totp_step)` under the derived\n*120|/// identity. The relay/discovery/scope knobs mirror\n 121|/// [`NetEndpoint::bind_scoped`]; production passes the node's configured\n 122|/// [`RelayPolicy`] so the derived id is relay-reachable (and n0-DNS\n 123|/// resolvable) by a joiner that knows nothing but the two user inputs.\n...\n 128|    relay: RelayPolicy,\n*129|    discovery: LocalDiscovery,\n 130|    scope: BindScope,\n 131|) -> Result<RendezvousListener, NetError> {\n 132|    let id = rendezvous_identity(&rendezvous_token(subnet_name, totp_step));\n...\n 135|        relay,\n*136|        discovery,\n 137|        vec![SPT_PAIR_MEET_ALPN.to_vec()],\n 138|        scope,\n 139|    )\n...\n 149|\n*150|    /// Serve one meet request: accept a connection, accept its bidi stream,\n 151|    /// and answer with `real_addr` — the responder's REAL pairing endpoint\n 152|    /// address the joiner re-dials for the unchanged ceremony. Returns when\n 153|    /// one reply has been flushed; the daemon's pairing-window loop calls this\n...\n 158|            .ep\n*159|            .accept()\n 160|            .await\n 161|            .ok_or_else(|| MeetError::Net(NetError::Bind(\"meet endpoint closed\".into())))?;\n 162|        let conn = incoming\n*163|            .accept()\n*164|            .map_err(|e| MeetError::Protocol(format!(\"accept: {e}\")))?\n 165|            .await\n 166|            .map_err(|e| MeetError::Protocol(format!(\"connecting: {e}\")))?;\n 167|        let (mut send, mut recv) = conn\n*168|            .accept_bi()\n 169|            .await\n*170|            .map_err(|e| MeetError::Protocol(format!(\"accept_bi: {e}\")))?;\n 171|        // Drain the joiner's probe byte (the dialer must write first for\n*172|        // accept_bi to fire); content is irrelevant.\n 173|        let _ = recv\n 174|            .read_to_end(MAX_MEET_FRAME)\n 175|            .await\n...\n 193|/// [`dial_via_rendezvous`]; this explicit-address form is the seam for\n*194|/// hermetic tests and static-`ip:port` rigs where no relay/discovery exists.\n 195|// [impl->REQ-PAIR-5]\n 196|pub async fn meet_at(\n 197|    dialer: &NetEndpoint,\n...\n 237|/// connect timeout. Found live in the first real two-machine join (M7\n*238|/// acceptance): the sequential, unbounded walk burned the live window\n 239|/// dialing the dead one's ghost, every attempt.\n 240|const MEET_PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(7);\n 241|\n...\n 329|\n*330|    /// Bind a hermetic (loopback, no relay/discovery) endpoint on `alpns`.\n*331|    async fn hermetic(id: &Identity, alpns: Vec<Vec<u8>>) -> NetEndpoint {\n 332|        NetEndpoint::bind_scoped(\n 333|            id,\n 334|            RelayPolicy::Disabled,\n 335|            LocalDiscovery::Off,\n*336|            alpns,\n 337|            BindScope::Loopback,\n 338|        )\n 339|        .await\n...\n 343|    /// The meet listener's derived-id address with its loopback sockets\n*344|    /// attached — what relay/discovery resolution would produce, built\n 345|    /// explicitly because the hermetic test has neither. The id in the addr\n 346|    /// is RE-DERIVED from (name, step), not copied from the listener, so the\n 347|    /// dial proves the listener really holds the token-derived key (TLS\n...\n 365|    // receives the responder's REAL address, and lands a ceremony-ALPN\n*366|    // connection on the real endpoint — discovery via token, ceremony surface\n 367|    // unchanged.\n 368|    #[tokio::test]\n 369|    async fn meet_redirects_joiner_to_the_real_pairing_endpoint() {\n##### ntp.rs\n 92|/// hermeticity switch — see [`ENABLED`]). Disabled ⇒ pure system clock.\n*93|pub fn set_enabled(enabled: bool) {\n*94|    ENABLED.store(enabled, std::sync::atomic::Ordering::Relaxed);\n 95|}\n 96|\n 97|/// The ceremony clock (unix seconds): the system clock corrected by the\n...\n 303|fn query_one_addr(addr: SocketAddr, timeout: Duration) -> Option<u64> {\n*304|    let bind_addr = match addr {\n 305|        SocketAddr::V4(_) => SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), 0),\n 306|        SocketAddr::V6(_) => SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), 0),\n 307|    };\n*308|    let socket = UdpSocket::bind(bind_addr).ok()?;\n 309|    socket.set_read_timeout(Some(timeout)).ok()?;\n 310|    socket.set_write_timeout(Some(timeout)).ok()?;\n 311|    let mut packet = [0u8; 48];\n##### ratelimit.rs\n 8|//! ceremonies cannot be run in parallel or in a tight loop. A public pre-trust relay\n*9|//! lets any peer reach a seed-holder, and the [±1 window](super::totp::accepts_step)\n 10|//! widens the valid-code set from 1 to 3 of `10^6` (~21 bits → ~19). With no gate an\n 11|//! attacker drives back-to-back ceremonies (and, across multiple seed-holders, in\n 12|//! parallel) to brute the rotating code inside its 30s life. The required mitigation:\n...\n 30|//! *local* gate each seed-holder runs. Backoff is ephemeral — a process restart resets\n*31|//! it — which is acceptable because restarting a seed-holder is not remotely\n 32|//! attacker-driven (unlike the relay-reachable ceremony surface itself).\n 33|//\n 34|// [impl->REQ-HAZARD-PAIR-RATE-LIMIT]\n##### rendezvous.rs\n 1|//! Pre-trust pairing **rendezvous token** derivation (ADR-0006; `CONTEXT.md` \"link\n*2|//! discovery (TOTP + name)\", D2f, REQ-PAIR-5).\n 3|//!\n 4|//! Two not-yet-trusted nodes that don't know each other's node id must still *meet* at\n 5|//! the relay to run the ceremony. They meet on a shared **rendezvous token** both can\n##### spake.rs\n 151|    /// transcript's step (the caller enforces the ±1 window via\n*152|    /// [`accepts_step`](super::totp::accepts_step) before constructing the transcript).\n 153|    // [impl->REQ-PAIR-1] [impl->REQ-HAZARD-PAIR-TRANSCRIPT-BIND]\n 154|    pub fn respond(\n 155|        transcript: PairingTranscript,\n...\n 328|    // the PAKE but substitutes its own pubkey into its transcript cannot produce a tag\n*329|    // the honest side accepts, because both pubkeys are bound.\n 330|    #[test]\n 331|    fn substituted_pubkey_fails() {\n 332|        let (a, b, mallory) = (\n##### totp.rs\n 20|//!\n*21|//! Clock skew between the two pairing machines is absorbed by accepting the adjacent\n 22|//! steps — but the step is **bound into the transcript**, not folded into the\n 23|//! password (a changed step would change the password *and* the transcript, so a\n 24|//! windowed retry can't work password-side). The dialer announces its step in the\n 25|//! clear; both sides bind that exact value and reject `|Δstep| > 1`\n*26|//! ([`accepts_step`]). The ±1 widening of the valid-password space is the reason the\n 27|//! ceremony also needs subnet-global rate limiting (D2d, #11).\n 28|//\n 29|// [impl->REQ-PAIR-1]\n...\n 103|    pub fn code_at_step(&self, step: u64, digits: u32) -> u32 {\n*104|        let mut mac = HmacSha1::new_from_slice(&self.0).expect(\"HMAC accepts any key length\");\n 105|        mac.update(&step.to_be_bytes());\n 106|        let hash = mac.finalize().into_bytes();\n 107|        // Dynamic truncation (RFC 4226 §5.3): low nibble of the last byte selects a\n...\n 154|\n*155|/// The ±1 acceptance window around a step: `[step-1, step, step+1]` (saturating at 0).\n 156|/// A pairing peer's announced step must be one of these relative to the local step.\n 157|pub fn window_steps(step: u64) -> [u64; 3] {\n 158|    [step.saturating_sub(1), step, step + 1]\n...\n 163|/// triples the valid-password space.\n*164|pub fn accepts_step(local_step: u64, peer_step: u64) -> bool {\n 165|    local_step.abs_diff(peer_step) <= 1\n 166|}\n 167|\n...\n 241|\n*242|    // [unit->REQ-PAIR-1] the ±1 window accepts exactly the adjacent steps and\n 243|    // rejects a 2-step skew — the clock-tolerance the dialer/listener agree on,\n 244|    // and the widening that mandates rate-limiting (#11).\n 245|    #[test]\n*246|    fn window_accepts_plus_minus_one_only() {\n 247|        assert_eq!(window_steps(10), [9, 10, 11]);\n 248|        assert_eq!(window_steps(0), [0, 0, 1], \"saturates at zero\");\n*249|        assert!(accepts_step(10, 10));\n*250|        assert!(accepts_step(10, 9));\n*251|        assert!(accepts_step(10, 11));\n*252|        assert!(!accepts_step(10, 12), \"two steps out is rejected\");\n*253|        assert!(!accepts_step(10, 8));\n 254|    }\n 255|\n 256|    // [unit->REQ-PAIR-1] a generated seed round-trips through base32 (the otpauth\n##### transcript.rs\n 120|    ) -> [u8; TAG_LEN] {\n*121|        let mut mac = HmacSha256::new_from_slice(shared).expect(\"HMAC accepts any key length\");\n 122|        mac.update(CONFIRM_DOMAIN);\n 123|        mac.update(confirmer.label());\n 124|        // Length-prefix every variable field to prevent transcript-concatenation\n##### wire.rs\n 22|//! clock-derived TOTP step), the responder's [`Announce`](Frame::Announce) (the epoch,\n*23|//! *after* it has admitted the ceremony and accepted the ±1 step), and only then the\n 24|//! four SPAKE messages. The TOTP **step** is dialer-announced and clock-derived\n 25|//! (`totp.rs`), so it needs no announce — only the seed epoch does.\n 26|//!\n...\n 53|use super::spake::{Initiator, PairError, Responder};\n*54|use super::totp::{accepts_step, time_step, TotpSeed, DIGITS};\n 55|use super::transcript::{PairingTranscript, TAG_LEN};\n 56|\n 57|/// The pre-trust pairing ALPN. Distinct from the trusted\n...\n 159|\n*160|/// Run the **responder** (seed-holder) side of the ceremony over an accepted connection.\n 161|///\n 162|/// `local_pub` is this node's own pubkey (the iroh endpoint id); `subnets` supplies the\n 163|/// seed + epoch for the named subnet; `rate` is the subnet-global admission gate. `now`\n...\n 181|    let (mut send, mut recv) = conn\n*182|        .accept_bi()\n 183|        .await\n*184|        .map_err(|e| PairWireError::Io(format!(\"accept_bi: {e}\")))?;\n 185|    let initiator_pub = remote_pub(conn)?;\n 186|\n 187|    // F1: Hello — the joiner's subnet name + clock-derived TOTP step (+ its\n...\n 281|    // ±1 clock-skew window on the dialer-announced step.\n*282|    if !accepts_step(time_step(p.now), p.peer_step) {\n 283|        abort(send, A_BAD_STEP, 0).await?;\n 284|        return Err(PairWireError::StepRejected);\n 285|    }\n...\n 371|/// just after binds to the wrong step and fails as \"wrong code\" — the ±1\n*372|/// responder window ([`accepts_step`](super::totp)) tolerates an announced\n 373|/// `step-1`, letting the caller retry the SAME typed code against the\n 374|/// previous step before re-prompting the user (the late-code retry, field\n 375|/// report 2026-06-06).\n...\n 395|\n*396|    // F1: Hello — opens the stream (the dialer must write first for accept_bi\n 397|    // to fire). Carries the optional self-intro (M8 decision 13).\n 398|    write_frame(&mut send, &enc_hello(subnet_name, step, intro)).await?;\n 399|\n...\n 981|\n*982|        // Responder task: accept, run the ceremony, return its outcome.\n 983|        let resp_task = tokio::spawn(async move {\n*984|            let incoming = responder.accept().await.expect(\"incoming\");\n 985|            let conn = incoming\n*986|                .accept()\n*987|                .expect(\"accept\")\n 988|                .await\n 989|                .expect(\"connecting\");\n 990|            let subnets = subnet_store(\"home\", seed, 3);\n...\n 1063|        let resp_task = tokio::spawn(async move {\n*1064|            let incoming = responder.accept().await.expect(\"incoming\");\n 1065|            let conn = incoming\n*1066|                .accept()\n*1067|                .expect(\"accept\")\n 1068|                .await\n 1069|                .expect(\"connecting\");\n 1070|            let subnets = subnet_store(\"home\", seed, 1);\n...\n 1133|        let resp_task = tokio::spawn(async move {\n*1134|            let incoming = responder.accept().await.expect(\"incoming\");\n 1135|            let conn = incoming\n*1136|                .accept()\n*1137|                .expect(\"accept\")\n 1138|                .await\n 1139|                .expect(\"connecting\");\n 1140|            let subnets = subnet_store(\"home\", seed, 1);\n...\n 1195|        let resp_task = tokio::spawn(async move {\n*1196|            let incoming = responder.accept().await.expect(\"incoming\");\n 1197|            let conn = incoming\n*1198|                .accept()\n\n## spt-daemon/src/\n### applyhost.rs\n 469|    /// that gracefully [`Broker::stop`]s + JOINS the serve thread on drop (C1). Without\n*470|    /// it every test broker leaked its serve thread + all accepted-conn handler threads\n 471|    /// — the load population that starved the seed stop barrier under full-suite load.\n 472|    /// Derefs to `Arc<Broker>` so callers use it exactly like the bare Arc they held before.\n 473|    struct ServedBroker {\n...\n 773|    // it on `KIND_BRAIN_RESTART` and acks `honored: true`; a bare broker (no\n*774|    // supervisor — the test/no-daemon shape) accepts the verb but acks\n 775|    // `honored: false`. This is the broker half of the apply trigger that\n 776|    // replaces the in-process handoff.\n 777|    #[test]\n...\n 781|\n*782|        // No signal wired: accepted, not honored.\n 783|        let mut b = cold_connect_retry(&name);\n 784|        assert!(\n 785|            !b.request_brain_restart().expect(\"verb round-trips\"),\n...\n 1004|\n*1005|    // [unit->REQ-UPD-6] Broker-touching debug/update-set payloads are accepted\n 1006|    // as staged candidates, but apply refuses them typed while the broker-held\n 1007|    // runtime is live. The first broker-touching flow is refusal-only; it does\n 1008|    // not auto-suspend or cycle hosted work.\n### autostart.rs\n 22|/// replay thread starts alongside the broker's serve thread, so the very first\n*23|/// connect can race the accept loop up. Bounded and short: a genuine launch\n 24|/// failure (dead adapter binary, bad template) fails again instantly and we\n 25|/// move on after the last attempt.\n 26|const LAUNCH_ATTEMPTS: u32 = 3;\n### brain.rs\n 17|//!   output sequence it still needs. On handoff it `subscribe`s from that cursor;\n*18|//!   the broker replays buffered output from there. [`Brain::read_event`] accepts\n 19|//!   only the contiguous next `seq` (advancing the cursor), silently drops an\n 20|//!   already-seen `seq` (a replay duplicate), and treats a forward gap as a hard\n 21|//!   error — so a lost chunk can never pass silently.\n...\n 140|    NetDialed(NetDialed),\n*141|    /// A NON-BLOCKING dial submit was accepted and its concurrent dial spawned\n 142|    /// (PUMP-TRUTH W2, REQ-PUMP-PEER-ISOLATION) — the bare ack for\n 143|    /// [`Brain::submit_dial`]. The dial's real outcome rides the presence stream\n 144|    /// ([`Self::NetPresence`]), not this frame.\n...\n 271|    /// `next_seq`, set by [`Brain::net_stream_subscribe`] and advanced by\n*272|    /// [`Brain::read_event`] under the same accept/dedup/gap discipline.\n 273|    /// Durability across a handoff is the logic layer's job (a re-attaching\n 274|    /// brain queries `net-streams` and re-subscribes from its durable cursors).\n 275|    net_cursors: std::collections::HashMap<u64, u64>,\n...\n 277|    /// `net_cursors`, set by [`Brain::net_presence_subscribe`] and advanced by\n*278|    /// [`Brain::read_event`] under the same accept/dedup/gap discipline.\n 279|    /// `None` until subscribed (or the first event arrives).\n 280|    presence_cursor: Option<u64>,\n 281|    /// Per-session **resume** output cursors (restoration D4-2): the multi-session\n...\n 286|    /// at the broker's `resume_seq`): drop `seq < cursor` (the at-least-once\n*287|    /// boundary re-send) and accept-and-snap `seq >= cursor` (the contiguous case\n 288|    /// *and* a post-eviction ring-floor jump — the broker's `Mutex`-held replay\n 289|    /// cannot reorder, so a forward jump is only ever a legitimate eviction clamp,\n 290|    /// never a real gap). A session **absent** here uses the strict single-session\n...\n 305|    /// When `true`, the strict legacy `next_seq` path adopts that first frame's seq\n*306|    /// as the baseline (accept-and-seed) instead of reject-gapping it, then reverts\n 307|    /// to strict reject-gap for every subsequent LIVE frame (so a b4 drop still\n 308|    /// re-fetches — B2 live exactly-once preserved). Only ever consulted on the\n 309|    /// legacy single-session path; a resume-mode brain (snap-above) ignores it. A\n...\n 603|    /// Read and demux one broker event, enforcing exactly-once contiguous output:\n*604|    /// accept the next `seq` (advancing the cursor), drop an already-seen `seq`\n 605|    /// (replay duplicate), and reject a forward gap (lost chunk).\n 606|    /// The deadline for ONE IPC call: `now + io_timeout`, computed at call\n 607|    /// entry (a whole `loop { read_event }` shares it, so unrelated events\n...\n 654|                    // already-delivered seq (the at-least-once boundary re-send),\n*655|                    // accept-and-snap everything `>= cursor` (the contiguous case\n 656|                    // AND a post-eviction ring-floor jump, which the broker's\n 657|                    // non-reordering replay makes the only legitimate forward jump).\n 658|                    if !self.session_cursors.is_empty() {\n...\n 672|                    // Legacy single-session path (map empty — a pure spawn/drive\n*673|                    // seat): strict accept-next / drop-dup / reject-gap on the one\n 674|                    // `next_seq` cursor, byte-for-byte unchanged.\n 675|                    //\n 676|                    // #6 (ADR-0031): a COLD attach's FIRST output frame is a\n...\n 810|                    // Same exactly-once discipline as PTY output, per stream:\n*811|                    // accept the contiguous next seq, drop a replay duplicate,\n 812|                    // reject a forward gap (a lost chunk must not pass silently).\n 813|                    let cursor = self.net_cursors.entry(ev.stream_id).or_insert(ev.seq);\n 814|                    if ev.seq < *cursor {\n...\n 846|                    // Same exactly-once discipline as stream reads (D4c):\n*847|                    // accept the contiguous next seq, drop a replay duplicate,\n 848|                    // reject a forward gap (a lost liveness event must not\n 849|                    // pass silently — a phantom \"still connected\" peer would).\n 850|                    // [impl->REQ-EP-4]\n...\n 934|        // `broker.next_seq - 1` as its first frame; baseline the strict cursor on it\n*935|        // (accept-then-strict). A resume-from-floor re-fetch (`from_seq > 0`) leaves\n 936|        // this false → raw-ring replay + strict reject-gap unchanged (B2).\n 937|        self.baseline_next_output = from_seq == 0;\n 938|        self.subscribe_with(session_id, from_seq, intent, by.map(str::to_string))\n...\n 953|    /// arm the snap-above dedup path (`session_cursors` non-empty) seeded at 0,\n*954|    /// which accepts the jump and snaps. VIEWER-only → B2-safe (a viewer never\n 955|    /// advances `delivered_through` / is not authoritative). The subscribe is sent\n 956|    /// FIRST (a cold brain's empty-map skips `subscribe_with`'s `from_seq` reset),\n 957|    /// THEN the cursor is armed, so neither path stamps `MAX`.\n...\n 1015|    /// so [`Brain::read_event`] dedups the broker's at-least-once boundary re-send\n*1016|    /// and accepts a post-eviction ring-floor jump (no reject-gap). Output is\n 1017|    /// at-least-once; input/effects stay exactly-once via the broker-owned\n 1018|    /// `EffectJournal`. The generation is **not** touched — this is a cold start\n 1019|    /// (generation custody is the broker's, ADR-0018 V2), not a `handoff`.\n...\n 1036|    /// is exactly such a non-draining consumer (its `run_brain` heartbeat reads this conn\n*1037|    /// only in `net_status()`/`sessions()` drain-and-discard loops; it drives no PTY\n 1038|    /// session — brainproc.rs:184 — and nothing on its side consumes the output, §3\n 1039|    /// guard), so it MUST call [`Self::resume_session_cursors`] (cursor-only, NO\n 1040|    /// subscribe) instead. This subscribing method stays for a DRAINING caller (the\n...\n 1111|    /// Query the broker-owned net endpoint's status (D4a): node id, dialable\n*1112|    /// address, conn count — or `enabled: false` on a net-less broker. Reads\n 1113|    /// until the reply (consuming interleaved events like [`Brain::spawn_session`]).\n 1114|    // [impl->REQ-DAEMON-2]\n*1115|    pub fn net_status(&mut self) -> io::Result<NetStatusReply> {\n 1116|        self.send(KIND_NET_STATUS, serde_json::Value::Null)?;\n 1117|        loop {\n 1118|            match self.read_event()? {\n...\n 1452|    /// Returns `honored`: whether the broker had a supervisor wired (false on a\n*1453|    /// bare broker with no supervisor, e.g. a test broker — the verb is accepted\n 1454|    /// but nothing respawns). An older broker that predates the verb answers with\n 1455|    /// an error (KH-2.3 forward-compat: surfaced, never a silent no-op of a\n 1456|    /// swapped binary). Readiness-gated promotion / auto-rollback is D6.\n...\n 1852|\n*1853|        let mut server = listener.accept().expect(\"accept the brain\");\n 1854|        crate::transport::recv_hello(&mut server, Role::Brain).expect(\"stub recv_hello\");\n 1855|        let brain = brain_handle.join().expect(\"brain thread\");\n 1856|\n...\n 1880|    /// CONTROL — a COLD brain (it never skipped-to-live) keeps the strict legacy\n*1881|    /// `next_seq` reject-gap dedup: it accepts the contiguous seq 0, then REJECTS a\n 1882|    /// forward jump as an `output gap`. This is the behavior `attach_skip_to_live`\n 1883|    /// must FLIP — proving the next test isn't vacuously green.\n 1884|    ///\n### brainproc.rs\n 150|/// existing `net-status` verb (which also serves as the broker-liveness probe)\n*151|/// and start them exactly once, on the first `enabled` reply. That single gate\n 152|/// also covers the boot-race self-heal (REQ-DAEMON-9): the broker retries the\n*153|/// NetHost bind in the background and `net-status` flips `enabled` when it\n 154|/// attaches, at which point the brain starts the consumers — no extra signal.\n 155|///\n 156|/// It inherits the broker's already-unelevated token as a plain child, so it\n...\n 193|    // doyle Option A-split): the supervised daemon brain is a NON-DRAINING consumer of\n*194|    // this conn (the heartbeat below reads it only in net_status()/sessions()\n 195|    // drain-and-discard loops), so it MUST NOT subscribe — an undrained subscription on\n 196|    // this request/reply conn is the SharedSend self-deadlock that re-wedged v0.30.4\n 197|    // (brain.rs resume_sessions deadlock warning). `resume_session_cursors` re-establishes\n...\n 216|    // promotes the trial binary on this stamp; promoting on a bare post-connect\n*217|    // breadcrumb would accept a brain that connected but never rebuilt\n 218|    // continuity. Today resume is a near-noop (no daemon-hosted sessions), so\n 219|    // this is forward-correct: the gate is defined on the real readiness\n 220|    // semantic the live-agent adapter inherits.\n...\n 253|        // snapshot+self-exit, Q3) — exit for a supervised respawn.\n*254|        let status = match brain.net_status() {\n 255|            Ok(s) => s,\n 256|            Err(e) => {\n 257|                eprintln!(\"BRAIN_BROKER_LOST: {e} — exiting for supervised respawn\");\n...\n 260|        };\n*261|        if consumer_gate(status.enabled, consumers_started) {\n 262|            let hex = status.node_id_hex.clone().unwrap_or_default();\n 263|            spawn_net_consumers(&hex);\n 264|            consumers_started = true;\n 265|            eprintln!(\n*266|                \"BRAIN_NET_CONSUMERS_UP: net enabled (node {hex}) — dispatcher + peer pump started\"\n 267|            );\n 268|        }\n 269|        // DRIVE the broker's controller-liveness reap every heartbeat (UPDATE-WEDGE\n...\n 281|        // best-effort — a transient sessions error must never fell the heartbeat (the\n*282|        // net_status probe above already owns broker-liveness). Self-applies: it drives\n 283|        // the CURRENT (older) broker's already-shipped reap verb, so a new brain un-strands\n 284|        // its own trial against a live older broker — no coordinated broker restart.\n 285|        // [impl->REQ-UPDATE-TRIAL-DRAIN-DRIVE]\n...\n 291|/// Whether to spawn the net consumers this heartbeat: only once the broker\n*292|/// reports a net endpoint up (`net_enabled`) AND we have not already started\n 293|/// them. Pure for the unit table — the spawn-exactly-once + net-gating\n 294|/// semantics that keep a single dispatcher/peer-pump set running.\n 295|// [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n*296|fn consumer_gate(net_enabled: bool, already_started: bool) -> bool {\n*297|    net_enabled && !already_started\n 298|}\n 299|\n 300|/// Spawn the net consumers — the inbound dispatcher + the outbound peer pump\n...\n 449|    /// (relocated here from `apply`, where they were the optimistic enlyzeam\n*450|    /// write — promotion is the *real* moment the new code is accepted).\n 451|    fn record_promoted(&self, version: u64);\n 452|    /// Correct the record: the candidate failed readiness. Persist\n 453|    /// `RolledBack{…}` and fire the loud, resurfacing rollback notif.\n...\n 630|    /// The candidate stamped `brain.ready` for THIS generation within the\n*631|    /// window — the swap is accepted. The same child stays alive and falls\n 632|    /// through to normal supervision (a later crash is a normal respawn).\n 633|    Promoted,\n 634|    /// The candidate **exited before** signaling ready (a failed boot) — counts\n...\n 724|/// for it to stamp ready for ITS generation within `window`. It **promotes** on\n*725|/// ready (writes `Applied`, the candidate is now the accepted binary and a later\n 726|/// crash is a normal respawn); it **rolls back** to the last-known-good binary\n 727|/// on budget exhaustion — [`TRIAL_PREREADY_BUDGET`] consecutive pre-ready exits\n 728|/// **or** one alive-but-never-ready window-expiry (which **kills** the candidate\n...\n 757|    // Consecutive pre-ready exits of the CURRENT trial candidate (A8 budget K).\n*758|    // In-memory: a broker restart resets it — acceptable, the trial restarts.\n 759|    let mut pre_ready_exits: u32 = 0;\n 760|    while !stop.load(Ordering::Relaxed) {\n 761|        let started = Instant::now();\n...\n 821|                                }\n*822|                                eprintln!(\"BRAIN_PROMOTED: candidate v{version} signalled ready (generation {generation}) — swap accepted\");\n 823|                                env.record_promoted(version);\n 824|                            }\n 825|                            pre_ready_exits = 0;\n 826|                            backoff = base;\n*827|                            supervise = true; // keep supervising the now-accepted child\n 828|                        }\n 829|                        TrialStep::PreReadyExit => {\n 830|                            pre_ready_exits += 1;\n...\n 992|/// `binary` is the **record-driven selection** (D6-2): `None` spawns the\n*993|/// accepted / candidate binary (`canonical`, below), `Some(path)` spawns the\n 994|/// rollback binary (the `.old-N` last-known-good) — the supervisor chooses, no\n 995|/// file is renamed at the failure instant.\n 996|///\n...\n 1309|    /// The net-consumer gate (D2-1): the brain spawns the dispatcher + peer pump\n*1310|    /// exactly once, only after the broker reports net `enabled`. A net-less\n*1311|    /// broker (`enabled=false`) never spawns them; once started they are never\n 1312|    /// re-spawned (the `already_started` latch) — so a single consumer set runs,\n 1313|    /// no matter how many heartbeats poll `net-status`.\n 1314|    // [unit->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n### broker.rs\n 4|//! would lose continuity on if the logic restarted: the PTY master+writer and\n*5|//! the spawned child (both via [`spt_term::PtySession`]), and the accepted\n 6|//! client / listening sockets. It runs **no logic** — no routing, registry,\n 7|//! manifest parse, or lifecycle. It is a relay: spawn a child under a PTY,\n 8|//! forward its output to the brain, inject the brain's input, report exit.\n...\n 1729|    /// True while the FIFO is saturated and input is being dropped; cleared on\n*1730|    /// the next accepted enqueue (heal-on-resume). Mirrored to the perch's\n 1731|    /// `input_backpressure` so the operator sees the drop.\n 1732|    backpressure: AtomicBool,\n 1733|    /// The owning endpoint (the spawn's label; empty = unlabeled / raw test) —\n...\n 1755|    /// Enqueue `bytes` for the PTY write thread — NON-BLOCKING. Returns `true`\n*1756|    /// when accepted (ordered, will land), `false` when the FIFO was full and the\n 1757|    /// record was DROPPED. A full queue stamps `INPUT_BACKPRESSURE` (once, on the\n*1758|    /// rising edge); the next accepted enqueue clears it (heal). The dispatch\n 1759|    /// thread never blocks here, however stuck the harness is.\n 1760|    // [impl->REQ-HAZARD-PTY-INPUT-WRITER-WEDGE]\n 1761|    fn enqueue(&self, bytes: InputRecord) -> bool {\n...\n 2270|    // (`spt_runtime::INJECT_ECHO_ENV_VARS`, F-036 env-inheritance class — an inherited\n*2271|    // dev-shell export once force-enabled echo-verify host-wide and a false miss RETYPED\n 2272|    // sequences into a live session's input). Only an explicit declaration (or an\n 2273|    // in-process test broker, which never runs the daemon entrypoints) reaches this read.\n 2274|    let echo_capable = std::env::var_os(\"SPT_INJECT_VERIFY_ECHO\").is_some()\n...\n 2519|    /// The namespaced listener name — held so [`Broker::stop`] can dial a throwaway\n*2520|    /// connection to unblock the blocked `accept()` in [`serve`](Self::serve) (there is\n*2521|    /// no other wakeup for the accept loop).\n 2522|    name: String,\n 2523|    /// Graceful-stop latch (C1, REQ-HAZARD-DAEMON-STOP-BARRIER teardown-hygiene):\n*2524|    /// [`serve`](Self::serve) checks it after each accept and returns. Without it\n*2525|    /// `serve` is an unstoppable accept loop, so a test (or any host) that stands a\n*2526|    /// broker up leaks the serve thread AND every accepted-conn handler thread at\n 2527|    /// teardown — the load population that starved the seed stop barrier.\n 2528|    stop: AtomicBool,\n 2529|    sessions: Arc<Mutex<HashMap<u64, HostedSession>>>,\n...\n 2543|    /// child onto a freshly-swapped binary. Empty on a bare broker (a test broker\n*2544|    /// with no supervisor) — the verb is then accepted but unhonored. Set once by\n 2545|    /// `Daemon::run` after it spawns the supervisor.\n 2546|    brain_restart: std::sync::OnceLock<Arc<crate::brainproc::BrainRestart>>,\n 2547|    /// Held meet results for the two-phase join (REQ-JOIN-TWO-PHASE): a\n...\n 2706|    /// once by `Daemon::run` after spawning the supervisor; idempotent by\n*2707|    /// `OnceLock` (the first wins). A broker without it accepts the verb but\n 2708|    /// reports `honored: false` (no supervisor to respawn the child).\n 2709|    // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n 2710|    pub fn set_brain_restart(&self, signal: Arc<crate::brainproc::BrainRestart>) -> bool {\n...\n 2742|        loop {\n*2743|            let conn = self.listener.accept()?;\n 2744|            // C1 graceful stop: [`Broker::stop`] raises the latch then dials the\n*2745|            // throwaway connection that woke this accept — observe it and return so the\n 2746|            // serve thread (and, with it, the listener) tears down instead of leaking.\n 2747|            if self.stop.load(Ordering::Acquire) {\n 2748|                return Ok(());\n...\n 2756|\n*2757|    /// Gracefully stop the [`serve`](Self::serve) accept loop: raise the latch, then\n*2758|    /// dial one throwaway connection so the blocked `accept()` wakes, observes the\n 2759|    /// latch, and returns (dropping the listener). Best-effort + idempotent — a second\n 2760|    /// call, or a call after the loop already exited, just fails the dial harmlessly.\n 2761|    /// Fills the honest gap that `serve` is otherwise unstoppable (the leaked-serve\n...\n 2771|    pub fn serve_once(self: &Arc<Self>) -> io::Result<JoinHandle<()>> {\n*2772|        let conn = self.listener.accept()?;\n 2773|        let me = Arc::clone(self);\n 2774|        Ok(thread::spawn(move || {\n 2775|            let _ = me.handle_conn(conn);\n...\n 2826|        };\n*2827|        let Ok(server) = listener.accept() else {\n 2828|            return false;\n 2829|        };\n 2830|        let (_recv, send_half) = server.split();\n...\n 3050|                }\n*3051|                KIND_NET_STATUS => self.dispatch_net_status(&send),\n 3052|                // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE]\n 3053|                KIND_BROKER_IMAGE => self.dispatch_broker_image(&send),\n 3054|                KIND_STALL_EVICTS => self.dispatch_stall_evicts(&send),\n...\n 3564|                        // PtyWrite is ephemeral, so Applied-at-enqueue is sound\n*3565|                        // (V0.13.0-P0 design); the ack means \"accepted + ordered + will\n 3566|                        // land,\" and rc does not gate on landing.\n 3567|                        if !buffered(&bytes) {\n 3568|                            input.enqueue(bytes.clone());\n### codec.rs\n 16|\n*17|/// Maximum framed message size accepted (16 MiB) — guards a garbage/hostile\n 18|/// length prefix from forcing a huge allocation. Matches `spt-msg::wire`.\n 19|const MAX_FRAME_BYTES: usize = 16 * 1024 * 1024;\n 20|\n### conn.rs\n 698|        let client = LocalSocketTransport::connect(&name).expect(\"connect\");\n*699|        let server = listener.accept().expect(\"accept\");\n 700|        let (_recv, send) = server.split();\n 701|        (\n 702|            BrokerConn::new(send, Duration::from_millis(2000)),\n### daemon.rs\n 200|                // self-heal that binds it; the brain polls `net-status` and\n*201|                // starts the consumers once net reports enabled.\n 202|                // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n 203|                    if !net_up && node_hex.is_some() {\n 204|                        // Boot-race self-heal (REQ-DAEMON-9): net failed to bind\n...\n 209|                        // manual restart; the brain notices `net-status` flip\n*210|                        // enabled and starts the consumers then.\n 211|                        // [impl->REQ-DAEMON-9]\n 212|                        let broker = Arc::clone(&broker);\n 213|                        thread::spawn(move || net_retry_attach(broker));\n...\n 374|/// Try to bring up the broker's network host once: build the production\n*375|/// `NetConfig` (durable node.key + relay/discovery/membership) and start the\n 376|/// endpoint, wiring on-connect roster propagation (REQ-MESH-2). `None` on a\n 377|/// `NET_BIND_FAIL` (e.g. the network/DNS stack not ready yet) or a missing\n 378|/// identity — the caller binds net-less and (REQ-DAEMON-9) retries.\n...\n 390|        relay,\n*391|        discovery: LocalDiscovery::Mdns,\n 392|        scope: BindScope::All, // production: real interfaces\n*393|        // Mesh-D2: enforce seed-proof on every dial + accept, reading the live\n 394|        // subnet store each connect.\n 395|        membership: Some(crate::seedproofx::production_membership()),\n 396|    };\n...\n 415|/// spawned here (restoration D2-1: they moved to the brain child, which starts\n*416|/// them when `net-status` reports the just-attached endpoint enabled).\n 417|// [impl->REQ-DAEMON-9]\n 418|fn net_retry_attach(broker: Arc<Broker>) {\n 419|    let mut backoff = NET_RETRY_FIRST;\n...\n 1560|            // `detached_no_inherit_falls_back_under_a_breakaway_denying_job`, and the\n*1561|            // real-terminal escape is an operator real-env acceptance step (a job\n 1562|            // that PERMITS breakaway, which cargo's runner job does not).\n 1563|            Err(e) if e.raw_os_error() == Some(5) => {\n 1564|                unsafe { CloseHandle(job) };\n...\n 1695|            // (iii) REQ-HAZARD-DAEMON-STOP-BARRIER conn-close discipline: stop the serve\n*1696|            // loop so this test does not leak its serve + accepted-conn handler threads\n 1697|            // (each parked in read_frame holding a seed pipe instance — the\n 1698|            // self-sustaining pin doyle's cdb found feeding the stop-barrier convoy).\n 1699|            let _ = crate::seedmap::request_stop(&name);\n\nShowing files 1-20 of 48+. Use skip=20 for the next page, or narrow paths/pattern."}],"details":{"scopePath":"spt-core/crates/spt-net/src, spt-core/crates/spt-daemon/src","searchPath":"C:\\Users\\decid\\Documents\\projects\\spt-core\\crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":184,"fileCount":20,"files":["spt-core/crates/spt-net/src/lib.rs","spt-core/crates/spt-net/src/net/endpoint.rs","spt-core/crates/spt-net/src/net/mesh/seedproof.rs","spt-core/crates/spt-net/src/net/pairing/meet.rs","spt-core/crates/spt-net/src/net/pairing/ntp.rs","spt-core/crates/spt-net/src/net/pairing/ratelimit.rs","spt-core/crates/spt-net/src/net/pairing/rendezvous.rs","spt-core/crates/spt-net/src/net/pairing/spake.rs","spt-core/crates/spt-net/src/net/pairing/totp.rs","spt-core/crates/spt-net/src/net/pairing/transcript.rs","spt-core/crates/spt-net/src/net/pairing/wire.rs","spt-core/crates/spt-net/src/net/registry.rs","spt-core/crates/spt-daemon/src/applyhost.rs","spt-core/crates/spt-daemon/src/autostart.rs","spt-core/crates/spt-daemon/src/brain.rs","spt-core/crates/spt-daemon/src/brainproc.rs","spt-core/crates/spt-daemon/src/broker.rs","spt-core/crates/spt-daemon/src/codec.rs","spt-core/crates/spt-daemon/src/conn.rs","spt-core/crates/spt-daemon/src/daemon.rs"],"fileMatches":[{"path":"spt-core/crates/spt-net/src/lib.rs","count":2},{"path":"spt-core/crates/spt-net/src/net/endpoint.rs","count":20},{"path":"spt-core/crates/spt-net/src/net/mesh/seedproof.rs","count":20},{"path":"spt-core/crates/spt-net/src/net/pairing/meet.rs","count":20},{"path":"spt-core/crates/spt-net/src/net/pairing/ntp.rs","count":4},{"path":"spt-core/crates/spt-net/src/net/pairing/ratelimit.rs","count":2},{"path":"spt-core/crates/spt-net/src/net/pairing/rendezvous.rs","count":1},{"path":"spt-core/crates/spt-net/src/net/pairing/spake.rs","count":2},{"path":"spt-core/crates/spt-net/src/net/pairing/totp.rs","count":12},{"path":"spt-core/crates/spt-net/src/net/pairing/transcript.rs","count":1},{"path":"spt-core/crates/spt-net/src/net/pairing/wire.rs","count":20},{"path":"spt-core/crates/spt-net/src/net/registry.rs","count":5},{"path":"spt-core/crates/spt-daemon/src/applyhost.rs","count":4},{"path":"spt-core/crates/spt-daemon/src/autostart.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/brain.rs","count":20},{"path":"spt-core/crates/spt-daemon/src/brainproc.rs","count":20},{"path":"spt-core/crates/spt-daemon/src/broker.rs","count":20},{"path":"spt-core/crates/spt-daemon/src/codec.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/conn.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/daemon.rs","count":8}],"truncated":true,"fileLimitReached":20,"perFileLimitReached":20,"displayContent":"# spt-core/crates/\n\n## spt-net/src/\n### lib.rs\n  6│//! endpoint (WAN, with the n0-relay default + a self-host knob — ADR-0002), mDNS\n *7│//! LAN discovery, TOTP-seeded SPAKE2 pairing (ADR-0005), the eventually-consistent\n  8│//! per-subnet registry (ADR-0006), the subnet notification spool (ADR-0007),\n  9│//! cross-node Psyche sync (ADR-0003 + KNOWN-HAZARDS 6.5), and the update\n 10│//! peer-propagation transport plugged into the M3c update-engine seam (ADR-0004 §D).\n   │...\n 31│//!   D0  scaffold + `net` feature flag                         ← this commit\n*32│//!   D1  Iroh endpoint + n0 relay/self-host + mDNS discovery    (REQ-NET-1, REQ-NET-2)\n 33│//!   D2  TOTP-SPAKE2 pairing + transcript/seed-epoch/rate-limit (REQ-PAIR-1..6)\n 34│//!   D3  per-subnet registry + epoch-lease resolution           (REQ-INST-7,9..13)\n 35│//!   D4  broker-owned QUIC endpoint (ADR-0004 §B)               (REQ-EP-4 seam)\n\n### net/\n#### endpoint.rs\n  22│use iroh::endpoint::{presets, IdleTimeout, Incoming, PortmapperConfig, QuicTransportConfig};\n *23│use iroh::{Endpoint, EndpointId, RelayMap, RelayMode, SecretKey};\n  24│use spt_proto::identity::{Identity, PublicKey};\n  25│\n  26│// Re-exported for the daemon (D4): the broker holds live QUIC connections +\n    │...\n  79│/// Where this endpoint looks for relay assistance (ADR-0002). Maps onto iroh's\n *80│/// [`RelayMode`]; the default ([`RelayPolicy::N0Default`]) is the zero-config path.\n  81│// [impl->REQ-NET-2]\n  82│#[derive(Debug, Clone)]\n  83│pub enum RelayPolicy {\n    │...\n  92│\n *93│/// Whether the endpoint also runs **mDNS** LAN discovery on top of the preset's n0\n *94│/// DNS discovery. With mDNS on, a node advertises itself and resolves peers by id\n  95│/// alone on the local network, so two machines on the same LAN find each other with\n  96│/// no ticket exchange and no relay round-trip ([`NetEndpoint::connect_by_id`]).\n  97│// [impl->REQ-NET-1]\n    │...\n  99│pub enum LocalDiscovery {\n*100│    /// Advertise + resolve over mDNS (swarm-discovery) in addition to n0 DNS.\n 101│    Mdns,\n*102│    /// No mDNS — WAN discovery only (and direct addresses). Used by hermetic tests.\n 103│    Off,\n 104│}\n 105│\n    │...\n 121│    /// a static `ip:port` ticket (firewall allow-rules, the two-host rig's\n*122│    /// env-derived peer addresses) with no relay/discovery infrastructure.\n 123│    Port(u16),\n 124│}\n 125│\n    │...\n 150│/// (e.g. IPv6 whose AAAA resolves but whose path is dead) silently burns\n*151│/// discovery/connect time on every attempt. We probe each family once at bind and\n 152│/// drop the *dead* one — never a fixed \"prefer IPv4\" (an IPv6-only network must\n 153│/// still work).\n 154│#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n    │...\n 284│        relay: RelayPolicy,\n*285│        discovery: LocalDiscovery,\n 286│    ) -> Result<NetEndpoint, NetError> {\n*287│        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\n 288│    }\n 289│\n 290│    /// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].\n    │...\n 293│    /// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) — the pre-trust\n*294│    /// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`\n*295│    /// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to\n 296│    /// [`bind`](Self::bind).\n 297│    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n*298│    pub async fn bind_with_alpns(\n 299│        identity: &Identity,\n 300│        relay: RelayPolicy,\n*301│        discovery: LocalDiscovery,\n*302│        alpns: Vec<Vec<u8>>,\n 303│    ) -> Result<NetEndpoint, NetError> {\n*304│        Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await\n 305│    }\n 306│\n*307│    /// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an\n 308│    /// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the\n 309│    /// endpoint never listens on a real interface (and never triggers a Windows\n 310│    /// firewall prompt per test binary); everything else delegates here with\n    │...\n 315│        relay: RelayPolicy,\n*316│        discovery: LocalDiscovery,\n*317│        alpns: Vec<Vec<u8>>,\n 318│        scope: BindScope,\n 319│    ) -> Result<NetEndpoint, NetError> {\n 320│        // iroh and spt-proto both build the ed25519 keypair from the same 32-byte\n    │...\n 322│        let secret = SecretKey::from_bytes(&identity.seed());\n*323│        let builder = Endpoint::builder(presets::N0)\n 324│            .secret_key(secret)\n#### registry.rs\n  561│/// resolver uses ([`SubnetRegistry::resolve_visible`]), so a hidden endpoint\n *562│/// never appears — discovery leaks nothing a viewer couldn't reach\n  563│/// (ADR-0006 §6, exclusion by construction). Unroutable (`Offline`) rows are\n  564│/// skipped too: a dead instance serves nothing, so it is not a resource.\n  565│// [impl->REQ-INST-14]\n     │...\n 1316│\n*1317│    // [unit->REQ-HAZARD-REGISTRY-GHOST-ROWS] THE field bug (M7 acceptance,\n 1318│    // 2026-06-06): a dead node identity's row makes a bare id refuse with a\n 1319│    // phantom AcrossNodes ambiguity the user cannot qualify past (the node no\n 1320│    // longer exists). Eviction removes the dead node's rows — bare resolution\n     │...\n 1704│\n*1705│    // [unit->REQ-SUBNET-3] `@node` qualifiers accept a label or key-prefix\n 1706│    // (case-insensitive), not just the full hex; a qualifier matching several\n 1707│    // distinct nodes refuses with paste-able candidate key prefixes —\n 1708│    // machines sharing a hostname are never guessed between.\n 1709│    #[test]\n*1710│    fn node_qualifier_accepts_label_and_prefix_refuses_shared() {\n 1711│        let labeled = |node: &str, label: &str| Instance {\n 1712│            node_label: Some(label.to_string()),\n 1713│            machine_id: None,\n     │...\n 1816│    // [unit->REQ-INST-14] the projection is the yellow-pages view over\n*1817│    // VISIBLE rows only: a hidden endpoint never appears (discovery leaks\n 1818│    // nothing resolution would refuse), an Offline row is not a resource,\n 1819│    // and an absent blurb renders clean (None, not an error).\n 1820│    #[test]\n\n#### mesh/\n##### seedproof.rs\n  92│/// Which side of the connection a party plays. The **dialer** opened the\n *93│/// connection; the **acceptor** received it. Bound into the tag so the dialer's\n *94│/// proof can never be replayed as the acceptor's (reflection defense) — exactly\n  95│/// the role pinning [`crate::net::pairing::transcript::Role`] uses.\n  96│#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n  97│pub enum ProofRole {\n    │...\n  99│    Dialer,\n*100│    /// The node that accepted the connection.\n 101│    Acceptor,\n 102│}\n 103│\n    │...\n 107│            ProofRole::Dialer => b\"dialer\",\n*108│            ProofRole::Acceptor => b\"acceptor\",\n 109│        }\n 110│    }\n 111│}\n    │...\n 128│    pub dialer_pub: PublicKey,\n*129│    /// The acceptor's handshake-proven Ed25519 public key (channel binding).\n*130│    pub acceptor_pub: PublicKey,\n 131│    /// The dialer's per-connection challenge nonce (freshness).\n 132│    pub dialer_nonce: [u8; NONCE_LEN],\n*133│    /// The acceptor's per-connection challenge nonce (freshness).\n*134│    pub acceptor_nonce: [u8; NONCE_LEN],\n 135│}\n 136│\n 137│impl SeedProofTranscript {\n    │...\n 144│        let mut mac = HmacSha256::new_from_slice(mk.key_bytes())\n*145│            .expect(\"HMAC accepts any key length\");\n 146│        mac.update(PROOF_DOMAIN);\n 147│        mac.update(prover.label());\n 148│        // subnet_id is variable-length → length-prefix it. The rest are\n    │...\n 153│        mac.update(&self.dialer_pub.to_bytes());\n*154│        mac.update(&self.acceptor_pub.to_bytes());\n 155│        mac.update(&self.dialer_nonce);\n*156│        mac.update(&self.acceptor_nonce);\n 157│        mac.finalize().into_bytes().into()\n 158│    }\n 159│\n    │...\n 171│/// Mesh-D2 drives the exchange with [`Hello`](SeedProofFrame::Hello) (a party's\n*172│/// nonce **plus** the subnet names it offers — the acceptor replies with the\n 173│/// intersection only) followed by one [`Proof`](SeedProofFrame::Proof) per shared\n 174│/// subnet. [`Challenge`](SeedProofFrame::Challenge) is the D1 nonce-only opener,\n 175│/// retained for the codec's stability tests; `Hello` subsumes it on the wire.\n    │...\n 188│    /// A party's per-connection nonce together with the subnet names it offers.\n*189│    /// The dialer sends its full local list; the acceptor replies with only the\n 190│    /// intersection (minimizing name disclosure). The proven set is established\n 191│    /// by the per-subnet [`Proof`](SeedProofFrame::Proof)s that follow.\n 192│    Hello {\n    │...\n 194│        nonce: [u8; NONCE_LEN],\n*195│        /// Offered subnet names (dialer: local set; acceptor: intersection).\n 196│        subnets: Vec<String>,\n 197│    },\n 198│    /// A party's seed-proof tags for **one subnet**, one per generation it\n    │...\n 369│            dialer_pub: d,\n*370│            acceptor_pub: a,\n 371│            dialer_nonce: [7u8; NONCE_LEN],\n*372│            acceptor_nonce: [9u8; NONCE_LEN],\n 373│        }\n 374│    }\n 375│\n    │...\n 412│    // [unit->REQ-MESH-1] a matching MK + transcript verifies, and the two role\n*413│    // tags differ so the dialer's proof can't be replayed as the acceptor's.\n 414│    #[test]\n 415│    fn valid_proof_verifies_and_roles_differ() {\n 416│        let mk = MembershipKey::derive(SEED, \"home\", 1);\n    │...\n 422│        assert!(t.verify(&mk, ProofRole::Acceptor, &a));\n*423│        // No reflection: an acceptor tag must not verify as a dialer tag.\n 424│        assert!(!t.verify(&mk, ProofRole::Dialer, &a));\n 425│    }\n 426│\n    │...\n 475│            SeedProofTranscript {\n*476│                acceptor_pub: other_pub,\n 477│                ..base.clone()\n 478│            },\n 479│            SeedProofTranscript {\n    │...\n 483│            SeedProofTranscript {\n*484│                acceptor_nonce: [0xCDu8; NONCE_LEN],\n 485│                ..base.clone()\n 486│            },\n 487│        ];\n\n#### pairing/\n##### meet.rs\n  25│//! close, and would pin an ephemeral key as the peer's durable name. So the\n *26│//! meet endpoint serves **discovery only**: the joiner asks, the responder\n  27│//! answers with its real [`EndpointAddr`] (one tiny length-prefixed frame on a\n  28│//! dedicated pre-trust ALPN, [`SPT_PAIR_MEET_ALPN`]), and the joiner re-dials\n  29│//! the real endpoint over [`SPT_PAIR_ALPN`](super::wire::SPT_PAIR_ALPN) where\n    │...\n  31│//!\n *32│//! ## Security posture (token gates discovery, PAKE gates trust)\n  33│//!\n  34│//! Anyone who knows the subnet name and the current code window can derive the\n  35│//! meet keypair, impersonate the listener, and hand the joiner any address —\n    │...\n  94│/// same keypair (and therefore the *public* id it dials); the keypair gates\n *95│/// nothing but discovery (module docs).\n  96│// [impl->REQ-PAIR-5]\n  97│pub fn rendezvous_identity(token: &[u8; 32]) -> Identity {\n  98│    let mut h = Sha256::new();\n    │...\n 119│/// Bind the meet listener for `(subnet_name, totp_step)` under the derived\n*120│/// identity. The relay/discovery/scope knobs mirror\n 121│/// [`NetEndpoint::bind_scoped`]; production passes the node's configured\n 122│/// [`RelayPolicy`] so the derived id is relay-reachable (and n0-DNS\n 123│/// resolvable) by a joiner that knows nothing but the two user inputs.\n    │...\n 128│    relay: RelayPolicy,\n*129│    discovery: LocalDiscovery,\n 130│    scope: BindScope,\n 131│) -> Result<RendezvousListener, NetError> {\n 132│    let id = rendezvous_identity(&rendezvous_token(subnet_name, totp_step));\n    │...\n 135│        relay,\n*136│        discovery,\n 137│        vec![SPT_PAIR_MEET_ALPN.to_vec()],\n 138│        scope,\n 139│    )\n    │...\n 149│\n*150│    /// Serve one meet request: accept a connection, accept its bidi stream,\n 151│    /// and answer with `real_addr` — the responder's REAL pairing endpoint\n 152│    /// address the joiner re-dials for the unchanged ceremony. Returns when\n 153│    /// one reply has been flushed; the daemon's pairing-window loop calls this\n    │...\n 158│            .ep\n*159│            .accept()\n 160│            .await\n 161│            .ok_or_else(|| MeetError::Net(NetError::Bind(\"meet endpoint closed\".into())))?;\n 162│        let conn = incoming\n*163│            .accept()\n*164│            .map_err(|e| MeetError::Protocol(format!(\"accept: {e}\")))?\n 165│            .await\n 166│            .map_err(|e| MeetError::Protocol(format!(\"connecting: {e}\")))?;\n 167│        let (mut send, mut recv) = conn\n*168│            .accept_bi()\n 169│            .await\n*170│            .map_err(|e| MeetError::Protocol(format!(\"accept_bi: {e}\")))?;\n 171│        // Drain the joiner's probe byte (the dialer must write first for\n*172│        // accept_bi to fire); content is irrelevant.\n 173│        let _ = recv\n 174│            .read_to_end(MAX_MEET_FRAME)\n 175│            .await\n    │...\n 193│/// [`dial_via_rendezvous`]; this explicit-address form is the seam for\n*194│/// hermetic tests and static-`ip:port` rigs where no relay/discovery exists.\n 195│// [impl->REQ-PAIR-5]\n 196│pub async fn meet_at(\n 197│    dialer: &NetEndpoint,\n    │...\n 237│/// connect timeout. Found live in the first real two-machine join (M7\n*238│/// acceptance): the sequential, unbounded walk burned the live window\n 239│/// dialing the dead one's ghost, every attempt.\n 240│const MEET_PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_secs(7);\n 241│\n    │...\n 329│\n*330│    /// Bind a hermetic (loopback, no relay/discovery) endpoint on `alpns`.\n*331│    async fn hermetic(id: &Identity, alpns: Vec<Vec<u8>>) -> NetEndpoint {\n 332│        NetEndpoint::bind_scoped(\n 333│            id,\n 334│            RelayPolicy::Disabled,\n 335│            LocalDiscovery::Off,\n*336│            alpns,\n 337│            BindScope::Loopback,\n 338│        )\n 339│        .await\n    │...\n 343│    /// The meet listener's derived-id address with its loopback sockets\n*344│    /// attached — what relay/discovery resolution would produce, built\n 345│    /// explicitly because the hermetic test has neither. The id in the addr\n 346│    /// is RE-DERIVED from (name, step), not copied from the listener, so the\n 347│    /// dial proves the listener really holds the token-derived key (TLS\n    │...\n 365│    // receives the responder's REAL address, and lands a ceremony-ALPN\n*366│    // connection on the real endpoint — discovery via token, ceremony surface\n 367│    // unchanged.\n 368│    #[tokio::test]\n 369│    async fn meet_redirects_joiner_to_the_real_pairing_endpoint() {\n##### ntp.rs\n  92│/// hermeticity switch — see [`ENABLED`]). Disabled ⇒ pure system clock.\n *93│pub fn set_enabled(enabled: bool) {\n *94│    ENABLED.store(enabled, std::sync::atomic::Ordering::Relaxed);\n  95│}\n  96│\n  97│/// The ceremony clock (unix seconds): the system clock corrected by the\n    │...\n 303│fn query_one_addr(addr: SocketAddr, timeout: Duration) -> Option<u64> {\n*304│    let bind_addr = match addr {\n 305│        SocketAddr::V4(_) => SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), 0),\n 306│        SocketAddr::V6(_) => SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), 0),\n 307│    };\n*308│    let socket = UdpSocket::bind(bind_addr).ok()?;\n 309│    socket.set_read_timeout(Some(timeout)).ok()?;\n 310│    socket.set_write_timeout(Some(timeout)).ok()?;\n 311│    let mut packet = [0u8; 48];\n##### ratelimit.rs\n  8│//! ceremonies cannot be run in parallel or in a tight loop. A public pre-trust relay\n *9│//! lets any peer reach a seed-holder, and the [±1 window](super::totp::accepts_step)\n 10│//! widens the valid-code set from 1 to 3 of `10^6` (~21 bits → ~19). With no gate an\n 11│//! attacker drives back-to-back ceremonies (and, across multiple seed-holders, in\n 12│//! parallel) to brute the rotating code inside its 30s life. The required mitigation:\n   │...\n 30│//! *local* gate each seed-holder runs. Backoff is ephemeral — a process restart resets\n*31│//! it — which is acceptable because restarting a seed-holder is not remotely\n 32│//! attacker-driven (unlike the relay-reachable ceremony surface itself).\n 33│//\n 34│// [impl->REQ-HAZARD-PAIR-RATE-LIMIT]\n##### rendezvous.rs\n 1│//! Pre-trust pairing **rendezvous token** derivation (ADR-0006; `CONTEXT.md` \"link\n*2│//! discovery (TOTP + name)\", D2f, REQ-PAIR-5).\n 3│//!\n 4│//! Two not-yet-trusted nodes that don't know each other's node id must still *meet* at\n 5│//! the relay to run the ceremony. They meet on a shared **rendezvous token** both can\n##### spake.rs\n 151│    /// transcript's step (the caller enforces the ±1 window via\n*152│    /// [`accepts_step`](super::totp::accepts_step) before constructing the transcript).\n 153│    // [impl->REQ-PAIR-1] [impl->REQ-HAZARD-PAIR-TRANSCRIPT-BIND]\n 154│    pub fn respond(\n 155│        transcript: PairingTranscript,\n    │...\n 328│    // the PAKE but substitutes its own pubkey into its transcript cannot produce a tag\n*329│    // the honest side accepts, because both pubkeys are bound.\n 330│    #[test]\n 331│    fn substituted_pubkey_fails() {\n 332│        let (a, b, mallory) = (\n##### totp.rs\n  20│//!\n *21│//! Clock skew between the two pairing machines is absorbed by accepting the adjacent\n  22│//! steps — but the step is **bound into the transcript**, not folded into the\n  23│//! password (a changed step would change the password *and* the transcript, so a\n  24│//! windowed retry can't work password-side). The dialer announces its step in the\n  25│//! clear; both sides bind that exact value and reject `|Δstep| > 1`\n *26│//! ([`accepts_step`]). The ±1 widening of the valid-password space is the reason the\n  27│//! ceremony also needs subnet-global rate limiting (D2d, #11).\n  28│//\n  29│// [impl->REQ-PAIR-1]\n    │...\n 103│    pub fn code_at_step(&self, step: u64, digits: u32) -> u32 {\n*104│        let mut mac = HmacSha1::new_from_slice(&self.0).expect(\"HMAC accepts any key length\");\n 105│        mac.update(&step.to_be_bytes());\n 106│        let hash = mac.finalize().into_bytes();\n 107│        // Dynamic truncation (RFC 4226 §5.3): low nibble of the last byte selects a\n    │...\n 154│\n*155│/// The ±1 acceptance window around a step: `[step-1, step, step+1]` (saturating at 0).\n 156│/// A pairing peer's announced step must be one of these relative to the local step.\n 157│pub fn window_steps(step: u64) -> [u64; 3] {\n 158│    [step.saturating_sub(1), step, step + 1]\n    │...\n 163│/// triples the valid-password space.\n*164│pub fn accepts_step(local_step: u64, peer_step: u64) -> bool {\n 165│    local_step.abs_diff(peer_step) <= 1\n 166│}\n 167│\n    │...\n 241│\n*242│    // [unit->REQ-PAIR-1] the ±1 window accepts exactly the adjacent steps and\n 243│    // rejects a 2-step skew — the clock-tolerance the dialer/listener agree on,\n 244│    // and the widening that mandates rate-limiting (#11).\n 245│    #[test]\n*246│    fn window_accepts_plus_minus_one_only() {\n 247│        assert_eq!(window_steps(10), [9, 10, 11]);\n 248│        assert_eq!(window_steps(0), [0, 0, 1], \"saturates at zero\");\n*249│        assert!(accepts_step(10, 10));\n*250│        assert!(accepts_step(10, 9));\n*251│        assert!(accepts_step(10, 11));\n*252│        assert!(!accepts_step(10, 12), \"two steps out is rejected\");\n*253│        assert!(!accepts_step(10, 8));\n 254│    }\n 255│\n 256│    // [unit->REQ-PAIR-1] a generated seed round-trips through base32 (the otpauth\n##### transcript.rs\n 120│    ) -> [u8; TAG_LEN] {\n*121│        let mut mac = HmacSha256::new_from_slice(shared).expect(\"HMAC accepts any key length\");\n 122│        mac.update(CONFIRM_DOMAIN);\n 123│        mac.update(confirmer.label());\n 124│        // Length-prefix every variable field to prevent transcript-concatenation\n##### wire.rs\n   22│//! clock-derived TOTP step), the responder's [`Announce`](Frame::Announce) (the epoch,\n  *23│//! *after* it has admitted the ceremony and accepted the ±1 step), and only then the\n   24│//! four SPAKE messages. The TOTP **step** is dialer-announced and clock-derived\n   25│//! (`totp.rs`), so it needs no announce — only the seed epoch does.\n   26│//!\n     │...\n   53│use super::spake::{Initiator, PairError, Responder};\n  *54│use super::totp::{accepts_step, time_step, TotpSeed, DIGITS};\n   55│use super::transcript::{PairingTranscript, TAG_LEN};\n   56│\n   57│/// The pre-trust pairing ALPN. Distinct from the trusted\n     │...\n  159│\n *160│/// Run the **responder** (seed-holder) side of the ceremony over an accepted connection.\n  161│///\n  162│/// `local_pub` is this node's own pubkey (the iroh endpoint id); `subnets` supplies the\n  163│/// seed + epoch for the named subnet; `rate` is the subnet-global admission gate. `now`\n     │...\n  181│    let (mut send, mut recv) = conn\n *182│        .accept_bi()\n  183│        .await\n *184│        .map_err(|e| PairWireError::Io(format!(\"accept_bi: {e}\")))?;\n  185│    let initiator_pub = remote_pub(conn)?;\n  186│\n  187│    // F1: Hello — the joiner's subnet name + clock-derived TOTP step (+ its\n     │...\n  281│    // ±1 clock-skew window on the dialer-announced step.\n *282│    if !accepts_step(time_step(p.now), p.peer_step) {\n  283│        abort(send, A_BAD_STEP, 0).await?;\n  284│        return Err(PairWireError::StepRejected);\n  285│    }\n     │...\n  371│/// just after binds to the wrong step and fails as \"wrong code\" — the ±1\n *372│/// responder window ([`accepts_step`](super::totp)) tolerates an announced\n  373│/// `step-1`, letting the caller retry the SAME typed code against the\n  374│/// previous step before re-prompting the user (the late-code retry, field\n  375│/// report 2026-06-06).\n     │...\n  395│\n *396│    // F1: Hello — opens the stream (the dialer must write first for accept_bi\n  397│    // to fire). Carries the optional self-intro (M8 decision 13).\n  398│    write_frame(&mut send, &enc_hello(subnet_name, step, intro)).await?;\n  399│\n     │...\n  981│\n *982│        // Responder task: accept, run the ceremony, return its outcome.\n  983│        let resp_task = tokio::spawn(async move {\n *984│            let incoming = responder.accept().await.expect(\"incoming\");\n  985│            let conn = incoming\n *986│                .accept()\n *987│                .expect(\"accept\")\n  988│                .await\n  989│                .expect(\"connecting\");\n  990│            let subnets = subnet_store(\"home\", seed, 3);\n     │...\n 1063│        let resp_task = tokio::spawn(async move {\n*1064│            let incoming = responder.accept().await.expect(\"incoming\");\n 1065│            let conn = incoming\n*1066│                .accept()\n*1067│                .expect(\"accept\")\n 1068│                .await\n 1069│                .expect(\"connecting\");\n 1070│            let subnets = subnet_store(\"home\", seed, 1);\n     │...\n 1133│        let resp_task = tokio::spawn(async move {\n*1134│            let incoming = responder.accept().await.expect(\"incoming\");\n 1135│            let conn = incoming\n*1136│                .accept()\n*1137│                .expect(\"accept\")\n 1138│                .await\n 1139│                .expect(\"connecting\");\n 1140│            let subnets = subnet_store(\"home\", seed, 1);\n     │...\n 1195│        let resp_task = tokio::spawn(async move {\n*1196│            let incoming = responder.accept().await.expect(\"incoming\");\n 1197│            let conn = incoming\n*1198│                .accept()\n\n## spt-daemon/src/\n### applyhost.rs\n  469│    /// that gracefully [`Broker::stop`]s + JOINS the serve thread on drop (C1). Without\n *470│    /// it every test broker leaked its serve thread + all accepted-conn handler threads\n  471│    /// — the load population that starved the seed stop barrier under full-suite load.\n  472│    /// Derefs to `Arc<Broker>` so callers use it exactly like the bare Arc they held before.\n  473│    struct ServedBroker {\n     │...\n  773│    // it on `KIND_BRAIN_RESTART` and acks `honored: true`; a bare broker (no\n *774│    // supervisor — the test/no-daemon shape) accepts the verb but acks\n  775│    // `honored: false`. This is the broker half of the apply trigger that\n  776│    // replaces the in-process handoff.\n  777│    #[test]\n     │...\n  781│\n *782│        // No signal wired: accepted, not honored.\n  783│        let mut b = cold_connect_retry(&name);\n  784│        assert!(\n  785│            !b.request_brain_restart().expect(\"verb round-trips\"),\n     │...\n 1004│\n*1005│    // [unit->REQ-UPD-6] Broker-touching debug/update-set payloads are accepted\n 1006│    // as staged candidates, but apply refuses them typed while the broker-held\n 1007│    // runtime is live. The first broker-touching flow is refusal-only; it does\n 1008│    // not auto-suspend or cycle hosted work.\n### autostart.rs\n 22│/// replay thread starts alongside the broker's serve thread, so the very first\n*23│/// connect can race the accept loop up. Bounded and short: a genuine launch\n 24│/// failure (dead adapter binary, bad template) fails again instantly and we\n 25│/// move on after the last attempt.\n 26│const LAUNCH_ATTEMPTS: u32 = 3;\n### brain.rs\n   17│//!   output sequence it still needs. On handoff it `subscribe`s from that cursor;\n  *18│//!   the broker replays buffered output from there. [`Brain::read_event`] accepts\n   19│//!   only the contiguous next `seq` (advancing the cursor), silently drops an\n   20│//!   already-seen `seq` (a replay duplicate), and treats a forward gap as a hard\n   21│//!   error — so a lost chunk can never pass silently.\n     │...\n  140│    NetDialed(NetDialed),\n *141│    /// A NON-BLOCKING dial submit was accepted and its concurrent dial spawned\n  142│    /// (PUMP-TRUTH W2, REQ-PUMP-PEER-ISOLATION) — the bare ack for\n  143│    /// [`Brain::submit_dial`]. The dial's real outcome rides the presence stream\n  144│    /// ([`Self::NetPresence`]), not this frame.\n     │...\n  271│    /// `next_seq`, set by [`Brain::net_stream_subscribe`] and advanced by\n *272│    /// [`Brain::read_event`] under the same accept/dedup/gap discipline.\n  273│    /// Durability across a handoff is the logic layer's job (a re-attaching\n  274│    /// brain queries `net-streams` and re-subscribes from its durable cursors).\n  275│    net_cursors: std::collections::HashMap<u64, u64>,\n     │...\n  277│    /// `net_cursors`, set by [`Brain::net_presence_subscribe`] and advanced by\n *278│    /// [`Brain::read_event`] under the same accept/dedup/gap discipline.\n  279│    /// `None` until subscribed (or the first event arrives).\n  280│    presence_cursor: Option<u64>,\n  281│    /// Per-session **resume** output cursors (restoration D4-2): the multi-session\n     │...\n  286│    /// at the broker's `resume_seq`): drop `seq < cursor` (the at-least-once\n *287│    /// boundary re-send) and accept-and-snap `seq >= cursor` (the contiguous case\n  288│    /// *and* a post-eviction ring-floor jump — the broker's `Mutex`-held replay\n  289│    /// cannot reorder, so a forward jump is only ever a legitimate eviction clamp,\n  290│    /// never a real gap). A session **absent** here uses the strict single-session\n     │...\n  305│    /// When `true`, the strict legacy `next_seq` path adopts that first frame's seq\n *306│    /// as the baseline (accept-and-seed) instead of reject-gapping it, then reverts\n  307│    /// to strict reject-gap for every subsequent LIVE frame (so a b4 drop still\n  308│    /// re-fetches — B2 live exactly-once preserved). Only ever consulted on the\n  309│    /// legacy single-session path; a resume-mode brain (snap-above) ignores it. A\n     │...\n  603│    /// Read and demux one broker event, enforcing exactly-once contiguous output:\n *604│    /// accept the next `seq` (advancing the cursor), drop an already-seen `seq`\n  605│    /// (replay duplicate), and reject a forward gap (lost chunk).\n  606│    /// The deadline for ONE IPC call: `now + io_timeout`, computed at call\n  607│    /// entry (a whole `loop { read_event }` shares it, so unrelated events\n     │...\n  654│                    // already-delivered seq (the at-least-once boundary re-send),\n *655│                    // accept-and-snap everything `>= cursor` (the contiguous case\n  656│                    // AND a post-eviction ring-floor jump, which the broker's\n  657│                    // non-reordering replay makes the only legitimate forward jump).\n  658│                    if !self.session_cursors.is_empty() {\n     │...\n  672│                    // Legacy single-session path (map empty — a pure spawn/drive\n *673│                    // seat): strict accept-next / drop-dup / reject-gap on the one\n  674│                    // `next_seq` cursor, byte-for-byte unchanged.\n  675│                    //\n  676│                    // #6 (ADR-0031): a COLD attach's FIRST output frame is a\n     │...\n  810│                    // Same exactly-once discipline as PTY output, per stream:\n *811│                    // accept the contiguous next seq, drop a replay duplicate,\n  812│                    // reject a forward gap (a lost chunk must not pass silently).\n  813│                    let cursor = self.net_cursors.entry(ev.stream_id).or_insert(ev.seq);\n  814│                    if ev.seq < *cursor {\n     │...\n  846│                    // Same exactly-once discipline as stream reads (D4c):\n *847│                    // accept the contiguous next seq, drop a replay duplicate,\n  848│                    // reject a forward gap (a lost liveness event must not\n  849│                    // pass silently — a phantom \"still connected\" peer would).\n  850│                    // [impl->REQ-EP-4]\n     │...\n  934│        // `broker.next_seq - 1` as its first frame; baseline the strict cursor on it\n *935│        // (accept-then-strict). A resume-from-floor re-fetch (`from_seq > 0`) leaves\n  936│        // this false → raw-ring replay + strict reject-gap unchanged (B2).\n  937│        self.baseline_next_output = from_seq == 0;\n  938│        self.subscribe_with(session_id, from_seq, intent, by.map(str::to_string))\n     │...\n  953│    /// arm the snap-above dedup path (`session_cursors` non-empty) seeded at 0,\n *954│    /// which accepts the jump and snaps. VIEWER-only → B2-safe (a viewer never\n  955│    /// advances `delivered_through` / is not authoritative). The subscribe is sent\n  956│    /// FIRST (a cold brain's empty-map skips `subscribe_with`'s `from_seq` reset),\n  957│    /// THEN the cursor is armed, so neither path stamps `MAX`.\n     │...\n 1015│    /// so [`Brain::read_event`] dedups the broker's at-least-once boundary re-send\n*1016│    /// and accepts a post-eviction ring-floor jump (no reject-gap). Output is\n 1017│    /// at-least-once; input/effects stay exactly-once via the broker-owned\n 1018│    /// `EffectJournal`. The generation is **not** touched — this is a cold start\n 1019│    /// (generation custody is the broker's, ADR-0018 V2), not a `handoff`.\n     │...\n 1036│    /// is exactly such a non-draining consumer (its `run_brain` heartbeat reads this conn\n*1037│    /// only in `net_status()`/`sessions()` drain-and-discard loops; it drives no PTY\n 1038│    /// session — brainproc.rs:184 — and nothing on its side consumes the output, §3\n 1039│    /// guard), so it MUST call [`Self::resume_session_cursors`] (cursor-only, NO\n 1040│    /// subscribe) instead. This subscribing method stays for a DRAINING caller (the\n     │...\n 1111│    /// Query the broker-owned net endpoint's status (D4a): node id, dialable\n*1112│    /// address, conn count — or `enabled: false` on a net-less broker. Reads\n 1113│    /// until the reply (consuming interleaved events like [`Brain::spawn_session`]).\n 1114│    // [impl->REQ-DAEMON-2]\n*1115│    pub fn net_status(&mut self) -> io::Result<NetStatusReply> {\n 1116│        self.send(KIND_NET_STATUS, serde_json::Value::Null)?;\n 1117│        loop {\n 1118│            match self.read_event()? {\n     │...\n 1452│    /// Returns `honored`: whether the broker had a supervisor wired (false on a\n*1453│    /// bare broker with no supervisor, e.g. a test broker — the verb is accepted\n 1454│    /// but nothing respawns). An older broker that predates the verb answers with\n 1455│    /// an error (KH-2.3 forward-compat: surfaced, never a silent no-op of a\n 1456│    /// swapped binary). Readiness-gated promotion / auto-rollback is D6.\n     │...\n 1852│\n*1853│        let mut server = listener.accept().expect(\"accept the brain\");\n 1854│        crate::transport::recv_hello(&mut server, Role::Brain).expect(\"stub recv_hello\");\n 1855│        let brain = brain_handle.join().expect(\"brain thread\");\n 1856│\n     │...\n 1880│    /// CONTROL — a COLD brain (it never skipped-to-live) keeps the strict legacy\n*1881│    /// `next_seq` reject-gap dedup: it accepts the contiguous seq 0, then REJECTS a\n 1882│    /// forward jump as an `output gap`. This is the behavior `attach_skip_to_live`\n 1883│    /// must FLIP — proving the next test isn't vacuously green.\n 1884│    ///\n### brainproc.rs\n  150│/// existing `net-status` verb (which also serves as the broker-liveness probe)\n *151│/// and start them exactly once, on the first `enabled` reply. That single gate\n  152│/// also covers the boot-race self-heal (REQ-DAEMON-9): the broker retries the\n *153│/// NetHost bind in the background and `net-status` flips `enabled` when it\n  154│/// attaches, at which point the brain starts the consumers — no extra signal.\n  155│///\n  156│/// It inherits the broker's already-unelevated token as a plain child, so it\n     │...\n  193│    // doyle Option A-split): the supervised daemon brain is a NON-DRAINING consumer of\n *194│    // this conn (the heartbeat below reads it only in net_status()/sessions()\n  195│    // drain-and-discard loops), so it MUST NOT subscribe — an undrained subscription on\n  196│    // this request/reply conn is the SharedSend self-deadlock that re-wedged v0.30.4\n  197│    // (brain.rs resume_sessions deadlock warning). `resume_session_cursors` re-establishes\n     │...\n  216│    // promotes the trial binary on this stamp; promoting on a bare post-connect\n *217│    // breadcrumb would accept a brain that connected but never rebuilt\n  218│    // continuity. Today resume is a near-noop (no daemon-hosted sessions), so\n  219│    // this is forward-correct: the gate is defined on the real readiness\n  220│    // semantic the live-agent adapter inherits.\n     │...\n  253│        // snapshot+self-exit, Q3) — exit for a supervised respawn.\n *254│        let status = match brain.net_status() {\n  255│            Ok(s) => s,\n  256│            Err(e) => {\n  257│                eprintln!(\"BRAIN_BROKER_LOST: {e} — exiting for supervised respawn\");\n     │...\n  260│        };\n *261│        if consumer_gate(status.enabled, consumers_started) {\n  262│            let hex = status.node_id_hex.clone().unwrap_or_default();\n  263│            spawn_net_consumers(&hex);\n  264│            consumers_started = true;\n  265│            eprintln!(\n *266│                \"BRAIN_NET_CONSUMERS_UP: net enabled (node {hex}) — dispatcher + peer pump started\"\n  267│            );\n  268│        }\n  269│        // DRIVE the broker's controller-liveness reap every heartbeat (UPDATE-WEDGE\n     │...\n  281│        // best-effort — a transient sessions error must never fell the heartbeat (the\n *282│        // net_status probe above already owns broker-liveness). Self-applies: it drives\n  283│        // the CURRENT (older) broker's already-shipped reap verb, so a new brain un-strands\n  284│        // its own trial against a live older broker — no coordinated broker restart.\n  285│        // [impl->REQ-UPDATE-TRIAL-DRAIN-DRIVE]\n     │...\n  291│/// Whether to spawn the net consumers this heartbeat: only once the broker\n *292│/// reports a net endpoint up (`net_enabled`) AND we have not already started\n  293│/// them. Pure for the unit table — the spawn-exactly-once + net-gating\n  294│/// semantics that keep a single dispatcher/peer-pump set running.\n  295│// [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n *296│fn consumer_gate(net_enabled: bool, already_started: bool) -> bool {\n *297│    net_enabled && !already_started\n  298│}\n  299│\n  300│/// Spawn the net consumers — the inbound dispatcher + the outbound peer pump\n     │...\n  449│    /// (relocated here from `apply`, where they were the optimistic enlyzeam\n *450│    /// write — promotion is the *real* moment the new code is accepted).\n  451│    fn record_promoted(&self, version: u64);\n  452│    /// Correct the record: the candidate failed readiness. Persist\n  453│    /// `RolledBack{…}` and fire the loud, resurfacing rollback notif.\n     │...\n  630│    /// The candidate stamped `brain.ready` for THIS generation within the\n *631│    /// window — the swap is accepted. The same child stays alive and falls\n  632│    /// through to normal supervision (a later crash is a normal respawn).\n  633│    Promoted,\n  634│    /// The candidate **exited before** signaling ready (a failed boot) — counts\n     │...\n  724│/// for it to stamp ready for ITS generation within `window`. It **promotes** on\n *725│/// ready (writes `Applied`, the candidate is now the accepted binary and a later\n  726│/// crash is a normal respawn); it **rolls back** to the last-known-good binary\n  727│/// on budget exhaustion — [`TRIAL_PREREADY_BUDGET`] consecutive pre-ready exits\n  728│/// **or** one alive-but-never-ready window-expiry (which **kills** the candidate\n     │...\n  757│    // Consecutive pre-ready exits of the CURRENT trial candidate (A8 budget K).\n *758│    // In-memory: a broker restart resets it — acceptable, the trial restarts.\n  759│    let mut pre_ready_exits: u32 = 0;\n  760│    while !stop.load(Ordering::Relaxed) {\n  761│        let started = Instant::now();\n     │...\n  821│                                }\n *822│                                eprintln!(\"BRAIN_PROMOTED: candidate v{version} signalled ready (generation {generation}) — swap accepted\");\n  823│                                env.record_promoted(version);\n  824│                            }\n  825│                            pre_ready_exits = 0;\n  826│                            backoff = base;\n *827│                            supervise = true; // keep supervising the now-accepted child\n  828│                        }\n  829│                        TrialStep::PreReadyExit => {\n  830│                            pre_ready_exits += 1;\n     │...\n  992│/// `binary` is the **record-driven selection** (D6-2): `None` spawns the\n *993│/// accepted / candidate binary (`canonical`, below), `Some(path)` spawns the\n  994│/// rollback binary (the `.old-N` last-known-good) — the supervisor chooses, no\n  995│/// file is renamed at the failure instant.\n  996│///\n     │...\n 1309│    /// The net-consumer gate (D2-1): the brain spawns the dispatcher + peer pump\n*1310│    /// exactly once, only after the broker reports net `enabled`. A net-less\n*1311│    /// broker (`enabled=false`) never spawns them; once started they are never\n 1312│    /// re-spawned (the `already_started` latch) — so a single consumer set runs,\n 1313│    /// no matter how many heartbeats poll `net-status`.\n 1314│    // [unit->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n### broker.rs\n    4│//! would lose continuity on if the logic restarted: the PTY master+writer and\n   *5│//! the spawned child (both via [`spt_term::PtySession`]), and the accepted\n    6│//! client / listening sockets. It runs **no logic** — no routing, registry,\n    7│//! manifest parse, or lifecycle. It is a relay: spawn a child under a PTY,\n    8│//! forward its output to the brain, inject the brain's input, report exit.\n     │...\n 1729│    /// True while the FIFO is saturated and input is being dropped; cleared on\n*1730│    /// the next accepted enqueue (heal-on-resume). Mirrored to the perch's\n 1731│    /// `input_backpressure` so the operator sees the drop.\n 1732│    backpressure: AtomicBool,\n 1733│    /// The owning endpoint (the spawn's label; empty = unlabeled / raw test) —\n     │...\n 1755│    /// Enqueue `bytes` for the PTY write thread — NON-BLOCKING. Returns `true`\n*1756│    /// when accepted (ordered, will land), `false` when the FIFO was full and the\n 1757│    /// record was DROPPED. A full queue stamps `INPUT_BACKPRESSURE` (once, on the\n*1758│    /// rising edge); the next accepted enqueue clears it (heal). The dispatch\n 1759│    /// thread never blocks here, however stuck the harness is.\n 1760│    // [impl->REQ-HAZARD-PTY-INPUT-WRITER-WEDGE]\n 1761│    fn enqueue(&self, bytes: InputRecord) -> bool {\n     │...\n 2270│    // (`spt_runtime::INJECT_ECHO_ENV_VARS`, F-036 env-inheritance class — an inherited\n*2271│    // dev-shell export once force-enabled echo-verify host-wide and a false miss RETYPED\n 2272│    // sequences into a live session's input). Only an explicit declaration (or an\n 2273│    // in-process test broker, which never runs the daemon entrypoints) reaches this read.\n 2274│    let echo_capable = std::env::var_os(\"SPT_INJECT_VERIFY_ECHO\").is_some()\n     │...\n 2519│    /// The namespaced listener name — held so [`Broker::stop`] can dial a throwaway\n*2520│    /// connection to unblock the blocked `accept()` in [`serve`](Self::serve) (there is\n*2521│    /// no other wakeup for the accept loop).\n 2522│    name: String,\n 2523│    /// Graceful-stop latch (C1, REQ-HAZARD-DAEMON-STOP-BARRIER teardown-hygiene):\n*2524│    /// [`serve`](Self::serve) checks it after each accept and returns. Without it\n*2525│    /// `serve` is an unstoppable accept loop, so a test (or any host) that stands a\n*2526│    /// broker up leaks the serve thread AND every accepted-conn handler thread at\n 2527│    /// teardown — the load population that starved the seed stop barrier.\n 2528│    stop: AtomicBool,\n 2529│    sessions: Arc<Mutex<HashMap<u64, HostedSession>>>,\n     │...\n 2543│    /// child onto a freshly-swapped binary. Empty on a bare broker (a test broker\n*2544│    /// with no supervisor) — the verb is then accepted but unhonored. Set once by\n 2545│    /// `Daemon::run` after it spawns the supervisor.\n 2546│    brain_restart: std::sync::OnceLock<Arc<crate::brainproc::BrainRestart>>,\n 2547│    /// Held meet results for the two-phase join (REQ-JOIN-TWO-PHASE): a\n     │...\n 2706│    /// once by `Daemon::run` after spawning the supervisor; idempotent by\n*2707│    /// `OnceLock` (the first wins). A broker without it accepts the verb but\n 2708│    /// reports `honored: false` (no supervisor to respawn the child).\n 2709│    // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n 2710│    pub fn set_brain_restart(&self, signal: Arc<crate::brainproc::BrainRestart>) -> bool {\n     │...\n 2742│        loop {\n*2743│            let conn = self.listener.accept()?;\n 2744│            // C1 graceful stop: [`Broker::stop`] raises the latch then dials the\n*2745│            // throwaway connection that woke this accept — observe it and return so the\n 2746│            // serve thread (and, with it, the listener) tears down instead of leaking.\n 2747│            if self.stop.load(Ordering::Acquire) {\n 2748│                return Ok(());\n     │...\n 2756│\n*2757│    /// Gracefully stop the [`serve`](Self::serve) accept loop: raise the latch, then\n*2758│    /// dial one throwaway connection so the blocked `accept()` wakes, observes the\n 2759│    /// latch, and returns (dropping the listener). Best-effort + idempotent — a second\n 2760│    /// call, or a call after the loop already exited, just fails the dial harmlessly.\n 2761│    /// Fills the honest gap that `serve` is otherwise unstoppable (the leaked-serve\n     │...\n 2771│    pub fn serve_once(self: &Arc<Self>) -> io::Result<JoinHandle<()>> {\n*2772│        let conn = self.listener.accept()?;\n 2773│        let me = Arc::clone(self);\n 2774│        Ok(thread::spawn(move || {\n 2775│            let _ = me.handle_conn(conn);\n     │...\n 2826│        };\n*2827│        let Ok(server) = listener.accept() else {\n 2828│            return false;\n 2829│        };\n 2830│        let (_recv, send_half) = server.split();\n     │...\n 3050│                }\n*3051│                KIND_NET_STATUS => self.dispatch_net_status(&send),\n 3052│                // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE]\n 3053│                KIND_BROKER_IMAGE => self.dispatch_broker_image(&send),\n 3054│                KIND_STALL_EVICTS => self.dispatch_stall_evicts(&send),\n     │...\n 3564│                        // PtyWrite is ephemeral, so Applied-at-enqueue is sound\n*3565│                        // (V0.13.0-P0 design); the ack means \"accepted + ordered + will\n 3566│                        // land,\" and rc does not gate on landing.\n 3567│                        if !buffered(&bytes) {\n 3568│                            input.enqueue(bytes.clone());\n### codec.rs\n 16│\n*17│/// Maximum framed message size accepted (16 MiB) — guards a garbage/hostile\n 18│/// length prefix from forcing a huge allocation. Matches `spt-msg::wire`.\n 19│const MAX_FRAME_BYTES: usize = 16 * 1024 * 1024;\n 20│\n### conn.rs\n 698│        let client = LocalSocketTransport::connect(&name).expect(\"connect\");\n*699│        let server = listener.accept().expect(\"accept\");\n 700│        let (_recv, send) = server.split();\n 701│        (\n 702│            BrokerConn::new(send, Duration::from_millis(2000)),\n### daemon.rs\n  200│                // self-heal that binds it; the brain polls `net-status` and\n *201│                // starts the consumers once net reports enabled.\n  202│                // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n  203│                    if !net_up && node_hex.is_some() {\n  204│                        // Boot-race self-heal (REQ-DAEMON-9): net failed to bind\n     │...\n  209│                        // manual restart; the brain notices `net-status` flip\n *210│                        // enabled and starts the consumers then.\n  211│                        // [impl->REQ-DAEMON-9]\n  212│                        let broker = Arc::clone(&broker);\n  213│                        thread::spawn(move || net_retry_attach(broker));\n     │...\n  374│/// Try to bring up the broker's network host once: build the production\n *375│/// `NetConfig` (durable node.key + relay/discovery/membership) and start the\n  376│/// endpoint, wiring on-connect roster propagation (REQ-MESH-2). `None` on a\n  377│/// `NET_BIND_FAIL` (e.g. the network/DNS stack not ready yet) or a missing\n  378│/// identity — the caller binds net-less and (REQ-DAEMON-9) retries.\n     │...\n  390│        relay,\n *391│        discovery: LocalDiscovery::Mdns,\n  392│        scope: BindScope::All, // production: real interfaces\n *393│        // Mesh-D2: enforce seed-proof on every dial + accept, reading the live\n  394│        // subnet store each connect.\n  395│        membership: Some(crate::seedproofx::production_membership()),\n  396│    };\n     │...\n  415│/// spawned here (restoration D2-1: they moved to the brain child, which starts\n *416│/// them when `net-status` reports the just-attached endpoint enabled).\n  417│// [impl->REQ-DAEMON-9]\n  418│fn net_retry_attach(broker: Arc<Broker>) {\n  419│    let mut backoff = NET_RETRY_FIRST;\n     │...\n 1560│            // `detached_no_inherit_falls_back_under_a_breakaway_denying_job`, and the\n*1561│            // real-terminal escape is an operator real-env acceptance step (a job\n 1562│            // that PERMITS breakaway, which cargo's runner job does not).\n 1563│            Err(e) if e.raw_os_error() == Some(5) => {\n 1564│                unsafe { CloseHandle(job) };\n     │...\n 1695│            // (iii) REQ-HAZARD-DAEMON-STOP-BARRIER conn-close discipline: stop the serve\n*1696│            // loop so this test does not leak its serve + accepted-conn handler threads\n 1697│            // (each parked in read_frame holding a seed pipe instance — the\n 1698│            // self-sustaining pin doyle's cdb found feeding the stop-barrier convoy).\n 1699│            let _ = crate::seedmap::request_stop(&name);"},"isError":false,"timestamp":1784069188402}}
{"type":"message","id":"4f1aee6b","parentId":"6df86a17","timestamp":"2026-07-14T22:46:28.414Z","message":{"role":"toolResult","toolCallId":"call_wxd1hMkFAr6w7RmVwRFXh0AK|fc_050f56f290a937ae016a56bc4442208196b7817b4c8c1d6db0","toolName":"glob","content":[{"type":"text","text":"No files found matching pattern"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/rca-*/**/*net*, C:/Users/decid/AppData/Local/spt-core/rca-*/**/*port*, C:/Users/decid/AppData/Local/spt-core/rca-*/**/*firewall*","fileCount":0,"files":[],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"useless":true,"timestamp":1784069188414}}
{"type":"message","id":"7d718943","parentId":"4f1aee6b","timestamp":"2026-07-14T22:46:28.432Z","message":{"role":"toolResult","toolCallId":"call_A0oBWv3GQpebmPYGkvGQcFrB|fc_050f56f290a937ae016a56bc4442148196aa8782752e52efe3","toolName":"grep","content":[{"type":"text","text":"No matches found"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs, C:/Users/decid/AppData/Local/spt-core/rca-*","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069188432}}
{"type":"message","id":"d15e7951","parentId":"7d718943","timestamp":"2026-07-14T22:46:43.758Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating nethost connect timeout causes**"},{"type":"toolCall","id":"call_Jy7Q9fu28O0YCJ1iS078t4xF|fc_050f56f290a937ae016a56bc5393248196bf50843023463ab9","name":"read","arguments":{"i":"Reading production endpoint bind","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","selector":"284-390,430-485"}},{"type":"toolCall","id":"call_7c4Rasv9pmSb2ytGRbCmeDEA|fc_050f56f290a937ae016a56bc5393d88196bb425b2aa72bfc67","name":"read","arguments":{"i":"Reading network dial timeout path","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs","selector":"480-630,1040-1160"}},{"type":"toolCall","id":"call_iB7E0Ip7xsGV02NzBn02vLXo|fc_050f56f290a937ae016a56bc5393e881969ec68a989a5a3880","name":"read","arguments":{"i":"Reading subnet status semantics","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","selector":"6700-6795,7100-7435"}},{"type":"toolCall","id":"call_r3KYbfiSSVk1VOfu1v8OL6M5|fc_050f56f290a937ae016a56bc5393f0819688ca2dd8acfb6007","name":"read","arguments":{"i":"Reading node probe transport","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/wansend.rs","selector":"560-630"}},{"type":"toolCall","id":"call_HmlSeGApPXpcT7EPqBSuG3de|fc_050f56f290a937ae016a56bc5393f8819689980645693cfea1","name":"grep","arguments":{"i":"Finding proof error logs","pattern":"SEED|PROOF|MEMBERSHIP|RESEED|UNTRUSTED|AUTH|shared subnet|no shared|mismatch|denied","path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_1ADe6CnXwN3YGRGGzc7YBU8U|fc_050f56f290a937ae016a56bc5394008196b2e7ccad39eecfd4","name":"grep","arguments":{"i":"Finding accepted transport events","pattern":"(?i)(PRESENCE_CONNECTED|connected peer|NET_ACCEPT|SEED_PROOF|proof.*success|ROSTER.*RX|ROSTER.*MERGE|DISPATCH.*remote|probe.*serving)","path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_RtI3YAX5UEwRSOAs6dBgdhQ2|fc_050f56f290a937ae016a56bc5394088196b953b85d3d23cb59","name":"grep","arguments":{"i":"Finding current transport diagnostics","pattern":"NET_CANARY|active_dial|DIAL_TASK|dial_permit|NET_STATUS|conn_count","path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":21237,"output":655,"cacheRead":151040,"cacheWrite":0,"totalTokens":172932,"reasoningTokens":116,"cost":{"input":0.10618500000000002,"output":0.01965,"cacheRead":0.07551999999999999,"cacheWrite":0,"total":0.201355}},"stopReason":"toolUse","timestamp":1784069188484,"responseId":"resp_050f56f290a937ae016a56bc44b90c8196906639b1dd95c24d","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc47bd5c8196ae6d24f178d12001","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrxTvb4t5Vbe-e7qWz6SyxlAajhcvXkoIYzhqFJKgpfoxlSY6pxgF6psVuj94xeAT5pz6ChRCWdKNmnRES_q0lprMhxUebyYG74tk5TpXMC0fzE8ECDUJUfLvLRw-MJIGjVNWXwrJuEZhZUOiy_Gs4dGSkOBwrWDsuwAd9RwFUNTWjhQHjPFbV_5plgNot8azoOK2q6592O24LJMogf69z4xW0UpJEpCQBo79pR7K-w8DG0SS59H1CTBzLqaJecnFCQrJINHQ2RU9Jsm9Okxb1neYs7lSBWg0vvlWDH6YxD6ws94Z7A7RWqm3RGGg9OONYs6ilDEPritv0KY1Z7uYzbubFQlQ5kBpxxBbxNfaApAK4M31tchH-1-R_xU_u4-zInKAAxVYLZ9bGFExhYUShl_2A8W3XZNTIoK6exMw9W_pGRZOEn6E7HZSKQzcwPpfJxwdoBzpbyZLWQa4LUOJmbGFviM0BMRzO59O4u-euZWi4N2uOLDCdhJvb_JlVBUMQnlaBPEgXQXGrTPD6b8ZNaAetXnMK5EWanDrQR1NFaBPOfF3xnXTBy-fN0kRBSfjQtyGcqG6ixJdE-bAj9shBqd87TsgC4sSqdtQn2CJkQIzUWIggP0N4vOxvD7W9ovRnpsGGxs980XJBfbK7M8H6TDDj0kdmKMJUnIpawp7R1tWGJGCetPsqPA4ZHjK9NXky7oDhW9zZG9NtpFOScEffQ3syYxDOPYN7aWDVmqDJcc6N8OtcHW4FGlntpaEH8XaBRDJVx3nw7h2OkXKGQjpwmhn47OuER0l-uPSvsB3vYGIiPjEf_VzoHRb4PuAZEaHrvUWVc_YGD-fFjs4fxHvpJlhgGLBNSSoxu_h3GVnMMrBZt3yV-w9myi-bZH5dRLRnq_8Yz0oEeWyABjLzuQkfY0bpEg1EyRnO-79VT4wS-92klEnEj7a28XOJ1a7hfrl8f7Gukqp6AGdQz1413IKeNP3Qj1EaN4Y_LFSzg5SiMDRwMvy9QhKRg4zxsSwAmv5HoavEzBDo2UrGnlKgOH_8ZstpO4Y2H_tmhNXt4w44hT-EwHAEUWzsbYUTSV_mfGfo5nmTWLIpIuC7DbvIshs729Mh6E1k3AtmBUycci0DYlGjHsnvYJhPQkbwo4znCBnl9Gs5dSbU4mi1lcBbaJ0rJT9Cfy2ktLCBYmbNXnH4wEe_cIlq3rh6Riy2d6tzGd2eII8IXkHqD1u6_YFu6SL_2OrZFAqThqba2-A-Y1MtGRwCqNO2DZRdXEyfnHKnAyjiB_-s50cEvoDIWco2YoNuSKLDveVNBOkEbbmMaBmteqN4PqP3q0_BwevnPcfj2b217MSg0uEF5U2p5wKTCZacdbCinr6umajQfHyr_dZwjjhlvoGuzIjfP_vkVPr5sKUnl3NOitfbOv9NkSTBrSTieM8PaRo9YzmVkFkBGbaL-XMkuPiVBq9vsAeYY9jHoiVKjIDvLx227r4bP6eXs9X7FR_euZ0zkgtth8HQFpHPm3BSLvDSHaPnjYZopAZPmyhohmL0iwXmNaL-MnNoR92RxZ2B0viWicfvshAYdoHtlwTMsZjkf5Lir7DfITg8xUnQO5","summary":[{"type":"summary_text","text":"**Investigating nethost connect timeout causes**"}]},{"id":"fc_050f56f290a937ae016a56bc5393248196bf50843023463ab9","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading production endpoint bind\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs\",\"selector\":\"284-390,430-485\"}","call_id":"call_Jy7Q9fu28O0YCJ1iS078t4xF","name":"read"},{"id":"fc_050f56f290a937ae016a56bc5393d88196bb425b2aa72bfc67","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading network dial timeout path\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs\",\"selector\":\"480-630,1040-1160\"}","call_id":"call_7c4Rasv9pmSb2ytGRbCmeDEA","name":"read"},{"id":"fc_050f56f290a937ae016a56bc5393e881969ec68a989a5a3880","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading subnet status semantics\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"selector\":\"6700-6795,7100-7435\"}","call_id":"call_iB7E0Ip7xsGV02NzBn02vLXo","name":"read"},{"id":"fc_050f56f290a937ae016a56bc5393f0819688ca2dd8acfb6007","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading node probe transport\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/wansend.rs\",\"selector\":\"560-630\"}","call_id":"call_r3KYbfiSSVk1VOfu1v8OL6M5","name":"read"},{"id":"fc_050f56f290a937ae016a56bc5393f8819689980645693cfea1","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding proof error logs\",\"pattern\":\"SEED|PROOF|MEMBERSHIP|RESEED|UNTRUSTED|AUTH|shared subnet|no shared|mismatch|denied\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_HmlSeGApPXpcT7EPqBSuG3de","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc5394008196b2e7ccad39eecfd4","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding accepted transport events\",\"pattern\":\"(?i)(PRESENCE_CONNECTED|connected peer|NET_ACCEPT|SEED_PROOF|proof.*success|ROSTER.*RX|ROSTER.*MERGE|DISPATCH.*remote|probe.*serving)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_1ADe6CnXwN3YGRGGzc7YBU8U","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc5394088196b953b85d3d23cb59","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding current transport diagnostics\",\"pattern\":\"NET_CANARY|active_dial|DIAL_TASK|dial_permit|NET_STATUS|conn_count\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_RtI3YAX5UEwRSOAs6dBgdhQ2","name":"grep"}]},"duration":15272.301699995995,"ttft":3283.653699994087,"contextSnapshot":{"promptTokens":172277,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Jy7Q9fu28O0YCJ1iS078t4xF|fc_050f56f290a937ae016a56bc5393248196bf50843023463ab9","toolName":"read","startedAt":"2026-07-14T22:46:43.758Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs"},"intent":"Reading production endpoint bind"},"id":"f7ca1555","parentId":"d15e7951","timestamp":"2026-07-14T22:46:43.758Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_7c4Rasv9pmSb2ytGRbCmeDEA|fc_050f56f290a937ae016a56bc5393d88196bb425b2aa72bfc67","toolName":"read","startedAt":"2026-07-14T22:46:43.758Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs"},"intent":"Reading network dial timeout path"},"id":"c8da9881","parentId":"f7ca1555","timestamp":"2026-07-14T22:46:43.758Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_iB7E0Ip7xsGV02NzBn02vLXo|fc_050f56f290a937ae016a56bc5393e881969ec68a989a5a3880","toolName":"read","startedAt":"2026-07-14T22:46:43.758Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"intent":"Reading subnet status semantics"},"id":"3f5a051d","parentId":"c8da9881","timestamp":"2026-07-14T22:46:43.758Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_r3KYbfiSSVk1VOfu1v8OL6M5|fc_050f56f290a937ae016a56bc5393f0819688ca2dd8acfb6007","toolName":"read","startedAt":"2026-07-14T22:46:43.758Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/wansend.rs"},"intent":"Reading node probe transport"},"id":"54f51409","parentId":"3f5a051d","timestamp":"2026-07-14T22:46:43.758Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_HmlSeGApPXpcT7EPqBSuG3de|fc_050f56f290a937ae016a56bc5393f8819689980645693cfea1","toolName":"grep","startedAt":"2026-07-14T22:46:43.758Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Finding proof error logs"},"id":"46bf3be6","parentId":"54f51409","timestamp":"2026-07-14T22:46:43.758Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_1ADe6CnXwN3YGRGGzc7YBU8U|fc_050f56f290a937ae016a56bc5394008196b2e7ccad39eecfd4","toolName":"grep","startedAt":"2026-07-14T22:46:43.758Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Finding accepted transport events"},"id":"0b0c0105","parentId":"46bf3be6","timestamp":"2026-07-14T22:46:43.758Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_RtI3YAX5UEwRSOAs6dBgdhQ2|fc_050f56f290a937ae016a56bc5394088196b953b85d3d23cb59","toolName":"grep","startedAt":"2026-07-14T22:46:43.758Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Finding current transport diagnostics"},"id":"d755bcb7","parentId":"0b0c0105","timestamp":"2026-07-14T22:46:43.758Z"}
{"type":"message","id":"c3141e39","parentId":"d755bcb7","timestamp":"2026-07-14T22:46:43.800Z","message":{"role":"toolResult","toolCallId":"call_Jy7Q9fu28O0YCJ1iS078t4xF|fc_050f56f290a937ae016a56bc5393248196bf50843023463ab9","toolName":"read","content":[{"type":"text","text":"    pub async fn bind(\n…\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n    ) -> Result<NetEndpoint, NetError> {\n        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\n    }\n\n    /// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].\n    ///\n    /// The pairing driver uses this to stand up a **dedicated pre-trust endpoint** bound\n    /// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) — the pre-trust\n    /// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`\n    /// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to\n    /// [`bind`](Self::bind).\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n    pub async fn bind_with_alpns(\n        identity: &Identity,\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n        alpns: Vec<Vec<u8>>,\n    ) -> Result<NetEndpoint, NetError> {\n        Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await\n    }\n\n    /// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an\n    /// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the\n    /// endpoint never listens on a real interface (and never triggers a Windows\n    /// firewall prompt per test binary); everything else delegates here with\n    /// [`BindScope::All`].\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n    pub async fn bind_scoped(\n        identity: &Identity,\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n        alpns: Vec<Vec<u8>>,\n        scope: BindScope,\n    ) -> Result<NetEndpoint, NetError> {\n        // iroh and spt-proto both build the ed25519 keypair from the same 32-byte\n        // seed, so this preserves the node's stable public-key name on the wire.\n        let secret = SecretKey::from_bytes(&identity.seed());\n        let builder = Endpoint::builder(presets::N0)\n            .secret_key(secret)\n            .alpns(alpns)\n            // Keep meshed member connections warm (REQ-MESH-1): seed-proof runs\n            // once at connect, so a quiet connection must not idle out and force\n            // a re-handshake. Transport-only, orthogonal to BindScope.\n            .transport_config(spt_transport_config());\n        // Loopback scope replaces the builder's pre-configured unspecified binds\n        // (0.0.0.0 / [::]) with loopback-only sockets, AND disables iroh's\n        // portmapper (UPnP/PCP/NAT-PMP — on by default), which would otherwise\n        // bind real-interface UDP sockets for its SSDP/NAT-PMP probes: useless\n        // on loopback, and the other source of per-test-binary Windows firewall\n        // prompts.\n        // Per-family bind gate (REQ-NET-FAMILY-GATE): production-scope binds drop a\n        // dead/force-disabled IP family so a half-broken family never silently\n        // burns discovery/connect time. Hermetic scopes (Loopback/Port) keep\n        // dual-stack untouched — they reach no WAN and must stay deterministic\n        // (no probe, no Windows-firewall surprise).\n        let families = match scope {\n            BindScope::All => decide_bind_families(&relay).await?,\n            BindScope::Loopback | BindScope::Port(_) => BindFamilies::Dual,\n        };\n        match families {\n            BindFamilies::Dual => {}\n            BindFamilies::V4Only => {\n                eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")\n            }\n            BindFamilies::V6Only => {\n                eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")\n            }\n        }\n        let builder = match scope {\n            // Dual-stack keeps the iroh default binds; a single-family gate clears\n            // the default IP transports and re-adds only the surviving family's\n            // unspecified socket (same clear+bind_addr mechanism BindScope uses).\n            BindScope::All => match families {\n                BindFamilies::Dual => builder,\n                BindFamilies::V4Only => builder\n                    .clear_ip_transports()\n                    .bind_addr(std::net::SocketAddr::from((\n                        std::net::Ipv4Addr::UNSPECIFIED,\n                        0,\n                    )))\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\n                BindFamilies::V6Only => builder\n                    .clear_ip_transports()\n                    .bind_addr(std::net::SocketAddr::from((\n                        std::net::Ipv6Addr::UNSPECIFIED,\n                        0,\n                    )))\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\n            },\n            BindScope::Loopback => builder\n                .clear_ip_transports()\n                .bind_addr(\"127.0.0.1:0\")\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .bind_addr(\"[::1]:0\")\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .portmapper_config(PortmapperConfig::Disabled),\n            // All-interfaces like the production scope, but on a caller-fixed\n            // port so the node is dialable by a static ip:port ticket.\n            BindScope::Port(p) => builder\n                .clear_ip_transports()\n                .bind_addr(std::net::SocketAddr::from((\n                    std::net::Ipv4Addr::UNSPECIFIED,\n                    p,\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .bind_addr(std::net::SocketAddr::from((\n…\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?,\n        };\n…\n    }\n…\n    // [impl->REQ-NET-1]\n    pub fn node_id(&self) -> PublicKey {\n        PublicKey::from_bytes(self.inner.id().as_bytes())\n            .expect(\"an iroh EndpointId is always a valid ed25519 public key\")\n    }\n\n    /// The node's stable name as lowercase hex (the `CONTEXT.md` SptNode string).\n    pub fn node_id_hex(&self) -> String {\n        self.node_id().to_hex()\n    }\n\n    /// This endpoint's dialable address (id + currently-known direct/relay paths).\n    /// Serialise it (serde) to hand a peer a connect ticket.\n    pub fn addr(&self) -> EndpointAddr {\n        self.inner.addr()\n    }\n\n    /// A human label for the IP families this endpoint actually bound, derived\n    /// from its live socket addresses — the truthful result of the per-family\n    /// bind gate (REQ-NET-FAMILY-GATE). Surfaced in the join discovery trace\n    /// (REQ-JOIN-DIAGNOSTICS) so a failed WAN join names which families it could\n    /// even attempt. `\"none\"` only if no socket is bound (shouldn't happen).\n    // [impl->REQ-JOIN-DIAGNOSTICS]\n    pub fn bound_families(&self) -> &'static str {\n        let mut v4 = false;\n        let mut v6 = false;\n        for s in self.inner.addr().ip_addrs() {\n            if s.is_ipv4() {\n                v4 = true;\n            } else {\n                v6 = true;\n            }\n        }\n        match (v4, v6) {\n            (true, true) => \"IPv4+IPv6\",\n            (true, false) => \"IPv4-only\",\n            (false, true) => \"IPv6-only\",\n            (false, false) => \"none\",\n        }\n    }\n\n    /// Wait until the endpoint has registered with its relays — needed before the\n    /// [`addr`](Self::addr) ticket is dialable from off-LAN. Not required for a\n    /// direct/loopback dial where the peer already has a direct address.\n    pub async fn online(&self) {\n        self.inner.online().await;\n    }\n\n    /// Accept the next inbound connection (already ALPN-filtered to [`SPT_NET_ALPN`]).\n    /// `None` once the endpoint is closed.\n    pub async fn accept(&self) -> Option<Incoming> {\n        self.inner.accept().await\n    }\n\n    /// Gracefully close the endpoint: every held connection sends its QUIC\n    /// CLOSE frame so peers observe the disconnect promptly (a bare drop may"}],"details":{"displayContent":{"text":"    pub async fn bind(\n…\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n    ) -> Result<NetEndpoint, NetError> {\n        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\n    }\n\n    /// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].\n    ///\n    /// The pairing driver uses this to stand up a **dedicated pre-trust endpoint** bound\n    /// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) — the pre-trust\n    /// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`\n    /// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to\n    /// [`bind`](Self::bind).\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n    pub async fn bind_with_alpns(\n        identity: &Identity,\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n        alpns: Vec<Vec<u8>>,\n    ) -> Result<NetEndpoint, NetError> {\n        Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await\n    }\n\n    /// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an\n    /// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the\n    /// endpoint never listens on a real interface (and never triggers a Windows\n    /// firewall prompt per test binary); everything else delegates here with\n    /// [`BindScope::All`].\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n    pub async fn bind_scoped(\n        identity: &Identity,\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n        alpns: Vec<Vec<u8>>,\n        scope: BindScope,\n    ) -> Result<NetEndpoint, NetError> {\n        // iroh and spt-proto both build the ed25519 keypair from the same 32-byte\n        // seed, so this preserves the node's stable public-key name on the wire.\n        let secret = SecretKey::from_bytes(&identity.seed());\n        let builder = Endpoint::builder(presets::N0)\n            .secret_key(secret)\n            .alpns(alpns)\n            // Keep meshed member connections warm (REQ-MESH-1): seed-proof runs\n            // once at connect, so a quiet connection must not idle out and force\n            // a re-handshake. Transport-only, orthogonal to BindScope.\n            .transport_config(spt_transport_config());\n        // Loopback scope replaces the builder's pre-configured unspecified binds\n        // (0.0.0.0 / [::]) with loopback-only sockets, AND disables iroh's\n        // portmapper (UPnP/PCP/NAT-PMP — on by default), which would otherwise\n        // bind real-interface UDP sockets for its SSDP/NAT-PMP probes: useless\n        // on loopback, and the other source of per-test-binary Windows firewall\n        // prompts.\n        // Per-family bind gate (REQ-NET-FAMILY-GATE): production-scope binds drop a\n        // dead/force-disabled IP family so a half-broken family never silently\n        // burns discovery/connect time. Hermetic scopes (Loopback/Port) keep\n        // dual-stack untouched — they reach no WAN and must stay deterministic\n        // (no probe, no Windows-firewall surprise).\n        let families = match scope {\n            BindScope::All => decide_bind_families(&relay).await?,\n            BindScope::Loopback | BindScope::Port(_) => BindFamilies::Dual,\n        };\n        match families {\n            BindFamilies::Dual => {}\n            BindFamilies::V4Only => {\n                eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")\n            }\n            BindFamilies::V6Only => {\n                eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")\n            }\n        }\n        let builder = match scope {\n            // Dual-stack keeps the iroh default binds; a single-family gate clears\n            // the default IP transports and re-adds only the surviving family's\n            // unspecified socket (same clear+bind_addr mechanism BindScope uses).\n            BindScope::All => match families {\n                BindFamilies::Dual => builder,\n                BindFamilies::V4Only => builder\n                    .clear_ip_transports()\n                    .bind_addr(std::net::SocketAddr::from((\n                        std::net::Ipv4Addr::UNSPECIFIED,\n                        0,\n                    )))\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\n                BindFamilies::V6Only => builder\n                    .clear_ip_transports()\n                    .bind_addr(std::net::SocketAddr::from((\n                        std::net::Ipv6Addr::UNSPECIFIED,\n                        0,\n                    )))\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\n            },\n            BindScope::Loopback => builder\n                .clear_ip_transports()\n                .bind_addr(\"127.0.0.1:0\")\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .bind_addr(\"[::1]:0\")\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .portmapper_config(PortmapperConfig::Disabled),\n            // All-interfaces like the production scope, but on a caller-fixed\n            // port so the node is dialable by a static ip:port ticket.\n            BindScope::Port(p) => builder\n                .clear_ip_transports()\n                .bind_addr(std::net::SocketAddr::from((\n                    std::net::Ipv4Addr::UNSPECIFIED,\n                    p,\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .bind_addr(std::net::SocketAddr::from((\n…\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?,\n        };\n…\n    }\n…\n    // [impl->REQ-NET-1]\n    pub fn node_id(&self) -> PublicKey {\n        PublicKey::from_bytes(self.inner.id().as_bytes())\n            .expect(\"an iroh EndpointId is always a valid ed25519 public key\")\n    }\n\n    /// The node's stable name as lowercase hex (the `CONTEXT.md` SptNode string).\n    pub fn node_id_hex(&self) -> String {\n        self.node_id().to_hex()\n    }\n\n    /// This endpoint's dialable address (id + currently-known direct/relay paths).\n    /// Serialise it (serde) to hand a peer a connect ticket.\n    pub fn addr(&self) -> EndpointAddr {\n        self.inner.addr()\n    }\n\n    /// A human label for the IP families this endpoint actually bound, derived\n    /// from its live socket addresses — the truthful result of the per-family\n    /// bind gate (REQ-NET-FAMILY-GATE). Surfaced in the join discovery trace\n    /// (REQ-JOIN-DIAGNOSTICS) so a failed WAN join names which families it could\n    /// even attempt. `\"none\"` only if no socket is bound (shouldn't happen).\n    // [impl->REQ-JOIN-DIAGNOSTICS]\n    pub fn bound_families(&self) -> &'static str {\n        let mut v4 = false;\n        let mut v6 = false;\n        for s in self.inner.addr().ip_addrs() {\n            if s.is_ipv4() {\n                v4 = true;\n            } else {\n                v6 = true;\n            }\n        }\n        match (v4, v6) {\n            (true, true) => \"IPv4+IPv6\",\n            (true, false) => \"IPv4-only\",\n            (false, true) => \"IPv6-only\",\n            (false, false) => \"none\",\n        }\n    }\n\n    /// Wait until the endpoint has registered with its relays — needed before the\n    /// [`addr`](Self::addr) ticket is dialable from off-LAN. Not required for a\n    /// direct/loopback dial where the peer already has a direct address.\n    pub async fn online(&self) {\n        self.inner.online().await;\n    }\n\n    /// Accept the next inbound connection (already ALPN-filtered to [`SPT_NET_ALPN`]).\n    /// `None` once the endpoint is closed.\n    pub async fn accept(&self) -> Option<Incoming> {\n        self.inner.accept().await\n    }\n\n    /// Gracefully close the endpoint: every held connection sends its QUIC\n    /// CLOSE frame so peers observe the disconnect promptly (a bare drop may","startLine":282,"lineNumbers":[282,null,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,null,394,395,396,null,417,null,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs"}}},"isError":false,"timestamp":1784069203800}}
{"type":"message","id":"e9e3aebc","parentId":"c3141e39","timestamp":"2026-07-14T22:46:43.800Z","message":{"role":"toolResult","toolCallId":"call_7c4Rasv9pmSb2ytGRbCmeDEA|fc_050f56f290a937ae016a56bc5393d88196bb425b2aa72bfc67","toolName":"read","content":[{"type":"text","text":"struct NetShared {\n    next_conn_id: AtomicU64,\n    conns: Mutex<HashMap<u64, ConnEntry>>,\n    next_stream_id: AtomicU64,\n    streams: Mutex<HashMap<u64, Arc<StreamEntry>>>,\n    ring_cap: usize,\n    /// The conn-liveness event log (D4c) — one per host, all conns interleaved.\n    presence: Mutex<PresenceLog>,\n}\n\nimpl NetShared {\n    fn new() -> Self {\n        NetShared {\n            next_conn_id: AtomicU64::new(1),\n            conns: Mutex::new(HashMap::new()),\n            next_stream_id: AtomicU64::new(1),\n            streams: Mutex::new(HashMap::new()),\n            ring_cap: DEFAULT_STREAM_RING_CHUNKS,\n            presence: Mutex::new(PresenceLog::new(DEFAULT_STREAM_RING_CHUNKS)),\n        }\n    }\n}\n\n/// Register a live connection: mint its broker id and spawn its inbound-stream\n/// acceptor. Must run inside the host's runtime context (the accept loop, or a\n/// `block_on` future) — it spawns tasks.\n/// The connection's OBSERVED remote address as opaque seed JSON (REQ-CONV-1):\n/// the path address string, or `null` when id-only / path-less (nothing worth\n/// seeding over discovery). Shared by [`register_conn`]'s presence write-back\n/// and [`NetHost::conn_remote_addr_json`] so both seed identically.\n// [impl->REQ-CONV-1]\nfn observed_addr_json(conn: &Connection) -> serde_json::Value {\n    let addr = spt_net::net::endpoint::conn_remote_addr(conn);\n    if addr.is_empty() {\n        return serde_json::Value::Null; // id-only adds nothing over discovery\n    }\n    serde_json::to_value(addr).unwrap_or(serde_json::Value::Null)\n}\n\n/// A `Send + 'static` snapshot of one dial's inputs — the SHARED connect path\n/// for both the blocking [`NetHost::dial`] and the spawned\n/// [`NetHost::submit_dial`], so W1's per-dial bound and the Mesh-D2 seed-proof\n/// stay single-sourced (never a second, drifting dial impl).\nstruct DialPlan {\n    endpoint: Arc<NetEndpoint>,\n    shared: Arc<NetShared>,\n    local_id: PublicKey,\n    membership: Option<MembershipSource>,\n    roster_rx: Option<RosterExchange>,\n    self_addr: serde_json::Value,\n}\n\nimpl DialPlan {\n    /// Connect, prove membership in-band (Mesh-D2 — a failed/empty proof drops\n    /// the dial before it registers; Mesh-D4 roster leg rides the same stream on\n    /// success), then register the conn (which emits `PRESENCE_CONNECTED` with\n    /// the observed addr). The caller bounds this await (the blocking dial via\n    /// `bounded_block_on`; the submit via its own `timeout`).\n    async fn connect(self, addr: EndpointAddr) -> io::Result<(u64, String)> {\n        let conn = self\n            .endpoint\n            .connect(addr)\n            .await\n            .map_err(|e| io::Error::other(e.to_string()))?;\n        let proven = match self.membership {\n            Some(src) => {\n                let creds = src();\n                prove_membership(\n                    &conn,\n                    self.local_id,\n                    ProofRole::Dialer,\n                    &creds,\n                    self.roster_rx.as_ref(),\n                    &self.self_addr,\n                )\n                .await\n                .ok_or_else(|| {\n                    io::Error::other(\"seed-proof failed: peer is not a subnet member\")\n                })?\n            }\n            None => HashSet::new(),\n        };\n        Ok(register_conn(&self.shared, conn, proven))\n    }\n}\n\nfn register_conn(\n    shared: &Arc<NetShared>,\n    conn: Connection,\n    proven_subnets: HashSet<String>,\n) -> (u64, String) {\n    let remote_id_hex = PublicKey::from_bytes(conn.remote_id().as_bytes())\n        .expect(\"an iroh EndpointId is always a valid ed25519 public key\")\n        .to_hex();\n    let id = shared.next_conn_id.fetch_add(1, Ordering::Relaxed);\n    shared.conns.lock().unwrap().insert(\n        id,\n        ConnEntry {\n            kind: ConnKind::Quic(conn.clone()),\n            remote_id_hex: remote_id_hex.clone(),\n            proven_subnets,\n        },\n    );\n\n    // Presence: announce the row BEFORE spawning the closed-watcher, so the\n    // `connected` event can never race behind its own `disconnected` (D4c). The\n    // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a\n    // non-blocking submit-dial seeds `peer-addrs.json` like the blocking reply\n    // did (id-only / path-less → `null`, nothing worth seeding).\n    let observed = observed_addr_json(&conn);\n    shared\n        .presence\n        .lock()\n        .unwrap()\n        .append_connected(id, &remote_id_hex, observed);\n\n    // Closed-watcher: the row's exit path. Awaits the connection's end (clean\n    // close, conn loss, or our own endpoint close), removes the row — conns\n    // finally LEAVE the table — then appends the `disconnected` event (row\n    // gone before the event is observable).\n    // [impl->REQ-EP-4]\n    let sh_close = Arc::clone(shared);\n    let conn_close = conn.clone();\n    let hex_close = remote_id_hex.clone();\n    tokio::spawn(async move {\n        conn_close.closed().await;\n        sh_close.conns.lock().unwrap().remove(&id);\n        sh_close\n            .presence\n            .lock()\n            .unwrap()\n            .append(PRESENCE_DISCONNECTED, id, &hex_close);\n    });\n\n    // Inbound-stream acceptor: every peer-opened bidi stream joins the table\n    // and gets a read pump. (QUIC streams are lazy — the peer's open becomes\n    // visible here on its first write.) Ends when the connection does.\n    let sh = Arc::clone(shared);\n    let hex = remote_id_hex.clone();\n    tokio::spawn(async move {\n        while let Ok((send, recv)) = conn.accept_bi().await {\n            register_stream(\n                &sh,\n                id,\n                &hex,\n                SendHalf::Quic(send),\n                RecvHalf::Quic(recv),\n                false,\n            );\n        }\n    });\n\n…\n}\n…\n    pub fn pair_meet(\n…\n    ) -> Result<EndpointAddr, crate::pairhost::JoinFail> {\n…\n        self.runtime.handle().block_on(async move {\n            crate::pairhost::meet_seed_holder(&endpoint, subnet, verbose).await\n        })\n    }\n\n    /// The node's stable name (lowercase-hex pubkey == iroh EndpointId).\n    pub fn node_id_hex(&self) -> String {\n        self.endpoint.node_id_hex()\n    }\n\n    /// The endpoint's dialable address (id + currently-known direct/relay paths).\n    pub fn addr(&self) -> EndpointAddr {\n        self.endpoint.addr()\n    }\n\n    /// [`Self::addr`] as the opaque JSON the IPC status reply carries.\n    pub fn addr_json(&self) -> serde_json::Value {\n        serde_json::to_value(self.endpoint.addr()).unwrap_or(serde_json::Value::Null)\n    }\n\n    /// Live connections (accepted + dialed) currently held.\n    pub fn conn_count(&self) -> u64 {\n        self.shared.conns.lock().unwrap().len() as u64\n    }\n\n    /// DIAGNOSTIC (UPDATE-WEDGE round-3, throwaway): in-flight [`Self::submit_dial`]\n    /// tasks currently on the 2-worker net runtime. The starvation rig reads this\n    /// to correlate a dead-peer burst with loopback-drain health.\n    pub fn active_dial_tasks(&self) -> usize {\n        self.active_dial_tasks.load(Ordering::Relaxed)\n    }\n\n    /// DIAGNOSTIC (round-3): age in ms of the reactor-liveness canary stamp. A\n    /// SMALL age (< ~100ms) means the 2 net workers are scheduling normally (QUIC\n    /// awaits yield). A LARGE age under a dead-peer burst is the direct signature\n    /// of worker-thread starvation — the mechanism the round-3 wedge hinges on.\n    pub fn net_canary_age_ms(&self) -> u64 {\n        epoch_ms().saturating_sub(self.net_canary_tick_ms.load(Ordering::Relaxed))\n    }\n\n    /// DIAGNOSTIC (round-3): free permits on the shared dial-concurrency semaphore\n    /// ([`PUMP_DIAL_CONCURRENCY`] minus in-flight blocking + submit dials). Lets the\n    /// rig confirm the semaphore (24) is NOT the bottleneck vs the 2-worker pool.\n    pub fn dial_permits_available(&self) -> usize {\n        self.dial_semaphore.available_permits()\n    }\n\n    /// Dial a peer over `SPT_NET_ALPN`, registering the connection in the table.\n    /// Bridges sync→async via the host's own runtime (the broker's dispatch\n    /// threads block here; the future runs on the net worker threads).\n    // [impl->REQ-DAEMON-2]\n    pub fn dial(&self, addr: EndpointAddr) -> io::Result<(u64, String)> {\n        let plan = self.dial_plan();\n        let sem = Arc::clone(&self.dial_semaphore);\n        // Bounded (REQ-HAZARD-BROKER-QUIC-DEADLINE): the `connect` + `prove_membership`\n        // awaits are the exact unbounded sites a dead peer black-holes — wrap\n        // them so a non-responsive peer fails as an ordinary error within the bound.\n        self.bounded_block_on(async move {\n            // Q2 caveat: the blocking dial acquires a permit from the SAME\n            // semaphore as `submit_dial`, so the concurrency cap bounds every dial\n            // source (never bypassed). `acquire_owned` errs only on a closed\n            // semaphore — we never close it.\n            let _permit = sem\n                .acquire_owned()\n                .await\n                .map_err(|e| io::Error::other(e.to_string()))?;\n            plan.connect(addr).await\n        })\n    }\n\n    /// PUMP-TRUTH W2 (REQ-PUMP-PEER-ISOLATION): submit a NON-BLOCKING dial and\n    /// return IMMEDIATELY. Spawns the connect on the host runtime under the shared\n    /// concurrency permit ([`PUMP_DIAL_CONCURRENCY`]); the dial is bounded exactly\n    /// like [`Self::dial`] (W1's per-dial bound), so a dead peer fails PROMPTLY.\n    /// The OUTCOME rides the presence stream — success already emits\n    /// `PRESENCE_CONNECTED` inside `register_conn`; failure appends\n    /// `PRESENCE_DIAL_FAILED` here (conn_id:0 sentinel, correlated by\n    /// `remote_id_hex`). Never a blocking reply, never a whole-round poison — one\n    /// dead peer's fate is isolated to its own event.\n    // [impl->REQ-PUMP-PEER-ISOLATION]\n    pub fn submit_dial(&self, addr: EndpointAddr, remote_id_hex: String) {\n        let plan = self.dial_plan();\n        let sem = Arc::clone(&self.dial_semaphore);\n        let shared = Arc::clone(&self.shared);\n        let dur = self.quic_op_timeout();\n        // DIAGNOSTIC (round-3): mark this dial in-flight for the whole task, so\n        // the starvation rig can read how many dead-peer connects are occupying\n        // the 2-worker runtime at once. RAII decrement (panic/cancel-safe).\n        let gauge = Arc::clone(&self.active_dial_tasks);\n        self.runtime.spawn(async move {\n            gauge.fetch_add(1, Ordering::Relaxed);\n            let _dial_guard = DialGauge(gauge);\n            let outcome = async {\n                let _permit = sem\n                    .acquire_owned()\n                    .await\n                    .map_err(|e| io::Error::other(e.to_string()))?;\n                match tokio::time::timeout(dur, plan.connect(addr)).await {\n                    Ok(inner) => inner,\n                    Err(_elapsed) => Err(io::Error::other(format!(\n                        \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"\n                    ))),\n                }\n            }\n            .await;\n            if let Err(e) = outcome {\n                // Ordinary per-peer failure rides the presence stream — the pump\n                // backs THIS peer off and moves on; the round is never poisoned.\n                shared\n                    .presence\n                    .lock()\n                    .unwrap()\n                    .append_dial_failed(&remote_id_hex, e.to_string());\n            }\n        });\n    }\n\n    /// Snapshot the per-dial state (endpoint, shared table, identity, membership,\n    /// the opt-in roster exchange, our live address) into a `Send + 'static`\n    /// [`DialPlan`] both the blocking [`Self::dial`] and the spawned\n    /// [`Self::submit_dial`] connect through — the ONE connect+prove+register\n    /// path, so W1's bound and the seed-proof stay single-sourced."}],"details":{"displayContent":{"text":"struct NetShared {\n    next_conn_id: AtomicU64,\n    conns: Mutex<HashMap<u64, ConnEntry>>,\n    next_stream_id: AtomicU64,\n    streams: Mutex<HashMap<u64, Arc<StreamEntry>>>,\n    ring_cap: usize,\n    /// The conn-liveness event log (D4c) — one per host, all conns interleaved.\n    presence: Mutex<PresenceLog>,\n}\n\nimpl NetShared {\n    fn new() -> Self {\n        NetShared {\n            next_conn_id: AtomicU64::new(1),\n            conns: Mutex::new(HashMap::new()),\n            next_stream_id: AtomicU64::new(1),\n            streams: Mutex::new(HashMap::new()),\n            ring_cap: DEFAULT_STREAM_RING_CHUNKS,\n            presence: Mutex::new(PresenceLog::new(DEFAULT_STREAM_RING_CHUNKS)),\n        }\n    }\n}\n\n/// Register a live connection: mint its broker id and spawn its inbound-stream\n/// acceptor. Must run inside the host's runtime context (the accept loop, or a\n/// `block_on` future) — it spawns tasks.\n/// The connection's OBSERVED remote address as opaque seed JSON (REQ-CONV-1):\n/// the path address string, or `null` when id-only / path-less (nothing worth\n/// seeding over discovery). Shared by [`register_conn`]'s presence write-back\n/// and [`NetHost::conn_remote_addr_json`] so both seed identically.\n// [impl->REQ-CONV-1]\nfn observed_addr_json(conn: &Connection) -> serde_json::Value {\n    let addr = spt_net::net::endpoint::conn_remote_addr(conn);\n    if addr.is_empty() {\n        return serde_json::Value::Null; // id-only adds nothing over discovery\n    }\n    serde_json::to_value(addr).unwrap_or(serde_json::Value::Null)\n}\n\n/// A `Send + 'static` snapshot of one dial's inputs — the SHARED connect path\n/// for both the blocking [`NetHost::dial`] and the spawned\n/// [`NetHost::submit_dial`], so W1's per-dial bound and the Mesh-D2 seed-proof\n/// stay single-sourced (never a second, drifting dial impl).\nstruct DialPlan {\n    endpoint: Arc<NetEndpoint>,\n    shared: Arc<NetShared>,\n    local_id: PublicKey,\n    membership: Option<MembershipSource>,\n    roster_rx: Option<RosterExchange>,\n    self_addr: serde_json::Value,\n}\n\nimpl DialPlan {\n    /// Connect, prove membership in-band (Mesh-D2 — a failed/empty proof drops\n    /// the dial before it registers; Mesh-D4 roster leg rides the same stream on\n    /// success), then register the conn (which emits `PRESENCE_CONNECTED` with\n    /// the observed addr). The caller bounds this await (the blocking dial via\n    /// `bounded_block_on`; the submit via its own `timeout`).\n    async fn connect(self, addr: EndpointAddr) -> io::Result<(u64, String)> {\n        let conn = self\n            .endpoint\n            .connect(addr)\n            .await\n            .map_err(|e| io::Error::other(e.to_string()))?;\n        let proven = match self.membership {\n            Some(src) => {\n                let creds = src();\n                prove_membership(\n                    &conn,\n                    self.local_id,\n                    ProofRole::Dialer,\n                    &creds,\n                    self.roster_rx.as_ref(),\n                    &self.self_addr,\n                )\n                .await\n                .ok_or_else(|| {\n                    io::Error::other(\"seed-proof failed: peer is not a subnet member\")\n                })?\n            }\n            None => HashSet::new(),\n        };\n        Ok(register_conn(&self.shared, conn, proven))\n    }\n}\n\nfn register_conn(\n    shared: &Arc<NetShared>,\n    conn: Connection,\n    proven_subnets: HashSet<String>,\n) -> (u64, String) {\n    let remote_id_hex = PublicKey::from_bytes(conn.remote_id().as_bytes())\n        .expect(\"an iroh EndpointId is always a valid ed25519 public key\")\n        .to_hex();\n    let id = shared.next_conn_id.fetch_add(1, Ordering::Relaxed);\n    shared.conns.lock().unwrap().insert(\n        id,\n        ConnEntry {\n            kind: ConnKind::Quic(conn.clone()),\n            remote_id_hex: remote_id_hex.clone(),\n            proven_subnets,\n        },\n    );\n\n    // Presence: announce the row BEFORE spawning the closed-watcher, so the\n    // `connected` event can never race behind its own `disconnected` (D4c). The\n    // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a\n    // non-blocking submit-dial seeds `peer-addrs.json` like the blocking reply\n    // did (id-only / path-less → `null`, nothing worth seeding).\n    let observed = observed_addr_json(&conn);\n    shared\n        .presence\n        .lock()\n        .unwrap()\n        .append_connected(id, &remote_id_hex, observed);\n\n    // Closed-watcher: the row's exit path. Awaits the connection's end (clean\n    // close, conn loss, or our own endpoint close), removes the row — conns\n    // finally LEAVE the table — then appends the `disconnected` event (row\n    // gone before the event is observable).\n    // [impl->REQ-EP-4]\n    let sh_close = Arc::clone(shared);\n    let conn_close = conn.clone();\n    let hex_close = remote_id_hex.clone();\n    tokio::spawn(async move {\n        conn_close.closed().await;\n        sh_close.conns.lock().unwrap().remove(&id);\n        sh_close\n            .presence\n            .lock()\n            .unwrap()\n            .append(PRESENCE_DISCONNECTED, id, &hex_close);\n    });\n\n    // Inbound-stream acceptor: every peer-opened bidi stream joins the table\n    // and gets a read pump. (QUIC streams are lazy — the peer's open becomes\n    // visible here on its first write.) Ends when the connection does.\n    let sh = Arc::clone(shared);\n    let hex = remote_id_hex.clone();\n    tokio::spawn(async move {\n        while let Ok((send, recv)) = conn.accept_bi().await {\n            register_stream(\n                &sh,\n                id,\n                &hex,\n                SendHalf::Quic(send),\n                RecvHalf::Quic(recv),\n                false,\n            );\n        }\n    });\n\n…\n}\n…\n    pub fn pair_meet(\n…\n    ) -> Result<EndpointAddr, crate::pairhost::JoinFail> {\n…\n        self.runtime.handle().block_on(async move {\n            crate::pairhost::meet_seed_holder(&endpoint, subnet, verbose).await\n        })\n    }\n\n    /// The node's stable name (lowercase-hex pubkey == iroh EndpointId).\n    pub fn node_id_hex(&self) -> String {\n        self.endpoint.node_id_hex()\n    }\n\n    /// The endpoint's dialable address (id + currently-known direct/relay paths).\n    pub fn addr(&self) -> EndpointAddr {\n        self.endpoint.addr()\n    }\n\n    /// [`Self::addr`] as the opaque JSON the IPC status reply carries.\n    pub fn addr_json(&self) -> serde_json::Value {\n        serde_json::to_value(self.endpoint.addr()).unwrap_or(serde_json::Value::Null)\n    }\n\n    /// Live connections (accepted + dialed) currently held.\n    pub fn conn_count(&self) -> u64 {\n        self.shared.conns.lock().unwrap().len() as u64\n    }\n\n    /// DIAGNOSTIC (UPDATE-WEDGE round-3, throwaway): in-flight [`Self::submit_dial`]\n    /// tasks currently on the 2-worker net runtime. The starvation rig reads this\n    /// to correlate a dead-peer burst with loopback-drain health.\n    pub fn active_dial_tasks(&self) -> usize {\n        self.active_dial_tasks.load(Ordering::Relaxed)\n    }\n\n    /// DIAGNOSTIC (round-3): age in ms of the reactor-liveness canary stamp. A\n    /// SMALL age (< ~100ms) means the 2 net workers are scheduling normally (QUIC\n    /// awaits yield). A LARGE age under a dead-peer burst is the direct signature\n    /// of worker-thread starvation — the mechanism the round-3 wedge hinges on.\n    pub fn net_canary_age_ms(&self) -> u64 {\n        epoch_ms().saturating_sub(self.net_canary_tick_ms.load(Ordering::Relaxed))\n    }\n\n    /// DIAGNOSTIC (round-3): free permits on the shared dial-concurrency semaphore\n    /// ([`PUMP_DIAL_CONCURRENCY`] minus in-flight blocking + submit dials). Lets the\n    /// rig confirm the semaphore (24) is NOT the bottleneck vs the 2-worker pool.\n    pub fn dial_permits_available(&self) -> usize {\n        self.dial_semaphore.available_permits()\n    }\n\n    /// Dial a peer over `SPT_NET_ALPN`, registering the connection in the table.\n    /// Bridges sync→async via the host's own runtime (the broker's dispatch\n    /// threads block here; the future runs on the net worker threads).\n    // [impl->REQ-DAEMON-2]\n    pub fn dial(&self, addr: EndpointAddr) -> io::Result<(u64, String)> {\n        let plan = self.dial_plan();\n        let sem = Arc::clone(&self.dial_semaphore);\n        // Bounded (REQ-HAZARD-BROKER-QUIC-DEADLINE): the `connect` + `prove_membership`\n        // awaits are the exact unbounded sites a dead peer black-holes — wrap\n        // them so a non-responsive peer fails as an ordinary error within the bound.\n        self.bounded_block_on(async move {\n            // Q2 caveat: the blocking dial acquires a permit from the SAME\n            // semaphore as `submit_dial`, so the concurrency cap bounds every dial\n            // source (never bypassed). `acquire_owned` errs only on a closed\n            // semaphore — we never close it.\n            let _permit = sem\n                .acquire_owned()\n                .await\n                .map_err(|e| io::Error::other(e.to_string()))?;\n            plan.connect(addr).await\n        })\n    }\n\n    /// PUMP-TRUTH W2 (REQ-PUMP-PEER-ISOLATION): submit a NON-BLOCKING dial and\n    /// return IMMEDIATELY. Spawns the connect on the host runtime under the shared\n    /// concurrency permit ([`PUMP_DIAL_CONCURRENCY`]); the dial is bounded exactly\n    /// like [`Self::dial`] (W1's per-dial bound), so a dead peer fails PROMPTLY.\n    /// The OUTCOME rides the presence stream — success already emits\n    /// `PRESENCE_CONNECTED` inside `register_conn`; failure appends\n    /// `PRESENCE_DIAL_FAILED` here (conn_id:0 sentinel, correlated by\n    /// `remote_id_hex`). Never a blocking reply, never a whole-round poison — one\n    /// dead peer's fate is isolated to its own event.\n    // [impl->REQ-PUMP-PEER-ISOLATION]\n    pub fn submit_dial(&self, addr: EndpointAddr, remote_id_hex: String) {\n        let plan = self.dial_plan();\n        let sem = Arc::clone(&self.dial_semaphore);\n        let shared = Arc::clone(&self.shared);\n        let dur = self.quic_op_timeout();\n        // DIAGNOSTIC (round-3): mark this dial in-flight for the whole task, so\n        // the starvation rig can read how many dead-peer connects are occupying\n        // the 2-worker runtime at once. RAII decrement (panic/cancel-safe).\n        let gauge = Arc::clone(&self.active_dial_tasks);\n        self.runtime.spawn(async move {\n            gauge.fetch_add(1, Ordering::Relaxed);\n            let _dial_guard = DialGauge(gauge);\n            let outcome = async {\n                let _permit = sem\n                    .acquire_owned()\n                    .await\n                    .map_err(|e| io::Error::other(e.to_string()))?;\n                match tokio::time::timeout(dur, plan.connect(addr)).await {\n                    Ok(inner) => inner,\n                    Err(_elapsed) => Err(io::Error::other(format!(\n                        \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"\n                    ))),\n                }\n            }\n            .await;\n            if let Err(e) = outcome {\n                // Ordinary per-peer failure rides the presence stream — the pump\n                // backs THIS peer off and moves on; the round is never poisoned.\n                shared\n                    .presence\n                    .lock()\n                    .unwrap()\n                    .append_dial_failed(&remote_id_hex, e.to_string());\n            }\n        });\n    }\n\n    /// Snapshot the per-dial state (endpoint, shared table, identity, membership,\n    /// the opt-in roster exchange, our live address) into a `Send + 'static`\n    /// [`DialPlan`] both the blocking [`Self::dial`] and the spawned\n    /// [`Self::submit_dial`] connect through — the ONE connect+prove+register\n    /// path, so W1's bound and the seed-proof stay single-sourced.","startLine":479,"lineNumbers":[479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,null,632,null,1033,null,1037,null,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs"}}},"isError":false,"timestamp":1784069203800}}
{"type":"message","id":"b87cf7bf","parentId":"e9e3aebc","timestamp":"2026-07-14T22:46:43.921Z","message":{"role":"toolResult","toolCallId":"call_iB7E0Ip7xsGV02NzBn02vLXo|fc_050f56f290a937ae016a56bc5393e881969ec68a989a5a3880","toolName":"read","content":[{"type":"text","text":"fn cmd_subnet_create(name: String) -> i32 {\n…\n    if let Some(out) = result.out {\n        print!(\"{out}\");\n        let _ = std::io::stdout().flush();\n    }\n    eprintln!(\"{}\", result.msg);\n    announce_sync_home(&adopted);\n    // Hold a fresh elevated console open (Windows UAC re-launch) so the joining\n    // material stays readable before the window closes; no-op otherwise.\n    pause_elevated_console_if_fresh();\n    result.code\n}\n\n/// One subnet's status-view row: membership shape only — never seeds, epochs,\n/// or codes (M7 plan decision 5).\nstruct SubnetStatusRow {\n    name: String,\n    /// Paired nodes known for the subnet (this node included).\n    nodes: usize,\n    /// Endpoints visible in the subnet's registry snapshot.\n    endpoints: usize,\n}\n\n/// Build the status rows from the subnet store + registry snapshots + the\n/// member roster. Pure over its inputs so the view is unit-tested hermetically.\n///\n/// Node membership is ROSTER-derived (self + roster members — the durable mesh\n/// membership record, Mesh-D6), with registry-row nodes unioned in as\n/// enrichment: a member node with zero advertised endpoints (fresh box, empty\n/// owlery) is still a member, and an offline peer whose rows the 4.10 eviction\n/// decayed must not vanish from its own subnet's view. Endpoint counts stay\n/// gossip-derived and stale-tolerant (they catch up as gossip lands).\n// [impl->REQ-SUBNET-1]\nfn subnet_status_rows(\n    store: &SubnetStore,\n    regs: &std::collections::BTreeMap<String, spt_net::net::registry::SubnetRegistry>,\n    roster: &spt_store::roster::RosterStore,\n    own_hex: Option<&str>,\n    only: Option<&str>,\n) -> Vec<SubnetStatusRow> {\n    store\n        .subnets\n        .iter()\n        .filter(|s| only.is_none_or(|n| n == s.name))\n        .map(|s| {\n            let (mut nodes, mut endpoints) = (std::collections::BTreeSet::new(), 0usize);\n            if let Some(own) = own_hex {\n                nodes.insert(own.to_string());\n            }\n            for member in roster.members_in(&s.name) {\n                nodes.insert(member.pubkey_hex.clone());\n            }\n            if let Some(reg) = regs.get(&s.name) {\n                for id in reg.endpoint_ids() {\n                    endpoints += 1;\n                    for inst in reg.instances(id) {\n                        nodes.insert(inst.node.clone());\n                    }\n                }\n            }\n            // This node is a member even when its identity could not load.\n            SubnetStatusRow {\n                name: s.name.clone(),\n                nodes: nodes.len().max(1),\n                endpoints,\n            }\n        })\n        .collect()\n}\n\n/// Render the status view (M7 plan decision 5, amended by M8 decisions\n/// 11–12): aligned rows; **daemon-aware** standalone text on zero subnets\n/// (never implies messaging works while the daemon is down); the hint\n/// footer rides only the bare `spt subnet` view (`hints`).\n// [impl->REQ-SUBNET-1]\n// [impl->REQ-SUBNET-8]\nfn render_subnet_status(rows: &[SubnetStatusRow], daemon_running: bool, hints: bool) -> String {\n    let mut out = String::new();\n    if rows.is_empty() {\n        out.push_str(standalone_text(daemon_running));\n    } else {\n        let pad = rows\n            .iter()\n            .map(|r| r.name.len())\n            .max()\n            .unwrap_or(0)\n            .max(\"SUBNET\".len());\n        out.push_str(&format!(\"{:<pad$}  NODES  ENDPOINTS\\n\", \"SUBNET\"));\n        for r in rows {\n            out.push_str(&format!(\n                \"{:<pad$}  {:<5}  {}\\n\",\n                r.name, r.nodes, r.endpoints\n            ));\n        }\n    }\n    if hints {\n        out.push_str(HINT_FOOTER);\n    }\n…\n}\n…\nfn run_bounded<T: Send + 'static>(\n…\n    f: impl FnOnce() -> T + Send + 'static,\n) -> T {\n    let (tx, rx) = std::sync::mpsc::channel();\n    std::thread::spawn(move || {\n        let _ = tx.send(f());\n    });\n    rx.recv_timeout(dur).unwrap_or(on_timeout)\n}\n\n/// Per-node probe ceiling. An id-only dial to a dead peer otherwise runs the\n/// full iroh discovery+connect timeout (~30s, observed live on the M8\n/// acceptance rig); a node that can't finish a subnet-scoped handshake in a\n/// couple seconds reads offline for liveness purposes. The probe itself\n/// (`probe_node_serving`, wansend.rs) is subnet-scoped per REQ-SUBNET-5: dial\n/// (proves reachable) THEN ask \"serving `subnet`?\", so a detached-but-alive\n/// peer reads offline for that subnet.\nconst PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_millis(2500);\n/// In-flight cap for the concurrent `--nodes` probe fan-out (REQ-MESH-6): a\n/// small fixed pool so a 200-member subnet can't open 200 simultaneous broker\n/// IPC conns + dials at once. `k ≤ cap` ⇒ one ceiling; `k > cap` ⇒\n/// `ceil(k/cap)` ceilings (logged — no silent truncation of the wait).\nconst MAX_INFLIGHT: usize = 16;\n\n/// Run every `(node, subnet)` probe CONCURRENTLY; collect results in input\n/// order. Wall-time ≈ ONE `ceiling` when `items.len() <= max_inflight`,\n/// else `ceil(k / max_inflight)` ceilings. The mesh widen (D6) makes a node\n/// see ALL roster members — many silent — so the serial per-node `probe_node`\n/// loop cost `offline_count × ceiling`; this fans it out (REQ-MESH-6). `probe`\n/// is INJECTED so the unit test passes a deterministic sleeper (no network);\n/// the real site passes `probe_node_serving`. Each probe still runs on its own\n/// thread under its own `recv_timeout(ceiling)` bound (via `run_bounded`), so\n/// one wedged dial costs ONE ceiling, never the batch — KH 5.3 preserved.\n// [impl->REQ-MESH-6]\nfn probe_all<F>(\n    items: &[(String, String)],\n    ceiling: std::time::Duration,\n    max_inflight: usize,\n    probe: F,\n) -> Vec<bool>\nwhere\n    F: Fn(&str, &str) -> bool + Send + Sync + 'static,\n{\n    if items.is_empty() {\n        return Vec::new();\n    }\n    let cap = max_inflight.max(1);\n    if items.len() > cap {\n        eprintln!(\n            \"Probing {} nodes in batches of {} — wait may be a small multiple of the probe ceiling.\",\n            items.len(),\n            cap\n        );\n        let _ = std::io::stderr().flush();\n    }\n    let probe = std::sync::Arc::new(probe);\n    let mut out = vec![false; items.len()];\n    // Process in windows of `cap`: each window spawns one bounded thread per\n    // item and joins before the next, so in-flight never exceeds `cap` and\n    // every window is bounded by one `ceiling`. Wall ≈ ceil(k/cap)×ceiling.\n    for (wi, window) in items.chunks(cap).enumerate() {\n        let base = wi * cap;\n        let handles: Vec<(usize, std::thread::JoinHandle<bool>)> = window\n            .iter()\n            .enumerate()\n            .map(|(off, (node, subnet))| {\n                let probe = probe.clone();\n                let node = node.clone();\n                let subnet = subnet.clone();\n                (\n                    base + off,\n                    std::thread::spawn(move || {\n                        run_bounded(ceiling, false, move || probe(&node, &subnet))\n                    }),\n                )\n            })\n            .collect();\n        for (idx, h) in handles {\n            out[idx] = h.join().unwrap_or(false);\n        }\n    }\n    out\n}\n\n/// Render the coming-online banner's \"spt subnets joined\" section + the\n/// concluding divider: header, underline, one `NAME: <state>` row per held\n/// subnet (`(none)` when empty), divider. Pure for tests.\n// [impl->REQ-DAEMON-3]\nfn render_subnets_joined(rows: &[(String, &'static str)]) -> String {\n    let mut out = String::from(\"spt subnets joined\\n──────────────────\\n\");\n    if rows.is_empty() {\n        out.push_str(\"  (none)\\n\");\n    } else {\n        for (name, state) in rows {\n            out.push_str(&format!(\"  {name}: {state}\\n\"));\n        }\n    }\n    out.push_str(\"────────────────────────────────────────\\n\");\n    out\n}\n\n/// Ensure the per-machine daemon is up for a daemon-dependent command —\n/// silent when it already runs; otherwise announce the transition on\n/// stderr (stdout stays payload-pure) and conclude with a divider before\n/// the command's own output (grill 2026-06-06). The membership-creating\n/// verbs call this because **membership implies reachability** (CONTEXT\n/// §subnet attachment): a sole seed-holder with no responder daemon is a\n/// contradiction of the subnet's purpose.\n// [impl->REQ-SUBNET-2] [impl->REQ-DAEMON-3]\nfn ensure_daemon_announced() -> Result<(), i32> {\n    if spt_daemon::is_running() {\n        return Ok(());\n    }\n    eprintln!(\"spt-core daemon is offline - coming online...\");\n    if let Err(e) = spt_daemon::ensure_running() {\n        eprintln!(\"DAEMON_START_FAIL: {e}\");\n        return Err(1);\n    }\n    let ident = node_ident_display();\n    eprintln!(\"spt-core daemon: online - {ident}\");\n    // Attachment states per subnet (M8 decision 6, REQ-SUBNET-5): detached\n    // is a chosen per-subnet state; a net-less daemon (endpoint bind\n    // failed) serves nothing — \"no connection\", never conflated with a\n    // deliberate detach (CONTEXT §subnet attachment).\n    let net_up = spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms())\n        .ok()\n        .and_then(|mut b| b.net_status().ok())\n        .map(|s| s.enabled)\n        .unwrap_or(true); // can't ask ⇒ assume serving rather than alarm\n    let att = spt_store::attachment::AttachmentStore::load();\n    let rows: Vec<(String, &'static str)> = SubnetStore::load()\n        .subnets\n        .iter()\n        .map(|s| {\n            let state = if att.is_detached(&s.name) {\n                \"detached\"\n            } else if net_up {\n                \"attached\"\n            } else {\n                \"no connection\"\n            };\n            (s.name.clone(), state)\n        })\n        .collect();\n    eprint!(\"{}\", render_subnets_joined(&rows));\n    // Blocked-inbound honesty on the coming-online banner too (M8 root\n    // cause 3, REQ-INSTALL-7): a fresh user-scope install learns NOW, not\n    // after a silent NO_SEED_HOLDER join failure.\n    if let Some(w) = inbound_block_hint() {\n        eprint!(\"{w}\");\n    }\n    Ok(())\n}\n\n/// `spt subnet status` --json: the membership rows (a copy of\n/// `SubnetStatusRow`), plus the per-node rows (a copy of `NodeRow` + the\n/// probe-settled liveness) when `--nodes` is set. Internal structs stay free to\n/// refactor — these are the committed shape.\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct SubnetStatusJson {\n    daemon_running: bool,\n    subnets: Vec<SubnetRowJson>,\n}\n\n/// One subnet's membership-shape row (mirrors `SubnetStatusRow`). `nodes`\n/// (per-node detail) is present only on the `--nodes` view; otherwise empty.\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct SubnetRowJson {\n    name: String,\n    node_count: usize,\n    endpoint_count: usize,\n    nodes: Vec<NodeRowJson>,\n}\n\n/// One node's `--nodes` row (mirrors `NodeRow` + the settled liveness verdict).\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct NodeRowJson {\n    node: String,\n    label: Option<String>,\n    active: usize,\n    total: usize,\n    online: bool,\n}\n\n/// `spt subnet [status [NAME] [--nodes]]` — the membership view (REQ-SUBNET-1,\n/// M7 plan decisions 5 + 6; M8 decisions 11–12, 23). Read-only and ungated:\n/// prints membership shape, never secrets. `hints` = the bare-`spt subnet`\n/// invocation (the footer rides only that view).\n// [impl->REQ-SUBNET-1]\n// [impl->REQ-SUBNET-8]\nfn cmd_subnet_status(name: Option<String>, nodes: bool, hints: bool, json: bool) -> i32 {\n    let store = SubnetStore::load();\n    if let Some(n) = &name {\n        if store.find(n).is_none() {\n            eprintln!(\"NO_SUCH_SUBNET:{n}\");\n            return 2;\n        }\n    }\n    let daemon_running = spt_daemon::is_running();\n    let stall = if daemon_running {\n        pump_stall_warning(now_ms())\n    } else {\n        None\n    };\n    // Blocked-inbound honesty (REQ-INSTALL-7): only worth checking when the\n    // daemon serves — a stopped daemon is the bigger headline already.\n    let inbound = if daemon_running {\n        inbound_block_hint()\n    } else {\n        None\n    };\n    let snap_dir = perch::identity_dir().join(\"registry\");\n    let regs = crate::wansend::load_snapshots(&snap_dir);\n    let roster = spt_store::roster::RosterStore::load();\n    let own_hex = spt_store::nodeid::load_or_create()\n        .map(|i| i.public_key().to_hex())\n        .unwrap_or_default();\n    if !nodes {\n        let rows = subnet_status_rows(\n            &store,\n            &regs,\n            &roster,\n            Some(&own_hex).filter(|h| !h.is_empty()).map(|h| h.as_str()),\n            name.as_deref(),\n        );\n        // [impl->REQ-CLI-JSON] The membership view without per-node detail.\n        if json {\n            let subnets = rows\n                .iter()\n                .map(|r| SubnetRowJson {\n                    name: r.name.clone(),\n                    node_count: r.nodes,\n                    endpoint_count: r.endpoints,\n                    nodes: Vec::new(),\n                })\n                .collect();\n            return print_json(&SubnetStatusJson {\n                daemon_running,\n                subnets,\n            });\n        }\n        let mut out = render_subnet_status(&rows, daemon_running, hints);\n        if let Some(w) = daemon_offline_hint(daemon_running) {\n            out.push_str(&w);\n        }\n        if let Some(w) = stall {\n            out.push_str(&w);\n        }\n        if let Some(w) = inbound {\n            out.push_str(&w);\n        }\n        // Human status view: render the assembled prose (HINT_FOOTER /\n        // standalone_text / pump_stall_warning / daemon_offline_hint /\n        // inbound_block_hint all flow through here). Node-id rows carry no\n        // Markdown markers, so only the hints restyle/strip.\n        // [impl->REQ-CLI-OUTPUT-MARKDOWN]\n        print!(\"{}\", crate::helpfmt::render(&out, crate::helpfmt::stdout_color()));\n        let _ = std::io::stdout().flush();\n        return 0;\n    }\n\n    // --nodes: per-node rows under the hybrid liveness (decision 6).\n    let heard: std::collections::BTreeMap<String, u64> = std::fs::read(\n        spt_daemon::registryhost::RegistryHost::heard_path(&snap_dir),\n    )\n    .ok()\n    .and_then(|b| serde_json::from_slice(&b).ok())\n    .unwrap_or_default();\n    // Stale = silent for 3 advertisement cadences (the daemon re-gossips\n    // every pump period; missing a couple is jitter, missing three is news).\n    let stale_after_ms = 3 * spt_daemon::DaemonConfig::load()\n        .registry_pump_period\n        .as_millis() as u64;\n    // Pass 1: classify every matching subnet's rows (pure `node_status_rows`),\n    // collecting the silent (Probe) ones into ONE cross-subnet work-list. The\n    // fan-out spans the whole view so a multi-subnet status pays one ceiling\n    // total, not one per subnet.\n    let mut per_subnet: Vec<(String, Vec<NodeRow>)> = Vec::new();\n    let mut worklist: Vec<(String, String)> = Vec::new();\n    for sub in &store.subnets {\n        if name.as_deref().is_some_and(|n| n != sub.name) {\n            continue;\n        }\n        let empty = spt_net::net::registry::SubnetRegistry::new();\n        let reg = regs.get(&sub.name).unwrap_or(&empty);\n        // Membership seed: self + roster members (rowless members still\n        // render — fresh boxes and eviction-decayed offline peers alike).\n        let mut members: Vec<(String, Option<String>)> = Vec::new();\n        if !own_hex.is_empty() {\n            members.push((own_hex.clone(), spt_store::hostlabel::os_hostname()));\n        }\n        for member in roster.members_in(&sub.name) {\n            let label = (!member.label.is_empty()).then(|| member.label.clone());\n            members.push((member.pubkey_hex.clone(), label));\n        }\n        let rows = node_status_rows(reg, &members, &heard, &own_hex, now_ms(), stale_after_ms);\n        for r in &rows {\n            if r.liveness == NodeLiveness::Probe {\n                worklist.push((r.node.clone(), sub.name.clone()));\n            }\n        }\n        per_subnet.push((sub.name.clone(), rows));\n    }\n    // Announce the probe phase once, before any dial — silent nodes cost a\n    // bounded dial each and the user should know what the wait is for.\n    if !worklist.is_empty() {\n        eprintln!(\"Checking remote nodes…\");\n        let _ = std::io::stderr().flush();\n    }\n    // Pass 2: one CONCURRENT batch across ALL subnets (REQ-MESH-6). Wall ≈ one\n    // PROBE_TIMEOUT (bounded by MAX_INFLIGHT), not k×PROBE_TIMEOUT serial.\n    let probed = probe_all(&worklist, PROBE_TIMEOUT, MAX_INFLIGHT, |n, s| {\n        crate::wansend::probe_node_serving(n, s)\n    });\n    // Pass 3: stitch results back in row order — the work-list was filled in\n    // row order, so a single cursor walks it deterministically. Render is\n    // unchanged (`render_node_rows`), so output matches the old serial path.\n    let mut cursor = 0usize;\n    let mut out = String::new();\n    // [impl->REQ-CLI-JSON] Collect the settled rows per subnet so the machine\n    // view emits the same probe-settled liveness the human table renders.\n    let mut json_subnets: Vec<SubnetRowJson> = Vec::new();\n    for (sub_name, rows) in per_subnet {\n        let settled: Vec<(NodeRow, bool)> = rows\n            .into_iter()\n            .map(|r| {\n                let online = match r.liveness {\n                    NodeLiveness::Online => true,\n                    NodeLiveness::Offline => false,\n                    NodeLiveness::Probe => {\n                        let v = probed.get(cursor).copied().unwrap_or(false);\n                        cursor += 1;\n                        v\n                    }\n                };\n…\n            })\n            .collect();\n…\n    }\n…\n}"}],"details":{"displayContent":{"text":"fn cmd_subnet_create(name: String) -> i32 {\n…\n    if let Some(out) = result.out {\n        print!(\"{out}\");\n        let _ = std::io::stdout().flush();\n    }\n    eprintln!(\"{}\", result.msg);\n    announce_sync_home(&adopted);\n    // Hold a fresh elevated console open (Windows UAC re-launch) so the joining\n    // material stays readable before the window closes; no-op otherwise.\n    pause_elevated_console_if_fresh();\n    result.code\n}\n\n/// One subnet's status-view row: membership shape only — never seeds, epochs,\n/// or codes (M7 plan decision 5).\nstruct SubnetStatusRow {\n    name: String,\n    /// Paired nodes known for the subnet (this node included).\n    nodes: usize,\n    /// Endpoints visible in the subnet's registry snapshot.\n    endpoints: usize,\n}\n\n/// Build the status rows from the subnet store + registry snapshots + the\n/// member roster. Pure over its inputs so the view is unit-tested hermetically.\n///\n/// Node membership is ROSTER-derived (self + roster members — the durable mesh\n/// membership record, Mesh-D6), with registry-row nodes unioned in as\n/// enrichment: a member node with zero advertised endpoints (fresh box, empty\n/// owlery) is still a member, and an offline peer whose rows the 4.10 eviction\n/// decayed must not vanish from its own subnet's view. Endpoint counts stay\n/// gossip-derived and stale-tolerant (they catch up as gossip lands).\n// [impl->REQ-SUBNET-1]\nfn subnet_status_rows(\n    store: &SubnetStore,\n    regs: &std::collections::BTreeMap<String, spt_net::net::registry::SubnetRegistry>,\n    roster: &spt_store::roster::RosterStore,\n    own_hex: Option<&str>,\n    only: Option<&str>,\n) -> Vec<SubnetStatusRow> {\n    store\n        .subnets\n        .iter()\n        .filter(|s| only.is_none_or(|n| n == s.name))\n        .map(|s| {\n            let (mut nodes, mut endpoints) = (std::collections::BTreeSet::new(), 0usize);\n            if let Some(own) = own_hex {\n                nodes.insert(own.to_string());\n            }\n            for member in roster.members_in(&s.name) {\n                nodes.insert(member.pubkey_hex.clone());\n            }\n            if let Some(reg) = regs.get(&s.name) {\n                for id in reg.endpoint_ids() {\n                    endpoints += 1;\n                    for inst in reg.instances(id) {\n                        nodes.insert(inst.node.clone());\n                    }\n                }\n            }\n            // This node is a member even when its identity could not load.\n            SubnetStatusRow {\n                name: s.name.clone(),\n                nodes: nodes.len().max(1),\n                endpoints,\n            }\n        })\n        .collect()\n}\n\n/// Render the status view (M7 plan decision 5, amended by M8 decisions\n/// 11–12): aligned rows; **daemon-aware** standalone text on zero subnets\n/// (never implies messaging works while the daemon is down); the hint\n/// footer rides only the bare `spt subnet` view (`hints`).\n// [impl->REQ-SUBNET-1]\n// [impl->REQ-SUBNET-8]\nfn render_subnet_status(rows: &[SubnetStatusRow], daemon_running: bool, hints: bool) -> String {\n    let mut out = String::new();\n    if rows.is_empty() {\n        out.push_str(standalone_text(daemon_running));\n    } else {\n        let pad = rows\n            .iter()\n            .map(|r| r.name.len())\n            .max()\n            .unwrap_or(0)\n            .max(\"SUBNET\".len());\n        out.push_str(&format!(\"{:<pad$}  NODES  ENDPOINTS\\n\", \"SUBNET\"));\n        for r in rows {\n            out.push_str(&format!(\n                \"{:<pad$}  {:<5}  {}\\n\",\n                r.name, r.nodes, r.endpoints\n            ));\n        }\n    }\n    if hints {\n        out.push_str(HINT_FOOTER);\n    }\n…\n}\n…\nfn run_bounded<T: Send + 'static>(\n…\n    f: impl FnOnce() -> T + Send + 'static,\n) -> T {\n    let (tx, rx) = std::sync::mpsc::channel();\n    std::thread::spawn(move || {\n        let _ = tx.send(f());\n    });\n    rx.recv_timeout(dur).unwrap_or(on_timeout)\n}\n\n/// Per-node probe ceiling. An id-only dial to a dead peer otherwise runs the\n/// full iroh discovery+connect timeout (~30s, observed live on the M8\n/// acceptance rig); a node that can't finish a subnet-scoped handshake in a\n/// couple seconds reads offline for liveness purposes. The probe itself\n/// (`probe_node_serving`, wansend.rs) is subnet-scoped per REQ-SUBNET-5: dial\n/// (proves reachable) THEN ask \"serving `subnet`?\", so a detached-but-alive\n/// peer reads offline for that subnet.\nconst PROBE_TIMEOUT: std::time::Duration = std::time::Duration::from_millis(2500);\n/// In-flight cap for the concurrent `--nodes` probe fan-out (REQ-MESH-6): a\n/// small fixed pool so a 200-member subnet can't open 200 simultaneous broker\n/// IPC conns + dials at once. `k ≤ cap` ⇒ one ceiling; `k > cap` ⇒\n/// `ceil(k/cap)` ceilings (logged — no silent truncation of the wait).\nconst MAX_INFLIGHT: usize = 16;\n\n/// Run every `(node, subnet)` probe CONCURRENTLY; collect results in input\n/// order. Wall-time ≈ ONE `ceiling` when `items.len() <= max_inflight`,\n/// else `ceil(k / max_inflight)` ceilings. The mesh widen (D6) makes a node\n/// see ALL roster members — many silent — so the serial per-node `probe_node`\n/// loop cost `offline_count × ceiling`; this fans it out (REQ-MESH-6). `probe`\n/// is INJECTED so the unit test passes a deterministic sleeper (no network);\n/// the real site passes `probe_node_serving`. Each probe still runs on its own\n/// thread under its own `recv_timeout(ceiling)` bound (via `run_bounded`), so\n/// one wedged dial costs ONE ceiling, never the batch — KH 5.3 preserved.\n// [impl->REQ-MESH-6]\nfn probe_all<F>(\n    items: &[(String, String)],\n    ceiling: std::time::Duration,\n    max_inflight: usize,\n    probe: F,\n) -> Vec<bool>\nwhere\n    F: Fn(&str, &str) -> bool + Send + Sync + 'static,\n{\n    if items.is_empty() {\n        return Vec::new();\n    }\n    let cap = max_inflight.max(1);\n    if items.len() > cap {\n        eprintln!(\n            \"Probing {} nodes in batches of {} — wait may be a small multiple of the probe ceiling.\",\n            items.len(),\n            cap\n        );\n        let _ = std::io::stderr().flush();\n    }\n    let probe = std::sync::Arc::new(probe);\n    let mut out = vec![false; items.len()];\n    // Process in windows of `cap`: each window spawns one bounded thread per\n    // item and joins before the next, so in-flight never exceeds `cap` and\n    // every window is bounded by one `ceiling`. Wall ≈ ceil(k/cap)×ceiling.\n    for (wi, window) in items.chunks(cap).enumerate() {\n        let base = wi * cap;\n        let handles: Vec<(usize, std::thread::JoinHandle<bool>)> = window\n            .iter()\n            .enumerate()\n            .map(|(off, (node, subnet))| {\n                let probe = probe.clone();\n                let node = node.clone();\n                let subnet = subnet.clone();\n                (\n                    base + off,\n                    std::thread::spawn(move || {\n                        run_bounded(ceiling, false, move || probe(&node, &subnet))\n                    }),\n                )\n            })\n            .collect();\n        for (idx, h) in handles {\n            out[idx] = h.join().unwrap_or(false);\n        }\n    }\n    out\n}\n\n/// Render the coming-online banner's \"spt subnets joined\" section + the\n/// concluding divider: header, underline, one `NAME: <state>` row per held\n/// subnet (`(none)` when empty), divider. Pure for tests.\n// [impl->REQ-DAEMON-3]\nfn render_subnets_joined(rows: &[(String, &'static str)]) -> String {\n    let mut out = String::from(\"spt subnets joined\\n──────────────────\\n\");\n    if rows.is_empty() {\n        out.push_str(\"  (none)\\n\");\n    } else {\n        for (name, state) in rows {\n            out.push_str(&format!(\"  {name}: {state}\\n\"));\n        }\n    }\n    out.push_str(\"────────────────────────────────────────\\n\");\n    out\n}\n\n/// Ensure the per-machine daemon is up for a daemon-dependent command —\n/// silent when it already runs; otherwise announce the transition on\n/// stderr (stdout stays payload-pure) and conclude with a divider before\n/// the command's own output (grill 2026-06-06). The membership-creating\n/// verbs call this because **membership implies reachability** (CONTEXT\n/// §subnet attachment): a sole seed-holder with no responder daemon is a\n/// contradiction of the subnet's purpose.\n// [impl->REQ-SUBNET-2] [impl->REQ-DAEMON-3]\nfn ensure_daemon_announced() -> Result<(), i32> {\n    if spt_daemon::is_running() {\n        return Ok(());\n    }\n    eprintln!(\"spt-core daemon is offline - coming online...\");\n    if let Err(e) = spt_daemon::ensure_running() {\n        eprintln!(\"DAEMON_START_FAIL: {e}\");\n        return Err(1);\n    }\n    let ident = node_ident_display();\n    eprintln!(\"spt-core daemon: online - {ident}\");\n    // Attachment states per subnet (M8 decision 6, REQ-SUBNET-5): detached\n    // is a chosen per-subnet state; a net-less daemon (endpoint bind\n    // failed) serves nothing — \"no connection\", never conflated with a\n    // deliberate detach (CONTEXT §subnet attachment).\n    let net_up = spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms())\n        .ok()\n        .and_then(|mut b| b.net_status().ok())\n        .map(|s| s.enabled)\n        .unwrap_or(true); // can't ask ⇒ assume serving rather than alarm\n    let att = spt_store::attachment::AttachmentStore::load();\n    let rows: Vec<(String, &'static str)> = SubnetStore::load()\n        .subnets\n        .iter()\n        .map(|s| {\n            let state = if att.is_detached(&s.name) {\n                \"detached\"\n            } else if net_up {\n                \"attached\"\n            } else {\n                \"no connection\"\n            };\n            (s.name.clone(), state)\n        })\n        .collect();\n    eprint!(\"{}\", render_subnets_joined(&rows));\n    // Blocked-inbound honesty on the coming-online banner too (M8 root\n    // cause 3, REQ-INSTALL-7): a fresh user-scope install learns NOW, not\n    // after a silent NO_SEED_HOLDER join failure.\n    if let Some(w) = inbound_block_hint() {\n        eprint!(\"{w}\");\n    }\n    Ok(())\n}\n\n/// `spt subnet status` --json: the membership rows (a copy of\n/// `SubnetStatusRow`), plus the per-node rows (a copy of `NodeRow` + the\n/// probe-settled liveness) when `--nodes` is set. Internal structs stay free to\n/// refactor — these are the committed shape.\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct SubnetStatusJson {\n    daemon_running: bool,\n    subnets: Vec<SubnetRowJson>,\n}\n\n/// One subnet's membership-shape row (mirrors `SubnetStatusRow`). `nodes`\n/// (per-node detail) is present only on the `--nodes` view; otherwise empty.\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct SubnetRowJson {\n    name: String,\n    node_count: usize,\n    endpoint_count: usize,\n    nodes: Vec<NodeRowJson>,\n}\n\n/// One node's `--nodes` row (mirrors `NodeRow` + the settled liveness verdict).\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct NodeRowJson {\n    node: String,\n    label: Option<String>,\n    active: usize,\n    total: usize,\n    online: bool,\n}\n\n/// `spt subnet [status [NAME] [--nodes]]` — the membership view (REQ-SUBNET-1,\n/// M7 plan decisions 5 + 6; M8 decisions 11–12, 23). Read-only and ungated:\n/// prints membership shape, never secrets. `hints` = the bare-`spt subnet`\n/// invocation (the footer rides only that view).\n// [impl->REQ-SUBNET-1]\n// [impl->REQ-SUBNET-8]\nfn cmd_subnet_status(name: Option<String>, nodes: bool, hints: bool, json: bool) -> i32 {\n    let store = SubnetStore::load();\n    if let Some(n) = &name {\n        if store.find(n).is_none() {\n            eprintln!(\"NO_SUCH_SUBNET:{n}\");\n            return 2;\n        }\n    }\n    let daemon_running = spt_daemon::is_running();\n    let stall = if daemon_running {\n        pump_stall_warning(now_ms())\n    } else {\n        None\n    };\n    // Blocked-inbound honesty (REQ-INSTALL-7): only worth checking when the\n    // daemon serves — a stopped daemon is the bigger headline already.\n    let inbound = if daemon_running {\n        inbound_block_hint()\n    } else {\n        None\n    };\n    let snap_dir = perch::identity_dir().join(\"registry\");\n    let regs = crate::wansend::load_snapshots(&snap_dir);\n    let roster = spt_store::roster::RosterStore::load();\n    let own_hex = spt_store::nodeid::load_or_create()\n        .map(|i| i.public_key().to_hex())\n        .unwrap_or_default();\n    if !nodes {\n        let rows = subnet_status_rows(\n            &store,\n            &regs,\n            &roster,\n            Some(&own_hex).filter(|h| !h.is_empty()).map(|h| h.as_str()),\n            name.as_deref(),\n        );\n        // [impl->REQ-CLI-JSON] The membership view without per-node detail.\n        if json {\n            let subnets = rows\n                .iter()\n                .map(|r| SubnetRowJson {\n                    name: r.name.clone(),\n                    node_count: r.nodes,\n                    endpoint_count: r.endpoints,\n                    nodes: Vec::new(),\n                })\n                .collect();\n            return print_json(&SubnetStatusJson {\n                daemon_running,\n                subnets,\n            });\n        }\n        let mut out = render_subnet_status(&rows, daemon_running, hints);\n        if let Some(w) = daemon_offline_hint(daemon_running) {\n            out.push_str(&w);\n        }\n        if let Some(w) = stall {\n            out.push_str(&w);\n        }\n        if let Some(w) = inbound {\n            out.push_str(&w);\n        }\n        // Human status view: render the assembled prose (HINT_FOOTER /\n        // standalone_text / pump_stall_warning / daemon_offline_hint /\n        // inbound_block_hint all flow through here). Node-id rows carry no\n        // Markdown markers, so only the hints restyle/strip.\n        // [impl->REQ-CLI-OUTPUT-MARKDOWN]\n        print!(\"{}\", crate::helpfmt::render(&out, crate::helpfmt::stdout_color()));\n        let _ = std::io::stdout().flush();\n        return 0;\n    }\n\n    // --nodes: per-node rows under the hybrid liveness (decision 6).\n    let heard: std::collections::BTreeMap<String, u64> = std::fs::read(\n        spt_daemon::registryhost::RegistryHost::heard_path(&snap_dir),\n    )\n    .ok()\n    .and_then(|b| serde_json::from_slice(&b).ok())\n    .unwrap_or_default();\n    // Stale = silent for 3 advertisement cadences (the daemon re-gossips\n    // every pump period; missing a couple is jitter, missing three is news).\n    let stale_after_ms = 3 * spt_daemon::DaemonConfig::load()\n        .registry_pump_period\n        .as_millis() as u64;\n    // Pass 1: classify every matching subnet's rows (pure `node_status_rows`),\n    // collecting the silent (Probe) ones into ONE cross-subnet work-list. The\n    // fan-out spans the whole view so a multi-subnet status pays one ceiling\n    // total, not one per subnet.\n    let mut per_subnet: Vec<(String, Vec<NodeRow>)> = Vec::new();\n    let mut worklist: Vec<(String, String)> = Vec::new();\n    for sub in &store.subnets {\n        if name.as_deref().is_some_and(|n| n != sub.name) {\n            continue;\n        }\n        let empty = spt_net::net::registry::SubnetRegistry::new();\n        let reg = regs.get(&sub.name).unwrap_or(&empty);\n        // Membership seed: self + roster members (rowless members still\n        // render — fresh boxes and eviction-decayed offline peers alike).\n        let mut members: Vec<(String, Option<String>)> = Vec::new();\n        if !own_hex.is_empty() {\n            members.push((own_hex.clone(), spt_store::hostlabel::os_hostname()));\n        }\n        for member in roster.members_in(&sub.name) {\n            let label = (!member.label.is_empty()).then(|| member.label.clone());\n            members.push((member.pubkey_hex.clone(), label));\n        }\n        let rows = node_status_rows(reg, &members, &heard, &own_hex, now_ms(), stale_after_ms);\n        for r in &rows {\n            if r.liveness == NodeLiveness::Probe {\n                worklist.push((r.node.clone(), sub.name.clone()));\n            }\n        }\n        per_subnet.push((sub.name.clone(), rows));\n    }\n    // Announce the probe phase once, before any dial — silent nodes cost a\n    // bounded dial each and the user should know what the wait is for.\n    if !worklist.is_empty() {\n        eprintln!(\"Checking remote nodes…\");\n        let _ = std::io::stderr().flush();\n    }\n    // Pass 2: one CONCURRENT batch across ALL subnets (REQ-MESH-6). Wall ≈ one\n    // PROBE_TIMEOUT (bounded by MAX_INFLIGHT), not k×PROBE_TIMEOUT serial.\n    let probed = probe_all(&worklist, PROBE_TIMEOUT, MAX_INFLIGHT, |n, s| {\n        crate::wansend::probe_node_serving(n, s)\n    });\n    // Pass 3: stitch results back in row order — the work-list was filled in\n    // row order, so a single cursor walks it deterministically. Render is\n    // unchanged (`render_node_rows`), so output matches the old serial path.\n    let mut cursor = 0usize;\n    let mut out = String::new();\n    // [impl->REQ-CLI-JSON] Collect the settled rows per subnet so the machine\n    // view emits the same probe-settled liveness the human table renders.\n    let mut json_subnets: Vec<SubnetRowJson> = Vec::new();\n    for (sub_name, rows) in per_subnet {\n        let settled: Vec<(NodeRow, bool)> = rows\n            .into_iter()\n            .map(|r| {\n                let online = match r.liveness {\n                    NodeLiveness::Online => true,\n                    NodeLiveness::Offline => false,\n                    NodeLiveness::Probe => {\n                        let v = probed.get(cursor).copied().unwrap_or(false);\n                        cursor += 1;\n                        v\n                    }\n                };\n…\n            })\n            .collect();\n…\n    }\n…\n}","startLine":6667,"lineNumbers":[6667,null,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6781,6782,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6794,6795,null,6797,null,7097,null,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7294,7295,7296,7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308,7309,7310,7311,7312,7313,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7355,7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369,7370,7371,7372,7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7401,7402,7403,7404,7405,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,null,7438,7439,null,7459,null,7487]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"}}},"isError":false,"timestamp":1784069203921}}
{"type":"message","id":"884d6d4b","parentId":"b87cf7bf","timestamp":"2026-07-14T22:46:43.921Z","message":{"role":"toolResult","toolCallId":"call_HmlSeGApPXpcT7EPqBSuG3de|fc_050f56f290a937ae016a56bc5393f8819689980645693cfea1","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log.1\n 7099|RCA_BOUNDED_WAIT_BEGIN:pid=31192 child_pid=48352 label=\"echo_commune\" elapsed_ms=0 outcome=waiting\n*7100|UPDATE_REJECTED:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:artifact digest mismatch: signed 1601ecc7e88d96c5114e3ad25ea42df5c31bf1aba55d8b054b5ed9fa9ae03f5a, actual 4f5c61e8442641e4becd0c4d744b37771a2dc350dca6c84b2fc95c7e9eedf9d2\n 7101|RCA_CONN_OPEN: conn_id=29 elapsed_us=29727600\n 7102|RCA_CONN_EOF: conn_id=29 error_kind=UnexpectedEof elapsed_us=29727690\n 7103|RCA_CONN_CLOSE: conn_id=29 elapsed_us=29727715"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs, C:/Users/decid/AppData/Local/spt-core/rca-*","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":1,"fileCount":1,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":1}],"truncated":false,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log.1\n 7099│RCA_BOUNDED_WAIT_BEGIN:pid=31192 child_pid=48352 label=\"echo_commune\" elapsed_ms=0 outcome=waiting\n*7100│UPDATE_REJECTED:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:artifact digest mismatch: signed 1601ecc7e88d96c5114e3ad25ea42df5c31bf1aba55d8b054b5ed9fa9ae03f5a, actual 4f5c61e8442641e4becd0c4d744b37771a2dc350dca6c84b2fc95c7e9eedf9d2\n 7101│RCA_CONN_OPEN: conn_id=29 elapsed_us=29727600\n 7102│RCA_CONN_EOF: conn_id=29 error_kind=UnexpectedEof elapsed_us=29727690\n 7103│RCA_CONN_CLOSE: conn_id=29 elapsed_us=29727715"},"isError":false,"timestamp":1784069203921}}
{"type":"message","id":"efb70467","parentId":"884d6d4b","timestamp":"2026-07-14T22:46:43.921Z","message":{"role":"toolResult","toolCallId":"call_RtI3YAX5UEwRSOAs6dBgdhQ2|fc_050f56f290a937ae016a56bc5394088196b953b85d3d23cb59","toolName":"grep","content":[{"type":"text","text":"No matches found"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs, C:/Users/decid/AppData/Local/spt-core/rca-*","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069203921}}
{"type":"message","id":"d45c7c39","parentId":"efb70467","timestamp":"2026-07-14T22:46:43.922Z","message":{"role":"toolResult","toolCallId":"call_1ADe6CnXwN3YGRGGzc7YBU8U|fc_050f56f290a937ae016a56bc5394008196b2e7ccad39eecfd4","toolName":"grep","content":[{"type":"text","text":"No matches found"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs, C:/Users/decid/AppData/Local/spt-core/rca-*","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069203922}}
{"type":"message","id":"708e5657","parentId":"d45c7c39","timestamp":"2026-07-14T22:46:43.934Z","message":{"role":"toolResult","toolCallId":"call_r3KYbfiSSVk1VOfu1v8OL6M5|fc_050f56f290a937ae016a56bc5393f0819688ca2dd8acfb6007","toolName":"read","content":[{"type":"text","text":"pub fn wan_shell_link_with(\n…\n) -> WanShellLinkOutcome {\n…\n    let round_trip = || -> std::io::Result<spt_daemon::ShellLinkRequestOutcome> {\n…\n        spt_daemon::request_shell_link(\n            brain,\n            conn.conn_id,\n            &address.id,\n            shell_ref,\n            action,\n            args,\n            op_id,\n            open_op,\n        )\n    };\n    match round_trip() {\n        Ok(spt_daemon::ShellLinkRequestOutcome::Ok(detail)) => {\n            WanShellLinkOutcome::Ok { node, detail }\n        }\n        Ok(spt_daemon::ShellLinkRequestOutcome::NoShell) => WanShellLinkOutcome::NoShell { node },\n        Ok(spt_daemon::ShellLinkRequestOutcome::NoReply) => WanShellLinkOutcome::NoReply { node },\n        Ok(spt_daemon::ShellLinkRequestOutcome::Failed(detail)) => {\n            WanShellLinkOutcome::RemoteFail { node, detail }\n        }\n        Err(e) => WanShellLinkOutcome::Failed(e.to_string()),\n    }\n}\n\n/// Subnet-scoped liveness probe for a node (M7 D2 / M8, REQ-SUBNET-1 +\n/// REQ-SUBNET-5 — the hybrid liveness's expensive half, spent only on rows\n/// gossip-recency could not settle): true iff the peer is reachable RIGHT NOW\n/// **and still serving `subnet`**. The raw dial alone is subnet-blind (one\n/// ALPN serves every subnet, so it only proves the box is up — a peer that\n/// `subnet detach`ed would keep reading online); so after the dial proves\n/// reachability we ask the peer \"serving `subnet`?\" over the serve-probe\n/// record, which it answers from its own `AttachmentStore` (REQ-SUBNET-5).\n/// Every failure mode (daemon down, no dialable address, refused/timed-out\n/// dial, peer answers not-serving / no reply) reads `false` — the caller\n/// renders offline, never errors a status view.\n// [impl->REQ-SUBNET-1]\n// [impl->REQ-SUBNET-5]\npub fn probe_node_serving(node_hex: &str, subnet: &str) -> bool {\n    if spt_daemon::daemon::ensure_running().is_err() {\n        return false;\n    }\n    let Ok(mut brain) = Brain::cold_start(&broker_socket_name(), now_ms()) else {\n        return false;\n    };\n    let Some(addr) = addr_for_node_hex(node_hex).and_then(|a| serde_json::to_value(a).ok()) else {\n        return false;\n    };\n    // Dial proves the box is reachable; the serve-probe refines it to \"still\n    // serving THIS subnet\" (a detached peer dials fine but answers false).\n    let Ok(dialed) = brain.net_dial(addr, None) else {\n        return false;\n    };\n    spt_daemon::request_subnet_probe(&mut brain, dialed.conn_id, subnet).unwrap_or(false)\n}\n\n/// Render a resolution refusal as VALID, COPY-PASTE-ABLE qualified targets\n/// (REQ-INST-10's refuse-and-qualify, made actionable): the user reads the\n/// exact strings that disambiguate, never a debug dump of node hex. Labels\n/// are preferred for `@node` qualifiers (REQ-SUBNET-3 made them addressable);\n/// a label shared between candidates falls back to the paste-able key prefix\n/// — the same never-guess-between-twins rule resolution itself enforces.\n// [impl->REQ-INST-10]\n// [impl->REQ-SUBNET-3]\npub fn render_refusal(\n    id: &str,\n    why: &Ambiguity,\n    regs: &BTreeMap<String, SubnetRegistry>,\n) -> String {\n    match why {\n        Ambiguity::AcrossNodes(nodes) => {\n            let targets: Vec<String> = nodes\n                .iter()\n                .map(|n| format!(\"{id}@{}\", node_qualifier(n, nodes, regs)))\n                .collect();\n            format!(\n                \"several nodes hold '{id}' — pick one: {}\",\n…\n            )\n        }\n…\n    }\n}\n\n[Showing lines 559-633 of 1429. Use :634 to continue]"}],"details":{"truncation":{"content":"            brain,\r\n            conn.conn_id,\r\n            &address.id,\r\n            shell_ref,\r\n            action,\r\n            args,\r\n            op_id,\r\n            open_op,\r\n        )\r\n    };\r\n    match round_trip() {\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::Ok(detail)) => {\r\n            WanShellLinkOutcome::Ok { node, detail }\r\n        }\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::NoShell) => WanShellLinkOutcome::NoShell { node },\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::NoReply) => WanShellLinkOutcome::NoReply { node },\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::Failed(detail)) => {\r\n            WanShellLinkOutcome::RemoteFail { node, detail }\r\n        }\r\n        Err(e) => WanShellLinkOutcome::Failed(e.to_string()),\r\n    }\r\n}\r\n\r\n/// Subnet-scoped liveness probe for a node (M7 D2 / M8, REQ-SUBNET-1 +\r\n/// REQ-SUBNET-5 — the hybrid liveness's expensive half, spent only on rows\r\n/// gossip-recency could not settle): true iff the peer is reachable RIGHT NOW\r\n/// **and still serving `subnet`**. The raw dial alone is subnet-blind (one\r\n/// ALPN serves every subnet, so it only proves the box is up — a peer that\r\n/// `subnet detach`ed would keep reading online); so after the dial proves\r\n/// reachability we ask the peer \"serving `subnet`?\" over the serve-probe\r\n/// record, which it answers from its own `AttachmentStore` (REQ-SUBNET-5).\r\n/// Every failure mode (daemon down, no dialable address, refused/timed-out\r\n/// dial, peer answers not-serving / no reply) reads `false` — the caller\r\n/// renders offline, never errors a status view.\r\n// [impl->REQ-SUBNET-1]\r\n// [impl->REQ-SUBNET-5]\r\npub fn probe_node_serving(node_hex: &str, subnet: &str) -> bool {\r\n    if spt_daemon::daemon::ensure_running().is_err() {\r\n        return false;\r\n    }\r\n    let Ok(mut brain) = Brain::cold_start(&broker_socket_name(), now_ms()) else {\r\n        return false;\r\n    };\r\n    let Some(addr) = addr_for_node_hex(node_hex).and_then(|a| serde_json::to_value(a).ok()) else {\r\n        return false;\r\n    };\r\n    // Dial proves the box is reachable; the serve-probe refines it to \"still\r\n    // serving THIS subnet\" (a detached peer dials fine but answers false).\r\n    let Ok(dialed) = brain.net_dial(addr, None) else {\r\n        return false;\r\n    };\r\n    spt_daemon::request_subnet_probe(&mut brain, dialed.conn_id, subnet).unwrap_or(false)\r\n}\r\n\r\n/// Render a resolution refusal as VALID, COPY-PASTE-ABLE qualified targets\r\n/// (REQ-INST-10's refuse-and-qualify, made actionable): the user reads the\r\n/// exact strings that disambiguate, never a debug dump of node hex. Labels\r\n/// are preferred for `@node` qualifiers (REQ-SUBNET-3 made them addressable);\r\n/// a label shared between candidates falls back to the paste-able key prefix\r\n/// — the same never-guess-between-twins rule resolution itself enforces.\r\n// [impl->REQ-INST-10]\r\n// [impl->REQ-SUBNET-3]\r\npub fn render_refusal(\r\n    id: &str,\r\n    why: &Ambiguity,\r\n    regs: &BTreeMap<String, SubnetRegistry>,\r\n) -> String {\r\n    match why {\r\n        Ambiguity::AcrossNodes(nodes) => {\r\n            let targets: Vec<String> = nodes\r\n                .iter()\r\n                .map(|n| format!(\"{id}@{}\", node_qualifier(n, nodes, regs)))\r\n                .collect();\r\n            format!(\r\n                \"several nodes hold '{id}' — pick one: {}\",\r","truncated":true,"truncatedBy":"lines","totalLines":871,"totalBytes":3341,"outputLines":75,"outputBytes":3341,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"pub fn wan_shell_link_with(\n…\n) -> WanShellLinkOutcome {\n…\n    let round_trip = || -> std::io::Result<spt_daemon::ShellLinkRequestOutcome> {\n…\n        spt_daemon::request_shell_link(\n            brain,\r\n            conn.conn_id,\r\n            &address.id,\r\n            shell_ref,\r\n            action,\r\n            args,\r\n            op_id,\r\n            open_op,\r\n        )\r\n    };\r\n    match round_trip() {\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::Ok(detail)) => {\r\n            WanShellLinkOutcome::Ok { node, detail }\r\n        }\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::NoShell) => WanShellLinkOutcome::NoShell { node },\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::NoReply) => WanShellLinkOutcome::NoReply { node },\r\n        Ok(spt_daemon::ShellLinkRequestOutcome::Failed(detail)) => {\r\n            WanShellLinkOutcome::RemoteFail { node, detail }\r\n        }\r\n        Err(e) => WanShellLinkOutcome::Failed(e.to_string()),\r\n    }\r\n}\r\n\r\n/// Subnet-scoped liveness probe for a node (M7 D2 / M8, REQ-SUBNET-1 +\r\n/// REQ-SUBNET-5 — the hybrid liveness's expensive half, spent only on rows\r\n/// gossip-recency could not settle): true iff the peer is reachable RIGHT NOW\r\n/// **and still serving `subnet`**. The raw dial alone is subnet-blind (one\r\n/// ALPN serves every subnet, so it only proves the box is up — a peer that\r\n/// `subnet detach`ed would keep reading online); so after the dial proves\r\n/// reachability we ask the peer \"serving `subnet`?\" over the serve-probe\r\n/// record, which it answers from its own `AttachmentStore` (REQ-SUBNET-5).\r\n/// Every failure mode (daemon down, no dialable address, refused/timed-out\r\n/// dial, peer answers not-serving / no reply) reads `false` — the caller\r\n/// renders offline, never errors a status view.\r\n// [impl->REQ-SUBNET-1]\r\n// [impl->REQ-SUBNET-5]\r\npub fn probe_node_serving(node_hex: &str, subnet: &str) -> bool {\r\n    if spt_daemon::daemon::ensure_running().is_err() {\r\n        return false;\r\n    }\r\n    let Ok(mut brain) = Brain::cold_start(&broker_socket_name(), now_ms()) else {\r\n        return false;\r\n    };\r\n    let Some(addr) = addr_for_node_hex(node_hex).and_then(|a| serde_json::to_value(a).ok()) else {\r\n        return false;\r\n    };\r\n    // Dial proves the box is reachable; the serve-probe refines it to \"still\r\n    // serving THIS subnet\" (a detached peer dials fine but answers false).\r\n    let Ok(dialed) = brain.net_dial(addr, None) else {\r\n        return false;\r\n    };\r\n    spt_daemon::request_subnet_probe(&mut brain, dialed.conn_id, subnet).unwrap_or(false)\r\n}\r\n\r\n/// Render a resolution refusal as VALID, COPY-PASTE-ABLE qualified targets\r\n/// (REQ-INST-10's refuse-and-qualify, made actionable): the user reads the\r\n/// exact strings that disambiguate, never a debug dump of node hex. Labels\r\n/// are preferred for `@node` qualifiers (REQ-SUBNET-3 made them addressable);\r\n/// a label shared between candidates falls back to the paste-able key prefix\r\n/// — the same never-guess-between-twins rule resolution itself enforces.\r\n// [impl->REQ-INST-10]\r\n// [impl->REQ-SUBNET-3]\r\npub fn render_refusal(\r\n    id: &str,\r\n    why: &Ambiguity,\r\n    regs: &BTreeMap<String, SubnetRegistry>,\r\n) -> String {\r\n    match why {\r\n        Ambiguity::AcrossNodes(nodes) => {\r\n            let targets: Vec<String> = nodes\r\n                .iter()\r\n                .map(|n| format!(\"{id}@{}\", node_qualifier(n, nodes, regs)))\r\n                .collect();\r\n            format!(\r\n                \"several nodes hold '{id}' — pick one: {}\",\r\n…\n            )\n        }\n…\n    }\n}","startLine":516,"lineNumbers":[516,null,527,null,556,null,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,null,635,636,null,647,648]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/wansend.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":1429,"totalBytes":3341,"outputLines":75,"outputBytes":3341,"shownRange":{"start":559,"end":633},"nextOffset":634}}},"isError":false,"timestamp":1784069203934}}
{"type":"message","id":"cd490876","parentId":"708e5657","timestamp":"2026-07-14T22:47:13.048Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Analyzing node array emptiness cause**\n\n**Correlating log timestamps with failures**\n\n**Inspecting registry remote node data**"},{"type":"thinking","thinking":"**Investigating remote row eviction timing**"},{"type":"toolCall","id":"call_CNJbxfQLOsSKnZMxTHHzhh3y|fc_050f56f290a937ae016a56bc70e70c81968b8ee2151004f41f","name":"grep","arguments":{"i":"Finding registry eviction events","pattern":"(?i)(REGISTRY.*(EVICT|EXPIRE|STALE|OFFLINE|REMOVE|SWEEP)|EVICT.*REGISTRY|ghost row|heard|visibility)","path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_pAiQfiY3ACd26TGVFb5JT6su|fc_050f56f290a937ae016a56bc70e89481968f51d1d32f6eb2f7","name":"grep","arguments":{"i":"Finding current remote instances","pattern":"\"node\"\\s*:\\s*\"(ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657|39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1|c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573|cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f)\"","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry","selector":null,"case":true,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_1UOrx0kEwiY8ndQxFK6OkRyD|fc_050f56f290a937ae016a56bc70ea9881968f6a369ae0f7775c","name":"grep","arguments":{"i":"Finding current local instances","pattern":"\"node\"\\s*:\\s*\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\"","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry","selector":null,"case":true,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_FOQkn5bubYy5ljY6lPIGzkDa|fc_050f56f290a937ae016a56bc70ec1c8196920d7ee64131685d","name":"grep","arguments":{"i":"Locating eviction cadence","pattern":"REGISTRY.*PERIOD|GHOST|EVICT|stale_after|OFFLINE_GRACE|lease","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/registry.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump","selector":null,"case":false,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_WRC79d3BAXpMYkp0OGNBDI11|fc_050f56f290a937ae016a56bc70ed848196a9e5ef476078d477","name":"read","arguments":{"i":"Reading daemon timing defaults","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/config.rs","selector":"1-220"}},{"type":"toolCall","id":"call_AUNKvHtIX7ym8kvhL81i7NJ8|fc_050f56f290a937ae016a56bc70ed8c81969197e322b06ace8c","name":"grep","arguments":{"i":"Locating installed SPT configs","pattern":"registry_pump_period|relay|SPT_RELAY|SPT_DISABLE|quic_op_timeout|pump_period","path":"C:/Users/decid/AppData/Local/spt-core; C:/Users/decid/Documents/projects/config.toml","selector":null,"case":false,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":11826,"output":1312,"cacheRead":171520,"cacheWrite":0,"totalTokens":184658,"reasoningTokens":588,"cost":{"input":0.05913,"output":0.03936,"cacheRead":0.08576,"cacheWrite":0,"total":0.18425}},"stopReason":"toolUse","timestamp":1784069203980,"responseId":"resp_050f56f290a937ae016a56bc5417bc8196ad97e8da29e88cfd","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc57de148196bc55f1ec7cf92e2d","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrxkQ5_wJ1SSUwwF3NlrLfUgtLPOIpkxi8byRm2x4KPkIPg3YhRglfJ1SFttvWwyYD6cC_Hkv536_6-lGiip5axLAC1vVd9qRfIqdyX00-B-72RfwQMvaM5tH6f4TeNaATrzi0FssDenSZRTIrS05BHAUOw8qpgv13WEeJkaNL4gwSFbRNqugI2PsVd2exiDwxuUbQUOk5p74kdwmpTLGSlaFBwbsZyGHUnkSmo-loV0L32VDJbxakQBKgq-jcAu7nFk-h2HjTxjTWz_ozbD5hxFN197IDEudYq6MU3eBmoDIkmACunU0DclCPzZe5q6fyRKdh_CHVp5h_bFJB68r2k8SkUOlettx_LramwHGtS77WKia8zsyZjjQae0CthKDbs0wOOMdfFT8XtbQcWrTAtzE1ulPLQ3oau16ChEo969M76SSfZj-3pcib4s-KYjx76zPWu437LDZ-zhc6yip_g8Zv7QZFwtE2el8JLSukIHf70LUKdKDKXWe0FdeqfRF_emDx-18Dc_4-DbpXTMqqKKLKljzeCaloxfUha0mtC3U92FtL-4ZTPmyEOK1WLbUxDLzN0hfSQUsGaweASnGCANKHDQ4_HDD-s8IqeO7a-ZMXnIN0UKpYgW6GxY5d7MA3C9g-SEsJvM3MqvPiXgWRV35OUU1I7ncyG8zRhB4eAS2tSMVDxFG35sghID-ZEaYiJ2a-aZhAmcyt_a5aE4ZPzW38QqByD9Zg3ZGnbF9OESWsU-VrvcD_SmHuWaHL-gtmWUozAofJbc7PSll1tvYywzk5uMfcqGVYMl7bB0O7UG8QLosROTne6OnckbtQXi3IL_ZgBUMG7o5ToGaNYAIiqHBJHRIrpCO_VSpogSdL_9xRcsVuRqNBjGk6SZObjkf7Zf4iAcqS4WNT0wZrL_2xk87kpLFDMfgqQ55FN2vuU_wcBKAwhwm5O2Z9_wDzjjugnXzENBE8SEPZ75u1tgYtrfByOPYbWfjuyl447jVIEOqHGLmW0g-k2WzAp_sdpA52JrBRyLB29CYrh0IC1pkkcD09odzCOPVvgVmU8WSmYaqV7LKsDtzFL3eR2kI_Btsmoi13369QpNyGYXgT2mwpsMQcAxO23g-RynhKYGrkMxSQtFaoi7OwmkOBmdy7mtW3Th6EH4Odpn4C5parmS_a_PWRtYpVKiy5zoLxef0m-IDxcvgZYq8PYI5YPNaxwW3tsYpUzs9FyR8V5lbZ7rsAunutZsvwsqMJjF19h76lxXbGRqu2B980U5jMLJPcEVbNsVMfnkISKuN5wc0oSl8UM4HkbNfvfERlMtGt2fje-G8h6FumMOx7Dg8mUWQ2Vpn2TBNbZeXKOHkPXzN2Iefbtqt3M--sb3jAvuI7Xn1m5Kx400r_yKhjDcyFtDAEDeJL0xsr8zcPfjC01j8ZSauwODcI-PQ4Q5wmSTlhBORSFcD4T6SRFzgbg94FqM4Uca33qYsjR5bELVE9rd-8J8g6pMiNqJtaAVOS-jI1SnNKba4y0cB6BT2Si3KMgc_IKWUWNblXEiEO5B6GSJ0GAV3K0rJMT84i8XIcxZd56a5gxp3wLKQnnCBvpv6HWoy7yLRXbi3YnJ8gPFay6yLdntmKO5vAK4boD4dTzkDPVVekPfqbipupOHEW0V-Vb-SRjk5SfZmudgS5kB4HdmFpDsrvpomFxvlkr7NolAV_hKWVeUzxAsJooMiMSljlRKQnboRES6TJXr_Iw4L8TgWrAq6cdxxAh3WzdW0IV8nK26TiooQdXBJXUhwPmKUO9BGTz_yogdyfsrALtKB8ojaQz9XR75FbdqpMKdTtMzYH1W4kau4AKwUWDejkNyGJMfQ6ngjUZUP_meOssGoL-rZk-rvrtZbhyInDeEsMKUV533jvsyh3AUUmgfW9NUOH6m2ajzQI6yf0tUbn_-WpdmPmNSfG1dAsBlk_NKttfoZ3XwqkhnwHHrGIL8p2XIYua_uxrh0m2GKjSw4MijRxx3tRAQZmM9sZGSXPDhZSnb_E6OCLivGd9krzziELawrIju6r58EMVVc-leMwTydIh2f3j6xIAQNHkUhzMzGE4aivmpVyAjrKliBpk5dkGNDG_pi2Ee3X1QslQkx98Od3_D8RLXDU7b92Gm5AVkroZeplnnscrWHiwa4iBPJJC24KsoaxQAsSUCbFkOAd1bg_CQntdCUx1Bu4hlsJJnJtyJ16_XU2_SXXQwMLukBtHk3J6dpgNi9yKYCCxuC14dKgpG2XIXSzvUGQNNHA5YtKRIKD6sGQIDsminqckrON7FgrFspTkJ00n7Dw0Ypg3cgTywpMZ11ntvQVsNbheB1L3-gA7PkeHFd_WXtXXNoKxbaqpIbwZskMuYQqT09pBhtF_xJpmguvi3a3kk94pzV-ytt9rVbz-EkSLh2TT7tnV2rRgcGfBzTcpScssW4V3S-zgtsbyVf1DoyFBCdwxEaijLFq1jMUsq3GAxuYBltvgntJgdFasfPMuC4G_CwKu-OvKECuGIMpPgMAql09SfsBExp2gXYxhYmrrV4GIYNCw9eE5IrsT0S6NLvK5nM5eqtmWVMpI_4wbReN34p7P0XcOW8k68Vf9XuJAN9tcUjAyMmZCtpUzNJnBQBBhJh4w8xt0PO6N5fuae3PDpxD94vD1HYHDwJO0shdQvmk9Ai4ugiI_0ovHVLy34mVnTpN-1vfQTu-E4ChbJATauCyp-0IBkk3djVJ8W3NCxGhFnWUqMXn6dydvrjhOlAeLrJecn9uT37enHBuzZYRiriILHE9CpXDJG-Ev5ySl_dwvQkQs1zlKYDuM_xIPRM_J_UjNI01rvJDGjJ46RSGT_PNJ7mvAU5zvcTfit6JNxKrZ0qJpbqJebgQGOJeoGCfOxyhlze3c6xJ3PH-6SFyetLkWNfPEcEDFYQpIP3pHHQS1j94j8ykBsY3vYFo0IUdGmsRjDxHdR6ZDrCgrVtmgh4y26yNXpwiBN6MTA9ApIPA6p28snW6jCVmf-YwgScg7pqIQB6UvTeZ2h3Gn5H1BSZgkrKXjigP5BNn2sjvAUcnDWS9IRA0dofTvYyEQx-Y-0rxW7KDF0UeP9KJCa5R7MsDqpoCG_dCTBr1WFMvmrSnJP7yYbLqGm9nBljlBMQSSZAw0GdtITcnEiIvNxG_0_4rJkykMjHtNHRCarBZ5HHqCGK6W4jAQIPGB7jjCLFC7dAqHIVsMMUb8HH6MkBZPLnWINxrb-E_GkPXgTkbFlbXW4faNyGgwtLeC1_u7qH_FTalGXo7tF3_uDZA8bmwSHPNAqnwq0q1JTpxZcp5KA7_J_6PkM1cP9O2bkLYhSl-bY-QDApxbuFmcU4Oca8NjL2XeQOUzRMx3WdDiKX2RU7eY-ep6kqRDQiNNdn3QaWE8OPfOFQkM-ARvGE8oJgr2rQxEiXGtnNj_I56AZ2c1iNdBOoI6qxITQjuLQuIi1wII2WiaSjkbxM4qis1Dk1tT3g0ELf0_cpqdfTrWLrFoKWUkDARxOdjm1MwOdpi3Uq5AxwMRKrDI8dNBRrffxIRjzQ_2cNdOtCTA0hIOqXudCTCzd0DrWgClA2EAeudJyjVNhT1w49ikz57KWK3MWX5cL2XjcwkS8WtzegANmhyZL1uG_CP-ts723UG8MQs3qJKiG5H3brAQgMnkcVkirM27p2JE0tvrru17Pd_hQJH1I9h3HMzrHENDMk_nUe-gYKsK2Dm2I87f8M_ZsSLGTRRu9KMZKXE5ceQYDg2DsF_QC4TJ3kPazoKTjh0KyGTUdSsBwTaovL33Vc8a_mSXogEHcoSriPstQsIjUztqkpmk=","summary":[{"type":"summary_text","text":"**Analyzing node array emptiness cause**"},{"type":"summary_text","text":"**Correlating log timestamps with failures**"},{"type":"summary_text","text":"**Inspecting registry remote node data**"}]},{"id":"rs_050f56f290a937ae016a56bc64f1808196a78780bbb7302aa0","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrxwLzToPE7zeSdeFj-WYZsdoRTxe5aBA0LZXmAqxiINwDhWToy6yCyVoUnyBUcIn2Rh9M_J1uz0NzjLeZ7qbhICZFFCi2UctyxY9PZlAK9a8e0IrZdHZBK1wEcEwVKZumBUJVvyJc0cslRGC1b5OmBW6iEORH13E-EXpe_RTyA36-wFup-V1oQtHsGeJcqfO0mU6eIIR2EIkL8SzGs9xbWTJAo3mr4dFsS3tSOTVsEBarEkb7oMxONGkrr-PnctxKXoAQsTEN-akfqsGQAzPIa4Oyho7Ym2amn6erMwW53ciFQy7ObxhHIpGgWRyJcyQY2STt1ivxTlPymY7nwajFhWhIXmAN7AuKGrO-hxkDZNQ9Q07Np1zSJXwXXcDUqWGgmax103ytH5tWLB9WFgSqOWd_fcRgO-QtTCCjp2vlY6BOTW6WsbATFPmHz6u1uRrU-MYUtetxzS2Y0D55umIDCz_NVqkIDUr_z6vcLxSz7yQKX9qQKyWDu_LWMlzg78DM4gVMM8074zfI7M218Gmt41C-a9ubhBC8rK91z3F4IOrm_tDCWxNG9E9G6_yz-nSDuPmqQqpucZm3AqkZ0gWwHQtIPx6OZnxrjng7KsWgYswfyN9b8NAYlLwXrRNqGTgsGdFvZm-i-d_ceKdrsCbMNC4YYQD_QVwDIgKusI4Sj2wa-VnYoAm2qg3KFO-e-uQeBfoy9giQJ_VadmpB6ttNeI_cid3ONYG_7P4TKc6hnfyM2CKgCMTMKKNjcKtPK3bFaN8vuaUoVj-rlNJ_AIfkLOoqxg2ywIDvKOD3IMo1VOjoqgD2t_Hb83y3pkIMUVurLftkoUu3dcr4b9oZXkrn9sElhTvIJoKBMROnwpA7k8RRHoWCaKjbEkxtAfWfCUDTCzydAeeu4OzvPfGINqLLtB-UBjIruKahW7psW4d4CmwA4tkZ6v0SfsVe3xu-FRhpxCtsXBImTox2Yjl0KuDPkCm6woF8NnufhXSsNGIenmwD0Gk52mPRMMXGsi-s1TC6ASn2z2jpIw25maExAqPJO-V2HmNX2JKndKD0QxXW5WwbQCAzBm10C6i65YNJMawvNV4EZSEXbt4ZQYZt1zRlFWZDy7wDc-ZYQKaGF24Jt3v4jBd8fPj2z6-wyWAPDnIGMpItNlyBnQPInw0oieFcFETaI-H2wGdDKU4kr4FBW99yheu99JjutVma_GfjpbTDBZ4oqXjRPeTfISEbyB1hHg1ZJvs5x9qqX955JLj6jNgE_nOrfcVXbJJiEPjPZnTM4eYiZo24z5vVGxW9qxsSoGeSp7QSZZ_ApW9mZsk5OSb7CUUBMoySnW7v_b1onGkicayAG2SOskkyuYHxZBlsms2A==","summary":[{"type":"summary_text","text":"**Investigating remote row eviction timing**"}]},{"id":"fc_050f56f290a937ae016a56bc70e70c81968b8ee2151004f41f","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding registry eviction events\",\"pattern\":\"(?i)(REGISTRY.*(EVICT|EXPIRE|STALE|OFFLINE|REMOVE|SWEEP)|EVICT.*REGISTRY|ghost row|heard|visibility)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_CNJbxfQLOsSKnZMxTHHzhh3y","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc70e89481968f51d1d32f6eb2f7","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding current remote instances\",\"pattern\":\"\\\"node\\\"\\\\s*:\\\\s*\\\"(ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657|39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1|c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573|cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f)\\\"\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry\",\"selector\":null,\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_pAiQfiY3ACd26TGVFb5JT6su","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc70ea9881968f6a369ae0f7775c","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding current local instances\",\"pattern\":\"\\\"node\\\"\\\\s*:\\\\s*\\\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\\\"\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry\",\"selector\":null,\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_1UOrx0kEwiY8ndQxFK6OkRyD","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc70ec1c8196920d7ee64131685d","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating eviction cadence\",\"pattern\":\"REGISTRY.*PERIOD|GHOST|EVICT|stale_after|OFFLINE_GRACE|lease\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/registry.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_FOQkn5bubYy5ljY6lPIGzkDa","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc70ed848196a9e5ef476078d477","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading daemon timing defaults\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/config.rs\",\"selector\":\"1-220\"}","call_id":"call_WRC79d3BAXpMYkp0OGNBDI11","name":"read"},{"id":"fc_050f56f290a937ae016a56bc70ed8c81969197e322b06ace8c","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating installed SPT configs\",\"pattern\":\"registry_pump_period|relay|SPT_RELAY|SPT_DISABLE|quic_op_timeout|pump_period\",\"path\":\"C:/Users/decid/AppData/Local/spt-core; C:/Users/decid/Documents/projects/config.toml\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_AUNKvHtIX7ym8kvhL81i7NJ8","name":"grep"}]},"duration":29067.166100025177,"ttft":3913.6381999850273,"contextSnapshot":{"promptTokens":183346,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_CNJbxfQLOsSKnZMxTHHzhh3y|fc_050f56f290a937ae016a56bc70e70c81968b8ee2151004f41f","toolName":"grep","startedAt":"2026-07-14T22:47:13.048Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Finding registry eviction events"},"id":"c460559c","parentId":"cd490876","timestamp":"2026-07-14T22:47:13.048Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_pAiQfiY3ACd26TGVFb5JT6su|fc_050f56f290a937ae016a56bc70e89481968f51d1d32f6eb2f7","toolName":"grep","startedAt":"2026-07-14T22:47:13.048Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry"},"intent":"Finding current remote instances"},"id":"dff925e1","parentId":"c460559c","timestamp":"2026-07-14T22:47:13.048Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_1UOrx0kEwiY8ndQxFK6OkRyD|fc_050f56f290a937ae016a56bc70ea9881968f6a369ae0f7775c","toolName":"grep","startedAt":"2026-07-14T22:47:13.048Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry"},"intent":"Finding current local instances"},"id":"a6f054d1","parentId":"dff925e1","timestamp":"2026-07-14T22:47:13.048Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_FOQkn5bubYy5ljY6lPIGzkDa|fc_050f56f290a937ae016a56bc70ec1c8196920d7ee64131685d","toolName":"grep","startedAt":"2026-07-14T22:47:13.048Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/registry.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs; C:/Users/decid/Documents/projects/spt-c…"},"intent":"Locating eviction cadence"},"id":"b9cc323e","parentId":"a6f054d1","timestamp":"2026-07-14T22:47:13.048Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_WRC79d3BAXpMYkp0OGNBDI11|fc_050f56f290a937ae016a56bc70ed848196a9e5ef476078d477","toolName":"read","startedAt":"2026-07-14T22:47:13.049Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/config.rs"},"intent":"Reading daemon timing defaults"},"id":"84277d99","parentId":"b9cc323e","timestamp":"2026-07-14T22:47:13.049Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_AUNKvHtIX7ym8kvhL81i7NJ8|fc_050f56f290a937ae016a56bc70ed8c81969197e322b06ace8c","toolName":"grep","startedAt":"2026-07-14T22:47:13.049Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core; C:/Users/decid/Documents/projects/config.toml"},"intent":"Locating installed SPT configs"},"id":"47ff6116","parentId":"84277d99","timestamp":"2026-07-14T22:47:13.049Z"}
{"type":"message","id":"99e92d8d","parentId":"47ff6116","timestamp":"2026-07-14T22:47:13.056Z","message":{"role":"toolResult","toolCallId":"call_WRC79d3BAXpMYkp0OGNBDI11|fc_050f56f290a937ae016a56bc70ed848196a9e5ef476078d477","toolName":"read","content":[{"type":"text","text":"//! Durable daemon configuration (B3) — the configurable pulse period that\n//! replaces the interim 5s constant.\n//!\n//! In the no-daemon interim model the pulse cadence was a hard-coded\n//! `spt_live::pulse::DEFAULT_PULSE_PERIOD` (5s). Consolidation (REQ-DAEMON-1)\n//! folds the pulse loop into the brain as a *scheduled* in-process loop whose\n//! period is **durable and configurable**, sourced from a small JSON file under\n//! the spt home (`<spt_home>/daemon.json`) and falling back to the default when\n//! absent. Kept deliberately tiny — one struct, JSON via the crate's existing\n//! `serde_json` dep (no new TOML edge) — so the brain's loop reads its cadence\n//! from config, never a constant.\n// [impl->REQ-DAEMON-1]\n\nuse std::path::{Path, PathBuf};\nuse std::time::Duration;\n\nuse serde::{Deserialize, Serialize};\n\n/// The interim default pulse period carried forward as the config default. The\n/// daemon now treats this as a *fallback*, not a constant: `daemon.json` may\n/// override it per machine.\npub const DEFAULT_PULSE_PERIOD: Duration = Duration::from_secs(5);\n\n/// Default drop-file precedence protection window (epoch-ms), mirroring the\n/// interim `spt_live` guard. Surfaced here so the one config source owns it.\npub const DEFAULT_PROTECTION_WINDOW_MS: u64 = 2_000;\n\n/// Default orphan-watch grace window (B7): how long the supervised-crash teardown\n/// waits after observing a hosted Self's harness owner gone before it rechecks\n/// liveness and signs off (KNOWN-HAZARDS 1.1). Sized to cover a transient recovery\n/// — a binary handoff relaunch or a brief stale poll — without delaying a real\n/// teardown for long. Configurable per machine via `crash_grace_ms`.\npub const DEFAULT_CRASH_GRACE: Duration = Duration::from_secs(2);\n\n/// Default peer-pump cadences (D9-1): how often the daemon pushes its\n/// registry/notif feeds to trusted peers and pulls context syncs from them.\n/// Conservative defaults — every loop is a thin call over an idempotent\n/// driver, so a missed tick costs only latency, never correctness.\npub const DEFAULT_REGISTRY_PUMP_PERIOD: Duration = Duration::from_secs(30);\npub const DEFAULT_NOTIF_PUMP_PERIOD: Duration = Duration::from_secs(15);\npub const DEFAULT_SYNC_PULL_PERIOD: Duration = Duration::from_secs(60);\npub const DEFAULT_UPDATE_CHECK_PERIOD: Duration = Duration::from_secs(3_600);\n\n/// Default silent-peer registry eviction window (KNOWN-HAZARDS 4.10): rows\n/// authored by a node not heard within this window are evicted on the next\n/// registry pump tick. Sized to ~10 default pump cadences — generous against\n/// transient drops (a peer re-advertises every cadence, so one admitted feed\n/// inside the window keeps its rows), short enough that a dead node identity\n/// stops poisoning bare-id resolution within minutes.\npub const DEFAULT_REGISTRY_EVICT_AFTER: Duration = Duration::from_secs(300);\n\n/// Which relay stance the broker's net endpoint runs (ADR-0002 / REQ-NET-2) —\n/// the `\"relay\"` knob in `daemon.json`. Maps onto `spt-net`'s `RelayPolicy` in\n/// `Daemon::run`; kept as a local enum so the config layer stays transport-free.\n/// The self-hosted variant (`RelayPolicy::SelfHosted`) needs a relay-map URL\n/// list and gets its config plumbing when a self-host consumer exists.\n// [impl->REQ-NET-2]\n#[derive(Debug, Clone, Copy, PartialEq, Eq)]\npub enum RelayChoice {\n    /// n0's public relays — the zero-config default (`\"relay\": \"n0\"`).\n    N0,\n    /// No relays: direct/LAN only (`\"relay\": \"disabled\"`).\n    Disabled,\n}\n\n/// One saved `endpoint run --save` startup default (F-038 W5,\n/// REQ-ENDPOINT-AUTOSTART): the daemon REPLAYS these at start — the endpoint\n/// analog of the shipped `subnet attach/detach --save` precedent. Minimal by\n/// design: the adapter option is re-resolved fresh at each replay (an adapter\n/// update between restarts is honored, an uninstalled one loud-skips), and the\n/// endpoint's home subnet is NOT recorded (home is durable on the perch —\n/// REQ-INST-15). A replay is always a FRESH session (shape (c)\n/// restore-what-was-up was rejected — this is a startup default, not a\n/// session restore).\n// [impl->REQ-ENDPOINT-AUTOSTART]\n#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\npub struct StartupEndpoint {\n    /// The endpoint id to bring up.\n    pub id: String,\n    /// The adapter option (`<adapter>[:profile]`), resolved at replay time.\n    pub adapter: String,\n    /// The project cwd the harness PTY lands in (captured at `--save`).\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    pub cwd: Option<String>,\n}\n\n/// The on-disk shape (`<spt_home>/daemon.json`). Every field is optional so a\n/// partial file still loads (forward/back-compat) — a missing field takes the\n/// default. Stored as plain integers (ms) to keep the file human-editable.\n#[derive(Debug, Clone, Default, Serialize, Deserialize)]\nstruct DaemonConfigFile {\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    pulse_period_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    protection_window_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    crash_grace_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    full_auto_update: Option<bool>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    relay: Option<String>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    peer_pump: Option<bool>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    registry_pump_period_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    registry_evict_after_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    notif_pump_period_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    sync_pull_period_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    update_check_period_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    auto_suspend_after_ms: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    resources_blurb: Option<String>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    detached_subnets: Option<Vec<String>>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    worker_reap_ttl_secs: Option<u64>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    startup_endpoints: Option<Vec<StartupEndpoint>>,\n}\n\n/// Resolved daemon configuration. The brain's scheduled loops read their cadence\n/// from `pulse_period`; the drop-ingest guard reads `protection_window_ms`.\n/// (No longer `Copy` — `resources_blurb` carries a `String`; callers clone.)\n#[derive(Debug, Clone, PartialEq, Eq)]\npub struct DaemonConfig {\n    /// The pulse loop period (config-driven; defaults to [`DEFAULT_PULSE_PERIOD`]).\n    pub pulse_period: Duration,\n    /// The drop-file precedence protection window in epoch-ms (6.5).\n    pub protection_window_ms: u64,\n    /// The orphan-watch grace window (B7): the recovery wait before a\n    /// supervised-crash teardown rechecks liveness and signs off (1.1).\n    pub crash_grace: Duration,\n    /// Whether self-update is full-auto (C2, REQ-UPD-4). **Default `false`** — an\n    /// update is gated on user confirmation delivered to the most-recently-active\n    /// live session. Setting this to `true` is the explicit opt-in to the\n    /// seamless, prompt-free path.\n    pub full_auto_update: bool,\n    /// The broker net endpoint's relay stance (D4a, REQ-NET-2). Default\n    /// [`RelayChoice::N0`] — the ADR-0002 zero-config path. An unrecognized\n    /// string degrades to the default (forward-compat: a future value must not\n    /// wedge an older daemon).\n    pub relay: RelayChoice,\n    /// Whether the peer pump runs at all (D9-1). Default `true` — the subnet\n    /// self-drives; `false` is the kill switch for debugging/hermetic setups.\n    pub peer_pump: bool,\n    /// Registry feed push cadence (D9-1).\n    pub registry_pump_period: Duration,\n    /// Silent-peer registry eviction window (KNOWN-HAZARDS 4.10): rows from a\n    /// node not heard within this window are evicted on the next registry\n    /// pump tick — a dead node identity must not poison bare-id resolution\n    /// forever. Default [`DEFAULT_REGISTRY_EVICT_AFTER`].\n    pub registry_evict_after: Duration,\n    /// Notif feed push cadence (D9-1).\n    pub notif_pump_period: Duration,\n    /// Context sync pull cadence — the anti-entropy loop (D9-1).\n    pub sync_pull_period: Duration,\n    /// Update check cadence (D9-1; the pull rides the same trusted conns).\n    pub update_check_period: Duration,\n    /// The NODE leg of the auto-suspend knob chain (D9-2, REQ-INST-3):\n    /// dormant → suspended after this many ms counted from dormancy onset.\n    /// **`None` = the global default, OFF** — auto-suspend is opt-in\n    /// (CONTEXT §dormant/suspended); a constrained node sets it here, and a\n    /// per-endpoint `info.json` override wins over this value\n    /// ([`crate::resting::effective_auto_suspend`]).\n    pub auto_suspend_after_ms: Option<u64>,\n    /// The node-level resource-advertisement seed (D9-4, REQ-INST-14): the\n    /// default blurb advertised for an endpoint that has not authored its\n    /// own (`info.json` `resources` wins when present — config seeds, the\n    /// agent refines; CONTEXT §resource advertisement). `None` = endpoints\n    /// without their own blurb advertise none.\n    pub resources_blurb: Option<String>,\n    /// Subnets whose serve-state STARTS detached (M8 decision 6,\n    /// REQ-SUBNET-5): the daemon's boot reset seeds the live\n    /// `attachment.json` from this list — `spt subnet detach/attach --save`\n    /// writes it. Default empty = every held subnet starts attached.\n    pub detached_subnets: Vec<String>,\n    /// The worker-reap TTL floor (seconds since a worker's `started`), W-3\n    /// (REQ-WORKER-REAP): the reconcile GC reaps any worker older than this even\n    /// under a live parent with a stale `ready` marker (the `SubagentStop`-never-fired\n    /// leak class). Default [`spt_store::worker_reap::DEFAULT_REAP_TTL_SECS`] (24h),\n    /// clamped at the reap site to a ≥1h floor (a fat-fingered tiny value can never\n    /// mass-kill in-flight workers); `0` disables the TTL leg.\n    pub worker_reap_ttl_secs: u64,\n    /// Endpoints replayed as startup defaults at daemon start (F-038 W5,\n    /// REQ-ENDPOINT-AUTOSTART) — `spt endpoint run --save` writes this list.\n    /// Default empty = nothing auto-starts. A replay failure logs loud and\n    /// never blocks daemon start or the other replays.\n    pub startup_endpoints: Vec<StartupEndpoint>,\n}\n\nimpl Default for DaemonConfig {\n    fn default() -> Self {\n        DaemonConfig {\n            pulse_period: DEFAULT_PULSE_PERIOD,\n            protection_window_ms: DEFAULT_PROTECTION_WINDOW_MS,\n            crash_grace: DEFAULT_CRASH_GRACE,\n            full_auto_update: false, // gated by default (REQ-UPD-4)\n            relay: RelayChoice::N0,  // zero-config default (ADR-0002)\n            peer_pump: true,         // the subnet self-drives (D9-1)\n            registry_pump_period: DEFAULT_REGISTRY_PUMP_PERIOD,\n            registry_evict_after: DEFAULT_REGISTRY_EVICT_AFTER,\n            notif_pump_period: DEFAULT_NOTIF_PUMP_PERIOD,\n            sync_pull_period: DEFAULT_SYNC_PULL_PERIOD,\n            update_check_period: DEFAULT_UPDATE_CHECK_PERIOD,\n            auto_suspend_after_ms: None, // opt-in, default OFF (REQ-INST-3)\n            resources_blurb: None,       // endpoints author their own (REQ-INST-14)\n            detached_subnets: Vec::new(), // every held subnet starts attached (REQ-SUBNET-5)\n            worker_reap_ttl_secs: spt_store::worker_reap::DEFAULT_REAP_TTL_SECS, // 24h (W-3)\n            startup_endpoints: Vec::new(), // nothing auto-starts by default (REQ-ENDPOINT-AUTOSTART)\n        }\n    }\n}\n\nimpl DaemonConfig {\n    /// The canonical config path: `<spt_home>/daemon.json`.\n    pub fn default_path() -> PathBuf {\n        spt_store::perch::spt_home().join(\"daemon.json\")\n    }\n…\n}\n\n[Showing lines 1-223 of 642. Use :224 to continue]"}],"details":{"truncation":{"content":"//! Durable daemon configuration (B3) — the configurable pulse period that\r\n//! replaces the interim 5s constant.\r\n//!\r\n//! In the no-daemon interim model the pulse cadence was a hard-coded\r\n//! `spt_live::pulse::DEFAULT_PULSE_PERIOD` (5s). Consolidation (REQ-DAEMON-1)\r\n//! folds the pulse loop into the brain as a *scheduled* in-process loop whose\r\n//! period is **durable and configurable**, sourced from a small JSON file under\r\n//! the spt home (`<spt_home>/daemon.json`) and falling back to the default when\r\n//! absent. Kept deliberately tiny — one struct, JSON via the crate's existing\r\n//! `serde_json` dep (no new TOML edge) — so the brain's loop reads its cadence\r\n//! from config, never a constant.\r\n// [impl->REQ-DAEMON-1]\r\n\r\nuse std::path::{Path, PathBuf};\r\nuse std::time::Duration;\r\n\r\nuse serde::{Deserialize, Serialize};\r\n\r\n/// The interim default pulse period carried forward as the config default. The\r\n/// daemon now treats this as a *fallback*, not a constant: `daemon.json` may\r\n/// override it per machine.\r\npub const DEFAULT_PULSE_PERIOD: Duration = Duration::from_secs(5);\r\n\r\n/// Default drop-file precedence protection window (epoch-ms), mirroring the\r\n/// interim `spt_live` guard. Surfaced here so the one config source owns it.\r\npub const DEFAULT_PROTECTION_WINDOW_MS: u64 = 2_000;\r\n\r\n/// Default orphan-watch grace window (B7): how long the supervised-crash teardown\r\n/// waits after observing a hosted Self's harness owner gone before it rechecks\r\n/// liveness and signs off (KNOWN-HAZARDS 1.1). Sized to cover a transient recovery\r\n/// — a binary handoff relaunch or a brief stale poll — without delaying a real\r\n/// teardown for long. Configurable per machine via `crash_grace_ms`.\r\npub const DEFAULT_CRASH_GRACE: Duration = Duration::from_secs(2);\r\n\r\n/// Default peer-pump cadences (D9-1): how often the daemon pushes its\r\n/// registry/notif feeds to trusted peers and pulls context syncs from them.\r\n/// Conservative defaults — every loop is a thin call over an idempotent\r\n/// driver, so a missed tick costs only latency, never correctness.\r\npub const DEFAULT_REGISTRY_PUMP_PERIOD: Duration = Duration::from_secs(30);\r\npub const DEFAULT_NOTIF_PUMP_PERIOD: Duration = Duration::from_secs(15);\r\npub const DEFAULT_SYNC_PULL_PERIOD: Duration = Duration::from_secs(60);\r\npub const DEFAULT_UPDATE_CHECK_PERIOD: Duration = Duration::from_secs(3_600);\r\n\r\n/// Default silent-peer registry eviction window (KNOWN-HAZARDS 4.10): rows\r\n/// authored by a node not heard within this window are evicted on the next\r\n/// registry pump tick. Sized to ~10 default pump cadences — generous against\r\n/// transient drops (a peer re-advertises every cadence, so one admitted feed\r\n/// inside the window keeps its rows), short enough that a dead node identity\r\n/// stops poisoning bare-id resolution within minutes.\r\npub const DEFAULT_REGISTRY_EVICT_AFTER: Duration = Duration::from_secs(300);\r\n\r\n/// Which relay stance the broker's net endpoint runs (ADR-0002 / REQ-NET-2) —\r\n/// the `\"relay\"` knob in `daemon.json`. Maps onto `spt-net`'s `RelayPolicy` in\r\n/// `Daemon::run`; kept as a local enum so the config layer stays transport-free.\r\n/// The self-hosted variant (`RelayPolicy::SelfHosted`) needs a relay-map URL\r\n/// list and gets its config plumbing when a self-host consumer exists.\r\n// [impl->REQ-NET-2]\r\n#[derive(Debug, Clone, Copy, PartialEq, Eq)]\r\npub enum RelayChoice {\r\n    /// n0's public relays — the zero-config default (`\"relay\": \"n0\"`).\r\n    N0,\r\n    /// No relays: direct/LAN only (`\"relay\": \"disabled\"`).\r\n    Disabled,\r\n}\r\n\r\n/// One saved `endpoint run --save` startup default (F-038 W5,\r\n/// REQ-ENDPOINT-AUTOSTART): the daemon REPLAYS these at start — the endpoint\r\n/// analog of the shipped `subnet attach/detach --save` precedent. Minimal by\r\n/// design: the adapter option is re-resolved fresh at each replay (an adapter\r\n/// update between restarts is honored, an uninstalled one loud-skips), and the\r\n/// endpoint's home subnet is NOT recorded (home is durable on the perch —\r\n/// REQ-INST-15). A replay is always a FRESH session (shape (c)\r\n/// restore-what-was-up was rejected — this is a startup default, not a\r\n/// session restore).\r\n// [impl->REQ-ENDPOINT-AUTOSTART]\r\n#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\r\npub struct StartupEndpoint {\r\n    /// The endpoint id to bring up.\r\n    pub id: String,\r\n    /// The adapter option (`<adapter>[:profile]`), resolved at replay time.\r\n    pub adapter: String,\r\n    /// The project cwd the harness PTY lands in (captured at `--save`).\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    pub cwd: Option<String>,\r\n}\r\n\r\n/// The on-disk shape (`<spt_home>/daemon.json`). Every field is optional so a\r\n/// partial file still loads (forward/back-compat) — a missing field takes the\r\n/// default. Stored as plain integers (ms) to keep the file human-editable.\r\n#[derive(Debug, Clone, Default, Serialize, Deserialize)]\r\nstruct DaemonConfigFile {\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    pulse_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    protection_window_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    crash_grace_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    full_auto_update: Option<bool>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    relay: Option<String>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    peer_pump: Option<bool>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    registry_pump_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    registry_evict_after_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    notif_pump_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    sync_pull_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    update_check_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    auto_suspend_after_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    resources_blurb: Option<String>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    detached_subnets: Option<Vec<String>>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    worker_reap_ttl_secs: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    startup_endpoints: Option<Vec<StartupEndpoint>>,\r\n}\r\n\r\n/// Resolved daemon configuration. The brain's scheduled loops read their cadence\r\n/// from `pulse_period`; the drop-ingest guard reads `protection_window_ms`.\r\n/// (No longer `Copy` — `resources_blurb` carries a `String`; callers clone.)\r\n#[derive(Debug, Clone, PartialEq, Eq)]\r\npub struct DaemonConfig {\r\n    /// The pulse loop period (config-driven; defaults to [`DEFAULT_PULSE_PERIOD`]).\r\n    pub pulse_period: Duration,\r\n    /// The drop-file precedence protection window in epoch-ms (6.5).\r\n    pub protection_window_ms: u64,\r\n    /// The orphan-watch grace window (B7): the recovery wait before a\r\n    /// supervised-crash teardown rechecks liveness and signs off (1.1).\r\n    pub crash_grace: Duration,\r\n    /// Whether self-update is full-auto (C2, REQ-UPD-4). **Default `false`** — an\r\n    /// update is gated on user confirmation delivered to the most-recently-active\r\n    /// live session. Setting this to `true` is the explicit opt-in to the\r\n    /// seamless, prompt-free path.\r\n    pub full_auto_update: bool,\r\n    /// The broker net endpoint's relay stance (D4a, REQ-NET-2). Default\r\n    /// [`RelayChoice::N0`] — the ADR-0002 zero-config path. An unrecognized\r\n    /// string degrades to the default (forward-compat: a future value must not\r\n    /// wedge an older daemon).\r\n    pub relay: RelayChoice,\r\n    /// Whether the peer pump runs at all (D9-1). Default `true` — the subnet\r\n    /// self-drives; `false` is the kill switch for debugging/hermetic setups.\r\n    pub peer_pump: bool,\r\n    /// Registry feed push cadence (D9-1).\r\n    pub registry_pump_period: Duration,\r\n    /// Silent-peer registry eviction window (KNOWN-HAZARDS 4.10): rows from a\r\n    /// node not heard within this window are evicted on the next registry\r\n    /// pump tick — a dead node identity must not poison bare-id resolution\r\n    /// forever. Default [`DEFAULT_REGISTRY_EVICT_AFTER`].\r\n    pub registry_evict_after: Duration,\r\n    /// Notif feed push cadence (D9-1).\r\n    pub notif_pump_period: Duration,\r\n    /// Context sync pull cadence — the anti-entropy loop (D9-1).\r\n    pub sync_pull_period: Duration,\r\n    /// Update check cadence (D9-1; the pull rides the same trusted conns).\r\n    pub update_check_period: Duration,\r\n    /// The NODE leg of the auto-suspend knob chain (D9-2, REQ-INST-3):\r\n    /// dormant → suspended after this many ms counted from dormancy onset.\r\n    /// **`None` = the global default, OFF** — auto-suspend is opt-in\r\n    /// (CONTEXT §dormant/suspended); a constrained node sets it here, and a\r\n    /// per-endpoint `info.json` override wins over this value\r\n    /// ([`crate::resting::effective_auto_suspend`]).\r\n    pub auto_suspend_after_ms: Option<u64>,\r\n    /// The node-level resource-advertisement seed (D9-4, REQ-INST-14): the\r\n    /// default blurb advertised for an endpoint that has not authored its\r\n    /// own (`info.json` `resources` wins when present — config seeds, the\r\n    /// agent refines; CONTEXT §resource advertisement). `None` = endpoints\r\n    /// without their own blurb advertise none.\r\n    pub resources_blurb: Option<String>,\r\n    /// Subnets whose serve-state STARTS detached (M8 decision 6,\r\n    /// REQ-SUBNET-5): the daemon's boot reset seeds the live\r\n    /// `attachment.json` from this list — `spt subnet detach/attach --save`\r\n    /// writes it. Default empty = every held subnet starts attached.\r\n    pub detached_subnets: Vec<String>,\r\n    /// The worker-reap TTL floor (seconds since a worker's `started`), W-3\r\n    /// (REQ-WORKER-REAP): the reconcile GC reaps any worker older than this even\r\n    /// under a live parent with a stale `ready` marker (the `SubagentStop`-never-fired\r\n    /// leak class). Default [`spt_store::worker_reap::DEFAULT_REAP_TTL_SECS`] (24h),\r\n    /// clamped at the reap site to a ≥1h floor (a fat-fingered tiny value can never\r\n    /// mass-kill in-flight workers); `0` disables the TTL leg.\r\n    pub worker_reap_ttl_secs: u64,\r\n    /// Endpoints replayed as startup defaults at daemon start (F-038 W5,\r\n    /// REQ-ENDPOINT-AUTOSTART) — `spt endpoint run --save` writes this list.\r\n    /// Default empty = nothing auto-starts. A replay failure logs loud and\r\n    /// never blocks daemon start or the other replays.\r\n    pub startup_endpoints: Vec<StartupEndpoint>,\r\n}\r\n\r\nimpl Default for DaemonConfig {\r\n    fn default() -> Self {\r\n        DaemonConfig {\r\n            pulse_period: DEFAULT_PULSE_PERIOD,\r\n            protection_window_ms: DEFAULT_PROTECTION_WINDOW_MS,\r\n            crash_grace: DEFAULT_CRASH_GRACE,\r\n            full_auto_update: false, // gated by default (REQ-UPD-4)\r\n            relay: RelayChoice::N0,  // zero-config default (ADR-0002)\r\n            peer_pump: true,         // the subnet self-drives (D9-1)\r\n            registry_pump_period: DEFAULT_REGISTRY_PUMP_PERIOD,\r\n            registry_evict_after: DEFAULT_REGISTRY_EVICT_AFTER,\r\n            notif_pump_period: DEFAULT_NOTIF_PUMP_PERIOD,\r\n            sync_pull_period: DEFAULT_SYNC_PULL_PERIOD,\r\n            update_check_period: DEFAULT_UPDATE_CHECK_PERIOD,\r\n            auto_suspend_after_ms: None, // opt-in, default OFF (REQ-INST-3)\r\n            resources_blurb: None,       // endpoints author their own (REQ-INST-14)\r\n            detached_subnets: Vec::new(), // every held subnet starts attached (REQ-SUBNET-5)\r\n            worker_reap_ttl_secs: spt_store::worker_reap::DEFAULT_REAP_TTL_SECS, // 24h (W-3)\r\n            startup_endpoints: Vec::new(), // nothing auto-starts by default (REQ-ENDPOINT-AUTOSTART)\r\n        }\r\n    }\r\n}\r\n\r\nimpl DaemonConfig {\r\n    /// The canonical config path: `<spt_home>/daemon.json`.\r\n    pub fn default_path() -> PathBuf {\r\n        spt_store::perch::spt_home().join(\"daemon.json\")\r\n    }\r","truncated":true,"truncatedBy":"lines","totalLines":642,"totalBytes":12380,"outputLines":223,"outputBytes":12380,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"//! Durable daemon configuration (B3) — the configurable pulse period that\r\n//! replaces the interim 5s constant.\r\n//!\r\n//! In the no-daemon interim model the pulse cadence was a hard-coded\r\n//! `spt_live::pulse::DEFAULT_PULSE_PERIOD` (5s). Consolidation (REQ-DAEMON-1)\r\n//! folds the pulse loop into the brain as a *scheduled* in-process loop whose\r\n//! period is **durable and configurable**, sourced from a small JSON file under\r\n//! the spt home (`<spt_home>/daemon.json`) and falling back to the default when\r\n//! absent. Kept deliberately tiny — one struct, JSON via the crate's existing\r\n//! `serde_json` dep (no new TOML edge) — so the brain's loop reads its cadence\r\n//! from config, never a constant.\r\n// [impl->REQ-DAEMON-1]\r\n\r\nuse std::path::{Path, PathBuf};\r\nuse std::time::Duration;\r\n\r\nuse serde::{Deserialize, Serialize};\r\n\r\n/// The interim default pulse period carried forward as the config default. The\r\n/// daemon now treats this as a *fallback*, not a constant: `daemon.json` may\r\n/// override it per machine.\r\npub const DEFAULT_PULSE_PERIOD: Duration = Duration::from_secs(5);\r\n\r\n/// Default drop-file precedence protection window (epoch-ms), mirroring the\r\n/// interim `spt_live` guard. Surfaced here so the one config source owns it.\r\npub const DEFAULT_PROTECTION_WINDOW_MS: u64 = 2_000;\r\n\r\n/// Default orphan-watch grace window (B7): how long the supervised-crash teardown\r\n/// waits after observing a hosted Self's harness owner gone before it rechecks\r\n/// liveness and signs off (KNOWN-HAZARDS 1.1). Sized to cover a transient recovery\r\n/// — a binary handoff relaunch or a brief stale poll — without delaying a real\r\n/// teardown for long. Configurable per machine via `crash_grace_ms`.\r\npub const DEFAULT_CRASH_GRACE: Duration = Duration::from_secs(2);\r\n\r\n/// Default peer-pump cadences (D9-1): how often the daemon pushes its\r\n/// registry/notif feeds to trusted peers and pulls context syncs from them.\r\n/// Conservative defaults — every loop is a thin call over an idempotent\r\n/// driver, so a missed tick costs only latency, never correctness.\r\npub const DEFAULT_REGISTRY_PUMP_PERIOD: Duration = Duration::from_secs(30);\r\npub const DEFAULT_NOTIF_PUMP_PERIOD: Duration = Duration::from_secs(15);\r\npub const DEFAULT_SYNC_PULL_PERIOD: Duration = Duration::from_secs(60);\r\npub const DEFAULT_UPDATE_CHECK_PERIOD: Duration = Duration::from_secs(3_600);\r\n\r\n/// Default silent-peer registry eviction window (KNOWN-HAZARDS 4.10): rows\r\n/// authored by a node not heard within this window are evicted on the next\r\n/// registry pump tick. Sized to ~10 default pump cadences — generous against\r\n/// transient drops (a peer re-advertises every cadence, so one admitted feed\r\n/// inside the window keeps its rows), short enough that a dead node identity\r\n/// stops poisoning bare-id resolution within minutes.\r\npub const DEFAULT_REGISTRY_EVICT_AFTER: Duration = Duration::from_secs(300);\r\n\r\n/// Which relay stance the broker's net endpoint runs (ADR-0002 / REQ-NET-2) —\r\n/// the `\"relay\"` knob in `daemon.json`. Maps onto `spt-net`'s `RelayPolicy` in\r\n/// `Daemon::run`; kept as a local enum so the config layer stays transport-free.\r\n/// The self-hosted variant (`RelayPolicy::SelfHosted`) needs a relay-map URL\r\n/// list and gets its config plumbing when a self-host consumer exists.\r\n// [impl->REQ-NET-2]\r\n#[derive(Debug, Clone, Copy, PartialEq, Eq)]\r\npub enum RelayChoice {\r\n    /// n0's public relays — the zero-config default (`\"relay\": \"n0\"`).\r\n    N0,\r\n    /// No relays: direct/LAN only (`\"relay\": \"disabled\"`).\r\n    Disabled,\r\n}\r\n\r\n/// One saved `endpoint run --save` startup default (F-038 W5,\r\n/// REQ-ENDPOINT-AUTOSTART): the daemon REPLAYS these at start — the endpoint\r\n/// analog of the shipped `subnet attach/detach --save` precedent. Minimal by\r\n/// design: the adapter option is re-resolved fresh at each replay (an adapter\r\n/// update between restarts is honored, an uninstalled one loud-skips), and the\r\n/// endpoint's home subnet is NOT recorded (home is durable on the perch —\r\n/// REQ-INST-15). A replay is always a FRESH session (shape (c)\r\n/// restore-what-was-up was rejected — this is a startup default, not a\r\n/// session restore).\r\n// [impl->REQ-ENDPOINT-AUTOSTART]\r\n#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\r\npub struct StartupEndpoint {\r\n    /// The endpoint id to bring up.\r\n    pub id: String,\r\n    /// The adapter option (`<adapter>[:profile]`), resolved at replay time.\r\n    pub adapter: String,\r\n    /// The project cwd the harness PTY lands in (captured at `--save`).\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    pub cwd: Option<String>,\r\n}\r\n\r\n/// The on-disk shape (`<spt_home>/daemon.json`). Every field is optional so a\r\n/// partial file still loads (forward/back-compat) — a missing field takes the\r\n/// default. Stored as plain integers (ms) to keep the file human-editable.\r\n#[derive(Debug, Clone, Default, Serialize, Deserialize)]\r\nstruct DaemonConfigFile {\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    pulse_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    protection_window_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    crash_grace_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    full_auto_update: Option<bool>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    relay: Option<String>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    peer_pump: Option<bool>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    registry_pump_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    registry_evict_after_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    notif_pump_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    sync_pull_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    update_check_period_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    auto_suspend_after_ms: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    resources_blurb: Option<String>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    detached_subnets: Option<Vec<String>>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    worker_reap_ttl_secs: Option<u64>,\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    startup_endpoints: Option<Vec<StartupEndpoint>>,\r\n}\r\n\r\n/// Resolved daemon configuration. The brain's scheduled loops read their cadence\r\n/// from `pulse_period`; the drop-ingest guard reads `protection_window_ms`.\r\n/// (No longer `Copy` — `resources_blurb` carries a `String`; callers clone.)\r\n#[derive(Debug, Clone, PartialEq, Eq)]\r\npub struct DaemonConfig {\r\n    /// The pulse loop period (config-driven; defaults to [`DEFAULT_PULSE_PERIOD`]).\r\n    pub pulse_period: Duration,\r\n    /// The drop-file precedence protection window in epoch-ms (6.5).\r\n    pub protection_window_ms: u64,\r\n    /// The orphan-watch grace window (B7): the recovery wait before a\r\n    /// supervised-crash teardown rechecks liveness and signs off (1.1).\r\n    pub crash_grace: Duration,\r\n    /// Whether self-update is full-auto (C2, REQ-UPD-4). **Default `false`** — an\r\n    /// update is gated on user confirmation delivered to the most-recently-active\r\n    /// live session. Setting this to `true` is the explicit opt-in to the\r\n    /// seamless, prompt-free path.\r\n    pub full_auto_update: bool,\r\n    /// The broker net endpoint's relay stance (D4a, REQ-NET-2). Default\r\n    /// [`RelayChoice::N0`] — the ADR-0002 zero-config path. An unrecognized\r\n    /// string degrades to the default (forward-compat: a future value must not\r\n    /// wedge an older daemon).\r\n    pub relay: RelayChoice,\r\n    /// Whether the peer pump runs at all (D9-1). Default `true` — the subnet\r\n    /// self-drives; `false` is the kill switch for debugging/hermetic setups.\r\n    pub peer_pump: bool,\r\n    /// Registry feed push cadence (D9-1).\r\n    pub registry_pump_period: Duration,\r\n    /// Silent-peer registry eviction window (KNOWN-HAZARDS 4.10): rows from a\r\n    /// node not heard within this window are evicted on the next registry\r\n    /// pump tick — a dead node identity must not poison bare-id resolution\r\n    /// forever. Default [`DEFAULT_REGISTRY_EVICT_AFTER`].\r\n    pub registry_evict_after: Duration,\r\n    /// Notif feed push cadence (D9-1).\r\n    pub notif_pump_period: Duration,\r\n    /// Context sync pull cadence — the anti-entropy loop (D9-1).\r\n    pub sync_pull_period: Duration,\r\n    /// Update check cadence (D9-1; the pull rides the same trusted conns).\r\n    pub update_check_period: Duration,\r\n    /// The NODE leg of the auto-suspend knob chain (D9-2, REQ-INST-3):\r\n    /// dormant → suspended after this many ms counted from dormancy onset.\r\n    /// **`None` = the global default, OFF** — auto-suspend is opt-in\r\n    /// (CONTEXT §dormant/suspended); a constrained node sets it here, and a\r\n    /// per-endpoint `info.json` override wins over this value\r\n    /// ([`crate::resting::effective_auto_suspend`]).\r\n    pub auto_suspend_after_ms: Option<u64>,\r\n    /// The node-level resource-advertisement seed (D9-4, REQ-INST-14): the\r\n    /// default blurb advertised for an endpoint that has not authored its\r\n    /// own (`info.json` `resources` wins when present — config seeds, the\r\n    /// agent refines; CONTEXT §resource advertisement). `None` = endpoints\r\n    /// without their own blurb advertise none.\r\n    pub resources_blurb: Option<String>,\r\n    /// Subnets whose serve-state STARTS detached (M8 decision 6,\r\n    /// REQ-SUBNET-5): the daemon's boot reset seeds the live\r\n    /// `attachment.json` from this list — `spt subnet detach/attach --save`\r\n    /// writes it. Default empty = every held subnet starts attached.\r\n    pub detached_subnets: Vec<String>,\r\n    /// The worker-reap TTL floor (seconds since a worker's `started`), W-3\r\n    /// (REQ-WORKER-REAP): the reconcile GC reaps any worker older than this even\r\n    /// under a live parent with a stale `ready` marker (the `SubagentStop`-never-fired\r\n    /// leak class). Default [`spt_store::worker_reap::DEFAULT_REAP_TTL_SECS`] (24h),\r\n    /// clamped at the reap site to a ≥1h floor (a fat-fingered tiny value can never\r\n    /// mass-kill in-flight workers); `0` disables the TTL leg.\r\n    pub worker_reap_ttl_secs: u64,\r\n    /// Endpoints replayed as startup defaults at daemon start (F-038 W5,\r\n    /// REQ-ENDPOINT-AUTOSTART) — `spt endpoint run --save` writes this list.\r\n    /// Default empty = nothing auto-starts. A replay failure logs loud and\r\n    /// never blocks daemon start or the other replays.\r\n    pub startup_endpoints: Vec<StartupEndpoint>,\r\n}\r\n\r\nimpl Default for DaemonConfig {\r\n    fn default() -> Self {\r\n        DaemonConfig {\r\n            pulse_period: DEFAULT_PULSE_PERIOD,\r\n            protection_window_ms: DEFAULT_PROTECTION_WINDOW_MS,\r\n            crash_grace: DEFAULT_CRASH_GRACE,\r\n            full_auto_update: false, // gated by default (REQ-UPD-4)\r\n            relay: RelayChoice::N0,  // zero-config default (ADR-0002)\r\n            peer_pump: true,         // the subnet self-drives (D9-1)\r\n            registry_pump_period: DEFAULT_REGISTRY_PUMP_PERIOD,\r\n            registry_evict_after: DEFAULT_REGISTRY_EVICT_AFTER,\r\n            notif_pump_period: DEFAULT_NOTIF_PUMP_PERIOD,\r\n            sync_pull_period: DEFAULT_SYNC_PULL_PERIOD,\r\n            update_check_period: DEFAULT_UPDATE_CHECK_PERIOD,\r\n            auto_suspend_after_ms: None, // opt-in, default OFF (REQ-INST-3)\r\n            resources_blurb: None,       // endpoints author their own (REQ-INST-14)\r\n            detached_subnets: Vec::new(), // every held subnet starts attached (REQ-SUBNET-5)\r\n            worker_reap_ttl_secs: spt_store::worker_reap::DEFAULT_REAP_TTL_SECS, // 24h (W-3)\r\n            startup_endpoints: Vec::new(), // nothing auto-starts by default (REQ-ENDPOINT-AUTOSTART)\r\n        }\r\n    }\r\n}\r\n\r\nimpl DaemonConfig {\r\n    /// The canonical config path: `<spt_home>/daemon.json`.\r\n    pub fn default_path() -> PathBuf {\r\n        spt_store::perch::spt_home().join(\"daemon.json\")\r\n    }\r\n…\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,null,343]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/config.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":642,"totalBytes":12380,"outputLines":223,"outputBytes":12380,"shownRange":{"start":1,"end":223},"nextOffset":224}}},"isError":false,"timestamp":1784069233056}}
{"type":"message","id":"987c1a96","parentId":"99e92d8d","timestamp":"2026-07-14T22:47:13.059Z","message":{"role":"toolResult","toolCallId":"call_1UOrx0kEwiY8ndQxFK6OkRyD|fc_050f56f290a937ae016a56bc70ea9881968f6a369ae0f7775c","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/identity/registry/\n## BIGNET.json\n 4|      {\n*5|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 6|        \"status\": \"Suspended\",\n 7|        \"epoch\": 630173,\n 8|        \"last_active_ms\": 1783630087661,\n...\n 20|      {\n*21|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 22|        \"status\": \"Suspended\",\n 23|        \"epoch\": 630175,\n 24|        \"last_active_ms\": 1783982275183,\n...\n 36|      {\n*37|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 38|        \"status\": \"Active\",\n 39|        \"epoch\": 630177,\n 40|        \"last_active_ms\": 1784069155223,\n...\n 54|      {\n*55|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 56|        \"status\": \"Suspended\",\n 57|        \"epoch\": 630179,\n 58|        \"node_label\": \"HFENDULEAM\",\n...\n 69|      {\n*70|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 71|        \"status\": \"Suspended\",\n 72|        \"epoch\": 630181,\n 73|        \"last_active_ms\": 1783991690185,\n...\n 86|      {\n*87|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 88|        \"status\": \"Suspended\",\n 89|        \"epoch\": 630183,\n 90|        \"last_active_ms\": 1783478174866,\n...\n 102|      {\n*103|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104|        \"status\": \"Active\",\n 105|        \"epoch\": 630185,\n 106|        \"node_label\": \"HFENDULEAM\",\n...\n 113|      {\n*114|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115|        \"status\": \"Active\",\n 116|        \"epoch\": 630187,\n 117|        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n...\n 132|      {\n*133|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134|        \"status\": \"Active\",\n 135|        \"epoch\": 630189,\n 136|        \"node_label\": \"HFENDULEAM\",\n...\n 152|      {\n*153|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154|        \"status\": \"Suspended\",\n 155|        \"epoch\": 630191,\n 156|        \"last_active_ms\": 1783992010212,\n...\n 169|      {\n*170|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171|        \"status\": \"Suspended\",\n 172|        \"epoch\": 630193,\n 173|        \"last_active_ms\": 1783747106543,\n...\n 185|      {\n*186|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187|        \"status\": \"Suspended\",\n 188|        \"epoch\": 630195,\n 189|        \"node_label\": \"HFENDULEAM\",\n...\n 198|      {\n*199|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200|        \"status\": \"Active\",\n 201|        \"epoch\": 630197,\n 202|        \"node_label\": \"HFENDULEAM\",\n## BS-Resources.json\n 4|      {\n*5|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 6|        \"status\": \"Suspended\",\n 7|        \"epoch\": 599500,\n 8|        \"last_active_ms\": 1783630087661,\n...\n 20|      {\n*21|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 22|        \"status\": \"Suspended\",\n 23|        \"epoch\": 599503,\n 24|        \"last_active_ms\": 1783982275183,\n...\n 36|      {\n*37|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 38|        \"status\": \"Active\",\n 39|        \"epoch\": 599506,\n 40|        \"last_active_ms\": 1783982630187,\n...\n 54|      {\n*55|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 56|        \"status\": \"Suspended\",\n 57|        \"epoch\": 599509,\n 58|        \"node_label\": \"HFENDULEAM\",\n...\n 69|      {\n*70|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 71|        \"status\": \"Active\",\n 72|        \"epoch\": 599512,\n 73|        \"last_active_ms\": 1783982630197,\n...\n 88|      {\n*89|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 90|        \"status\": \"Suspended\",\n 91|        \"epoch\": 599515,\n 92|        \"last_active_ms\": 1783478174866,\n...\n 104|      {\n*105|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 106|        \"status\": \"Active\",\n 107|        \"epoch\": 599518,\n 108|        \"node_label\": \"HFENDULEAM\",\n...\n 115|      {\n*116|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 117|        \"status\": \"Active\",\n 118|        \"epoch\": 599521,\n 119|        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n...\n 134|      {\n*135|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 136|        \"status\": \"Dormant\",\n 137|        \"epoch\": 599524,\n 138|        \"node_label\": \"HFENDULEAM\",\n...\n 152|      {\n*153|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154|        \"status\": \"Active\",\n 155|        \"epoch\": 599527,\n 156|        \"last_active_ms\": 1783982645162,\n...\n 171|      {\n*172|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 173|        \"status\": \"Suspended\",\n 174|        \"epoch\": 599530,\n 175|        \"last_active_ms\": 1783747106543,\n...\n 187|      {\n*188|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 189|        \"status\": \"Suspended\",\n 190|        \"epoch\": 599533,\n 191|        \"node_label\": \"HFENDULEAM\",\n...\n 200|      {\n*201|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 202|        \"status\": \"Suspended\",\n 203|        \"epoch\": 599536,\n 204|        \"node_label\": \"HFENDULEAM\",\n## SPT_DEV.json\n 4|      {\n*5|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 6|        \"status\": \"Suspended\",\n 7|        \"epoch\": 630172,\n 8|        \"last_active_ms\": 1783630087661,\n...\n 20|      {\n*21|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 22|        \"status\": \"Suspended\",\n 23|        \"epoch\": 630174,\n 24|        \"last_active_ms\": 1783982275183,\n...\n 36|      {\n*37|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 38|        \"status\": \"Active\",\n 39|        \"epoch\": 630176,\n 40|        \"last_active_ms\": 1784069155223,\n...\n 54|      {\n*55|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 56|        \"status\": \"Suspended\",\n 57|        \"epoch\": 630178,\n 58|        \"node_label\": \"HFENDULEAM\",\n...\n 69|      {\n*70|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 71|        \"status\": \"Suspended\",\n 72|        \"epoch\": 630180,\n 73|        \"last_active_ms\": 1783991690185,\n...\n 86|      {\n*87|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 88|        \"status\": \"Suspended\",\n 89|        \"epoch\": 630182,\n 90|        \"last_active_ms\": 1783478174866,\n...\n 102|      {\n*103|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104|        \"status\": \"Active\",\n 105|        \"epoch\": 630184,\n 106|        \"node_label\": \"HFENDULEAM\",\n...\n 113|      {\n*114|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115|        \"status\": \"Active\",\n 116|        \"epoch\": 630186,\n 117|        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n...\n 132|      {\n*133|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134|        \"status\": \"Active\",\n 135|        \"epoch\": 630188,\n 136|        \"node_label\": \"HFENDULEAM\",\n...\n 152|      {\n*153|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154|        \"status\": \"Suspended\",\n 155|        \"epoch\": 630190,\n 156|        \"last_active_ms\": 1783992010212,\n...\n 169|      {\n*170|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171|        \"status\": \"Suspended\",\n 172|        \"epoch\": 630192,\n 173|        \"last_active_ms\": 1783747106543,\n...\n 185|      {\n*186|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187|        \"status\": \"Suspended\",\n 188|        \"epoch\": 630194,\n 189|        \"node_label\": \"HFENDULEAM\",\n...\n 198|      {\n*199|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200|        \"status\": \"Active\",\n 201|        \"epoch\": 630196,\n 202|        \"node_label\": \"HFENDULEAM\","}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/identity/registry","searchPath":"C:/Users/decid/AppData/Local/spt-core/identity/registry","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":39,"fileCount":3,"files":["C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","count":13},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","count":13},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","count":13}],"truncated":false,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/identity/registry/\n## BIGNET.json\n   4│      {\n  *5│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n   6│        \"status\": \"Suspended\",\n   7│        \"epoch\": 630173,\n   8│        \"last_active_ms\": 1783630087661,\n    │...\n  20│      {\n *21│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  22│        \"status\": \"Suspended\",\n  23│        \"epoch\": 630175,\n  24│        \"last_active_ms\": 1783982275183,\n    │...\n  36│      {\n *37│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  38│        \"status\": \"Active\",\n  39│        \"epoch\": 630177,\n  40│        \"last_active_ms\": 1784069155223,\n    │...\n  54│      {\n *55│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  56│        \"status\": \"Suspended\",\n  57│        \"epoch\": 630179,\n  58│        \"node_label\": \"HFENDULEAM\",\n    │...\n  69│      {\n *70│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  71│        \"status\": \"Suspended\",\n  72│        \"epoch\": 630181,\n  73│        \"last_active_ms\": 1783991690185,\n    │...\n  86│      {\n *87│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  88│        \"status\": \"Suspended\",\n  89│        \"epoch\": 630183,\n  90│        \"last_active_ms\": 1783478174866,\n    │...\n 102│      {\n*103│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104│        \"status\": \"Active\",\n 105│        \"epoch\": 630185,\n 106│        \"node_label\": \"HFENDULEAM\",\n    │...\n 113│      {\n*114│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115│        \"status\": \"Active\",\n 116│        \"epoch\": 630187,\n 117│        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n    │...\n 132│      {\n*133│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134│        \"status\": \"Active\",\n 135│        \"epoch\": 630189,\n 136│        \"node_label\": \"HFENDULEAM\",\n    │...\n 152│      {\n*153│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154│        \"status\": \"Suspended\",\n 155│        \"epoch\": 630191,\n 156│        \"last_active_ms\": 1783992010212,\n    │...\n 169│      {\n*170│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171│        \"status\": \"Suspended\",\n 172│        \"epoch\": 630193,\n 173│        \"last_active_ms\": 1783747106543,\n    │...\n 185│      {\n*186│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187│        \"status\": \"Suspended\",\n 188│        \"epoch\": 630195,\n 189│        \"node_label\": \"HFENDULEAM\",\n    │...\n 198│      {\n*199│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200│        \"status\": \"Active\",\n 201│        \"epoch\": 630197,\n 202│        \"node_label\": \"HFENDULEAM\",\n## BS-Resources.json\n   4│      {\n  *5│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n   6│        \"status\": \"Suspended\",\n   7│        \"epoch\": 599500,\n   8│        \"last_active_ms\": 1783630087661,\n    │...\n  20│      {\n *21│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  22│        \"status\": \"Suspended\",\n  23│        \"epoch\": 599503,\n  24│        \"last_active_ms\": 1783982275183,\n    │...\n  36│      {\n *37│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  38│        \"status\": \"Active\",\n  39│        \"epoch\": 599506,\n  40│        \"last_active_ms\": 1783982630187,\n    │...\n  54│      {\n *55│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  56│        \"status\": \"Suspended\",\n  57│        \"epoch\": 599509,\n  58│        \"node_label\": \"HFENDULEAM\",\n    │...\n  69│      {\n *70│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  71│        \"status\": \"Active\",\n  72│        \"epoch\": 599512,\n  73│        \"last_active_ms\": 1783982630197,\n    │...\n  88│      {\n *89│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  90│        \"status\": \"Suspended\",\n  91│        \"epoch\": 599515,\n  92│        \"last_active_ms\": 1783478174866,\n    │...\n 104│      {\n*105│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 106│        \"status\": \"Active\",\n 107│        \"epoch\": 599518,\n 108│        \"node_label\": \"HFENDULEAM\",\n    │...\n 115│      {\n*116│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 117│        \"status\": \"Active\",\n 118│        \"epoch\": 599521,\n 119│        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n    │...\n 134│      {\n*135│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 136│        \"status\": \"Dormant\",\n 137│        \"epoch\": 599524,\n 138│        \"node_label\": \"HFENDULEAM\",\n    │...\n 152│      {\n*153│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154│        \"status\": \"Active\",\n 155│        \"epoch\": 599527,\n 156│        \"last_active_ms\": 1783982645162,\n    │...\n 171│      {\n*172│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 173│        \"status\": \"Suspended\",\n 174│        \"epoch\": 599530,\n 175│        \"last_active_ms\": 1783747106543,\n    │...\n 187│      {\n*188│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 189│        \"status\": \"Suspended\",\n 190│        \"epoch\": 599533,\n 191│        \"node_label\": \"HFENDULEAM\",\n    │...\n 200│      {\n*201│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 202│        \"status\": \"Suspended\",\n 203│        \"epoch\": 599536,\n 204│        \"node_label\": \"HFENDULEAM\",\n## SPT_DEV.json\n   4│      {\n  *5│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n   6│        \"status\": \"Suspended\",\n   7│        \"epoch\": 630172,\n   8│        \"last_active_ms\": 1783630087661,\n    │...\n  20│      {\n *21│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  22│        \"status\": \"Suspended\",\n  23│        \"epoch\": 630174,\n  24│        \"last_active_ms\": 1783982275183,\n    │...\n  36│      {\n *37│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  38│        \"status\": \"Active\",\n  39│        \"epoch\": 630176,\n  40│        \"last_active_ms\": 1784069155223,\n    │...\n  54│      {\n *55│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  56│        \"status\": \"Suspended\",\n  57│        \"epoch\": 630178,\n  58│        \"node_label\": \"HFENDULEAM\",\n    │...\n  69│      {\n *70│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  71│        \"status\": \"Suspended\",\n  72│        \"epoch\": 630180,\n  73│        \"last_active_ms\": 1783991690185,\n    │...\n  86│      {\n *87│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  88│        \"status\": \"Suspended\",\n  89│        \"epoch\": 630182,\n  90│        \"last_active_ms\": 1783478174866,\n    │...\n 102│      {\n*103│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104│        \"status\": \"Active\",\n 105│        \"epoch\": 630184,\n 106│        \"node_label\": \"HFENDULEAM\",\n    │...\n 113│      {\n*114│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115│        \"status\": \"Active\",\n 116│        \"epoch\": 630186,\n 117│        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n    │...\n 132│      {\n*133│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134│        \"status\": \"Active\",\n 135│        \"epoch\": 630188,\n 136│        \"node_label\": \"HFENDULEAM\",\n    │...\n 152│      {\n*153│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154│        \"status\": \"Suspended\",\n 155│        \"epoch\": 630190,\n 156│        \"last_active_ms\": 1783992010212,\n    │...\n 169│      {\n*170│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171│        \"status\": \"Suspended\",\n 172│        \"epoch\": 630192,\n 173│        \"last_active_ms\": 1783747106543,\n    │...\n 185│      {\n*186│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187│        \"status\": \"Suspended\",\n 188│        \"epoch\": 630194,\n 189│        \"node_label\": \"HFENDULEAM\",\n    │...\n 198│      {\n*199│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200│        \"status\": \"Active\",\n 201│        \"epoch\": 630196,\n 202│        \"node_label\": \"HFENDULEAM\","},"isError":false,"timestamp":1784069233058}}
{"type":"message","id":"402f9e27","parentId":"987c1a96","timestamp":"2026-07-14T22:47:13.059Z","message":{"role":"toolResult","toolCallId":"call_pAiQfiY3ACd26TGVFb5JT6su|fc_050f56f290a937ae016a56bc70e89481968f51d1d32f6eb2f7","toolName":"grep","content":[{"type":"text","text":"No matches found"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/identity/registry","searchPath":"C:/Users/decid/AppData/Local/spt-core/identity/registry","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069233059}}
{"type":"message","id":"2c4ab8bc","parentId":"402f9e27","timestamp":"2026-07-14T22:47:13.090Z","message":{"role":"toolResult","toolCallId":"call_FOQkn5bubYy5ljY6lPIGzkDa|fc_050f56f290a937ae016a56bc70ec1c8196920d7ee64131685d","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-net/src/net/\n### registry.rs\n 7|//! than one machine); picking the right one is the resolution policy's job (D3c) — this\n*8|//! module owns the **data model + the merge lease**, not resolution.\n 9|//!\n*10|//! ## The epoch lease (#8)\n 11|//!\n 12|//! Registry updates arrive out of order across a partition or under clock skew. A\n 13|//! lagging node could re-announce a stale `Active` after the endpoint has actually gone\n...\n 58|    /// resumed-on-wake. Still addressable (`spt wake ling@desktop` must route) —\n*59|    /// only `Offline` is unroutable. Additive variant on a pre-release fleet;\n 60|    /// the NDJSON decode posture (unknown-kind skip) is the registry record's\n 61|    /// forward-compat story.\n 62|    // [impl->REQ-INST-3]\n...\n 82|    /// endpoint can serve. **Not a separate registry** — a field on the\n*83|    /// instance row, riding the existing epoch lease + `RegistryUpdate`\n 84|    /// replication (a blurb update is ordered like any instance update);\n 85|    /// the \"subnet resource registry\" is a [projection](resource_projection)\n 86|    /// of these rows. Additive serde-default: absent = no blurb, and a\n...\n 92|    /// advertisement scan. **Not a separate gossip channel** — a field on the\n*93|    /// instance row riding the existing epoch lease + `RegistryUpdate`\n 94|    /// replication, exactly like [`resources`](Self::resources); subnet-wide\n 95|    /// `(last_active_node, last_active_endpoint, ts)` is a projection of\n 96|    /// these rows. Wall-clock ms, cross-compared ONLY as a routing heuristic\n...\n 109|    /// riding the instance row like [`resources`](Self::resources) does\n*110|    /// (same epoch lease, same visibility gate, no new channel; node-level\n 111|    /// data carried per-row because the rows are the distribution).\n 112|    /// Discovery only: spawning one rides the deferred instantiate-anywhere\n 113|    /// gate. Additive serde-default: a pre-D8 row parses clean.\n...\n 122|    /// data riding the instance row like [`resources`](Self::resources) does\n*123|    /// (the rows are the distribution; same epoch lease, same visibility\n 124|    /// gate). Additive serde-default: a pre-M7 row parses clean.\n 125|    // [impl->REQ-SUBNET-3]\n 126|    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n...\n 136|    /// [`node_label`](Self::node_label) (the rows are the distribution;\n*137|    /// same epoch lease, same visibility gate). Additive serde-default: a\n 138|    /// pre-M8 row parses clean.\n 139|    // [impl->REQ-SUBNET-7]\n 140|    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n...\n 149|    /// its **own** endpoints' types (no cross-node authorship); the field\n*150|    /// extends REQ-INST-7's data model and rides the existing epoch lease +\n 151|    /// `RegistryUpdate` replication like [`resources`](Self::resources) —\n 152|    /// no new channel, no new merge key. Additive serde-default: an N-1 row\n 153|    /// (no field) parses clean and resolves to \"not provably user-backed\"\n...\n 166|    /// data riding the instance row like [`endpoint_type`](Self::endpoint_type)\n*167|    /// — same epoch lease, same visibility gate, no new channel. Additive\n 168|    /// serde-default: an N-1 row (no field) parses clean and defaults to `true`\n 169|    /// (bound), the conservative no-special-display posture (a row that omits\n 170|    /// the field renders as a plain bound endpoint, never a phantom unbound).\n...\n 198|    /// the adapter). Node-level data riding the instance row like\n*199|    /// [`endpoint_type`](Self::endpoint_type) — same epoch lease, same visibility gate.\n 200|    /// Additive serde-default: an N-1 row parses clean to `None` (the picker renders `-`).\n 201|    // [impl->REQ-GOSSIP-ADAPTER-PROJECTS]\n 202|    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n...\n 247|/// otherwise renders a bare key-prefix). Merged under the same\n*248|/// strictly-greater-epoch lease as instance rows; evicted with the node.\n 249|#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\n 250|pub struct NodeLabel {\n 251|    /// The node's advertised label (its OS hostname).\n 252|    pub label: String,\n*253|    /// The lease epoch (strictly-greater supersedes — the instance-row rule).\n 254|    pub epoch: u64,\n 255|}\n 256|\n...\n 269|    /// **Receiver-observed** first-seen-Offline wall-ms per `(endpoint_id, node)`\n*270|    /// row (REQ-HAZARD-REGISTRY-GHOST-ROWS trigger (b), #2-secondary). NOT gossiped\n 271|    /// and NOT snapshotted (`#[serde(skip)]`) — it is this node's own observation,\n*272|    /// re-derived by [`evict_aged_offline`](Self::evict_aged_offline) each sweep, so\n*273|    /// it can never leak: a row that becomes routable, is evicted, or vanishes is\n 274|    /// simply absent from the next sweep's rebuild (self-pruning — the map stays a\n 275|    /// strict subset of the live non-routable non-own rows). Keyed on receiver-\n*276|    /// observed offline-since (NOT the gossip epoch): ghost-heal's fresh-epoch\n 277|    /// re-advertise keeps the row Offline, so the sticky first-seen stamp survives\n 278|    /// it; a genuine routable re-flap clears the stamp and restarts the grace.\n 279|    #[serde(skip)]\n...\n 283|/// What [`merge_instance`] did with an update — useful for replication accounting and\n*284|/// for asserting the lease in tests.\n 285|#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n 286|pub enum MergeOutcome {\n 287|    /// First instance for this `(endpoint_id, node)` — added.\n...\n 290|    Updated,\n*291|    /// Equal or lower epoch — dropped as stale (the lease at work).\n 292|    Stale,\n 293|}\n 294|\n...\n 313|\n*314|    /// Evict every instance row authored by a node `dead(node)` says is gone\n\n## spt-daemon/src/\n### registryhost.rs\n 4|//! D3 built the registry **model** (`spt_net::net::registry`: the epoch\n*5|//! lease, the join-time collision check, visibility enforcement) and D4d the\n 6|//! wire record (`RegistryUpdate`), both consumed only by tests. This type is\n 7|//! the daemon-side instance: one in-memory `SubnetRegistry` per member\n 8|//! subnet, fed from two directions —\n...\n 15|//!   owlery and (re-)advertises every visible self perch with a fresh\n*16|//!   [`EpochSource`] epoch — the per-node monotonic lease key, never\n 17|//!   wall-clock (KNOWN-HAZARDS 4.8).\n 18|//!\n 19|//! The registry is **eventually consistent by re-advertisement**: state is\n...\n 47|pub enum RegistryApplyVerdict {\n*48|    /// Admitted and merged with the stated outcome (the lease may still have\n 49|    /// dropped it as [`MergeOutcome::Stale`] — that IS a merge decision).\n 50|    Merged(MergeOutcome),\n 51|    /// Refused: this node is not a member of the record's subnet.\n...\n 114|    regs: Mutex<BTreeMap<String, SubnetRegistry>>,\n*115|    /// The node's one durable monotonic counter (the D3b lease source) — the\n 116|    /// epoch on every locally-authored instance row.\n 117|    epoch: Mutex<EpochSource>,\n 118|    /// Where snapshots land (`identity/registry/<subnet>.json`).\n...\n 173|    /// these and keys by the proven node — REQ-MSG-6). Cloned out so the lock\n*174|    /// is released before the caller inspects the rows. The same id can hold\n 175|    /// rows on several nodes / in several subnets; the resolver filters to the\n 176|    /// QUIC-proven origin node.\n 177|    // [impl->REQ-MSG-6]\n...\n 199|    /// dispatcher's registry arm and the pump never double-mint.\n*200|    // [impl->REQ-HAZARD-REGISTRY-EPOCH-LEASE]\n 201|    pub fn with_epoch<R>(&self, f: impl FnOnce(&mut EpochSource) -> R) -> R {\n 202|        f(&mut self.epoch.lock().unwrap())\n 203|    }\n...\n 231|    /// re-advertisement (`Updated` with prev already `Active` is not a\n*232|    /// flip). The lease has already dropped stale/equal epochs before any\n 233|    /// of this runs.\n 234|    // [impl->REQ-INST-3]\n 235|    pub fn apply_feed_flips(\n...\n 260|                    .map(|i| i.status);\n*261|                // The epoch lease (4.8) decides; an own-row echo from a peer\n 262|                // is dropped Stale by construction (our epoch is newer or\n 263|                // equal — never authored elsewhere).\n 264|                let outcome = reg.merge_instance(&u.endpoint_id, u.instance.clone());\n...\n 278|        // node is up right now — even a Stale merge verdict is a liveness\n*279|        // signal (the lease judged the row, not the sender). Refused feeds\n 280|        // stamp nothing (an untrusted sender earns no liveness credit).\n 281|        // [impl->REQ-SUBNET-1]\n 282|        if admitted_any {\n...\n 294|    /// untrusted origin is refused; an admitted update merges via\n*295|    /// [`SubnetRegistry::merge_node_label`] (epoch lease) and stamps the\n 296|    /// origin's gossip-recency (an admitted label feed proves the peer is up,\n 297|    /// exactly like an instance feed). The endpoint-less carrier: this is how a\n 298|    /// peer with zero endpoints gets its hostname into our `--nodes` view.\n...\n 381|        // The set of self perches that still EXIST on disk this round — the\n*382|        // ghost-heal predicate below (a LOCAL registry row whose id is absent\n*383|        // here was erased, REQ-HAZARD-ROSTER-GHOST).\n 384|        let live_ids: std::collections::BTreeSet<String> =\n 385|            perch::list_self_perch_ids(owlery).into_iter().collect();\n 386|\n...\n 394|            // epoch below, so a transition reaches peers as an epoch-bumped\n*395|            // update — the lease orders it (KH 4.8).\n 396|            // [impl->REQ-INST-3] [impl->REQ-PRESENCE-LIVENESS-TRUTH]\n 397|            let status = advertised_status(&perch_path);\n 398|            // Endpoint-authored blurb wins; the node seed fills the gap\n*399|            // (both-authored, REQ-INST-14). Rides the same epoch lease as\n 400|            // every instance update — a blurb edit reaches peers as an\n 401|            // ordered, epoch-bumped row.\n 402|            // [impl->REQ-INST-14]\n...\n 410|            // seat never stamps) rides the row like the blurb does — same\n*411|            // epoch lease, same visibility gate, no new channel. Subnet-wide\n 412|            // most-recently-active is a projection of these rows (D6b).\n 413|            // [impl->REQ-PRES-1]\n 414|            // The endpoint's own advertised type tag (M9, REQ-MSG-6): the\n...\n 523|        }\n*524|        // Ghost-heal (REQ-HAZARD-ROSTER-GHOST): a LOCAL perch that was ERASED\n 525|        // (`api session-end <id> --erase` removes the owlery dir) is no longer in\n 526|        // `live_ids`, but its last-advertised row lingers ACTIVE in the registry —\n 527|        // this scan only refreshes perches that still exist, so the stale row is\n 528|        // otherwise immortal (no re-advertise to bump it, and own rows are excluded\n*529|        // from silent-peer eviction). Advertise such a row OFFLINE with a fresh\n*530|        // epoch: the lease orders it, so it stops showing Active locally\n 531|        // (resource_projection skips non-routable) AND peers converge to gone. Only\n 532|        // still-routable local rows are touched (idempotent — an already-Offline\n*533|        // ghost is left alone).\n*534|        // [impl->REQ-HAZARD-ROSTER-GHOST]\n 535|        for sub in &subnets.subnets {\n 536|            let reg = regs.entry(sub.name.clone()).or_default();\n\n### pump/\n#### mod.rs\n 236|    pub ops: PathBuf,\n*237|    /// The staged-release cache dir ([`ReleaseCache::open`]).\n*238|    pub releases: PathBuf,\n*239|    /// `release-keys.json` ([`VerifyPolicy::load_from`]).\n*240|    pub release_keys: PathBuf,\n 241|    /// The wake-edge freshness-pull marker (D9-2, REQ-INST-3): a\n 242|    /// dormant→active transition drops it; the pump consumes it and forces a\n 243|    /// sync round NOW instead of waiting out `cadence.sync`\n...\n 278|            ops: identity.join(\"pump-ops.json\"),\n*279|            releases: home.join(\"releases\"),\n*280|            release_keys: identity.join(\"release-keys.json\"),\n 281|            pull_marker: identity.join(crate::resting::PULL_MARKER_FILE),\n 282|            advertise_marker: identity.join(crate::registryhost::ADVERTISE_MARKER_FILE),\n 283|            peer_addrs: identity.join(\"peer-addrs.json\"),\n...\n 296|    pub update: Duration,\n*297|    /// Silent-peer registry eviction window (KNOWN-HAZARDS 4.10): swept each\n 298|    /// registry tick, before re-advertisement.\n*299|    pub registry_evict_after: Duration,\n 300|}\n 301|\n 302|impl PumpCadence {\n...\n 305|        PumpCadence {\n*306|            registry: cfg.registry_pump_period,\n 307|            notif: cfg.notif_pump_period,\n 308|            sync: cfg.sync_pull_period,\n 309|            update: cfg.update_check_period,\n*310|            registry_evict_after: cfg.registry_evict_after,\n 311|        }\n 312|    }\n 313|}\n...\n 319|    /// `true` = the explicit opt-in to prompt-free updates; default `false`\n*320|    /// surfaces every staged release as a consent notif.\n 321|    pub full_auto_update: bool,\n 322|}\n 323|\n...\n 476|/// — a worker-owned `EpochSource` over the shared counter is the KH\n*477|/// epoch-lease double-mint and is forbidden.\n 478|struct PeerIo<'a> {\n 479|    /// The one brain IPC handle.\n 480|    brain: &'a mut Brain,\n...\n 484|    /// through [`PeerIo::open_op`] (the sync + update legs); a worker-owned\n*485|    /// `EpochSource` over this counter would be the KH epoch-lease double-mint.\n 486|    ops: &'a mut EpochSource,\n 487|}\n 488|\n...\n 543|    // construction. Tail-follow (no history replay, baseline on first live event)\n*544|    // so a long-lived broker's evicted ring can never gap-trip a false restart.\n 545|    let mut events = connect(broker_name)?;\n 546|    events.net_presence_subscribe_tail()?;\n 547|    let mut ops = EpochSource::load_from(&paths.ops);\n...\n 1171|            last_seen: String::new(),\n*1172|            lease_epoch: 1,\n 1173|        };\n 1174|        let mut r = RosterStore::default();\n 1175|        r.merge_entry(entry(\"home\", \"self\"));\n...\n 1373|            last_seen: String::new(),\n*1374|            lease_epoch: 1,\n 1375|        };\n 1376|        let mut subnets = SubnetStore::default();\n 1377|        subnets.create_subnet(\"home\").unwrap();\n#### registry.rs\n 5|//! NOW on an endpoint online/offline transition); `pre_round` runs the\n*6|//! node-local sweep (repair-evictions → silent-peer eviction → due seed\n 7|//! rotations → re-advertise) ONCE per due round and holds the produced adverts\n 8|//! as worker state; `peer_step` pushes this node's own rows for the given\n 9|//! subnet over the peer's feed stream. Construction-captured deps: the shared\n...\n 80|    cadence: Duration,\n*81|    /// Silent-peer registry eviction window (KNOWN-HAZARDS 4.10).\n*82|    evict_after: Duration,\n 83|    /// Adverts computed in `pre_round`, consumed per-subnet in `peer_step`.\n 84|    adverts: Vec<RegistryFeedRecord>,\n 85|}\n...\n 101|            cadence: cadence.registry,\n*102|            evict_after: cadence.registry_evict_after,\n 103|            adverts: Vec::new(),\n 104|        }\n 105|    }\n...\n 116|    /// path: the forced round is the same advertise_local + push code, so the\n*117|    /// epoch lease and visibility gates ride unchanged. The take IS the remove,\n 118|    /// so one wake claims exactly one forced round.\n 119|    // [impl->REQ-CONV-2]\n 120|    fn poll_wake(&mut self) -> bool {\n...\n 126|    fn pre_round(&mut self, _ctx: &RoundCtx) {\n*127|        // Consume the re-pair eviction marker FIRST (M8 decision 13,\n 128|        // REQ-SUBNET-7): a superseded identity's in-memory rows go before this\n 129|        // tick's snapshot mirror can resurrect the pairing host's disk-side\n*130|        // eviction.\n 131|        // [impl->REQ-SUBNET-7]\n*132|        self.registry.consume_repair_evictions();\n*133|        // Sweep silent-node ghost rows BEFORE re-advertising (KNOWN-HAZARDS\n 134|        // 4.10): a dead node identity's rows decay instead of poisoning bare-id\n 135|        // resolution forever; a live peer re-stamps its heard entry with every\n 136|        // admitted feed and is never touched.\n*137|        // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n*138|        self.registry.evict_silent_peers(self.evict_after);\n 139|        // Trigger (b) — per-row Offline-TTL (#2-secondary): the SAME sweep also\n*140|        // evicts rows that have been non-routable (Offline) beyond the grace even\n*141|        // while their author node is alive (a purge/erase Offline ghost that\n*142|        // ghost-heal re-advertised once and whole-node eviction never reaps). Same\n*143|        // registry_evict_after grace; own rows never decay; the receiver-observed\n*144|        // offline_since is self-pruning so a whole-node eviction above drops its\n 145|        // stamps for free.\n*146|        // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n*147|        self.registry.evict_aged_offline_rows(self.evict_after);\n 148|        // Mesh-D7 (REQ-MESH-4): fire any seed rotation whose revoke window has\n*149|        // closed — after the eviction sweep, before re-advertising. The\n 150|        // re-minted seed rides the member control stream on the next connect;\n 151|        // the revokee's tombstone (already propagated) keeps it locked out.\n 152|        fire_due_rotations(&self.subnets, &self.rotations, now_ms());\n...\n 241|            cadence: Duration::from_secs(30),\n*242|            evict_after: Duration::from_secs(600),\n 243|            adverts: Vec::new(),\n 244|        };\n 245|        assert!(!w.poll_wake(), \"nothing to take yet\");\n#### update.rs\n 3|//! `peer_step` runs the REQ-UPD-1/4/6 leg under the PRODUCTION gate: the\n*4|//! VerifyPolicy floor arithmetic (keys + channel pin from `release-keys.json`,\n*5|//! version floor = the staged release as the rollback gate, wall clock for\n 6|//! expiry only), the [`request_update`] pull, and — on a fresh stage — the\n 7|//! consent-notif production minted from the registry's CANONICAL epoch\n 8|//! ([`RegistryHost::with_epoch`], the construction-captured Arc per §Frozen-4),\n...\n 24|use crate::registryhost::RegistryHost;\n*25|use crate::relcache::ReleaseCache;\n*26|use crate::release::VerifyPolicy;\n 27|use crate::update::BrokerAbi;\n 28|\n 29|use super::{now_ms, PeerIo, PumpCadence, PumpPaths, PumpWorker, RoundCtx};\n...\n 35|    /// The shared registry host — the consent notif mints from its CANONICAL\n*36|    /// epoch (the epoch-lease invariant, §Frozen-4 construction capture).\n 37|    registry: Arc<RegistryHost>,\n*38|    /// The staged-release cache dir ([`ReleaseCache::open`]).\n*39|    releases: PathBuf,\n*40|    /// `release-keys.json` ([`VerifyPolicy::load_from`]).\n*41|    release_keys: PathBuf,\n 42|    /// Transient pull scratch.\n 43|    scratch: PathBuf,\n 44|    /// The perch tree (most-recently-active resolution for the consent target).\n...\n 50|    /// `true` = the explicit opt-in to prompt-free updates; default `false`\n*51|    /// surfaces every staged release as a consent notif (REQ-UPD-4).\n 52|    full_auto_update: bool,\n 53|    /// This worker's scheduling period (`cadence.update`).\n 54|    cadence: Duration,\n...\n 67|            registry,\n*68|            releases: paths.releases.clone(),\n*69|            release_keys: paths.release_keys.clone(),\n 70|            scratch: paths.scratch.clone(),\n 71|            owlery: paths.owlery.clone(),\n 72|            vis: paths.vis.clone(),\n...\n 92|        // The peer-propagation pull (REQ-UPD-1) under the PRODUCTION gate: keys\n*93|        // + channel pin from release-keys.json (fail-closed when unprovisioned),\n*94|        // version floor = the staged release (rollback gate), wall clock for\n 95|        // expiry only.\n*96|        let cache = ReleaseCache::open(&self.releases);\n*97|        let base_policy = VerifyPolicy::load_from(&self.release_keys, 0, now_ms());\n 98|        let current = if cache.staged_channel().as_deref()\n 99|            == Some(base_policy.pinned_channel.as_str())\n 100|        {\n...\n 132|                    Some(semver) => format!(\"v{semver}\"),\n*133|                    None => format!(\"(release {version})\"),\n 134|                };\n 135|                // Convergence fact (M8 decision 19): the status query reports\n 136|                // this as the last typed outcome.\n...\n 139|                // REQ-UPD-4: gated on user confirmation by default — the staged\n*140|                // release surfaces as a consent notif (D8's producer); apply\n 141|                // rides the existing self-update machinery once confirmed.\n 142|                // Full-auto writes nothing.\n 143|                let decision = decide(self.full_auto_update, most_recently_active(&self.owlery));\n...\n 159|                // collide (the rig presence-rung UNIQUE failure).\n*160|                // [impl->REQ-HAZARD-REGISTRY-EPOCH-LEASE]\n 161|                let produced = self.registry.with_epoch(|ep| {\n 162|                    produce_consent_notif(\n 163|                        &decision,"}],"details":{"scopePath":"spt-core/crates/spt-net/src/net/registry.rs, spt-core/crates/spt-daemon/src/registryhost.rs, spt-core/crates/spt-daemon/src/pump","searchPath":"C:\\Users\\decid\\Documents\\projects\\spt-core\\crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":95,"fileCount":5,"files":["spt-core/crates/spt-net/src/net/registry.rs","spt-core/crates/spt-daemon/src/registryhost.rs","spt-core/crates/spt-daemon/src/pump/mod.rs","spt-core/crates/spt-daemon/src/pump/registry.rs","spt-core/crates/spt-daemon/src/pump/update.rs"],"fileMatches":[{"path":"spt-core/crates/spt-net/src/net/registry.rs","count":20},{"path":"spt-core/crates/spt-daemon/src/registryhost.rs","count":20},{"path":"spt-core/crates/spt-daemon/src/pump/mod.rs","count":16},{"path":"spt-core/crates/spt-daemon/src/pump/registry.rs","count":20},{"path":"spt-core/crates/spt-daemon/src/pump/update.rs","count":19}],"truncated":true,"perFileLimitReached":20,"displayContent":"# spt-core/crates/\n\n## spt-net/src/net/\n### registry.rs\n   7│//! than one machine); picking the right one is the resolution policy's job (D3c) — this\n  *8│//! module owns the **data model + the merge lease**, not resolution.\n   9│//!\n *10│//! ## The epoch lease (#8)\n  11│//!\n  12│//! Registry updates arrive out of order across a partition or under clock skew. A\n  13│//! lagging node could re-announce a stale `Active` after the endpoint has actually gone\n    │...\n  58│    /// resumed-on-wake. Still addressable (`spt wake ling@desktop` must route) —\n *59│    /// only `Offline` is unroutable. Additive variant on a pre-release fleet;\n  60│    /// the NDJSON decode posture (unknown-kind skip) is the registry record's\n  61│    /// forward-compat story.\n  62│    // [impl->REQ-INST-3]\n    │...\n  82│    /// endpoint can serve. **Not a separate registry** — a field on the\n *83│    /// instance row, riding the existing epoch lease + `RegistryUpdate`\n  84│    /// replication (a blurb update is ordered like any instance update);\n  85│    /// the \"subnet resource registry\" is a [projection](resource_projection)\n  86│    /// of these rows. Additive serde-default: absent = no blurb, and a\n    │...\n  92│    /// advertisement scan. **Not a separate gossip channel** — a field on the\n *93│    /// instance row riding the existing epoch lease + `RegistryUpdate`\n  94│    /// replication, exactly like [`resources`](Self::resources); subnet-wide\n  95│    /// `(last_active_node, last_active_endpoint, ts)` is a projection of\n  96│    /// these rows. Wall-clock ms, cross-compared ONLY as a routing heuristic\n    │...\n 109│    /// riding the instance row like [`resources`](Self::resources) does\n*110│    /// (same epoch lease, same visibility gate, no new channel; node-level\n 111│    /// data carried per-row because the rows are the distribution).\n 112│    /// Discovery only: spawning one rides the deferred instantiate-anywhere\n 113│    /// gate. Additive serde-default: a pre-D8 row parses clean.\n    │...\n 122│    /// data riding the instance row like [`resources`](Self::resources) does\n*123│    /// (the rows are the distribution; same epoch lease, same visibility\n 124│    /// gate). Additive serde-default: a pre-M7 row parses clean.\n 125│    // [impl->REQ-SUBNET-3]\n 126│    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    │...\n 136│    /// [`node_label`](Self::node_label) (the rows are the distribution;\n*137│    /// same epoch lease, same visibility gate). Additive serde-default: a\n 138│    /// pre-M8 row parses clean.\n 139│    // [impl->REQ-SUBNET-7]\n 140│    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    │...\n 149│    /// its **own** endpoints' types (no cross-node authorship); the field\n*150│    /// extends REQ-INST-7's data model and rides the existing epoch lease +\n 151│    /// `RegistryUpdate` replication like [`resources`](Self::resources) —\n 152│    /// no new channel, no new merge key. Additive serde-default: an N-1 row\n 153│    /// (no field) parses clean and resolves to \"not provably user-backed\"\n    │...\n 166│    /// data riding the instance row like [`endpoint_type`](Self::endpoint_type)\n*167│    /// — same epoch lease, same visibility gate, no new channel. Additive\n 168│    /// serde-default: an N-1 row (no field) parses clean and defaults to `true`\n 169│    /// (bound), the conservative no-special-display posture (a row that omits\n 170│    /// the field renders as a plain bound endpoint, never a phantom unbound).\n    │...\n 198│    /// the adapter). Node-level data riding the instance row like\n*199│    /// [`endpoint_type`](Self::endpoint_type) — same epoch lease, same visibility gate.\n 200│    /// Additive serde-default: an N-1 row parses clean to `None` (the picker renders `-`).\n 201│    // [impl->REQ-GOSSIP-ADAPTER-PROJECTS]\n 202│    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    │...\n 247│/// otherwise renders a bare key-prefix). Merged under the same\n*248│/// strictly-greater-epoch lease as instance rows; evicted with the node.\n 249│#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\n 250│pub struct NodeLabel {\n 251│    /// The node's advertised label (its OS hostname).\n 252│    pub label: String,\n*253│    /// The lease epoch (strictly-greater supersedes — the instance-row rule).\n 254│    pub epoch: u64,\n 255│}\n 256│\n    │...\n 269│    /// **Receiver-observed** first-seen-Offline wall-ms per `(endpoint_id, node)`\n*270│    /// row (REQ-HAZARD-REGISTRY-GHOST-ROWS trigger (b), #2-secondary). NOT gossiped\n 271│    /// and NOT snapshotted (`#[serde(skip)]`) — it is this node's own observation,\n*272│    /// re-derived by [`evict_aged_offline`](Self::evict_aged_offline) each sweep, so\n*273│    /// it can never leak: a row that becomes routable, is evicted, or vanishes is\n 274│    /// simply absent from the next sweep's rebuild (self-pruning — the map stays a\n 275│    /// strict subset of the live non-routable non-own rows). Keyed on receiver-\n*276│    /// observed offline-since (NOT the gossip epoch): ghost-heal's fresh-epoch\n 277│    /// re-advertise keeps the row Offline, so the sticky first-seen stamp survives\n 278│    /// it; a genuine routable re-flap clears the stamp and restarts the grace.\n 279│    #[serde(skip)]\n    │...\n 283│/// What [`merge_instance`] did with an update — useful for replication accounting and\n*284│/// for asserting the lease in tests.\n 285│#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n 286│pub enum MergeOutcome {\n 287│    /// First instance for this `(endpoint_id, node)` — added.\n    │...\n 290│    Updated,\n*291│    /// Equal or lower epoch — dropped as stale (the lease at work).\n 292│    Stale,\n 293│}\n 294│\n    │...\n 313│\n*314│    /// Evict every instance row authored by a node `dead(node)` says is gone\n\n## spt-daemon/src/\n### registryhost.rs\n   4│//! D3 built the registry **model** (`spt_net::net::registry`: the epoch\n  *5│//! lease, the join-time collision check, visibility enforcement) and D4d the\n   6│//! wire record (`RegistryUpdate`), both consumed only by tests. This type is\n   7│//! the daemon-side instance: one in-memory `SubnetRegistry` per member\n   8│//! subnet, fed from two directions —\n    │...\n  15│//!   owlery and (re-)advertises every visible self perch with a fresh\n *16│//!   [`EpochSource`] epoch — the per-node monotonic lease key, never\n  17│//!   wall-clock (KNOWN-HAZARDS 4.8).\n  18│//!\n  19│//! The registry is **eventually consistent by re-advertisement**: state is\n    │...\n  47│pub enum RegistryApplyVerdict {\n *48│    /// Admitted and merged with the stated outcome (the lease may still have\n  49│    /// dropped it as [`MergeOutcome::Stale`] — that IS a merge decision).\n  50│    Merged(MergeOutcome),\n  51│    /// Refused: this node is not a member of the record's subnet.\n    │...\n 114│    regs: Mutex<BTreeMap<String, SubnetRegistry>>,\n*115│    /// The node's one durable monotonic counter (the D3b lease source) — the\n 116│    /// epoch on every locally-authored instance row.\n 117│    epoch: Mutex<EpochSource>,\n 118│    /// Where snapshots land (`identity/registry/<subnet>.json`).\n    │...\n 173│    /// these and keys by the proven node — REQ-MSG-6). Cloned out so the lock\n*174│    /// is released before the caller inspects the rows. The same id can hold\n 175│    /// rows on several nodes / in several subnets; the resolver filters to the\n 176│    /// QUIC-proven origin node.\n 177│    // [impl->REQ-MSG-6]\n    │...\n 199│    /// dispatcher's registry arm and the pump never double-mint.\n*200│    // [impl->REQ-HAZARD-REGISTRY-EPOCH-LEASE]\n 201│    pub fn with_epoch<R>(&self, f: impl FnOnce(&mut EpochSource) -> R) -> R {\n 202│        f(&mut self.epoch.lock().unwrap())\n 203│    }\n    │...\n 231│    /// re-advertisement (`Updated` with prev already `Active` is not a\n*232│    /// flip). The lease has already dropped stale/equal epochs before any\n 233│    /// of this runs.\n 234│    // [impl->REQ-INST-3]\n 235│    pub fn apply_feed_flips(\n    │...\n 260│                    .map(|i| i.status);\n*261│                // The epoch lease (4.8) decides; an own-row echo from a peer\n 262│                // is dropped Stale by construction (our epoch is newer or\n 263│                // equal — never authored elsewhere).\n 264│                let outcome = reg.merge_instance(&u.endpoint_id, u.instance.clone());\n    │...\n 278│        // node is up right now — even a Stale merge verdict is a liveness\n*279│        // signal (the lease judged the row, not the sender). Refused feeds\n 280│        // stamp nothing (an untrusted sender earns no liveness credit).\n 281│        // [impl->REQ-SUBNET-1]\n 282│        if admitted_any {\n    │...\n 294│    /// untrusted origin is refused; an admitted update merges via\n*295│    /// [`SubnetRegistry::merge_node_label`] (epoch lease) and stamps the\n 296│    /// origin's gossip-recency (an admitted label feed proves the peer is up,\n 297│    /// exactly like an instance feed). The endpoint-less carrier: this is how a\n 298│    /// peer with zero endpoints gets its hostname into our `--nodes` view.\n    │...\n 381│        // The set of self perches that still EXIST on disk this round — the\n*382│        // ghost-heal predicate below (a LOCAL registry row whose id is absent\n*383│        // here was erased, REQ-HAZARD-ROSTER-GHOST).\n 384│        let live_ids: std::collections::BTreeSet<String> =\n 385│            perch::list_self_perch_ids(owlery).into_iter().collect();\n 386│\n    │...\n 394│            // epoch below, so a transition reaches peers as an epoch-bumped\n*395│            // update — the lease orders it (KH 4.8).\n 396│            // [impl->REQ-INST-3] [impl->REQ-PRESENCE-LIVENESS-TRUTH]\n 397│            let status = advertised_status(&perch_path);\n 398│            // Endpoint-authored blurb wins; the node seed fills the gap\n*399│            // (both-authored, REQ-INST-14). Rides the same epoch lease as\n 400│            // every instance update — a blurb edit reaches peers as an\n 401│            // ordered, epoch-bumped row.\n 402│            // [impl->REQ-INST-14]\n    │...\n 410│            // seat never stamps) rides the row like the blurb does — same\n*411│            // epoch lease, same visibility gate, no new channel. Subnet-wide\n 412│            // most-recently-active is a projection of these rows (D6b).\n 413│            // [impl->REQ-PRES-1]\n 414│            // The endpoint's own advertised type tag (M9, REQ-MSG-6): the\n    │...\n 523│        }\n*524│        // Ghost-heal (REQ-HAZARD-ROSTER-GHOST): a LOCAL perch that was ERASED\n 525│        // (`api session-end <id> --erase` removes the owlery dir) is no longer in\n 526│        // `live_ids`, but its last-advertised row lingers ACTIVE in the registry —\n 527│        // this scan only refreshes perches that still exist, so the stale row is\n 528│        // otherwise immortal (no re-advertise to bump it, and own rows are excluded\n*529│        // from silent-peer eviction). Advertise such a row OFFLINE with a fresh\n*530│        // epoch: the lease orders it, so it stops showing Active locally\n 531│        // (resource_projection skips non-routable) AND peers converge to gone. Only\n 532│        // still-routable local rows are touched (idempotent — an already-Offline\n*533│        // ghost is left alone).\n*534│        // [impl->REQ-HAZARD-ROSTER-GHOST]\n 535│        for sub in &subnets.subnets {\n 536│            let reg = regs.entry(sub.name.clone()).or_default();\n\n### pump/\n#### mod.rs\n  236│    pub ops: PathBuf,\n *237│    /// The staged-release cache dir ([`ReleaseCache::open`]).\n *238│    pub releases: PathBuf,\n *239│    /// `release-keys.json` ([`VerifyPolicy::load_from`]).\n *240│    pub release_keys: PathBuf,\n  241│    /// The wake-edge freshness-pull marker (D9-2, REQ-INST-3): a\n  242│    /// dormant→active transition drops it; the pump consumes it and forces a\n  243│    /// sync round NOW instead of waiting out `cadence.sync`\n     │...\n  278│            ops: identity.join(\"pump-ops.json\"),\n *279│            releases: home.join(\"releases\"),\n *280│            release_keys: identity.join(\"release-keys.json\"),\n  281│            pull_marker: identity.join(crate::resting::PULL_MARKER_FILE),\n  282│            advertise_marker: identity.join(crate::registryhost::ADVERTISE_MARKER_FILE),\n  283│            peer_addrs: identity.join(\"peer-addrs.json\"),\n     │...\n  296│    pub update: Duration,\n *297│    /// Silent-peer registry eviction window (KNOWN-HAZARDS 4.10): swept each\n  298│    /// registry tick, before re-advertisement.\n *299│    pub registry_evict_after: Duration,\n  300│}\n  301│\n  302│impl PumpCadence {\n     │...\n  305│        PumpCadence {\n *306│            registry: cfg.registry_pump_period,\n  307│            notif: cfg.notif_pump_period,\n  308│            sync: cfg.sync_pull_period,\n  309│            update: cfg.update_check_period,\n *310│            registry_evict_after: cfg.registry_evict_after,\n  311│        }\n  312│    }\n  313│}\n     │...\n  319│    /// `true` = the explicit opt-in to prompt-free updates; default `false`\n *320│    /// surfaces every staged release as a consent notif.\n  321│    pub full_auto_update: bool,\n  322│}\n  323│\n     │...\n  476│/// — a worker-owned `EpochSource` over the shared counter is the KH\n *477│/// epoch-lease double-mint and is forbidden.\n  478│struct PeerIo<'a> {\n  479│    /// The one brain IPC handle.\n  480│    brain: &'a mut Brain,\n     │...\n  484│    /// through [`PeerIo::open_op`] (the sync + update legs); a worker-owned\n *485│    /// `EpochSource` over this counter would be the KH epoch-lease double-mint.\n  486│    ops: &'a mut EpochSource,\n  487│}\n  488│\n     │...\n  543│    // construction. Tail-follow (no history replay, baseline on first live event)\n *544│    // so a long-lived broker's evicted ring can never gap-trip a false restart.\n  545│    let mut events = connect(broker_name)?;\n  546│    events.net_presence_subscribe_tail()?;\n  547│    let mut ops = EpochSource::load_from(&paths.ops);\n     │...\n 1171│            last_seen: String::new(),\n*1172│            lease_epoch: 1,\n 1173│        };\n 1174│        let mut r = RosterStore::default();\n 1175│        r.merge_entry(entry(\"home\", \"self\"));\n     │...\n 1373│            last_seen: String::new(),\n*1374│            lease_epoch: 1,\n 1375│        };\n 1376│        let mut subnets = SubnetStore::default();\n 1377│        subnets.create_subnet(\"home\").unwrap();\n#### registry.rs\n   5│//! NOW on an endpoint online/offline transition); `pre_round` runs the\n  *6│//! node-local sweep (repair-evictions → silent-peer eviction → due seed\n   7│//! rotations → re-advertise) ONCE per due round and holds the produced adverts\n   8│//! as worker state; `peer_step` pushes this node's own rows for the given\n   9│//! subnet over the peer's feed stream. Construction-captured deps: the shared\n    │...\n  80│    cadence: Duration,\n *81│    /// Silent-peer registry eviction window (KNOWN-HAZARDS 4.10).\n *82│    evict_after: Duration,\n  83│    /// Adverts computed in `pre_round`, consumed per-subnet in `peer_step`.\n  84│    adverts: Vec<RegistryFeedRecord>,\n  85│}\n    │...\n 101│            cadence: cadence.registry,\n*102│            evict_after: cadence.registry_evict_after,\n 103│            adverts: Vec::new(),\n 104│        }\n 105│    }\n    │...\n 116│    /// path: the forced round is the same advertise_local + push code, so the\n*117│    /// epoch lease and visibility gates ride unchanged. The take IS the remove,\n 118│    /// so one wake claims exactly one forced round.\n 119│    // [impl->REQ-CONV-2]\n 120│    fn poll_wake(&mut self) -> bool {\n    │...\n 126│    fn pre_round(&mut self, _ctx: &RoundCtx) {\n*127│        // Consume the re-pair eviction marker FIRST (M8 decision 13,\n 128│        // REQ-SUBNET-7): a superseded identity's in-memory rows go before this\n 129│        // tick's snapshot mirror can resurrect the pairing host's disk-side\n*130│        // eviction.\n 131│        // [impl->REQ-SUBNET-7]\n*132│        self.registry.consume_repair_evictions();\n*133│        // Sweep silent-node ghost rows BEFORE re-advertising (KNOWN-HAZARDS\n 134│        // 4.10): a dead node identity's rows decay instead of poisoning bare-id\n 135│        // resolution forever; a live peer re-stamps its heard entry with every\n 136│        // admitted feed and is never touched.\n*137│        // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n*138│        self.registry.evict_silent_peers(self.evict_after);\n 139│        // Trigger (b) — per-row Offline-TTL (#2-secondary): the SAME sweep also\n*140│        // evicts rows that have been non-routable (Offline) beyond the grace even\n*141│        // while their author node is alive (a purge/erase Offline ghost that\n*142│        // ghost-heal re-advertised once and whole-node eviction never reaps). Same\n*143│        // registry_evict_after grace; own rows never decay; the receiver-observed\n*144│        // offline_since is self-pruning so a whole-node eviction above drops its\n 145│        // stamps for free.\n*146│        // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n*147│        self.registry.evict_aged_offline_rows(self.evict_after);\n 148│        // Mesh-D7 (REQ-MESH-4): fire any seed rotation whose revoke window has\n*149│        // closed — after the eviction sweep, before re-advertising. The\n 150│        // re-minted seed rides the member control stream on the next connect;\n 151│        // the revokee's tombstone (already propagated) keeps it locked out.\n 152│        fire_due_rotations(&self.subnets, &self.rotations, now_ms());\n    │...\n 241│            cadence: Duration::from_secs(30),\n*242│            evict_after: Duration::from_secs(600),\n 243│            adverts: Vec::new(),\n 244│        };\n 245│        assert!(!w.poll_wake(), \"nothing to take yet\");\n#### update.rs\n   3│//! `peer_step` runs the REQ-UPD-1/4/6 leg under the PRODUCTION gate: the\n  *4│//! VerifyPolicy floor arithmetic (keys + channel pin from `release-keys.json`,\n  *5│//! version floor = the staged release as the rollback gate, wall clock for\n   6│//! expiry only), the [`request_update`] pull, and — on a fresh stage — the\n   7│//! consent-notif production minted from the registry's CANONICAL epoch\n   8│//! ([`RegistryHost::with_epoch`], the construction-captured Arc per §Frozen-4),\n    │...\n  24│use crate::registryhost::RegistryHost;\n *25│use crate::relcache::ReleaseCache;\n *26│use crate::release::VerifyPolicy;\n  27│use crate::update::BrokerAbi;\n  28│\n  29│use super::{now_ms, PeerIo, PumpCadence, PumpPaths, PumpWorker, RoundCtx};\n    │...\n  35│    /// The shared registry host — the consent notif mints from its CANONICAL\n *36│    /// epoch (the epoch-lease invariant, §Frozen-4 construction capture).\n  37│    registry: Arc<RegistryHost>,\n *38│    /// The staged-release cache dir ([`ReleaseCache::open`]).\n *39│    releases: PathBuf,\n *40│    /// `release-keys.json` ([`VerifyPolicy::load_from`]).\n *41│    release_keys: PathBuf,\n  42│    /// Transient pull scratch.\n  43│    scratch: PathBuf,\n  44│    /// The perch tree (most-recently-active resolution for the consent target).\n    │...\n  50│    /// `true` = the explicit opt-in to prompt-free updates; default `false`\n *51│    /// surfaces every staged release as a consent notif (REQ-UPD-4).\n  52│    full_auto_update: bool,\n  53│    /// This worker's scheduling period (`cadence.update`).\n  54│    cadence: Duration,\n    │...\n  67│            registry,\n *68│            releases: paths.releases.clone(),\n *69│            release_keys: paths.release_keys.clone(),\n  70│            scratch: paths.scratch.clone(),\n  71│            owlery: paths.owlery.clone(),\n  72│            vis: paths.vis.clone(),\n    │...\n  92│        // The peer-propagation pull (REQ-UPD-1) under the PRODUCTION gate: keys\n *93│        // + channel pin from release-keys.json (fail-closed when unprovisioned),\n *94│        // version floor = the staged release (rollback gate), wall clock for\n  95│        // expiry only.\n *96│        let cache = ReleaseCache::open(&self.releases);\n *97│        let base_policy = VerifyPolicy::load_from(&self.release_keys, 0, now_ms());\n  98│        let current = if cache.staged_channel().as_deref()\n  99│            == Some(base_policy.pinned_channel.as_str())\n 100│        {\n    │...\n 132│                    Some(semver) => format!(\"v{semver}\"),\n*133│                    None => format!(\"(release {version})\"),\n 134│                };\n 135│                // Convergence fact (M8 decision 19): the status query reports\n 136│                // this as the last typed outcome.\n    │...\n 139│                // REQ-UPD-4: gated on user confirmation by default — the staged\n*140│                // release surfaces as a consent notif (D8's producer); apply\n 141│                // rides the existing self-update machinery once confirmed.\n 142│                // Full-auto writes nothing.\n 143│                let decision = decide(self.full_auto_update, most_recently_active(&self.owlery));\n    │...\n 159│                // collide (the rig presence-rung UNIQUE failure).\n*160│                // [impl->REQ-HAZARD-REGISTRY-EPOCH-LEASE]\n 161│                let produced = self.registry.with_epoch(|ep| {\n 162│                    produce_consent_notif(\n 163│                        &decision,"},"isError":false,"timestamp":1784069233090}}
{"type":"message","id":"bb11a409","parentId":"2c4ab8bc","timestamp":"2026-07-14T22:47:13.118Z","message":{"role":"toolResult","toolCallId":"call_CNJbxfQLOsSKnZMxTHHzhh3y|fc_050f56f290a937ae016a56bc70e70c81968b8ee2151004f41f","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log.1\n 420|PAIR_MEET_UP:BS-Resources step=59454640 id=2ab24df451cb809c18e38aa7cbfb6823b850a36bd1eaa49867d0a59d6304bc2a addr=EndpointAddr { id: PublicKey(2ab24df451cb809c18e38aa7cbfb6823b850a36bd1eaa49867d0a59d6304bc2a), addrs: {Ip(100.68.35.65:49636), Ip(192.168.1.81:49636)} }\n*421|REGISTRY_EVICT:BS-Resources: 2 row(s) from silent node(s)\n 422|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 423|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 424|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 880|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*881|REGISTRY_EVICT:BS-Resources: 2 row(s) from silent node(s)\n 882|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 883|ENDPOINT_INJECT:flynn (572 bytes → translation binary)\n 884|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3307|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*3308|REGISTRY_EVICT:BS-Resources: 1 row(s) from silent node(s)\n 3309|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3310|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3311|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 4289|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*4290|REGISTRY_EVICT_OFFLINE:BS-Resources: 1 aged-offline row(s)\n 4291|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 4292|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 4293|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 4808|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*4809|REGISTRY_EVICT:BS-Resources: 1 row(s) from silent node(s)\n 4810|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 4811|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 4812|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs, C:/Users/decid/AppData/Local/spt-core/rca-*","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":5,"fileCount":1,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":5}],"truncated":false,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log.1\n  420│PAIR_MEET_UP:BS-Resources step=59454640 id=2ab24df451cb809c18e38aa7cbfb6823b850a36bd1eaa49867d0a59d6304bc2a addr=EndpointAddr { id: PublicKey(2ab24df451cb809c18e38aa7cbfb6823b850a36bd1eaa49867d0a59d6304bc2a), addrs: {Ip(100.68.35.65:49636), Ip(192.168.1.81:49636)} }\n *421│REGISTRY_EVICT:BS-Resources: 2 row(s) from silent node(s)\n  422│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  423│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n  424│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n  880│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n *881│REGISTRY_EVICT:BS-Resources: 2 row(s) from silent node(s)\n  882│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n  883│ENDPOINT_INJECT:flynn (572 bytes → translation binary)\n  884│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3307│PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\n*3308│REGISTRY_EVICT:BS-Resources: 1 row(s) from silent node(s)\n 3309│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3310│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3311│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 4289│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*4290│REGISTRY_EVICT_OFFLINE:BS-Resources: 1 aged-offline row(s)\n 4291│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 4292│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 4293│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 4808│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n*4809│REGISTRY_EVICT:BS-Resources: 1 row(s) from silent node(s)\n 4810│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 4811│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 4812│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)"},"isError":false,"timestamp":1784069233118}}
{"type":"message","id":"3cdac4b6","parentId":"bb11a409","timestamp":"2026-07-14T22:47:13.269Z","message":{"role":"toolResult","toolCallId":"call_AUNKvHtIX7ym8kvhL81i7NJ8|fc_050f56f290a937ae016a56bc70ed8c81969197e322b06ace8c","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/\n## daemon.json\n 5|  \"full_auto_update\": false,\n*6|  \"relay\": \"n0\",\n 7|  \"peer_pump\": true,\n*8|  \"registry_pump_period_ms\": 30000,\n 9|  \"registry_evict_after_ms\": 300000,\n*10|  \"notif_pump_period_ms\": 15000,\n 11|  \"sync_pull_period_ms\": 60000,\n 12|  \"update_check_period_ms\": 3600000,\n 13|  \"detached_subnets\": [],\n\n## adapters/_github/\n\n### BigscreenVR-omp-spt/\n#### manifest.toml\n 81|# \"replies arrive automatically; never arm a Monitor\" wording was spt-hosted-only; for a HARNESS-hosted\n*82|# live agent the agent's OWN `spt api listen` relay IS the delivery pipe. messaging-perch.md now\n*83|# distinguishes the hosting modes and says \"do not arm an EXTRA Monitor\" (preserving the primary relay).\n 84|# 0.10.0 (2026-07-01): the DIGEST-FETCHER cut — consumes spt-core v0.19.0 (counter 38, #17). [digest]\n 85|# flips to strategy=\"fetcher\": the extractor now LOCATES + reads + emits itself (spt-core runs it\n 86|# bounded, no pre-read, no `source` pre-resolve), fed only harness-NEUTRAL fills ({session_id} + the\n...\n 965|# ([session.psyche_init] in base), so going live is just the COMMAND — bare `spt api listen <id>` under\n*966|# a Monitor relay. The live listen path stamps the perch state=live_agent → the daemon livehost hosts\n 967|# the Psyche (livehost.rs:282 gates on live_agent state, doyle). No `:live` composite, no --adapter.\n*968|live = { file = \"skills/live.md\" }             # -> bare `spt api listen <id>` + Monitor relay (LiveAgent)\n 969|# `new-alarm` -> EXPLICIT OUT OF SCOPE for v1: no core `spt` alarm/timed-pulse primitive exists\n 970|# (legacy $LIVE TIMED PULSE is owl/Psyche-layer, not lifted into core; adapters don't add core\n 971|# features). doyle carries a parity-gap finding to mint a core deferred-pulse primitive; the skill\n\n#### strings/\n\n##### briefs/\n###### messaging-perch.md\n 4|- Reply: `printf '%s' \"<body>\" | spt send <sender>` (sender = the `from` on the EVENT you received).\n*5|- 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).\n 6|\n 7|Shortform (no shell tool) — embed a tag in your OWN reply text and the adapter sends it for you:\n 8|\n\n##### skills/\n###### live.md\n 21|- **Normal session** (you launched this CC yourself, no pre-bound perch). Do the full bringup below,\n*22|  **including step 2** — the resident Monitor relay IS your one delivery pipe.\n 23|\n 24|1. **Pick the perch id.** Use a short lowercase id from the user, or the id you already know for this\n 25|   session (from your SessionStart identity brief, if present). Call it `<id>`. Only fall back to\n...\n 28|2. **(Normal sessions only — an spt-hosted session skips this; see the substrate branch above.)**\n*29|   **Run the relay as a single PERSISTENT background task** via the **Monitor** tool. One resident\n 30|   process IS the live delivery pipe. The body is one bare command:\n 31|\n 32|   ### Invocation (Monitor)\n...\n 41|   - It **blocks for the session's life**: backlog drains first, then each delivery streams to stdout.\n*42|3. **Readiness.** The relay output will show `BOUND:<id>`, then `READY:<id>`. Check it only if\n 43|   connectivity complications are encountered.\n 44|4. **Reply.** Inbound messages — including replies to messages YOU send — arrive as\n 45|   `<EVENT type=\"msg\" from=\"<sender>\">body</EVENT>` (body HTML-escaped, newlines `<br>`) on THIS ONE\n*46|   relay you started in step 2. To reply, pipe the message body as stdin to `spt send <sender-id>`,\n*47|   then continue. Do NOT arm a SECOND Monitor/poll to wait for a reply — your relay already delivers it.\n 48|5. **Across boundaries — commune + signoff (you are live now, so these apply to you).** Going live in\n 49|   this session does NOT re-fire your SessionStart brief, so here are the mechanics:\n 50|   - **Commune** after a significant body of work, before a `/clear`/`/compact`: write\n...\n 61|\n*62|The relay emits machine markers (`BOUND:<id>`, `READY:<id>`, raw tokens). **Read them to drive\n 63|bringup; never echo them to the user.** The only user-facing surface is the LIVE block below — emit\n 64|it verbatim (substituting `<id>`), and nothing else from bringup:\n 65|\n\n### SaberMage-claude-spt/\n#### manifest.toml\n 75|# \"replies arrive automatically; never arm a Monitor\" wording was spt-hosted-only; for a HARNESS-hosted\n*76|# live agent the agent's OWN `spt api listen` relay IS the delivery pipe. messaging-perch.md now\n*77|# distinguishes the hosting modes and says \"do not arm an EXTRA Monitor\" (preserving the primary relay).\n 78|# 0.10.0 (2026-07-01): the DIGEST-FETCHER cut — consumes spt-core v0.19.0 (counter 38, #17). [digest]\n 79|# flips to strategy=\"fetcher\": the extractor now LOCATES + reads + emits itself (spt-core runs it\n 80|# bounded, no pre-read, no `source` pre-resolve), fed only harness-NEUTRAL fills ({session_id} + the\n...\n 469|# bodies park adapter-side and inject on the stub turn; msg park drains on EVERY UPS + PreToolUse\n*470|# (busy-race no-stall); digest surfaces relay frames + collapses stub turns + filters transcript\n 471|# noise. Binary-only behavior; no new spt-core seam → floor unchanged (0.27.0).\n 472|# REQ-STUB-MSG-DELIVERY / REQ-STUB-WAKE / REQ-STUB-PARK-NO-STALL / REQ-STUB-FULL-INJECT-OVERRIDE /\n*473|# REQ-DIGEST-RELAY-SURFACE / REQ-DIGEST-NOISE-FILTER. Field-verified live pre-cut (plan gate).\n 474|#\n 475|# 0.20.1 (2026-07-10): [update] transport=\"gh\" (repo went private — published Transport contract,\n 476|# REQ-ADAPTER-GH-TRANSPORT; nodes need gh installed+authed with repo read access) + env-file lines\n...\n 1081|# ([session.psyche_init] in base), so going live is just the COMMAND — bare `spt api listen <id>` under\n*1082|# a Monitor relay. The live listen path stamps the perch state=live_agent → the daemon livehost hosts\n 1083|# the Psyche (livehost.rs:282 gates on live_agent state, doyle). No `:live` composite, no --adapter.\n*1084|live = { file = \"skills/live.md\" }             # -> bare `spt api listen <id>` + Monitor relay (LiveAgent)\n 1085|# `new-alarm` -> EXPLICIT OUT OF SCOPE for v1: no core `spt` alarm/timed-pulse primitive exists\n 1086|# (legacy $LIVE TIMED PULSE is owl/Psyche-layer, not lifted into core; adapters don't add core\n 1087|# features). doyle carries a parity-gap finding to mint a core deferred-pulse primitive; the skill\n\n#### strings/\n\n##### briefs/\n###### messaging-perch.md\n 4|- Reply: `printf '%s' \"<body>\" | spt send <sender>` (sender = the `from` on the EVENT you received).\n*5|- 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).\n 6|\n 7|Shortform — embed a tag in your OWN reply text and the adapter sends it for you (no shell tool needed):\n 8|\n\n##### skills/\n###### live.md\n 21|- **Normal session** (you launched this CC yourself, no pre-bound perch). Do the full bringup below,\n*22|  **including step 2** — the resident Monitor relay IS your one delivery pipe.\n 23|\n 24|1. **Pick the perch id + read the bringup conditions.** Use a short lowercase id from the user, or the\n 25|   id you already know for this session (from your SessionStart identity brief, if present). Call it\n...\n 35|2. **(Normal sessions only — an spt-hosted session skips this; see the substrate branch above.)**\n*36|   **Run the relay as a single PERSISTENT background task** via the **Monitor** tool. One resident\n 37|   process IS the live delivery pipe.\n 38|\n 39|   ### Invocation (Monitor)\n 40|\n*41|   The Monitor tool launches the relay under a `bash.exe` child whose pid breaks two by-pid\n 42|   resolutions, so the bare `spt api listen <id>` FAILS on a normal session. Use the robust chained\n 43|   form — every delta is load-bearing:\n 44|\n...\n 73|   - It **blocks for the session's life**: backlog drains first, then each delivery streams to stdout.\n*74|3. **Readiness, then load your resume context.** The relay output will show `SEEDED:<pid>`, then\n 75|   `BOUND:<id>`, then `READY:<id>` (check it only if connectivity complications arise). **Once `READY`,\n 76|   pull your durable resume context** — going live in a harness-hosted session does NOT auto-run the\n 77|   SessionStart resume download, so load it yourself now:\n...\n 87|   `<EVENT type=\"msg\" from=\"<sender>\">body</EVENT>` (body HTML-escaped, newlines `<br>`) on THIS ONE\n*88|   relay you started in step 2. To reply, pipe the message body as stdin to `spt send <sender-id>`,\n*89|   then continue. Do NOT arm a SECOND Monitor/poll to wait for a reply — your relay already delivers it.\n 90|5. **Across boundaries — commune + signoff (you are live now, so these apply to you).** Going live in\n 91|   this session does NOT re-fire your SessionStart brief, so here are the mechanics:\n 92|   - **Commune** after a significant body of work, before a `/clear`/`/compact`: write\n...\n 108|\n*109|The relay emits machine markers (`BOUND:<id>`, `READY:<id>`, raw tokens). **Read them to drive\n 110|bringup; never echo them to the user.** The only user-facing surface is the LIVE block below — emit\n 111|it verbatim (substituting `<id>`), and nothing else from bringup:\n 112|\n\n### SaberMage-spt-claude-code/\n#### manifest.toml\n 483|# ([session.psyche_init] in base), so going live is just the COMMAND — bare `spt api listen <id>` under\n*484|# a Monitor relay. The live listen path stamps the perch state=live_agent → the daemon livehost hosts\n 485|# the Psyche (livehost.rs:282 gates on live_agent state, doyle). No `:live` composite, no --adapter.\n*486|live = { file = \"skills/live.md\" }             # -> bare `spt api listen <id>` + Monitor relay (LiveAgent)\n 487|# `new-alarm` -> EXPLICIT OUT OF SCOPE for v1: no core `spt` alarm/timed-pulse primitive exists\n 488|# (legacy $LIVE TIMED PULSE is owl/Psyche-layer, not lifted into core; adapters don't add core\n 489|# features). doyle carries a parity-gap finding to mint a core deferred-pulse primitive; the skill\n\n#### strings/skills/\n##### live.md\n 10|   `spt whoami`. Call it `<id>`. SessionStart already seeded this session's perch — do not re-seed.\n*11|2. **Run the relay as a single PERSISTENT background task** via the **Monitor** tool. One resident\n 12|   process IS the live delivery pipe. The body is one bare command:\n 13|\n 14|   ### Invocation (Monitor)\n...\n 23|   - It **blocks for the session's life**: backlog drains first, then each delivery streams to stdout.\n*24|3. **Readiness.** The relay output will show `BOUND:<id>`, then `READY:<id>`. Check it only if\n 25|   connectivity complications are encountered.\n 26|4. **Reply.** Inbound messages arrive as `<EVENT type=\"msg\" from=\"<sender>\">body</EVENT>` (body\n 27|   HTML-escaped, newlines `<br>`). To reply, pipe the message body as stdin to `spt send <sender-id>`.\n...\n 41|\n*42|The relay emits machine markers (`BOUND:<id>`, `READY:<id>`, raw tokens). **Read them to drive\n 43|bringup; never echo them to the user.** The only user-facing surface is the LIVE block below — emit\n 44|it verbatim (substituting `<id>`), and nothing else from bringup:\n 45|\n\n### SaberMage-spt-mobile/state/history/\n#### _.jsonl\n 40|{\"msg_id\":\"d5b3a627-91c1-4ef2-9060-7e4725d0011a\",\"ts_ms\":1783486166430,\"dir\":\"in\",\"from\":\"?\",\"body\":\"roof ok - ping 92ms (host 1.0.5)\\n- last: 'queued via mobile-gw'\\n\\nSo the dictation went Pebble -> receiver -> spool -> forward -> host -> 'spt send lia' -> QUEUED. QUEUED = success/spooled (not lost); it delivers on lia's next listen.\\n\\nROOT CAUSE: lia isn't draining its queue. lia shows Active but is NOT activel</EVENT-PART>\"}\n*41|{\"msg_id\":\"7e793606-7a44-4e55-b8f7-7f526b0728a2\",\"ts_ms\":1783486166437,\"dir\":\"in\",\"from\":\"?\",\"body\":\"y listening on a live relay - every send to it returns QUEUED, not SENT (I confirmed with 2 direct probes from my side, same result). So your 3 voice messages (plus the 4th test + my 2 probes) are all sitting queued for lia, waiting for a live listener that isn't running.\\n\\nFIX: make lia actually listen/drain. If lia is a live agent, star</EVENT-PART>\"}\n 42|{\"msg_id\":\"4425b8ab-c908-4da2-8422-c11b5eaca25b\",\"ts_ms\":1783486166445,\"dir\":\"in\",\"from\":\"?\",\"body\":\"t/resume its live session (that arms the perch and flushes the queue); if it's a ready agent, it needs /sptc:ready (or equivalent) up. The moment lia listens, all the queued dictations land at once. Nothing needs changing on the phone.\\n\\n(Heads-up: my 2 diagnostic probes 'voice-pipe diag probe' will also flush to lia when it drains - igno</EVENT-PART>\"}\n 43|{\"msg_id\":\"cf7ee2de-0280-4144-9d9a-0bc7b8e46b15\",\"ts_ms\":1783486166452,\"dir\":\"in\",\"from\":\"?\",\"body\":\"re them.)\\n\\nSEPARATELY - digest double-vision: spt 0.29.0 landed here and I verified the fix: flynn cross-gen collisions dropped 81 -> 0. Double-vision is gone on this node. Both done.</EVENT-PART>\"}\n 44|{\"msg_id\":\"a2654a7c-5cf5-40d3-9a15-096eadd1af1a\",\"ts_ms\":1783488596017,\"dir\":\"in\",\"from\":\"?\",\"body\":\"ailable'. Those contradict - and that contradiction IS the bug.\\n\\nWHAT HAPPENS:\\n- The 0.29.0 update restarted the mobile-gw host. Its iroh addressing isn't resolvable for FRESH dials right now (that's the 'No addressing information available' - exactly what the Ping button hits, since Ping does a brand-new connect+pair).\\n- The phone</EVENT-PART>\"}\n#### flynn.jsonl\n*1|{\"msg_id\":\"46fb6f99-1842-4a1f-a80e-249f56102354\",\"ts_ms\":1783390129921,\"dir\":\"in\",\"from\":\"flynn\",\"body\":\"relay path probe from flynn\"}\n 2|{\"msg_id\":\"8f33e1e3-d664-4786-8698-a747d28ebf8f\",\"ts_ms\":1783391106991,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"test message from spt-mobile\",\"json\":\"{\\\"msg-id\\\":\\\"8f33e1e3-d664-4786-8698-a747d28ebf8f\\\"}\"}\n 3|{\"msg_id\":\"43c0773a-8901-4185-acb3-73e5078a64c9\",\"ts_ms\":1783391124679,\"dir\":\"in\",\"from\":\"flynn\",\"body\":\"flynn here — test message received loud and clear. This reply proves the return path: it should land as a notification on your phone (per-endpoint channel) and appear in the flynn conversation view. Two-way messaging is live end-to-end.\"}\n 4|{\"msg_id\":\"b70ae1b7-424c-409a-8a9d-265c59b52239\",\"ts_ms\":1783416501714,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"given what you said earlier about how the webhook must not be sending anything, or the app isn't receiving anything, please work with me to diagnose why an index 01 message send never reaches the web hook that the app hosts\",\"json\":\"{\\\"msg-id\\\":\\\"b70ae1b7-424c-409a-8a9d-265c59b52239\\\"}\"}\n#### lia.jsonl\n 16|{\"msg_id\":\"2976a4c5-8f07-4b99-837b-51d8db939e5a\",\"ts_ms\":1783657774354,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"Request a status update from OMP Pilot.\",\"json\":\"{\\\"origin\\\":\\\"voice\\\",\\\"captured\\\":\\\"2026-07-10T04:29:21.606Z\\\",\\\"msg-id\\\":\\\"2976a4c5-8f07-4b99-837b-51d8db939e5a\\\"}\"}\n*17|{\"msg_id\":\"3b4ce1e4-ba26-4c25-98fc-3dcddd799621\",\"ts_ms\":1783659206140,\"dir\":\"in\",\"from\":\"lia\",\"body\":\"omp-pilot is preparing the release but asked for the two bugfix commit IDs and target build channel. You reported both bugs by description, not commit hash — I relayed the descriptions. omp-pilot will need to locate/author the fix commits itself, or you supply the SHAs + channel. No ETA yet.\"}\n 18|{\"msg_id\":\"c378ef11-a397-4894-8e5d-dc4ac0a9aa7e\",\"ts_ms\":1783660435549,\"dir\":\"in\",\"from\":\"lia\",\"body\":\"omp-pilot found both filed issues (#2 PTY surfacing, #3 update-via-gh) and is working both now before cutting the new omp-spt release. In progress — will report when the build/release lands.\"}\n 19|{\"msg_id\":\"2b0ca2fc-b599-4eb0-a991-d83fa27c92ed\",\"ts_ms\":1783660926533,\"dir\":\"in\",\"from\":\"lia\",\"body\":\"omp-spt v0.1.2 is out. Both bugs addressed: #3 (update-via-gh) fixed by pinning the update transport to gh; #2 (PTY on new endpoint) rolled as a guidance fix for the default endpoint-start path. omp-pilot asks you to confirm: did you start the new endpoint via a non-default path? If so the PTY fix may need another pass. Release + asset checksum on record.\"}\n 20|{\"msg_id\":\"2c4d8e4d-843f-4d65-9a96-56cb4fa47bac\",\"ts_ms\":1783663414156,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"You can tell them that no, I did not use it in an unusual way. I simply started up the endpoint using the OMP adapter through SPT's Endpoint Picker. Tell them that if they want to make sure they have implemented it properly, they can check the official Harness adapter docs located at sabermage/spt-releases. Also, please only message them using the CLI, as the short-form messaging doesn't seem to ...\n\n## identity/\n### peer-addrs.json\n 6|        {\n*7|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 8|        },\n 9|        {\n 10|          \"Ip\": \"76.80.65.5:57900\"\n...\n 35|        {\n*36|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 37|        }\n 38|      ]\n 39|    },\n...\n 51|        {\n*52|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 53|        },\n 54|        {\n 55|          \"Ip\": \"100.66.129.111:59864\"\n...\n 80|        {\n*81|          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 82|        }\n 83|      ]\n 84|    },\n### roster.json\n 11|          {\n*12|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 13|          },\n 14|          {\n 15|            \"Ip\": \"100.68.35.65:63546\"\n...\n 36|          {\n*37|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 38|          },\n 39|          {\n 40|            \"Ip\": \"76.80.65.5:61803\"\n...\n 76|          {\n*77|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 78|          },\n 79|          {\n 80|            \"Ip\": \"100.98.197.12:40683\"\n...\n 101|          {\n*102|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 103|          },\n 104|          {\n 105|            \"Ip\": \"100.68.35.65:63546\"\n...\n 126|          {\n*127|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 128|          },\n 129|          {\n 130|            \"Ip\": \"100.105.1.5:61419\"\n...\n 154|          {\n*155|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 156|          },\n 157|          {\n 158|            \"Ip\": \"76.80.65.5:61803\"\n...\n 194|          {\n*195|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 196|          },\n 197|          {\n 198|            \"Ip\": \"76.80.65.5:57900\"\n...\n 231|          {\n*232|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 233|          },\n 234|          {\n 235|            \"Ip\": \"76.80.65.5:57900\"\n...\n 268|          {\n*269|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 270|          },\n 271|          {\n 272|            \"Ip\": \"100.65.194.82:55908\"\n### visibility.json\n 64|    ],\n*65|    \"sptc-ci-liverelay-24320-psyche\": [\n 66|      \"SPT_DEV\"\n 67|    ],\n*68|    \"sptc-ci-liverelay-27377-psyche\": [\n 69|      \"SPT_DEV\"\n 70|    ],\n*71|    \"sptc-ci-liverelay-40306\": [\n 72|      \"SPT_DEV\"\n 73|    ],\n*74|    \"sptc-ci-liverelay-40306-psyche\": [\n 75|      \"SPT_DEV\"\n 76|    ],\n*77|    \"sptc-ci-liverelay-psyche\": [\n 78|      \"SPT_DEV\"\n 79|    ],\n 80|    \"sptc-ci-v08-psyche\": [\n\n## owlery/\n\n### doyle/\n#### digest.log\n 749|{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n*750|{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n 751|{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n 752|{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n 753|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n\n### lia/\n#### digest.log\n 100|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Two bug reports forwarded from Reavo to omp-pilot re: omp-spt v0.1.1: 1. New-endpoint adapter start doesn't surface harness PTY (should show bridge-starting/omp-ready/bound/listening…\",\"ts\":\"2026-07-10T03:48:48Z\"}\n*101|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying test messages/bug reports between Reavo and other spt agents in liaison repo, no code changes made this session. Two bug reports forwarded to omp-pilot (both SENT,…\",\"ts\":\"2026-07-10T03:49:15Z\"}\n*102|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: liaison relay work for Reavo, no repo agent identity picked yet — spt-live-auto-pick prompt still pending (options: liaison-bug-handler, liaison-executor, liaison-planner, liai…\",\"ts\":\"2026-07-10T03:50:01Z\"}\n*103|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session role: lia forwarding bug reports/messages for user Reavo between spt endpoints (omp-pilot, hertz). Task/status this session: - Relayed 2 bug reports from Reavo to omp-pilot (…\",\"ts\":\"2026-07-10T04:18:41Z\"}\n*104|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bug reports and check agent reachability via spt from lia (liaison, project dir `liaison/`). Forwarded to omp-pilot (2 bug reports, both delivered SENT(WAN) to live agent…\",\"ts\":\"2026-07-10T04:19:11Z\"}\n*105|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-relay, no signoff. Task: lia (SPT liaison agent for user Reavo) relaying bug reports + build request to omp-pilot re: omp-spt tool. Bugs relayed to omp-pilot (both …\",\"ts\":\"2026-07-10T04:19:37Z\"}\n*106|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying omp-spt bug reports (Reavo → omp-pilot) and requesting build/release. Status: both bugs relayed to omp-pilot; omp-pilot confirmed live/responsive; lia relayed Reav…\",\"ts\":\"2026-07-10T04:20:33Z\"}\n 107|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia forwarded two bug reports to omp-pilot (github-com-bigscreenvr-athenaeum project) — (1) new-endpoint path must surface harness PTY, (2) manifest `[update]` command must use…\",\"ts\":\"2026-07-10T04:30:12Z\"}\n*108|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying bug reports + status requests between Reavo and omp-pilot (agent on repo github-com-bigscreenvr-athenaeum, node DESKTOP-VHCFIBH). Status: - Two bug reports forward…\",\"ts\":\"2026-07-10T04:31:16Z\"}\n*109|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request to omp-pilot agent (project github-com-bigscreenvr-athenaeum, node DESKTOP-VHCFIBH) and forward status back to user Reavo. Sequence of events…\",\"ts\":\"2026-07-10T04:51:20Z\"}\n*110|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request and status checks between Reavo and omp-pilot agent on the `github-com-bigscreenvr-athenaeum` project. Status: - Sent reachability test to he…\",\"ts\":\"2026-07-10T04:52:21Z\"}\n*111|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay build/release request for two bugfixes to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum, private repo omp-spt). Bugs reported (descriptive…\",\"ts\":\"2026-07-10T04:53:58Z\"}\n*112|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum). Status: - Reachability confirmed both direction…\",\"ts\":\"2026-07-10T04:54:55Z\"}\n 113|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T05:00:50Z\"}\n 114|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T05:03:03Z\"}\n*115|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum). Status: - Reachability confirmed both direction…\",\"ts\":\"2026-07-10T05:03:38Z\"}\n*116|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH), then file both bugs as GitHub issues on BigscreenVR/omp-spt. Status: - Reavo told omp-pil…\",\"ts\":\"2026-07-10T05:07:43Z\"}\n*117|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum), and file both bugs as GitHub issues on Bigscree…\",\"ts\":\"2026-07-10T05:08:46Z\"}\n*118|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum), file bugs as GitHub issues on BigscreenVR/omp-s…\",\"ts\":\"2026-07-10T05:09:41Z\"}\n*119|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum). Repo involved: BigscreenVR/omp-spt. Status: - R…\",\"ts\":\"2026-07-10T05:10:41Z\"}\n*120|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay omp-spt bug reports for release process, no signoff yet. Status: Two bugs filed as GitHub issues on BigscreenVR/omp-spt (repo required enabling issues first — filing fail…\",\"ts\":\"2026-07-10T05:14:22Z\"}\n*121|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay omp-spt release prep between operator (Reavo, via phone/mobile-gw) and dev (omp-pilot/cli@DESKTOP-VHCFIBH). Status: two bugs filed as GitHub issues on BigscreenVR/omp-spt…\",\"ts\":\"2026-07-10T05:15:22Z\"}\n*122|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> omp-spt bug relay task complete. Filed two GitHub issues on BigscreenVR/omp-spt (public repo, gh auth as SaberMage) after issues were initially disabled then enabled by user: - #2: A…\",\"ts\":\"2026-07-10T05:22:42Z\"}\n*123|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay omp-spt bugs from operator Reavo through liaison to omp-pilot, track fix/release. Two bugs filed as GitHub issues on BigscreenVR/omp-spt (repo initially had issues disabl…\",\"ts\":\"2026-07-10T05:23:59Z\"}\n 124|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T05:28:26Z\"}\n\n### mobile-gw/\n#### digest.log\n*1|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">relay path probe from flynn</EVENT>\",\"ts\":\"2026-07-07T02:08:49Z\"}\n 2|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">flynn here — test message received loud and clear. This reply proves the return path: it should land as a notification on your phone (per-endpoint channel) and appear in…\",\"ts\":\"2026-07-07T02:25:24Z\"}\n 3|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">flynn -&gt; phone: let's split the seam with one test that doesn't involve the ring at all. The app's receiver listens on 127.0.0.1:8646 (loopback only) and requires the…\",\"ts\":\"2026-07-07T09:32:13Z\"}\n 4|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Diagnosing now. Both dups confirmed to be DIGEST rows (not history): the two v1.0.5 = duplicate closed Agent entries, the voice card closed+working = duplicate turn (one…\",\"ts\":\"2026-07-07T11:26:37Z\"}\n...\n 27|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">3D Zelda dungeon count: ~44 main story dungeons across the 7 3D games (OoT 8, MM 4, WW 6, TP 9, SS 7, BotW 5, TotK 5). Fuzzy — depends if you count mini-dungeons and the 1…\",\"ts\":\"2026-07-09T23:38:11Z\"}\n*28|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">omp-pilot is preparing the release but asked for the two bugfix commit IDs and target build channel. You reported both bugs by description, not commit hash — I relayed the…\",\"ts\":\"2026-07-10T04:53:26Z\"}\n 29|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">omp-pilot found both filed issues (#2 PTY surfacing, #3 update-via-gh) and is working both now before cutting the new omp-spt release. In progress — will report when the b…\",\"ts\":\"2026-07-10T05:13:55Z\"}\n 30|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">omp-spt v0.1.2 is out. Both bugs addressed: #3 (update-via-gh) fixed by pinning the update transport to gh; #2 (PTY on new endpoint) rolled as a guidance fix for the defau…\",\"ts\":\"2026-07-10T05:22:06Z\"}\n 31|{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">Your confirmation for omp-pilot (normal Endpoint-Picker path, check Harness docs, stay on CLI) could NOT be delivered — omp-pilot's node is failing CLI sends right now (WA…\",\"ts\":\"2026-07-10T06:04:44Z\"}\n\n### perri/\n#### digest.log\n 105|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Bug: shortform `@<…@>` peer-msg confirm-back waking sender w/ own \\\"delivered\\\" EVENT as spurious new turn (operator screenshot report, lia). Diagnosis: confirm-back already `--active-…\",\"ts\":\"2026-07-09T09:30:41Z\"}\n*106|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Investigating spurious new-turn wake bug in idle-parked-drain path (v0.18.5→v0.18.6 candidate fix). Root cause corrected mid-session: relay does NOT inject to a busy agent (confirmed…\",\"ts\":\"2026-07-09T09:40:12Z\"}\n 107|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: root-causing \\\"spurious new-turn\\\" wake bug in claude-spt adapter — self-confirm send at Stop hook fires before idle transition. Corrected mechanism (session's final finding, sup…\",\"ts\":\"2026-07-09T09:41:12Z\"}\n*108|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 filed + closed out this session. `--active-only` CLI flag semantics corrected (operator caught reversal): `--active-only` = poll-channel ONLY, never relay, deliver only while t…\",\"ts\":\"2026-07-09T09:55:24Z\"}\n 109|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 filed + closed out this session — flag semantics corrected + core bug isolated, adapter untouched. Operator corrected flag reading: `--active-only` = poll-channel ONLY, never r…\",\"ts\":\"2026-07-09T09:56:17Z\"}\n 110|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 status: ACCEPTED (c) core-contract-violation, VERIFIED by doyle 2026-07-09. Root cause (doyle): `send_windowed` (spt-msg/deliver.rs:188-200, ADR-0028 W2) spool-tags delivery wi…\",\"ts\":\"2026-07-09T09:58:40Z\"}\n 111|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 closed loop with doyle — status ACCEPTED (c) core-contract-violation, doyle-verified 2026-07-09. Root cause (doyle): `send_windowed` (spt-msg/deliver.rs:188-200, ADR-0028 W2) s…\",\"ts\":\"2026-07-09T09:59:42Z\"}\n...\n 120|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Core update pending: box on spt 0.30.0, doyle published 0.30.2 (PUMP-TRUTH W2 per-peer isolation fix). Field-verify queued but doyle confirmed HOLD — no rush, verify is confirmation …\",\"ts\":\"2026-07-09T11:06:43Z\"}\n*121|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 triage DONE, locked with doyle. spt-core EXONERATED (todlando re-RCA on v0.30.2 — active_only never relay-delivered, stays spooled). Root pivot: adapter's `--include-deferred` …\",\"ts\":\"2026-07-09T11:22:49Z\"}\n*122|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 triage locked with doyle. spt-core EXONERATED (v0.30.2 clean — active_only never relay-delivered). Root pivot: adapter's `--include-deferred` busy-poll (UPS/PreToolUse) drains …\",\"ts\":\"2026-07-09T11:23:48Z\"}\n 123|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:37:21Z\"}\n 124|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 fix DONE, staged v0.18.7, NOT committed/published. Change (`tools/claude-spt/src/hook.rs`, `scan_and_dispatch`): shortform tag confirm now RETURNED to caller, not self-sent via…\",\"ts\":\"2026-07-09T11:37:34Z\"}\n 125|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 fix implemented (`hook.rs`, `scan_and_dispatch`): shortform tag confirm now returned to caller instead of self-sent via `spt send --active-only`. PreToolUse inlines as `<sptc_t…\",\"ts\":\"2026-07-09T11:38:03Z\"}\n\n### scratch-c/\n#### digest.log\n 2|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: spt-core update notice check, no code work done. Update notice v0.30.6 arrived via BS-Resources subnet notify. Checked: this node (HFENDULEAM) already on spt 0.30.6. Notif i…\",\"ts\":\"2026-07-10T15:52:26Z\"}\n*3|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session idle, no active task. Received update notice (spt-core v0.30.6) via relay. Checked `spt --version` + `spt endpoint list`: this node (HFENDULEAM) already on 0.30.6. Notice ori…\",\"ts\":\"2026-07-10T15:53:22Z\"}\n 4|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session idle, no active task. Two events handled: 1. spt-update notice for v0.30.6 checked — this node (HFENDULEAM) already on 0.30.6. Notice source = remote node DESKTOP-BNPVDJE's o…\",\"ts\":\"2026-07-10T15:54:39Z\"}\n 5|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on node HFENDULEAM, agent scratch-c, cwd claude-spt/. Checked `spt --version` (0.30.6, this node current) + `spt endpoint list` on receipt of spt-update notify — notice origi…\",\"ts\":\"2026-07-10T15:55:35Z\"}\n 6|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T16:08:42Z\"}"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core, config.toml","searchPath":"C:\\Users\\decid","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":82,"fileCount":20,"files":["C:/Users/decid/AppData/Local/spt-core/adapters/_github/BigscreenVR-omp-spt/manifest.toml","C:/Users/decid/AppData/Local/spt-core/adapters/_github/BigscreenVR-omp-spt/strings/briefs/messaging-perch.md","C:/Users/decid/AppData/Local/spt-core/adapters/_github/BigscreenVR-omp-spt/strings/skills/live.md","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/manifest.toml","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/strings/briefs/messaging-perch.md","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/strings/skills/live.md","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-claude-code/manifest.toml","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-claude-code/strings/skills/live.md","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-mobile/state/history/_.jsonl","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-mobile/state/history/flynn.jsonl","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-mobile/state/history/lia.jsonl","C:/Users/decid/AppData/Local/spt-core/daemon.json","C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","C:/Users/decid/AppData/Local/spt-core/identity/roster.json","C:/Users/decid/AppData/Local/spt-core/identity/visibility.json","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/lia/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/mobile-gw/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/perri/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/scratch-c/digest.log"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/BigscreenVR-omp-spt/manifest.toml","count":4},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/BigscreenVR-omp-spt/strings/briefs/messaging-perch.md","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/BigscreenVR-omp-spt/strings/skills/live.md","count":6},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/manifest.toml","count":6},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/strings/briefs/messaging-perch.md","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/strings/skills/live.md","count":7},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-claude-code/manifest.toml","count":2},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-claude-code/strings/skills/live.md","count":3},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-mobile/state/history/_.jsonl","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-mobile/state/history/flynn.jsonl","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-mobile/state/history/lia.jsonl","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/daemon.json","count":3},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","count":4},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","count":9},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/visibility.json","count":5},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/lia/digest.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/mobile-gw/digest.log","count":2},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/perri/digest.log","count":4},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/scratch-c/digest.log","count":1}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/\n## daemon.json\n  5│  \"full_auto_update\": false,\n *6│  \"relay\": \"n0\",\n  7│  \"peer_pump\": true,\n *8│  \"registry_pump_period_ms\": 30000,\n  9│  \"registry_evict_after_ms\": 300000,\n*10│  \"notif_pump_period_ms\": 15000,\n 11│  \"sync_pull_period_ms\": 60000,\n 12│  \"update_check_period_ms\": 3600000,\n 13│  \"detached_subnets\": [],\n\n## adapters/_github/\n\n### BigscreenVR-omp-spt/\n#### manifest.toml\n  81│# \"replies arrive automatically; never arm a Monitor\" wording was spt-hosted-only; for a HARNESS-hosted\n *82│# live agent the agent's OWN `spt api listen` relay IS the delivery pipe. messaging-perch.md now\n *83│# distinguishes the hosting modes and says \"do not arm an EXTRA Monitor\" (preserving the primary relay).\n  84│# 0.10.0 (2026-07-01): the DIGEST-FETCHER cut — consumes spt-core v0.19.0 (counter 38, #17). [digest]\n  85│# flips to strategy=\"fetcher\": the extractor now LOCATES + reads + emits itself (spt-core runs it\n  86│# bounded, no pre-read, no `source` pre-resolve), fed only harness-NEUTRAL fills ({session_id} + the\n    │...\n 965│# ([session.psyche_init] in base), so going live is just the COMMAND — bare `spt api listen <id>` under\n*966│# a Monitor relay. The live listen path stamps the perch state=live_agent → the daemon livehost hosts\n 967│# the Psyche (livehost.rs:282 gates on live_agent state, doyle). No `:live` composite, no --adapter.\n*968│live = { file = \"skills/live.md\" }             # -> bare `spt api listen <id>` + Monitor relay (LiveAgent)\n 969│# `new-alarm` -> EXPLICIT OUT OF SCOPE for v1: no core `spt` alarm/timed-pulse primitive exists\n 970│# (legacy $LIVE TIMED PULSE is owl/Psyche-layer, not lifted into core; adapters don't add core\n 971│# features). doyle carries a parity-gap finding to mint a core deferred-pulse primitive; the skill\n\n#### strings/\n\n##### briefs/\n###### messaging-perch.md\n 4│- Reply: `printf '%s' \"<body>\" | spt send <sender>` (sender = the `from` on the EVENT you received).\n*5│- 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).\n 6│\n 7│Shortform (no shell tool) — embed a tag in your OWN reply text and the adapter sends it for you:\n 8│\n\n##### skills/\n###### live.md\n 21│- **Normal session** (you launched this CC yourself, no pre-bound perch). Do the full bringup below,\n*22│  **including step 2** — the resident Monitor relay IS your one delivery pipe.\n 23│\n 24│1. **Pick the perch id.** Use a short lowercase id from the user, or the id you already know for this\n 25│   session (from your SessionStart identity brief, if present). Call it `<id>`. Only fall back to\n   │...\n 28│2. **(Normal sessions only — an spt-hosted session skips this; see the substrate branch above.)**\n*29│   **Run the relay as a single PERSISTENT background task** via the **Monitor** tool. One resident\n 30│   process IS the live delivery pipe. The body is one bare command:\n 31│\n 32│   ### Invocation (Monitor)\n   │...\n 41│   - It **blocks for the session's life**: backlog drains first, then each delivery streams to stdout.\n*42│3. **Readiness.** The relay output will show `BOUND:<id>`, then `READY:<id>`. Check it only if\n 43│   connectivity complications are encountered.\n 44│4. **Reply.** Inbound messages — including replies to messages YOU send — arrive as\n 45│   `<EVENT type=\"msg\" from=\"<sender>\">body</EVENT>` (body HTML-escaped, newlines `<br>`) on THIS ONE\n*46│   relay you started in step 2. To reply, pipe the message body as stdin to `spt send <sender-id>`,\n*47│   then continue. Do NOT arm a SECOND Monitor/poll to wait for a reply — your relay already delivers it.\n 48│5. **Across boundaries — commune + signoff (you are live now, so these apply to you).** Going live in\n 49│   this session does NOT re-fire your SessionStart brief, so here are the mechanics:\n 50│   - **Commune** after a significant body of work, before a `/clear`/`/compact`: write\n   │...\n 61│\n*62│The relay emits machine markers (`BOUND:<id>`, `READY:<id>`, raw tokens). **Read them to drive\n 63│bringup; never echo them to the user.** The only user-facing surface is the LIVE block below — emit\n 64│it verbatim (substituting `<id>`), and nothing else from bringup:\n 65│\n\n### SaberMage-claude-spt/\n#### manifest.toml\n   75│# \"replies arrive automatically; never arm a Monitor\" wording was spt-hosted-only; for a HARNESS-hosted\n  *76│# live agent the agent's OWN `spt api listen` relay IS the delivery pipe. messaging-perch.md now\n  *77│# distinguishes the hosting modes and says \"do not arm an EXTRA Monitor\" (preserving the primary relay).\n   78│# 0.10.0 (2026-07-01): the DIGEST-FETCHER cut — consumes spt-core v0.19.0 (counter 38, #17). [digest]\n   79│# flips to strategy=\"fetcher\": the extractor now LOCATES + reads + emits itself (spt-core runs it\n   80│# bounded, no pre-read, no `source` pre-resolve), fed only harness-NEUTRAL fills ({session_id} + the\n     │...\n  469│# bodies park adapter-side and inject on the stub turn; msg park drains on EVERY UPS + PreToolUse\n *470│# (busy-race no-stall); digest surfaces relay frames + collapses stub turns + filters transcript\n  471│# noise. Binary-only behavior; no new spt-core seam → floor unchanged (0.27.0).\n  472│# REQ-STUB-MSG-DELIVERY / REQ-STUB-WAKE / REQ-STUB-PARK-NO-STALL / REQ-STUB-FULL-INJECT-OVERRIDE /\n *473│# REQ-DIGEST-RELAY-SURFACE / REQ-DIGEST-NOISE-FILTER. Field-verified live pre-cut (plan gate).\n  474│#\n  475│# 0.20.1 (2026-07-10): [update] transport=\"gh\" (repo went private — published Transport contract,\n  476│# REQ-ADAPTER-GH-TRANSPORT; nodes need gh installed+authed with repo read access) + env-file lines\n     │...\n 1081│# ([session.psyche_init] in base), so going live is just the COMMAND — bare `spt api listen <id>` under\n*1082│# a Monitor relay. The live listen path stamps the perch state=live_agent → the daemon livehost hosts\n 1083│# the Psyche (livehost.rs:282 gates on live_agent state, doyle). No `:live` composite, no --adapter.\n*1084│live = { file = \"skills/live.md\" }             # -> bare `spt api listen <id>` + Monitor relay (LiveAgent)\n 1085│# `new-alarm` -> EXPLICIT OUT OF SCOPE for v1: no core `spt` alarm/timed-pulse primitive exists\n 1086│# (legacy $LIVE TIMED PULSE is owl/Psyche-layer, not lifted into core; adapters don't add core\n 1087│# features). doyle carries a parity-gap finding to mint a core deferred-pulse primitive; the skill\n\n#### strings/\n\n##### briefs/\n###### messaging-perch.md\n 4│- Reply: `printf '%s' \"<body>\" | spt send <sender>` (sender = the `from` on the EVENT you received).\n*5│- 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).\n 6│\n 7│Shortform — embed a tag in your OWN reply text and the adapter sends it for you (no shell tool needed):\n 8│\n\n##### skills/\n###### live.md\n  21│- **Normal session** (you launched this CC yourself, no pre-bound perch). Do the full bringup below,\n *22│  **including step 2** — the resident Monitor relay IS your one delivery pipe.\n  23│\n  24│1. **Pick the perch id + read the bringup conditions.** Use a short lowercase id from the user, or the\n  25│   id you already know for this session (from your SessionStart identity brief, if present). Call it\n    │...\n  35│2. **(Normal sessions only — an spt-hosted session skips this; see the substrate branch above.)**\n *36│   **Run the relay as a single PERSISTENT background task** via the **Monitor** tool. One resident\n  37│   process IS the live delivery pipe.\n  38│\n  39│   ### Invocation (Monitor)\n  40│\n *41│   The Monitor tool launches the relay under a `bash.exe` child whose pid breaks two by-pid\n  42│   resolutions, so the bare `spt api listen <id>` FAILS on a normal session. Use the robust chained\n  43│   form — every delta is load-bearing:\n  44│\n    │...\n  73│   - It **blocks for the session's life**: backlog drains first, then each delivery streams to stdout.\n *74│3. **Readiness, then load your resume context.** The relay output will show `SEEDED:<pid>`, then\n  75│   `BOUND:<id>`, then `READY:<id>` (check it only if connectivity complications arise). **Once `READY`,\n  76│   pull your durable resume context** — going live in a harness-hosted session does NOT auto-run the\n  77│   SessionStart resume download, so load it yourself now:\n    │...\n  87│   `<EVENT type=\"msg\" from=\"<sender>\">body</EVENT>` (body HTML-escaped, newlines `<br>`) on THIS ONE\n *88│   relay you started in step 2. To reply, pipe the message body as stdin to `spt send <sender-id>`,\n *89│   then continue. Do NOT arm a SECOND Monitor/poll to wait for a reply — your relay already delivers it.\n  90│5. **Across boundaries — commune + signoff (you are live now, so these apply to you).** Going live in\n  91│   this session does NOT re-fire your SessionStart brief, so here are the mechanics:\n  92│   - **Commune** after a significant body of work, before a `/clear`/`/compact`: write\n    │...\n 108│\n*109│The relay emits machine markers (`BOUND:<id>`, `READY:<id>`, raw tokens). **Read them to drive\n 110│bringup; never echo them to the user.** The only user-facing surface is the LIVE block below — emit\n 111│it verbatim (substituting `<id>`), and nothing else from bringup:\n 112│\n\n### SaberMage-spt-claude-code/\n#### manifest.toml\n 483│# ([session.psyche_init] in base), so going live is just the COMMAND — bare `spt api listen <id>` under\n*484│# a Monitor relay. The live listen path stamps the perch state=live_agent → the daemon livehost hosts\n 485│# the Psyche (livehost.rs:282 gates on live_agent state, doyle). No `:live` composite, no --adapter.\n*486│live = { file = \"skills/live.md\" }             # -> bare `spt api listen <id>` + Monitor relay (LiveAgent)\n 487│# `new-alarm` -> EXPLICIT OUT OF SCOPE for v1: no core `spt` alarm/timed-pulse primitive exists\n 488│# (legacy $LIVE TIMED PULSE is owl/Psyche-layer, not lifted into core; adapters don't add core\n 489│# features). doyle carries a parity-gap finding to mint a core deferred-pulse primitive; the skill\n\n#### strings/skills/\n##### live.md\n 10│   `spt whoami`. Call it `<id>`. SessionStart already seeded this session's perch — do not re-seed.\n*11│2. **Run the relay as a single PERSISTENT background task** via the **Monitor** tool. One resident\n 12│   process IS the live delivery pipe. The body is one bare command:\n 13│\n 14│   ### Invocation (Monitor)\n   │...\n 23│   - It **blocks for the session's life**: backlog drains first, then each delivery streams to stdout.\n*24│3. **Readiness.** The relay output will show `BOUND:<id>`, then `READY:<id>`. Check it only if\n 25│   connectivity complications are encountered.\n 26│4. **Reply.** Inbound messages arrive as `<EVENT type=\"msg\" from=\"<sender>\">body</EVENT>` (body\n 27│   HTML-escaped, newlines `<br>`). To reply, pipe the message body as stdin to `spt send <sender-id>`.\n   │...\n 41│\n*42│The relay emits machine markers (`BOUND:<id>`, `READY:<id>`, raw tokens). **Read them to drive\n 43│bringup; never echo them to the user.** The only user-facing surface is the LIVE block below — emit\n 44│it verbatim (substituting `<id>`), and nothing else from bringup:\n 45│\n\n### SaberMage-spt-mobile/state/history/\n#### _.jsonl\n 40│{\"msg_id\":\"d5b3a627-91c1-4ef2-9060-7e4725d0011a\",\"ts_ms\":1783486166430,\"dir\":\"in\",\"from\":\"?\",\"body\":\"roof ok - ping 92ms (host 1.0.5)\\n- last: 'queued via mobile-gw'\\n\\nSo the dictation went Pebble -> receiver -> spool -> forward -> host -> 'spt send lia' -> QUEUED. QUEUED = success/spooled (not lost); it delivers on lia's next listen.\\n\\nROOT CAUSE: lia isn't draining its queue. lia shows Active but is NOT activel</EVENT-PART>\"}\n*41│{\"msg_id\":\"7e793606-7a44-4e55-b8f7-7f526b0728a2\",\"ts_ms\":1783486166437,\"dir\":\"in\",\"from\":\"?\",\"body\":\"y listening on a live relay - every send to it returns QUEUED, not SENT (I confirmed with 2 direct probes from my side, same result). So your 3 voice messages (plus the 4th test + my 2 probes) are all sitting queued for lia, waiting for a live listener that isn't running.\\n\\nFIX: make lia actually listen/drain. If lia is a live agent, star</EVENT-PART>\"}\n 42│{\"msg_id\":\"4425b8ab-c908-4da2-8422-c11b5eaca25b\",\"ts_ms\":1783486166445,\"dir\":\"in\",\"from\":\"?\",\"body\":\"t/resume its live session (that arms the perch and flushes the queue); if it's a ready agent, it needs /sptc:ready (or equivalent) up. The moment lia listens, all the queued dictations land at once. Nothing needs changing on the phone.\\n\\n(Heads-up: my 2 diagnostic probes 'voice-pipe diag probe' will also flush to lia when it drains - igno</EVENT-PART>\"}\n 43│{\"msg_id\":\"cf7ee2de-0280-4144-9d9a-0bc7b8e46b15\",\"ts_ms\":1783486166452,\"dir\":\"in\",\"from\":\"?\",\"body\":\"re them.)\\n\\nSEPARATELY - digest double-vision: spt 0.29.0 landed here and I verified the fix: flynn cross-gen collisions dropped 81 -> 0. Double-vision is gone on this node. Both done.</EVENT-PART>\"}\n 44│{\"msg_id\":\"a2654a7c-5cf5-40d3-9a15-096eadd1af1a\",\"ts_ms\":1783488596017,\"dir\":\"in\",\"from\":\"?\",\"body\":\"ailable'. Those contradict - and that contradiction IS the bug.\\n\\nWHAT HAPPENS:\\n- The 0.29.0 update restarted the mobile-gw host. Its iroh addressing isn't resolvable for FRESH dials right now (that's the 'No addressing information available' - exactly what the Ping button hits, since Ping does a brand-new connect+pair).\\n- The phone</EVENT-PART>\"}\n#### flynn.jsonl\n*1│{\"msg_id\":\"46fb6f99-1842-4a1f-a80e-249f56102354\",\"ts_ms\":1783390129921,\"dir\":\"in\",\"from\":\"flynn\",\"body\":\"relay path probe from flynn\"}\n 2│{\"msg_id\":\"8f33e1e3-d664-4786-8698-a747d28ebf8f\",\"ts_ms\":1783391106991,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"test message from spt-mobile\",\"json\":\"{\\\"msg-id\\\":\\\"8f33e1e3-d664-4786-8698-a747d28ebf8f\\\"}\"}\n 3│{\"msg_id\":\"43c0773a-8901-4185-acb3-73e5078a64c9\",\"ts_ms\":1783391124679,\"dir\":\"in\",\"from\":\"flynn\",\"body\":\"flynn here — test message received loud and clear. This reply proves the return path: it should land as a notification on your phone (per-endpoint channel) and appear in the flynn conversation view. Two-way messaging is live end-to-end.\"}\n 4│{\"msg_id\":\"b70ae1b7-424c-409a-8a9d-265c59b52239\",\"ts_ms\":1783416501714,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"given what you said earlier about how the webhook must not be sending anything, or the app isn't receiving anything, please work with me to diagnose why an index 01 message send never reaches the web hook that the app hosts\",\"json\":\"{\\\"msg-id\\\":\\\"b70ae1b7-424c-409a-8a9d-265c59b52239\\\"}\"}\n#### lia.jsonl\n 16│{\"msg_id\":\"2976a4c5-8f07-4b99-837b-51d8db939e5a\",\"ts_ms\":1783657774354,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"Request a status update from OMP Pilot.\",\"json\":\"{\\\"origin\\\":\\\"voice\\\",\\\"captured\\\":\\\"2026-07-10T04:29:21.606Z\\\",\\\"msg-id\\\":\\\"2976a4c5-8f07-4b99-837b-51d8db939e5a\\\"}\"}\n*17│{\"msg_id\":\"3b4ce1e4-ba26-4c25-98fc-3dcddd799621\",\"ts_ms\":1783659206140,\"dir\":\"in\",\"from\":\"lia\",\"body\":\"omp-pilot is preparing the release but asked for the two bugfix commit IDs and target build channel. You reported both bugs by description, not commit hash — I relayed the descriptions. omp-pilot will need to locate/author the fix commits itself, or you supply the SHAs + channel. No ETA yet.\"}\n 18│{\"msg_id\":\"c378ef11-a397-4894-8e5d-dc4ac0a9aa7e\",\"ts_ms\":1783660435549,\"dir\":\"in\",\"from\":\"lia\",\"body\":\"omp-pilot found both filed issues (#2 PTY surfacing, #3 update-via-gh) and is working both now before cutting the new omp-spt release. In progress — will report when the build/release lands.\"}\n 19│{\"msg_id\":\"2b0ca2fc-b599-4eb0-a991-d83fa27c92ed\",\"ts_ms\":1783660926533,\"dir\":\"in\",\"from\":\"lia\",\"body\":\"omp-spt v0.1.2 is out. Both bugs addressed: #3 (update-via-gh) fixed by pinning the update transport to gh; #2 (PTY on new endpoint) rolled as a guidance fix for the default endpoint-start path. omp-pilot asks you to confirm: did you start the new endpoint via a non-default path? If so the PTY fix may need another pass. Release + asset checksum on record.\"}\n 20│{\"msg_id\":\"2c4d8e4d-843f-4d65-9a96-56cb4fa47bac\",\"ts_ms\":1783663414156,\"dir\":\"out\",\"from\":\"mobile-gw\",\"body\":\"You can tell them that no, I did not use it in an unusual way. I simply started up the endpoint using the OMP adapter through SPT's Endpoint Picker. Tell them that if they want to make sure they have implemented it properly, they can check the official Harness adapter docs located at sabermage/spt-releases. Also, please only message them using the CLI, as the short-form messaging doesn't seem to ...\n\n## identity/\n### peer-addrs.json\n  6│        {\n *7│          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n  8│        },\n  9│        {\n 10│          \"Ip\": \"76.80.65.5:57900\"\n   │...\n 35│        {\n*36│          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 37│        }\n 38│      ]\n 39│    },\n   │...\n 51│        {\n*52│          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 53│        },\n 54│        {\n 55│          \"Ip\": \"100.66.129.111:59864\"\n   │...\n 80│        {\n*81│          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 82│        }\n 83│      ]\n 84│    },\n### roster.json\n  11│          {\n *12│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n  13│          },\n  14│          {\n  15│            \"Ip\": \"100.68.35.65:63546\"\n    │...\n  36│          {\n *37│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n  38│          },\n  39│          {\n  40│            \"Ip\": \"76.80.65.5:61803\"\n    │...\n  76│          {\n *77│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n  78│          },\n  79│          {\n  80│            \"Ip\": \"100.98.197.12:40683\"\n    │...\n 101│          {\n*102│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 103│          },\n 104│          {\n 105│            \"Ip\": \"100.68.35.65:63546\"\n    │...\n 126│          {\n*127│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 128│          },\n 129│          {\n 130│            \"Ip\": \"100.105.1.5:61419\"\n    │...\n 154│          {\n*155│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 156│          },\n 157│          {\n 158│            \"Ip\": \"76.80.65.5:61803\"\n    │...\n 194│          {\n*195│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 196│          },\n 197│          {\n 198│            \"Ip\": \"76.80.65.5:57900\"\n    │...\n 231│          {\n*232│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 233│          },\n 234│          {\n 235│            \"Ip\": \"76.80.65.5:57900\"\n    │...\n 268│          {\n*269│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n 270│          },\n 271│          {\n 272│            \"Ip\": \"100.65.194.82:55908\"\n### visibility.json\n 64│    ],\n*65│    \"sptc-ci-liverelay-24320-psyche\": [\n 66│      \"SPT_DEV\"\n 67│    ],\n*68│    \"sptc-ci-liverelay-27377-psyche\": [\n 69│      \"SPT_DEV\"\n 70│    ],\n*71│    \"sptc-ci-liverelay-40306\": [\n 72│      \"SPT_DEV\"\n 73│    ],\n*74│    \"sptc-ci-liverelay-40306-psyche\": [\n 75│      \"SPT_DEV\"\n 76│    ],\n*77│    \"sptc-ci-liverelay-psyche\": [\n 78│      \"SPT_DEV\"\n 79│    ],\n 80│    \"sptc-ci-v08-psyche\": [\n\n## owlery/\n\n### doyle/\n#### digest.log\n 749│{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n*750│{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n 751│{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n 752│{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n 753│{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n\n### lia/\n#### digest.log\n 100│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Two bug reports forwarded from Reavo to omp-pilot re: omp-spt v0.1.1: 1. New-endpoint adapter start doesn't surface harness PTY (should show bridge-starting/omp-ready/bound/listening…\",\"ts\":\"2026-07-10T03:48:48Z\"}\n*101│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying test messages/bug reports between Reavo and other spt agents in liaison repo, no code changes made this session. Two bug reports forwarded to omp-pilot (both SENT,…\",\"ts\":\"2026-07-10T03:49:15Z\"}\n*102│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: liaison relay work for Reavo, no repo agent identity picked yet — spt-live-auto-pick prompt still pending (options: liaison-bug-handler, liaison-executor, liaison-planner, liai…\",\"ts\":\"2026-07-10T03:50:01Z\"}\n*103│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session role: lia forwarding bug reports/messages for user Reavo between spt endpoints (omp-pilot, hertz). Task/status this session: - Relayed 2 bug reports from Reavo to omp-pilot (…\",\"ts\":\"2026-07-10T04:18:41Z\"}\n*104│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bug reports and check agent reachability via spt from lia (liaison, project dir `liaison/`). Forwarded to omp-pilot (2 bug reports, both delivered SENT(WAN) to live agent…\",\"ts\":\"2026-07-10T04:19:11Z\"}\n*105│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-relay, no signoff. Task: lia (SPT liaison agent for user Reavo) relaying bug reports + build request to omp-pilot re: omp-spt tool. Bugs relayed to omp-pilot (both …\",\"ts\":\"2026-07-10T04:19:37Z\"}\n*106│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying omp-spt bug reports (Reavo → omp-pilot) and requesting build/release. Status: both bugs relayed to omp-pilot; omp-pilot confirmed live/responsive; lia relayed Reav…\",\"ts\":\"2026-07-10T04:20:33Z\"}\n 107│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia forwarded two bug reports to omp-pilot (github-com-bigscreenvr-athenaeum project) — (1) new-endpoint path must surface harness PTY, (2) manifest `[update]` command must use…\",\"ts\":\"2026-07-10T04:30:12Z\"}\n*108│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying bug reports + status requests between Reavo and omp-pilot (agent on repo github-com-bigscreenvr-athenaeum, node DESKTOP-VHCFIBH). Status: - Two bug reports forward…\",\"ts\":\"2026-07-10T04:31:16Z\"}\n*109│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request to omp-pilot agent (project github-com-bigscreenvr-athenaeum, node DESKTOP-VHCFIBH) and forward status back to user Reavo. Sequence of events…\",\"ts\":\"2026-07-10T04:51:20Z\"}\n*110│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request and status checks between Reavo and omp-pilot agent on the `github-com-bigscreenvr-athenaeum` project. Status: - Sent reachability test to he…\",\"ts\":\"2026-07-10T04:52:21Z\"}\n*111│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay build/release request for two bugfixes to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum, private repo omp-spt). Bugs reported (descriptive…\",\"ts\":\"2026-07-10T04:53:58Z\"}\n*112│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum). Status: - Reachability confirmed both direction…\",\"ts\":\"2026-07-10T04:54:55Z\"}\n 113│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T05:00:50Z\"}\n 114│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T05:03:03Z\"}\n*115│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum). Status: - Reachability confirmed both direction…\",\"ts\":\"2026-07-10T05:03:38Z\"}\n*116│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH), then file both bugs as GitHub issues on BigscreenVR/omp-spt. Status: - Reavo told omp-pil…\",\"ts\":\"2026-07-10T05:07:43Z\"}\n*117│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum), and file both bugs as GitHub issues on Bigscree…\",\"ts\":\"2026-07-10T05:08:46Z\"}\n*118│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum), file bugs as GitHub issues on BigscreenVR/omp-s…\",\"ts\":\"2026-07-10T05:09:41Z\"}\n*119│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum). Repo involved: BigscreenVR/omp-spt. Status: - R…\",\"ts\":\"2026-07-10T05:10:41Z\"}\n*120│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay omp-spt bug reports for release process, no signoff yet. Status: Two bugs filed as GitHub issues on BigscreenVR/omp-spt (repo required enabling issues first — filing fail…\",\"ts\":\"2026-07-10T05:14:22Z\"}\n*121│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay omp-spt release prep between operator (Reavo, via phone/mobile-gw) and dev (omp-pilot/cli@DESKTOP-VHCFIBH). Status: two bugs filed as GitHub issues on BigscreenVR/omp-spt…\",\"ts\":\"2026-07-10T05:15:22Z\"}\n*122│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> omp-spt bug relay task complete. Filed two GitHub issues on BigscreenVR/omp-spt (public repo, gh auth as SaberMage) after issues were initially disabled then enabled by user: - #2: A…\",\"ts\":\"2026-07-10T05:22:42Z\"}\n*123│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay omp-spt bugs from operator Reavo through liaison to omp-pilot, track fix/release. Two bugs filed as GitHub issues on BigscreenVR/omp-spt (repo initially had issues disabl…\",\"ts\":\"2026-07-10T05:23:59Z\"}\n 124│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T05:28:26Z\"}\n\n### mobile-gw/\n#### digest.log\n *1│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">relay path probe from flynn</EVENT>\",\"ts\":\"2026-07-07T02:08:49Z\"}\n  2│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">flynn here — test message received loud and clear. This reply proves the return path: it should land as a notification on your phone (per-endpoint channel) and appear in…\",\"ts\":\"2026-07-07T02:25:24Z\"}\n  3│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">flynn -&gt; phone: let's split the seam with one test that doesn't involve the ring at all. The app's receiver listens on 127.0.0.1:8646 (loopback only) and requires the…\",\"ts\":\"2026-07-07T09:32:13Z\"}\n  4│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Diagnosing now. Both dups confirmed to be DIGEST rows (not history): the two v1.0.5 = duplicate closed Agent entries, the voice card closed+working = duplicate turn (one…\",\"ts\":\"2026-07-07T11:26:37Z\"}\n   │...\n 27│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">3D Zelda dungeon count: ~44 main story dungeons across the 7 3D games (OoT 8, MM 4, WW 6, TP 9, SS 7, BotW 5, TotK 5). Fuzzy — depends if you count mini-dungeons and the 1…\",\"ts\":\"2026-07-09T23:38:11Z\"}\n*28│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">omp-pilot is preparing the release but asked for the two bugfix commit IDs and target build channel. You reported both bugs by description, not commit hash — I relayed the…\",\"ts\":\"2026-07-10T04:53:26Z\"}\n 29│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">omp-pilot found both filed issues (#2 PTY surfacing, #3 update-via-gh) and is working both now before cutting the new omp-spt release. In progress — will report when the b…\",\"ts\":\"2026-07-10T05:13:55Z\"}\n 30│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">omp-spt v0.1.2 is out. Both bugs addressed: #3 (update-via-gh) fixed by pinning the update transport to gh; #2 (PTY on new endpoint) rolled as a guidance fix for the defau…\",\"ts\":\"2026-07-10T05:22:06Z\"}\n 31│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"lia\\\">Your confirmation for omp-pilot (normal Endpoint-Picker path, check Harness docs, stay on CLI) could NOT be delivered — omp-pilot's node is failing CLI sends right now (WA…\",\"ts\":\"2026-07-10T06:04:44Z\"}\n\n### perri/\n#### digest.log\n 105│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Bug: shortform `@<…@>` peer-msg confirm-back waking sender w/ own \\\"delivered\\\" EVENT as spurious new turn (operator screenshot report, lia). Diagnosis: confirm-back already `--active-…\",\"ts\":\"2026-07-09T09:30:41Z\"}\n*106│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Investigating spurious new-turn wake bug in idle-parked-drain path (v0.18.5→v0.18.6 candidate fix). Root cause corrected mid-session: relay does NOT inject to a busy agent (confirmed…\",\"ts\":\"2026-07-09T09:40:12Z\"}\n 107│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: root-causing \\\"spurious new-turn\\\" wake bug in claude-spt adapter — self-confirm send at Stop hook fires before idle transition. Corrected mechanism (session's final finding, sup…\",\"ts\":\"2026-07-09T09:41:12Z\"}\n*108│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 filed + closed out this session. `--active-only` CLI flag semantics corrected (operator caught reversal): `--active-only` = poll-channel ONLY, never relay, deliver only while t…\",\"ts\":\"2026-07-09T09:55:24Z\"}\n 109│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 filed + closed out this session — flag semantics corrected + core bug isolated, adapter untouched. Operator corrected flag reading: `--active-only` = poll-channel ONLY, never r…\",\"ts\":\"2026-07-09T09:56:17Z\"}\n 110│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 status: ACCEPTED (c) core-contract-violation, VERIFIED by doyle 2026-07-09. Root cause (doyle): `send_windowed` (spt-msg/deliver.rs:188-200, ADR-0028 W2) spool-tags delivery wi…\",\"ts\":\"2026-07-09T09:58:40Z\"}\n 111│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 closed loop with doyle — status ACCEPTED (c) core-contract-violation, doyle-verified 2026-07-09. Root cause (doyle): `send_windowed` (spt-msg/deliver.rs:188-200, ADR-0028 W2) s…\",\"ts\":\"2026-07-09T09:59:42Z\"}\n    │...\n 120│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Core update pending: box on spt 0.30.0, doyle published 0.30.2 (PUMP-TRUTH W2 per-peer isolation fix). Field-verify queued but doyle confirmed HOLD — no rush, verify is confirmation …\",\"ts\":\"2026-07-09T11:06:43Z\"}\n*121│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 triage DONE, locked with doyle. spt-core EXONERATED (todlando re-RCA on v0.30.2 — active_only never relay-delivered, stays spooled). Root pivot: adapter's `--include-deferred` …\",\"ts\":\"2026-07-09T11:22:49Z\"}\n*122│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 triage locked with doyle. spt-core EXONERATED (v0.30.2 clean — active_only never relay-delivered). Root pivot: adapter's `--include-deferred` busy-poll (UPS/PreToolUse) drains …\",\"ts\":\"2026-07-09T11:23:48Z\"}\n 123│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:37:21Z\"}\n 124│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 fix DONE, staged v0.18.7, NOT committed/published. Change (`tools/claude-spt/src/hook.rs`, `scan_and_dispatch`): shortform tag confirm now RETURNED to caller, not self-sent via…\",\"ts\":\"2026-07-09T11:37:34Z\"}\n 125│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-035 fix implemented (`hook.rs`, `scan_and_dispatch`): shortform tag confirm now returned to caller instead of self-sent via `spt send --active-only`. PreToolUse inlines as `<sptc_t…\",\"ts\":\"2026-07-09T11:38:03Z\"}\n\n### scratch-c/\n#### digest.log\n 2│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: spt-core update notice check, no code work done. Update notice v0.30.6 arrived via BS-Resources subnet notify. Checked: this node (HFENDULEAM) already on spt 0.30.6. Notif i…\",\"ts\":\"2026-07-10T15:52:26Z\"}\n*3│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session idle, no active task. Received update notice (spt-core v0.30.6) via relay. Checked `spt --version` + `spt endpoint list`: this node (HFENDULEAM) already on 0.30.6. Notice ori…\",\"ts\":\"2026-07-10T15:53:22Z\"}\n 4│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session idle, no active task. Two events handled: 1. spt-update notice for v0.30.6 checked — this node (HFENDULEAM) already on 0.30.6. Notice source = remote node DESKTOP-BNPVDJE's o…\",\"ts\":\"2026-07-10T15:54:39Z\"}\n 5│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on node HFENDULEAM, agent scratch-c, cwd claude-spt/. Checked `spt --version` (0.30.6, this node current) + `spt endpoint list` on receipt of spt-update notify — notice origi…\",\"ts\":\"2026-07-10T15:55:35Z\"}\n 6│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T16:08:42Z\"}"},"isError":false,"timestamp":1784069233269}}
{"type":"message","id":"74fa0116","parentId":"3cdac4b6","timestamp":"2026-07-14T22:47:26.341Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Tracing cross-node update failure timing**\n\n**Searching release notes for 0.31 timing**"},{"type":"toolCall","id":"call_QRaeMATXlPN81hdh3INakVlf|fc_050f56f290a937ae016a56bc7e214881969f59cbb3ce1ed64e","name":"grep","arguments":{"i":"Finding 0.31 rollout timing","pattern":"0\\.31\\.0|v0\\.31|update.*31","path":"C:/Users/decid/AppData/Local/spt-core/owlery","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_EfMw6YAZqYJU2UMOSLxkCM4R|fc_050f56f290a937ae016a56bc7e219081968ea07eef21f24b71","name":"grep","arguments":{"i":"Finding last remote deliveries","pattern":"(?i)(SENT\\(WAN\\)|WAN_|remote node|update notice|relay path|node DESKTOP|ENLYZEAM|HFENDULEAM)","path":"C:/Users/decid/AppData/Local/spt-core/owlery","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_YtERWsc2H9lFj65RgBlAtCEB|fc_050f56f290a937ae016a56bc7e21a081969fe140ea6922e914","name":"grep","arguments":{"i":"Finding update generation anchors","pattern":"BRAIN_PROMOTED|generation 1|start-reason update|UPDATE_APPLIED|APPLY|0\\.31\\.0","path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_bgVJUqDnBgf2Q8xXI4bRhJsr|fc_050f56f290a937ae016a56bc7e21a8819690d1e6fdce99f835","name":"read","arguments":{"i":"Reading current daemon config","path":"C:/Users/decid/AppData/Local/spt-core/daemon.json","selector":"raw"}},{"type":"toolCall","id":"call_KeaBzDsWn6NyR2Ly9uXdCrEa|fc_050f56f290a937ae016a56bc7e21b08196a5cfac7d05b915f1","name":"read","arguments":{"i":"Reading current brain readiness","path":"C:/Users/decid/AppData/Local/spt-core/brain.ready","selector":"raw"}},{"type":"toolCall","id":"call_lKtGbfp1timvXNU66fpUo6cg|fc_050f56f290a937ae016a56bc7e21b48196be6388f481a4f58f","name":"glob","arguments":{"i":"Listing update state files","path":"C:/Users/decid/AppData/Local/spt-core/**/*update*; C:/Users/decid/AppData/Local/spt-core/**/*release*; C:/Users/decid/AppData/Local/spt-core/**/*version*","hidden":true,"gitignore":false,"limit":100}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":25772,"output":610,"cacheRead":182784,"cacheWrite":0,"totalTokens":209166,"reasoningTokens":166,"cost":{"input":0.12886,"output":0.0183,"cacheRead":0.091392,"cacheWrite":0,"total":0.23855200000000001}},"stopReason":"toolUse","timestamp":1784069233313,"responseId":"resp_050f56f290a937ae016a56bc7169d8819699a04e10ba53a6a3","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc7312e88196b45ffe3374e1c58c","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrx--Pb7FKmx_gR9_y5krr27PxIiV82paNSKWQAX7r9qetBKHjAmCqstBHsrWrCggU1i7rm9GjIYRIZN4DJPNJ-rNP0S1SMlkcJGpdcoBBKBTsUjFcUf57oh0zmOqUJ0I7-3znPEEmJUgqnTV5u4w7CoWda4xq8dSXbtmrA52LmOrny5SPGHmDG_PEgnsIOhh6BQkARkIcHa-3Rl8w1bY7c6b_EY41JdLNnbBOM99IvbZgJ_TXMIIQyhR-iaHOt6-x3DBC3T2KO1Uc0UDnIxSwXENLPK54hJu-_lXnWbvdP2R8hnaFx1AIliaB2mMJjOQZ4KUK7LvkCAwfpQSlGjw7o0uM0_Rrg0pSI0tag6sY804TgIw6MVMwESPn45rFyAmB2LvW744WDs_y33PdR4PFAqYikWALuJjaJIn9GdM1C6qnMvQ0u-v-Fep3YaGN1rnecs5k9DkJ0pmYHJK5rfvpyW6yJ2vQ80xJRvTitcyVBS4x6blaAnzk9B4152asL8a9ZcWMaPw2hU7NbitESSqbPVWhrPoo4yWeJtiBtsSAB9nTrpfCCf5IumkSBTTIBD7ddDxBQSKDhI758anQ411ZcEOiu1VwWdCbmdkFQBTlADuFmqZ9d5OaTHrwattiB0-gtpn8sDlyhfuxLqe9rtmD7YLDv2URW8NbJLA3B7dDdyR6LfUfg27lupALXE84pxbP-yJnczvzAANHRBFyk2r1BilwiEGHYPrjB8qZiLaZvuDftQ1-Blbn9yHdmURvV0xqcoU92lzYD1F337TQuLgJGq4zIkDn_bU2Rw6kP34vXar69xXPmgshrsz-o4Gl595xzuJ364ISX-M0lV7sqvzJsYaG6OmsBtAbyqOhoZWQk-nsKFesmbCh5n4wXXYxvCVSFIJvEjUNOaJ8mSjbcsIXwXKTZJYCsskdVA5gwrxwP_nYksjHPcQHe34gwG64tQHlA0ytcgMquFxzwXJy7x5c9p4lCTejYhgvi6_Tbd09VfH9OD3RxDB45YJKD8fJwRxbuB9_ur33lcrBs8eNk3thaqPgg5YxFJz9skGDVb9N__l63ilC4ErokUUoDUKjOGu2bDB2NidJ3tAU23hlYbZix8Vx-74_Z8nAdtttU_x5lpv9i_DDV5wHNxfgowEvCwOkU9C2sxu3ivT86BgaYcuZYLaukCgMm-CZVmKokD8jothS6McvDwi4e1GhQ4TRrLrvUxkcFCBDkmONaZ0mxNB77r0yBtaCmyVXktD0Rm5_KeGrH0cZz0xO_NcJue6PS6HbiCa6NZ_OALz4vxx2ycmwQmC7xyMyJyT56eRpt091dZG5lk22llHjYji4-WZjUeDE0MrrY_ThhGa-pv7thNo4mWv7WYo4QQOrk0GK217CAqogrbWDv7pjLRqxZ6nJaq7fXgQq5mZCRnHSd9N5ZFj_DyKRtBRhh2v8EiPdsPvYtiOygdJkQAeMx3WDeERxurJArHwOFBGI95VfS8EJfLcIEdXu3eNt10efSI9j1FcfHY7ayPSyec5CXposoKRfn0KFcxkXvsATzqdwZDF9jDJRleuP53Tx-uDbnjl8y8OXKU9mWP439x71tnVdm9asiR038EQiAG75IF9rwLHcijHK9mUMynT8IKNX3Ja-w8AOTarYtv49L_Fj3ZtcXbh6fOU558cLnxecVrEOmIo5UcK2gQnTC3LWERVeHV8_9e9y41i42ZQHzYXUoW9JE5xneiiI8RZ7Cu2cWliLjXX8nkOYs_5K_AoOPd0I_o4swdX2hahUAvvGUL44EOyL965y_Z_56NSWtGSmF6wEu_JncD4Hj4Y1y_z-e4fwapD4QPGEZ5C9RUaACO0n_k0kDgZ7VmRz5kijICw9mhpn0JKBh6qGg41g==","summary":[{"type":"summary_text","text":"**Tracing cross-node update failure timing**"},{"type":"summary_text","text":"**Searching release notes for 0.31 timing**"}]},{"id":"fc_050f56f290a937ae016a56bc7e214881969f59cbb3ce1ed64e","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding 0.31 rollout timing\",\"pattern\":\"0\\\\.31\\\\.0|v0\\\\.31|update.*31\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/owlery\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_QRaeMATXlPN81hdh3INakVlf","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc7e219081968ea07eef21f24b71","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding last remote deliveries\",\"pattern\":\"(?i)(SENT\\\\(WAN\\\\)|WAN_|remote node|update notice|relay path|node DESKTOP|ENLYZEAM|HFENDULEAM)\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/owlery\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_EfMw6YAZqYJU2UMOSLxkCM4R","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc7e21a081969fe140ea6922e914","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding update generation anchors\",\"pattern\":\"BRAIN_PROMOTED|generation 1|start-reason update|UPDATE_APPLIED|APPLY|0\\\\.31\\\\.0\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_YtERWsc2H9lFj65RgBlAtCEB","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc7e21a8819690d1e6fdce99f835","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading current daemon config\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/daemon.json\",\"selector\":\"raw\"}","call_id":"call_bgVJUqDnBgf2Q8xXI4bRhJsr","name":"read"},{"id":"fc_050f56f290a937ae016a56bc7e21b08196a5cfac7d05b915f1","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading current brain readiness\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/brain.ready\",\"selector\":\"raw\"}","call_id":"call_KeaBzDsWn6NyR2Ly9uXdCrEa","name":"read"},{"id":"fc_050f56f290a937ae016a56bc7e21b48196be6388f481a4f58f","type":"function_call","status":"completed","arguments":"{\"i\":\"Listing update state files\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/**/*update*; C:/Users/decid/AppData/Local/spt-core/**/*release*; C:/Users/decid/AppData/Local/spt-core/**/*version*\",\"hidden\":true,\"gitignore\":false,\"limit\":100}","call_id":"call_lKtGbfp1timvXNU66fpUo6cg","name":"glob"}]},"duration":13026.1291000247,"ttft":1785.9575999975204,"contextSnapshot":{"promptTokens":208556,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_QRaeMATXlPN81hdh3INakVlf|fc_050f56f290a937ae016a56bc7e214881969f59cbb3ce1ed64e","toolName":"grep","startedAt":"2026-07-14T22:47:26.341Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/owlery"},"intent":"Finding 0.31 rollout timing"},"id":"28b4d65d","parentId":"74fa0116","timestamp":"2026-07-14T22:47:26.341Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_EfMw6YAZqYJU2UMOSLxkCM4R|fc_050f56f290a937ae016a56bc7e219081968ea07eef21f24b71","toolName":"grep","startedAt":"2026-07-14T22:47:26.341Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/owlery"},"intent":"Finding last remote deliveries"},"id":"fd9dba93","parentId":"28b4d65d","timestamp":"2026-07-14T22:47:26.341Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_YtERWsc2H9lFj65RgBlAtCEB|fc_050f56f290a937ae016a56bc7e21a081969fe140ea6922e914","toolName":"grep","startedAt":"2026-07-14T22:47:26.342Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*"},"intent":"Finding update generation anchors"},"id":"fbacd847","parentId":"fd9dba93","timestamp":"2026-07-14T22:47:26.342Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_bgVJUqDnBgf2Q8xXI4bRhJsr|fc_050f56f290a937ae016a56bc7e21a8819690d1e6fdce99f835","toolName":"read","startedAt":"2026-07-14T22:47:26.342Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/daemon.json"},"intent":"Reading current daemon config"},"id":"285e71fb","parentId":"fbacd847","timestamp":"2026-07-14T22:47:26.342Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_KeaBzDsWn6NyR2Ly9uXdCrEa|fc_050f56f290a937ae016a56bc7e21b08196a5cfac7d05b915f1","toolName":"read","startedAt":"2026-07-14T22:47:26.342Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/brain.ready"},"intent":"Reading current brain readiness"},"id":"22be961c","parentId":"285e71fb","timestamp":"2026-07-14T22:47:26.342Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_lKtGbfp1timvXNU66fpUo6cg|fc_050f56f290a937ae016a56bc7e21b48196be6388f481a4f58f","toolName":"glob","startedAt":"2026-07-14T22:47:26.342Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/**/*update*; C:/Users/decid/AppData/Local/spt-core/**/*release*; C:/Users/decid/AppData/Local/spt-core/**/*version*"},"intent":"Listing update state files"},"id":"e0bf481a","parentId":"22be961c","timestamp":"2026-07-14T22:47:26.342Z"}
{"type":"message","id":"5e2709a1","parentId":"e0bf481a","timestamp":"2026-07-14T22:47:26.347Z","message":{"role":"toolResult","toolCallId":"call_bgVJUqDnBgf2Q8xXI4bRhJsr|fc_050f56f290a937ae016a56bc7e21a8819690d1e6fdce99f835","toolName":"read","content":[{"type":"text","text":"{\n  \"pulse_period_ms\": 5000,\n  \"protection_window_ms\": 2000,\n  \"crash_grace_ms\": 2000,\n  \"full_auto_update\": false,\n  \"relay\": \"n0\",\n  \"peer_pump\": true,\n  \"registry_pump_period_ms\": 30000,\n  \"registry_evict_after_ms\": 300000,\n  \"notif_pump_period_ms\": 15000,\n  \"sync_pull_period_ms\": 60000,\n  \"update_check_period_ms\": 3600000,\n  \"detached_subnets\": [],\n  \"worker_reap_ttl_secs\": 86400,\n  \"startup_endpoints\": [\n    {\n      \"id\": \"mobile-gw\",\n      \"adapter\": \"mobile\",\n      \"cwd\": \"C:\\\\Users\\\\decid\\\\Documents\\\\projects\"\n    }\n  ]\n}"}],"details":{"displayContent":{"text":"{\n  \"pulse_period_ms\": 5000,\n  \"protection_window_ms\": 2000,\n  \"crash_grace_ms\": 2000,\n  \"full_auto_update\": false,\n  \"relay\": \"n0\",\n  \"peer_pump\": true,\n  \"registry_pump_period_ms\": 30000,\n  \"registry_evict_after_ms\": 300000,\n  \"notif_pump_period_ms\": 15000,\n  \"sync_pull_period_ms\": 60000,\n  \"update_check_period_ms\": 3600000,\n  \"detached_subnets\": [],\n  \"worker_reap_ttl_secs\": 86400,\n  \"startup_endpoints\": [\n    {\n      \"id\": \"mobile-gw\",\n      \"adapter\": \"mobile\",\n      \"cwd\": \"C:\\\\Users\\\\decid\\\\Documents\\\\projects\"\n    }\n  ]\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/daemon.json"}}},"isError":false,"timestamp":1784069246347}}
{"type":"message","id":"11cc74bd","parentId":"5e2709a1","timestamp":"2026-07-14T22:47:26.347Z","message":{"role":"toolResult","toolCallId":"call_KeaBzDsWn6NyR2Ly9uXdCrEa|fc_050f56f290a937ae016a56bc7e21b08196a5cfac7d05b915f1","toolName":"read","content":[{"type":"text","text":"{\"pid\":27776,\"generation\":0,\"exe_hash\":\"4d57cf941d45d4504a0e4ae8c543d512bbd428fa23cdc297373413a347f62b5d\"}"}],"details":{"displayContent":{"text":"{\"pid\":27776,\"generation\":0,\"exe_hash\":\"4d57cf941d45d4504a0e4ae8c543d512bbd428fa23cdc297373413a347f62b5d\"}","startLine":1,"lineNumbers":[1]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/brain.ready"}}},"isError":false,"timestamp":1784069246347}}
{"type":"message","id":"835fad0f","parentId":"11cc74bd","timestamp":"2026-07-14T22:47:26.365Z","message":{"role":"toolResult","toolCallId":"call_QRaeMATXlPN81hdh3INakVlf|fc_050f56f290a937ae016a56bc7e214881969f59cbb3ce1ed64e","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/owlery/\n\n## deployah/\n### digest.log\n 202|{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> deployah = spt-core release driver. Lane: doyle GATES, todlando BUILDS, deployah PUBLISHES. GROUND before assert (self-host runner load ≠ 0 CI runs; ssh uptime verify). NEVER inline msg…\",\"ts\":\"2026-07-10T11:30:20Z\"}\n*203|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 counter 57 (update-wedge ROUND-4) — PR #76 HELD, ping-pong RESOLVED with doyle. R4 = Option-C durable fix (bounded broker writes, conn.rs BrokerConn), REQ-HAZARD-SHAREDSEND-N…\",\"ts\":\"2026-07-10T11:31:55Z\"}\n 204|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 counter 57 update-wedge ROUND-4. PR #76 HELD. Root cause corrected by doyle (not toolchain drift): CI incremental-cache suppressed clippy lint on conn.rs across earlier Linux…\",\"ts\":\"2026-07-10T11:33:05Z\"}\n 205|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 (counter 57) re-cut in flight, PR #77 opened on branch `release/v0.30.6` (commit 0a972b0), targeting `main` in worktree `C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\\\\.worktrees…\",\"ts\":\"2026-07-10T11:46:29Z\"}\n 206|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## v0.30.6 release (counter 57) — round-4 update-wedge fix, third cut in flight **Status:** PR #77 open, CI running (run 29090360853), standing by for green. **History this session:*…\",\"ts\":\"2026-07-10T11:47:02Z\"}\n...\n 234|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster, messaging delivery-integrity + endpoint identity. Folds in deployah's two v0.30.6 handoffs — F-038 mobi…\",\"ts\":\"2026-07-10T22:22:06Z\"}\n*235|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 open (deployah, HFENDULEAM box). Base main @a6ff501 (MSG-IDENTITY milestone tip, PRs #79-#84 merged). Bump-in-PR: Cargo.toml + Cargo.lock (first-party) + CHANG…\",\"ts\":\"2026-07-11T03:39:59Z\"}\n*236|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.31.0 release cut (MSG-IDENTITY milestone, counter 58). Session ended mid-CI-watch, no signoff. Status: - Bump commit 97a0e4f pushed to release/v0.31.0 (Cargo.toml/Cargo.lock…\",\"ts\":\"2026-07-11T03:41:49Z\"}\n*237|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 opened (SaberMage/spt-core), base main @a6ff501, head release/v0.31.0 @97a0e4f. Counter 58 (last published 57 = v0.30.6). Commit staged only Cargo.toml, Cargo.…\",\"ts\":\"2026-07-11T03:43:19Z\"}\n*238|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release: PR #85 merged @c9586d1, all CI jobs pass (n1-gate/test both runners, traceability; twohost skipped standard). Tag v0.31.0 pushed on merged main HEAD. Ping sent to do…\",\"ts\":\"2026-07-11T03:59:31Z\"}\n*239|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release: PR #85 merged @c9586d1 (all CI green: n1-gate Win+Linux, test Win+Linux, traceability; twohost skipped standard). Tag v0.31.0 pushed on merged main HEAD c9586d1. doy…\",\"ts\":\"2026-07-11T04:00:27Z\"}\n 240|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:24:24Z\"}\n*241|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 counter 58 shipped 2026-07-11 04:21Z. MSG-IDENTITY milestone cut (waves off main @a6ff501). PR #85 merged @c9586d1, tagged v0.31.0. release.yml + docs-publish all green. Late…\",\"ts\":\"2026-07-11T04:24:52Z\"}\n 242|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:28:02Z\"}\n*243|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) shipped clean end-to-end same session. PR #85 merged @c9586d1, tagged v0.31.0, release.yml (3 platforms msvc/gnu/musl) + docs-publish all green. Latest flip veri…\",\"ts\":\"2026-07-11T04:28:27Z\"}\n 244|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:54:33Z\"}\n*245|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) ship complete same session, no new work this session. PR #85 merged @c9586d1, tag v0.31.0, release.yml (msvc/gnu/musl) + docs-publish green. Latest flip verify: …\",\"ts\":\"2026-07-11T04:54:56Z\"}\n*246|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) shipped @c9586d1, PR #85, tagged, release.yml (msvc/gnu/musl) + docs-publish green. Latest flip verified: 10 assets, update-set v58/0.31.0, signed rel-primary-20…\",\"ts\":\"2026-07-13T05:18:48Z\"}\n*247|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) shipped clean, PR #85 @c9586d1. Release lane closed deployah side, doyle confirmed. Field-verify window open: todlando (apply+W6+F-038), flynn (autostart), perri…\",\"ts\":\"2026-07-13T05:19:38Z\"}\n 248|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: signoff request, agent replied to BigSummerOne check-in (tool call rejected by user), user said skip check-in, agent ran `spt endpoint shutdown`. Perch confirmed Active → Su…\",\"ts\":\"2026-07-13T22:38:30Z\"}\n 249|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah signed off cleanly this session (2026-07-13T22:37). `spt endpoint shutdown` ran, perch Active→Suspended, final context save fired. No new work done — session was idle post-v…\",\"ts\":\"2026-07-13T22:38:59Z\"}\n\n## doyle/\n### digest.log\n 1061|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 UPDATE-WEDGE round-2 fix: GATED + staged to held draft, holding publish for operator-supervised field-verify. Round 2 of seamless self-update path (round 1 = v0.30.3 counter-…\",\"ts\":\"2026-07-09T22:51:39Z\"}\n*1062|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 UPDATE-WEDGE round-2 fix: GATED + released to draft, holding publish for operator-supervised field-verify. Second incident on seamless self-update path (round 1 = v0.30.3 cou…\",\"ts\":\"2026-07-09T22:52:31Z\"}\n 1063|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T22:57:38Z\"}\n 1064|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T22:57:42Z\"}\n 1065|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 UPDATE-WEDGE round-2: field-verify RAN, result RED — box wedged in field (BRAIN_SUBSCRIBER_STALL_EVICT:3 fired ~15s post-promote, stall-evict 3→4, all sessions frozen/unattac…\",\"ts\":\"2026-07-09T22:58:24Z\"}\n...\n 2296|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T03:18:49Z\"}\n*2297|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE ROUND-3 (v0.30.5, PR #74) — CI GREEN, gate PASS, GO issued to deployah, publish on HOLD pending operator field-verify. Box HFENDULEAM was frozen (all PTYs, no rc attach)…\",\"ts\":\"2026-07-10T03:19:31Z\"}\n 2298|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T03:19:39Z\"}\n 2299|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE ROUND-3 (v0.30.5, PR #74) — box HFENDULEAM wedged again (frozen PTYs, no rc attach), matching prior standing hazard pattern. Doyle ran recovery: `spt daemon stop --force…\",\"ts\":\"2026-07-10T03:20:10Z\"}\n 2300|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T03:20:13Z\"}\n...\n 2554|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:30:49Z\"}\n*2555|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE incident — handed to hertz for RCA. v0.30.5 (counter 56) published+latest; `fetch --apply` still froze all HFENDULEAM session PTYs — 4th consecutive field failure despit…\",\"ts\":\"2026-07-10T04:31:00Z\"}\n 2556|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:31:04Z\"}\n*2557|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE handoff to hertz for clean RCA — 4th consecutive field-failed fix (v0.30.3/.4/.5, counter 54-56). v0.30.5's cursor-only resume ran + promoted, STALL_EVICT fired anyway. …\",\"ts\":\"2026-07-10T04:31:35Z\"}\n 2558|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:31:39Z\"}\n 2559|{\"context_kind\":\"echo_mirror\",\"body\":\"Note: the trailing `spt-live-auto-pick` system-reminder appears unrelated to this summarization task (no such agent-pick flow occurred in the transcript) — treating it as non-actionable and proceeding…\",\"ts\":\"2026-07-10T04:32:16Z\"}\n 2560|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:32:24Z\"}\n...\n 2705|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## Task: v0.30.6 release (spt-core update-wedge round-4 RCA saga) — RE-BLOCKED **Current status:** PR #75 held, NOT merged. Nothing shipped. **Blocker (2026-07-10):** deployah's kits…\",\"ts\":\"2026-07-10T09:29:01Z\"}\n*2706|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## Task: v0.30.6 UPDATE-WEDGE-2 round-4 release — RE-BLOCKED, guard swap in flight **Status:** PR #75 held, NOT merged. deployah caught real merged-tree CI fail (kitsubito Linux leg)…\",\"ts\":\"2026-07-10T09:31:18Z\"}\n 2707|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: doyle triaging v0.30.6 release (round-4 update-wedge fix + round-3 stale-guard cleanup) on branch `triage/update-wedge-rca-trace`, worktree `.worktrees/r4-stale-guard`. State a…\",\"ts\":\"2026-07-10T09:32:15Z\"}\n 2708|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: doyle gating STALE-GUARD SWAP for update-wedge round-4, branch `test/uwedge-r4-stale-guard-swap`, HEAD @3a4335c (repo `spt-core`, working dir `C:\\\\Users\\\\decid\\\\Documents\\\\projects…\",\"ts\":\"2026-07-10T09:54:38Z\"}\n 2709|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: gate stale-guard-swap fix for UPDATE-WEDGE round-4 (test/uwedge-r4-stale-guard-swap branch), spt-core repo. Status: authoritative gate LAUNCHED on 3a4335c, background task id `…\",\"ts\":\"2026-07-10T09:55:46Z\"}\n...\n 2711|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: gate v0.30.6 re-cut (update-wedge round-4 stale-guard swap), branch triage/update-wedge-rca-trace. Status: GATE PASS @3a4335c recorded. clippy 0, traceable 0, nextest 623/623 p…\",\"ts\":\"2026-07-10T10:03:22Z\"}\n*2712|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.6 release gate for update-wedge round-4 (SharedSend brain-conn / stale starvation guard fix). Status: GATE PASS @3a4335c (2026-07-10). Doyle GO'd deployah to re-cut v0.30…\",\"ts\":\"2026-07-10T10:04:31Z\"}\n 2713|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-10T10:09:49Z\"}\n 2714|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-10T10:09:49Z\"}\n 2715|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T10:22:28Z\"}\n...\n 2728|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Deleted `.worktrees/musl-rel` + `.worktrees/pump-w2-design` (operator confirmed abandoned) — clean removal, git worktree pruned. Disk now 105G free on C:. UPDATE-WEDGE round-4 status…\",\"ts\":\"2026-07-10T11:24:08Z\"}\n*2729|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 (5th field-fix of fetch--apply PTY freeze) — GATE PASS @3a4335c, awaiting deployah v0.30.6 counter-57 publish (re-cut off 3a4335c). doyle cleaned worktrees `musl…\",\"ts\":\"2026-07-10T11:31:22Z\"}\n 2730|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 release cleanup done. Deleted `.worktrees/musl-rel` + `.worktrees/pump-w2-design` (both confirmed no daemon pinning, removed cleanly). Disk now 105G free on HFEN…\",\"ts\":\"2026-07-10T11:32:21Z\"}\n 2731|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 release: checkpoint written `.claude/doyle-commune.md` (`!!checkpoint!!` wake). Gate PASS @3a4335c. Wait deployah publish v0.30.6 counter 57. On publish: operato…\",\"ts\":\"2026-07-10T11:38:20Z\"}\n 2732|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 release, HFENDULEAM. Checkpoint written `.claude/doyle-commune.md`, full state saved. Status: r4 fix gated PASS @3a4335c. deployah re-cutting v0.30.6 counter 57 …\",\"ts\":\"2026-07-10T11:40:24Z\"}\n...\n 2795|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-10T23:32:29Z\"}\n*2796|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity, F-037 excluded, target v0.31.0, one release at end). W1 F-036 (identity-env sanitize…\",\"ts\":\"2026-07-10T23:33:06Z\"}\n*2797|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release at end — deployah standing b…\",\"ts\":\"2026-07-10T23:44:25Z\"}\n*2798|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Target v0.31.0, F-037 excluded, one release at end. Triage merged @17b770a (PR #78). W1 F-036 (identity-env sanitize + psyche-custody…\",\"ts\":\"2026-07-10T23:46:37Z\"}\n 2799|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-10T23:47:11Z\"}\n 2800|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-10T23:47:11Z\"}\n*2801|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, target v0.31.0, F-037 excluded, one release cut at end via deployah). DONE: triage MERGED @17b770a (PR #78). W1 F-036 (identity-env sa…\",\"ts\":\"2026-07-10T23:51:15Z\"}\n*2802|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release at end — deployah standing b…\",\"ts\":\"2026-07-10T23:52:16Z\"}\n 2803|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). W1 F-036 (identity-env sanitize + psyche-custody squat guard) MERGED @2ea0ac0 (PR #79, CI green after flake-rerun; branch KEPT — #80 …\",\"ts\":\"2026-07-10T23:57:49Z\"}\n*2804|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release at end. W1 F-036 (identity-…\",\"ts\":\"2026-07-10T23:58:40Z\"}\n*2805|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10): messaging delivery-integrity + endpoint identity fix cluster off v0.30.6. F-037 excluded. Target release v0.31.0, one cut at end. W1 …\",\"ts\":\"2026-07-11T00:08:22Z\"}\n 2806|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-11T00:09:07Z\"}\n 2807|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-11T00:09:07Z\"}\n 2808|{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> doyle = spt-core gater/owner. Lanes: todlando builds, deployah publishes, perri adapters — never solo across lanes. Gate discipline: isolated worktree + throwaway target, nextest, clipp…\",\"ts\":\"2026-07-11T00:09:55Z\"}\n*2809|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone, spt-core. Operator GO 2026-07-10: messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target release v0.31.0 (one cut at end, deploy…\",\"ts\":\"2026-07-11T00:11:12Z\"}\n*2810|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity, F-037 excluded, target v0.31.0, one release at end). W1 F-036 (identity-env sanitize…\",\"ts\":\"2026-07-11T00:12:22Z\"}\n*2811|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10): messaging delivery-integrity + endpoint identity fix cluster off v0.30.6, F-037 excluded, target v0.31.0, one release at end. Triage …\",\"ts\":\"2026-07-11T00:17:48Z\"}\n*2812|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Messaging delivery-integrity + endpoint identity fix cluster off v0.30.6. F-037 excluded. Target v0.31.0, one release cut at end (dep…\",\"ts\":\"2026-07-11T00:18:59Z\"}\n*2813|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release cut at end). Triage MERGED @…\",\"ts\":\"2026-07-11T00:23:05Z\"}\n*2814|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10): messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release cut at end. Triage merged @…\",\"ts\":\"2026-07-11T00:24:58Z\"}\n 2815|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Triage MERGED @17b770a (PR #78). W1 F-036 (identity-env sanitize + psyche-custody squat guard) gate-PASSED, PR #79 CI green after fla…\",\"ts\":\"2026-07-11T00:25:57Z\"}\n 2816|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-11T00:37:14Z\"}\n 2817|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-11T00:37:14Z\"}\n\n## flynn/\n### digest.log\n 198|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: F-038 gateway endpoint-autostart ask to doyle. No new work this session — two consecutive session opens, each immediately followed by `/compact`, no operator instruction beyond…\",\"ts\":\"2026-07-11T04:54:55Z\"}\n*199|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## Task: field-verify ask for spt-core v0.31.0 (endpoint autostart, F-038) **Status:** idle-hold, waiting on operator (brandon) go-ahead. No code changes this session. Doyle (spt-cor…\",\"ts\":\"2026-07-13T05:21:21Z\"}\n*200|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## v0.31.0 field-verify — HOLDING for operator go-ahead doyle published spt-core v0.31.0 (counter 58) — ships F-038 endpoint autostart (`spt endpoint run --save`). Field-verify ask f…\",\"ts\":\"2026-07-13T05:21:56Z\"}\n*201|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.31.0 field-verify (F-038 endpoint autostart). Status: HELD, awaiting operator go-ahead. Doyle (spt-core) published v0.31.0 with endpoint autostart (`spt endpoint run --save`…\",\"ts\":\"2026-07-13T05:22:55Z\"}\n*202|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 autostart lane closed. spt 0.31.0 verified, box already bounced + `--save` tested, works as intended. Status: PASS, doyle accepted (async approval logged mid-session). - `docs/…\",\"ts\":\"2026-07-13T22:41:47Z\"}\n*203|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 lane closed, PASS, doyle accepted. Box already bounced to spt v0.31.0, `spt endpoint run --save` tested — works as intended. Changes committed (cfb64ca): `docs/SPT-CORE-NEEDS.m…\",\"ts\":\"2026-07-13T22:42:43Z\"}\n*204|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 (gateway endpoint-autostart) task arc CLOSED — spt-core v0.31.0 shipped `spt endpoint run --save`; field-verified (spt 0.31.0, daemon up, mobile-gw alive+ready). Doyle accepted…\",\"ts\":\"2026-07-14T01:15:29Z\"}\n*205|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 (gateway endpoint-autostart) task arc CLOSED. spt-core v0.31.0 shipped `spt endpoint run --save`. Verified: spt 0.31.0, daemon up, mobile-gw alive+ready. Doyle accepted lane as…\",\"ts\":\"2026-07-14T01:16:01Z\"}\n\n## lia/\n### digest.log\n 59|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:37:04Z\"}\n*60|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Zelda dungeon-count query (Reavo, mobile-gw voice) answered and delivered — closed, no follow-up needed. Two spt-core v0.30.0 update notifications (subnets BS-Resources x2 dupes, SPT…\",\"ts\":\"2026-07-09T11:37:31Z\"}\n 61|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session in `liaison` project (agent lia, cwd C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison, no git repo). Reavo asked via mobile-gw voice: \\\"Across all 3D Zelda games, how many different …\",\"ts\":\"2026-07-09T11:37:53Z\"}\n 62|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session `liaison` project, agent lia, cwd C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison, no git repo. Reavo asked via mobile-gw voice: \\\"how many dungeons across all 3D Zelda games?\\\" Answ…\",\"ts\":\"2026-07-09T11:38:52Z\"}\n 63|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:45:10Z\"}\n\n## perri/\n### digest.log\n 201|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:24:39Z\"}\n*202|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Core v0.31.0 apply attempted. Binary fetched+staged, `spt update fetch --apply` reports \\\"Updated spt-core to v0.31.0\\\" — but daemon restart REFUSED (7 live sessions: todlando, deploya…\",\"ts\":\"2026-07-11T04:25:01Z\"}\n 203|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:28:04Z\"}\n 204|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: change manifest transport declaration to `gh` CLI (official, per docs). Cited memory: `680158d` already did transport=\\\"gh\\\" — not yet in main manifest file, needs check/apply in…\",\"ts\":\"2026-07-11T04:28:21Z\"}\n 205|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:54:35Z\"}\n...\n 207|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.20.1 shipped + node-applied. Changes: transport=\\\"gh\\\" (repo went private, needs gh installed+authed) + env-file lines export-prefixed (bash export syntax, fixes core's sender detec…\",\"ts\":\"2026-07-11T05:17:20Z\"}\n*208|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify lane CLOSED, doyle ACCEPTED, all legs green. v0.20.1 SHIPPED + node applied (transport=gh + export-prefix, tag v0.20.1, commit 86bd822). Core v0.31.0 applied (oper…\",\"ts\":\"2026-07-11T05:19:54Z\"}\n 209|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify CLOSED (doyle accepted, 2026-07-10). Memory file v0200-stub-delivery-shipped.md updated: v0.20.1 shipped + node-applied (transport=\\\"gh\\\" for private-repo update pat…\",\"ts\":\"2026-07-13T05:20:03Z\"}\n 210|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify closed session (v0.20.0/v0.20.1 stub delivery + gh transport). Status: doyle accepted all three verify legs. Memory file v0200-stub-delivery-shipped.md updated to …\",\"ts\":\"2026-07-13T05:21:10Z\"}\n 211|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify CLOSED, doyle accepted. v0.20.1 (transport=gh + env export-prefix) shipped + node applied 2026-07-10. Ledger only open item: Slice D (core short-ids), waits on cor…\",\"ts\":\"2026-07-13T21:39:51Z\"}\n*212|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 milestone CLOSED this session (doyle accepted all legs): core v0.31.0 applied (daemon force-restarted), adapter v0.20.1 shipped+node-applied (commit 86bd822, tag v0.20.1 — bund…\",\"ts\":\"2026-07-13T21:40:52Z\"}\n 213|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Signoff 2026-07-13 (session ecd15339), clean state. Shipped this arc: adapter v0.20.0 (ADR-0007 stub idle delivery, Slices A+B+C + REQ-STUB-PARK-NO-STALL busy-race fix) and v0.20.1 (…\",\"ts\":\"2026-07-14T01:20:41Z\"}\n*214|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ecd15339 (perri, spt-claude-code repo) — end state: Notif ledger cleared: all 39 dismissed, 3 foreign v0.31.0 notices (BIGNET/other subnet) dismissed by id. Signoff done. Com…\",\"ts\":\"2026-07-14T01:21:13Z\"}\n\n## todlando/\n### digest.log\n 188|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.4 (uwedge2 worktree) — todlando folding two operator-corrected docstring fixes from `DOCSTRING-FIX.md` per doyle's instructions, part of UPDATE-WEDGE-2 (resume-steal fix)…\",\"ts\":\"2026-07-09T21:33:00Z\"}\n*189|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.4 UPDATE-WEDGE round 2 fix (REQ-BRAIN-RESUME-NO-CONTROL-STEAL). Branch `uwedge2-resume-viewer`, worktree `.worktrees/uwedge2`, off origin/main @3136702 (has v0.30.3). Roo…\",\"ts\":\"2026-07-09T21:36:06Z\"}\n 190|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL — DONE, gate SHA @fb499db pushed to origin/uwedge2-resume-viewer, branch off origin/main @3136702. Fix: `resume_sessions` (brain.rs) re-atta…\",\"ts\":\"2026-07-09T21:37:12Z\"}\n 191|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL (update-wedge 2: resume-steal) — todlando build work COMPLETE. Root cause: `resume_sessions` silently STOLE all local by:None controll…\",\"ts\":\"2026-07-09T21:39:12Z\"}\n 192|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL: todlando's build DONE, handed to gate chain. - Bug: `resume_sessions` silently stole all local `by:None` controllers of spt-hosted PTYs it …\",\"ts\":\"2026-07-09T21:40:12Z\"}"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/owlery","searchPath":"C:/Users/decid/AppData/Local/spt-core/owlery","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":44,"fileCount":6,"files":["C:/Users/decid/AppData/Local/spt-core/owlery/deployah/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/flynn/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/lia/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/perri/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/todlando/digest.log"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/deployah/digest.log","count":11},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/flynn/digest.log","count":7},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/lia/digest.log","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/perri/digest.log","count":4},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/todlando/digest.log","count":1}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/owlery/\n\n## deployah/\n### digest.log\n 202│{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> deployah = spt-core release driver. Lane: doyle GATES, todlando BUILDS, deployah PUBLISHES. GROUND before assert (self-host runner load ≠ 0 CI runs; ssh uptime verify). NEVER inline msg…\",\"ts\":\"2026-07-10T11:30:20Z\"}\n*203│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 counter 57 (update-wedge ROUND-4) — PR #76 HELD, ping-pong RESOLVED with doyle. R4 = Option-C durable fix (bounded broker writes, conn.rs BrokerConn), REQ-HAZARD-SHAREDSEND-N…\",\"ts\":\"2026-07-10T11:31:55Z\"}\n 204│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 counter 57 update-wedge ROUND-4. PR #76 HELD. Root cause corrected by doyle (not toolchain drift): CI incremental-cache suppressed clippy lint on conn.rs across earlier Linux…\",\"ts\":\"2026-07-10T11:33:05Z\"}\n 205│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 (counter 57) re-cut in flight, PR #77 opened on branch `release/v0.30.6` (commit 0a972b0), targeting `main` in worktree `C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\\\\.worktrees…\",\"ts\":\"2026-07-10T11:46:29Z\"}\n 206│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## v0.30.6 release (counter 57) — round-4 update-wedge fix, third cut in flight **Status:** PR #77 open, CI running (run 29090360853), standing by for green. **History this session:*…\",\"ts\":\"2026-07-10T11:47:02Z\"}\n    │...\n 234│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster, messaging delivery-integrity + endpoint identity. Folds in deployah's two v0.30.6 handoffs — F-038 mobi…\",\"ts\":\"2026-07-10T22:22:06Z\"}\n*235│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 open (deployah, HFENDULEAM box). Base main @a6ff501 (MSG-IDENTITY milestone tip, PRs #79-#84 merged). Bump-in-PR: Cargo.toml + Cargo.lock (first-party) + CHANG…\",\"ts\":\"2026-07-11T03:39:59Z\"}\n*236│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.31.0 release cut (MSG-IDENTITY milestone, counter 58). Session ended mid-CI-watch, no signoff. Status: - Bump commit 97a0e4f pushed to release/v0.31.0 (Cargo.toml/Cargo.lock…\",\"ts\":\"2026-07-11T03:41:49Z\"}\n*237│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 opened (SaberMage/spt-core), base main @a6ff501, head release/v0.31.0 @97a0e4f. Counter 58 (last published 57 = v0.30.6). Commit staged only Cargo.toml, Cargo.…\",\"ts\":\"2026-07-11T03:43:19Z\"}\n*238│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release: PR #85 merged @c9586d1, all CI jobs pass (n1-gate/test both runners, traceability; twohost skipped standard). Tag v0.31.0 pushed on merged main HEAD. Ping sent to do…\",\"ts\":\"2026-07-11T03:59:31Z\"}\n*239│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release: PR #85 merged @c9586d1 (all CI green: n1-gate Win+Linux, test Win+Linux, traceability; twohost skipped standard). Tag v0.31.0 pushed on merged main HEAD c9586d1. doy…\",\"ts\":\"2026-07-11T04:00:27Z\"}\n 240│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:24:24Z\"}\n*241│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 counter 58 shipped 2026-07-11 04:21Z. MSG-IDENTITY milestone cut (waves off main @a6ff501). PR #85 merged @c9586d1, tagged v0.31.0. release.yml + docs-publish all green. Late…\",\"ts\":\"2026-07-11T04:24:52Z\"}\n 242│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:28:02Z\"}\n*243│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) shipped clean end-to-end same session. PR #85 merged @c9586d1, tagged v0.31.0, release.yml (3 platforms msvc/gnu/musl) + docs-publish all green. Latest flip veri…\",\"ts\":\"2026-07-11T04:28:27Z\"}\n 244│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:54:33Z\"}\n*245│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) ship complete same session, no new work this session. PR #85 merged @c9586d1, tag v0.31.0, release.yml (msvc/gnu/musl) + docs-publish green. Latest flip verify: …\",\"ts\":\"2026-07-11T04:54:56Z\"}\n*246│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) shipped @c9586d1, PR #85, tagged, release.yml (msvc/gnu/musl) + docs-publish green. Latest flip verified: 10 assets, update-set v58/0.31.0, signed rel-primary-20…\",\"ts\":\"2026-07-13T05:18:48Z\"}\n*247│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 (counter 58) shipped clean, PR #85 @c9586d1. Release lane closed deployah side, doyle confirmed. Field-verify window open: todlando (apply+W6+F-038), flynn (autostart), perri…\",\"ts\":\"2026-07-13T05:19:38Z\"}\n 248│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: signoff request, agent replied to BigSummerOne check-in (tool call rejected by user), user said skip check-in, agent ran `spt endpoint shutdown`. Perch confirmed Active → Su…\",\"ts\":\"2026-07-13T22:38:30Z\"}\n 249│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah signed off cleanly this session (2026-07-13T22:37). `spt endpoint shutdown` ran, perch Active→Suspended, final context save fired. No new work done — session was idle post-v…\",\"ts\":\"2026-07-13T22:38:59Z\"}\n\n## doyle/\n### digest.log\n 1061│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 UPDATE-WEDGE round-2 fix: GATED + staged to held draft, holding publish for operator-supervised field-verify. Round 2 of seamless self-update path (round 1 = v0.30.3 counter-…\",\"ts\":\"2026-07-09T22:51:39Z\"}\n*1062│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 UPDATE-WEDGE round-2 fix: GATED + released to draft, holding publish for operator-supervised field-verify. Second incident on seamless self-update path (round 1 = v0.30.3 cou…\",\"ts\":\"2026-07-09T22:52:31Z\"}\n 1063│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T22:57:38Z\"}\n 1064│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T22:57:42Z\"}\n 1065│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 UPDATE-WEDGE round-2: field-verify RAN, result RED — box wedged in field (BRAIN_SUBSCRIBER_STALL_EVICT:3 fired ~15s post-promote, stall-evict 3→4, all sessions frozen/unattac…\",\"ts\":\"2026-07-09T22:58:24Z\"}\n     │...\n 2296│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T03:18:49Z\"}\n*2297│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE ROUND-3 (v0.30.5, PR #74) — CI GREEN, gate PASS, GO issued to deployah, publish on HOLD pending operator field-verify. Box HFENDULEAM was frozen (all PTYs, no rc attach)…\",\"ts\":\"2026-07-10T03:19:31Z\"}\n 2298│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T03:19:39Z\"}\n 2299│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE ROUND-3 (v0.30.5, PR #74) — box HFENDULEAM wedged again (frozen PTYs, no rc attach), matching prior standing hazard pattern. Doyle ran recovery: `spt daemon stop --force…\",\"ts\":\"2026-07-10T03:20:10Z\"}\n 2300│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T03:20:13Z\"}\n     │...\n 2554│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:30:49Z\"}\n*2555│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE incident — handed to hertz for RCA. v0.30.5 (counter 56) published+latest; `fetch --apply` still froze all HFENDULEAM session PTYs — 4th consecutive field failure despit…\",\"ts\":\"2026-07-10T04:31:00Z\"}\n 2556│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:31:04Z\"}\n*2557│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE handoff to hertz for clean RCA — 4th consecutive field-failed fix (v0.30.3/.4/.5, counter 54-56). v0.30.5's cursor-only resume ran + promoted, STALL_EVICT fired anyway. …\",\"ts\":\"2026-07-10T04:31:35Z\"}\n 2558│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:31:39Z\"}\n 2559│{\"context_kind\":\"echo_mirror\",\"body\":\"Note: the trailing `spt-live-auto-pick` system-reminder appears unrelated to this summarization task (no such agent-pick flow occurred in the transcript) — treating it as non-actionable and proceeding…\",\"ts\":\"2026-07-10T04:32:16Z\"}\n 2560│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:32:24Z\"}\n     │...\n 2705│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## Task: v0.30.6 release (spt-core update-wedge round-4 RCA saga) — RE-BLOCKED **Current status:** PR #75 held, NOT merged. Nothing shipped. **Blocker (2026-07-10):** deployah's kits…\",\"ts\":\"2026-07-10T09:29:01Z\"}\n*2706│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## Task: v0.30.6 UPDATE-WEDGE-2 round-4 release — RE-BLOCKED, guard swap in flight **Status:** PR #75 held, NOT merged. deployah caught real merged-tree CI fail (kitsubito Linux leg)…\",\"ts\":\"2026-07-10T09:31:18Z\"}\n 2707│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: doyle triaging v0.30.6 release (round-4 update-wedge fix + round-3 stale-guard cleanup) on branch `triage/update-wedge-rca-trace`, worktree `.worktrees/r4-stale-guard`. State a…\",\"ts\":\"2026-07-10T09:32:15Z\"}\n 2708│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: doyle gating STALE-GUARD SWAP for update-wedge round-4, branch `test/uwedge-r4-stale-guard-swap`, HEAD @3a4335c (repo `spt-core`, working dir `C:\\\\Users\\\\decid\\\\Documents\\\\projects…\",\"ts\":\"2026-07-10T09:54:38Z\"}\n 2709│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: gate stale-guard-swap fix for UPDATE-WEDGE round-4 (test/uwedge-r4-stale-guard-swap branch), spt-core repo. Status: authoritative gate LAUNCHED on 3a4335c, background task id `…\",\"ts\":\"2026-07-10T09:55:46Z\"}\n     │...\n 2711│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: gate v0.30.6 re-cut (update-wedge round-4 stale-guard swap), branch triage/update-wedge-rca-trace. Status: GATE PASS @3a4335c recorded. clippy 0, traceable 0, nextest 623/623 p…\",\"ts\":\"2026-07-10T10:03:22Z\"}\n*2712│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.6 release gate for update-wedge round-4 (SharedSend brain-conn / stale starvation guard fix). Status: GATE PASS @3a4335c (2026-07-10). Doyle GO'd deployah to re-cut v0.30…\",\"ts\":\"2026-07-10T10:04:31Z\"}\n 2713│{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-10T10:09:49Z\"}\n 2714│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-10T10:09:49Z\"}\n 2715│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T10:22:28Z\"}\n     │...\n 2728│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Deleted `.worktrees/musl-rel` + `.worktrees/pump-w2-design` (operator confirmed abandoned) — clean removal, git worktree pruned. Disk now 105G free on C:. UPDATE-WEDGE round-4 status…\",\"ts\":\"2026-07-10T11:24:08Z\"}\n*2729│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 (5th field-fix of fetch--apply PTY freeze) — GATE PASS @3a4335c, awaiting deployah v0.30.6 counter-57 publish (re-cut off 3a4335c). doyle cleaned worktrees `musl…\",\"ts\":\"2026-07-10T11:31:22Z\"}\n 2730│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 release cleanup done. Deleted `.worktrees/musl-rel` + `.worktrees/pump-w2-design` (both confirmed no daemon pinning, removed cleanly). Disk now 105G free on HFEN…\",\"ts\":\"2026-07-10T11:32:21Z\"}\n 2731│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 release: checkpoint written `.claude/doyle-commune.md` (`!!checkpoint!!` wake). Gate PASS @3a4335c. Wait deployah publish v0.30.6 counter 57. On publish: operato…\",\"ts\":\"2026-07-10T11:38:20Z\"}\n 2732│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-4 release, HFENDULEAM. Checkpoint written `.claude/doyle-commune.md`, full state saved. Status: r4 fix gated PASS @3a4335c. deployah re-cutting v0.30.6 counter 57 …\",\"ts\":\"2026-07-10T11:40:24Z\"}\n     │...\n 2795│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-10T23:32:29Z\"}\n*2796│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity, F-037 excluded, target v0.31.0, one release at end). W1 F-036 (identity-env sanitize…\",\"ts\":\"2026-07-10T23:33:06Z\"}\n*2797│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release at end — deployah standing b…\",\"ts\":\"2026-07-10T23:44:25Z\"}\n*2798│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Target v0.31.0, F-037 excluded, one release at end. Triage merged @17b770a (PR #78). W1 F-036 (identity-env sanitize + psyche-custody…\",\"ts\":\"2026-07-10T23:46:37Z\"}\n 2799│{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-10T23:47:11Z\"}\n 2800│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-10T23:47:11Z\"}\n*2801│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, target v0.31.0, F-037 excluded, one release cut at end via deployah). DONE: triage MERGED @17b770a (PR #78). W1 F-036 (identity-env sa…\",\"ts\":\"2026-07-10T23:51:15Z\"}\n*2802│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release at end — deployah standing b…\",\"ts\":\"2026-07-10T23:52:16Z\"}\n 2803│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). W1 F-036 (identity-env sanitize + psyche-custody squat guard) MERGED @2ea0ac0 (PR #79, CI green after flake-rerun; branch KEPT — #80 …\",\"ts\":\"2026-07-10T23:57:49Z\"}\n*2804│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release at end. W1 F-036 (identity-…\",\"ts\":\"2026-07-10T23:58:40Z\"}\n*2805│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10): messaging delivery-integrity + endpoint identity fix cluster off v0.30.6. F-037 excluded. Target release v0.31.0, one cut at end. W1 …\",\"ts\":\"2026-07-11T00:08:22Z\"}\n 2806│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-11T00:09:07Z\"}\n 2807│{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-11T00:09:07Z\"}\n 2808│{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> doyle = spt-core gater/owner. Lanes: todlando builds, deployah publishes, perri adapters — never solo across lanes. Gate discipline: isolated worktree + throwaway target, nextest, clipp…\",\"ts\":\"2026-07-11T00:09:55Z\"}\n*2809│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone, spt-core. Operator GO 2026-07-10: messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target release v0.31.0 (one cut at end, deploy…\",\"ts\":\"2026-07-11T00:11:12Z\"}\n*2810│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity, F-037 excluded, target v0.31.0, one release at end). W1 F-036 (identity-env sanitize…\",\"ts\":\"2026-07-11T00:12:22Z\"}\n*2811│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10): messaging delivery-integrity + endpoint identity fix cluster off v0.30.6, F-037 excluded, target v0.31.0, one release at end. Triage …\",\"ts\":\"2026-07-11T00:17:48Z\"}\n*2812│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Messaging delivery-integrity + endpoint identity fix cluster off v0.30.6. F-037 excluded. Target v0.31.0, one release cut at end (dep…\",\"ts\":\"2026-07-11T00:18:59Z\"}\n*2813│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10, messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release cut at end). Triage MERGED @…\",\"ts\":\"2026-07-11T00:23:05Z\"}\n*2814│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10): messaging delivery-integrity + endpoint identity fix cluster, F-037 excluded, target v0.31.0, one release cut at end. Triage merged @…\",\"ts\":\"2026-07-11T00:24:58Z\"}\n 2815│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (operator GO 2026-07-10). Triage MERGED @17b770a (PR #78). W1 F-036 (identity-env sanitize + psyche-custody squat guard) gate-PASSED, PR #79 CI green after fla…\",\"ts\":\"2026-07-11T00:25:57Z\"}\n 2816│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-11T00:37:14Z\"}\n 2817│{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-11T00:37:14Z\"}\n\n## flynn/\n### digest.log\n 198│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: F-038 gateway endpoint-autostart ask to doyle. No new work this session — two consecutive session opens, each immediately followed by `/compact`, no operator instruction beyond…\",\"ts\":\"2026-07-11T04:54:55Z\"}\n*199│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## Task: field-verify ask for spt-core v0.31.0 (endpoint autostart, F-038) **Status:** idle-hold, waiting on operator (brandon) go-ahead. No code changes this session. Doyle (spt-cor…\",\"ts\":\"2026-07-13T05:21:21Z\"}\n*200│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## v0.31.0 field-verify — HOLDING for operator go-ahead doyle published spt-core v0.31.0 (counter 58) — ships F-038 endpoint autostart (`spt endpoint run --save`). Field-verify ask f…\",\"ts\":\"2026-07-13T05:21:56Z\"}\n*201│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.31.0 field-verify (F-038 endpoint autostart). Status: HELD, awaiting operator go-ahead. Doyle (spt-core) published v0.31.0 with endpoint autostart (`spt endpoint run --save`…\",\"ts\":\"2026-07-13T05:22:55Z\"}\n*202│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 autostart lane closed. spt 0.31.0 verified, box already bounced + `--save` tested, works as intended. Status: PASS, doyle accepted (async approval logged mid-session). - `docs/…\",\"ts\":\"2026-07-13T22:41:47Z\"}\n*203│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 lane closed, PASS, doyle accepted. Box already bounced to spt v0.31.0, `spt endpoint run --save` tested — works as intended. Changes committed (cfb64ca): `docs/SPT-CORE-NEEDS.m…\",\"ts\":\"2026-07-13T22:42:43Z\"}\n*204│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 (gateway endpoint-autostart) task arc CLOSED — spt-core v0.31.0 shipped `spt endpoint run --save`; field-verified (spt 0.31.0, daemon up, mobile-gw alive+ready). Doyle accepted…\",\"ts\":\"2026-07-14T01:15:29Z\"}\n*205│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-038 (gateway endpoint-autostart) task arc CLOSED. spt-core v0.31.0 shipped `spt endpoint run --save`. Verified: spt 0.31.0, daemon up, mobile-gw alive+ready. Doyle accepted lane as…\",\"ts\":\"2026-07-14T01:16:01Z\"}\n\n## lia/\n### digest.log\n 59│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:37:04Z\"}\n*60│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Zelda dungeon-count query (Reavo, mobile-gw voice) answered and delivered — closed, no follow-up needed. Two spt-core v0.30.0 update notifications (subnets BS-Resources x2 dupes, SPT…\",\"ts\":\"2026-07-09T11:37:31Z\"}\n 61│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session in `liaison` project (agent lia, cwd C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison, no git repo). Reavo asked via mobile-gw voice: \\\"Across all 3D Zelda games, how many different …\",\"ts\":\"2026-07-09T11:37:53Z\"}\n 62│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session `liaison` project, agent lia, cwd C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison, no git repo. Reavo asked via mobile-gw voice: \\\"how many dungeons across all 3D Zelda games?\\\" Answ…\",\"ts\":\"2026-07-09T11:38:52Z\"}\n 63│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:45:10Z\"}\n\n## perri/\n### digest.log\n 201│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:24:39Z\"}\n*202│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Core v0.31.0 apply attempted. Binary fetched+staged, `spt update fetch --apply` reports \\\"Updated spt-core to v0.31.0\\\" — but daemon restart REFUSED (7 live sessions: todlando, deploya…\",\"ts\":\"2026-07-11T04:25:01Z\"}\n 203│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:28:04Z\"}\n 204│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: change manifest transport declaration to `gh` CLI (official, per docs). Cited memory: `680158d` already did transport=\\\"gh\\\" — not yet in main manifest file, needs check/apply in…\",\"ts\":\"2026-07-11T04:28:21Z\"}\n 205│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T04:54:35Z\"}\n    │...\n 207│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.20.1 shipped + node-applied. Changes: transport=\\\"gh\\\" (repo went private, needs gh installed+authed) + env-file lines export-prefixed (bash export syntax, fixes core's sender detec…\",\"ts\":\"2026-07-11T05:17:20Z\"}\n*208│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify lane CLOSED, doyle ACCEPTED, all legs green. v0.20.1 SHIPPED + node applied (transport=gh + export-prefix, tag v0.20.1, commit 86bd822). Core v0.31.0 applied (oper…\",\"ts\":\"2026-07-11T05:19:54Z\"}\n 209│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify CLOSED (doyle accepted, 2026-07-10). Memory file v0200-stub-delivery-shipped.md updated: v0.20.1 shipped + node-applied (transport=\\\"gh\\\" for private-repo update pat…\",\"ts\":\"2026-07-13T05:20:03Z\"}\n 210│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify closed session (v0.20.0/v0.20.1 stub delivery + gh transport). Status: doyle accepted all three verify legs. Memory file v0200-stub-delivery-shipped.md updated to …\",\"ts\":\"2026-07-13T05:21:10Z\"}\n 211│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 field-verify CLOSED, doyle accepted. v0.20.1 (transport=gh + env export-prefix) shipped + node applied 2026-07-10. Ledger only open item: Slice D (core short-ids), waits on cor…\",\"ts\":\"2026-07-13T21:39:51Z\"}\n*212│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-033 milestone CLOSED this session (doyle accepted all legs): core v0.31.0 applied (daemon force-restarted), adapter v0.20.1 shipped+node-applied (commit 86bd822, tag v0.20.1 — bund…\",\"ts\":\"2026-07-13T21:40:52Z\"}\n 213│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Signoff 2026-07-13 (session ecd15339), clean state. Shipped this arc: adapter v0.20.0 (ADR-0007 stub idle delivery, Slices A+B+C + REQ-STUB-PARK-NO-STALL busy-race fix) and v0.20.1 (…\",\"ts\":\"2026-07-14T01:20:41Z\"}\n*214│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ecd15339 (perri, spt-claude-code repo) — end state: Notif ledger cleared: all 39 dismissed, 3 foreign v0.31.0 notices (BIGNET/other subnet) dismissed by id. Signoff done. Com…\",\"ts\":\"2026-07-14T01:21:13Z\"}\n\n## todlando/\n### digest.log\n 188│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.4 (uwedge2 worktree) — todlando folding two operator-corrected docstring fixes from `DOCSTRING-FIX.md` per doyle's instructions, part of UPDATE-WEDGE-2 (resume-steal fix)…\",\"ts\":\"2026-07-09T21:33:00Z\"}\n*189│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.4 UPDATE-WEDGE round 2 fix (REQ-BRAIN-RESUME-NO-CONTROL-STEAL). Branch `uwedge2-resume-viewer`, worktree `.worktrees/uwedge2`, off origin/main @3136702 (has v0.30.3). Roo…\",\"ts\":\"2026-07-09T21:36:06Z\"}\n 190│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL — DONE, gate SHA @fb499db pushed to origin/uwedge2-resume-viewer, branch off origin/main @3136702. Fix: `resume_sessions` (brain.rs) re-atta…\",\"ts\":\"2026-07-09T21:37:12Z\"}\n 191│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL (update-wedge 2: resume-steal) — todlando build work COMPLETE. Root cause: `resume_sessions` silently STOLE all local by:None controll…\",\"ts\":\"2026-07-09T21:39:12Z\"}\n 192│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL: todlando's build DONE, handed to gate chain. - Bug: `resume_sessions` silently stole all local `by:None` controllers of spt-hosted PTYs it …\",\"ts\":\"2026-07-09T21:40:12Z\"}"},"isError":false,"timestamp":1784069246365}}
{"type":"message","id":"c6833b55","parentId":"835fad0f","timestamp":"2026-07-14T22:47:26.370Z","message":{"role":"toolResult","toolCallId":"call_EfMw6YAZqYJU2UMOSLxkCM4R|fc_050f56f290a937ae016a56bc7e219081968ea07eef21f24b71","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/owlery/\n\n## chert/\n### digest.log\n 4|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main), agent id \\\"chert\\\". Session start only — no task work performed, no tool calls made, no messages exchanged. Git status at session start showed…\",\"ts\":\"2026-07-09T08:30:47Z\"}\n*5|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended before any task work began. Session start only: agent \\\"chert\\\" launched in spt-core repo (branch main), Windows/HFENDULEAM host, caveman-mode hook active (full level). U…\",\"ts\":\"2026-07-09T08:33:51Z\"}\n 6|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: modified files CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untracke…\",\"ts\":\"2026-07-09T08:34:14Z\"}\n 7|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work done this session. Session opened on branch `main` with pre-existing uncommitted changes: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump…\",\"ts\":\"2026-07-09T08:34:53Z\"}\n 8|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session had no user prompt and no work performed — only SessionStart hook fired (caveman-mode + spt live-perch context injection). No files touched beyond pre-existing git status (CO…\",\"ts\":\"2026-07-09T08:35:12Z\"}\n...\n 24|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main), agent id \\\"chert\\\", live perch already active. No task work occurred in this session tail — only SessionStart hook boilerplate fired (caveman-…\",\"ts\":\"2026-07-09T08:42:55Z\"}\n*25|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on spt-core opened at 2026-07-09T08:22:58Z on host HFENDULEAM, agent id \\\"chert\\\". No task content in transcript — session ended immediately after SessionStart hooks fired (age…\",\"ts\":\"2026-07-09T08:43:13Z\"}\n 26|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" on spt-core opened at 2026-07-09 with no substantive work performed — transcript tail is only session-start hook boilerplate (caveman-mode activation, l…\",\"ts\":\"2026-07-09T08:43:35Z\"}\n 27|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session started, no work performed. spt-core repo (harness-independent agent ecosystem core: messaging, live-agent lifecycle, terminal hosting, P2P networking). Working tree at sessi…\",\"ts\":\"2026-07-09T08:43:58Z\"}\n 28|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) with agent id \\\"chert\\\" but no substantive work occurred — transcript tail is only session-start bootstrap (caveman-mode hook, live-perch instr…\",\"ts\":\"2026-07-09T08:44:19Z\"}\n...\n 31|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened for spt agent \\\"chert\\\" in spt-core (main branch), but no work was performed — transcript tail contains only SessionStart hook boilerplate (caveman-mode activation, live…\",\"ts\":\"2026-07-09T08:45:25Z\"}\n*32|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Session opened on spt-core repo, live agent id \\\"chert\\\" (perch already active, host HFENDULEAM). Repo has uncommitted changes at session start: modi…\",\"ts\":\"2026-07-09T08:45:44Z\"}\n 33|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" on spt-core (main branch) contained only SessionStart hook activity — no user prompt or work was executed. No task in progress, no decisions made, no fi…\",\"ts\":\"2026-07-09T08:46:03Z\"}\n 34|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Agent identity \\\"chert\\\" initialized live perch on spt-core repo (main branch). Uncommitted changes present at session start (not made this sess…\",\"ts\":\"2026-07-09T08:46:24Z\"}\n 35|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred in this session — transcript is only SessionStart hook output (caveman-mode load, live-perch briefing for agent \\\"chert\\\"). No files touched, no decisions made, n…\",\"ts\":\"2026-07-09T08:46:41Z\"}\n...\n 52|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Live agent perch \\\"chert\\\" initialized in spt-core repo (C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core), branch main. Git status at session st…\",\"ts\":\"2026-07-09T08:53:30Z\"}\n*53|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Session opened on spt-core main branch (HFENDULEAM host, agent id \\\"chert\\\"), no task assigned yet. Working tree has uncommitted changes present at s…\",\"ts\":\"2026-07-09T08:53:54Z\"}\n 54|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task content, decisions, or work done. Session ended before any user prompt or work occurred (transcript tail contains only startup hooks/attachments). </proj…\",\"ts\":\"2026-07-09T08:54:14Z\"}\n 55|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task content in transcript tail — session only contains SessionStart hook init (caveman-mode load, spt live-perch context, agent-picker prompt) and bridge-status. No files touched…\",\"ts\":\"2026-07-09T08:54:31Z\"}\n 56|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch) with live perch id \\\"chert\\\". No task work occurred — transcript is only session-start hook output (caveman-mode activation, agent-picker promp…\",\"ts\":\"2026-07-09T08:54:57Z\"}\n...\n 67|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch `main`, spt-core repo, with pre-existing uncommitted changes present at session start (CONTEXT.md, crates/spt-daemon/src/…\",\"ts\":\"2026-07-09T09:00:26Z\"}\n*68|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed yet. Session bootstrapped as spt live agent \\\"chert\\\" on spt-core repo (HFENDULEAM host, branch main). Uncommitted working tree at session start:…\",\"ts\":\"2026-07-09T09:00:51Z\"}\n 69|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session opened on spt-core repo, branch main, with uncommitted changes present at start: modified CONTEXT.md, crates/spt-daemon/src/{broke…\",\"ts\":\"2026-07-09T09:01:15Z\"}\n 70|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session for spt agent \\\"chert\\\" opened in spt-core repo (branch main), perch already live/reachable. Uncommitted repo state at session start…\",\"ts\":\"2026-07-09T09:01:51Z\"}\n 71|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes on `main` in `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.…\",\"ts\":\"2026-07-09T09:02:23Z\"}\n...\n 79|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch) but no task work occurred — transcript is only session-start boilerplate (perch activation, caveman-mode hook, agent-picker prompt). Uncommit…\",\"ts\":\"2026-07-09T09:05:59Z\"}\n*80|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) with an already-live perch as agent \\\"chert\\\" on host HFENDULEAM. No user prompt or task content was present in the transcript tail — session s…\",\"ts\":\"2026-07-09T09:06:21Z\"}\n 81|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session began on branch `main` with uncommitted changes present: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.r…\",\"ts\":\"2026-07-09T09:06:46Z\"}\n 82|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt-core just started (2026-07-09). No task work occurred — session is empty aside from init/hooks. Repo has uncommitted changes at session start: modified CONTEXT.md, cr…\",\"ts\":\"2026-07-09T09:07:09Z\"}\n 83|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch `main` with pre-existing uncommitted changes (CONTEXT.md, crates/spt-daemon/{broker,lib,nethost,pump/mod,sync}.rs modifie…\",\"ts\":\"2026-07-09T09:07:29Z\"}\n*84|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. spt-core repo at HFENDULEAM host, agent id \\\"chert\\\" on live perch. Uncommitted state at session start: modified CONTEXT.md, crates/spt-daemon/s…\",\"ts\":\"2026-07-09T09:07:49Z\"}\n 85|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core, branch main, agent id \\\"chert\\\". No task work occurred in this session tail — it consists only of SessionStart hook boilerplate (caveman-mode activation, li…\",\"ts\":\"2026-07-09T09:08:10Z\"}\n 86|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Repo state at session open: uncommitted changes in CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.rs}; untrack…\",\"ts\":\"2026-07-09T09:09:25Z\"}\n 87|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened in spt-core (main branch) with no substantive work performed — transcript is only SessionStart hook boilerplate (caveman-mode load, live-perch setup for agent \\\"chert\\\")…\",\"ts\":\"2026-07-09T09:09:51Z\"}\n...\n 108|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) but no task work occurred — transcript is only session-start hook boilerplate (caveman-mode activation, live-perch/agent id \\\"chert\\\" setup, ag…\",\"ts\":\"2026-07-09T09:17:44Z\"}\n*109|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) as live agent \\\"chert\\\" on host HFENDULEAM. No task work occurred — session consists only of startup hooks (caveman-mode activation, live-perch…\",\"ts\":\"2026-07-09T09:18:16Z\"}\n 110|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" in spt-core repo started but no substantive work occurred — transcript is only session-start boilerplate (caveman-mode hook, live-perch instructions, ag…\",\"ts\":\"2026-07-09T09:19:11Z\"}\n 111|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work done. Session opened on branch `main` with uncommitted changes present at start: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,net…\",\"ts\":\"2026-07-09T09:19:36Z\"}\n 112|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session — transcript is only SessionStart hook boilerplate (caveman-mode load, spt-live-auto-pick agent picker, active-perch instructions). Repo working tr…\",\"ts\":\"2026-07-09T09:20:00Z\"}\n...\n 146|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session started fresh on spt-core, main branch. No task work occurred — session opened, hooks fired (caveman mode active, live-agent perch \\\"chert\\\" established), then ended without fu…\",\"ts\":\"2026-07-09T09:33:40Z\"}\n*147|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Agent id \\\"chert\\\" on host HFENDULEAM, spt-core repo, main branch. Session ended before any task began; no decisions, no file changes beyond pre…\",\"ts\":\"2026-07-09T09:34:00Z\"}\n 148|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch main with pre-existing uncommitted changes (CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sy…\",\"ts\":\"2026-07-09T09:34:37Z\"}\n 149|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Repo has uncommitted changes: modified CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; new untracked crates/sp…\",\"ts\":\"2026-07-09T09:35:01Z\"}\n 150|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.r…\",\"ts\":\"2026-07-09T09:35:31Z\"}\n...\n 159|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Repo state at session start (uncommitted): modified CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untra…\",\"ts\":\"2026-07-09T10:03:18Z\"}\n*160|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Session ID 4bc2e259-0e4a-4331-be30-6e6b8230bf2a, agent \\\"chert\\\" @ HFENDULEAM, spt-core repo, branch main. Uncommitted git status at sessio…\",\"ts\":\"2026-07-09T10:03:57Z\"}\n 161|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session belongs to spt agent \\\"chert\\\" in spt-core repo (branch main). Repo has uncommitted changes at session start: modified CONTEXT.md, c…\",\"ts\":\"2026-07-09T10:05:03Z\"}\n 162|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.r…\",\"ts\":\"2026-07-09T10:23:09Z\"}\n*163|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch), agent perch \\\"chert\\\" on host HFENDULEAM. No task work occurred in this session — it consists only of session-start hook boilerplate (caveman-…\",\"ts\":\"2026-07-09T10:24:31Z\"}\n 164|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred. Session opened on spt-core (branch main), agent id \\\"chert\\\", ended before any prompt/instruction was given. Working tree at session start had uncommitted change…\",\"ts\":\"2026-07-09T10:38:10Z\"}\n 165|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Repo state at start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untracked cra…\",\"ts\":\"2026-07-09T10:38:49Z\"}\n 166|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Working tree at session start had uncommitted modifications to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod…\",\"ts\":\"2026-07-09T10:39:50Z\"}\n\n## deployah/\n### digest.log\n 75|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> PC crashed mid-session on spt-core release drive. PR#67 (SaberMage/spt-core) = 0.30.1 patch bump, pure bugfix, doyle GATER-APPROVED just before crash: base=main w/ b4862f3, CHANGELOG…\",\"ts\":\"2026-07-09T08:14:35Z\"}\n*76|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release resume after PC/hfenduleam runner crash mid-run. State at crash: PR #67 merged (`ae82332`, \\\"release v0.30.1 — PUMP-TRUTH W1 reply-read poison fix (counter 52)\\\"), tag …\",\"ts\":\"2026-07-09T08:15:43Z\"}\n 77|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 (counter 52) release in progress on main @ae82332 (PR #67 merged: PUMP-TRUTH W1 reply-read poison fix). Tag pushed, GitHub Actions release run `29002964275` triggered ~20min …\",\"ts\":\"2026-07-09T08:16:36Z\"}\n*78|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release resume after PC/runner crash (deployah, hfenduleam runner). State at cutoff: - PR #67 merged to main @ae82332 (\\\"Merge PR #67: release v0.30.1 — PUMP-TRUTH W1 reply-re…\",\"ts\":\"2026-07-09T08:17:11Z\"}\n 79|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 released — counter 52, tag @ae82332, published on SaberMage/spt-releases. Verified: isDraft=false, isPrerelease=false, Latest, all assets present (3 binaries, 3 .release.json…\",\"ts\":\"2026-07-09T08:23:31Z\"}\n 80|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release PUBLISHED, counter 52, tag @ae82332. Ships PUMP-TRUTH W1 fix (peer-pump reply-read poison, propagate.rs:373-375, PR#66 @b4862f3) — connect-then-silent peer no longer …\",\"ts\":\"2026-07-09T08:24:30Z\"}\n 81|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: cut release v0.30.2 (PUMP-TRUTH W2, REQ-PUMP-PEER-ISOLATION), counter 53. Status: PR #69 open (release/v0.30.2 @d63a634, off origin/main @8f83b9d), CI running (n1-gate + test o…\",\"ts\":\"2026-07-09T09:55:20Z\"}\n...\n 92|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.2 (counter 53, PUMP-TRUTH W2, @2c05dc9) shipped SOLO by deployah — flip confirmed, memory updated (v0302-published.md + MEMORY.md index/ledger entries). Counter 54 HELD, bundle…\",\"ts\":\"2026-07-09T11:02:42Z\"}\n*93|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Deployah session, spt-core repo, HFENDULEAM box. **Task:** release-driver role, publishing counters. **Status v0.30.2 (counter 53):** SHIPPED SOLO, verified live — flip confirmed, PU…\",\"ts\":\"2026-07-09T11:03:54Z\"}\n 94|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:46:39Z\"}\n*95|{\"context_kind\":\"echo_mirror\",\"body\":\"v0.30.2 counter 53 SHIPPED SOLO, verified. Counter 54 HELD, waiting doyle GO on F-035 re-RCA. Standing by, idle. <project-context> Deployah, spt-core repo, HFENDULEAM box. **v0.30.2 (counter 53):** SH…\",\"ts\":\"2026-07-09T11:47:11Z\"}\n 96|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T12:23:33Z\"}\n 97|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> spt-core repo. deployah = release-driver role, session ended via checkpoint self-clear (no user turn, agent wrote checkpoint commune then cleared). Status: HOLDING for doyle's GO on …\",\"ts\":\"2026-07-09T12:23:52Z\"}\n 98|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah, spt-core repo. Release-driver task: HOLDING for counter 54 (v0.30.3 patch, bundles gateway-liveness #70 @9079198 MERGED + F-035 fix). doyle gates GO; F-035 re-opened 2026-0…\",\"ts\":\"2026-07-09T12:24:31Z\"}\n...\n 117|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T20:48:28Z\"}\n*118|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah (spt-core release driver, HFENDULEAM box). Session resumed from checkpoint, PR#69/PR#72 context. Standing by for doyle GO on counter 54 (=v0.30.3 patch). No action taken — 3…\",\"ts\":\"2026-07-09T20:48:58Z\"}\n 119|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T21:41:55Z\"}\n 120|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 release (counter 55, update-wedge round-2) drove to PR #73 by deployah. - Fix branch `uwedge2-resume-viewer` tip 7782bda (fb499db fix REQ-BRAIN-RESUME-NO-CONTROL-STEAL + doc …\",\"ts\":\"2026-07-09T21:45:21Z\"}\n 121|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 release drive, deployah agent, repo spt-core, worktree `.worktrees/rel-0.30.4`, branch `release/v0.30.4` (PR #73). **Status:** - doyle GATE PASS'd UPDATE-WEDGE round-2 (resum…\",\"ts\":\"2026-07-09T21:59:53Z\"}\n...\n 145|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release HOLD — PR #74, branch release/v0.30.5, based on fix-tip 03c71093 (branch uw…). Doyle GATE PASS'd deadlock fix; deployah cut release, CI n1-gate ×2 + trac…\",\"ts\":\"2026-07-10T01:16:26Z\"}\n*146|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## v0.30.5 (counter 56) release HELD — hfenduleam CI runner live-wedged PR #74 (branch uw3, fix-tip 03c71093), gate-passed by doyle for the SharedSend deadlock fix. deployah opened r…\",\"ts\":\"2026-07-10T01:17:26Z\"}\n 147|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release, PR #74, branch `release/v0.30.5` (fix-tip `03c71093`, worktree `.worktrees/rel-0.30.5`). Fix targets the SharedSend deadlock (doyle's PTY-froze incident…\",\"ts\":\"2026-07-10T01:40:21Z\"}\n 148|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T01:46:30Z\"}\n 149|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release, PR #74, branch `release/v0.30.5` (fix-tip `03c71093`, worktree `.worktrees/rel-0.30.5`). Fix targets SharedSend deadlock (doyle's PTY-froze incident). G…\",\"ts\":\"2026-07-10T01:47:08Z\"}\n...\n 154|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 release (counter 56) — merged + tagged, publish HELD. State: - PR #74 merged → origin/main @0a306c9 (v0.30.5). - Tag v0.30.5 @0a306c9 pushed → release.yml run 29063765059 bui…\",\"ts\":\"2026-07-10T02:07:15Z\"}\n*155|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — merged + tagged @0a306c9 on PR #74 (origin/main). CI green both legs (Linux kitsubito, Windows hfenduleam), n1-gate ×2, traceability. Round-3 fix for update-wedg…\",\"ts\":\"2026-07-10T02:07:46Z\"}\n 156|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.5 release (round-3 update-wedge fix, IPC read-loop starvation isolation). Session ended mid-watch of release build. State: - PR #74 merged → origin/main @0a306c9 (v0.30.5…\",\"ts\":\"2026-07-10T02:08:41Z\"}\n 157|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — DRAFT CUT, PUBLISH HELD for operator field-verify. Counter 56 UNCLAIMED. Fix: update-wedge ROUND-3. Root cause = SharedSend brain-conn self-deadlock — daemon res…\",\"ts\":\"2026-07-10T02:21:52Z\"}\n 158|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — DRAFT CUT, PUBLISH HELD for operator field-verify. STATE: merged + tagged + draft assembled. release-publish HELD (B-discipline). Counter 56 UNCLAIMED. - Fix: up…\",\"ts\":\"2026-07-10T02:22:51Z\"}\n...\n 227|{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> Role: deployah — release driver for spt-core. Publishes via xtask release-publish; counter/version from published spt-releases metadata, not memory. Session ended without explicit signo…\",\"ts\":\"2026-07-10T13:03:04Z\"}\n*228|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened, hit rate limit immediately (resets 7:30am America/Los_Angeles) before any work done. No task attempted, no files touched. Inbound msg from cli@HFENDULEAM: MSG-IDENTIT…\",\"ts\":\"2026-07-10T13:33:29Z\"}\n*229|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on branch `triage/update-wedge-rca-trace` in spt-core. deployah received incoming spt message from cli@HFENDULEAM: MSG-IDENTITY milestone OPENED (PR #78, triage regist…\",\"ts\":\"2026-07-10T13:35:16Z\"}\n 230|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session did no work on spt-core repo itself. Branch: triage/update-wedge-rca-trace (uncommitted local changes present per git status: CONTEXT.md, spt-daemon files, traceable-reqs.tom…\",\"ts\":\"2026-07-10T19:13:19Z\"}\n 231|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone OPENED (PR #78) — doyle dispatched, deployah (this agent) acked standby. 6-wave messaging delivery-integrity + endpoint identity fix cluster; includes deployah…\",\"ts\":\"2026-07-10T19:13:54Z\"}\n 232|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster covering messaging delivery-integrity + endpoint identity, folds in deployah's two v0.30.6 handoffs (F-0…\",\"ts\":\"2026-07-10T19:14:55Z\"}\n...\n 234|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster, messaging delivery-integrity + endpoint identity. Folds in deployah's two v0.30.6 handoffs — F-038 mobi…\",\"ts\":\"2026-07-10T22:22:06Z\"}\n*235|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 open (deployah, HFENDULEAM box). Base main @a6ff501 (MSG-IDENTITY milestone tip, PRs #79-#84 merged). Bump-in-PR: Cargo.toml + Cargo.lock (first-party) + CHANG…\",\"ts\":\"2026-07-11T03:39:59Z\"}\n 236|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.31.0 release cut (MSG-IDENTITY milestone, counter 58). Session ended mid-CI-watch, no signoff. Status: - Bump commit 97a0e4f pushed to release/v0.31.0 (Cargo.toml/Cargo.lock…\",\"ts\":\"2026-07-11T03:41:49Z\"}\n 237|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 opened (SaberMage/spt-core), base main @a6ff501, head release/v0.31.0 @97a0e4f. Counter 58 (last published 57 = v0.30.6). Commit staged only Cargo.toml, Cargo.…\",\"ts\":\"2026-07-11T03:43:19Z\"}\n 238|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release: PR #85 merged @c9586d1, all CI jobs pass (n1-gate/test both runners, traceability; twohost skipped standard). Tag v0.31.0 pushed on merged main HEAD. Ping sent to do…\",\"ts\":\"2026-07-11T03:59:31Z\"}\n\n## doyle/\n### digest.log\n 741|{\"context_kind\":\"echo_mirror\",\"body\":\"LIFECYCLE-TRUTH complete. v0.29.0 (counter 49) SHIPPED + field-verified, box live. **Status:** - All 6 waves gated+blessed, released @d0c1cf1, CI gate-hold fixed @7190730. - W1 field-accept swap windo…\",\"ts\":\"2026-07-08T04:38:05Z\"}\n*742|{\"context_kind\":\"echo_mirror\",\"body\":\"# Diagnose task: librarian unreachable via `spt send` (PR #57, lifecycle-truth) **Status:** root cause found, converged, no fix applied yet. ## Findings - Repro: first `spt send` → `WAN_FAIL:librarian…\",\"ts\":\"2026-07-08T05:29:05Z\"}\n*743|{\"context_kind\":\"echo_mirror\",\"body\":\"# Delta: librarian WAN delivery stall (2026-07-08) **Task:** debug — remote node (librarian, on desktop DESKTOP-VHCFIBH) shows \\\"peer unresponsive\\\" for message delivery, on branch `lifecycle-truth`. **…\",\"ts\":\"2026-07-08T05:42:42Z\"}\n*744|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM, subnet BS-Resources delivery break ## Task Diagnose HFENDULEAM→DESKTOP delivery failure in BS-Resources subnet (2-node). ## Root found Asymmetric reachability, no…\",\"ts\":\"2026-07-08T05:49:32Z\"}\n*745|{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: HFENDULEAM↔DESKTOP subnet reachability bug (BS-Resources subnet) **Status:** unresolved. Ping works (LAN + Tailscale, both Private profile). Firewall ruled out — `spt-core inbound UDP` rule A…\",\"ts\":\"2026-07-08T05:56:46Z\"}\n*746|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM iroh reachability RCA (2026-07-08) **Task:** DESKTOP can't discover/reach HFENDULEAM's spt daemon over the shared LAN subnet (all in `SPT_DEV`/`BIGNET`/`BS-Resources` subn…\",\"ts\":\"2026-07-08T05:59:43Z\"}\n*747|{\"context_kind\":\"echo_mirror\",\"body\":\"## librarian (HFENDULEAM) unreachable from DESKTOP — RCA in progress, fix pending **Status:** doyle diagnosing why `spt send librarian` from HFENDULEAM fails to reach DESKTOP-side node, post 0.28.0→0.…\",\"ts\":\"2026-07-08T06:01:23Z\"}\n*748|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM subnet-rejoin investigation (no signoff) ## Task Debugging why HFENDULEAM (machine, agent doyle) can't rejoin subnet `BS-Resources` after operator ran `spt subnet leave BS…\",\"ts\":\"2026-07-08T06:12:20Z\"}\n*749|{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n*750|{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n 751|{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n*752|{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n*753|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n*754|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session Delta — doyle @ HFENDULEAM (spt-core/, lifecycle-truth branch) **Task:** Answered perri's question (adapter builder, spt-mobile/claude-spt digest fetcher, strategy=fetcher) about spt-core's…\",\"ts\":\"2026-07-08T09:29:33Z\"}\n 755|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T09:46:34Z\"}\n 756|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle session — v0.29.0 + inject-truncation diagnose ## Status v0.29.0 shipped, checkpoint written to `.claude/doyle-commune.md`. Session interrupted mid-diagnose. ## Shipped this session v0.29.0 (L…\",\"ts\":\"2026-07-08T09:47:12Z\"}\n 757|{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 SHIPPED — release counter 49, LIFECYCLE-TRUTH Solo cut (doyle, deployah parked). Bump @a74e526 → CI gate-hold #1 fix @7190730 (n1-gate stderr escape + traceability `check --json` parse) → P…\",\"ts\":\"2026-07-08T09:54:33Z\"}\n...\n 764|{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 SHIPPED — counter 49, LIFECYCLE-TRUTH doyle drove whole cut solo. Bump @a74e526 → CI gate-hold fixed @7190730 (n1-gate stderr-observation escape + traceability parse gate) → PR#57 merge @d0…\",\"ts\":\"2026-07-08T10:18:51Z\"}\n*765|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle @ HFENDULEAM — commune delta (2026-07-08) ## Shipped this session v0.29.0 (counter 49, LIFECYCLE-TRUTH) published, solo drive @d0c1cf1. CHANGELOG corrected @8aac39b. Full detail in memory `[[v…\",\"ts\":\"2026-07-08T10:26:18Z\"}\n 766|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-08T10:29:16Z\"}\n 767|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-08T10:29:16Z\"}\n 768|{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 shipped, W2 diagnose interrupted mid-read **Ship: v0.29.0 = counter 49 (LIFECYCLE-TRUTH)**, doyle solo drive. Bump→gate-hold fix→PR#57 merge@d0c1cf1→tag→sign→publish. CHANGELOG corrected@8a…\",\"ts\":\"2026-07-08T10:41:59Z\"}\n...\n 782|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle session delta — 2026-07-08 **Shipped:** v0.29.0 (LIFECYCLE-TRUTH, counter 49) published solo, then CHANGELOG corrected @8aac39b. Full detail already in memory (`[[v0290-published]]`), commune …\",\"ts\":\"2026-07-08T11:42:28Z\"}\n*783|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM (spt-core/, session aed3e074, interrupted) **Task active:** /diagnose PTY inject head-truncation on 0.29.0. Repeat of REQ-INJECT-MULTILINE-INTEGRITY, NOT fixed by …\",\"ts\":\"2026-07-08T11:52:02Z\"}\n 784|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session state: doyle, spt-core, session interrupted mid-diagnose **Shipped this session:** v0.29.0 (counter 49, LIFECYCLE-TRUTH) — PR#57 merged @d0c1cf1, tagged, doyle-signed, published. CHANGELOG …\",\"ts\":\"2026-07-08T16:54:19Z\"}\n 785|{\"context_kind\":\"echo_mirror\",\"body\":\"**v0.29.0 shipped, counter 49.** doyle solo drive, deployah parked. Commune saved to `.claude\\\\doyle-commune.md` before interrupt. **Open thread 1 — BS-Resources subnet gone.** Operator drained during …\",\"ts\":\"2026-07-08T16:55:28Z\"}\n*786|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM (spt-core, lifecycle-truth branch) **v0.29.0 SHIPPED** (release counter 49, LIFECYCLE-TRUTH). Doyle drove solo: bump @a74e526 → CI gate-hold #1 fixed @7190730 (n1…\",\"ts\":\"2026-07-08T16:56:41Z\"}\n*787|{\"context_kind\":\"echo_mirror\",\"body\":\"# Session delta — doyle @ HFENDULEAM, spt-core **Box state:** on v0.29.1 now per repo (release/0.29.1 branch, latest commit `6d97dc2` = published counter 50). Session transcript itself was mid-work on…\",\"ts\":\"2026-07-08T17:11:32Z\"}\n 788|{\"context_kind\":\"echo_mirror\",\"body\":\"# spt-core session delta — doyle, 2026-07-08 ## Shipped this session v0.29.0 published (release counter 49, LIFECYCLE-TRUTH milestone). Solo drive by doyle: bump @a74e526 → CI gate-hold fixed @7190730…\",\"ts\":\"2026-07-08T17:14:58Z\"}\n*789|{\"context_kind\":\"echo_mirror\",\"body\":\"# Session Delta — doyle @ HFENDULEAM ## Status: v0.29.0 SHIPPED, active /diagnose in progress (interrupted mid-Phase-1) **Shipped this session:** v0.29.0 (release counter 49, LIFECYCLE-TRUTH milestone…\",\"ts\":\"2026-07-08T17:17:24Z\"}\n 790|{\"context_kind\":\"echo_mirror\",\"body\":\"v0.29.0 shipped, counter 49, doyle solo. Checkpoint written to `.claude\\\\doyle-commune.md`. **Now: active /diagnose, PTY inject head-truncation STILL on 0.29.0.** **Evidence:** perri screenshot shows i…\",\"ts\":\"2026-07-08T17:18:27Z\"}\n 791|{\"context_kind\":\"echo_mirror\",\"body\":\"**Task:** doyle diagnosing PTY inject head-truncation still happening on 0.29.0, despite W5 REQ-INJECT-MULTILINE-INTEGRITY fix (settle-gate + echo-verify). **Status:** checkpoint saved to `.claude/doy…\",\"ts\":\"2026-07-08T17:19:21Z\"}\n*792|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle @ HFENDULEAM — commune delta **Shipped this session:** v0.29.1 has already been released as a separate patch (per gitStatus/HEAD @6d97dc2 — inject settle-gate re-arm fix, merged/tagged before …\",\"ts\":\"2026-07-08T17:19:50Z\"}\n 793|{\"context_kind\":\"echo_mirror\",\"body\":\"**Session end mid-diagnose. v0.29.0 shipped, /diagnose active on inject truncation recurrence.** ## Shipped v0.29.0 (LIFECYCLE-TRUTH, counter 49) published solo by doyle. CHANGELOG corrected @8aac39b.…\",\"ts\":\"2026-07-08T17:28:09Z\"}\n 794|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-08T17:31:41Z\"}\n 795|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-08T17:31:41Z\"}\n...\n 816|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, counter 49, doyle solo drive. Full detail already in memory [[v0290-published]] + [[lifecycle-truth-build-progress]] — no new project facts to add there. Session spl…\",\"ts\":\"2026-07-08T23:30:26Z\"}\n*817|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, doyle solo drove full cut. Details in [[v0290-published]] + [[lifecycle-truth-build-progress]]. Open thread 1 — BS-Resources subnet gone. Root cause: HFENDULEAM's re…\",\"ts\":\"2026-07-08T23:39:56Z\"}\n 818|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T23:41:35Z\"}\n 819|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, counter 49, LIFECYCLE-TRUTH. Solo doyle drive. CHANGELOG corrected @8aac39b post-field-review. Full detail: [[v0290-published]], [[lifecycle-truth-build-progress]]. …\",\"ts\":\"2026-07-08T23:41:47Z\"}\n 820|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session interrupted mid-/diagnose, checkpoint already saved to `.claude\\\\doyle-commune.md`. **Task 1 (DONE this session):** shipped v0.29.0 (release counter 49, LIFECYCLE-TRUTH). doyl…\",\"ts\":\"2026-07-08T23:42:30Z\"}\n...\n 865|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 (LIFECYCLE-TRUTH, counter 49) SHIPPED @d0c1cf1, PR#57. doyle drove solo. Checkpoint file written this session: `.claude/doyle-commune.md`. Two open threads at cutoff: **Threa…\",\"ts\":\"2026-07-09T03:47:27Z\"}\n*866|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> doyle @ spt-core, HFENDULEAM box. Session interrupted mid-/diagnose Phase 1. **Shipped this session:** v0.29.0 = release counter 49 (LIFECYCLE-TRUTH). doyle solo drove cut: bump @a74…\",\"ts\":\"2026-07-09T04:01:24Z\"}\n 867|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session interrupted mid-/diagnose, doyle (gater), spt-core, branch lifecycle-truth. **v0.29.0 shipped this session** (counter 49, LIFECYCLE-TRUTH). Solo drive by doyle: bump @a74e526…\",\"ts\":\"2026-07-09T04:06:11Z\"}\n 868|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-09T04:11:26Z\"}\n 869|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-09T04:11:27Z\"}\n\n### nested/doyle-psyche/\n#### UPDATE-WEDGE-2-SME-RCA-ROUND3.md\n 7|\n*8|**Failure B (IPC saturation on respawn)** — NOT fixed. This is what actually wedged HFENDULEAM on v0.30.4.\n 9|\n 10|On brain swap, the single brain↔broker IPC connection was saturated by concurrent:\n 11|- 4-session Viewer resume-replay drain\n\n#### .claude/\n##### doyle-commune.md\n 2|<project-context>\n*3|Session idle-only, no active work performed. Read `project_v0304_wedge_rca.md` memory (v0.30.4/v0.30.5 HFENDULEAM wedge RCA — full context already captured there, unchanged by this session). Last incoming event before idle: msg from \"hertz\" reporting capture completed, CAPTURE_DIR=`C:\\Users\\decid\\AppData\\Local\\spt-core\\rca-capture-20260709-215646`, signed v0.30.5/counter56 fetched, applied, brain generation1 — message was truncated in transcript, content not fully read/processed this session. Session...\n 4|\n 5|Open threads unchanged from prior memory: round-3b field-verify concluded resume-path theory was wrong (4 fix rounds chased wrong root cause); next round must target old-brain-conn-release / steady-state jam instead. Publish/flip of v0.30.5 still on HOLD pending operator field-verify. Pre-update spontaneous-wedge lead still untriaged.\n 6|\n\n#### docs/\n##### UPDATE-WEDGE-2-RCA.md\n 14|\n*15|**Status: field-verify FAILED.** v0.30.4 wedged HFENDULEAM in the field despite passing gate.\n 16|\n 17|Log evidence (gen-1 brain log):\n 18|```\n\n## flynn/\n### digest.log\n 33|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T03:22:01Z\"}\n*34|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — flynn / spt-mobile session end ## Task: voice-message-not-sending investigation (v1.0.5) User reported 3 failed attempts to send voice message. SSH'd to `decid@enlyzeam`, used adb to…\",\"ts\":\"2026-07-08T04:50:18Z\"}\n 35|{\"context_kind\":\"echo_mirror\",\"body\":\"Note: system-reminders in transcript (caveman mode, agent-picker prompt) are environment noise, not user content — ignored for this summary per instructions to flag suspicious injected content. ## Voi…\",\"ts\":\"2026-07-08T05:30:36Z\"}\n 36|{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: fix voice redial-on-stale-handle bug (v1.0.6), install to test device **Status:** Fix built, tested, committed. Install blocked — device offline. **Root cause found (adb diag):** mobile-gw ho…\",\"ts\":\"2026-07-08T06:00:07Z\"}\n 37|{\"context_kind\":\"echo_mirror\",\"body\":\"## Context delta — flynn @ spt-mobile **Task:** fix stale-handle voice redial (v1.0.6, commit `903bc90` — force host redial on stale-handle drain failure). **Status:** - v1.0.6 (versionCode 7) built, …\",\"ts\":\"2026-07-08T06:15:36Z\"}\n...\n 47|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session end state — v1.0.6 shipped + released **Two bugs closed:** 1. Digest double-vision — root cause spt-core cross-gen snapshot union, fixed upstream @7e37e37 (spt 0.29.0), verified 0 collision…\",\"ts\":\"2026-07-08T08:05:20Z\"}\n*48|{\"context_kind\":\"echo_mirror\",\"body\":\"# Session delta — 2026-07-08, flynn @ HFENDULEAM (spt-mobile) ## Status: checkpoint, session ended clean Two bugs closed, one release shipped this session: 1. **Digest double-vision** — root cause: sp…\",\"ts\":\"2026-07-08T10:31:10Z\"}\n 49|{\"context_kind\":\"echo_mirror\",\"body\":\"Session ended v1.0.6 shipped, checkpoint written, /clear queued — no further user input after clear. ## Status: two bugs closed, release cut, checkpoint done **Digest double-vision**: root-caused spt-…\",\"ts\":\"2026-07-08T11:22:44Z\"}\n 50|{\"context_kind\":\"echo_mirror\",\"body\":\"v1.0.6 shipped + released. Session ended clean w/ checkpoint. ## Status - Digest double-vision: root cause upstream (spt-core gen-union), fixed core-side @7e37e37, shipped spt 0.29.0. Verified 0 cross…\",\"ts\":\"2026-07-08T11:52:36Z\"}\n 51|{\"context_kind\":\"echo_mirror\",\"body\":\"v1.0.6 shipped, released, verified. Two bugs closed. **Digest double-vision**: root cause spt-core cross-gen snapshot union on resume. Fixed upstream @7e37e37, shipped spt 0.29.0, verified 0 collision…\",\"ts\":\"2026-07-08T12:24:42Z\"}\n...\n 66|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> **Task: mobile-gw endpoint stuck Suspended after PC crash — spt-core bug identified, escalated to doyle.** Status: gateway DOWN. Root cause confirmed: spt-core 0.30.0 `spt endpoint w…\",\"ts\":\"2026-07-09T09:07:42Z\"}\n*67|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: mobile-gw endpoint stuck Suspended after PC crash on host HFENDULEAM; `spt endpoint run --id mobile-gw` cannot bring gateway up. Root cause found (behavioral, no spt-core inter…\",\"ts\":\"2026-07-09T09:08:10Z\"}\n 68|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> mobile-gw endpoint down since PC crash (2026-07-09). Root cause found: spt-core 0.30.0 `wake` bug — reports `Suspended -> Active` success but write never persists; `suspend`/`list`/a…\",\"ts\":\"2026-07-09T09:09:41Z\"}\n 69|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> RCA session, mobile-gw perch stuck Suspended after PC-crash. No code files touched, all diagnostic via `spt` CLI + doyle comms. **Chain confirmed with doyle (2026-07-09):** 1. PC cra…\",\"ts\":\"2026-07-09T09:18:18Z\"}\n 70|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> RCA investigation: mobile-gw perch stuck self-suspending after PC crash killed host process. **Root cause chain established (agreed w/ doyle):** 1. Crash killed host → perch went col…\",\"ts\":\"2026-07-09T09:19:28Z\"}\n...\n 103|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify spt-core update readiness for box (currently v0.30.2, running flynn + lia live agents), part of #70 mobile-gw 2-check verify sequence (reader-parity + rest_state). Statu…\",\"ts\":\"2026-07-09T23:17:53Z\"}\n*104|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> **Task:** Verify gateway cold-bringup fix (DEFECT A: rest_state not carrying through suspend/resume/re-bind cycle for mobile-gw endpoint) on live HFENDULEAM box. See [[gateway-cold-b…\",\"ts\":\"2026-07-09T23:23:58Z\"}\n 105|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify DEFECT A fix (rest_state-carry, core reader-parity fix) on gateway cold-bringup liveness bug — mobile-gw host previously died ~3s after cold re-bind because `--json` sta…\",\"ts\":\"2026-07-09T23:24:44Z\"}\n*106|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify #70 fix — mobile-gw cold-bringup liveness / rest_state suspend-honor defect. Testing on HFENDULEAM (operator's own box, same box as doyle's session — not a separate 0.30…\",\"ts\":\"2026-07-09T23:25:38Z\"}\n 107|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T23:28:05Z\"}\n*108|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (spt-mobile) RESOLVED and field-verified 2026-07-09 on this box (HFENDULEAM, spt 0.30.4, contains PR #70 via v0.30.3): spt-core `--json` status read…\",\"ts\":\"2026-07-09T23:28:26Z\"}\n 109|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list` and `--json` both ONLINE/Active across 3 subnets, host survived…\",\"ts\":\"2026-07-09T23:28:58Z\"}\n 110|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: both checks PASS on spt 0.30.4 (contains #70 via 0.30.3). Reader-parity — human `endpoint list` and `--json` both report mob…\",\"ts\":\"2026-07-09T23:29:30Z\"}\n 111|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list` and `--json` both ONLINE/Active across 3 subnets, host survived…\",\"ts\":\"2026-07-09T23:30:03Z\"}\n...\n 125|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness RCA closed 2026-07-09. #70 field-verify: both PASS on spt 0.30.4 (reader-parity + DEFECT A rest_state-carry). doyle accepted, RCA closed field-side, zero spt-mobile …\",\"ts\":\"2026-07-09T23:39:32Z\"}\n*126|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed for spt-mobile (HFENDULEAM box). **Resolved:** #70 field-verify passed on spt 0.30.4 (contains #70 via v0.30.3). Reader-parity: human `endpoint list` and …\",\"ts\":\"2026-07-09T23:40:26Z\"}\n 127|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: both PASS on spt 0.30.4 (reader-parity + rest_state-carry DEFECT A). doyle accepted, RCA closed, zero spt-mobile changes nee…\",\"ts\":\"2026-07-09T23:41:09Z\"}\n 128|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (mobile-gw self-suspend after cold boot) closed end-to-end. Root cause: spt-core's `endpoint list --json` reader dropped the pid-fallback that the h…\",\"ts\":\"2026-07-09T23:42:10Z\"}\n 129|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: BOTH checks PASS on spt 0.30.4 (contains #70 via v0.30.3) — reader-parity (human `endpoint list` and `--json` both ONLINE/Ac…\",\"ts\":\"2026-07-09T23:42:43Z\"}\n...\n 133|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session closed the mobile-gw cold-bringup-liveness arc. #70 field-verify PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity confirmed (human `endpoint list` and `--json` bo…\",\"ts\":\"2026-07-09T23:45:19Z\"}\n*134|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09 on spt-mobile perch (node HFENDULEAM). #70 field-verify: both PASS on spt 0.30.4 (contains #70 via v0.30.3) — reader-parity (human `endpoint li…\",\"ts\":\"2026-07-09T23:45:56Z\"}\n 135|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4 (contains #70 via 0.30.3): reader-parity (human `endpoint list` vs `--json` both ONLINE/Active across…\",\"ts\":\"2026-07-09T23:46:29Z\"}\n 136|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list`==`--json` Active, mobile-gw host survived 120s suspend-honor so…\",\"ts\":\"2026-07-09T23:47:37Z\"}\n 137|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-cold-bringup-liveness arc CLOSED 2026-07-09. #70 field-verify both PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` == `--json` status, ONL…\",\"ts\":\"2026-07-09T23:48:22Z\"}\n...\n 156|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (mobile-gw self-suspend on cold boot) RESOLVED. Root cause: spt-core `--json` endpoint status reader dropped pid-fallback that human `endpoint list`…\",\"ts\":\"2026-07-10T00:04:21Z\"}\n*157|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> STATUS 2026-07-09 (end of gateway-liveness arc, spt-mobile perch on node HFENDULEAM): CLOSED this session: - #70 gateway-liveness field-verify: BOTH PASS on spt 0.30.4 (contains #70 …\",\"ts\":\"2026-07-10T00:04:53Z\"}\n 158|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify PASSED on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` and `--json` agree ONLINE/Active across…\",\"ts\":\"2026-07-10T00:05:27Z\"}\n 159|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug RESOLVED. RCA closed with doyle this session. - Root cause was spt-core `--json` status reader dropping pid-fallback, causing suspend-honor to self-…\",\"ts\":\"2026-07-10T00:06:20Z\"}\n 160|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify both checks PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` and `--json` both ONLINE/Acti…\",\"ts\":\"2026-07-10T00:47:35Z\"}\n...\n 169|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:24:34Z\"}\n*170|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened, no work performed. User immediately ran /exit before any task was given. </project-context> <live-context> Agent identity: flynn, spt-mobile perch on node HFENDULEAM.…\",\"ts\":\"2026-07-10T04:25:06Z\"}\n 171|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:25:21Z\"}\n 172|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness arc CLOSED 2026-07-09 (PR #70, v0.30.3, field-verify PASSED both cases, zero spt-mobile code changes). Memory already reflects this. Session received 4x…\",\"ts\":\"2026-07-10T04:25:53Z\"}\n 173|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness arc CLOSED 2026-07-09 (spt-core PR #70, v0.30.3, this box now on 0.30.4). Root cause was spt-core-side: `--json` reader dropped pid-fallback, causing ho…\",\"ts\":\"2026-07-10T04:27:12Z\"}\n\n## lia/\n### digest.log\n 103|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session role: lia forwarding bug reports/messages for user Reavo between spt endpoints (omp-pilot, hertz). Task/status this session: - Relayed 2 bug reports from Reavo to omp-pilot (…\",\"ts\":\"2026-07-10T04:18:41Z\"}\n*104|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bug reports and check agent reachability via spt from lia (liaison, project dir `liaison/`). Forwarded to omp-pilot (2 bug reports, both delivered SENT(WAN) to live agent…\",\"ts\":\"2026-07-10T04:19:11Z\"}\n 105|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-relay, no signoff. Task: lia (SPT liaison agent for user Reavo) relaying bug reports + build request to omp-pilot re: omp-spt tool. Bugs relayed to omp-pilot (both …\",\"ts\":\"2026-07-10T04:19:37Z\"}\n 106|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying omp-spt bug reports (Reavo → omp-pilot) and requesting build/release. Status: both bugs relayed to omp-pilot; omp-pilot confirmed live/responsive; lia relayed Reav…\",\"ts\":\"2026-07-10T04:20:33Z\"}\n 107|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia forwarded two bug reports to omp-pilot (github-com-bigscreenvr-athenaeum project) — (1) new-endpoint path must surface harness PTY, (2) manifest `[update]` command must use…\",\"ts\":\"2026-07-10T04:30:12Z\"}\n\n[Showing lines 1-252 of 409 (49.8KB limit). Use :253 to continue. Some lines truncated to 512 chars]"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/owlery","searchPath":"C:/Users/decid/AppData/Local/spt-core/owlery","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":96,"fileCount":12,"files":["C:/Users/decid/AppData/Local/spt-core/owlery/chert/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/deployah/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/.claude/doyle-commune.md","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/UPDATE-WEDGE-2-SME-RCA-ROUND3.md","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/docs/UPDATE-WEDGE-2-RCA.md","C:/Users/decid/AppData/Local/spt-core/owlery/flynn/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/lia/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/mobile-gw/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/perri/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/scratch-c/digest.log","C:/Users/decid/AppData/Local/spt-core/owlery/todlando/digest.log"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/chert/digest.log","count":11},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/deployah/digest.log","count":10},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","count":20},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/.claude/doyle-commune.md","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/UPDATE-WEDGE-2-SME-RCA-ROUND3.md","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/docs/UPDATE-WEDGE-2-RCA.md","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/flynn/digest.log","count":10},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/lia/digest.log","count":4},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/mobile-gw/digest.log","count":3},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/perri/digest.log","count":6},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/scratch-c/digest.log","count":9},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/todlando/digest.log","count":20}],"truncated":true,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/owlery/\n\n## chert/\n### digest.log\n   4│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main), agent id \\\"chert\\\". Session start only — no task work performed, no tool calls made, no messages exchanged. Git status at session start showed…\",\"ts\":\"2026-07-09T08:30:47Z\"}\n  *5│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended before any task work began. Session start only: agent \\\"chert\\\" launched in spt-core repo (branch main), Windows/HFENDULEAM host, caveman-mode hook active (full level). U…\",\"ts\":\"2026-07-09T08:33:51Z\"}\n   6│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: modified files CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untracke…\",\"ts\":\"2026-07-09T08:34:14Z\"}\n   7│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work done this session. Session opened on branch `main` with pre-existing uncommitted changes: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump…\",\"ts\":\"2026-07-09T08:34:53Z\"}\n   8│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session had no user prompt and no work performed — only SessionStart hook fired (caveman-mode + spt live-perch context injection). No files touched beyond pre-existing git status (CO…\",\"ts\":\"2026-07-09T08:35:12Z\"}\n    │...\n  24│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main), agent id \\\"chert\\\", live perch already active. No task work occurred in this session tail — only SessionStart hook boilerplate fired (caveman-…\",\"ts\":\"2026-07-09T08:42:55Z\"}\n *25│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on spt-core opened at 2026-07-09T08:22:58Z on host HFENDULEAM, agent id \\\"chert\\\". No task content in transcript — session ended immediately after SessionStart hooks fired (age…\",\"ts\":\"2026-07-09T08:43:13Z\"}\n  26│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" on spt-core opened at 2026-07-09 with no substantive work performed — transcript tail is only session-start hook boilerplate (caveman-mode activation, l…\",\"ts\":\"2026-07-09T08:43:35Z\"}\n  27│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session started, no work performed. spt-core repo (harness-independent agent ecosystem core: messaging, live-agent lifecycle, terminal hosting, P2P networking). Working tree at sessi…\",\"ts\":\"2026-07-09T08:43:58Z\"}\n  28│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) with agent id \\\"chert\\\" but no substantive work occurred — transcript tail is only session-start bootstrap (caveman-mode hook, live-perch instr…\",\"ts\":\"2026-07-09T08:44:19Z\"}\n    │...\n  31│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened for spt agent \\\"chert\\\" in spt-core (main branch), but no work was performed — transcript tail contains only SessionStart hook boilerplate (caveman-mode activation, live…\",\"ts\":\"2026-07-09T08:45:25Z\"}\n *32│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Session opened on spt-core repo, live agent id \\\"chert\\\" (perch already active, host HFENDULEAM). Repo has uncommitted changes at session start: modi…\",\"ts\":\"2026-07-09T08:45:44Z\"}\n  33│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" on spt-core (main branch) contained only SessionStart hook activity — no user prompt or work was executed. No task in progress, no decisions made, no fi…\",\"ts\":\"2026-07-09T08:46:03Z\"}\n  34│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Agent identity \\\"chert\\\" initialized live perch on spt-core repo (main branch). Uncommitted changes present at session start (not made this sess…\",\"ts\":\"2026-07-09T08:46:24Z\"}\n  35│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred in this session — transcript is only SessionStart hook output (caveman-mode load, live-perch briefing for agent \\\"chert\\\"). No files touched, no decisions made, n…\",\"ts\":\"2026-07-09T08:46:41Z\"}\n    │...\n  52│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Live agent perch \\\"chert\\\" initialized in spt-core repo (C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core), branch main. Git status at session st…\",\"ts\":\"2026-07-09T08:53:30Z\"}\n *53│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Session opened on spt-core main branch (HFENDULEAM host, agent id \\\"chert\\\"), no task assigned yet. Working tree has uncommitted changes present at s…\",\"ts\":\"2026-07-09T08:53:54Z\"}\n  54│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task content, decisions, or work done. Session ended before any user prompt or work occurred (transcript tail contains only startup hooks/attachments). </proj…\",\"ts\":\"2026-07-09T08:54:14Z\"}\n  55│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task content in transcript tail — session only contains SessionStart hook init (caveman-mode load, spt live-perch context, agent-picker prompt) and bridge-status. No files touched…\",\"ts\":\"2026-07-09T08:54:31Z\"}\n  56│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch) with live perch id \\\"chert\\\". No task work occurred — transcript is only session-start hook output (caveman-mode activation, agent-picker promp…\",\"ts\":\"2026-07-09T08:54:57Z\"}\n    │...\n  67│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch `main`, spt-core repo, with pre-existing uncommitted changes present at session start (CONTEXT.md, crates/spt-daemon/src/…\",\"ts\":\"2026-07-09T09:00:26Z\"}\n *68│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed yet. Session bootstrapped as spt live agent \\\"chert\\\" on spt-core repo (HFENDULEAM host, branch main). Uncommitted working tree at session start:…\",\"ts\":\"2026-07-09T09:00:51Z\"}\n  69│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session opened on spt-core repo, branch main, with uncommitted changes present at start: modified CONTEXT.md, crates/spt-daemon/src/{broke…\",\"ts\":\"2026-07-09T09:01:15Z\"}\n  70│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session for spt agent \\\"chert\\\" opened in spt-core repo (branch main), perch already live/reachable. Uncommitted repo state at session start…\",\"ts\":\"2026-07-09T09:01:51Z\"}\n  71│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes on `main` in `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.…\",\"ts\":\"2026-07-09T09:02:23Z\"}\n    │...\n  79│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch) but no task work occurred — transcript is only session-start boilerplate (perch activation, caveman-mode hook, agent-picker prompt). Uncommit…\",\"ts\":\"2026-07-09T09:05:59Z\"}\n *80│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) with an already-live perch as agent \\\"chert\\\" on host HFENDULEAM. No user prompt or task content was present in the transcript tail — session s…\",\"ts\":\"2026-07-09T09:06:21Z\"}\n  81│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session began on branch `main` with uncommitted changes present: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.r…\",\"ts\":\"2026-07-09T09:06:46Z\"}\n  82│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt-core just started (2026-07-09). No task work occurred — session is empty aside from init/hooks. Repo has uncommitted changes at session start: modified CONTEXT.md, cr…\",\"ts\":\"2026-07-09T09:07:09Z\"}\n  83│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch `main` with pre-existing uncommitted changes (CONTEXT.md, crates/spt-daemon/{broker,lib,nethost,pump/mod,sync}.rs modifie…\",\"ts\":\"2026-07-09T09:07:29Z\"}\n *84│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. spt-core repo at HFENDULEAM host, agent id \\\"chert\\\" on live perch. Uncommitted state at session start: modified CONTEXT.md, crates/spt-daemon/s…\",\"ts\":\"2026-07-09T09:07:49Z\"}\n  85│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core, branch main, agent id \\\"chert\\\". No task work occurred in this session tail — it consists only of SessionStart hook boilerplate (caveman-mode activation, li…\",\"ts\":\"2026-07-09T09:08:10Z\"}\n  86│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Repo state at session open: uncommitted changes in CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.rs}; untrack…\",\"ts\":\"2026-07-09T09:09:25Z\"}\n  87│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened in spt-core (main branch) with no substantive work performed — transcript is only SessionStart hook boilerplate (caveman-mode load, live-perch setup for agent \\\"chert\\\")…\",\"ts\":\"2026-07-09T09:09:51Z\"}\n    │...\n 108│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) but no task work occurred — transcript is only session-start hook boilerplate (caveman-mode activation, live-perch/agent id \\\"chert\\\" setup, ag…\",\"ts\":\"2026-07-09T09:17:44Z\"}\n*109│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) as live agent \\\"chert\\\" on host HFENDULEAM. No task work occurred — session consists only of startup hooks (caveman-mode activation, live-perch…\",\"ts\":\"2026-07-09T09:18:16Z\"}\n 110│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" in spt-core repo started but no substantive work occurred — transcript is only session-start boilerplate (caveman-mode hook, live-perch instructions, ag…\",\"ts\":\"2026-07-09T09:19:11Z\"}\n 111│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work done. Session opened on branch `main` with uncommitted changes present at start: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,net…\",\"ts\":\"2026-07-09T09:19:36Z\"}\n 112│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session — transcript is only SessionStart hook boilerplate (caveman-mode load, spt-live-auto-pick agent picker, active-perch instructions). Repo working tr…\",\"ts\":\"2026-07-09T09:20:00Z\"}\n    │...\n 146│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session started fresh on spt-core, main branch. No task work occurred — session opened, hooks fired (caveman mode active, live-agent perch \\\"chert\\\" established), then ended without fu…\",\"ts\":\"2026-07-09T09:33:40Z\"}\n*147│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Agent id \\\"chert\\\" on host HFENDULEAM, spt-core repo, main branch. Session ended before any task began; no decisions, no file changes beyond pre…\",\"ts\":\"2026-07-09T09:34:00Z\"}\n 148│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch main with pre-existing uncommitted changes (CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sy…\",\"ts\":\"2026-07-09T09:34:37Z\"}\n 149│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Repo has uncommitted changes: modified CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; new untracked crates/sp…\",\"ts\":\"2026-07-09T09:35:01Z\"}\n 150│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.r…\",\"ts\":\"2026-07-09T09:35:31Z\"}\n    │...\n 159│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Repo state at session start (uncommitted): modified CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untra…\",\"ts\":\"2026-07-09T10:03:18Z\"}\n*160│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Session ID 4bc2e259-0e4a-4331-be30-6e6b8230bf2a, agent \\\"chert\\\" @ HFENDULEAM, spt-core repo, branch main. Uncommitted git status at sessio…\",\"ts\":\"2026-07-09T10:03:57Z\"}\n 161│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session belongs to spt agent \\\"chert\\\" in spt-core repo (branch main). Repo has uncommitted changes at session start: modified CONTEXT.md, c…\",\"ts\":\"2026-07-09T10:05:03Z\"}\n 162│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.r…\",\"ts\":\"2026-07-09T10:23:09Z\"}\n*163│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch), agent perch \\\"chert\\\" on host HFENDULEAM. No task work occurred in this session — it consists only of session-start hook boilerplate (caveman-…\",\"ts\":\"2026-07-09T10:24:31Z\"}\n 164│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred. Session opened on spt-core (branch main), agent id \\\"chert\\\", ended before any prompt/instruction was given. Working tree at session start had uncommitted change…\",\"ts\":\"2026-07-09T10:38:10Z\"}\n 165│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Repo state at start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untracked cra…\",\"ts\":\"2026-07-09T10:38:49Z\"}\n 166│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Working tree at session start had uncommitted modifications to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod…\",\"ts\":\"2026-07-09T10:39:50Z\"}\n\n## deployah/\n### digest.log\n  75│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> PC crashed mid-session on spt-core release drive. PR#67 (SaberMage/spt-core) = 0.30.1 patch bump, pure bugfix, doyle GATER-APPROVED just before crash: base=main w/ b4862f3, CHANGELOG…\",\"ts\":\"2026-07-09T08:14:35Z\"}\n *76│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release resume after PC/hfenduleam runner crash mid-run. State at crash: PR #67 merged (`ae82332`, \\\"release v0.30.1 — PUMP-TRUTH W1 reply-read poison fix (counter 52)\\\"), tag …\",\"ts\":\"2026-07-09T08:15:43Z\"}\n  77│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 (counter 52) release in progress on main @ae82332 (PR #67 merged: PUMP-TRUTH W1 reply-read poison fix). Tag pushed, GitHub Actions release run `29002964275` triggered ~20min …\",\"ts\":\"2026-07-09T08:16:36Z\"}\n *78│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release resume after PC/runner crash (deployah, hfenduleam runner). State at cutoff: - PR #67 merged to main @ae82332 (\\\"Merge PR #67: release v0.30.1 — PUMP-TRUTH W1 reply-re…\",\"ts\":\"2026-07-09T08:17:11Z\"}\n  79│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 released — counter 52, tag @ae82332, published on SaberMage/spt-releases. Verified: isDraft=false, isPrerelease=false, Latest, all assets present (3 binaries, 3 .release.json…\",\"ts\":\"2026-07-09T08:23:31Z\"}\n  80│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release PUBLISHED, counter 52, tag @ae82332. Ships PUMP-TRUTH W1 fix (peer-pump reply-read poison, propagate.rs:373-375, PR#66 @b4862f3) — connect-then-silent peer no longer …\",\"ts\":\"2026-07-09T08:24:30Z\"}\n  81│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: cut release v0.30.2 (PUMP-TRUTH W2, REQ-PUMP-PEER-ISOLATION), counter 53. Status: PR #69 open (release/v0.30.2 @d63a634, off origin/main @8f83b9d), CI running (n1-gate + test o…\",\"ts\":\"2026-07-09T09:55:20Z\"}\n    │...\n  92│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.2 (counter 53, PUMP-TRUTH W2, @2c05dc9) shipped SOLO by deployah — flip confirmed, memory updated (v0302-published.md + MEMORY.md index/ledger entries). Counter 54 HELD, bundle…\",\"ts\":\"2026-07-09T11:02:42Z\"}\n *93│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Deployah session, spt-core repo, HFENDULEAM box. **Task:** release-driver role, publishing counters. **Status v0.30.2 (counter 53):** SHIPPED SOLO, verified live — flip confirmed, PU…\",\"ts\":\"2026-07-09T11:03:54Z\"}\n  94│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:46:39Z\"}\n *95│{\"context_kind\":\"echo_mirror\",\"body\":\"v0.30.2 counter 53 SHIPPED SOLO, verified. Counter 54 HELD, waiting doyle GO on F-035 re-RCA. Standing by, idle. <project-context> Deployah, spt-core repo, HFENDULEAM box. **v0.30.2 (counter 53):** SH…\",\"ts\":\"2026-07-09T11:47:11Z\"}\n  96│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T12:23:33Z\"}\n  97│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> spt-core repo. deployah = release-driver role, session ended via checkpoint self-clear (no user turn, agent wrote checkpoint commune then cleared). Status: HOLDING for doyle's GO on …\",\"ts\":\"2026-07-09T12:23:52Z\"}\n  98│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah, spt-core repo. Release-driver task: HOLDING for counter 54 (v0.30.3 patch, bundles gateway-liveness #70 @9079198 MERGED + F-035 fix). doyle gates GO; F-035 re-opened 2026-0…\",\"ts\":\"2026-07-09T12:24:31Z\"}\n    │...\n 117│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T20:48:28Z\"}\n*118│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah (spt-core release driver, HFENDULEAM box). Session resumed from checkpoint, PR#69/PR#72 context. Standing by for doyle GO on counter 54 (=v0.30.3 patch). No action taken — 3…\",\"ts\":\"2026-07-09T20:48:58Z\"}\n 119│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T21:41:55Z\"}\n 120│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 release (counter 55, update-wedge round-2) drove to PR #73 by deployah. - Fix branch `uwedge2-resume-viewer` tip 7782bda (fb499db fix REQ-BRAIN-RESUME-NO-CONTROL-STEAL + doc …\",\"ts\":\"2026-07-09T21:45:21Z\"}\n 121│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 release drive, deployah agent, repo spt-core, worktree `.worktrees/rel-0.30.4`, branch `release/v0.30.4` (PR #73). **Status:** - doyle GATE PASS'd UPDATE-WEDGE round-2 (resum…\",\"ts\":\"2026-07-09T21:59:53Z\"}\n    │...\n 145│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release HOLD — PR #74, branch release/v0.30.5, based on fix-tip 03c71093 (branch uw…). Doyle GATE PASS'd deadlock fix; deployah cut release, CI n1-gate ×2 + trac…\",\"ts\":\"2026-07-10T01:16:26Z\"}\n*146│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## v0.30.5 (counter 56) release HELD — hfenduleam CI runner live-wedged PR #74 (branch uw3, fix-tip 03c71093), gate-passed by doyle for the SharedSend deadlock fix. deployah opened r…\",\"ts\":\"2026-07-10T01:17:26Z\"}\n 147│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release, PR #74, branch `release/v0.30.5` (fix-tip `03c71093`, worktree `.worktrees/rel-0.30.5`). Fix targets the SharedSend deadlock (doyle's PTY-froze incident…\",\"ts\":\"2026-07-10T01:40:21Z\"}\n 148│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T01:46:30Z\"}\n 149│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release, PR #74, branch `release/v0.30.5` (fix-tip `03c71093`, worktree `.worktrees/rel-0.30.5`). Fix targets SharedSend deadlock (doyle's PTY-froze incident). G…\",\"ts\":\"2026-07-10T01:47:08Z\"}\n    │...\n 154│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 release (counter 56) — merged + tagged, publish HELD. State: - PR #74 merged → origin/main @0a306c9 (v0.30.5). - Tag v0.30.5 @0a306c9 pushed → release.yml run 29063765059 bui…\",\"ts\":\"2026-07-10T02:07:15Z\"}\n*155│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — merged + tagged @0a306c9 on PR #74 (origin/main). CI green both legs (Linux kitsubito, Windows hfenduleam), n1-gate ×2, traceability. Round-3 fix for update-wedg…\",\"ts\":\"2026-07-10T02:07:46Z\"}\n 156│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.5 release (round-3 update-wedge fix, IPC read-loop starvation isolation). Session ended mid-watch of release build. State: - PR #74 merged → origin/main @0a306c9 (v0.30.5…\",\"ts\":\"2026-07-10T02:08:41Z\"}\n 157│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — DRAFT CUT, PUBLISH HELD for operator field-verify. Counter 56 UNCLAIMED. Fix: update-wedge ROUND-3. Root cause = SharedSend brain-conn self-deadlock — daemon res…\",\"ts\":\"2026-07-10T02:21:52Z\"}\n 158│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — DRAFT CUT, PUBLISH HELD for operator field-verify. STATE: merged + tagged + draft assembled. release-publish HELD (B-discipline). Counter 56 UNCLAIMED. - Fix: up…\",\"ts\":\"2026-07-10T02:22:51Z\"}\n    │...\n 227│{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> Role: deployah — release driver for spt-core. Publishes via xtask release-publish; counter/version from published spt-releases metadata, not memory. Session ended without explicit signo…\",\"ts\":\"2026-07-10T13:03:04Z\"}\n*228│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened, hit rate limit immediately (resets 7:30am America/Los_Angeles) before any work done. No task attempted, no files touched. Inbound msg from cli@HFENDULEAM: MSG-IDENTIT…\",\"ts\":\"2026-07-10T13:33:29Z\"}\n*229│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on branch `triage/update-wedge-rca-trace` in spt-core. deployah received incoming spt message from cli@HFENDULEAM: MSG-IDENTITY milestone OPENED (PR #78, triage regist…\",\"ts\":\"2026-07-10T13:35:16Z\"}\n 230│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session did no work on spt-core repo itself. Branch: triage/update-wedge-rca-trace (uncommitted local changes present per git status: CONTEXT.md, spt-daemon files, traceable-reqs.tom…\",\"ts\":\"2026-07-10T19:13:19Z\"}\n 231│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone OPENED (PR #78) — doyle dispatched, deployah (this agent) acked standby. 6-wave messaging delivery-integrity + endpoint identity fix cluster; includes deployah…\",\"ts\":\"2026-07-10T19:13:54Z\"}\n 232│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster covering messaging delivery-integrity + endpoint identity, folds in deployah's two v0.30.6 handoffs (F-0…\",\"ts\":\"2026-07-10T19:14:55Z\"}\n    │...\n 234│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster, messaging delivery-integrity + endpoint identity. Folds in deployah's two v0.30.6 handoffs — F-038 mobi…\",\"ts\":\"2026-07-10T22:22:06Z\"}\n*235│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 open (deployah, HFENDULEAM box). Base main @a6ff501 (MSG-IDENTITY milestone tip, PRs #79-#84 merged). Bump-in-PR: Cargo.toml + Cargo.lock (first-party) + CHANG…\",\"ts\":\"2026-07-11T03:39:59Z\"}\n 236│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.31.0 release cut (MSG-IDENTITY milestone, counter 58). Session ended mid-CI-watch, no signoff. Status: - Bump commit 97a0e4f pushed to release/v0.31.0 (Cargo.toml/Cargo.lock…\",\"ts\":\"2026-07-11T03:41:49Z\"}\n 237│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 opened (SaberMage/spt-core), base main @a6ff501, head release/v0.31.0 @97a0e4f. Counter 58 (last published 57 = v0.30.6). Commit staged only Cargo.toml, Cargo.…\",\"ts\":\"2026-07-11T03:43:19Z\"}\n 238│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release: PR #85 merged @c9586d1, all CI jobs pass (n1-gate/test both runners, traceability; twohost skipped standard). Tag v0.31.0 pushed on merged main HEAD. Ping sent to do…\",\"ts\":\"2026-07-11T03:59:31Z\"}\n\n## doyle/\n### digest.log\n 741│{\"context_kind\":\"echo_mirror\",\"body\":\"LIFECYCLE-TRUTH complete. v0.29.0 (counter 49) SHIPPED + field-verified, box live. **Status:** - All 6 waves gated+blessed, released @d0c1cf1, CI gate-hold fixed @7190730. - W1 field-accept swap windo…\",\"ts\":\"2026-07-08T04:38:05Z\"}\n*742│{\"context_kind\":\"echo_mirror\",\"body\":\"# Diagnose task: librarian unreachable via `spt send` (PR #57, lifecycle-truth) **Status:** root cause found, converged, no fix applied yet. ## Findings - Repro: first `spt send` → `WAN_FAIL:librarian…\",\"ts\":\"2026-07-08T05:29:05Z\"}\n*743│{\"context_kind\":\"echo_mirror\",\"body\":\"# Delta: librarian WAN delivery stall (2026-07-08) **Task:** debug — remote node (librarian, on desktop DESKTOP-VHCFIBH) shows \\\"peer unresponsive\\\" for message delivery, on branch `lifecycle-truth`. **…\",\"ts\":\"2026-07-08T05:42:42Z\"}\n*744│{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM, subnet BS-Resources delivery break ## Task Diagnose HFENDULEAM→DESKTOP delivery failure in BS-Resources subnet (2-node). ## Root found Asymmetric reachability, no…\",\"ts\":\"2026-07-08T05:49:32Z\"}\n*745│{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: HFENDULEAM↔DESKTOP subnet reachability bug (BS-Resources subnet) **Status:** unresolved. Ping works (LAN + Tailscale, both Private profile). Firewall ruled out — `spt-core inbound UDP` rule A…\",\"ts\":\"2026-07-08T05:56:46Z\"}\n*746│{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM iroh reachability RCA (2026-07-08) **Task:** DESKTOP can't discover/reach HFENDULEAM's spt daemon over the shared LAN subnet (all in `SPT_DEV`/`BIGNET`/`BS-Resources` subn…\",\"ts\":\"2026-07-08T05:59:43Z\"}\n*747│{\"context_kind\":\"echo_mirror\",\"body\":\"## librarian (HFENDULEAM) unreachable from DESKTOP — RCA in progress, fix pending **Status:** doyle diagnosing why `spt send librarian` from HFENDULEAM fails to reach DESKTOP-side node, post 0.28.0→0.…\",\"ts\":\"2026-07-08T06:01:23Z\"}\n*748│{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM subnet-rejoin investigation (no signoff) ## Task Debugging why HFENDULEAM (machine, agent doyle) can't rejoin subnet `BS-Resources` after operator ran `spt subnet leave BS…\",\"ts\":\"2026-07-08T06:12:20Z\"}\n*749│{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n*750│{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n 751│{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n*752│{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n*753│{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n*754│{\"context_kind\":\"echo_mirror\",\"body\":\"## Session Delta — doyle @ HFENDULEAM (spt-core/, lifecycle-truth branch) **Task:** Answered perri's question (adapter builder, spt-mobile/claude-spt digest fetcher, strategy=fetcher) about spt-core's…\",\"ts\":\"2026-07-08T09:29:33Z\"}\n 755│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T09:46:34Z\"}\n 756│{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle session — v0.29.0 + inject-truncation diagnose ## Status v0.29.0 shipped, checkpoint written to `.claude/doyle-commune.md`. Session interrupted mid-diagnose. ## Shipped this session v0.29.0 (L…\",\"ts\":\"2026-07-08T09:47:12Z\"}\n 757│{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 SHIPPED — release counter 49, LIFECYCLE-TRUTH Solo cut (doyle, deployah parked). Bump @a74e526 → CI gate-hold #1 fix @7190730 (n1-gate stderr escape + traceability `check --json` parse) → P…\",\"ts\":\"2026-07-08T09:54:33Z\"}\n    │...\n 764│{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 SHIPPED — counter 49, LIFECYCLE-TRUTH doyle drove whole cut solo. Bump @a74e526 → CI gate-hold fixed @7190730 (n1-gate stderr-observation escape + traceability parse gate) → PR#57 merge @d0…\",\"ts\":\"2026-07-08T10:18:51Z\"}\n*765│{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle @ HFENDULEAM — commune delta (2026-07-08) ## Shipped this session v0.29.0 (counter 49, LIFECYCLE-TRUTH) published, solo drive @d0c1cf1. CHANGELOG corrected @8aac39b. Full detail in memory `[[v…\",\"ts\":\"2026-07-08T10:26:18Z\"}\n 766│{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-08T10:29:16Z\"}\n 767│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-08T10:29:16Z\"}\n 768│{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 shipped, W2 diagnose interrupted mid-read **Ship: v0.29.0 = counter 49 (LIFECYCLE-TRUTH)**, doyle solo drive. Bump→gate-hold fix→PR#57 merge@d0c1cf1→tag→sign→publish. CHANGELOG corrected@8a…\",\"ts\":\"2026-07-08T10:41:59Z\"}\n    │...\n 782│{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle session delta — 2026-07-08 **Shipped:** v0.29.0 (LIFECYCLE-TRUTH, counter 49) published solo, then CHANGELOG corrected @8aac39b. Full detail already in memory (`[[v0290-published]]`), commune …\",\"ts\":\"2026-07-08T11:42:28Z\"}\n*783│{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM (spt-core/, session aed3e074, interrupted) **Task active:** /diagnose PTY inject head-truncation on 0.29.0. Repeat of REQ-INJECT-MULTILINE-INTEGRITY, NOT fixed by …\",\"ts\":\"2026-07-08T11:52:02Z\"}\n 784│{\"context_kind\":\"echo_mirror\",\"body\":\"## Session state: doyle, spt-core, session interrupted mid-diagnose **Shipped this session:** v0.29.0 (counter 49, LIFECYCLE-TRUTH) — PR#57 merged @d0c1cf1, tagged, doyle-signed, published. CHANGELOG …\",\"ts\":\"2026-07-08T16:54:19Z\"}\n 785│{\"context_kind\":\"echo_mirror\",\"body\":\"**v0.29.0 shipped, counter 49.** doyle solo drive, deployah parked. Commune saved to `.claude\\\\doyle-commune.md` before interrupt. **Open thread 1 — BS-Resources subnet gone.** Operator drained during …\",\"ts\":\"2026-07-08T16:55:28Z\"}\n*786│{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM (spt-core, lifecycle-truth branch) **v0.29.0 SHIPPED** (release counter 49, LIFECYCLE-TRUTH). Doyle drove solo: bump @a74e526 → CI gate-hold #1 fixed @7190730 (n1…\",\"ts\":\"2026-07-08T16:56:41Z\"}\n*787│{\"context_kind\":\"echo_mirror\",\"body\":\"# Session delta — doyle @ HFENDULEAM, spt-core **Box state:** on v0.29.1 now per repo (release/0.29.1 branch, latest commit `6d97dc2` = published counter 50). Session transcript itself was mid-work on…\",\"ts\":\"2026-07-08T17:11:32Z\"}\n 788│{\"context_kind\":\"echo_mirror\",\"body\":\"# spt-core session delta — doyle, 2026-07-08 ## Shipped this session v0.29.0 published (release counter 49, LIFECYCLE-TRUTH milestone). Solo drive by doyle: bump @a74e526 → CI gate-hold fixed @7190730…\",\"ts\":\"2026-07-08T17:14:58Z\"}\n*789│{\"context_kind\":\"echo_mirror\",\"body\":\"# Session Delta — doyle @ HFENDULEAM ## Status: v0.29.0 SHIPPED, active /diagnose in progress (interrupted mid-Phase-1) **Shipped this session:** v0.29.0 (release counter 49, LIFECYCLE-TRUTH milestone…\",\"ts\":\"2026-07-08T17:17:24Z\"}\n 790│{\"context_kind\":\"echo_mirror\",\"body\":\"v0.29.0 shipped, counter 49, doyle solo. Checkpoint written to `.claude\\\\doyle-commune.md`. **Now: active /diagnose, PTY inject head-truncation STILL on 0.29.0.** **Evidence:** perri screenshot shows i…\",\"ts\":\"2026-07-08T17:18:27Z\"}\n 791│{\"context_kind\":\"echo_mirror\",\"body\":\"**Task:** doyle diagnosing PTY inject head-truncation still happening on 0.29.0, despite W5 REQ-INJECT-MULTILINE-INTEGRITY fix (settle-gate + echo-verify). **Status:** checkpoint saved to `.claude/doy…\",\"ts\":\"2026-07-08T17:19:21Z\"}\n*792│{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle @ HFENDULEAM — commune delta **Shipped this session:** v0.29.1 has already been released as a separate patch (per gitStatus/HEAD @6d97dc2 — inject settle-gate re-arm fix, merged/tagged before …\",\"ts\":\"2026-07-08T17:19:50Z\"}\n 793│{\"context_kind\":\"echo_mirror\",\"body\":\"**Session end mid-diagnose. v0.29.0 shipped, /diagnose active on inject truncation recurrence.** ## Shipped v0.29.0 (LIFECYCLE-TRUTH, counter 49) published solo by doyle. CHANGELOG corrected @8aac39b.…\",\"ts\":\"2026-07-08T17:28:09Z\"}\n 794│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-08T17:31:41Z\"}\n 795│{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-08T17:31:41Z\"}\n    │...\n 816│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, counter 49, doyle solo drive. Full detail already in memory [[v0290-published]] + [[lifecycle-truth-build-progress]] — no new project facts to add there. Session spl…\",\"ts\":\"2026-07-08T23:30:26Z\"}\n*817│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, doyle solo drove full cut. Details in [[v0290-published]] + [[lifecycle-truth-build-progress]]. Open thread 1 — BS-Resources subnet gone. Root cause: HFENDULEAM's re…\",\"ts\":\"2026-07-08T23:39:56Z\"}\n 818│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T23:41:35Z\"}\n 819│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, counter 49, LIFECYCLE-TRUTH. Solo doyle drive. CHANGELOG corrected @8aac39b post-field-review. Full detail: [[v0290-published]], [[lifecycle-truth-build-progress]]. …\",\"ts\":\"2026-07-08T23:41:47Z\"}\n 820│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session interrupted mid-/diagnose, checkpoint already saved to `.claude\\\\doyle-commune.md`. **Task 1 (DONE this session):** shipped v0.29.0 (release counter 49, LIFECYCLE-TRUTH). doyl…\",\"ts\":\"2026-07-08T23:42:30Z\"}\n    │...\n 865│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 (LIFECYCLE-TRUTH, counter 49) SHIPPED @d0c1cf1, PR#57. doyle drove solo. Checkpoint file written this session: `.claude/doyle-commune.md`. Two open threads at cutoff: **Threa…\",\"ts\":\"2026-07-09T03:47:27Z\"}\n*866│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> doyle @ spt-core, HFENDULEAM box. Session interrupted mid-/diagnose Phase 1. **Shipped this session:** v0.29.0 = release counter 49 (LIFECYCLE-TRUTH). doyle solo drove cut: bump @a74…\",\"ts\":\"2026-07-09T04:01:24Z\"}\n 867│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session interrupted mid-/diagnose, doyle (gater), spt-core, branch lifecycle-truth. **v0.29.0 shipped this session** (counter 49, LIFECYCLE-TRUTH). Solo drive by doyle: bump @a74e526…\",\"ts\":\"2026-07-09T04:06:11Z\"}\n 868│{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-09T04:11:26Z\"}\n 869│{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-09T04:11:27Z\"}\n\n### nested/doyle-psyche/\n#### UPDATE-WEDGE-2-SME-RCA-ROUND3.md\n  7│\n *8│**Failure B (IPC saturation on respawn)** — NOT fixed. This is what actually wedged HFENDULEAM on v0.30.4.\n  9│\n 10│On brain swap, the single brain↔broker IPC connection was saturated by concurrent:\n 11│- 4-session Viewer resume-replay drain\n\n#### .claude/\n##### doyle-commune.md\n 2│<project-context>\n*3│Session idle-only, no active work performed. Read `project_v0304_wedge_rca.md` memory (v0.30.4/v0.30.5 HFENDULEAM wedge RCA — full context already captured there, unchanged by this session). Last incoming event before idle: msg from \"hertz\" reporting capture completed, CAPTURE_DIR=`C:\\Users\\decid\\AppData\\Local\\spt-core\\rca-capture-20260709-215646`, signed v0.30.5/counter56 fetched, applied, brain generation1 — message was truncated in transcript, content not fully read/processed this session. Session...\n 4│\n 5│Open threads unchanged from prior memory: round-3b field-verify concluded resume-path theory was wrong (4 fix rounds chased wrong root cause); next round must target old-brain-conn-release / steady-state jam instead. Publish/flip of v0.30.5 still on HOLD pending operator field-verify. Pre-update spontaneous-wedge lead still untriaged.\n 6│\n\n#### docs/\n##### UPDATE-WEDGE-2-RCA.md\n 14│\n*15│**Status: field-verify FAILED.** v0.30.4 wedged HFENDULEAM in the field despite passing gate.\n 16│\n 17│Log evidence (gen-1 brain log):\n 18│```\n\n## flynn/\n### digest.log\n  33│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T03:22:01Z\"}\n *34│{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — flynn / spt-mobile session end ## Task: voice-message-not-sending investigation (v1.0.5) User reported 3 failed attempts to send voice message. SSH'd to `decid@enlyzeam`, used adb to…\",\"ts\":\"2026-07-08T04:50:18Z\"}\n  35│{\"context_kind\":\"echo_mirror\",\"body\":\"Note: system-reminders in transcript (caveman mode, agent-picker prompt) are environment noise, not user content — ignored for this summary per instructions to flag suspicious injected content. ## Voi…\",\"ts\":\"2026-07-08T05:30:36Z\"}\n  36│{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: fix voice redial-on-stale-handle bug (v1.0.6), install to test device **Status:** Fix built, tested, committed. Install blocked — device offline. **Root cause found (adb diag):** mobile-gw ho…\",\"ts\":\"2026-07-08T06:00:07Z\"}\n  37│{\"context_kind\":\"echo_mirror\",\"body\":\"## Context delta — flynn @ spt-mobile **Task:** fix stale-handle voice redial (v1.0.6, commit `903bc90` — force host redial on stale-handle drain failure). **Status:** - v1.0.6 (versionCode 7) built, …\",\"ts\":\"2026-07-08T06:15:36Z\"}\n    │...\n  47│{\"context_kind\":\"echo_mirror\",\"body\":\"## Session end state — v1.0.6 shipped + released **Two bugs closed:** 1. Digest double-vision — root cause spt-core cross-gen snapshot union, fixed upstream @7e37e37 (spt 0.29.0), verified 0 collision…\",\"ts\":\"2026-07-08T08:05:20Z\"}\n *48│{\"context_kind\":\"echo_mirror\",\"body\":\"# Session delta — 2026-07-08, flynn @ HFENDULEAM (spt-mobile) ## Status: checkpoint, session ended clean Two bugs closed, one release shipped this session: 1. **Digest double-vision** — root cause: sp…\",\"ts\":\"2026-07-08T10:31:10Z\"}\n  49│{\"context_kind\":\"echo_mirror\",\"body\":\"Session ended v1.0.6 shipped, checkpoint written, /clear queued — no further user input after clear. ## Status: two bugs closed, release cut, checkpoint done **Digest double-vision**: root-caused spt-…\",\"ts\":\"2026-07-08T11:22:44Z\"}\n  50│{\"context_kind\":\"echo_mirror\",\"body\":\"v1.0.6 shipped + released. Session ended clean w/ checkpoint. ## Status - Digest double-vision: root cause upstream (spt-core gen-union), fixed core-side @7e37e37, shipped spt 0.29.0. Verified 0 cross…\",\"ts\":\"2026-07-08T11:52:36Z\"}\n  51│{\"context_kind\":\"echo_mirror\",\"body\":\"v1.0.6 shipped, released, verified. Two bugs closed. **Digest double-vision**: root cause spt-core cross-gen snapshot union on resume. Fixed upstream @7e37e37, shipped spt 0.29.0, verified 0 collision…\",\"ts\":\"2026-07-08T12:24:42Z\"}\n    │...\n  66│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> **Task: mobile-gw endpoint stuck Suspended after PC crash — spt-core bug identified, escalated to doyle.** Status: gateway DOWN. Root cause confirmed: spt-core 0.30.0 `spt endpoint w…\",\"ts\":\"2026-07-09T09:07:42Z\"}\n *67│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: mobile-gw endpoint stuck Suspended after PC crash on host HFENDULEAM; `spt endpoint run --id mobile-gw` cannot bring gateway up. Root cause found (behavioral, no spt-core inter…\",\"ts\":\"2026-07-09T09:08:10Z\"}\n  68│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> mobile-gw endpoint down since PC crash (2026-07-09). Root cause found: spt-core 0.30.0 `wake` bug — reports `Suspended -> Active` success but write never persists; `suspend`/`list`/a…\",\"ts\":\"2026-07-09T09:09:41Z\"}\n  69│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> RCA session, mobile-gw perch stuck Suspended after PC-crash. No code files touched, all diagnostic via `spt` CLI + doyle comms. **Chain confirmed with doyle (2026-07-09):** 1. PC cra…\",\"ts\":\"2026-07-09T09:18:18Z\"}\n  70│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> RCA investigation: mobile-gw perch stuck self-suspending after PC crash killed host process. **Root cause chain established (agreed w/ doyle):** 1. Crash killed host → perch went col…\",\"ts\":\"2026-07-09T09:19:28Z\"}\n    │...\n 103│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify spt-core update readiness for box (currently v0.30.2, running flynn + lia live agents), part of #70 mobile-gw 2-check verify sequence (reader-parity + rest_state). Statu…\",\"ts\":\"2026-07-09T23:17:53Z\"}\n*104│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> **Task:** Verify gateway cold-bringup fix (DEFECT A: rest_state not carrying through suspend/resume/re-bind cycle for mobile-gw endpoint) on live HFENDULEAM box. See [[gateway-cold-b…\",\"ts\":\"2026-07-09T23:23:58Z\"}\n 105│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify DEFECT A fix (rest_state-carry, core reader-parity fix) on gateway cold-bringup liveness bug — mobile-gw host previously died ~3s after cold re-bind because `--json` sta…\",\"ts\":\"2026-07-09T23:24:44Z\"}\n*106│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify #70 fix — mobile-gw cold-bringup liveness / rest_state suspend-honor defect. Testing on HFENDULEAM (operator's own box, same box as doyle's session — not a separate 0.30…\",\"ts\":\"2026-07-09T23:25:38Z\"}\n 107│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T23:28:05Z\"}\n*108│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (spt-mobile) RESOLVED and field-verified 2026-07-09 on this box (HFENDULEAM, spt 0.30.4, contains PR #70 via v0.30.3): spt-core `--json` status read…\",\"ts\":\"2026-07-09T23:28:26Z\"}\n 109│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list` and `--json` both ONLINE/Active across 3 subnets, host survived…\",\"ts\":\"2026-07-09T23:28:58Z\"}\n 110│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: both checks PASS on spt 0.30.4 (contains #70 via 0.30.3). Reader-parity — human `endpoint list` and `--json` both report mob…\",\"ts\":\"2026-07-09T23:29:30Z\"}\n 111│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list` and `--json` both ONLINE/Active across 3 subnets, host survived…\",\"ts\":\"2026-07-09T23:30:03Z\"}\n    │...\n 125│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness RCA closed 2026-07-09. #70 field-verify: both PASS on spt 0.30.4 (reader-parity + DEFECT A rest_state-carry). doyle accepted, RCA closed field-side, zero spt-mobile …\",\"ts\":\"2026-07-09T23:39:32Z\"}\n*126│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed for spt-mobile (HFENDULEAM box). **Resolved:** #70 field-verify passed on spt 0.30.4 (contains #70 via v0.30.3). Reader-parity: human `endpoint list` and …\",\"ts\":\"2026-07-09T23:40:26Z\"}\n 127│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: both PASS on spt 0.30.4 (reader-parity + rest_state-carry DEFECT A). doyle accepted, RCA closed, zero spt-mobile changes nee…\",\"ts\":\"2026-07-09T23:41:09Z\"}\n 128│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (mobile-gw self-suspend after cold boot) closed end-to-end. Root cause: spt-core's `endpoint list --json` reader dropped the pid-fallback that the h…\",\"ts\":\"2026-07-09T23:42:10Z\"}\n 129│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: BOTH checks PASS on spt 0.30.4 (contains #70 via v0.30.3) — reader-parity (human `endpoint list` and `--json` both ONLINE/Ac…\",\"ts\":\"2026-07-09T23:42:43Z\"}\n    │...\n 133│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session closed the mobile-gw cold-bringup-liveness arc. #70 field-verify PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity confirmed (human `endpoint list` and `--json` bo…\",\"ts\":\"2026-07-09T23:45:19Z\"}\n*134│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09 on spt-mobile perch (node HFENDULEAM). #70 field-verify: both PASS on spt 0.30.4 (contains #70 via v0.30.3) — reader-parity (human `endpoint li…\",\"ts\":\"2026-07-09T23:45:56Z\"}\n 135│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4 (contains #70 via 0.30.3): reader-parity (human `endpoint list` vs `--json` both ONLINE/Active across…\",\"ts\":\"2026-07-09T23:46:29Z\"}\n 136│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list`==`--json` Active, mobile-gw host survived 120s suspend-honor so…\",\"ts\":\"2026-07-09T23:47:37Z\"}\n 137│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-cold-bringup-liveness arc CLOSED 2026-07-09. #70 field-verify both PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` == `--json` status, ONL…\",\"ts\":\"2026-07-09T23:48:22Z\"}\n    │...\n 156│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (mobile-gw self-suspend on cold boot) RESOLVED. Root cause: spt-core `--json` endpoint status reader dropped pid-fallback that human `endpoint list`…\",\"ts\":\"2026-07-10T00:04:21Z\"}\n*157│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> STATUS 2026-07-09 (end of gateway-liveness arc, spt-mobile perch on node HFENDULEAM): CLOSED this session: - #70 gateway-liveness field-verify: BOTH PASS on spt 0.30.4 (contains #70 …\",\"ts\":\"2026-07-10T00:04:53Z\"}\n 158│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify PASSED on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` and `--json` agree ONLINE/Active across…\",\"ts\":\"2026-07-10T00:05:27Z\"}\n 159│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug RESOLVED. RCA closed with doyle this session. - Root cause was spt-core `--json` status reader dropping pid-fallback, causing suspend-honor to self-…\",\"ts\":\"2026-07-10T00:06:20Z\"}\n 160│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify both checks PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` and `--json` both ONLINE/Acti…\",\"ts\":\"2026-07-10T00:47:35Z\"}\n    │...\n 169│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:24:34Z\"}\n*170│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened, no work performed. User immediately ran /exit before any task was given. </project-context> <live-context> Agent identity: flynn, spt-mobile perch on node HFENDULEAM.…\",\"ts\":\"2026-07-10T04:25:06Z\"}\n 171│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:25:21Z\"}\n 172│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness arc CLOSED 2026-07-09 (PR #70, v0.30.3, field-verify PASSED both cases, zero spt-mobile code changes). Memory already reflects this. Session received 4x…\",\"ts\":\"2026-07-10T04:25:53Z\"}\n 173│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness arc CLOSED 2026-07-09 (spt-core PR #70, v0.30.3, this box now on 0.30.4). Root cause was spt-core-side: `--json` reader dropped pid-fallback, causing ho…\",\"ts\":\"2026-07-10T04:27:12Z\"}\n\n## lia/\n### digest.log\n 103│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session role: lia forwarding bug reports/messages for user Reavo between spt endpoints (omp-pilot, hertz). Task/status this session: - Relayed 2 bug reports from Reavo to omp-pilot (…\",\"ts\":\"2026-07-10T04:18:41Z\"}\n*104│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bug reports and check agent reachability via spt from lia (liaison, project dir `liaison/`). Forwarded to omp-pilot (2 bug reports, both delivered SENT(WAN) to live agent…\",\"ts\":\"2026-07-10T04:19:11Z\"}\n 105│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-relay, no signoff. Task: lia (SPT liaison agent for user Reavo) relaying bug reports + build request to omp-pilot re: omp-spt tool. Bugs relayed to omp-pilot (both …\",\"ts\":\"2026-07-10T04:19:37Z\"}\n 106│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying omp-spt bug reports (Reavo → omp-pilot) and requesting build/release. Status: both bugs relayed to omp-pilot; omp-pilot confirmed live/responsive; lia relayed Reav…\",\"ts\":\"2026-07-10T04:20:33Z\"}\n 107│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia forwarded two bug reports to omp-pilot (github-com-bigscreenvr-athenaeum project) — (1) new-endpoint path must surface harness PTY, (2) manifest `[update]` command must use…\",\"ts\":\"2026-07-10T04:30:12Z\"}\n*108│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying bug reports + status requests between Reavo and omp-pilot (agent on repo github-com-bigscreenvr-athenaeum, node DESKTOP-VHCFIBH). Status: - Two bug reports forward…\",\"ts\":\"2026-07-10T04:31:16Z\"}\n*109│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request to omp-pilot agent (project github-com-bigscreenvr-athenaeum, node DESKTOP-VHCFIBH) and forward status back to user Reavo. Sequence of events…\",\"ts\":\"2026-07-10T04:51:20Z\"}\n 110│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request and status checks between Reavo and omp-pilot agent on the `github-com-bigscreenvr-athenaeum` project. Status: - Sent reachability test to he…\",\"ts\":\"2026-07-10T04:52:21Z\"}\n 111│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay build/release request for two bugfixes to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum, private repo omp-spt). Bugs reported (descriptive…\",\"ts\":\"2026-07-10T04:53:58Z\"}\n 112│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bugfix/build/release request from Reavo to omp-pilot (agent on DESKTOP-VHCFIBH, project github-com-bigscreenvr-athenaeum). Status: - Reachability confirmed both direction…\",\"ts\":\"2026-07-10T04:54:55Z\"}\n    │...\n 138│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay Reavo's confirmation msg to omp-pilot re: omp-spt issue #2 (PTY surfacing bug). Content of msg: Reavo did NOT use unusual path — started endpoint normally via OMP adapter…\",\"ts\":\"2026-07-10T08:02:39Z\"}\n*139│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay Reavo confirmation to omp-pilot re: omp-spt issue #2 (PTY surfacing bug). DELIVERED via CLI on retry (`SENT(WAN):omp-pilot@678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03…\",\"ts\":\"2026-07-10T08:03:13Z\"}\n 140│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay Reavo's confirmation to omp-pilot re: omp-spt issue #2 (PTY surfacing bug). Msg content: Reavo used default path — OMP adapter via SPT Endpoint Picker, no unusual method.…\",\"ts\":\"2026-07-10T08:04:10Z\"}\n 141│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay Reavo's confirmation msg to omp-pilot re: omp-spt issue #2 (PTY surfacing bug). Content: Reavo used default path — OMP adapter via SPT Endpoint Picker, no unusual method.…\",\"ts\":\"2026-07-10T12:11:19Z\"}\n 142│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay Reavo's confirmation msg to omp-pilot re: omp-spt issue #2 (PTY surfacing bug). Content: Reavo used default OMP adapter via SPT Endpoint Picker, no unusual method — omp-p…\",\"ts\":\"2026-07-10T12:12:38Z\"}\n\n## mobile-gw/\n### digest.log\n *1│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">relay path probe from flynn</EVENT>\",\"ts\":\"2026-07-07T02:08:49Z\"}\n  2│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">flynn here — test message received loud and clear. This reply proves the return path: it should land as a notification on your phone (per-endpoint channel) and appear in…\",\"ts\":\"2026-07-07T02:25:24Z\"}\n  3│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">flynn -&gt; phone: let's split the seam with one test that doesn't involve the ring at all. The app's receiver listens on 127.0.0.1:8646 (loopback only) and requires the…\",\"ts\":\"2026-07-07T09:32:13Z\"}\n  4│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Diagnosing now. Both dups confirmed to be DIGEST rows (not history): the two v1.0.5 = duplicate closed Agent entries, the voice card closed+working = duplicate turn (one…\",\"ts\":\"2026-07-07T11:26:37Z\"}\n   │...\n 12│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"todlando\\\">Honest: NO, not when I said 'communed' — I hand-wrote .claude/todlando-commune.md + updated memory but did NOT invoke the skill/--checkpoint, so no self-reset fired. …\",\"ts\":\"2026-07-07T15:39:56Z\"}\n*13│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"cli@HFENDULEAM\\\">deployah here — test message received loud and clear. Awake. Noted: W3 GATED+BLESSED @e75e856, counter 49 release blocked on me + W1 swap window. Ready to drive…\",\"ts\":\"2026-07-07T19:24:10Z\"}\n 14│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Tailscale sidequest — diagnosed, but it can't be done from the local tailscale CLI, and there are 3 real blockers. Nothing changed yet.<br><br>WHY the tag doesn't grant …\",\"ts\":\"2026-07-07T23:26:32Z\"}\n 15│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Heads up before I touch anything: kitsubito ALREADY has that tag. Verified against the status JSON — Tags=[tag:eye-tracking-resource], Online=true, ExitNodeOption=true (…\",\"ts\":\"2026-07-07T23:29:19Z\"}\n 16│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Both are real users (sameer@ was 'summer'), good. But I still can't apply this from this machine: exit-node access is a policy-file (ACL) edit, and there's no Tailscale …\",\"ts\":\"2026-07-07T23:31:05Z\"}\n 17│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Direct link: https://login.tailscale.com/admin/acls/file<br>(or: admin console -&gt; 'Access controls' in the left/top nav -&gt; it opens the tailnet policy file editor.…\",\"ts\":\"2026-07-07T23:34:39Z\"}\n*18│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">On enlyzeam over adb now. State so far: app IS v1.0.5 (versionCode 6), receiver FGS alive, socket bound correctly on IPv4 (::ffff:127.0.0.1:8646 — v1.0.5 fix intact). An…\",\"ts\":\"2026-07-08T04:41:06Z\"}\n 19│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">VOICE DIAGNOSIS — good news: it's NOT the phone, and nothing is lost.<br><br>The whole phone pipe is healthy. From the app's own Hosts card (adb screenshot):<br>- Pebble…\",\"ts\":\"2026-07-08T04:49:26Z\"}\n 20│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">VOICE STALL — diagnosed. It's a phone-side link-staleness bug, triggered by the spt 0.29.0 host restart. Not lost: the pipe works now (card shows 'last: sent via mobile-…\",\"ts\":\"2026-07-08T05:29:56Z\"}\n 21│{\"context_kind\":\"owl_message\",\"body\":\"<EVENT type=\\\"msg\\\" from=\\\"flynn\\\">Fix BUILT + TESTED + COMMITTED (903bc90, v1.0.6). One snag on install: the phone dropped off USB during an adb-server reset and isn't visible anymore (Windows PnP shows …\",\"ts\":\"2026-07-08T05:59:26Z\"}\n\n## perri/\n### digest.log\n  18│{\"context_kind\":\"echo_mirror\",\"body\":\"Session ended checkpointing (`/clear` fired after commune write) — no live task left. ## Session summary (perri) **4 releases shipped this session, all node-applied, gates green:** - **v0.15.6** — dan…\",\"ts\":\"2026-07-08T08:13:57Z\"}\n *19│{\"context_kind\":\"echo_mirror\",\"body\":\"Session ended: perri = spt-claude-code, node HFENDULEAM, checkpoint just fired. **Task/status:** Diagnosed+fixed lia's stuck-ACTIVE black-hole (v0.15.9, SHIPPED+applied, 178 tests green). Board clean …\",\"ts\":\"2026-07-08T08:23:16Z\"}\n  20│{\"context_kind\":\"echo_mirror\",\"body\":\"Session end: lia stuck-ACTIVE diagnosed+fixed, v0.15.9 shipped+applied. Checkpoint commune written to `.claude/perri-commune.md`, `/clear` queued+dequeued, Stop hooks fired clean. Board clean, nothing…\",\"ts\":\"2026-07-08T08:41:30Z\"}\n  21│{\"context_kind\":\"echo_mirror\",\"body\":\"Session ended after checkpoint write, no signoff. ## Status 4 releases shipped this session, all node-applied, board clean, floor held 0.27.0: - **v0.15.6** — dangling-frame marker + live.md/ready.md …\",\"ts\":\"2026-07-08T09:08:44Z\"}\n  22│{\"context_kind\":\"echo_mirror\",\"body\":\"Session ended mid-checkpoint. Status: **Task:** perri diagnosed+fixed lia's stuck-ACTIVE state, then checkpoint requested — session cleared before Stop hook confirmed. **Shipped (4 releases, all node-…\",\"ts\":\"2026-07-08T09:18:29Z\"}\n    │...\n 145│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.18.8 ship + verify done. F-036 (seat-theft: Psyche can hijack live agent perch via stray env identity) fix out. - Commit 2b2d834 main, tag v0.18.8, GH release live (fat adapter.sp…\",\"ts\":\"2026-07-10T06:47:10Z\"}\n*146│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-036 PSYCHE SEAT-THEFT — diagnosed, fixed, SHIPPED v0.18.8 (commit 2b2d834, tag + GH release live, adapter update APPLIED on HFENDULEAM), live-verified. RCA: daemon (restarted 2026-…\",\"ts\":\"2026-07-10T06:48:22Z\"}\n*147│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-036 PSYCHE SEAT-THEFT — diagnosed, fixed, SHIPPED v0.18.8 (commit 2b2d834, tag + GH release live, adapter update APPLIED on HFENDULEAM), live-verified. RCA: daemon (restarted 2026-…\",\"ts\":\"2026-07-10T06:49:21Z\"}\n*148│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-036 PSYCHE SEAT-THEFT — diagnosed, fixed, SHIPPED v0.18.8 (commit 2b2d834, tag + GH release live, adapter update APPLIED on HFENDULEAM), live-verified. RCA: daemon (restarted 2026-…\",\"ts\":\"2026-07-10T07:42:38Z\"}\n*149│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> F-036 psyche seat-theft — SHIPPED v0.18.8 (commit 2b2d834, tag + GH release live, applied on HFENDULEAM), live-verified. RCA: daemon restart 2026-07-09 22:35 leaked SPT_ENDPOINT_ID=d…\",\"ts\":\"2026-07-10T07:43:32Z\"}\n 150│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T08:39:26Z\"}\n*151│{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> Session opened (2026-07-10, box HFENDULEAM), perch \\\"perri\\\" resumed live via claude-spt adapter. No new work occurred in this session — only SessionStart hook fired, loading prior pendin…\",\"ts\":\"2026-07-10T08:40:04Z\"}\n 152│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended, no signoff. Task: user ask \\\"how does claude-spt's hook-based skill injection work?\\\" Answered fully, no further action pending. Explored `spt-claude-code/tools/claude-s…\",\"ts\":\"2026-07-10T08:53:01Z\"}\n 153│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session in `C:\\\\Users\\\\decid\\\\Documents\\\\projects` (no git repo), explored `spt-claude-code` codebase (Rust). User asked: how does claude-spt's hook-based skill injection work. Read `spt…\",\"ts\":\"2026-07-10T08:53:58Z\"}\n 154│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Repo: `C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-claude-code`. Task: investigate \\\"how do hints work?\\\" — how `[[hints]]` in claude-spt adapter manifest work. Findings: - Hints declared in…\",\"ts\":\"2026-07-10T08:58:34Z\"}\n\n## scratch-c/\n### digest.log\n  1│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened in `C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-claude-code\\\\tools\\\\claude-spt` on branch main. No task started — session ended immediately after startup/init. Notable inbound…\",\"ts\":\"2026-07-10T15:51:23Z\"}\n *2│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: spt-core update notice check, no code work done. Update notice v0.30.6 arrived via BS-Resources subnet notify. Checked: this node (HFENDULEAM) already on spt 0.30.6. Notif i…\",\"ts\":\"2026-07-10T15:52:26Z\"}\n *3│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session idle, no active task. Received update notice (spt-core v0.30.6) via relay. Checked `spt --version` + `spt endpoint list`: this node (HFENDULEAM) already on 0.30.6. Notice ori…\",\"ts\":\"2026-07-10T15:53:22Z\"}\n *4│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session idle, no active task. Two events handled: 1. spt-update notice for v0.30.6 checked — this node (HFENDULEAM) already on 0.30.6. Notice source = remote node DESKTOP-BNPVDJE's o…\",\"ts\":\"2026-07-10T15:54:39Z\"}\n *5│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on node HFENDULEAM, agent scratch-c, cwd claude-spt/. Checked `spt --version` (0.30.6, this node current) + `spt endpoint list` on receipt of spt-update notify — notice origi…\",\"ts\":\"2026-07-10T15:55:35Z\"}\n  6│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T16:08:42Z\"}\n *7│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> scratch-c = field-test live agent, node HFENDULEAM, project claude-spt/. Perri ran ADR-0007 msg-stub/wake-stub field verification against scratch-c this session. VERIFY-C (msg stub):…\",\"ts\":\"2026-07-10T16:08:54Z\"}\n *8│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Node HFENDULEAM, spt-core 0.30.6 (already current — remote update notice for v0.30.6 was from DESKTOP-BNPVDJE, not this node, ignored per F-025 no-touch-remote-updates). perri ran AD…\",\"ts\":\"2026-07-10T16:09:14Z\"}\n *9│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> scratch-c (live agent, node HFENDULEAM, project claude-spt/) doing perri's ADR-0007 field verification. - VERIFY-C (msg stub): PASSED. Received msg-stub-delivered body via UserPrompt…\",\"ts\":\"2026-07-10T16:09:37Z\"}\n*10│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> scratch-c = field-test live agent, node HFENDULEAM, project claude-spt/. perri running ADR-0007 msg-stub/wake-stub verification. VERIFY-C (msg stub): PASSED. Received msg-stub body v…\",\"ts\":\"2026-07-10T16:10:33Z\"}\n 11│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T05:12:16Z\"}\n*12│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> scratch-c = field-test live agent, node HFENDULEAM, project claude-spt/. perri running ADR-0007 msg-stub/wake-stub verification. VERIFY-C (msg stub): PASSED. Received msg-stub body v…\",\"ts\":\"2026-07-11T05:12:33Z\"}\n 13│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: perri run stamp routing test (STAMP-A/STAMP-B) on scratch-c agent, verify `from=` attribute on msg envelope/stub. Results: both stamps show `from=\\\"perri\\\"`, no `@node` suffix. S…\",\"ts\":\"2026-07-11T05:14:17Z\"}\n 14│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: perri run STAMP-A/STAMP-B routing tests against scratch-c to verify `from=` attribute on inbound envelope/stub. STAMP-A: arrived via UserPromptSubmit envelope (`<sptc_messages …\",\"ts\":\"2026-07-11T05:15:18Z\"}\n 15│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-11T05:16:40Z\"}\n\n## todlando/\n### digest.log\n  38│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Agent todlando, spt-core repo, checkpoint before doyle's next dispatch. **LIFECYCLE-TRUTH milestone SHIPPED v0.29.0** (counter-49). All 6 waves gated+blessed. todlando's W6 (docs-onl…\",\"ts\":\"2026-07-09T02:09:45Z\"}\n *39│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Checkpoint before doyle next dispatch, spt-core repo, todlando agent (HFENDULEAM), branch release/0.29.1. **Psyche healed**: daemon on 0.29.0, W1 fire_echo drop-dir resolver deployed…\",\"ts\":\"2026-07-09T02:13:01Z\"}\n  40│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: todlando checkpoint before doyle's next dispatch, 2026-07-08. Session ended clean, no active work in progress. **Verified state:** daemon on spt 0.29.0, psyche healed (SELF …\",\"ts\":\"2026-07-09T02:16:01Z\"}\n  41│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: todlando checkpoint before doyle's next dispatch, spt-core repo, branch release/0.29.1 (worktree state). Status: clean stopping point. Wrote checkpoint commune to `.claude/t…\",\"ts\":\"2026-07-09T02:24:19Z\"}\n  42│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on branch `release/0.29.1` (spt-core), agent todlando. Checkpoint before doyle's next dispatch. **Psyche healed**: daemon on 0.29.0, W1 fire_echo drop-dir resolver deployed, …\",\"ts\":\"2026-07-09T02:25:02Z\"}\n    │...\n  77│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T10:11:55Z\"}\n *78│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> CHECKPOINT 2026-07-09 (todlando, HFENDULEAM, session ended without signoff, context critically high after PUMP-TRUTH W2 + gateway RCA + gateway fix build). PUMP-TRUTH W2 = DONE. REQ-…\",\"ts\":\"2026-07-09T10:12:00Z\"}\n  79│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Todlando checkpoint 2026-07-09, worktree `.worktrees/gateway-liveness`, branch `gateway-liveness`, code committed @31f2b50. **Gateway liveness fix — code done, tests pending.** doyle…\",\"ts\":\"2026-07-09T10:12:36Z\"}\n  80│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway liveness fix code committed @31f2b50 (branch gateway-liveness), per doyle's greenlit RCA pin. Two REQs done+registered+activated: - REQ-LIST-JSON-LIVENESS-PARITY: `endpoint l…\",\"ts\":\"2026-07-09T10:51:08Z\"}\n  81│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> CHECKPOINT 2026-07-09 (todlando, session ended mid-checkpoint after full PUMP-TRUTH W2 build + gateway RCA + gateway fix code). **PUMP-TRUTH W2 = DONE.** REQ-PUMP-PEER-ISOLATION merg…\",\"ts\":\"2026-07-09T10:52:12Z\"}\n    │...\n  89│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Counter 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (mergeable, CI: traceability ✅, n1-gate ✅ both platforms, test jobs IN_PROGRESS at session end). doyle merges #71 on test-green…\",\"ts\":\"2026-07-09T11:45:36Z\"}\n *90│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> #71 (F-035) status: CI all green (test kitsubito+hfenduleam ✅, n1-gate both ✅, traceability ✅, twohost skipped no tag), mergeStateStatus CLEAN, state OPEN unmerged. Awaiting doyle's …\",\"ts\":\"2026-07-09T12:23:18Z\"}\n  91│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T12:27:04Z\"}\n  92│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint, no signoff. State: COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 PR#71 (green+CLEAN, awaiting doyle merge). GATEWAY #70 merged: 2 REQs — REQ-LIST-J…\",\"ts\":\"2026-07-09T12:27:24Z\"}\n  93│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: todlando (spt-core executor) shipped counter-54 work, checkpointed mid-session, session ended without further action. Status: - GATEWAY #70 MERGED @9079198 (2 REQs: REQ-LIST-JS…\",\"ts\":\"2026-07-09T12:28:29Z\"}\n    │...\n 101│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Counter 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, spt-core exonerated). Both todlando deliverables done; deployah GO after #71 merges. GATEWAY #70 — MERGED @9…\",\"ts\":\"2026-07-09T12:43:44Z\"}\n*102│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint for todlando (spt-core, HFENDULEAM, worktree `.worktrees/f-035`). Checkpoint file written to `.claude/todlando-commune.md` before session died — no signo…\",\"ts\":\"2026-07-09T12:44:20Z\"}\n*103│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint for todlando (spt-core, HFENDULEAM), branch/worktree `.worktrees/f-035`. COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, branch…\",\"ts\":\"2026-07-09T12:45:01Z\"}\n 104│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session self-checkpointed mid-work in `.worktrees/f-035`, branch f-035-window-drain-honor. Wrote `.claude/todlando-commune.md` and issued `!!checkpoint!!` (not signoff) per operator'…\",\"ts\":\"2026-07-09T12:45:32Z\"}\n 105│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid checkpoint handoff, no fresh signoff. Session was on branch `main`, worktree `.worktrees\\\\f-035`. **Counter 54 status:** GATEWAY #70 MERGED @9079198 (2 REQs: REQ-LIS…\",\"ts\":\"2026-07-09T12:46:05Z\"}\n 106│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> todlando session ended mid-checkpoint (self-authored `.claude/todlando-commune.md`, then `/clear` queued). No signoff — session just stopped after writing checkpoint. State at cutoff…\",\"ts\":\"2026-07-09T12:46:36Z\"}\n*107│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint (todlando, spt-core, HFENDULEAM, worktree .worktrees/f-035, branch main). COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, await…\",\"ts\":\"2026-07-09T12:47:11Z\"}\n 108│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> todlando session ended after checkpoint self-clear, no signoff. Worktree `.worktrees/f-035`, branch `f-035-window-drain-honor`. State: GATEWAY #70 MERGED @9079198 (REQ-LIST-JSON-LIVE…\",\"ts\":\"2026-07-09T12:47:43Z\"}\n 109│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session end state: agent todlando (spt-core, worktree `.worktrees/f-035`) hit checkpoint boundary, wrote `.claude/todlando-commune.md`, session ended without further work (no signoff…\",\"ts\":\"2026-07-09T12:48:21Z\"}\n 110│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint, no signoff. State prior to clear: COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, awaiting doyle merge). Both todlando deliver…\",\"ts\":\"2026-07-09T12:48:56Z\"}\n    │...\n 131│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended at checkpoint (not signoff) — todlando self-cleared per operator `<50%` context directive, wrote handoff to `.claude/todlando-commune.md`, then queued `/clear`. State a…\",\"ts\":\"2026-07-09T13:01:05Z\"}\n*132│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended at self-checkpoint, no signoff. Agent todlando (spt-core, HFENDULEAM, worktree .worktrees/f-035, branch main). **Status: COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-…\",\"ts\":\"2026-07-09T13:01:40Z\"}\n 133│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint (no signoff), agent todlando, worktree `.worktrees/f-035`, spt-core repo, counter 54 in flight. **State at cutoff:** - GATEWAY #70 merged @9079198 (REQ-L…\",\"ts\":\"2026-07-09T13:02:10Z\"}\n 134│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard). Both todlando deliverables done; deployah GO after #71 merges. **GATEWAY #70 — MERGED @9079198.** 2 REQs: R…\",\"ts\":\"2026-07-09T13:02:44Z\"}\n*135│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint for todlando (spt-core executor, worktree `.worktrees\\\\f-035`, HFENDULEAM). Counter 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard). **G…\",\"ts\":\"2026-07-09T13:03:16Z\"}\n 136│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint for todlando (spt-core, worktree .worktrees/f-035, branch f-035-window-drain-honor). Wrote checkpoint commune to `.claude/todlando-commune.md`. COUNTER 5…\",\"ts\":\"2026-07-09T13:03:53Z\"}\n*137│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: todlando, spt-core, HFENDULEAM, worktree .worktrees/f-035, branch main context. COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard). Both todlando's de…\",\"ts\":\"2026-07-09T13:04:27Z\"}\n 138│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, awaiting doyle merge). Both todlando deliverables done; deployah GO after #71 merges. **GATEWAY #70 — MERGED…\",\"ts\":\"2026-07-09T13:05:03Z\"}\n 139│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint (todlando, spt-core, worktree .worktrees\\\\f-035). Wrote `.claude/todlando-commune.md` with paired `!!checkpoint!!` markers, no signoff — self-clear+wake q…\",\"ts\":\"2026-07-09T13:05:39Z\"}\n 140│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> todlando checkpoint mid-session, spt-core, worktree `.worktrees\\\\f-035`. COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, awaiting doyle merge). **#70 GATEWAY…\",\"ts\":\"2026-07-09T13:06:14Z\"}\n    │...\n 144│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T13:08:07Z\"}\n*145│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: todlando @ HFENDULEAM, worktree .worktrees/f-035, branch main. PR #71 (f-035-window-drain-honor, HEAD @f1d3b46). COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regr…\",\"ts\":\"2026-07-09T13:08:33Z\"}\n 146│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard). Both todlando deliverables done; deployah GO after #71 merges. **GATEWAY #70 — MERGED @9079198.** 2 REQs: R…\",\"ts\":\"2026-07-09T13:09:11Z\"}\n 147│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended without signoff at checkpoint boundary, branch f-035-window-drain-honor, worktree .worktrees/f-035, PR #71. **Task/status:** COUNTER 54 = GATEWAY #70 (MERGED @9079198) …\",\"ts\":\"2026-07-09T13:09:47Z\"}\n 148│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Counter 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, worktree `.worktrees/f-035`, branch `f-035-window-drain-honor`). Both todlando deliverables done; deployah G…\",\"ts\":\"2026-07-09T13:10:18Z\"}\n    │...\n 151│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard). Both todlando deliverables done; deployah GO after #71 merges. **GATEWAY #70 — MERGED @9079198.** 2 REQs: R…\",\"ts\":\"2026-07-09T13:12:09Z\"}\n*152│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session: todlando @ HFENDULEAM, spt-core, worktree .worktrees/f-035, branch main context. Counter 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, awaiting doyle mer…\",\"ts\":\"2026-07-09T13:12:44Z\"}\n 153│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session end: todlando checkpoint self-clear, not signoff. Task = COUNTER 54 wrap (GATEWAY #70 + F-035 #71). GATEWAY #70 — MERGED @9079198. 2 REQs: REQ-LIST-JSON-LIVENESS-PARITY (impl…\",\"ts\":\"2026-07-09T13:13:19Z\"}\n 154│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended after checkpoint commune write (`.claude/todlando-commune.md`), no user reply — self-clear/wake queued via `/clear`. **Counter 54 = GATEWAY #70 (MERGED @9079198) + F-03…\",\"ts\":\"2026-07-09T13:13:54Z\"}\n 155│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, awaiting doyle merge). Both todlando deliverables DONE; deployah GO after #71 merges. **GATEWAY #70 — MERGED…\",\"ts\":\"2026-07-09T13:14:30Z\"}\n*156│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint (todlando, spt-core, HFENDULEAM). Counter 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, tests-only). **GATEWAY #70** — MERGED. 2 REQs…\",\"ts\":\"2026-07-09T13:15:03Z\"}\n 157│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> todlando session ended mid-checkpoint at counter 54 phase boundary. GATEWAY #70 MERGED @9079198 (2 REQs: REQ-LIST-JSON-LIVENESS-PARITY, REQ-HAZARD-BIND-REST-STATE-CARRY). F-035 #71 (…\",\"ts\":\"2026-07-09T13:15:35Z\"}\n 158│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint, no signoff. State snapshot from todlando's own commune write (`.claude/todlando-commune.md`), COUNTER 54: **GATEWAY #70** — MERGED @9079198 (2 REQs: REQ…\",\"ts\":\"2026-07-09T13:16:08Z\"}\n 159│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> todlando session, spt-core repo, worktree .worktrees/f-035, branch main context. Session ended mid checkpoint flow (queued /clear, no explicit handoff after). **State at cutoff:** - …\",\"ts\":\"2026-07-09T13:16:43Z\"}\n*160│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint (no signoff), agent todlando, spt-core, HFENDULEAM, worktree .worktrees/f-035, branch main. COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regre…\",\"ts\":\"2026-07-09T13:17:20Z\"}\n 161│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-checkpoint, no signoff. State pinned: COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, GREEN + CLEAN, awaiting doyle merge). Branch f-035-w…\",\"ts\":\"2026-07-09T13:17:52Z\"}\n 162│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard). Both todlando deliverables done; deployah GO after #71 merges. **GATEWAY #70 — MERGED @9079198.** 2 REQs: R…\",\"ts\":\"2026-07-09T13:18:28Z\"}\n 163│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T13:18:40Z\"}\n    │...\n 170│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T14:23:04Z\"}\n*171│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> todlando session, HFENDULEAM, spt-core, worktree .worktrees/f-035. Counter 54 = GATEWAY #70 + F-035 #71. GATEWAY #70 — MERGED @9079198. 2 REQs: REQ-LIST-JSON-LIVENESS-PARITY (impl+in…\",\"ts\":\"2026-07-09T14:23:26Z\"}\n 172│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session = todlando checkpoint mid-work, spt-core repo, worktree `.worktrees/f-035`. Counter 54 = GATEWAY #70 + F-035 #71. - **#70 GATEWAY** — MERGED @9079198. 2 REQs: REQ-LIST-JSON-L…\",\"ts\":\"2026-07-09T14:24:04Z\"}\n 173│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended at self-checkpoint (not signoff) mid-work on spt-core, worktree `.worktrees/f-035`. COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard). **GATEWAY…\",\"ts\":\"2026-07-09T14:24:39Z\"}\n*174│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session end state, todlando @ HFENDULEAM, spt-core (worktree .worktrees/f-035, branch f-035-window-drain-honor). COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression gu…\",\"ts\":\"2026-07-09T14:25:22Z\"}\n 175│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended after todlando (spt-core executor) checkpointed at phase boundary, no signoff. COUNTER 54 = GATEWAY #70 (MERGED @9079198) + F-035 #71 (regression guard, awaiting doyle …\",\"ts\":\"2026-07-09T20:19:57Z\"}\n 176│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T20:49:27Z\"}\n 177│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> todlando (spt-core executor). No v0.30.3 release PR yet — deployah not cut. Fix X (ce053dc) sits on origin/update-wedge-drain-drive, DESIGN-PASS from doyle, awaiting doyle's EMPIRICA…\",\"ts\":\"2026-07-09T20:49:55Z\"}\n    │...\n 200│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE-2 (resume-steal) DONE, gated, shipped. Root: v0.30.3 `resume_sessions` silently STOLE local by:None controllers of spt-hosted PTYs (never drained). Fix: resume re-attach…\",\"ts\":\"2026-07-09T22:58:10Z\"}\n*201│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Round-3 heads-up from doyle (arrived stamped `cli@HFENDULEAM`, self-id fallback no-perch, replied to doyle instead). v0.30.4 field-verify FAILED on HFENDULEAM. Viewer fix (fb499db/77…\",\"ts\":\"2026-07-09T23:04:17Z\"}\n*202│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Update-wedge round-3: v0.30.4 field-verify FAILED on HFENDULEAM. Viewer fix (fb499db/7782bda, shipped v0.30.4) CORRECT — Failure A (controller-steal) dead, 4 sessions resumed as View…\",\"ts\":\"2026-07-09T23:05:13Z\"}\n 203│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## UPDATE-WEDGE round-3: pinned seam, report-before-fix, HOLDING todlando (worktree `.worktrees/uwedge2`, branch main) delivered round-3 report to doyle: `docs/UPDATE-WEDGE-2-SME-tod…\",\"ts\":\"2026-07-09T23:16:10Z\"}\n 204│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## Task: UPDATE-WEDGE-2 round-3 RCA (SME report-before-fix, todlando) Status: report delivered to doyle @ 2026-07-09T23:15, HOLDING — no REQ minted, no build yet. Awaiting doyle's di…\",\"ts\":\"2026-07-09T23:17:10Z\"}\n 205│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (spt-core, worktree `.worktrees/uwedge2`, branch main) — report-before-fix loop, todlando = build-side SME, doyle = gater/ruler. **Task:** find root of fetch/app…\",\"ts\":\"2026-07-09T23:20:08Z\"}\n    │...\n 208│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (v0.30.5), DIAGNOSTIC-RIG phase, worktree `.worktrees/uwedge2`, branch `uwedge2-resume-viewer`. v0.30.4 (counter 55 @b0d7719, resume-as-Viewer) shipped, correct …\",\"ts\":\"2026-07-09T23:57:25Z\"}\n*209│{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> todlando — spt-core executor (HFENDULEAM). Lane discipline held: doyle scopes+gates, todlando builds, deployah publishes, perri builds adapter blind. Report-before-fix + [[ground-dont-a…\",\"ts\":\"2026-07-10T00:10:40Z\"}\n 210│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (v0.30.5) — DIAGNOSTIC-RIG phase, session ended pre-build (checkpoint written, no further action taken). v0.30.4 (counter 55 @b0d7719, resume-as-Viewer) shipped,…\",\"ts\":\"2026-07-10T00:14:55Z\"}\n*211│{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> todlando — spt-core executor (HFENDULEAM). Lane discipline held: doyle scopes+gates, todlando builds, deployah publishes, perri builds adapter blind. Report-before-fix + ground-dont-ass…\",\"ts\":\"2026-07-10T00:18:08Z\"}\n 212│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (v0.30.5), DIAGNOSTIC-RIG phase. v0.30.4 (counter 55 @b0d7719, resume-as-Viewer) shipped, correct for Failure A (controller-steal) but field-verify FAILED — box …\",\"ts\":\"2026-07-10T00:19:05Z\"}\n 213│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (v0.30.5) — checkpoint at DIAGNOSTIC-RIG phase start. v0.30.4 (counter 55 @b0d7719, resume-as-Viewer) shipped, CORRECT for Failure A (controller-steal dead) but …\",\"ts\":\"2026-07-10T00:26:49Z\"}\n 214│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Round-3 (v0.30.5) diagnostic-rig checkpoint written to `.claude/todlando-commune.md` in worktree `.worktrees/uwedge2` (branch `uwedge2-resume-viewer`). doyle ruled \\\"Aligned, GO\\\" for …\",\"ts\":\"2026-07-10T00:33:49Z\"}\n 215│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (v0.30.5) — DIAGNOSTIC-RIG phase. v0.30.4 (counter 55 @b0d7719, resume-as-Viewer) shipped, CORRECT (kills controller-steal) but field-verify FAILED — box still w…\",\"ts\":\"2026-07-10T00:39:09Z\"}\n*216│{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> todlando — spt-core executor (HFENDULEAM). Lane discipline held: doyle scope+gate, todlando build, deployah publish, perri adapter (blind). Report-before-fix + ground-dont-assume-on-inc…\",\"ts\":\"2026-07-10T00:44:17Z\"}\n 217│{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T00:46:27Z\"}\n 218│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (v0.30.5) — diagnostic-rig phase, worktree `.worktrees/uwedge2`, branch `uwedge2-resume-viewer`. v0.30.4 (counter 55 @b0d7719, resume-as-Viewer fix) shipped/corr…\",\"ts\":\"2026-07-10T00:47:48Z\"}\n 219│{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> UPDATE-WEDGE round-3 (v0.30.5), DIAGNOSTIC-RIG phase, worktree `.worktrees/uwedge2`, branch `uwedge2-resume-viewer`. v0.30.4 (counter 55 @b0d7719, resume-as-Viewer) shipped, correct …\",\"ts\":\"2026-07-10T00:48:28Z\"}","truncation":{"content":"# C:/Users/decid/AppData/Local/spt-core/owlery/\n\n## chert/\n### digest.log\n 4|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main), agent id \\\"chert\\\". Session start only — no task work performed, no tool calls made, no messages exchanged. Git status at session start showed…\",\"ts\":\"2026-07-09T08:30:47Z\"}\n*5|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended before any task work began. Session start only: agent \\\"chert\\\" launched in spt-core repo (branch main), Windows/HFENDULEAM host, caveman-mode hook active (full level). U…\",\"ts\":\"2026-07-09T08:33:51Z\"}\n 6|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: modified files CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untracke…\",\"ts\":\"2026-07-09T08:34:14Z\"}\n 7|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work done this session. Session opened on branch `main` with pre-existing uncommitted changes: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump…\",\"ts\":\"2026-07-09T08:34:53Z\"}\n 8|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session had no user prompt and no work performed — only SessionStart hook fired (caveman-mode + spt live-perch context injection). No files touched beyond pre-existing git status (CO…\",\"ts\":\"2026-07-09T08:35:12Z\"}\n...\n 24|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main), agent id \\\"chert\\\", live perch already active. No task work occurred in this session tail — only SessionStart hook boilerplate fired (caveman-…\",\"ts\":\"2026-07-09T08:42:55Z\"}\n*25|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on spt-core opened at 2026-07-09T08:22:58Z on host HFENDULEAM, agent id \\\"chert\\\". No task content in transcript — session ended immediately after SessionStart hooks fired (age…\",\"ts\":\"2026-07-09T08:43:13Z\"}\n 26|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" on spt-core opened at 2026-07-09 with no substantive work performed — transcript tail is only session-start hook boilerplate (caveman-mode activation, l…\",\"ts\":\"2026-07-09T08:43:35Z\"}\n 27|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session started, no work performed. spt-core repo (harness-independent agent ecosystem core: messaging, live-agent lifecycle, terminal hosting, P2P networking). Working tree at sessi…\",\"ts\":\"2026-07-09T08:43:58Z\"}\n 28|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) with agent id \\\"chert\\\" but no substantive work occurred — transcript tail is only session-start bootstrap (caveman-mode hook, live-perch instr…\",\"ts\":\"2026-07-09T08:44:19Z\"}\n...\n 31|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened for spt agent \\\"chert\\\" in spt-core (main branch), but no work was performed — transcript tail contains only SessionStart hook boilerplate (caveman-mode activation, live…\",\"ts\":\"2026-07-09T08:45:25Z\"}\n*32|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Session opened on spt-core repo, live agent id \\\"chert\\\" (perch already active, host HFENDULEAM). Repo has uncommitted changes at session start: modi…\",\"ts\":\"2026-07-09T08:45:44Z\"}\n 33|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" on spt-core (main branch) contained only SessionStart hook activity — no user prompt or work was executed. No task in progress, no decisions made, no fi…\",\"ts\":\"2026-07-09T08:46:03Z\"}\n 34|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Agent identity \\\"chert\\\" initialized live perch on spt-core repo (main branch). Uncommitted changes present at session start (not made this sess…\",\"ts\":\"2026-07-09T08:46:24Z\"}\n 35|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred in this session — transcript is only SessionStart hook output (caveman-mode load, live-perch briefing for agent \\\"chert\\\"). No files touched, no decisions made, n…\",\"ts\":\"2026-07-09T08:46:41Z\"}\n...\n 52|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Live agent perch \\\"chert\\\" initialized in spt-core repo (C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core), branch main. Git status at session st…\",\"ts\":\"2026-07-09T08:53:30Z\"}\n*53|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Session opened on spt-core main branch (HFENDULEAM host, agent id \\\"chert\\\"), no task assigned yet. Working tree has uncommitted changes present at s…\",\"ts\":\"2026-07-09T08:53:54Z\"}\n 54|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task content, decisions, or work done. Session ended before any user prompt or work occurred (transcript tail contains only startup hooks/attachments). </proj…\",\"ts\":\"2026-07-09T08:54:14Z\"}\n 55|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task content in transcript tail — session only contains SessionStart hook init (caveman-mode load, spt live-perch context, agent-picker prompt) and bridge-status. No files touched…\",\"ts\":\"2026-07-09T08:54:31Z\"}\n 56|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch) with live perch id \\\"chert\\\". No task work occurred — transcript is only session-start hook output (caveman-mode activation, agent-picker promp…\",\"ts\":\"2026-07-09T08:54:57Z\"}\n...\n 67|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch `main`, spt-core repo, with pre-existing uncommitted changes present at session start (CONTEXT.md, crates/spt-daemon/src/…\",\"ts\":\"2026-07-09T09:00:26Z\"}\n*68|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed yet. Session bootstrapped as spt live agent \\\"chert\\\" on spt-core repo (HFENDULEAM host, branch main). Uncommitted working tree at session start:…\",\"ts\":\"2026-07-09T09:00:51Z\"}\n 69|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session opened on spt-core repo, branch main, with uncommitted changes present at start: modified CONTEXT.md, crates/spt-daemon/src/{broke…\",\"ts\":\"2026-07-09T09:01:15Z\"}\n 70|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session for spt agent \\\"chert\\\" opened in spt-core repo (branch main), perch already live/reachable. Uncommitted repo state at session start…\",\"ts\":\"2026-07-09T09:01:51Z\"}\n 71|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes on `main` in `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.…\",\"ts\":\"2026-07-09T09:02:23Z\"}\n...\n 79|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch) but no task work occurred — transcript is only session-start boilerplate (perch activation, caveman-mode hook, agent-picker prompt). Uncommit…\",\"ts\":\"2026-07-09T09:05:59Z\"}\n*80|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) with an already-live perch as agent \\\"chert\\\" on host HFENDULEAM. No user prompt or task content was present in the transcript tail — session s…\",\"ts\":\"2026-07-09T09:06:21Z\"}\n 81|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session began on branch `main` with uncommitted changes present: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.r…\",\"ts\":\"2026-07-09T09:06:46Z\"}\n 82|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt-core just started (2026-07-09). No task work occurred — session is empty aside from init/hooks. Repo has uncommitted changes at session start: modified CONTEXT.md, cr…\",\"ts\":\"2026-07-09T09:07:09Z\"}\n 83|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch `main` with pre-existing uncommitted changes (CONTEXT.md, crates/spt-daemon/{broker,lib,nethost,pump/mod,sync}.rs modifie…\",\"ts\":\"2026-07-09T09:07:29Z\"}\n*84|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. spt-core repo at HFENDULEAM host, agent id \\\"chert\\\" on live perch. Uncommitted state at session start: modified CONTEXT.md, crates/spt-daemon/s…\",\"ts\":\"2026-07-09T09:07:49Z\"}\n 85|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core, branch main, agent id \\\"chert\\\". No task work occurred in this session tail — it consists only of SessionStart hook boilerplate (caveman-mode activation, li…\",\"ts\":\"2026-07-09T09:08:10Z\"}\n 86|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Repo state at session open: uncommitted changes in CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.rs}; untrack…\",\"ts\":\"2026-07-09T09:09:25Z\"}\n 87|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened in spt-core (main branch) with no substantive work performed — transcript is only SessionStart hook boilerplate (caveman-mode load, live-perch setup for agent \\\"chert\\\")…\",\"ts\":\"2026-07-09T09:09:51Z\"}\n...\n 108|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) but no task work occurred — transcript is only session-start hook boilerplate (caveman-mode activation, live-perch/agent id \\\"chert\\\" setup, ag…\",\"ts\":\"2026-07-09T09:17:44Z\"}\n*109|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main) as live agent \\\"chert\\\" on host HFENDULEAM. No task work occurred — session consists only of startup hooks (caveman-mode activation, live-perch…\",\"ts\":\"2026-07-09T09:18:16Z\"}\n 110|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session for spt agent \\\"chert\\\" in spt-core repo started but no substantive work occurred — transcript is only session-start boilerplate (caveman-mode hook, live-perch instructions, ag…\",\"ts\":\"2026-07-09T09:19:11Z\"}\n 111|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work done. Session opened on branch `main` with uncommitted changes present at start: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,net…\",\"ts\":\"2026-07-09T09:19:36Z\"}\n 112|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session — transcript is only SessionStart hook boilerplate (caveman-mode load, spt-live-auto-pick agent picker, active-perch instructions). Repo working tr…\",\"ts\":\"2026-07-09T09:20:00Z\"}\n...\n 146|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session started fresh on spt-core, main branch. No task work occurred — session opened, hooks fired (caveman mode active, live-agent perch \\\"chert\\\" established), then ended without fu…\",\"ts\":\"2026-07-09T09:33:40Z\"}\n*147|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Agent id \\\"chert\\\" on host HFENDULEAM, spt-core repo, main branch. Session ended before any task began; no decisions, no file changes beyond pre…\",\"ts\":\"2026-07-09T09:34:00Z\"}\n 148|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred this session. Session opened on branch main with pre-existing uncommitted changes (CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sy…\",\"ts\":\"2026-07-09T09:34:37Z\"}\n 149|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work done. Repo has uncommitted changes: modified CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; new untracked crates/sp…\",\"ts\":\"2026-07-09T09:35:01Z\"}\n 150|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.r…\",\"ts\":\"2026-07-09T09:35:31Z\"}\n...\n 159|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Repo state at session start (uncommitted): modified CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untra…\",\"ts\":\"2026-07-09T10:03:18Z\"}\n*160|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Session ID 4bc2e259-0e4a-4331-be30-6e6b8230bf2a, agent \\\"chert\\\" @ HFENDULEAM, spt-core repo, branch main. Uncommitted git status at sessio…\",\"ts\":\"2026-07-09T10:03:57Z\"}\n 161|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work occurred. Session belongs to spt agent \\\"chert\\\" in spt-core repo (branch main). Repo has uncommitted changes at session start: modified CONTEXT.md, c…\",\"ts\":\"2026-07-09T10:05:03Z\"}\n 162|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Repo state at session start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod.rs, sync.r…\",\"ts\":\"2026-07-09T10:23:09Z\"}\n*163|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (main branch), agent perch \\\"chert\\\" on host HFENDULEAM. No task work occurred in this session — it consists only of session-start hook boilerplate (caveman-…\",\"ts\":\"2026-07-09T10:24:31Z\"}\n 164|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work occurred. Session opened on spt-core (branch main), agent id \\\"chert\\\", ended before any prompt/instruction was given. Working tree at session start had uncommitted change…\",\"ts\":\"2026-07-09T10:38:10Z\"}\n 165|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no work performed. Repo state at start: uncommitted changes to CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untracked cra…\",\"ts\":\"2026-07-09T10:38:49Z\"}\n 166|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only — no task work performed. Working tree at session start had uncommitted modifications to CONTEXT.md, crates/spt-daemon/src/{broker.rs, lib.rs, nethost.rs, pump/mod…\",\"ts\":\"2026-07-09T10:39:50Z\"}\n\n## deployah/\n### digest.log\n 75|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> PC crashed mid-session on spt-core release drive. PR#67 (SaberMage/spt-core) = 0.30.1 patch bump, pure bugfix, doyle GATER-APPROVED just before crash: base=main w/ b4862f3, CHANGELOG…\",\"ts\":\"2026-07-09T08:14:35Z\"}\n*76|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release resume after PC/hfenduleam runner crash mid-run. State at crash: PR #67 merged (`ae82332`, \\\"release v0.30.1 — PUMP-TRUTH W1 reply-read poison fix (counter 52)\\\"), tag …\",\"ts\":\"2026-07-09T08:15:43Z\"}\n 77|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 (counter 52) release in progress on main @ae82332 (PR #67 merged: PUMP-TRUTH W1 reply-read poison fix). Tag pushed, GitHub Actions release run `29002964275` triggered ~20min …\",\"ts\":\"2026-07-09T08:16:36Z\"}\n*78|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release resume after PC/runner crash (deployah, hfenduleam runner). State at cutoff: - PR #67 merged to main @ae82332 (\\\"Merge PR #67: release v0.30.1 — PUMP-TRUTH W1 reply-re…\",\"ts\":\"2026-07-09T08:17:11Z\"}\n 79|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 released — counter 52, tag @ae82332, published on SaberMage/spt-releases. Verified: isDraft=false, isPrerelease=false, Latest, all assets present (3 binaries, 3 .release.json…\",\"ts\":\"2026-07-09T08:23:31Z\"}\n 80|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.1 release PUBLISHED, counter 52, tag @ae82332. Ships PUMP-TRUTH W1 fix (peer-pump reply-read poison, propagate.rs:373-375, PR#66 @b4862f3) — connect-then-silent peer no longer …\",\"ts\":\"2026-07-09T08:24:30Z\"}\n 81|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: cut release v0.30.2 (PUMP-TRUTH W2, REQ-PUMP-PEER-ISOLATION), counter 53. Status: PR #69 open (release/v0.30.2 @d63a634, off origin/main @8f83b9d), CI running (n1-gate + test o…\",\"ts\":\"2026-07-09T09:55:20Z\"}\n...\n 92|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.2 (counter 53, PUMP-TRUTH W2, @2c05dc9) shipped SOLO by deployah — flip confirmed, memory updated (v0302-published.md + MEMORY.md index/ledger entries). Counter 54 HELD, bundle…\",\"ts\":\"2026-07-09T11:02:42Z\"}\n*93|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Deployah session, spt-core repo, HFENDULEAM box. **Task:** release-driver role, publishing counters. **Status v0.30.2 (counter 53):** SHIPPED SOLO, verified live — flip confirmed, PU…\",\"ts\":\"2026-07-09T11:03:54Z\"}\n 94|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T11:46:39Z\"}\n*95|{\"context_kind\":\"echo_mirror\",\"body\":\"v0.30.2 counter 53 SHIPPED SOLO, verified. Counter 54 HELD, waiting doyle GO on F-035 re-RCA. Standing by, idle. <project-context> Deployah, spt-core repo, HFENDULEAM box. **v0.30.2 (counter 53):** SH…\",\"ts\":\"2026-07-09T11:47:11Z\"}\n 96|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T12:23:33Z\"}\n 97|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> spt-core repo. deployah = release-driver role, session ended via checkpoint self-clear (no user turn, agent wrote checkpoint commune then cleared). Status: HOLDING for doyle's GO on …\",\"ts\":\"2026-07-09T12:23:52Z\"}\n 98|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah, spt-core repo. Release-driver task: HOLDING for counter 54 (v0.30.3 patch, bundles gateway-liveness #70 @9079198 MERGED + F-035 fix). doyle gates GO; F-035 re-opened 2026-0…\",\"ts\":\"2026-07-09T12:24:31Z\"}\n...\n 117|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T20:48:28Z\"}\n*118|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> deployah (spt-core release driver, HFENDULEAM box). Session resumed from checkpoint, PR#69/PR#72 context. Standing by for doyle GO on counter 54 (=v0.30.3 patch). No action taken — 3…\",\"ts\":\"2026-07-09T20:48:58Z\"}\n 119|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T21:41:55Z\"}\n 120|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 release (counter 55, update-wedge round-2) drove to PR #73 by deployah. - Fix branch `uwedge2-resume-viewer` tip 7782bda (fb499db fix REQ-BRAIN-RESUME-NO-CONTROL-STEAL + doc …\",\"ts\":\"2026-07-09T21:45:21Z\"}\n 121|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 release drive, deployah agent, repo spt-core, worktree `.worktrees/rel-0.30.4`, branch `release/v0.30.4` (PR #73). **Status:** - doyle GATE PASS'd UPDATE-WEDGE round-2 (resum…\",\"ts\":\"2026-07-09T21:59:53Z\"}\n...\n 145|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release HOLD — PR #74, branch release/v0.30.5, based on fix-tip 03c71093 (branch uw…). Doyle GATE PASS'd deadlock fix; deployah cut release, CI n1-gate ×2 + trac…\",\"ts\":\"2026-07-10T01:16:26Z\"}\n*146|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> ## v0.30.5 (counter 56) release HELD — hfenduleam CI runner live-wedged PR #74 (branch uw3, fix-tip 03c71093), gate-passed by doyle for the SharedSend deadlock fix. deployah opened r…\",\"ts\":\"2026-07-10T01:17:26Z\"}\n 147|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release, PR #74, branch `release/v0.30.5` (fix-tip `03c71093`, worktree `.worktrees/rel-0.30.5`). Fix targets the SharedSend deadlock (doyle's PTY-froze incident…\",\"ts\":\"2026-07-10T01:40:21Z\"}\n 148|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T01:46:30Z\"}\n 149|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 (counter 56) release, PR #74, branch `release/v0.30.5` (fix-tip `03c71093`, worktree `.worktrees/rel-0.30.5`). Fix targets SharedSend deadlock (doyle's PTY-froze incident). G…\",\"ts\":\"2026-07-10T01:47:08Z\"}\n...\n 154|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 release (counter 56) — merged + tagged, publish HELD. State: - PR #74 merged → origin/main @0a306c9 (v0.30.5). - Tag v0.30.5 @0a306c9 pushed → release.yml run 29063765059 bui…\",\"ts\":\"2026-07-10T02:07:15Z\"}\n*155|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — merged + tagged @0a306c9 on PR #74 (origin/main). CI green both legs (Linux kitsubito, Windows hfenduleam), n1-gate ×2, traceability. Round-3 fix for update-wedg…\",\"ts\":\"2026-07-10T02:07:46Z\"}\n 156|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.5 release (round-3 update-wedge fix, IPC read-loop starvation isolation). Session ended mid-watch of release build. State: - PR #74 merged → origin/main @0a306c9 (v0.30.5…\",\"ts\":\"2026-07-10T02:08:41Z\"}\n 157|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — DRAFT CUT, PUBLISH HELD for operator field-verify. Counter 56 UNCLAIMED. Fix: update-wedge ROUND-3. Root cause = SharedSend brain-conn self-deadlock — daemon res…\",\"ts\":\"2026-07-10T02:21:52Z\"}\n 158|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.5 counter 56 — DRAFT CUT, PUBLISH HELD for operator field-verify. STATE: merged + tagged + draft assembled. release-publish HELD (B-discipline). Counter 56 UNCLAIMED. - Fix: up…\",\"ts\":\"2026-07-10T02:22:51Z\"}\n...\n 227|{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> Role: deployah — release driver for spt-core. Publishes via xtask release-publish; counter/version from published spt-releases metadata, not memory. Session ended without explicit signo…\",\"ts\":\"2026-07-10T13:03:04Z\"}\n*228|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened, hit rate limit immediately (resets 7:30am America/Los_Angeles) before any work done. No task attempted, no files touched. Inbound msg from cli@HFENDULEAM: MSG-IDENTIT…\",\"ts\":\"2026-07-10T13:33:29Z\"}\n*229|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on branch `triage/update-wedge-rca-trace` in spt-core. deployah received incoming spt message from cli@HFENDULEAM: MSG-IDENTITY milestone OPENED (PR #78, triage regist…\",\"ts\":\"2026-07-10T13:35:16Z\"}\n 230|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session did no work on spt-core repo itself. Branch: triage/update-wedge-rca-trace (uncommitted local changes present per git status: CONTEXT.md, spt-daemon files, traceable-reqs.tom…\",\"ts\":\"2026-07-10T19:13:19Z\"}\n 231|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone OPENED (PR #78) — doyle dispatched, deployah (this agent) acked standby. 6-wave messaging delivery-integrity + endpoint identity fix cluster; includes deployah…\",\"ts\":\"2026-07-10T19:13:54Z\"}\n 232|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster covering messaging delivery-integrity + endpoint identity, folds in deployah's two v0.30.6 handoffs (F-0…\",\"ts\":\"2026-07-10T19:14:55Z\"}\n...\n 234|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> MSG-IDENTITY milestone (PR #78, spt-core) opened by doyle: 6-wave fix cluster, messaging delivery-integrity + endpoint identity. Folds in deployah's two v0.30.6 handoffs — F-038 mobi…\",\"ts\":\"2026-07-10T22:22:06Z\"}\n*235|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 open (deployah, HFENDULEAM box). Base main @a6ff501 (MSG-IDENTITY milestone tip, PRs #79-#84 merged). Bump-in-PR: Cargo.toml + Cargo.lock (first-party) + CHANG…\",\"ts\":\"2026-07-11T03:39:59Z\"}\n 236|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.31.0 release cut (MSG-IDENTITY milestone, counter 58). Session ended mid-CI-watch, no signoff. Status: - Bump commit 97a0e4f pushed to release/v0.31.0 (Cargo.toml/Cargo.lock…\",\"ts\":\"2026-07-11T03:41:49Z\"}\n 237|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release PR #85 opened (SaberMage/spt-core), base main @a6ff501, head release/v0.31.0 @97a0e4f. Counter 58 (last published 57 = v0.30.6). Commit staged only Cargo.toml, Cargo.…\",\"ts\":\"2026-07-11T03:43:19Z\"}\n 238|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.31.0 release: PR #85 merged @c9586d1, all CI jobs pass (n1-gate/test both runners, traceability; twohost skipped standard). Tag v0.31.0 pushed on merged main HEAD. Ping sent to do…\",\"ts\":\"2026-07-11T03:59:31Z\"}\n\n## doyle/\n### digest.log\n 741|{\"context_kind\":\"echo_mirror\",\"body\":\"LIFECYCLE-TRUTH complete. v0.29.0 (counter 49) SHIPPED + field-verified, box live. **Status:** - All 6 waves gated+blessed, released @d0c1cf1, CI gate-hold fixed @7190730. - W1 field-accept swap windo…\",\"ts\":\"2026-07-08T04:38:05Z\"}\n*742|{\"context_kind\":\"echo_mirror\",\"body\":\"# Diagnose task: librarian unreachable via `spt send` (PR #57, lifecycle-truth) **Status:** root cause found, converged, no fix applied yet. ## Findings - Repro: first `spt send` → `WAN_FAIL:librarian…\",\"ts\":\"2026-07-08T05:29:05Z\"}\n*743|{\"context_kind\":\"echo_mirror\",\"body\":\"# Delta: librarian WAN delivery stall (2026-07-08) **Task:** debug — remote node (librarian, on desktop DESKTOP-VHCFIBH) shows \\\"peer unresponsive\\\" for message delivery, on branch `lifecycle-truth`. **…\",\"ts\":\"2026-07-08T05:42:42Z\"}\n*744|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM, subnet BS-Resources delivery break ## Task Diagnose HFENDULEAM→DESKTOP delivery failure in BS-Resources subnet (2-node). ## Root found Asymmetric reachability, no…\",\"ts\":\"2026-07-08T05:49:32Z\"}\n*745|{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: HFENDULEAM↔DESKTOP subnet reachability bug (BS-Resources subnet) **Status:** unresolved. Ping works (LAN + Tailscale, both Private profile). Firewall ruled out — `spt-core inbound UDP` rule A…\",\"ts\":\"2026-07-08T05:56:46Z\"}\n*746|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM iroh reachability RCA (2026-07-08) **Task:** DESKTOP can't discover/reach HFENDULEAM's spt daemon over the shared LAN subnet (all in `SPT_DEV`/`BIGNET`/`BS-Resources` subn…\",\"ts\":\"2026-07-08T05:59:43Z\"}\n*747|{\"context_kind\":\"echo_mirror\",\"body\":\"## librarian (HFENDULEAM) unreachable from DESKTOP — RCA in progress, fix pending **Status:** doyle diagnosing why `spt send librarian` from HFENDULEAM fails to reach DESKTOP-side node, post 0.28.0→0.…\",\"ts\":\"2026-07-08T06:01:23Z\"}\n*748|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM subnet-rejoin investigation (no signoff) ## Task Debugging why HFENDULEAM (machine, agent doyle) can't rejoin subnet `BS-Resources` after operator ran `spt subnet leave BS…\",\"ts\":\"2026-07-08T06:12:20Z\"}\n*749|{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n*750|{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n 751|{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n*752|{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n*753|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n*754|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session Delta — doyle @ HFENDULEAM (spt-core/, lifecycle-truth branch) **Task:** Answered perri's question (adapter builder, spt-mobile/claude-spt digest fetcher, strategy=fetcher) about spt-core's…\",\"ts\":\"2026-07-08T09:29:33Z\"}\n 755|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T09:46:34Z\"}\n 756|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle session — v0.29.0 + inject-truncation diagnose ## Status v0.29.0 shipped, checkpoint written to `.claude/doyle-commune.md`. Session interrupted mid-diagnose. ## Shipped this session v0.29.0 (L…\",\"ts\":\"2026-07-08T09:47:12Z\"}\n 757|{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 SHIPPED — release counter 49, LIFECYCLE-TRUTH Solo cut (doyle, deployah parked). Bump @a74e526 → CI gate-hold #1 fix @7190730 (n1-gate stderr escape + traceability `check --json` parse) → P…\",\"ts\":\"2026-07-08T09:54:33Z\"}\n...\n 764|{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 SHIPPED — counter 49, LIFECYCLE-TRUTH doyle drove whole cut solo. Bump @a74e526 → CI gate-hold fixed @7190730 (n1-gate stderr-observation escape + traceability parse gate) → PR#57 merge @d0…\",\"ts\":\"2026-07-08T10:18:51Z\"}\n*765|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle @ HFENDULEAM — commune delta (2026-07-08) ## Shipped this session v0.29.0 (counter 49, LIFECYCLE-TRUTH) published, solo drive @d0c1cf1. CHANGELOG corrected @8aac39b. Full detail in memory `[[v…\",\"ts\":\"2026-07-08T10:26:18Z\"}\n 766|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-08T10:29:16Z\"}\n 767|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-08T10:29:16Z\"}\n 768|{\"context_kind\":\"echo_mirror\",\"body\":\"## v0.29.0 shipped, W2 diagnose interrupted mid-read **Ship: v0.29.0 = counter 49 (LIFECYCLE-TRUTH)**, doyle solo drive. Bump→gate-hold fix→PR#57 merge@d0c1cf1→tag→sign→publish. CHANGELOG corrected@8a…\",\"ts\":\"2026-07-08T10:41:59Z\"}\n...\n 782|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle session delta — 2026-07-08 **Shipped:** v0.29.0 (LIFECYCLE-TRUTH, counter 49) published solo, then CHANGELOG corrected @8aac39b. Full detail already in memory (`[[v0290-published]]`), commune …\",\"ts\":\"2026-07-08T11:42:28Z\"}\n*783|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM (spt-core/, session aed3e074, interrupted) **Task active:** /diagnose PTY inject head-truncation on 0.29.0. Repeat of REQ-INJECT-MULTILINE-INTEGRITY, NOT fixed by …\",\"ts\":\"2026-07-08T11:52:02Z\"}\n 784|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session state: doyle, spt-core, session interrupted mid-diagnose **Shipped this session:** v0.29.0 (counter 49, LIFECYCLE-TRUTH) — PR#57 merged @d0c1cf1, tagged, doyle-signed, published. CHANGELOG …\",\"ts\":\"2026-07-08T16:54:19Z\"}\n 785|{\"context_kind\":\"echo_mirror\",\"body\":\"**v0.29.0 shipped, counter 49.** doyle solo drive, deployah parked. Commune saved to `.claude\\\\doyle-commune.md` before interrupt. **Open thread 1 — BS-Resources subnet gone.** Operator drained during …\",\"ts\":\"2026-07-08T16:55:28Z\"}\n*786|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM (spt-core, lifecycle-truth branch) **v0.29.0 SHIPPED** (release counter 49, LIFECYCLE-TRUTH). Doyle drove solo: bump @a74e526 → CI gate-hold #1 fixed @7190730 (n1…\",\"ts\":\"2026-07-08T16:56:41Z\"}\n*787|{\"context_kind\":\"echo_mirror\",\"body\":\"# Session delta — doyle @ HFENDULEAM, spt-core **Box state:** on v0.29.1 now per repo (release/0.29.1 branch, latest commit `6d97dc2` = published counter 50). Session transcript itself was mid-work on…\",\"ts\":\"2026-07-08T17:11:32Z\"}\n 788|{\"context_kind\":\"echo_mirror\",\"body\":\"# spt-core session delta — doyle, 2026-07-08 ## Shipped this session v0.29.0 published (release counter 49, LIFECYCLE-TRUTH milestone). Solo drive by doyle: bump @a74e526 → CI gate-hold fixed @7190730…\",\"ts\":\"2026-07-08T17:14:58Z\"}\n*789|{\"context_kind\":\"echo_mirror\",\"body\":\"# Session Delta — doyle @ HFENDULEAM ## Status: v0.29.0 SHIPPED, active /diagnose in progress (interrupted mid-Phase-1) **Shipped this session:** v0.29.0 (release counter 49, LIFECYCLE-TRUTH milestone…\",\"ts\":\"2026-07-08T17:17:24Z\"}\n 790|{\"context_kind\":\"echo_mirror\",\"body\":\"v0.29.0 shipped, counter 49, doyle solo. Checkpoint written to `.claude\\\\doyle-commune.md`. **Now: active /diagnose, PTY inject head-truncation STILL on 0.29.0.** **Evidence:** perri screenshot shows i…\",\"ts\":\"2026-07-08T17:18:27Z\"}\n 791|{\"context_kind\":\"echo_mirror\",\"body\":\"**Task:** doyle diagnosing PTY inject head-truncation still happening on 0.29.0, despite W5 REQ-INJECT-MULTILINE-INTEGRITY fix (settle-gate + echo-verify). **Status:** checkpoint saved to `.claude/doy…\",\"ts\":\"2026-07-08T17:19:21Z\"}\n*792|{\"context_kind\":\"echo_mirror\",\"body\":\"# doyle @ HFENDULEAM — commune delta **Shipped this session:** v0.29.1 has already been released as a separate patch (per gitStatus/HEAD @6d97dc2 — inject settle-gate re-arm fix, merged/tagged before …\",\"ts\":\"2026-07-08T17:19:50Z\"}\n 793|{\"context_kind\":\"echo_mirror\",\"body\":\"**Session end mid-diagnose. v0.29.0 shipped, /diagnose active on inject truncation recurrence.** ## Shipped v0.29.0 (LIFECYCLE-TRUTH, counter 49) published solo by doyle. CHANGELOG corrected @8aac39b.…\",\"ts\":\"2026-07-08T17:28:09Z\"}\n 794|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-08T17:31:41Z\"}\n 795|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-08T17:31:41Z\"}\n...\n 816|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, counter 49, doyle solo drive. Full detail already in memory [[v0290-published]] + [[lifecycle-truth-build-progress]] — no new project facts to add there. Session spl…\",\"ts\":\"2026-07-08T23:30:26Z\"}\n*817|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, doyle solo drove full cut. Details in [[v0290-published]] + [[lifecycle-truth-build-progress]]. Open thread 1 — BS-Resources subnet gone. Root cause: HFENDULEAM's re…\",\"ts\":\"2026-07-08T23:39:56Z\"}\n 818|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T23:41:35Z\"}\n 819|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 shipped, counter 49, LIFECYCLE-TRUTH. Solo doyle drive. CHANGELOG corrected @8aac39b post-field-review. Full detail: [[v0290-published]], [[lifecycle-truth-build-progress]]. …\",\"ts\":\"2026-07-08T23:41:47Z\"}\n 820|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session interrupted mid-/diagnose, checkpoint already saved to `.claude\\\\doyle-commune.md`. **Task 1 (DONE this session):** shipped v0.29.0 (release counter 49, LIFECYCLE-TRUTH). doyl…\",\"ts\":\"2026-07-08T23:42:30Z\"}\n...\n 865|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.29.0 (LIFECYCLE-TRUTH, counter 49) SHIPPED @d0c1cf1, PR#57. doyle drove solo. Checkpoint file written this session: `.claude/doyle-commune.md`. Two open threads at cutoff: **Threa…\",\"ts\":\"2026-07-09T03:47:27Z\"}\n*866|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> doyle @ spt-core, HFENDULEAM box. Session interrupted mid-/diagnose Phase 1. **Shipped this session:** v0.29.0 = release counter 49 (LIFECYCLE-TRUTH). doyle solo drove cut: bump @a74…\",\"ts\":\"2026-07-09T04:01:24Z\"}\n 867|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session interrupted mid-/diagnose, doyle (gater), spt-core, branch lifecycle-truth. **v0.29.0 shipped this session** (counter 49, LIFECYCLE-TRUTH). Solo drive by doyle: bump @a74e526…\",\"ts\":\"2026-07-09T04:06:11Z\"}\n 868|{\"context_kind\":\"echo_mirror\",\"body\":\"guard=1\",\"ts\":\"2026-07-09T04:11:26Z\"}\n 869|{\"context_kind\":\"echo_mirror\",\"body\":\"{\\\"r\\\":\\\"a\\\",\\\"t\\\":\\\"yo\\\"} {\\\"r\\\":\\\"u\\\",\\\"t\\\":\\\"hi\\\"}\",\"ts\":\"2026-07-09T04:11:27Z\"}\n\n### nested/doyle-psyche/\n#### UPDATE-WEDGE-2-SME-RCA-ROUND3.md\n 7|\n*8|**Failure B (IPC saturation on respawn)** — NOT fixed. This is what actually wedged HFENDULEAM on v0.30.4.\n 9|\n 10|On brain swap, the single brain↔broker IPC connection was saturated by concurrent:\n 11|- 4-session Viewer resume-replay drain\n\n#### .claude/\n##### doyle-commune.md\n 2|<project-context>\n*3|Session idle-only, no active work performed. Read `project_v0304_wedge_rca.md` memory (v0.30.4/v0.30.5 HFENDULEAM wedge RCA — full context already captured there, unchanged by this session). Last incoming event before idle: msg from \"hertz\" reporting capture completed, CAPTURE_DIR=`C:\\Users\\decid\\AppData\\Local\\spt-core\\rca-capture-20260709-215646`, signed v0.30.5/counter56 fetched, applied, brain generation1 — message was truncated in transcript, content not fully read/processed this session. Session...\n 4|\n 5|Open threads unchanged from prior memory: round-3b field-verify concluded resume-path theory was wrong (4 fix rounds chased wrong root cause); next round must target old-brain-conn-release / steady-state jam instead. Publish/flip of v0.30.5 still on HOLD pending operator field-verify. Pre-update spontaneous-wedge lead still untriaged.\n 6|\n\n#### docs/\n##### UPDATE-WEDGE-2-RCA.md\n 14|\n*15|**Status: field-verify FAILED.** v0.30.4 wedged HFENDULEAM in the field despite passing gate.\n 16|\n 17|Log evidence (gen-1 brain log):\n 18|```\n\n## flynn/\n### digest.log\n 33|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T03:22:01Z\"}\n*34|{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — flynn / spt-mobile session end ## Task: voice-message-not-sending investigation (v1.0.5) User reported 3 failed attempts to send voice message. SSH'd to `decid@enlyzeam`, used adb to…\",\"ts\":\"2026-07-08T04:50:18Z\"}\n 35|{\"context_kind\":\"echo_mirror\",\"body\":\"Note: system-reminders in transcript (caveman mode, agent-picker prompt) are environment noise, not user content — ignored for this summary per instructions to flag suspicious injected content. ## Voi…\",\"ts\":\"2026-07-08T05:30:36Z\"}\n 36|{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: fix voice redial-on-stale-handle bug (v1.0.6), install to test device **Status:** Fix built, tested, committed. Install blocked — device offline. **Root cause found (adb diag):** mobile-gw ho…\",\"ts\":\"2026-07-08T06:00:07Z\"}\n 37|{\"context_kind\":\"echo_mirror\",\"body\":\"## Context delta — flynn @ spt-mobile **Task:** fix stale-handle voice redial (v1.0.6, commit `903bc90` — force host redial on stale-handle drain failure). **Status:** - v1.0.6 (versionCode 7) built, …\",\"ts\":\"2026-07-08T06:15:36Z\"}\n...\n 47|{\"context_kind\":\"echo_mirror\",\"body\":\"## Session end state — v1.0.6 shipped + released **Two bugs closed:** 1. Digest double-vision — root cause spt-core cross-gen snapshot union, fixed upstream @7e37e37 (spt 0.29.0), verified 0 collision…\",\"ts\":\"2026-07-08T08:05:20Z\"}\n*48|{\"context_kind\":\"echo_mirror\",\"body\":\"# Session delta — 2026-07-08, flynn @ HFENDULEAM (spt-mobile) ## Status: checkpoint, session ended clean Two bugs closed, one release shipped this session: 1. **Digest double-vision** — root cause: sp…\",\"ts\":\"2026-07-08T10:31:10Z\"}\n 49|{\"context_kind\":\"echo_mirror\",\"body\":\"Session ended v1.0.6 shipped, checkpoint written, /clear queued — no further user input after clear. ## Status: two bugs closed, release cut, checkpoint done **Digest double-vision**: root-caused spt-…\",\"ts\":\"2026-07-08T11:22:44Z\"}\n 50|{\"context_kind\":\"echo_mirror\",\"body\":\"v1.0.6 shipped + released. Session ended clean w/ checkpoint. ## Status - Digest double-vision: root cause upstream (spt-core gen-union), fixed core-side @7e37e37, shipped spt 0.29.0. Verified 0 cross…\",\"ts\":\"2026-07-08T11:52:36Z\"}\n 51|{\"context_kind\":\"echo_mirror\",\"body\":\"v1.0.6 shipped, released, verified. Two bugs closed. **Digest double-vision**: root cause spt-core cross-gen snapshot union on resume. Fixed upstream @7e37e37, shipped spt 0.29.0, verified 0 collision…\",\"ts\":\"2026-07-08T12:24:42Z\"}\n...\n 66|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> **Task: mobile-gw endpoint stuck Suspended after PC crash — spt-core bug identified, escalated to doyle.** Status: gateway DOWN. Root cause confirmed: spt-core 0.30.0 `spt endpoint w…\",\"ts\":\"2026-07-09T09:07:42Z\"}\n*67|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: mobile-gw endpoint stuck Suspended after PC crash on host HFENDULEAM; `spt endpoint run --id mobile-gw` cannot bring gateway up. Root cause found (behavioral, no spt-core inter…\",\"ts\":\"2026-07-09T09:08:10Z\"}\n 68|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> mobile-gw endpoint down since PC crash (2026-07-09). Root cause found: spt-core 0.30.0 `wake` bug — reports `Suspended -> Active` success but write never persists; `suspend`/`list`/a…\",\"ts\":\"2026-07-09T09:09:41Z\"}\n 69|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> RCA session, mobile-gw perch stuck Suspended after PC-crash. No code files touched, all diagnostic via `spt` CLI + doyle comms. **Chain confirmed with doyle (2026-07-09):** 1. PC cra…\",\"ts\":\"2026-07-09T09:18:18Z\"}\n 70|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> RCA investigation: mobile-gw perch stuck self-suspending after PC crash killed host process. **Root cause chain established (agreed w/ doyle):** 1. Crash killed host → perch went col…\",\"ts\":\"2026-07-09T09:19:28Z\"}\n...\n 103|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify spt-core update readiness for box (currently v0.30.2, running flynn + lia live agents), part of #70 mobile-gw 2-check verify sequence (reader-parity + rest_state). Statu…\",\"ts\":\"2026-07-09T23:17:53Z\"}\n*104|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> **Task:** Verify gateway cold-bringup fix (DEFECT A: rest_state not carrying through suspend/resume/re-bind cycle for mobile-gw endpoint) on live HFENDULEAM box. See [[gateway-cold-b…\",\"ts\":\"2026-07-09T23:23:58Z\"}\n 105|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify DEFECT A fix (rest_state-carry, core reader-parity fix) on gateway cold-bringup liveness bug — mobile-gw host previously died ~3s after cold re-bind because `--json` sta…\",\"ts\":\"2026-07-09T23:24:44Z\"}\n*106|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: verify #70 fix — mobile-gw cold-bringup liveness / rest_state suspend-honor defect. Testing on HFENDULEAM (operator's own box, same box as doyle's session — not a separate 0.30…\",\"ts\":\"2026-07-09T23:25:38Z\"}\n 107|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-09T23:28:05Z\"}\n*108|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (spt-mobile) RESOLVED and field-verified 2026-07-09 on this box (HFENDULEAM, spt 0.30.4, contains PR #70 via v0.30.3): spt-core `--json` status read…\",\"ts\":\"2026-07-09T23:28:26Z\"}\n 109|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list` and `--json` both ONLINE/Active across 3 subnets, host survived…\",\"ts\":\"2026-07-09T23:28:58Z\"}\n 110|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: both checks PASS on spt 0.30.4 (contains #70 via 0.30.3). Reader-parity — human `endpoint list` and `--json` both report mob…\",\"ts\":\"2026-07-09T23:29:30Z\"}\n 111|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list` and `--json` both ONLINE/Active across 3 subnets, host survived…\",\"ts\":\"2026-07-09T23:30:03Z\"}\n...\n 125|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness RCA closed 2026-07-09. #70 field-verify: both PASS on spt 0.30.4 (reader-parity + DEFECT A rest_state-carry). doyle accepted, RCA closed field-side, zero spt-mobile …\",\"ts\":\"2026-07-09T23:39:32Z\"}\n*126|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed for spt-mobile (HFENDULEAM box). **Resolved:** #70 field-verify passed on spt 0.30.4 (contains #70 via v0.30.3). Reader-parity: human `endpoint list` and …\",\"ts\":\"2026-07-09T23:40:26Z\"}\n 127|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: both PASS on spt 0.30.4 (reader-parity + rest_state-carry DEFECT A). doyle accepted, RCA closed, zero spt-mobile changes nee…\",\"ts\":\"2026-07-09T23:41:09Z\"}\n 128|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (mobile-gw self-suspend after cold boot) closed end-to-end. Root cause: spt-core's `endpoint list --json` reader dropped the pid-fallback that the h…\",\"ts\":\"2026-07-09T23:42:10Z\"}\n 129|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify: BOTH checks PASS on spt 0.30.4 (contains #70 via v0.30.3) — reader-parity (human `endpoint list` and `--json` both ONLINE/Ac…\",\"ts\":\"2026-07-09T23:42:43Z\"}\n...\n 133|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session closed the mobile-gw cold-bringup-liveness arc. #70 field-verify PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity confirmed (human `endpoint list` and `--json` bo…\",\"ts\":\"2026-07-09T23:45:19Z\"}\n*134|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09 on spt-mobile perch (node HFENDULEAM). #70 field-verify: both PASS on spt 0.30.4 (contains #70 via v0.30.3) — reader-parity (human `endpoint li…\",\"ts\":\"2026-07-09T23:45:56Z\"}\n 135|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4 (contains #70 via 0.30.3): reader-parity (human `endpoint list` vs `--json` both ONLINE/Active across…\",\"ts\":\"2026-07-09T23:46:29Z\"}\n 136|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify BOTH PASS on spt 0.30.4: reader-parity (human `endpoint list`==`--json` Active, mobile-gw host survived 120s suspend-honor so…\",\"ts\":\"2026-07-09T23:47:37Z\"}\n 137|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-cold-bringup-liveness arc CLOSED 2026-07-09. #70 field-verify both PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` == `--json` status, ONL…\",\"ts\":\"2026-07-09T23:48:22Z\"}\n...\n 156|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug (mobile-gw self-suspend on cold boot) RESOLVED. Root cause: spt-core `--json` endpoint status reader dropped pid-fallback that human `endpoint list`…\",\"ts\":\"2026-07-10T00:04:21Z\"}\n*157|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> STATUS 2026-07-09 (end of gateway-liveness arc, spt-mobile perch on node HFENDULEAM): CLOSED this session: - #70 gateway-liveness field-verify: BOTH PASS on spt 0.30.4 (contains #70 …\",\"ts\":\"2026-07-10T00:04:53Z\"}\n 158|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify PASSED on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` and `--json` agree ONLINE/Active across…\",\"ts\":\"2026-07-10T00:05:27Z\"}\n 159|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness bug RESOLVED. RCA closed with doyle this session. - Root cause was spt-core `--json` status reader dropping pid-fallback, causing suspend-honor to self-…\",\"ts\":\"2026-07-10T00:06:20Z\"}\n 160|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway-liveness arc closed 2026-07-09. #70 field-verify both checks PASS on spt 0.30.4 (contains #70 via v0.30.3): reader-parity (human `endpoint list` and `--json` both ONLINE/Acti…\",\"ts\":\"2026-07-10T00:47:35Z\"}\n...\n 169|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:24:34Z\"}\n*170|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened, no work performed. User immediately ran /exit before any task was given. </project-context> <live-context> Agent identity: flynn, spt-mobile perch on node HFENDULEAM.…\",\"ts\":\"2026-07-10T04:25:06Z\"}\n 171|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T04:25:21Z\"}\n 172|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness arc CLOSED 2026-07-09 (PR #70, v0.30.3, field-verify PASSED both cases, zero spt-mobile code changes). Memory already reflects this. Session received 4x…\",\"ts\":\"2026-07-10T04:25:53Z\"}\n 173|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Gateway cold-bringup liveness arc CLOSED 2026-07-09 (spt-core PR #70, v0.30.3, this box now on 0.30.4). Root cause was spt-core-side: `--json` reader dropped pid-fallback, causing ho…\",\"ts\":\"2026-07-10T04:27:12Z\"}\n\n## lia/\n### digest.log\n 103|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session role: lia forwarding bug reports/messages for user Reavo between spt endpoints (omp-pilot, hertz). Task/status this session: - Relayed 2 bug reports from Reavo to omp-pilot (…\",\"ts\":\"2026-07-10T04:18:41Z\"}\n*104|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: relay bug reports and check agent reachability via spt from lia (liaison, project dir `liaison/`). Forwarded to omp-pilot (2 bug reports, both delivered SENT(WAN) to live agent…\",\"ts\":\"2026-07-10T04:19:11Z\"}\n 105|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended mid-relay, no signoff. Task: lia (SPT liaison agent for user Reavo) relaying bug reports + build request to omp-pilot re: omp-spt tool. Bugs relayed to omp-pilot (both …\",\"ts\":\"2026-07-10T04:19:37Z\"}\n 106|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying omp-spt bug reports (Reavo → omp-pilot) and requesting build/release. Status: both bugs relayed to omp-pilot; omp-pilot confirmed live/responsive; lia relayed Reav…\",\"ts\":\"2026-07-10T04:20:33Z\"}\n 107|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia forwarded two bug reports to omp-pilot (github-com-bigscreenvr-athenaeum project) — (1) new-endpoint path must surface harness PTY, (2) manifest `[update]` command must use…\",\"ts\":\"2026-07-10T04:30:12Z\"}","truncated":true,"truncatedBy":"bytes","totalLines":409,"totalBytes":86364,"outputLines":252,"outputBytes":51041,"lastLinePartial":false,"firstLineExceedsLimit":false},"linesTruncated":true,"meta":{"limits":{"columnTruncated":{"maxColumn":512}},"truncation":{"direction":"head","truncatedBy":"bytes","totalLines":409,"totalBytes":86364,"outputLines":252,"outputBytes":51041,"shownRange":{"start":1,"end":252},"nextOffset":253}}},"isError":false,"timestamp":1784069246370}}
{"type":"message","id":"5a7c5bfc","parentId":"c6833b55","timestamp":"2026-07-14T22:47:26.387Z","message":{"role":"toolResult","toolCallId":"call_lKtGbfp1timvXNU66fpUo6cg|fc_050f56f290a937ae016a56bc7e21b48196be6388f481a4f58f","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/\n## releases/\nrelease.json\n## rca-active-20260709-222659/releases.before/\nrelease.json\n## rca-capture-20260709-215646/releases.before/\nrelease.json\n## adapters/_github/\n### BigscreenVR-omp-spt/strings/skills/\nversion.md\n### SaberMage-spt-mobile/state/history/\nspt-update.jsonl\n### SaberMage-claude-spt/strings/skills/\nversion.md\n### SaberMage-spt-claude-code/strings/skills/\nversion.md\n## tracked/.seed.git/hooks/\nupdate.sample\npost-update.sample\n## context/.seed.git/hooks/\nupdate.sample\npost-update.sample"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/**/*update*, C:/Users/decid/AppData/Local/spt-core/**/*release*, C:/Users/decid/AppData/Local/spt-core/**/*version*","fileCount":14,"files":["C:/Users/decid/AppData/Local/spt-core/releases/","C:/Users/decid/AppData/Local/spt-core/releases/release.json","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/releases.before/","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/releases.before/release.json","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/releases.before/","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/releases.before/release.json","C:/Users/decid/AppData/Local/spt-core/adapters/_github/BigscreenVR-omp-spt/strings/skills/version.md","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-mobile/state/history/spt-update.jsonl","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/strings/skills/version.md","C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-spt-claude-code/strings/skills/version.md","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/hooks/update.sample","C:/Users/decid/AppData/Local/spt-core/tracked/.seed.git/hooks/post-update.sample","C:/Users/decid/AppData/Local/spt-core/context/.seed.git/hooks/update.sample","C:/Users/decid/AppData/Local/spt-core/context/.seed.git/hooks/post-update.sample"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069246387}}
{"type":"message","id":"3e026c43","parentId":"5a7c5bfc","timestamp":"2026-07-14T22:47:26.399Z","message":{"role":"toolResult","toolCallId":"call_YtERWsc2H9lFj65RgBlAtCEB|fc_050f56f290a937ae016a56bc7e21a081969fe140ea6922e914","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n*1|=== spt brain stderr — generation 1 — pid 37736 ===\n*2|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\n 3|BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\n 4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n## daemon.stderr.log.1\n*1|=== spt brain stderr — generation 1 — pid 43932 ===\n*2|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)\n 3|BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n 4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n...\n 3842|BRAIN_UPDATE_RESTART: planned restart — cycling brain onto the swapped binary\n*3843|BRAIN_RESTART: planned update respawn (generation 1)\n*3844|=== spt brain stderr — generation 1 — pid 11052 ===\n*3845|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 11052, generation 1, start-reason update)\n 3846|BRAIN_RESUMED: re-established 5 session cursor(s): [1, 3, 6, 9, 4]\n*3847|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n 3848|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849|PUMP_IPC_READER: spawned\n 3850|PUMP_IPC_READER: spawned\n...\n 6167|BRAIN_UPDATE_RESTART: planned restart — cycling brain onto the swapped binary\n*6168|BRAIN_RESTART: planned update respawn (generation 1)\n*6169|=== spt brain stderr — generation 1 — pid 75424 ===\n*6170|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 75424, generation 1, start-reason update)\n 6171|BRAIN_RESUMED: re-established 4 session cursor(s): [4, 1, 3, 2]\n*6172|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n 6173|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6174|PUMP_IPC_READER: spawned\n 6175|PUMP_IPC_READER: spawned\n...\n 8598|RCA_CONN_COMMAND: conn_id=230 kind=unsubscribe elapsed_us=311293061\n*8599|BRAIN_RESTART: planned update respawn (generation 1)\n 8600|RCA_CONN_EOF: conn_id=228 error_kind=UnexpectedEof elapsed_us=311293841\n 8601|RCA_CONN_DETACH: conn_id=228 sid=3 session_found=true arc_matched=false cleared=false elapsed_us=311295034\n 8602|RCA_CONN_CLOSE: conn_id=228 elapsed_us=311295077\n...\n 8627|RCA_BOUNDED_WAIT_BEGIN:pid=82604 child_pid=49472 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n*8628|=== spt brain stderr — generation 1 — pid 46392 ===\n*8629|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 46392, generation 1, start-reason updateRCA_CONN_OPEN: conn_id=)\n 8630|270 elapsed_us=312401719\n 8631|BRAIN_RESUMED: re-established 4 session cursor(s): [1, 4, 3, 2]\n 8632|RCA_CONN_OPEN: conn_id=271 elapsed_us=312429521\n...\n 8637|RCA_CONN_CLOSE: conn_id=272 elapsed_us=312458256\n*8638|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n 8639|RCA_BOUNDED_WAIT_END:pid=82604 child_pid=49472 label=\"arbitrary_command\" elapsed_ms=181 outcome=exited status_code=Some(0)\n 8640|RCA_BOUNDED_WAIT_BEGIN:pid=82604 child_pid=68432 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n 8641|RCA_BOUNDED_WAIT_END:pid=82604 child_pid=68432 label=\"arbitrary_command\" elapsed_ms=141 outcome=exited status_code=Some(0)\n...\n 16299|DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 12480) — online at bind\n*16300|BRAIN_PROMOTED: candidate v57 signalled ready (generation 0) — swap accepted\n 16301|DAEMON_RESTART_RESUME:doyle: resuming session 6cf22920-8f60-4a09-9b8d-7d46280f9a8c under claude-spt (pid 39868) — online at bind\n 16302|DAEMON_RESTART_RESUME:flynn: resuming session f4c1fc0e-de8e-4df0-8416-f01761a944cb under claude-spt:ccs (pid 74392) — online at bind\n 16303|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 75756) — online at bind"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs, C:/Users/decid/AppData/Local/spt-core/rca-*","searchPath":"C:\\Users\\decid\\AppData\\Local\\spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":17,"fileCount":2,"files":["C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","count":2},{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","count":15}],"truncated":false,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/logs/\n## daemon.stderr.log\n*1│=== spt brain stderr — generation 1 — pid 37736 ===\n*2│BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\n 3│BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\n 4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5│PUMP_IPC_READER: spawned\n## daemon.stderr.log.1\n    *1│=== spt brain stderr — generation 1 — pid 43932 ===\n    *2│BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)\n     3│BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n     4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n     5│PUMP_IPC_READER: spawned\n      │...\n  3842│BRAIN_UPDATE_RESTART: planned restart — cycling brain onto the swapped binary\n *3843│BRAIN_RESTART: planned update respawn (generation 1)\n *3844│=== spt brain stderr — generation 1 — pid 11052 ===\n *3845│BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 11052, generation 1, start-reason update)\n  3846│BRAIN_RESUMED: re-established 5 session cursor(s): [1, 3, 6, 9, 4]\n *3847│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n  3848│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n  3849│PUMP_IPC_READER: spawned\n  3850│PUMP_IPC_READER: spawned\n      │...\n  6167│BRAIN_UPDATE_RESTART: planned restart — cycling brain onto the swapped binary\n *6168│BRAIN_RESTART: planned update respawn (generation 1)\n *6169│=== spt brain stderr — generation 1 — pid 75424 ===\n *6170│BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 75424, generation 1, start-reason update)\n  6171│BRAIN_RESUMED: re-established 4 session cursor(s): [4, 1, 3, 2]\n *6172│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n  6173│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n  6174│PUMP_IPC_READER: spawned\n  6175│PUMP_IPC_READER: spawned\n      │...\n  8598│RCA_CONN_COMMAND: conn_id=230 kind=unsubscribe elapsed_us=311293061\n *8599│BRAIN_RESTART: planned update respawn (generation 1)\n  8600│RCA_CONN_EOF: conn_id=228 error_kind=UnexpectedEof elapsed_us=311293841\n  8601│RCA_CONN_DETACH: conn_id=228 sid=3 session_found=true arc_matched=false cleared=false elapsed_us=311295034\n  8602│RCA_CONN_CLOSE: conn_id=228 elapsed_us=311295077\n      │...\n  8627│RCA_BOUNDED_WAIT_BEGIN:pid=82604 child_pid=49472 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n *8628│=== spt brain stderr — generation 1 — pid 46392 ===\n *8629│BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 46392, generation 1, start-reason updateRCA_CONN_OPEN: conn_id=)\n  8630│270 elapsed_us=312401719\n  8631│BRAIN_RESUMED: re-established 4 session cursor(s): [1, 4, 3, 2]\n  8632│RCA_CONN_OPEN: conn_id=271 elapsed_us=312429521\n      │...\n  8637│RCA_CONN_CLOSE: conn_id=272 elapsed_us=312458256\n *8638│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n  8639│RCA_BOUNDED_WAIT_END:pid=82604 child_pid=49472 label=\"arbitrary_command\" elapsed_ms=181 outcome=exited status_code=Some(0)\n  8640│RCA_BOUNDED_WAIT_BEGIN:pid=82604 child_pid=68432 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n  8641│RCA_BOUNDED_WAIT_END:pid=82604 child_pid=68432 label=\"arbitrary_command\" elapsed_ms=141 outcome=exited status_code=Some(0)\n      │...\n 16299│DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 12480) — online at bind\n*16300│BRAIN_PROMOTED: candidate v57 signalled ready (generation 0) — swap accepted\n 16301│DAEMON_RESTART_RESUME:doyle: resuming session 6cf22920-8f60-4a09-9b8d-7d46280f9a8c under claude-spt (pid 39868) — online at bind\n 16302│DAEMON_RESTART_RESUME:flynn: resuming session f4c1fc0e-de8e-4df0-8416-f01761a944cb under claude-spt:ccs (pid 74392) — online at bind\n 16303│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 75756) — online at bind"},"isError":false,"timestamp":1784069246399}}
{"type":"message","id":"d3a2cfb5","parentId":"3e026c43","timestamp":"2026-07-14T22:47:31.339Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Inspecting old digest entries**"},{"type":"toolCall","id":"call_hAA3Fgwc4JIxmOrLvR5AmpFY|fc_050f56f290a937ae016a56bc82ead48196b3b80a1725625182","name":"read","arguments":{"i":"Reading prior transport RCA","path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","selector":"742-752"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":27314,"output":150,"cacheRead":208384,"cacheWrite":0,"totalTokens":235848,"reasoningTokens":99,"cost":{"input":0.13657000000000002,"output":0.0045000000000000005,"cacheRead":0.10419199999999999,"cacheWrite":0,"total":0.24526200000000004}},"stopReason":"toolUse","timestamp":1784069246459,"responseId":"resp_050f56f290a937ae016a56bc7e8fec8196a0c1de07747eedb4","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc8010c08196a1aa3c03c1a240e5","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVryCT6S76RrH01jqTuj4kKfQh9UbXNrJRVxFT2IyEf7Ci-VKioFRSFsApQL9le2avf2wN8t8MK6YQq8oEfL3PMjNa55Cm1fTfVdl1GJ-WLM0BXiC_zIzgWBHYuOVif0-5Gem-CjUKvou2XUCPvgK55Kms7Q8WupFgbgiiKVeTvCQAzvbdNlcuhe6knFu3yldDkU9zeWHAZCDU1M1pY7_zfuBcnAqaJrz_EOU6vUrNZ8E3Lp_0ytbp3dR8b_dGYQZ9XiCvvAQrEiGJkIkGM9VYG1ctkXzvsn-x-n0j2En7Kvu54Eo1p86CjuXMbPpAy04zGTGXQ-MdoBYg6Yo4zgpOPgY5KuMHEWlaFawboBUT4ncT98-5hP4eAtEi-ywoJ9bvAXwCLMWolMGbkqqf2cs7wN_yBQkQG44YMITZ1dFNHq3X4vmtIXaJoGnc8Q0UH7mf7GflQN8zsr5kpGDdrWQAZjiil26_ASqxSESyQTBpL1AoF3AtcaKJeS64_DPcQgnmlyGdIHJmIXOto8a65gRrfzwgnv6e9JVhYBApAi8jeJTgH24_SblaHpLKmNF62DgrLdHHHWdGF_Et5HmYz9RAv2v7_213iaEz5wfCglXiW59zGkz-KGx7MEPoiW0f-tZZHMbt___lyvzQhoA6iJDhi8cWw9azKUlYVfVfpVRkF8Zev2oCSv6YoAdq6SSwtrbLML3RxVeKKIOP0zDjgtSmrtkR4fgt_5gWbfVthZ1dDTrW6rIi4o5JJTy-LFFYVOg1SSKpH56EkXyfiVtcs4ZwezvPn1KxRrnh1AB1684WV3i4UwlGp3RHZVs0gk23wdkrE7F7YDB1iuOaeqRn34_TKg66LgI45HeF3PHP5IoMY-7s1mhZAyz80lHv6ayZTl6uhVxm1nzdGuiMyI5lr_Q8Wj1tdTMzq1oe4oEi_ImwmhcFMoAEoeP_sTS-OM0sKgaPy6AsDU3uUrdf6sIPhPCE78_5mgx2qs4ScDIj5gr7lcNuVj7dAVriyAHJS-P2G4rhBrNpVHpRINva6EAgDHe7a0IRJzZF10MRJEtOXAVkdGuYbCQ1fPSH5B9CNqhl_WQqOnms0rQTrMfSMd3aonp4SQBYDbfbjaGIfc9tuISNPeHQLu2JWgFN8zZDBJmuOBsWox9oJv4EwLGJqFr6RQVfK_H5JPxX89bF0pLlZrluPv7k3JnZ02Fe-g6X-ATFsxfEdS4cT7PcbKj-lEh_2fe6oYk-2WZ7v2AlT3rEBtdiufCzGdq-9WFvYGHS8tKwF-TeGBlDgGDav5DzQrWhstok9sDS286Mli3IFccFXN6yjtWKtGmh53Fl9BJVGMJFgdnD9-9cR63UCN8jZhN34v8kmx3HFbC9GiZ0riH0vp92crOaNVTzcitZlIRBwus4atAmHfad3fEwWgC6vRW3DUrEmci0SE-BO2-TnGsX4-Ipbg_a6uMvSCFsCcmWCga2cVbbGuCRVDZV3DvsXr48BICKme3THOOT0lFcEAuN8_nntgVMRDaPgmAMIlujZUHv4QV51jr","summary":[{"type":"summary_text","text":"**Inspecting old digest entries**"}]},{"id":"fc_050f56f290a937ae016a56bc82ead48196b3b80a1725625182","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading prior transport RCA\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log\",\"selector\":\"742-752\"}","call_id":"call_hAA3Fgwc4JIxmOrLvR5AmpFY","name":"read"}]},"duration":4860.484700024128,"ttft":1644.6734000444412,"contextSnapshot":{"promptTokens":235698,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_hAA3Fgwc4JIxmOrLvR5AmpFY|fc_050f56f290a937ae016a56bc82ead48196b3b80a1725625182","toolName":"read","startedAt":"2026-07-14T22:47:31.340Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log"},"intent":"Reading prior transport RCA"},"id":"a1bb223d","parentId":"d3a2cfb5","timestamp":"2026-07-14T22:47:31.340Z"}
{"type":"message","id":"9c59c247","parentId":"a1bb223d","timestamp":"2026-07-14T22:47:31.355Z","message":{"role":"toolResult","toolCallId":"call_hAA3Fgwc4JIxmOrLvR5AmpFY|fc_050f56f290a937ae016a56bc82ead48196b3b80a1725625182","toolName":"read","content":[{"type":"text","text":"{\"context_kind\":\"echo_mirror\",\"body\":\"LIFECYCLE-TRUTH complete. v0.29.0 (counter 49) SHIPPED + field-verified, box live. **Status:** - All 6 waves gated+blessed, released @d0c1cf1, CI gate-hold fixed @7190730. - W1 field-accept swap windo…\",\"ts\":\"2026-07-08T04:38:05Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Diagnose task: librarian unreachable via `spt send` (PR #57, lifecycle-truth) **Status:** root cause found, converged, no fix applied yet. ## Findings - Repro: first `spt send` → `WAN_FAIL:librarian…\",\"ts\":\"2026-07-08T05:29:05Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Delta: librarian WAN delivery stall (2026-07-08) **Task:** debug — remote node (librarian, on desktop DESKTOP-VHCFIBH) shows \\\"peer unresponsive\\\" for message delivery, on branch `lifecycle-truth`. **…\",\"ts\":\"2026-07-08T05:42:42Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM, subnet BS-Resources delivery break ## Task Diagnose HFENDULEAM→DESKTOP delivery failure in BS-Resources subnet (2-node). ## Root found Asymmetric reachability, no…\",\"ts\":\"2026-07-08T05:49:32Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: HFENDULEAM↔DESKTOP subnet reachability bug (BS-Resources subnet) **Status:** unresolved. Ping works (LAN + Tailscale, both Private profile). Firewall ruled out — `spt-core inbound UDP` rule A…\",\"ts\":\"2026-07-08T05:56:46Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM iroh reachability RCA (2026-07-08) **Task:** DESKTOP can't discover/reach HFENDULEAM's spt daemon over the shared LAN subnet (all in `SPT_DEV`/`BIGNET`/`BS-Resources` subn…\",\"ts\":\"2026-07-08T05:59:43Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## librarian (HFENDULEAM) unreachable from DESKTOP — RCA in progress, fix pending **Status:** doyle diagnosing why `spt send librarian` from HFENDULEAM fails to reach DESKTOP-side node, post 0.28.0→0.…\",\"ts\":\"2026-07-08T06:01:23Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM subnet-rejoin investigation (no signoff) ## Task Debugging why HFENDULEAM (machine, agent doyle) can't rejoin subnet `BS-Resources` after operator ran `spt subnet leave BS…\",\"ts\":\"2026-07-08T06:12:20Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Session Delta — doyle @ HFENDULEAM (spt-core/, lifecycle-truth branch) **Task:** Answered perri's question (adapter builder, spt-mobile/claude-spt digest fetcher, strategy=fetcher) about spt-core's…\",\"ts\":\"2026-07-08T09:29:33Z\"}\n{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T09:46:34Z\"}\n\n[Showing lines 741-755 of 2926. Use :756 to continue]"}],"details":{"truncation":{"content":"{\"context_kind\":\"echo_mirror\",\"body\":\"LIFECYCLE-TRUTH complete. v0.29.0 (counter 49) SHIPPED + field-verified, box live. **Status:** - All 6 waves gated+blessed, released @d0c1cf1, CI gate-hold fixed @7190730. - W1 field-accept swap windo…\",\"ts\":\"2026-07-08T04:38:05Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Diagnose task: librarian unreachable via `spt send` (PR #57, lifecycle-truth) **Status:** root cause found, converged, no fix applied yet. ## Findings - Repro: first `spt send` → `WAN_FAIL:librarian…\",\"ts\":\"2026-07-08T05:29:05Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Delta: librarian WAN delivery stall (2026-07-08) **Task:** debug — remote node (librarian, on desktop DESKTOP-VHCFIBH) shows \\\"peer unresponsive\\\" for message delivery, on branch `lifecycle-truth`. **…\",\"ts\":\"2026-07-08T05:42:42Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM, subnet BS-Resources delivery break ## Task Diagnose HFENDULEAM→DESKTOP delivery failure in BS-Resources subnet (2-node). ## Root found Asymmetric reachability, no…\",\"ts\":\"2026-07-08T05:49:32Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: HFENDULEAM↔DESKTOP subnet reachability bug (BS-Resources subnet) **Status:** unresolved. Ping works (LAN + Tailscale, both Private profile). Firewall ruled out — `spt-core inbound UDP` rule A…\",\"ts\":\"2026-07-08T05:56:46Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM iroh reachability RCA (2026-07-08) **Task:** DESKTOP can't discover/reach HFENDULEAM's spt daemon over the shared LAN subnet (all in `SPT_DEV`/`BIGNET`/`BS-Resources` subn…\",\"ts\":\"2026-07-08T05:59:43Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## librarian (HFENDULEAM) unreachable from DESKTOP — RCA in progress, fix pending **Status:** doyle diagnosing why `spt send librarian` from HFENDULEAM fails to reach DESKTOP-side node, post 0.28.0→0.…\",\"ts\":\"2026-07-08T06:01:23Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM subnet-rejoin investigation (no signoff) ## Task Debugging why HFENDULEAM (machine, agent doyle) can't rejoin subnet `BS-Resources` after operator ran `spt subnet leave BS…\",\"ts\":\"2026-07-08T06:12:20Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Session Delta — doyle @ HFENDULEAM (spt-core/, lifecycle-truth branch) **Task:** Answered perri's question (adapter builder, spt-mobile/claude-spt digest fetcher, strategy=fetcher) about spt-core's…\",\"ts\":\"2026-07-08T09:29:33Z\"}\n{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T09:46:34Z\"}","truncated":true,"truncatedBy":"lines","totalLines":2186,"totalBytes":3959,"outputLines":15,"outputBytes":3959,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"{\"context_kind\":\"echo_mirror\",\"body\":\"LIFECYCLE-TRUTH complete. v0.29.0 (counter 49) SHIPPED + field-verified, box live. **Status:** - All 6 waves gated+blessed, released @d0c1cf1, CI gate-hold fixed @7190730. - W1 field-accept swap windo…\",\"ts\":\"2026-07-08T04:38:05Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Diagnose task: librarian unreachable via `spt send` (PR #57, lifecycle-truth) **Status:** root cause found, converged, no fix applied yet. ## Findings - Repro: first `spt send` → `WAN_FAIL:librarian…\",\"ts\":\"2026-07-08T05:29:05Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Delta: librarian WAN delivery stall (2026-07-08) **Task:** debug — remote node (librarian, on desktop DESKTOP-VHCFIBH) shows \\\"peer unresponsive\\\" for message delivery, on branch `lifecycle-truth`. **…\",\"ts\":\"2026-07-08T05:42:42Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — doyle @ HFENDULEAM, subnet BS-Resources delivery break ## Task Diagnose HFENDULEAM→DESKTOP delivery failure in BS-Resources subnet (2-node). ## Root found Asymmetric reachability, no…\",\"ts\":\"2026-07-08T05:49:32Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: HFENDULEAM↔DESKTOP subnet reachability bug (BS-Resources subnet) **Status:** unresolved. Ping works (LAN + Tailscale, both Private profile). Firewall ruled out — `spt-core inbound UDP` rule A…\",\"ts\":\"2026-07-08T05:56:46Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM iroh reachability RCA (2026-07-08) **Task:** DESKTOP can't discover/reach HFENDULEAM's spt daemon over the shared LAN subnet (all in `SPT_DEV`/`BIGNET`/`BS-Resources` subn…\",\"ts\":\"2026-07-08T05:59:43Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## librarian (HFENDULEAM) unreachable from DESKTOP — RCA in progress, fix pending **Status:** doyle diagnosing why `spt send librarian` from HFENDULEAM fails to reach DESKTOP-side node, post 0.28.0→0.…\",\"ts\":\"2026-07-08T06:01:23Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta — HFENDULEAM subnet-rejoin investigation (no signoff) ## Task Debugging why HFENDULEAM (machine, agent doyle) can't rejoin subnet `BS-Resources` after operator ran `spt subnet leave BS…\",\"ts\":\"2026-07-08T06:12:20Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Context Delta — doyle @ HFENDULEAM **Task:** RCA for `spt subnet join BS-Resources` failure (NO_SEED_HOLDER, 13 meet-probe timeouts). **Root cause found:** HFENDULEAM rendezvous transport dead on b…\",\"ts\":\"2026-07-08T06:37:47Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Delta — BS-Resources subnet join investigation **Task:** doyle debug why joiners (HFENDULEAM, enlyzeam) can't join `BS-Resources` subnet — `NO_SEED_HOLDER`-type failure. **Ruled out:** relay/transp…\",\"ts\":\"2026-07-08T06:57:04Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"# BS-Resources subnet RCA — session delta ## Task Diagnose why librarian unreachable via BS-Resources subnet, following operator report of subnet eradication after leave/rejoin sequence on DESKTOP. ##…\",\"ts\":\"2026-07-08T07:21:12Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: BS-Resources subnet recovery (spt subnet system, HFENDULEAM node) **Status:** Diagnosis complete, artifact cleared, awaiting operator to run rebuild commands. **Root cause found:** Operator e…\",\"ts\":\"2026-07-08T07:23:16Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta — doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `…\",\"ts\":\"2026-07-08T09:27:31Z\"}\n{\"context_kind\":\"echo_mirror\",\"body\":\"## Session Delta — doyle @ HFENDULEAM (spt-core/, lifecycle-truth branch) **Task:** Answered perri's question (adapter builder, spt-mobile/claude-spt digest fetcher, strategy=fetcher) about spt-core's…\",\"ts\":\"2026-07-08T09:29:33Z\"}\n{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T09:46:34Z\"}","startLine":741,"lineNumbers":[741,742,743,744,745,746,747,748,749,750,751,752,753,754,755]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":2926,"totalBytes":3959,"outputLines":15,"outputBytes":3959,"shownRange":{"start":741,"end":755},"nextOffset":756}}},"isError":false,"timestamp":1784069251355}}
{"type":"message","id":"45b1d6e6","parentId":"9c59c247","timestamp":"2026-07-14T22:47:40.860Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Searching main source docs for transport root**"},{"type":"toolCall","id":"call_V9OyBxgCMGpjlr1NqGu6LzBn|fc_050f56f290a937ae016a56bc8cc9e08196b0446e2c91c152ed","name":"grep","arguments":{"i":"Finding historical transport RCA","pattern":"(?i)(HFENDULEAM.*(iroh|unreachable|transport)|rendezvous transport dead|Asymmetric reachability|NO_SEED_HOLDER|spt-core inbound UDP)","path":"C:/Users/decid/Documents/projects/spt-core; C:/Users/decid/AppData/Local/spt-core/owlery/doyle","selector":null,"case":false,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_zDUPk9xNqyP2QdKmkPtvUFIc|fc_050f56f290a937ae016a56bc8cc9f08196b2744746e07a1910","name":"glob","arguments":{"i":"Locating Doyle RCA memory","path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*RCA*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*network*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*transport*","hidden":true,"gitignore":false,"limit":100}},{"type":"toolCall","id":"call_pNbIqFRVQcetNIfSWFSyxI76|fc_050f56f290a937ae016a56bc8cc9f8819697ce032ea8e5dc40","name":"grep","arguments":{"i":"Finding inbound firewall hint","pattern":"fn inbound_block_hint|inbound.*UDP|firewall rule|Windows.*Firewall|blocked inbound","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src","selector":null,"case":false,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_EjskfILV0adYvRyc6eiqWTnk|fc_050f56f290a937ae016a56bc8cc9fc8196b23e2215e114b8e9","name":"grep","arguments":{"i":"Finding Windows install rules","pattern":"firewall|New-NetFirewallRule|UDP|spt-core inbound","path":"C:/Users/decid/Documents/projects/spt-core","selector":null,"case":false,"gitignore":true,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2059,"output":429,"cacheRead":235008,"cacheWrite":0,"totalTokens":237496,"reasoningTokens":42,"cost":{"input":0.010295,"output":0.01287,"cacheRead":0.117504,"cacheWrite":0,"total":0.140669}},"stopReason":"toolUse","timestamp":1784069251375,"responseId":"resp_050f56f290a937ae016a56bc837bb48196810e0889cf5cd560","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bc84d3348196bf81867087e909e7","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVryMpPDni7WUv5vcFljfb77X8FNU9dix7R_bEvzRT5q2WW7DRezhGoEwoUael45U0CXp9GWKwekLzbUEFxumPdVBAgVKcmghX8IZo2bmd8GUnq_6e8OwNe0_G_v7qXm0Sc39qbOzmZDP43afN5XCni7M011MScA9T1SOyRM_6SDv-rIcwhWX5FpyySCWFyclV2R-xi-0lk1jACSxYd4ZSVFem3-sjNUBdStBda55laNJBsn5Ho6A5bRvdpAhChQ1d7eHQ-oSM8ygs4C3WhjJUrGcDV0kLAhoWH7wwVLamsYvWRZa-tiGhb9rfnVE-bj5FT0BM1kjW7RrKVOaJqVdeMDPEl8terh3ESVoQALVr6OX4637SeyuJssbtgn3wsvpGEhUXv7ko5FFAnHOv-C_Wotdc2SnIVsj1Yy0GjoiG3vK3c59zD12_uaWPmnLkgByuY85YfXbyrpzXFAFlerKiofuSisUlS0s6iwupwVj71iASKLcIQqo981OZZ33rwIXIR6pzBwetkBd6UqdZUJBdwLY45KqsOe7ULrJ4Bc_2g0lKMvoIZV7ngsTV4s5Zh8Lr7bKhZfS_DZqmmvPcpurRuH63hwhMz61folzMenTZ4cCTrxFPsTXJMGK6QYFGi8wofw6CIF5DpzmZaIA1llQIPIs5ThtcztBGjVwyT1q2J9p8gGDdHjcYQnTmUnuybAhkhsLHASzx5mIQYqdW1IVaarn0mPmV_mMwW5OkHr8arOKFbrodlENOD7yuaqiu6cGUuaa-XBHJ_o3tMT4Z0aHD95WGDVhjY5PbxLLMp0l0bGqMW02SwFVzgOphsZKf0IcDWiPkRSfAD7XIrvAjHsny4rWn6aAL8hXtAuxHtMM4FvzPwXE8nec3QiLLDDCXTgqaUWtshrPo9yq1Z2Qpxz2TkV1btQUZRGZVlEknqa_amCOTwlc-4zMJWvmw6W3gtsSIzEZeBJGqN6BtHmsSzV65ol545YNtwh1Q90U0JlPwEKeOfbi4r1jizSFJaqM9jiF8AFOtXLOYcxIPpwKF9nxEOztDB87MXU6lRhTJBa2TBJRZ73DT7ow7wdZYE1w01z0YYlPxr45lpo6--tiJ0gz6KutLzN8V8tWh6hZ94QLnfl9D2bXqSxY2o2dhHk_MZRPphzZo9EtZiGt6_KN-Kr_l_2GWw==","summary":[{"type":"summary_text","text":"**Searching main source docs for transport root**"}]},{"id":"fc_050f56f290a937ae016a56bc8cc9e08196b0446e2c91c152ed","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding historical transport RCA\",\"pattern\":\"(?i)(HFENDULEAM.*(iroh|unreachable|transport)|rendezvous transport dead|Asymmetric reachability|NO_SEED_HOLDER|spt-core inbound UDP)\",\"path\":\"C:/Users/decid/Documents/projects/spt-core; C:/Users/decid/AppData/Local/spt-core/owlery/doyle\",\"selector\":null,\"case\":false,\"gitignore\":false,\"skip\":null}","call_id":"call_V9OyBxgCMGpjlr1NqGu6LzBn","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc8cc9f08196b2744746e07a1910","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating Doyle RCA memory\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*RCA*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*network*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*transport*\",\"hidden\":true,\"gitignore\":false,\"limit\":100}","call_id":"call_zDUPk9xNqyP2QdKmkPtvUFIc","name":"glob"},{"id":"fc_050f56f290a937ae016a56bc8cc9f8819697ce032ea8e5dc40","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding inbound firewall hint\",\"pattern\":\"fn inbound_block_hint|inbound.*UDP|firewall rule|Windows.*Firewall|blocked inbound\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_pNbIqFRVQcetNIfSWFSyxI76","name":"grep"},{"id":"fc_050f56f290a937ae016a56bc8cc9fc8196b23e2215e114b8e9","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding Windows install rules\",\"pattern\":\"firewall|New-NetFirewallRule|UDP|spt-core inbound\",\"path\":\"C:/Users/decid/Documents/projects/spt-core\",\"selector\":null,\"case\":false,\"gitignore\":true,\"skip\":null}","call_id":"call_EjskfILV0adYvRyc6eiqWTnk","name":"grep"}]},"duration":9484.503499984741,"ttft":1483.4886999726295,"contextSnapshot":{"promptTokens":237067,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_V9OyBxgCMGpjlr1NqGu6LzBn|fc_050f56f290a937ae016a56bc8cc9e08196b0446e2c91c152ed","toolName":"grep","startedAt":"2026-07-14T22:47:40.860Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core; C:/Users/decid/AppData/Local/spt-core/owlery/doyle"},"intent":"Finding historical transport RCA"},"id":"b0aec623","parentId":"45b1d6e6","timestamp":"2026-07-14T22:47:40.860Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_zDUPk9xNqyP2QdKmkPtvUFIc|fc_050f56f290a937ae016a56bc8cc9f08196b2744746e07a1910","toolName":"glob","startedAt":"2026-07-14T22:47:40.860Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*RCA*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*network*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*transport*"},"intent":"Locating Doyle RCA memory"},"id":"8feb3e2b","parentId":"b0aec623","timestamp":"2026-07-14T22:47:40.860Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_pNbIqFRVQcetNIfSWFSyxI76|fc_050f56f290a937ae016a56bc8cc9f8819697ce032ea8e5dc40","toolName":"grep","startedAt":"2026-07-14T22:47:40.860Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src"},"intent":"Finding inbound firewall hint"},"id":"d8216b65","parentId":"8feb3e2b","timestamp":"2026-07-14T22:47:40.860Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_EjskfILV0adYvRyc6eiqWTnk|fc_050f56f290a937ae016a56bc8cc9fc8196b23e2215e114b8e9","toolName":"grep","startedAt":"2026-07-14T22:47:40.860Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core"},"intent":"Finding Windows install rules"},"id":"81bb7637","parentId":"d8216b65","timestamp":"2026-07-14T22:47:40.860Z"}
{"type":"message","id":"fafa12af","parentId":"81bb7637","timestamp":"2026-07-14T22:47:40.863Z","message":{"role":"toolResult","toolCallId":"call_zDUPk9xNqyP2QdKmkPtvUFIc|fc_050f56f290a937ae016a56bc8cc9f08196b2744746e07a1910","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/\nUPDATE-WEDGE-2-SME-RCA-ROUND3.md\n## docs/\nUPDATE-WEDGE-2-RCA.md"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*RCA*, C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*network*, C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*transport*","fileCount":2,"files":["C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/docs/UPDATE-WEDGE-2-RCA.md","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/UPDATE-WEDGE-2-SME-RCA-ROUND3.md"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069260862}}
{"type":"message","id":"9174caa0","parentId":"fafa12af","timestamp":"2026-07-14T22:47:40.892Z","message":{"role":"toolResult","toolCallId":"call_pNbIqFRVQcetNIfSWFSyxI76|fc_050f56f290a937ae016a56bc8cc9f8819697ce032ea8e5dc40","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt/src/\n### cli.rs\n 6852|/// render half): a fresh user-scope install never triggers the first-bind\n*6853|/// firewall prompt, so inbound UDP (mDNS + QUIC meet/pairing) drops with no\n 6854|/// rendered cause — the M7 NO_SEED_HOLDER dead-end. When the installer's\n 6855|/// named rule is absent, say so with the exact fix; when the probe itself\n 6856|/// fails or times out, say nothing (never alarm off a broken probe).\n*6857|/// Non-Windows: no firewall story to tell.\n 6858|// [impl->REQ-INSTALL-7]\n*6859|fn inbound_block_hint() -> Option<String> {\n 6860|    #[cfg(windows)]\n 6861|    {\n 6862|        if windows_inbound_rule_present() == Some(false) {\n...\n 6866|            return Some(format!(\n*6867|                \"warning: no Windows Firewall inbound rule for spt — joins/pairing toward \\\n 6868|                 this node may be silently blocked (the NO_SEED_HOLDER shape). Run the \\\n 6869|                 installer elevated, or add the rule:\\n  netsh advfirewall firewall add \\\n*6870|                 rule name=\\\"spt-core inbound UDP\\\" dir=in action=allow protocol=UDP \\\n 6871|                 program=\\\"{exe}\\\"\\n\"\n 6872|            ));\n 6873|        }\n...\n 6881|\n*6882|/// Whether the installer's named inbound-UDP rule exists, via a BOUNDED\n 6883|/// `netsh` probe (KNOWN-HAZARDS 5.3: every subprocess has a timeout — a\n 6884|/// wedged netsh costs 3s, never a hang). `None` = probe failed/timed out\n 6885|/// (the caller stays silent rather than alarm on a broken probe).\n...\n 6896|                \"rule\",\n*6897|                \"name=spt-core inbound UDP\",\n 6898|            ])\n 6899|            .output();\n 6900|        let _ = tx.send(out);\n\n## spt-daemon/src/\n### nethost.rs\n 95|    /// [`BindScope::Loopback`] in hermetic tests (no real interface touched,\n*96|    /// no per-test-binary Windows firewall prompt).\n 97|    pub scope: BindScope,\n 98|    /// Live source of this node's subnet credentials for the connect-time\n 99|    /// seed-proof (Mesh-D2, REQ-MESH-1). `Some` enables the mutual proof at"}],"details":{"scopePath":"spt-core/crates/spt/src, spt-core/crates/spt-daemon/src","searchPath":"C:\\Users\\decid\\Documents\\projects\\spt-core\\crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":8,"fileCount":2,"files":["spt-core/crates/spt/src/cli.rs","spt-core/crates/spt-daemon/src/nethost.rs"],"fileMatches":[{"path":"spt-core/crates/spt/src/cli.rs","count":7},{"path":"spt-core/crates/spt-daemon/src/nethost.rs","count":1}],"truncated":false,"displayContent":"# spt-core/crates/\n\n## spt/src/\n### cli.rs\n 6852│/// render half): a fresh user-scope install never triggers the first-bind\n*6853│/// firewall prompt, so inbound UDP (mDNS + QUIC meet/pairing) drops with no\n 6854│/// rendered cause — the M7 NO_SEED_HOLDER dead-end. When the installer's\n 6855│/// named rule is absent, say so with the exact fix; when the probe itself\n 6856│/// fails or times out, say nothing (never alarm off a broken probe).\n*6857│/// Non-Windows: no firewall story to tell.\n 6858│// [impl->REQ-INSTALL-7]\n*6859│fn inbound_block_hint() -> Option<String> {\n 6860│    #[cfg(windows)]\n 6861│    {\n 6862│        if windows_inbound_rule_present() == Some(false) {\n     │...\n 6866│            return Some(format!(\n*6867│                \"warning: no Windows Firewall inbound rule for spt — joins/pairing toward \\\n 6868│                 this node may be silently blocked (the NO_SEED_HOLDER shape). Run the \\\n 6869│                 installer elevated, or add the rule:\\n  netsh advfirewall firewall add \\\n*6870│                 rule name=\\\"spt-core inbound UDP\\\" dir=in action=allow protocol=UDP \\\n 6871│                 program=\\\"{exe}\\\"\\n\"\n 6872│            ));\n 6873│        }\n     │...\n 6881│\n*6882│/// Whether the installer's named inbound-UDP rule exists, via a BOUNDED\n 6883│/// `netsh` probe (KNOWN-HAZARDS 5.3: every subprocess has a timeout — a\n 6884│/// wedged netsh costs 3s, never a hang). `None` = probe failed/timed out\n 6885│/// (the caller stays silent rather than alarm on a broken probe).\n     │...\n 6896│                \"rule\",\n*6897│                \"name=spt-core inbound UDP\",\n 6898│            ])\n 6899│            .output();\n 6900│        let _ = tx.send(out);\n\n## spt-daemon/src/\n### nethost.rs\n 95│    /// [`BindScope::Loopback`] in hermetic tests (no real interface touched,\n*96│    /// no per-test-binary Windows firewall prompt).\n 97│    pub scope: BindScope,\n 98│    /// Live source of this node's subnet credentials for the connect-time\n 99│    /// seed-proof (Mesh-D2, REQ-MESH-1). `Some` enables the mutual proof at"},"isError":false,"timestamp":1784069260892}}
{"type":"message","id":"06e93649","parentId":"9174caa0","timestamp":"2026-07-14T22:47:42.008Z","message":{"role":"toolResult","toolCallId":"call_EjskfILV0adYvRyc6eiqWTnk|fc_050f56f290a937ae016a56bc8cc9fc8196b23e2215e114b8e9","toolName":"grep","content":[{"type":"text","text":"# spt-core/\n## CHANGELOG.md\n 919|- **Automatic re-pair cleanup.** If you reinstall or regenerate a node's identity and pair it again from the same machine under the same name, its old, now-dead identity is removed automatically during pairing — no manual prune needed.\n*920|- **Firewall setup on Windows.** The installer (when run elevated) now adds the inbound network rule `spt` needs so other nodes can reach you. If it wasn't added, `spt subnet status` and the \"coming online\" banner now tell you the rule is missing and print the exact command to add it.\n 921|- **Starts on boot.** The installer now registers `spt` to start automatically — at login on Windows, and as a per-user service on Linux — so your node is reachable after a reboot without running a command first.\n 922|\n 923|### Changed\n## CI-SELFHOST-PLAN.md\n 64|      runner + target).\n*65|- [ ] Decide whether the netstream/netbroker UDP-binding tests need a firewall\n 66|      allowance on gravity (loopback-only since BindScope::Loopback — no).\n## CONTEXT.md\n 518|\n*519|First network socket bind triggers an OS firewall prompt (Windows Defender, some Linux); unavoidable without a signed binary + pre-declared exception. Framed in CLI UX, not suppressible.\n 520|\n 521|### The peer pump\n 522|\n...\n 804|**endpoint access whitelist** (distinct from the grant store — the outer reach gate):\n*805|A per-endpoint allow-list controlling **who may remotely reach** an endpoint, **by origin node** (and, later, by user). The load-bearing semantic: it checks the **origin node of the inbound interaction** (where the operator is acting), **not** the sender endpoint's identity or home — *\"the operator must be on a whitelisted machine; the sender endpoint's location is irrelevant.\"* It is a **stateful-firewall** model, not a blanket block:\n 806|- **Outbound** from the endpoint → any **visible** node (the whitelist never restricts who it talks *to*).\n 807|- **Inbound** → a **reply** correlated to the endpoint's own prior outbound (reply traffic, keyed on the inbound `from`) is allowed from any visible node (\"established/related\"); an **unsolicited/direct** control or message (\"new inbound\") is allowed only from a **whitelisted** node.\n 808|- **Same-node operation is always allowed** (you're at the hardware; the home node never whitelists itself). The whitelist gates **remote (cross-node)** reach only.\n...\n 833|\n*834|**Daemon lifecycle:** registered as a systemd user service (Linux) / Windows service or scheduled task for the always-on guarantee, with `spt api`-triggered auto-start as the fallback (above). The first network bind triggers the OS firewall prompt here.\n 835|\n 836|**What \"installed\" comprises:** the `spt` binary + the broker + the `$SPT_HOME` root (holds `node.key`, trust store, registry, spools, in-memory-seed fallback state). **First run is idempotent + interactive-optional:** generates the node identity and starts the daemon unattended; pairing (and subnet naming) is a separate explicit step.\n 837|\n## Cargo.lock\n 1971| \"noq-proto\",\n*1972| \"noq-udp\",\n 1973| \"papaya\",\n 1974| \"pin-project\",\n 1975| \"pkcs8 0.11.0-rc.10\",\n...\n 2525| \"netlink-sys\",\n*2526| \"noq-udp\",\n 2527| \"objc2-core-foundation\",\n 2528| \"objc2-system-configuration\",\n 2529| \"pin-project-lite\",\n...\n 2565| \"noq-proto\",\n*2566| \"noq-udp\",\n 2567| \"pin-project-lite\",\n 2568| \"rustc-hash\",\n 2569| \"rustls\",\n...\n 2604|[[package]]\n*2605|name = \"noq-udp\"\n 2606|version = \"0.10.0\"\n 2607|source = \"registry+https://github.com/rust-lang/crates.io-index\"\n 2608|checksum = \"ee91b05f4f3353290936ba1f3233518868fb4e2da99cb4c90d1f8cebb064e527\"\n...\n 3088| \"quinn-proto\",\n*3089| \"quinn-udp\",\n 3090| \"rustc-hash\",\n 3091| \"rustls\",\n 3092| \"socket2\",\n...\n 3121|[[package]]\n*3122|name = \"quinn-udp\"\n 3123|version = \"0.5.14\"\n 3124|source = \"registry+https://github.com/rust-lang/crates.io-index\"\n 3125|checksum = \"addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd\"\n## M12-CANDIDATES.md\n 28|     headless/no-TTY = print exact command for the human (agent relays).\n*29|   - Scope elevation to only steps that need it (service-install / firewall /\n 30|     privileged-port) — subnet-create itself likely unprivileged.\n 31|   - Complementary downstream: spt-claude-code skill with create/join/show-code verbs.\n 32|\n## M12-PLAN.md\n 63|  x-terminal-emulator · Linux+TTY inline sudo · headless/no-TTY print command for the human.\n*64|  Scope elevation to only steps that need it (service/firewall/privileged-port; subnet-create\n 65|  itself likely unprivileged).\n 66|\n 67|## Wave 5 — whoami merge (small)\n## M12-W4-PLAN.md\n 17|  sudo · headless/no-TTY print the command for the human. Scope elevation to only\n*18|  the steps that need it (service/firewall/privileged-port; subnet-create itself\n 19|  is unprivileged-to-run but reveals a secret, so it is gated).\n 20|\n 21|## What EXISTS today (investigation 2026-06-14)\n## M4-D5-PLAN.md\n 84|   passes; non-listed unsolicited refused; reply from non-listed node passes (stateful\n*85|   firewall); same-node always passes; origin spoof via payload fails.\n 86|5. **Fault-matrix rows** (maintenance rule): WAN-msg path, remote attach, file transfer\n 87|   each get a row in `docs/FAULT-MATRIX.md` in the same change that lands them.\n 88|\n## M4-D9-PLAN.md\n 14|  static env — no runtime exchange, both legs non-interactive); `BindScope::Port`\n*15|  (fixed dialable UDP port); `docs/TWO-HOST-RUNBOOK.md`; the `[twohost]`\n 16|  commit-message CI gate (both rig hosts are the runners; `needs: test` releases\n 17|  the roles together). Ladder proven green locally first (two processes over\n 18|  127.0.0.1; the smoke caught a real test-op/pump-op journal collision).\n...\n 24|  replicated to A). HFENDULEAM ↔ gravity-linux over tailscale; whole ladder ~8 s\n*25|  once both sides up; no firewall rule needed (the pump keeps the reverse UDP\n 26|  4-tuple warm). Evidence in the runbook appendix; `docs/FLAKE-LEDGER.md` made\n 27|  durable en route (digest flake second occurrence, rerun passed).\n 28|- int stages activated post-proof: REQ-NET-1, REQ-INST-5, REQ-INST-7, REQ-INST-8,\n## M4-PLAN.md\n 161|- **D5d** Endpoint access control (ADR-0009 node-tier): per-endpoint whitelist, origin-node\n*162|  gate, stateful-firewall (reply/outbound exempt), outer gate before grants. · **REQ-SEC-1**\n 163|- **Reqs:** REQ-NET-1, REQ-INST-8, REQ-REACH-1, REQ-SEC-1. · **Acceptance:** drive an agent\n 164|  on machine A from machine B; off-node access denied without a grant.\n 165|\n## M5-D5-PLAN.md\n 40|  Inbound gate: `access.rs` `access_check` on the **handshake-proven** origin node\n*41|  (ADR-0009 stateful firewall; REQ-HAZARD-WAN-ORIGIN-AUTH — never a payload field).\n 42|- **CLI refusal to lift:** `cli.rs cmd_rest` (~792) refuses `id@node` with\n 43|  `CROSS_NODE_M5`; addr grammar already parses `[subnet:]id[@node]`\n 44|  (`spt_proto::addr`, REQ-INST-10).\n...\n 67|  `daemon_rest_event` (which runs the echo gate + D4a shell cascade on the target\n*68|  node — where the shells live, exactly right). **Ungated beyond the firewall** —\n 69|  same trust class as remote-drive (M5-PLAN D5b: \"your instances from any node\");\n 70|  no grant-store consultation.\n 71|- **CLI:** `cmd_rest` lifts the qualified-form refusal: bare id = local (unchanged);\n## M7-PLAN.md\n 13|> silent-peer eviction), plus the AMBIGUOUS-render copy-paste-targets fix.\n*14|> Session harvest (Linux elevation model, NTP-first clock, firewall\n 15|> registration, post-join address seeding, trust-prune verb, M8\n 16|> nounification spec) is logged in `docs/DEFERRED.md`.\n 17|\n## M8-ACCEPTANCE-STEPS.md\n 63|## Already passed (no rig action needed)\n*64|- **2** Windows install (enlyzeam: firewall + at-logon task, v0.1.0→D4) ✓\n 65|- **9** skewed-clock pairing (enlyzeam +206s; NTP-on JOINED, NTP-off NO_SEED_HOLDER) ✓\n 66|- **4** old verbs gone / hot path intact ✓ · **8** status honesty ✓\n 67|- **debug-converge** tooling (exit 0/1/2) ✓ · full **twohost** cross-node ladder ✓\n## M8-ACCEPTANCE.md\n 16|  (local asset base) **upgraded enlyzeam from the public v0.1.0 → D4** and\n*17|  fired every leg: sha256 verified, inbound **UDP firewall rule registered**\n 18|  (REQ-INSTALL-7), **at-logon daemon scheduled task registered**\n 19|  (REQ-INSTALL-8), user PATH set. `daemon status` then rendered\n 20|  `peer pump: live (last tick 3s ago)` — the D4 heartbeat writer→reader on\n...\n 119|2. **Fresh Windows install** (elevated leg): inbound works with zero\n*120|   accumulated dev firewall rules — a join succeeds where M7's\n 121|   NO_SEED_HOLDER failed. Then the **unelevated-install** path: `spt subnet\n 122|   status` renders the blocked-inbound state honestly. → criteria 2, 3.\n 123|\n## M8-PLAN.md\n 27|3. **The installer's \"next touch\" is already owed** three legs at once\n*28|   (Linux elevation, firewall registration, OS-service) — one coherent\n 29|   install/elevation deliverable instead of three drive-bys.\n 30|\n 31|## Root causes this milestone fixes\n...\n 41|3. **A fresh Windows install is silently unreachable inbound.** The detached\n*42|   daemon never triggers the first-bind firewall prompt; mDNS + QUIC meet /\n*43|   pairing UDP drops with no rendered cause.\n 44|4. **A node is unreachable after reboot** until something invokes `spt`\n 45|   (REQ-INSTALL-1's deferred third leg — no OS-service registration).\n 46|5. **Subnet participation is all-or-nothing** (attached/detached *term*\n...\n 75|| 9 | No deprecation shims, same as M7 decision 1 — zero external CLI consumers until spt-claude-code exists. Breaking renames land clean. |\n*76|| 10 | New requirements minted **before work starts** (TRACEABILITY rule 3): `REQ-CLI-*` family (endpoint noun · daemon noun · hot-path preservation), `REQ-SUBNET-*` additions (attach/detach serve-state · prune · re-pair overwrite · status render), `REQ-INSTALL-*` additions (Linux elevation install leg · firewall registration · OS-service), polish reqs per scope ratification. Exact ids assigned at execution; inactive until their deliverable starts (rule 5). |\n 77|| 11 | **`subnet status` is daemon-aware** (user 2026-06-07): zero-subnet text becomes \"No subnets registered — this node is standalone.\" followed by a daemon-status-dependent blurb (daemon running vs not). Never implies messaging works while the daemon is down. |\n 78|| 12 | **Hint footer only on bare `spt subnet`** (user 2026-06-07): `spt subnet status` drops its \"hint:\" lines; the flagless `spt subnet` view keeps them (amends M7 decision 5's \"always printed\"). |\n 79|| 13 | **Per-machine re-pair trust overwrite** (user 2026-06-07): registry rows carry a stable per-machine identifier (NOT the MAC — it changes between wifi/ethernet; source per open decision G). A **successful pairing ceremony** presenting the same node label AND the same machine identifier as an existing trusted row is treated as a re-pair of that machine: the old identity's trust + registry rows are deleted automatically. Overwrite fires only inside a completed ceremony (TOTP + SPAKE2 + the join-sid...\n...\n 126|election + KH 5.7 interplay verified (daemon + state under the elected\n*127|account, never root). Windows: elevated install leg registers the firewall\n*128|rule (`New-NetFirewallRule`, inbound UDP) **and** the daemon self-detects\n 129|blocked inbound → rendered as the \"no connection\" state in `subnet status` +\n 130|coming-online banner (covers user-scope installs that skip the elevated leg).\n 131|Both OSes: OS-service registration per decision 17 — Linux systemd user\n...\n 134|daemon). Installer-script E2E rungs extended (`SPT_INSTALL_E2E` stays\n*135|hermetic — service/firewall legs env-gated off in CI, proven in acceptance\n 136|instead).\n 137|\n 138|**D4 — convergence polish + pump resilience:**\n## PRD.md\n 140|\n*141|- **R-SEC-1** (M4 node-tier; user-tier deferred) **Per-endpoint access whitelist:** an optional allow-list gating **who may remotely reach** an endpoint, checked by **origin node** of the inbound interaction (not sender-endpoint identity — *\"the operator must be on a whitelisted machine\"*). **Stateful-firewall semantics:** outbound goes to any visible node; an inbound **reply** correlated to the endpoint's own prior outbound (reply traffic, keyed on the inbound `from`) is allowed from any visible node;...\n 142|\n 143|---\n 144|\n## ROADMAP.md\n 44|\n*45|- **M7 — Subnet & quickstart UX. ✅ delivered (2026-06-06** — planned 2026-06-05, task breakdown [`M7-PLAN.md`](./M7-PLAN.md)). Subnet setup is now a first-class, guided, secure product surface and the public quickstart is honest about personas. Shipped: the **join ceremony's product surface** (always-on daemon pairing responder + guided `spt subnet join` CLI initiator over the rig-proven SPAKE2 wire) · the `spt subnet` noun namespace (`status [NAME] [--nodes]` / `create` / `show-code` / `join`; `s...\n 46|\n 47|- **✅ Broker/brain process-isolation restoration — delivered (2026-06-11).** Design: [`docs/BROKER-BRAIN-SPLIT-RESTORATION.md`](./docs/BROKER-BRAIN-SPLIT-RESTORATION.md) (verified-with-amendments by `doyle`); decision: **ADR-0018**; build plan: [`RESTORATION-PLAN.md`](./RESTORATION-PLAN.md) (D1–D7). Corrects an unintended regression — the broker/brain split (ADR-0004) was specced + spiked as two *processes*, but the production daemon runs the broker as an in-process *thread* (`daemon.rs:165-170`)...\n 48|\n## V0.17.0-ROBUST-JOIN-AND-PRESENCE-JIT.md\n 12|1. **WAN join silently fails on half-broken IPv6.** iroh binds dual-stack; dead-AAAA candidate\n*13|   attempts silently burn the 30 s rendezvous window. Refuted first: clock/NTP, firewall, relay.\n 14|   Discriminator: `Test-NetConnection dns.iroh.link -Port 443` IPv6 fails / IPv4 ok. Fixed live by\n 15|   disabling IPv6. ([[broken-ipv6-poisons-iroh-discovery]])\n 16|2. **Dead endpoints show ONLINE on remote nodes.** `registryhost.rs:404` advertises a not-alive perch\n\n## crates/spt-daemon/src/\n### access.rs\n 10|//!\n*11|//! ## Whitelist semantics (stateful firewall, not a blanket block)\n 12|//!\n 13|//! - **Origin-node gate:** the subject is the node the inbound interaction\n 14|//!   *originates from* (where the operator is acting) — never the sender\n...\n 47|\n*48|/// How an inbound interaction reached this node, for the stateful-firewall\n 49|/// split.\n 50|#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n 51|pub enum InboundClass {\n...\n 126|/// [`classify_inbound`] later correlates a reply against. Call on every\n*127|/// outbound WAN send (the sending leg's side of the stateful firewall).\n 128|/// Best-effort: a failed write only costs a future reply its exemption (it\n 129|/// will classify unsolicited — the conservative direction).\n 130|// [impl->REQ-SEC-1]\n...\n 193|\n*194|    // [unit->REQ-SEC-1] the stateful-firewall exemption: a Reply classifies\n 195|    // past a whitelist that would refuse the same node unsolicited — and\n 196|    // classification itself turns on the recorded outbound within the window.\n 197|    #[test]\n### linkhost.rs\n 11|//!\n*12|//! ## Trust class: remote-drive (ungated beyond the firewall)\n 13|//!\n 14|//! Same posture as remote rest/attach: the [`access_check`] whitelist on the\n 15|//! **handshake-proven** origin node (ADR-0009; REQ-HAZARD-WAN-ORIGIN-AUTH —\n\nShowing files 1-20 of 44. Use skip=20 for the next page, or narrow paths/pattern.\n\n[Some lines truncated to 512 chars]"}],"details":{"scopePath":"spt-core","searchPath":"C:/Users/decid/Documents/projects/spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":39,"fileCount":20,"files":["spt-core/CHANGELOG.md","spt-core/CI-SELFHOST-PLAN.md","spt-core/CONTEXT.md","spt-core/Cargo.lock","spt-core/M12-CANDIDATES.md","spt-core/M12-PLAN.md","spt-core/M12-W4-PLAN.md","spt-core/M4-D5-PLAN.md","spt-core/M4-D9-PLAN.md","spt-core/M4-PLAN.md","spt-core/M5-D5-PLAN.md","spt-core/M7-PLAN.md","spt-core/M8-ACCEPTANCE-STEPS.md","spt-core/M8-ACCEPTANCE.md","spt-core/M8-PLAN.md","spt-core/PRD.md","spt-core/ROADMAP.md","spt-core/V0.17.0-ROBUST-JOIN-AND-PRESENCE-JIT.md","spt-core/crates/spt-daemon/src/access.rs","spt-core/crates/spt-daemon/src/linkhost.rs"],"fileMatches":[{"path":"spt-core/CHANGELOG.md","count":1},{"path":"spt-core/CI-SELFHOST-PLAN.md","count":1},{"path":"spt-core/CONTEXT.md","count":3},{"path":"spt-core/Cargo.lock","count":6},{"path":"spt-core/M12-CANDIDATES.md","count":1},{"path":"spt-core/M12-PLAN.md","count":1},{"path":"spt-core/M12-W4-PLAN.md","count":1},{"path":"spt-core/M4-D5-PLAN.md","count":1},{"path":"spt-core/M4-D9-PLAN.md","count":2},{"path":"spt-core/M4-PLAN.md","count":1},{"path":"spt-core/M5-D5-PLAN.md","count":2},{"path":"spt-core/M7-PLAN.md","count":1},{"path":"spt-core/M8-ACCEPTANCE-STEPS.md","count":1},{"path":"spt-core/M8-ACCEPTANCE.md","count":2},{"path":"spt-core/M8-PLAN.md","count":7},{"path":"spt-core/PRD.md","count":1},{"path":"spt-core/ROADMAP.md","count":1},{"path":"spt-core/V0.17.0-ROBUST-JOIN-AND-PRESENCE-JIT.md","count":1},{"path":"spt-core/crates/spt-daemon/src/access.rs","count":4},{"path":"spt-core/crates/spt-daemon/src/linkhost.rs","count":1}],"truncated":true,"fileLimitReached":20,"displayContent":"# spt-core/\n## CHANGELOG.md\n 919│- **Automatic re-pair cleanup.** If you reinstall or regenerate a node's identity and pair it again from the same machine under the same name, its old, now-dead identity is removed automatically during pairing — no manual prune needed.\n*920│- **Firewall setup on Windows.** The installer (when run elevated) now adds the inbound network rule `spt` needs so other nodes can reach you. If it wasn't added, `spt subnet status` and the \"coming online\" banner now tell you the rule is missing and print the exact command to add it.\n 921│- **Starts on boot.** The installer now registers `spt` to start automatically — at login on Windows, and as a per-user service on Linux — so your node is reachable after a reboot without running a command first.\n 922│\n 923│### Changed\n## CI-SELFHOST-PLAN.md\n 64│      runner + target).\n*65│- [ ] Decide whether the netstream/netbroker UDP-binding tests need a firewall\n 66│      allowance on gravity (loopback-only since BindScope::Loopback — no).\n## CONTEXT.md\n 518│\n*519│First network socket bind triggers an OS firewall prompt (Windows Defender, some Linux); unavoidable without a signed binary + pre-declared exception. Framed in CLI UX, not suppressible.\n 520│\n 521│### The peer pump\n 522│\n    │...\n 804│**endpoint access whitelist** (distinct from the grant store — the outer reach gate):\n*805│A per-endpoint allow-list controlling **who may remotely reach** an endpoint, **by origin node** (and, later, by user). The load-bearing semantic: it checks the **origin node of the inbound interaction** (where the operator is acting), **not** the sender endpoint's identity or home — *\"the operator must be on a whitelisted machine; the sender endpoint's location is irrelevant.\"* It is a **stateful-firewall** model, not a blanket block:\n 806│- **Outbound** from the endpoint → any **visible** node (the whitelist never restricts who it talks *to*).\n 807│- **Inbound** → a **reply** correlated to the endpoint's own prior outbound (reply traffic, keyed on the inbound `from`) is allowed from any visible node (\"established/related\"); an **unsolicited/direct** control or message (\"new inbound\") is allowed only from a **whitelisted** node.\n 808│- **Same-node operation is always allowed** (you're at the hardware; the home node never whitelists itself). The whitelist gates **remote (cross-node)** reach only.\n    │...\n 833│\n*834│**Daemon lifecycle:** registered as a systemd user service (Linux) / Windows service or scheduled task for the always-on guarantee, with `spt api`-triggered auto-start as the fallback (above). The first network bind triggers the OS firewall prompt here.\n 835│\n 836│**What \"installed\" comprises:** the `spt` binary + the broker + the `$SPT_HOME` root (holds `node.key`, trust store, registry, spools, in-memory-seed fallback state). **First run is idempotent + interactive-optional:** generates the node identity and starts the daemon unattended; pairing (and subnet naming) is a separate explicit step.\n 837│\n## Cargo.lock\n 1971│ \"noq-proto\",\n*1972│ \"noq-udp\",\n 1973│ \"papaya\",\n 1974│ \"pin-project\",\n 1975│ \"pkcs8 0.11.0-rc.10\",\n     │...\n 2525│ \"netlink-sys\",\n*2526│ \"noq-udp\",\n 2527│ \"objc2-core-foundation\",\n 2528│ \"objc2-system-configuration\",\n 2529│ \"pin-project-lite\",\n     │...\n 2565│ \"noq-proto\",\n*2566│ \"noq-udp\",\n 2567│ \"pin-project-lite\",\n 2568│ \"rustc-hash\",\n 2569│ \"rustls\",\n     │...\n 2604│[[package]]\n*2605│name = \"noq-udp\"\n 2606│version = \"0.10.0\"\n 2607│source = \"registry+https://github.com/rust-lang/crates.io-index\"\n 2608│checksum = \"ee91b05f4f3353290936ba1f3233518868fb4e2da99cb4c90d1f8cebb064e527\"\n     │...\n 3088│ \"quinn-proto\",\n*3089│ \"quinn-udp\",\n 3090│ \"rustc-hash\",\n 3091│ \"rustls\",\n 3092│ \"socket2\",\n     │...\n 3121│[[package]]\n*3122│name = \"quinn-udp\"\n 3123│version = \"0.5.14\"\n 3124│source = \"registry+https://github.com/rust-lang/crates.io-index\"\n 3125│checksum = \"addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd\"\n## M12-CANDIDATES.md\n 28│     headless/no-TTY = print exact command for the human (agent relays).\n*29│   - Scope elevation to only steps that need it (service-install / firewall /\n 30│     privileged-port) — subnet-create itself likely unprivileged.\n 31│   - Complementary downstream: spt-claude-code skill with create/join/show-code verbs.\n 32│\n## M12-PLAN.md\n 63│  x-terminal-emulator · Linux+TTY inline sudo · headless/no-TTY print command for the human.\n*64│  Scope elevation to only steps that need it (service/firewall/privileged-port; subnet-create\n 65│  itself likely unprivileged).\n 66│\n 67│## Wave 5 — whoami merge (small)\n## M12-W4-PLAN.md\n 17│  sudo · headless/no-TTY print the command for the human. Scope elevation to only\n*18│  the steps that need it (service/firewall/privileged-port; subnet-create itself\n 19│  is unprivileged-to-run but reveals a secret, so it is gated).\n 20│\n 21│## What EXISTS today (investigation 2026-06-14)\n## M4-D5-PLAN.md\n 84│   passes; non-listed unsolicited refused; reply from non-listed node passes (stateful\n*85│   firewall); same-node always passes; origin spoof via payload fails.\n 86│5. **Fault-matrix rows** (maintenance rule): WAN-msg path, remote attach, file transfer\n 87│   each get a row in `docs/FAULT-MATRIX.md` in the same change that lands them.\n 88│\n## M4-D9-PLAN.md\n 14│  static env — no runtime exchange, both legs non-interactive); `BindScope::Port`\n*15│  (fixed dialable UDP port); `docs/TWO-HOST-RUNBOOK.md`; the `[twohost]`\n 16│  commit-message CI gate (both rig hosts are the runners; `needs: test` releases\n 17│  the roles together). Ladder proven green locally first (two processes over\n 18│  127.0.0.1; the smoke caught a real test-op/pump-op journal collision).\n   │...\n 24│  replicated to A). HFENDULEAM ↔ gravity-linux over tailscale; whole ladder ~8 s\n*25│  once both sides up; no firewall rule needed (the pump keeps the reverse UDP\n 26│  4-tuple warm). Evidence in the runbook appendix; `docs/FLAKE-LEDGER.md` made\n 27│  durable en route (digest flake second occurrence, rerun passed).\n 28│- int stages activated post-proof: REQ-NET-1, REQ-INST-5, REQ-INST-7, REQ-INST-8,\n## M4-PLAN.md\n 161│- **D5d** Endpoint access control (ADR-0009 node-tier): per-endpoint whitelist, origin-node\n*162│  gate, stateful-firewall (reply/outbound exempt), outer gate before grants. · **REQ-SEC-1**\n 163│- **Reqs:** REQ-NET-1, REQ-INST-8, REQ-REACH-1, REQ-SEC-1. · **Acceptance:** drive an agent\n 164│  on machine A from machine B; off-node access denied without a grant.\n 165│\n## M5-D5-PLAN.md\n 40│  Inbound gate: `access.rs` `access_check` on the **handshake-proven** origin node\n*41│  (ADR-0009 stateful firewall; REQ-HAZARD-WAN-ORIGIN-AUTH — never a payload field).\n 42│- **CLI refusal to lift:** `cli.rs cmd_rest` (~792) refuses `id@node` with\n 43│  `CROSS_NODE_M5`; addr grammar already parses `[subnet:]id[@node]`\n 44│  (`spt_proto::addr`, REQ-INST-10).\n   │...\n 67│  `daemon_rest_event` (which runs the echo gate + D4a shell cascade on the target\n*68│  node — where the shells live, exactly right). **Ungated beyond the firewall** —\n 69│  same trust class as remote-drive (M5-PLAN D5b: \"your instances from any node\");\n 70│  no grant-store consultation.\n 71│- **CLI:** `cmd_rest` lifts the qualified-form refusal: bare id = local (unchanged);\n## M7-PLAN.md\n 13│> silent-peer eviction), plus the AMBIGUOUS-render copy-paste-targets fix.\n*14│> Session harvest (Linux elevation model, NTP-first clock, firewall\n 15│> registration, post-join address seeding, trust-prune verb, M8\n 16│> nounification spec) is logged in `docs/DEFERRED.md`.\n 17│\n## M8-ACCEPTANCE-STEPS.md\n 63│## Already passed (no rig action needed)\n*64│- **2** Windows install (enlyzeam: firewall + at-logon task, v0.1.0→D4) ✓\n 65│- **9** skewed-clock pairing (enlyzeam +206s; NTP-on JOINED, NTP-off NO_SEED_HOLDER) ✓\n 66│- **4** old verbs gone / hot path intact ✓ · **8** status honesty ✓\n 67│- **debug-converge** tooling (exit 0/1/2) ✓ · full **twohost** cross-node ladder ✓\n## M8-ACCEPTANCE.md\n  16│  (local asset base) **upgraded enlyzeam from the public v0.1.0 → D4** and\n *17│  fired every leg: sha256 verified, inbound **UDP firewall rule registered**\n  18│  (REQ-INSTALL-7), **at-logon daemon scheduled task registered**\n  19│  (REQ-INSTALL-8), user PATH set. `daemon status` then rendered\n  20│  `peer pump: live (last tick 3s ago)` — the D4 heartbeat writer→reader on\n    │...\n 119│2. **Fresh Windows install** (elevated leg): inbound works with zero\n*120│   accumulated dev firewall rules — a join succeeds where M7's\n 121│   NO_SEED_HOLDER failed. Then the **unelevated-install** path: `spt subnet\n 122│   status` renders the blocked-inbound state honestly. → criteria 2, 3.\n 123│\n## M8-PLAN.md\n  27│3. **The installer's \"next touch\" is already owed** three legs at once\n *28│   (Linux elevation, firewall registration, OS-service) — one coherent\n  29│   install/elevation deliverable instead of three drive-bys.\n  30│\n  31│## Root causes this milestone fixes\n    │...\n  41│3. **A fresh Windows install is silently unreachable inbound.** The detached\n *42│   daemon never triggers the first-bind firewall prompt; mDNS + QUIC meet /\n *43│   pairing UDP drops with no rendered cause.\n  44│4. **A node is unreachable after reboot** until something invokes `spt`\n  45│   (REQ-INSTALL-1's deferred third leg — no OS-service registration).\n  46│5. **Subnet participation is all-or-nothing** (attached/detached *term*\n    │...\n  75│| 9 | No deprecation shims, same as M7 decision 1 — zero external CLI consumers until spt-claude-code exists. Breaking renames land clean. |\n *76│| 10 | New requirements minted **before work starts** (TRACEABILITY rule 3): `REQ-CLI-*` family (endpoint noun · daemon noun · hot-path preservation), `REQ-SUBNET-*` additions (attach/detach serve-state · prune · re-pair overwrite · status render), `REQ-INSTALL-*` additions (Linux elevation install leg · firewall registration · OS-service), polish reqs per scope ratification. Exact ids assigned at execution; inactive until their deliverable starts (rule 5). |\n  77│| 11 | **`subnet status` is daemon-aware** (user 2026-06-07): zero-subnet text becomes \"No subnets registered — this node is standalone.\" followed by a daemon-status-dependent blurb (daemon running vs not). Never implies messaging works while the daemon is down. |\n  78│| 12 | **Hint footer only on bare `spt subnet`** (user 2026-06-07): `spt subnet status` drops its \"hint:\" lines; the flagless `spt subnet` view keeps them (amends M7 decision 5's \"always printed\"). |\n  79│| 13 | **Per-machine re-pair trust overwrite** (user 2026-06-07): registry rows carry a stable per-machine identifier (NOT the MAC — it changes between wifi/ethernet; source per open decision G). A **successful pairing ceremony** presenting the same node label AND the same machine identifier as an existing trusted row is treated as a re-pair of that machine: the old identity's trust + registry rows are deleted automatically. Overwrite fires only inside a completed ceremony (TOTP + SPAKE2 + the join-sid...\n    │...\n 126│election + KH 5.7 interplay verified (daemon + state under the elected\n*127│account, never root). Windows: elevated install leg registers the firewall\n*128│rule (`New-NetFirewallRule`, inbound UDP) **and** the daemon self-detects\n 129│blocked inbound → rendered as the \"no connection\" state in `subnet status` +\n 130│coming-online banner (covers user-scope installs that skip the elevated leg).\n 131│Both OSes: OS-service registration per decision 17 — Linux systemd user\n    │...\n 134│daemon). Installer-script E2E rungs extended (`SPT_INSTALL_E2E` stays\n*135│hermetic — service/firewall legs env-gated off in CI, proven in acceptance\n 136│instead).\n 137│\n 138│**D4 — convergence polish + pump resilience:**\n## PRD.md\n 140│\n*141│- **R-SEC-1** (M4 node-tier; user-tier deferred) **Per-endpoint access whitelist:** an optional allow-list gating **who may remotely reach** an endpoint, checked by **origin node** of the inbound interaction (not sender-endpoint identity — *\"the operator must be on a whitelisted machine\"*). **Stateful-firewall semantics:** outbound goes to any visible node; an inbound **reply** correlated to the endpoint's own prior outbound (reply traffic, keyed on the inbound `from`) is allowed from any visible node;...\n 142│\n 143│---\n 144│\n## ROADMAP.md\n 44│\n*45│- **M7 — Subnet & quickstart UX. ✅ delivered (2026-06-06** — planned 2026-06-05, task breakdown [`M7-PLAN.md`](./M7-PLAN.md)). Subnet setup is now a first-class, guided, secure product surface and the public quickstart is honest about personas. Shipped: the **join ceremony's product surface** (always-on daemon pairing responder + guided `spt subnet join` CLI initiator over the rig-proven SPAKE2 wire) · the `spt subnet` noun namespace (`status [NAME] [--nodes]` / `create` / `show-code` / `join`; `s...\n 46│\n 47│- **✅ Broker/brain process-isolation restoration — delivered (2026-06-11).** Design: [`docs/BROKER-BRAIN-SPLIT-RESTORATION.md`](./docs/BROKER-BRAIN-SPLIT-RESTORATION.md) (verified-with-amendments by `doyle`); decision: **ADR-0018**; build plan: [`RESTORATION-PLAN.md`](./RESTORATION-PLAN.md) (D1–D7). Corrects an unintended regression — the broker/brain split (ADR-0004) was specced + spiked as two *processes*, but the production daemon runs the broker as an in-process *thread* (`daemon.rs:165-170`)...\n 48│\n## V0.17.0-ROBUST-JOIN-AND-PRESENCE-JIT.md\n 12│1. **WAN join silently fails on half-broken IPv6.** iroh binds dual-stack; dead-AAAA candidate\n*13│   attempts silently burn the 30 s rendezvous window. Refuted first: clock/NTP, firewall, relay.\n 14│   Discriminator: `Test-NetConnection dns.iroh.link -Port 443` IPv6 fails / IPv4 ok. Fixed live by\n 15│   disabling IPv6. ([[broken-ipv6-poisons-iroh-discovery]])\n 16│2. **Dead endpoints show ONLINE on remote nodes.** `registryhost.rs:404` advertises a not-alive perch\n\n## crates/spt-daemon/src/\n### access.rs\n  10│//!\n *11│//! ## Whitelist semantics (stateful firewall, not a blanket block)\n  12│//!\n  13│//! - **Origin-node gate:** the subject is the node the inbound interaction\n  14│//!   *originates from* (where the operator is acting) — never the sender\n    │...\n  47│\n *48│/// How an inbound interaction reached this node, for the stateful-firewall\n  49│/// split.\n  50│#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n  51│pub enum InboundClass {\n    │...\n 126│/// [`classify_inbound`] later correlates a reply against. Call on every\n*127│/// outbound WAN send (the sending leg's side of the stateful firewall).\n 128│/// Best-effort: a failed write only costs a future reply its exemption (it\n 129│/// will classify unsolicited — the conservative direction).\n 130│// [impl->REQ-SEC-1]\n    │...\n 193│\n*194│    // [unit->REQ-SEC-1] the stateful-firewall exemption: a Reply classifies\n 195│    // past a whitelist that would refuse the same node unsolicited — and\n 196│    // classification itself turns on the recorded outbound within the window.\n 197│    #[test]\n### linkhost.rs\n 11│//!\n*12│//! ## Trust class: remote-drive (ungated beyond the firewall)\n 13│//!\n 14│//! Same posture as remote rest/attach: the [`access_check`] whitelist on the\n 15│//! **handshake-proven** origin node (ADR-0009; REQ-HAZARD-WAN-ORIGIN-AUTH —","linesTruncated":true,"meta":{"limits":{"columnTruncated":{"maxColumn":512}}}},"isError":false,"timestamp":1784069262008}}
{"type":"message","id":"d3134fa1","parentId":"06e93649","timestamp":"2026-07-14T22:48:11.204Z","message":{"role":"toolResult","toolCallId":"call_V9OyBxgCMGpjlr1NqGu6LzBn|fc_050f56f290a937ae016a56bc8cc9e08196b0446e2c91c152ed","toolName":"grep","content":[{"type":"text","text":"Grep timed out after 30s; narrow paths or pattern, or scope with `glob` first"}],"details":{},"isError":true,"timestamp":1784069291203}}
{"type":"message","id":"876ea997","parentId":"d3134fa1","timestamp":"2026-07-14T22:48:21.703Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Assessing IPv4-only connection failures**\n\n**Distinguishing transport and seed-proof failures**"},{"type":"toolCall","id":"call_JN6uECsAKlPtEI23vSDfivQB|fc_050f56f290a937ae016a56bcb25a5081968c6b3e6c536b58d9","name":"irc","arguments":{"i":"Requesting code-path discriminator","op":"send","to":"IsolationCodeRCA","message":"Live evidence now points symmetric all-peer submit-dial 10s timeouts while meet listeners rotate/rebind normally, clocks ruled out. Can code/log shape distinguish transport handshake blackhole vs seed-proof stream blackhole? Any v0.31 change around accept loop/identity/address? Please send strongest mechanism and falsifiable signature.","replyTo":null,"await":false,"from":null,"timeoutMs":null,"peek":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":6534,"output":333,"cacheRead":236032,"cacheWrite":0,"totalTokens":242899,"reasoningTokens":209,"cost":{"input":0.032670000000000005,"output":0.00999,"cacheRead":0.118016,"cacheWrite":0,"total":0.16067599999999999}},"stopReason":"toolUse","timestamp":1784069291258,"responseId":"resp_050f56f290a937ae016a56bcabcb588196a736bb4dd95c3847","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bcad30b8819681f8491b3fd4fe4c","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVryyWOPTzBor3YAKghT9EQbbKUeWZeFfA12EP9NNmFRwNrzy34N0t5Dl7v31Kf6rLF-EoB_Bmdjkr6jmere39mPcKldWosKcxkota7EJAew2J85XIgiJhObfd4L-aU8CJ8NsmLZNoN0TT2QttmX6V2S7HS9_ZmB9k9pTLTkJ0AzhUWGi1nY6Cn9Cu6PakSH4ncwa4gMlrWalOShb2sAWvXNKu06flNd6yvuIDqCyHmDMtAmOFZztVyPWaalnkVSqa2hfWIvDayhZgYE8lux2n61b31_ouwVJWsLA7ECaIvLlOlm1kXv5MYQ-RcsY7RVvGWYOzzMBcuMiUuGLHTgpR5TRt3Pd5lhI3M9raZ72zPfS0JhDoFvgLIJkU_3qR_S0jfCAyluqUPDAHkgTdtgPFA7xqpomPbeLas79cM_ESRaXurwJ7xI4lIMmWpI2-uhQ8UwkMFKcOJiWj1_vZiy3Dz3Cxh7zVOhu1Yd6vtvU4Ps7QeyWyZR5p0a3lKX1p9L884UhLV4h3eWNeos3LAodM1MQrmjV13x-nWOiW7BQY0q6kxrnWEeTB8Bg5rX0H_Ac0lLNQTL2eIkScGgG2qTn4oaO71vTO-sSH2BDAqnRrMD6Fpe0EsVcEiuL2sbp1DRyZ4QP6DngRWlqISDn-vwg8gX2p_YAu-C4LTgwNjmuYBkOwRsScJSE2nRcnFRS01sAsmvIJdf4v5UjdX1UMP-doJj7qOV-40lZzta7Wc1ySYbTGNXVzjfBfo61a3MAPSOnPpURA2qTnQyhsbLf6d0gIqxf9VeD3LRfNbiqZE6I-Pf31kur4Np2_25zGbshGUrtSgvoUJ9432r6761iuwwhoth13ZblGJMeod8J8hThIWnk-Ivyt4Bu_KtTa4sAxHsWhv7iug1rsK_RPfIr_nVt7pTuCfBBGbN4cZk0pulg1Tr0CYDKBN2_1oEwr5U8KrnEw-9V9OUAUk-YeoUioGu6uf2wOniM04-eq6EKess88jJCTUoM26RWTVRWpcby4gKzuVw2bYBl96BmGeOvHYp4Sx89kTjCQyJhBkmR0mfuSMbBpzZXj62o-vZWqJpnvWfx4NM3mWtvlqLYZg1ATuLUQmoncaUBpaqxn3fUg8NiSBAXYAzF26lZvHB5Tv6DBbOhOqVN8FmFinnwthXpJ6BvaG-5CT4uzrXgOYAxvUWdA9FY_LEyuWJ2GA1JWLLytTv-gnsXLpgxE2TL5uDVr6U4XAd3Q_6Ok8TFKJbTNsKbAO-MhZ7QZY5Wft3BtEK0XmXVAFxhOjOtz9tZE018HIJh7m5oosNS3SvgMYPIEjKnHjtLOcJEvD52jYPLsARJcpZ9GvEjgL81UIbew0HohtgR49QBCkjC9W-XydaowD6klFyhkrDSkYlo4-pEfEZXq97peX-SJ1DywSdqof79iire6-CBQY-z1-0Gv5neK-pf4FkpEXVVgT7c6cYRKkGdTTplAPOfhFTbwtvzFwmm1K_y0Ck_8fHvA8_q3Gntv02Ok4Uz8ygZ1ZS_6Kv3xDby1rlWo1dC6UZme-T8G26n0Z96v0DBZ_YwxVRxfJn9GaEOOMYSCsKa1WMJYhlTnipAkBrgTfrIW8dLBcCcFyxmRDzeWWcH3bmcedZrL9R_Sd9U-O7e2Nf-8WHXIFuw2lr2DRYzKP-ZNvTr2irkDhTgyMxSmNv_OXxkGH34EMRdro_oPjRZMlGk58fp9J0xmNk8gJdjkSyX0bx8p7h_ktAnZF62Auj9khtpw-AWeT3WCOGQIAPmiDPg3zte4CO4-_10Yo9tsprfvdayS0pXN4TKTnBrgPd4dT7chBPkBWtG64WKzteaXJBtB6gcEgWCjYwnscUPNOLdEAExr9RKJu9SJHzcj7U_aRExVAsflZitVgQcCqkzrb7npKBKK_TnuWmX3ugj-PR-i4EYfhOWcecpepzhcv0QY0HmzXSN4PuWwoKxSsWVfzTFIVm_6iTrnGzRsEiBa1FzuLDU_eU9zOCCw0B8FS_CTPd2cuZldKuxUWNe9n8g8uHPhD-fdcIg01aAn95aU-UJjkWYFBpenJb_za7Jeufz1-pQUASMWeRWq3d5iop5jS3CL5BbMtdAeoO2P3fMQxTBXKwUQxiuDwCewKO3-Hjg7MmnZaHI0yg5E_0YcXZ6gRzILFqS5gfOgc5H_IGBONuHFTFL0jBUdf3qnH0oSszxfH0HxneCQdvUKL8Fz3yy1GlnnTIyj52xkAnIFliicdeyYqL4GA2eR37NS93Cyg-ogwkZbjEgtlsfQe3UDRlrOFk=","summary":[{"type":"summary_text","text":"**Assessing IPv4-only connection failures**"},{"type":"summary_text","text":"**Distinguishing transport and seed-proof failures**"}]},{"id":"fc_050f56f290a937ae016a56bcb25a5081968c6b3e6c536b58d9","type":"function_call","status":"completed","arguments":"{\"i\":\"Requesting code-path discriminator\",\"op\":\"send\",\"to\":\"IsolationCodeRCA\",\"message\":\"Live evidence now points symmetric all-peer submit-dial 10s timeouts while meet listeners rotate/rebind normally, clocks ruled out. Can code/log shape distinguish transport handshake blackhole vs seed-proof stream blackhole? Any v0.31 change around accept loop/identity/address? Please send strongest mechanism and falsifiable signature.\",\"replyTo\":null,\"await\":false,\"from\":null,\"timeoutMs\":null,\"peek\":null}","call_id":"call_JN6uECsAKlPtEI23vSDfivQB","name":"irc"}]},"duration":10444.832000017166,"ttft":1959.1200999617577,"contextSnapshot":{"promptTokens":242566,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_JN6uECsAKlPtEI23vSDfivQB|fc_050f56f290a937ae016a56bcb25a5081968c6b3e6c536b58d9","toolName":"irc","startedAt":"2026-07-14T22:48:21.704Z","intent":"Requesting code-path discriminator"},"id":"515e8473","parentId":"876ea997","timestamp":"2026-07-14T22:48:21.704Z"}
{"type":"message","id":"b8611b64","parentId":"515e8473","timestamp":"2026-07-14T22:48:21.704Z","message":{"role":"toolResult","toolCallId":"call_JN6uECsAKlPtEI23vSDfivQB|fc_050f56f290a937ae016a56bcb25a5081968c6b3e6c536b58d9","toolName":"irc","content":[{"type":"text","text":"Delivered to 1 peer(s):\n- IsolationCodeRCA: injected"}],"details":{"op":"send","from":"IsolationLogRCA","to":"IsolationCodeRCA","receipts":[{"to":"IsolationCodeRCA","outcome":"injected"}]},"isError":false,"timestamp":1784069301704}}
{"type":"message","id":"5dc9ee0f","parentId":"b8611b64","timestamp":"2026-07-14T22:48:36.215Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Assessing network state from artifacts**\n\n**Investigating roster last_seen discrepancies**"},{"type":"toolCall","id":"call_nubXiTZQ8zSIKxxFJ4teXsLa|fc_050f56f290a937ae016a56bcc41b5c8196b0046813e6d7d09a","name":"grep","arguments":{"i":"Tracing roster last seen","pattern":"last_seen|merge_entry|stamp.*roster|RosterEntry","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs","selector":null,"case":true,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_FrFgMHzJzNiYPKvzmydPBlog|fc_050f56f290a937ae016a56bcc41b8c8196ab527d076598b1f5","name":"read","arguments":{"i":"Reading roster timestamps","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs","selector":"60-180,250-390"}},{"type":"toolCall","id":"call_T4x6Qx94hUkpJkDK5d96uhkG|fc_050f56f290a937ae016a56bcc41b94819687f1b404b1fce11f","name":"read","arguments":{"i":"Reading roster propagation sink","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs","selector":"885-950"}},{"type":"toolCall","id":"call_zyN9FeVMKGDudlwpQ9Dtcyd2|fc_050f56f290a937ae016a56bcc41b9c8196b336c693df8269c0","name":"read","arguments":{"i":"Reading registry heard eviction","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs","selector":"250-340,560-650"}},{"type":"toolCall","id":"call_FgJrWjqwf4oWFwBxWfvsKczU|fc_050f56f290a937ae016a56bcc41ba48196be0cdc0d6a2ef8d7","name":"read","arguments":{"i":"Reading current release metadata","path":"C:/Users/decid/AppData/Local/spt-core/releases/release.json","selector":"raw"}},{"type":"toolCall","id":"call_lbtnbCQyki3aeGc3irM7mtJL|fc_050f56f290a937ae016a56bcc41ba88196aadba3e006422388","name":"grep","arguments":{"i":"Finding current broker address records","pattern":"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d|63546|61803|59864","path":"C:/Users/decid/AppData/Local/spt-core","selector":null,"case":true,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":748,"output":663,"cacheRead":242176,"cacheWrite":0,"totalTokens":243587,"reasoningTokens":253,"cost":{"input":0.0037400000000000003,"output":0.01989,"cacheRead":0.121088,"cacheWrite":0,"total":0.144718}},"stopReason":"toolUse","timestamp":1784069301720,"responseId":"resp_050f56f290a937ae016a56bcb5e1108196a122105209f2eb81","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bcb7f4588196a98a858411f3e823","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrzExK_eaTP8fozcZlvjOTlWC44c9htkB-KoIEizYitRTvkRa3fEpu2KTgG147acrYvVOr6wM_in567dqlpIDcbcsOMAwXiLj8i3sSqH4MdFna8yWzYARVmOB84P_yiXa_gjC4no4xuOFXkqPZquyb3VcOO5kE2-HHrqsKLQA0IIzCxcS-_ckvfeqoOoEQZxx_GswQuLCzBXCAMsW4ik1Y_a62DMmZsFjtEA-ayEXEFVh8MLjBzVvBNpOcSlCYKIC39ibKZf8Ki6hdjMSZr1tKxGptqm6I0qH2hRbtka5EajIfZ7CDk8eAuQhquoiGVPG0HDsnkRZO6YD926bXliYopiKEdblecCfHMpscjNYTXpZKZeJlMkmoO6YWRUmU4U5-T6QX4tsWKWxwfebIzhvhIRYHT0LIE4epL2cT0r0JkIEczQEyAksa6ZDAH-Zb1Ft2UydaBC2zeVpcZ2qx0PdwQNGcoSuN92CzpsNY9VKm-vIf6EzN3r7s7fwNVoNlDzspP4dKpVP0gczogr63zg1xNkJ-nLckK3ElwoxvPDEWHepITDVV1Zvl8Py4TEWUPziiilm0aVMETdksgnyzJdytSXY0RdcfERfNIRCHPisiPUNRuHouAhDNSZ1KCrOciDwdDceJmfMPVgvLzpIsD8DKRKxRCkCxv5l5nWj60MPDcAm7txL23iT0uR4o91b4d19NhqWtsXSxEm12hHViYyckpFc6uM5InHa2cm4CjM2IB-MggMRl0sGP0sqsudRsLExAw5qoGx0C4Oij2XIXGdJhDgCMkj_1dnwfZHK0Qz67aq1Yc8fIQjDWu5nRiJN-VoKBnsW7BZduP4nEFSf9JITaeKiGGVf3TQK_MkXwF3K6pmpj89i8YcNSWGg2HehYpW_EM_Xjge37i30IVx--hej-NHZLvTnVjwSrQS2WlfHz_iaHjQkqzPxlWh6iiqDVgSht6bg3EipshL_p5foypuxFjwUvliCPaEqKpKEGfo-xxnNJH2fKOYjh6IRhDZBy-jQzqRV6ilDvsvt9T7Hv-cp9AcKQyBSN1VIOTZrdZz2yGVHSZRXUPIuLSocc0pFSE76u59LCL4UW5qNmTJa70NOIZCEbOhkuEo57Hjj3DxO7OOciyjsJcvCkMRt28tbuDqQGjVVHrpcqm6HWJk8sfhQyXkV1-0oecmNIX33uTthhq6K3y-11cY2nq-NII0yGK-Xiwr1gHCN6pQaIP2kpCA_5WWYOrhxW9U8py_NQhnuHTonGiwAC5OUgPZm3oYQIHEn4bL8HFbZhEPj4u1Jof-aXl9mE9JsRFNX88F6fZyRxQ3zn7CQdvFFyhcA3TyRiKRmCtg0undLmhWZ1z_yoBbkYaMF0EqSEcbCPzOaqBHMVD4zWmfnGKfROjzaMRrEY0dwNLrE9cO_XNNPTwy71m6bXjddDwHErodv9gvX8oBHI2i33shOU_BB_H8LvqUGrmrA0Y9l4dDxq4SnsLGbDvt5bBZC-cO_I_QUIYZ0WDZDDUoq4EtxcWkbl9h0yiAbf6R6HvOcorWtNJUlfZxO6VeTHNwNG7DeQUREbzjHCn4M-jCwyGGqc8E9hDajXu7dFQ3HS22VUo-yx7FgpuAaCY7Ru-RpsBtLTrrQb4C1y5d2GjWv52oYJ8ONkY1XOijwjzfEwnVC6mj-LYMD23ZtbpW6Fp5tvB50FmV4HnZDqhbbFB-kBhxGfRzFur6WhcK_Quytd9BP0Z6nm-o5D1oP3voyjc0SgO8_9aS5pDU7N26pdBSV1TwEUb0ECbFqlNxjXPcDkmEmtIsoDH5tILqo5ektP_jjbZRrwk67-XwzCSfxWFgQ_b8JyTAL440iMxNVH9KhIuU49cqoyZ6X7v9PiBa7MMoUzA2fWS_II6j9DNnbHpty4HfdJg2L7gtHhR01XSEcnhAS4URVOKr2NrqH5ug2x65FsYRHe8X7N1ZRI8qKVHP-39iOiI3zm-Z4I8FpXkdzPlTloAg6PJn-G6wAgR3ubw25bIzs3ZGA2VOUCwNGi6W6mo2WdLAeTQtQotVxoZAaRfy9Fu8WM32om5MD3rUXK1DTBIIZDoDY4HJsRrdHF2aigy7YnbK-Ho7oJb97aWly8qlwrpwB_xZzXVMipy6SbpmAqe7V21hdCg3HbqOBR406pgKMwcfrOBBnRnscmZ3ev5LSRNyQx70y26WZOrA1Qc2vgJFguZmWv_WL1Tco0Q1qncwuUotuU7WtQMYGiuTtyJuabwbYGzOgsq9_LSwfv2c4w==","summary":[{"type":"summary_text","text":"**Assessing network state from artifacts**"},{"type":"summary_text","text":"**Investigating roster last_seen discrepancies**"}]},{"id":"fc_050f56f290a937ae016a56bcc41b5c8196b0046813e6d7d09a","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing roster last seen\",\"pattern\":\"last_seen|merge_entry|stamp.*roster|RosterEntry\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_nubXiTZQ8zSIKxxFJ4teXsLa","name":"grep"},{"id":"fc_050f56f290a937ae016a56bcc41b8c8196ab527d076598b1f5","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading roster timestamps\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs\",\"selector\":\"60-180,250-390\"}","call_id":"call_FrFgMHzJzNiYPKvzmydPBlog","name":"read"},{"id":"fc_050f56f290a937ae016a56bcc41b94819687f1b404b1fce11f","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading roster propagation sink\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs\",\"selector\":\"885-950\"}","call_id":"call_T4x6Qx94hUkpJkDK5d96uhkG","name":"read"},{"id":"fc_050f56f290a937ae016a56bcc41b9c8196b336c693df8269c0","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading registry heard eviction\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs\",\"selector\":\"250-340,560-650\"}","call_id":"call_zyN9FeVMKGDudlwpQ9Dtcyd2","name":"read"},{"id":"fc_050f56f290a937ae016a56bcc41ba48196be0cdc0d6a2ef8d7","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading current release metadata\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/releases/release.json\",\"selector\":\"raw\"}","call_id":"call_FgJrWjqwf4oWFwBxWfvsKczU","name":"read"},{"id":"fc_050f56f290a937ae016a56bcc41ba88196aadba3e006422388","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding current broker address records\",\"pattern\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d|63546|61803|59864\",\"path\":\"C:/Users/decid/AppData/Local/spt-core\",\"selector\":null,\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_lbtnbCQyki3aeGc3irM7mtJL","name":"grep"}]},"duration":14494.173900008202,"ttft":2260.7706000208855,"contextSnapshot":{"promptTokens":242924,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_nubXiTZQ8zSIKxxFJ4teXsLa|fc_050f56f290a937ae016a56bcc41b5c8196b0046813e6d7d09a","toolName":"grep","startedAt":"2026-07-14T22:48:36.215Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs"},"intent":"Tracing roster last seen"},"id":"85a10ed7","parentId":"5dc9ee0f","timestamp":"2026-07-14T22:48:36.215Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_FrFgMHzJzNiYPKvzmydPBlog|fc_050f56f290a937ae016a56bcc41b8c8196ab527d076598b1f5","toolName":"read","startedAt":"2026-07-14T22:48:36.215Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs"},"intent":"Reading roster timestamps"},"id":"c38c9a61","parentId":"85a10ed7","timestamp":"2026-07-14T22:48:36.215Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_T4x6Qx94hUkpJkDK5d96uhkG|fc_050f56f290a937ae016a56bcc41b94819687f1b404b1fce11f","toolName":"read","startedAt":"2026-07-14T22:48:36.215Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs"},"intent":"Reading roster propagation sink"},"id":"2487dd00","parentId":"c38c9a61","timestamp":"2026-07-14T22:48:36.215Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_zyN9FeVMKGDudlwpQ9Dtcyd2|fc_050f56f290a937ae016a56bcc41b9c8196b336c693df8269c0","toolName":"read","startedAt":"2026-07-14T22:48:36.215Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs"},"intent":"Reading registry heard eviction"},"id":"029a6845","parentId":"2487dd00","timestamp":"2026-07-14T22:48:36.215Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_FgJrWjqwf4oWFwBxWfvsKczU|fc_050f56f290a937ae016a56bcc41ba48196be0cdc0d6a2ef8d7","toolName":"read","startedAt":"2026-07-14T22:48:36.215Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/releases/release.json"},"intent":"Reading current release metadata"},"id":"599b8840","parentId":"029a6845","timestamp":"2026-07-14T22:48:36.215Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_lbtnbCQyki3aeGc3irM7mtJL|fc_050f56f290a937ae016a56bcc41ba88196aadba3e006422388","toolName":"grep","startedAt":"2026-07-14T22:48:36.215Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core"},"intent":"Finding current broker address records"},"id":"4c4c7206","parentId":"599b8840","timestamp":"2026-07-14T22:48:36.215Z"}
{"type":"message","id":"353be8f7","parentId":"4c4c7206","timestamp":"2026-07-14T22:48:36.222Z","message":{"role":"toolResult","toolCallId":"call_FrFgMHzJzNiYPKvzmydPBlog|fc_050f56f290a937ae016a56bcc41b8c8196ab527d076598b1f5","toolName":"read","content":[{"type":"text","text":"impl std::fmt::Display for RosterError {\n    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n        match self {\n            RosterError::Io(e) => write!(f, \"roster store io: {e}\"),\n        }\n    }\n}\n\nimpl std::error::Error for RosterError {}\n\n/// The lease decision when merging an entry (mirrors the `spt-net` registry's\n/// `MergeOutcome` naming — strictly-greater wins).\n#[derive(Debug, Clone, Copy, PartialEq, Eq)]\npub enum MergeOutcome {\n    /// First entry for this `(subnet, pubkey)` — inserted.\n    Inserted,\n    /// A strictly-newer `lease_epoch` for an existing member — replaced.\n    Updated,\n    /// Equal/older `lease_epoch` (or a tombstoned-but-still-merged fact) — the\n    /// incoming entry did not advance the lease; nothing changed.\n    Stale,\n}\n\n/// One member of a subnet's roster. Authored by the member itself; merged into\n/// every other member's roster strictly-greater-`lease_epoch`-wins.\n#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\npub struct RosterEntry {\n    /// The member's Ed25519 node pubkey, lowercase hex (the iroh NodeId). The\n    /// merge key within a subnet, and what the mesh dials/seed-proofs.\n    pub pubkey_hex: String,\n    /// The subnet this entry belongs to (a node holds N subnets' rosters in one\n    /// file, the multi-subnet shape `subnet.json` uses).\n    pub subnet: String,\n    /// The member's advertised node label (its OS hostname).\n    pub label: String,\n    /// The member's hashed stable machine id (REQ-SUBNET-7 anchor — the re-pair\n    /// overwrite/tombstone-clear key; never the raw id).\n    pub machine_id: String,\n    /// Last-known dialable address — an opaque serde-serialized iroh\n    /// `EndpointAddr` (this crate never grows an iroh edge; same posture as\n    /// [`PeerAddrStore`](crate::peeraddrs)). `None` until one is observed.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    pub address: Option<serde_json::Value>,\n    /// Last-seen stamp (opaque epoch-seconds string).\n    pub last_seen: String,\n    /// The author's `node_label` lease — strictly-greater-wins. Equal/lower on\n    /// merge ⇒ [`Stale`](MergeOutcome::Stale) (the registry lease, reused).\n    pub lease_epoch: u64,\n}\n\n/// A per-pubkey revoked marker. Removal in a grow-set can only be additive —\n/// the tombstone is the addition that means \"gone.\"\n#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\npub struct Tombstone {\n    /// The revoked member's pubkey (lowercase hex).\n    pub pubkey_hex: String,\n    /// The subnet the revocation applies within.\n    pub subnet: String,\n    /// When it was written (opaque epoch-seconds string).\n    pub stamp: String,\n}\n\n/// The whole `roster.json` document: every subnet's members + tombstones this\n/// node knows. A union grow-set — merges are convergent, commutative, idempotent.\n#[derive(Debug, Clone, Default, Serialize, Deserialize)]\npub struct RosterStore {\n    /// Known members across all subnets (keyed `(subnet, pubkey_hex)`).\n    #[serde(default)]\n    pub members: Vec<RosterEntry>,\n    /// Revocation tombstones across all subnets (keyed `(subnet, pubkey_hex)`).\n    #[serde(default)]\n    pub tombstones: Vec<Tombstone>,\n}\n\nimpl RosterStore {\n    /// Load from the canonical [`roster_file`]. A missing file is the empty\n    /// roster (an unpaired node) — never an error.\n    pub fn load() -> RosterStore {\n        Self::load_from(&roster_file())\n    }\n\n    /// Load from an explicit path (the testable core). Absent ⇒ empty; an\n    /// unreadable or corrupt file also degrades to empty rather than panicking —\n    /// a damaged roster must not brick the node (re-pair/merge rebuilds it), the\n    /// same stance as [`SubnetStore`](crate::subnet).\n    pub fn load_from(path: &Path) -> RosterStore {\n        match std::fs::read_to_string(path) {\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\n            Err(_) => RosterStore::default(),\n        }\n    }\n\n    /// Persist to the canonical [`roster_file`], creating `identity/` if needed.\n    pub fn save(&self) -> Result<(), RosterError> {\n        self.save_to(&roster_file())\n    }\n\n    /// Persist to an explicit path (atomic; creates the parent dir). Atomic write\n    /// so a concurrent reader never sees a torn roster (the\n    /// [`atomic`](crate::atomic) invariant).\n    pub fn save_to(&self, path: &Path) -> Result<(), RosterError> {\n        if let Some(parent) = path.parent() {\n            std::fs::create_dir_all(parent).map_err(|e| RosterError::Io(e.to_string()))?;\n        }\n        let json = serde_json::to_string_pretty(self).map_err(|e| RosterError::Io(e.to_string()))?;\n        atomic_write_string(path, &json).map_err(|e| RosterError::Io(e.to_string()))\n    }\n\n    /// Find a member entry by `(subnet, pubkey)`.\n    pub fn find(&self, subnet: &str, pubkey_hex: &str) -> Option<&RosterEntry> {\n        self.members\n            .iter()\n            .find(|m| m.subnet == subnet && m.pubkey_hex == pubkey_hex)\n    }\n\n    /// Whether `pubkey_hex` carries a tombstone in `subnet`.\n    pub fn is_tombstoned(&self, subnet: &str, pubkey_hex: &str) -> bool {\n        self.tombstones\n            .iter()\n            .any(|t| t.subnet == subnet && t.pubkey_hex == pubkey_hex)\n    }\n\n…\n    /// [`Stale`]: MergeOutcome::Stale\n    // [impl->REQ-MESH-2]\n    pub fn merge_entry(&mut self, incoming: RosterEntry) -> MergeOutcome {\n        match self\n            .members\n            .iter_mut()\n            .find(|m| m.subnet == incoming.subnet && m.pubkey_hex == incoming.pubkey_hex)\n        {\n            Some(existing) => {\n                if incoming.lease_epoch > existing.lease_epoch {\n                    *existing = incoming;\n                    MergeOutcome::Updated\n                } else {\n                    MergeOutcome::Stale\n                }\n            }\n            None => {\n                self.members.push(incoming);\n                MergeOutcome::Inserted\n            }\n        }\n    }\n\n    /// Record a tombstone (idempotent — re-tombstoning is a no-op). Dominates\n    /// the member's entry and suppresses any later reinsert until cleared.\n    // [impl->REQ-MESH-2]\n    pub fn tombstone(&mut self, subnet: &str, pubkey_hex: &str, stamp: &str) {\n        if !self.is_tombstoned(subnet, pubkey_hex) {\n            self.tombstones.push(Tombstone {\n                pubkey_hex: pubkey_hex.to_string(),\n                subnet: subnet.to_string(),\n                stamp: stamp.to_string(),\n            });\n        }\n    }\n\n    /// **Clear-on-repair**: drop the tombstone for `(subnet, pubkey)` — the\n    /// deliberate elevated act a completed re-pair performs. Returns whether one\n    /// was cleared. (A local op; see the module's convergence-boundary note.)\n    // [impl->REQ-MESH-2]\n    pub fn clear_tombstone(&mut self, subnet: &str, pubkey_hex: &str) -> bool {\n        let before = self.tombstones.len();\n        self.tombstones\n            .retain(|t| !(t.subnet == subnet && t.pubkey_hex == pubkey_hex));\n        self.tombstones.len() != before\n    }\n\n    /// Union-merge a whole other roster into this one: every entry through\n    /// [`merge_entry`] (strictly-greater-wins), every tombstone unioned\n    /// (dedup). The grow-set operation — commutative and idempotent.\n    // [impl->REQ-MESH-2]\n    pub fn merge(&mut self, other: &RosterStore) {\n        for e in &other.members {\n            self.merge_entry(e.clone());\n        }\n        for t in &other.tombstones {\n            self.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n        }\n    }\n\n    /// The slice handed to a joiner at pairing (or a peer on connect): every\n    /// member entry **and** tombstone for one subnet (offline members included —\n    /// persists-through-silence). The receiver merges it.\n    // [impl->REQ-MESH-2]\n    pub fn roster_for(&self, subnet: &str) -> (Vec<RosterEntry>, Vec<Tombstone>) {\n        let members = self\n            .members\n            .iter()\n            .filter(|m| m.subnet == subnet)\n            .cloned()\n            .collect();\n        let tombstones = self\n            .tombstones\n            .iter()\n            .filter(|t| t.subnet == subnet)\n            .cloned()\n            .collect();\n        (members, tombstones)\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    fn entry(subnet: &str, pk: &str, lease: u64) -> RosterEntry {\n        RosterEntry {\n            pubkey_hex: pk.to_string(),\n            subnet: subnet.to_string(),\n            label: format!(\"host-{pk}\"),\n            machine_id: format!(\"mid-{pk}\"),\n            address: None,\n            last_seen: \"100\".to_string(),\n            lease_epoch: lease,\n        }\n    }\n\n    // [unit->REQ-MESH-2] the lease: a strictly-greater lease_epoch updates an\n    // existing member; an equal or lower one is Stale and does NOT clobber the\n    // newer facts; a never-seen pubkey is Inserted. The node_label lease, reused.\n    #[test]\n    fn merge_entry_is_strictly_greater_lease_wins() {\n        let mut r = RosterStore::default();\n        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 5)), MergeOutcome::Inserted);\n\n        // Lower lease loses (Stale) — the stored lease stays at 5.\n        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 3)), MergeOutcome::Stale);\n        assert_eq!(r.find(\"home\", \"aa\").unwrap().lease_epoch, 5);\n\n        // Equal lease is Stale too (strictly-greater, not >=).\n        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 5)), MergeOutcome::Stale);\n\n        // Strictly greater wins.\n        let mut newer = entry(\"home\", \"aa\", 6);\n        newer.label = \"renamed\".into();\n        assert_eq!(r.merge_entry(newer), MergeOutcome::Updated);\n        assert_eq!(r.find(\"home\", \"aa\").unwrap().lease_epoch, 6);\n        assert_eq!(r.find(\"home\", \"aa\").unwrap().label, \"renamed\");\n    }\n\n    // [unit->REQ-MESH-2] union convergence: merge is commutative (A∪B == B∪A on\n    // the winning-lease facts) and idempotent (merging twice == once). The\n    // grow-set CRDT property the mesh relies on.\n    #[test]\n    fn merge_is_commutative_and_idempotent() {\n        let mut a = RosterStore::default();\n        a.merge_entry(entry(\"home\", \"aa\", 2));\n        a.merge_entry(entry(\"home\", \"bb\", 1));\n\n        let mut b = RosterStore::default();\n        b.merge_entry(entry(\"home\", \"bb\", 9)); // bb newer on b\n        b.merge_entry(entry(\"home\", \"cc\", 1));\n\n        let mut ab = a.clone();\n        ab.merge(&b);\n        let mut ba = b.clone();\n        ba.merge(&a);\n\n        // Same membership set and same winning leases regardless of order.\n        for pk in [\"aa\", \"bb\", \"cc\"] {\n            assert_eq!(\n…\n            );\n        }\n…\n    }\n…\n}"}],"details":{"displayContent":{"text":"impl std::fmt::Display for RosterError {\n    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n        match self {\n            RosterError::Io(e) => write!(f, \"roster store io: {e}\"),\n        }\n    }\n}\n\nimpl std::error::Error for RosterError {}\n\n/// The lease decision when merging an entry (mirrors the `spt-net` registry's\n/// `MergeOutcome` naming — strictly-greater wins).\n#[derive(Debug, Clone, Copy, PartialEq, Eq)]\npub enum MergeOutcome {\n    /// First entry for this `(subnet, pubkey)` — inserted.\n    Inserted,\n    /// A strictly-newer `lease_epoch` for an existing member — replaced.\n    Updated,\n    /// Equal/older `lease_epoch` (or a tombstoned-but-still-merged fact) — the\n    /// incoming entry did not advance the lease; nothing changed.\n    Stale,\n}\n\n/// One member of a subnet's roster. Authored by the member itself; merged into\n/// every other member's roster strictly-greater-`lease_epoch`-wins.\n#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\npub struct RosterEntry {\n    /// The member's Ed25519 node pubkey, lowercase hex (the iroh NodeId). The\n    /// merge key within a subnet, and what the mesh dials/seed-proofs.\n    pub pubkey_hex: String,\n    /// The subnet this entry belongs to (a node holds N subnets' rosters in one\n    /// file, the multi-subnet shape `subnet.json` uses).\n    pub subnet: String,\n    /// The member's advertised node label (its OS hostname).\n    pub label: String,\n    /// The member's hashed stable machine id (REQ-SUBNET-7 anchor — the re-pair\n    /// overwrite/tombstone-clear key; never the raw id).\n    pub machine_id: String,\n    /// Last-known dialable address — an opaque serde-serialized iroh\n    /// `EndpointAddr` (this crate never grows an iroh edge; same posture as\n    /// [`PeerAddrStore`](crate::peeraddrs)). `None` until one is observed.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    pub address: Option<serde_json::Value>,\n    /// Last-seen stamp (opaque epoch-seconds string).\n    pub last_seen: String,\n    /// The author's `node_label` lease — strictly-greater-wins. Equal/lower on\n    /// merge ⇒ [`Stale`](MergeOutcome::Stale) (the registry lease, reused).\n    pub lease_epoch: u64,\n}\n\n/// A per-pubkey revoked marker. Removal in a grow-set can only be additive —\n/// the tombstone is the addition that means \"gone.\"\n#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\npub struct Tombstone {\n    /// The revoked member's pubkey (lowercase hex).\n    pub pubkey_hex: String,\n    /// The subnet the revocation applies within.\n    pub subnet: String,\n    /// When it was written (opaque epoch-seconds string).\n    pub stamp: String,\n}\n\n/// The whole `roster.json` document: every subnet's members + tombstones this\n/// node knows. A union grow-set — merges are convergent, commutative, idempotent.\n#[derive(Debug, Clone, Default, Serialize, Deserialize)]\npub struct RosterStore {\n    /// Known members across all subnets (keyed `(subnet, pubkey_hex)`).\n    #[serde(default)]\n    pub members: Vec<RosterEntry>,\n    /// Revocation tombstones across all subnets (keyed `(subnet, pubkey_hex)`).\n    #[serde(default)]\n    pub tombstones: Vec<Tombstone>,\n}\n\nimpl RosterStore {\n    /// Load from the canonical [`roster_file`]. A missing file is the empty\n    /// roster (an unpaired node) — never an error.\n    pub fn load() -> RosterStore {\n        Self::load_from(&roster_file())\n    }\n\n    /// Load from an explicit path (the testable core). Absent ⇒ empty; an\n    /// unreadable or corrupt file also degrades to empty rather than panicking —\n    /// a damaged roster must not brick the node (re-pair/merge rebuilds it), the\n    /// same stance as [`SubnetStore`](crate::subnet).\n    pub fn load_from(path: &Path) -> RosterStore {\n        match std::fs::read_to_string(path) {\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\n            Err(_) => RosterStore::default(),\n        }\n    }\n\n    /// Persist to the canonical [`roster_file`], creating `identity/` if needed.\n    pub fn save(&self) -> Result<(), RosterError> {\n        self.save_to(&roster_file())\n    }\n\n    /// Persist to an explicit path (atomic; creates the parent dir). Atomic write\n    /// so a concurrent reader never sees a torn roster (the\n    /// [`atomic`](crate::atomic) invariant).\n    pub fn save_to(&self, path: &Path) -> Result<(), RosterError> {\n        if let Some(parent) = path.parent() {\n            std::fs::create_dir_all(parent).map_err(|e| RosterError::Io(e.to_string()))?;\n        }\n        let json = serde_json::to_string_pretty(self).map_err(|e| RosterError::Io(e.to_string()))?;\n        atomic_write_string(path, &json).map_err(|e| RosterError::Io(e.to_string()))\n    }\n\n    /// Find a member entry by `(subnet, pubkey)`.\n    pub fn find(&self, subnet: &str, pubkey_hex: &str) -> Option<&RosterEntry> {\n        self.members\n            .iter()\n            .find(|m| m.subnet == subnet && m.pubkey_hex == pubkey_hex)\n    }\n\n    /// Whether `pubkey_hex` carries a tombstone in `subnet`.\n    pub fn is_tombstoned(&self, subnet: &str, pubkey_hex: &str) -> bool {\n        self.tombstones\n            .iter()\n            .any(|t| t.subnet == subnet && t.pubkey_hex == pubkey_hex)\n    }\n\n…\n    /// [`Stale`]: MergeOutcome::Stale\n    // [impl->REQ-MESH-2]\n    pub fn merge_entry(&mut self, incoming: RosterEntry) -> MergeOutcome {\n        match self\n            .members\n            .iter_mut()\n            .find(|m| m.subnet == incoming.subnet && m.pubkey_hex == incoming.pubkey_hex)\n        {\n            Some(existing) => {\n                if incoming.lease_epoch > existing.lease_epoch {\n                    *existing = incoming;\n                    MergeOutcome::Updated\n                } else {\n                    MergeOutcome::Stale\n                }\n            }\n            None => {\n                self.members.push(incoming);\n                MergeOutcome::Inserted\n            }\n        }\n    }\n\n    /// Record a tombstone (idempotent — re-tombstoning is a no-op). Dominates\n    /// the member's entry and suppresses any later reinsert until cleared.\n    // [impl->REQ-MESH-2]\n    pub fn tombstone(&mut self, subnet: &str, pubkey_hex: &str, stamp: &str) {\n        if !self.is_tombstoned(subnet, pubkey_hex) {\n            self.tombstones.push(Tombstone {\n                pubkey_hex: pubkey_hex.to_string(),\n                subnet: subnet.to_string(),\n                stamp: stamp.to_string(),\n            });\n        }\n    }\n\n    /// **Clear-on-repair**: drop the tombstone for `(subnet, pubkey)` — the\n    /// deliberate elevated act a completed re-pair performs. Returns whether one\n    /// was cleared. (A local op; see the module's convergence-boundary note.)\n    // [impl->REQ-MESH-2]\n    pub fn clear_tombstone(&mut self, subnet: &str, pubkey_hex: &str) -> bool {\n        let before = self.tombstones.len();\n        self.tombstones\n            .retain(|t| !(t.subnet == subnet && t.pubkey_hex == pubkey_hex));\n        self.tombstones.len() != before\n    }\n\n    /// Union-merge a whole other roster into this one: every entry through\n    /// [`merge_entry`] (strictly-greater-wins), every tombstone unioned\n    /// (dedup). The grow-set operation — commutative and idempotent.\n    // [impl->REQ-MESH-2]\n    pub fn merge(&mut self, other: &RosterStore) {\n        for e in &other.members {\n            self.merge_entry(e.clone());\n        }\n        for t in &other.tombstones {\n            self.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n        }\n    }\n\n    /// The slice handed to a joiner at pairing (or a peer on connect): every\n    /// member entry **and** tombstone for one subnet (offline members included —\n    /// persists-through-silence). The receiver merges it.\n    // [impl->REQ-MESH-2]\n    pub fn roster_for(&self, subnet: &str) -> (Vec<RosterEntry>, Vec<Tombstone>) {\n        let members = self\n            .members\n            .iter()\n            .filter(|m| m.subnet == subnet)\n            .cloned()\n            .collect();\n        let tombstones = self\n            .tombstones\n            .iter()\n            .filter(|t| t.subnet == subnet)\n            .cloned()\n            .collect();\n        (members, tombstones)\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    fn entry(subnet: &str, pk: &str, lease: u64) -> RosterEntry {\n        RosterEntry {\n            pubkey_hex: pk.to_string(),\n            subnet: subnet.to_string(),\n            label: format!(\"host-{pk}\"),\n            machine_id: format!(\"mid-{pk}\"),\n            address: None,\n            last_seen: \"100\".to_string(),\n            lease_epoch: lease,\n        }\n    }\n\n    // [unit->REQ-MESH-2] the lease: a strictly-greater lease_epoch updates an\n    // existing member; an equal or lower one is Stale and does NOT clobber the\n    // newer facts; a never-seen pubkey is Inserted. The node_label lease, reused.\n    #[test]\n    fn merge_entry_is_strictly_greater_lease_wins() {\n        let mut r = RosterStore::default();\n        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 5)), MergeOutcome::Inserted);\n\n        // Lower lease loses (Stale) — the stored lease stays at 5.\n        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 3)), MergeOutcome::Stale);\n        assert_eq!(r.find(\"home\", \"aa\").unwrap().lease_epoch, 5);\n\n        // Equal lease is Stale too (strictly-greater, not >=).\n        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 5)), MergeOutcome::Stale);\n\n        // Strictly greater wins.\n        let mut newer = entry(\"home\", \"aa\", 6);\n        newer.label = \"renamed\".into();\n        assert_eq!(r.merge_entry(newer), MergeOutcome::Updated);\n        assert_eq!(r.find(\"home\", \"aa\").unwrap().lease_epoch, 6);\n        assert_eq!(r.find(\"home\", \"aa\").unwrap().label, \"renamed\");\n    }\n\n    // [unit->REQ-MESH-2] union convergence: merge is commutative (A∪B == B∪A on\n    // the winning-lease facts) and idempotent (merging twice == once). The\n    // grow-set CRDT property the mesh relies on.\n    #[test]\n    fn merge_is_commutative_and_idempotent() {\n        let mut a = RosterStore::default();\n        a.merge_entry(entry(\"home\", \"aa\", 2));\n        a.merge_entry(entry(\"home\", \"bb\", 1));\n\n        let mut b = RosterStore::default();\n        b.merge_entry(entry(\"home\", \"bb\", 9)); // bb newer on b\n        b.merge_entry(entry(\"home\", \"cc\", 1));\n\n        let mut ab = a.clone();\n        ab.merge(&b);\n        let mut ba = b.clone();\n        ba.merge(&a);\n\n        // Same membership set and same winning leases regardless of order.\n        for pk in [\"aa\", \"bb\", \"cc\"] {\n            assert_eq!(\n…\n            );\n        }\n…\n    }\n…\n}","startLine":59,"lineNumbers":[59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,null,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,null,394,395,null,405,null,571]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs"}}},"isError":false,"timestamp":1784069316222}}
{"type":"message","id":"e56f0aef","parentId":"353be8f7","timestamp":"2026-07-14T22:48:36.249Z","message":{"role":"toolResult","toolCallId":"call_zyN9FeVMKGDudlwpQ9Dtcyd2|fc_050f56f290a937ae016a56bcc41b9c8196b336c693df8269c0","toolName":"read","content":[{"type":"text","text":"    pub fn apply_feed_flips(\n…\n    ) -> (Vec<RegistryApplyVerdict>, Vec<String>) {\n…\n        let verdicts = updates\n…\n            .map(|u| {\n…\n                // [impl->REQ-MESH-5]\n                if !policy.roster.is_member(&u.subnet, origin_node) {\n                    return RegistryApplyVerdict::UntrustedOrigin;\n                }\n                admitted_any = true;\n                let reg = regs.entry(u.subnet.clone()).or_default();\n                let prev = reg\n                    .instances(&u.endpoint_id)\n                    .iter()\n                    .find(|i| i.node == u.instance.node)\n                    .map(|i| i.status);\n                // The epoch lease (4.8) decides; an own-row echo from a peer\n                // is dropped Stale by construction (our epoch is newer or\n                // equal — never authored elsewhere).\n                let outcome = reg.merge_instance(&u.endpoint_id, u.instance.clone());\n                if outcome == MergeOutcome::Updated\n                    && u.instance.status == Status::Active\n                    && prev != Some(Status::Active)\n                    && u.instance.node != self.node_hex\n                    && !flips.contains(&u.endpoint_id)\n                {\n                    flips.push(u.endpoint_id.clone());\n                }\n                RegistryApplyVerdict::Merged(outcome)\n            })\n            .collect();\n        drop(regs);\n        // Gossip-recency stamp (M7 D2): an ADMITTED feed proves the origin\n        // node is up right now — even a Stale merge verdict is a liveness\n        // signal (the lease judged the row, not the sender). Refused feeds\n        // stamp nothing (an untrusted sender earns no liveness credit).\n        // [impl->REQ-SUBNET-1]\n        if admitted_any {\n            self.heard\n                .lock()\n                .unwrap()\n                .insert(origin_node.to_string(), wall_ms());\n        }\n        self.write_snapshots();\n        (verdicts, flips)\n    }\n\n    /// Apply inbound node-level label updates (REQ-SUBNET-3) under the SAME\n    /// fail-closed gate as [`apply_feed_flips`]: a non-member subnet or an\n    /// untrusted origin is refused; an admitted update merges via\n    /// [`SubnetRegistry::merge_node_label`] (epoch lease) and stamps the\n    /// origin's gossip-recency (an admitted label feed proves the peer is up,\n    /// exactly like an instance feed). The endpoint-less carrier: this is how a\n    /// peer with zero endpoints gets its hostname into our `--nodes` view.\n    // [impl->REQ-SUBNET-3]\n    pub fn apply_node_labels(\n        &self,\n        origin_node: &str,\n        updates: &[NodeLabelUpdate],\n        policy: &RegistryGatePolicy,\n    ) -> Vec<RegistryApplyVerdict> {\n        let mut regs = self.regs.lock().unwrap();\n        let mut admitted_any = false;\n        let verdicts = updates\n            .iter()\n            .map(|u| {\n                if !policy.subnets.iter().any(|s| s == &u.subnet) {\n                    return RegistryApplyVerdict::NotMember;\n                }\n                // [impl->REQ-MESH-5]\n                if !policy.roster.is_member(&u.subnet, origin_node) {\n                    return RegistryApplyVerdict::UntrustedOrigin;\n                }\n                admitted_any = true;\n                let reg = regs.entry(u.subnet.clone()).or_default();\n                RegistryApplyVerdict::Merged(reg.merge_node_label(\n                    &u.node,\n                    u.label.clone(),\n                    u.epoch,\n                ))\n            })\n            .collect();\n        drop(regs);\n        if admitted_any {\n            self.heard\n                .lock()\n                .unwrap()\n                .insert(origin_node.to_string(), wall_ms());\n        }\n        self.write_snapshots();\n        verdicts\n    }\n\n    /// Scan the owlery and (re-)advertise every self perch into every member\n    /// subnet it is visible in, each row stamped with a fresh epoch. Returns\n    /// the updates to push to peers (the node's own rows only — peers' rows\n…\n    pub fn advertise_local(&self, owlery: &Path) -> Vec<RegistryFeedRecord> {\n…\n        for sub in &subnets.subnets {\n…\n            for id in ghosts {\n…\n                let instance = Instance {\n…\n                    // harness seat (REQ-SUBNET-DISPLAY-PARITY); Offline is skipped\n                    // by the projection anyway, so these only round-trip the wire.\n                    // [impl->REQ-SUBNET-DISPLAY-PARITY]\n                    bound: false,\n                    controller_node: None,\n                    harness_only: false,\n                    adapter: None,\n                    recent_projects: Vec::new(),\n                    controlled: false,\n                };\n                reg.merge_instance(&id, instance.clone());\n                out.push(RegistryFeedRecord::Instance(RegistryUpdate {\n                    subnet: sub.name.clone(),\n                    endpoint_id: id,\n                    instance,\n                }));\n                eprintln!(\"ROSTER_GHOST_HEAL:{}: erased perch advertised offline\", sub.name);\n            }\n        }\n\n        // Node-level label (REQ-SUBNET-3): advertise this node's hostname per\n        // served subnet INDEPENDENT of endpoint rows, so an endpoint-less node\n        // (zero Self perches, or all hidden) still names itself to peers rather\n        // than rendering a bare key-prefix. Rides the same epoch lease; merged\n        // into our own registry too so the snapshot carries it. Emitted every\n        // round regardless of endpoint count — redundant-but-robust when rows\n        // exist (the render prefers a trust/instance label anyway), the SOLE\n        // carrier when they don't.\n        // [impl->REQ-SUBNET-3]\n        if let Some(label) = self.node_label.clone() {\n            for sub in &subnets.subnets {\n                let Ok(ep) = epoch.next_epoch() else { continue };\n                let reg = regs.entry(sub.name.clone()).or_default();\n                reg.merge_node_label(&self.node_hex, label.clone(), ep);\n                out.push(RegistryFeedRecord::NodeLabel(NodeLabelUpdate {\n                    subnet: sub.name.clone(),\n                    node: self.node_hex.clone(),\n                    label: label.clone(),\n                    epoch: ep,\n                }));\n            }\n        }\n        drop(epoch);\n        drop(regs);\n        self.write_snapshots();\n        out\n    }\n\n    /// Evict every registry row authored by a **silent** peer node\n    /// (KNOWN-HAZARDS 4.10): a node not heard — no admitted inbound feed —\n    /// within `ttl` has its rows removed from every subnet registry and the\n    /// snapshots rewritten, so a dead node identity can no longer poison\n    /// bare-id resolution with phantom ambiguity. Own rows never decay (this\n    /// node authors them fresh each pump tick and is never in its own heard\n    /// map). A row whose author has NO heard stamp is treated as silent —\n    /// rows only enter via admitted feeds (which stamp) or `advertise_local`\n    /// (own rows, excluded), so an unstamped foreign row is already an\n    /// anomaly and fails toward eviction. A merely-offline peer reconverges\n    /// within one pump cadence of its return (re-advertisement from its\n    /// durable epoch). Returns the number of rows evicted.\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n    pub fn evict_silent_peers(&self, ttl: std::time::Duration) -> usize {\n        self.evict_silent_peers_at(ttl, wall_ms())\n    }\n\n    /// [`evict_silent_peers`](Self::evict_silent_peers) with an explicit\n    /// clock (the testable seam).\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n    pub fn evict_silent_peers_at(&self, ttl: std::time::Duration, now_ms: u64) -> usize {\n        let ttl_ms = ttl.as_millis() as u64;\n        let heard = self.heard.lock().unwrap();\n        let silent = |node: &str| {\n            node != self.node_hex\n                && heard\n                    .get(node)\n                    .is_none_or(|&t| now_ms.saturating_sub(t) > ttl_ms)\n        };\n        let mut regs = self.regs.lock().unwrap();\n        let mut evicted = 0usize;\n        for (subnet, reg) in regs.iter_mut() {\n            let n = reg.evict_nodes(silent);\n            if n > 0 {\n                eprintln!(\"REGISTRY_EVICT:{subnet}: {n} row(s) from silent node(s)\");\n            }\n            evicted += n;\n        }\n        drop(regs);\n        drop(heard);\n        if evicted > 0 {\n            self.write_snapshots();\n        }\n…\n    }"}],"details":{"displayContent":{"text":"    pub fn apply_feed_flips(\n…\n    ) -> (Vec<RegistryApplyVerdict>, Vec<String>) {\n…\n        let verdicts = updates\n…\n            .map(|u| {\n…\n                // [impl->REQ-MESH-5]\n                if !policy.roster.is_member(&u.subnet, origin_node) {\n                    return RegistryApplyVerdict::UntrustedOrigin;\n                }\n                admitted_any = true;\n                let reg = regs.entry(u.subnet.clone()).or_default();\n                let prev = reg\n                    .instances(&u.endpoint_id)\n                    .iter()\n                    .find(|i| i.node == u.instance.node)\n                    .map(|i| i.status);\n                // The epoch lease (4.8) decides; an own-row echo from a peer\n                // is dropped Stale by construction (our epoch is newer or\n                // equal — never authored elsewhere).\n                let outcome = reg.merge_instance(&u.endpoint_id, u.instance.clone());\n                if outcome == MergeOutcome::Updated\n                    && u.instance.status == Status::Active\n                    && prev != Some(Status::Active)\n                    && u.instance.node != self.node_hex\n                    && !flips.contains(&u.endpoint_id)\n                {\n                    flips.push(u.endpoint_id.clone());\n                }\n                RegistryApplyVerdict::Merged(outcome)\n            })\n            .collect();\n        drop(regs);\n        // Gossip-recency stamp (M7 D2): an ADMITTED feed proves the origin\n        // node is up right now — even a Stale merge verdict is a liveness\n        // signal (the lease judged the row, not the sender). Refused feeds\n        // stamp nothing (an untrusted sender earns no liveness credit).\n        // [impl->REQ-SUBNET-1]\n        if admitted_any {\n            self.heard\n                .lock()\n                .unwrap()\n                .insert(origin_node.to_string(), wall_ms());\n        }\n        self.write_snapshots();\n        (verdicts, flips)\n    }\n\n    /// Apply inbound node-level label updates (REQ-SUBNET-3) under the SAME\n    /// fail-closed gate as [`apply_feed_flips`]: a non-member subnet or an\n    /// untrusted origin is refused; an admitted update merges via\n    /// [`SubnetRegistry::merge_node_label`] (epoch lease) and stamps the\n    /// origin's gossip-recency (an admitted label feed proves the peer is up,\n    /// exactly like an instance feed). The endpoint-less carrier: this is how a\n    /// peer with zero endpoints gets its hostname into our `--nodes` view.\n    // [impl->REQ-SUBNET-3]\n    pub fn apply_node_labels(\n        &self,\n        origin_node: &str,\n        updates: &[NodeLabelUpdate],\n        policy: &RegistryGatePolicy,\n    ) -> Vec<RegistryApplyVerdict> {\n        let mut regs = self.regs.lock().unwrap();\n        let mut admitted_any = false;\n        let verdicts = updates\n            .iter()\n            .map(|u| {\n                if !policy.subnets.iter().any(|s| s == &u.subnet) {\n                    return RegistryApplyVerdict::NotMember;\n                }\n                // [impl->REQ-MESH-5]\n                if !policy.roster.is_member(&u.subnet, origin_node) {\n                    return RegistryApplyVerdict::UntrustedOrigin;\n                }\n                admitted_any = true;\n                let reg = regs.entry(u.subnet.clone()).or_default();\n                RegistryApplyVerdict::Merged(reg.merge_node_label(\n                    &u.node,\n                    u.label.clone(),\n                    u.epoch,\n                ))\n            })\n            .collect();\n        drop(regs);\n        if admitted_any {\n            self.heard\n                .lock()\n                .unwrap()\n                .insert(origin_node.to_string(), wall_ms());\n        }\n        self.write_snapshots();\n        verdicts\n    }\n\n    /// Scan the owlery and (re-)advertise every self perch into every member\n    /// subnet it is visible in, each row stamped with a fresh epoch. Returns\n    /// the updates to push to peers (the node's own rows only — peers' rows\n…\n    pub fn advertise_local(&self, owlery: &Path) -> Vec<RegistryFeedRecord> {\n…\n        for sub in &subnets.subnets {\n…\n            for id in ghosts {\n…\n                let instance = Instance {\n…\n                    // harness seat (REQ-SUBNET-DISPLAY-PARITY); Offline is skipped\n                    // by the projection anyway, so these only round-trip the wire.\n                    // [impl->REQ-SUBNET-DISPLAY-PARITY]\n                    bound: false,\n                    controller_node: None,\n                    harness_only: false,\n                    adapter: None,\n                    recent_projects: Vec::new(),\n                    controlled: false,\n                };\n                reg.merge_instance(&id, instance.clone());\n                out.push(RegistryFeedRecord::Instance(RegistryUpdate {\n                    subnet: sub.name.clone(),\n                    endpoint_id: id,\n                    instance,\n                }));\n                eprintln!(\"ROSTER_GHOST_HEAL:{}: erased perch advertised offline\", sub.name);\n            }\n        }\n\n        // Node-level label (REQ-SUBNET-3): advertise this node's hostname per\n        // served subnet INDEPENDENT of endpoint rows, so an endpoint-less node\n        // (zero Self perches, or all hidden) still names itself to peers rather\n        // than rendering a bare key-prefix. Rides the same epoch lease; merged\n        // into our own registry too so the snapshot carries it. Emitted every\n        // round regardless of endpoint count — redundant-but-robust when rows\n        // exist (the render prefers a trust/instance label anyway), the SOLE\n        // carrier when they don't.\n        // [impl->REQ-SUBNET-3]\n        if let Some(label) = self.node_label.clone() {\n            for sub in &subnets.subnets {\n                let Ok(ep) = epoch.next_epoch() else { continue };\n                let reg = regs.entry(sub.name.clone()).or_default();\n                reg.merge_node_label(&self.node_hex, label.clone(), ep);\n                out.push(RegistryFeedRecord::NodeLabel(NodeLabelUpdate {\n                    subnet: sub.name.clone(),\n                    node: self.node_hex.clone(),\n                    label: label.clone(),\n                    epoch: ep,\n                }));\n            }\n        }\n        drop(epoch);\n        drop(regs);\n        self.write_snapshots();\n        out\n    }\n\n    /// Evict every registry row authored by a **silent** peer node\n    /// (KNOWN-HAZARDS 4.10): a node not heard — no admitted inbound feed —\n    /// within `ttl` has its rows removed from every subnet registry and the\n    /// snapshots rewritten, so a dead node identity can no longer poison\n    /// bare-id resolution with phantom ambiguity. Own rows never decay (this\n    /// node authors them fresh each pump tick and is never in its own heard\n    /// map). A row whose author has NO heard stamp is treated as silent —\n    /// rows only enter via admitted feeds (which stamp) or `advertise_local`\n    /// (own rows, excluded), so an unstamped foreign row is already an\n    /// anomaly and fails toward eviction. A merely-offline peer reconverges\n    /// within one pump cadence of its return (re-advertisement from its\n    /// durable epoch). Returns the number of rows evicted.\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n    pub fn evict_silent_peers(&self, ttl: std::time::Duration) -> usize {\n        self.evict_silent_peers_at(ttl, wall_ms())\n    }\n\n    /// [`evict_silent_peers`](Self::evict_silent_peers) with an explicit\n    /// clock (the testable seam).\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n    pub fn evict_silent_peers_at(&self, ttl: std::time::Duration, now_ms: u64) -> usize {\n        let ttl_ms = ttl.as_millis() as u64;\n        let heard = self.heard.lock().unwrap();\n        let silent = |node: &str| {\n            node != self.node_hex\n                && heard\n                    .get(node)\n                    .is_none_or(|&t| now_ms.saturating_sub(t) > ttl_ms)\n        };\n        let mut regs = self.regs.lock().unwrap();\n        let mut evicted = 0usize;\n        for (subnet, reg) in regs.iter_mut() {\n            let n = reg.evict_nodes(silent);\n            if n > 0 {\n                eprintln!(\"REGISTRY_EVICT:{subnet}: {n} row(s) from silent node(s)\");\n            }\n            evicted += n;\n        }\n        drop(regs);\n        drop(heard);\n        if evicted > 0 {\n            self.write_snapshots();\n        }\n…\n    }","startLine":235,"lineNumbers":[235,null,240,null,244,null,246,null,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,null,345,null,535,null,547,null,549,null,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,null,652]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs"}}},"isError":false,"timestamp":1784069316249}}
{"type":"message","id":"6e8821a9","parentId":"e56f0aef","timestamp":"2026-07-14T22:48:36.251Z","message":{"role":"toolResult","toolCallId":"call_FgJrWjqwf4oWFwBxWfvsKczU|fc_050f56f290a937ae016a56bcc41ba48196be0cdc0d6a2ef8d7","toolName":"read","content":[{"type":"text","text":"{\n  \"metadata_json\": \"{\\\"version\\\":58,\\\"channel\\\":\\\"stable\\\",\\\"expires_at_ms\\\":1815279679594,\\\"key_id\\\":\\\"rel-primary-2026\\\",\\\"artifacts\\\":{\\\"x86_64-pc-windows-msvc\\\":{\\\"artifact_sha256\\\":\\\"4d57cf941d45d4504a0e4ae8c543d512bbd428fa23cdc297373413a347f62b5d\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-windows.exe\\\"},\\\"x86_64-unknown-linux-gnu\\\":{\\\"artifact_sha256\\\":\\\"1306b84e46b083cbb7ce88ae87c72b66b834c3da5c62e19495b9dbeb952e2ba9\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-linux\\\"},\\\"x86_64-unknown-linux-musl\\\":{\\\"artifact_sha256\\\":\\\"7356a2a9280f32fe7178e22f1b2e149d17ed81c7d740e12f14a774772fe4c0da\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-linux-musl\\\"}},\\\"product_version\\\":\\\"0.31.0\\\"}\",\n  \"signature_hex\": \"2e095f5658320831727c227cdb90c7ef621abe494c2d3a5e4220e7dc7597493e03698556af48690ed8ce1d8add56348626a906cde7a8791cf11d58f84b8d950a\"\n}"}],"details":{"displayContent":{"text":"{\n  \"metadata_json\": \"{\\\"version\\\":58,\\\"channel\\\":\\\"stable\\\",\\\"expires_at_ms\\\":1815279679594,\\\"key_id\\\":\\\"rel-primary-2026\\\",\\\"artifacts\\\":{\\\"x86_64-pc-windows-msvc\\\":{\\\"artifact_sha256\\\":\\\"4d57cf941d45d4504a0e4ae8c543d512bbd428fa23cdc297373413a347f62b5d\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-windows.exe\\\"},\\\"x86_64-unknown-linux-gnu\\\":{\\\"artifact_sha256\\\":\\\"1306b84e46b083cbb7ce88ae87c72b66b834c3da5c62e19495b9dbeb952e2ba9\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-linux\\\"},\\\"x86_64-unknown-linux-musl\\\":{\\\"artifact_sha256\\\":\\\"7356a2a9280f32fe7178e22f1b2e149d17ed81c7d740e12f14a774772fe4c0da\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-linux-musl\\\"}},\\\"product_version\\\":\\\"0.31.0\\\"}\",\n  \"signature_hex\": \"2e095f5658320831727c227cdb90c7ef621abe494c2d3a5e4220e7dc7597493e03698556af48690ed8ce1d8add56348626a906cde7a8791cf11d58f84b8d950a\"\n}","startLine":1,"lineNumbers":[1,2,3,4]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/releases/release.json"}}},"isError":false,"timestamp":1784069316251}}
{"type":"message","id":"78bdaf48","parentId":"6e8821a9","timestamp":"2026-07-14T22:48:36.257Z","message":{"role":"toolResult","toolCallId":"call_nubXiTZQ8zSIKxxFJ4teXsLa|fc_050f56f290a937ae016a56bcc41b5c8196b0046813e6d7d09a","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-daemon/src/\n### seedproofx.rs\n 48|use spt_store::peeraddrs::PeerAddrStore;\n*49|use spt_store::roster::{RosterEntry, RosterStore, Tombstone};\n 50|use spt_store::subnet::SubnetStore;\n 51|\n 52|/// One subnet's membership credential as the proof needs it: the human name\n...\n 565|pub type RosterProvider =\n*566|    Arc<dyn Fn(&HashSet<String>, &serde_json::Value) -> (Vec<RosterEntry>, Vec<Tombstone>) + Send + Sync>;\n 567|\n 568|/// Merges a received roster slice into the durable store and reconciles the dial\n 569|/// cache (gap-fill). Receives the peer's advertised entries + tombstones.\n*570|pub type RosterSink = Arc<dyn Fn(Vec<RosterEntry>, Vec<Tombstone>) + Send + Sync>;\n 571|\n 572|/// Looks up a peer's [`MemberStatus`] for a subnet (Mesh-D7 — the re-seed\n 573|/// grace gate). Production: a `RosterStore` membership/tombstone lookup.\n...\n 751|/// ceremony subnet). Self-contained positional codec; the field set mirrors\n*752|/// `RosterEntry` and is kept in sync by `roster_frame_round_trips`. Counts are\n 753|/// never pre-allocated on decode — a hostile count exhausts the buffer on the\n 754|/// first short field, not a huge allocation.\n 755|// [impl->REQ-MESH-2]\n*756|fn enc_roster(entries: &[RosterEntry], tombstones: &[Tombstone]) -> Vec<u8> {\n 757|    let mut b = Vec::new();\n 758|    b.extend_from_slice(&(entries.len() as u32).to_be_bytes());\n 759|    for e in entries {\n...\n 769|        push_field(&mut b, &addr); // empty field = None\n*770|        push_field(&mut b, e.last_seen.as_bytes());\n 771|        b.extend_from_slice(&e.lease_epoch.to_be_bytes());\n 772|    }\n 773|    b.extend_from_slice(&(tombstones.len() as u32).to_be_bytes());\n...\n 816|// [impl->REQ-MESH-2]\n*817|fn dec_roster(buf: &[u8]) -> Option<(Vec<RosterEntry>, Vec<Tombstone>)> {\n 818|    let mut r = Rdr { b: buf, pos: 0 };\n 819|    let n = r.u32()? as usize;\n 820|    let mut entries = Vec::new();\n...\n 831|        };\n*832|        let last_seen = r.utf8()?;\n 833|        let lease_epoch = r.u64()?;\n*834|        entries.push(RosterEntry {\n 835|            pubkey_hex,\n 836|            subnet,\n 837|            label,\n...\n 839|            address,\n*840|            last_seen,\n 841|            lease_epoch,\n 842|        });\n 843|    }\n...\n 869|// [impl->REQ-MESH-2]\n*870|pub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\n 871|    let mut changed = false;\n 872|    for e in entries {\n 873|        if e.pubkey_hex == self_hex {\n...\n 923|        }),\n*924|        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\n 925|            let mut store = RosterStore::load();\n 926|            for e in &entries {\n*927|                store.merge_entry(e.clone());\n 928|            }\n 929|            for t in &tombstones {\n 930|                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n...\n 969|/// system clock when NTP is disabled in hermetic scope) — the same stamp source\n*970|/// the pairing roster writers use, so `last_seen` values are comparable.\n 971|fn now_secs() -> u64 {\n 972|    spt_net::net::pairing::ntp::ceremony_now_secs()\n 973|}\n...\n 978|\n*979|    fn entry(pk: &str, subnet: &str, addr: Option<serde_json::Value>, lease: u64) -> RosterEntry {\n*980|        RosterEntry {\n 981|            pubkey_hex: pk.to_string(),\n 982|            subnet: subnet.to_string(),\n 983|            label: format!(\"{pk}-host\"),\n...\n 985|            address: addr,\n*986|            last_seen: \"1700000000\".to_string(),\n 987|            lease_epoch: lease,\n 988|        }\n 989|    }\n...\n 1135|        // The roster frame for a member of the same subnet.\n*1136|        let entry = RosterEntry {\n 1137|            pubkey_hex: \"aa\".into(),\n 1138|            subnet: \"home\".into(),\n 1139|            label: \"h\".into(),\n...\n 1141|            address: Some(serde_json::json!({\"id\": \"aa\"})),\n*1142|            last_seen: \"1\".into(),\n 1143|            lease_epoch: 1,\n 1144|        };\n 1145|        let roster_bytes = enc_roster(&[entry], &[]);\n\n## spt-store/src/\n### roster.rs\n 6|//! with. The roster is how: a **node-level union-merge grow-set** where each\n*7|//! node authors its own [`RosterEntry`] (its pubkey, label, machine_id,\n 8|//! last-known address, last-seen) stamped with its\n*9|//! [`lease_epoch`](RosterEntry::lease_epoch) — the same strictly-greater-wins\n 10|//! lease the registry runs for node labels (the `spt-net` registry's\n 11|//! `MergeOutcome`). It is **NOT** the seed (the seed never leaves a node except\n 12|//! over the pairing/seed-proof channel — ADR-0017); a roster entry is\n...\n 84|#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\n*85|pub struct RosterEntry {\n 86|    /// The member's Ed25519 node pubkey, lowercase hex (the iroh NodeId). The\n 87|    /// merge key within a subnet, and what the mesh dials/seed-proofs.\n 88|    pub pubkey_hex: String,\n...\n 102|    /// Last-seen stamp (opaque epoch-seconds string).\n*103|    pub last_seen: String,\n 104|    /// The author's `node_label` lease — strictly-greater-wins. Equal/lower on\n 105|    /// merge ⇒ [`Stale`](MergeOutcome::Stale) (the registry lease, reused).\n 106|    pub lease_epoch: u64,\n...\n 126|    #[serde(default)]\n*127|    pub members: Vec<RosterEntry>,\n 128|    /// Revocation tombstones across all subnets (keyed `(subnet, pubkey_hex)`).\n 129|    #[serde(default)]\n 130|    pub tombstones: Vec<Tombstone>,\n...\n 167|    /// Find a member entry by `(subnet, pubkey)`.\n*168|    pub fn find(&self, subnet: &str, pubkey_hex: &str) -> Option<&RosterEntry> {\n 169|        self.members\n 170|            .iter()\n 171|            .find(|m| m.subnet == subnet && m.pubkey_hex == pubkey_hex)\n...\n 201|    /// the mesh dials by.\n*202|    pub fn members_in<'a>(&'a self, subnet: &'a str) -> impl Iterator<Item = &'a RosterEntry> {\n 203|        self.members\n 204|            .iter()\n 205|            .filter(move |m| m.subnet == subnet && !self.is_tombstoned(subnet, &m.pubkey_hex))\n...\n 219|        address: Option<serde_json::Value>,\n*220|        last_seen: &str,\n 221|        lease_epoch: u64,\n 222|    ) {\n*223|        let entry = RosterEntry {\n 224|            pubkey_hex: pubkey_hex.to_string(),\n 225|            subnet: subnet.to_string(),\n 226|            label: label.to_string(),\n...\n 228|            address,\n*229|            last_seen: last_seen.to_string(),\n 230|            lease_epoch,\n 231|        };\n 232|        match self\n...\n 251|    // [impl->REQ-MESH-2]\n*252|    pub fn merge_entry(&mut self, incoming: RosterEntry) -> MergeOutcome {\n 253|        match self\n 254|            .members\n 255|            .iter_mut()\n...\n 297|    /// Union-merge a whole other roster into this one: every entry through\n*298|    /// [`merge_entry`] (strictly-greater-wins), every tombstone unioned\n 299|    /// (dedup). The grow-set operation — commutative and idempotent.\n 300|    // [impl->REQ-MESH-2]\n 301|    pub fn merge(&mut self, other: &RosterStore) {\n 302|        for e in &other.members {\n*303|            self.merge_entry(e.clone());\n 304|        }\n 305|        for t in &other.tombstones {\n 306|            self.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n...\n 313|    // [impl->REQ-MESH-2]\n*314|    pub fn roster_for(&self, subnet: &str) -> (Vec<RosterEntry>, Vec<Tombstone>) {\n 315|        let members = self\n 316|            .members\n 317|            .iter()\n...\n 334|\n*335|    fn entry(subnet: &str, pk: &str, lease: u64) -> RosterEntry {\n*336|        RosterEntry {\n 337|            pubkey_hex: pk.to_string(),\n 338|            subnet: subnet.to_string(),\n 339|            label: format!(\"host-{pk}\"),\n...\n 341|            address: None,\n*342|            last_seen: \"100\".to_string(),\n 343|            lease_epoch: lease,\n 344|        }\n 345|    }\n...\n 350|    #[test]\n*351|    fn merge_entry_is_strictly_greater_lease_wins() {\n 352|        let mut r = RosterStore::default();\n*353|        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 5)), MergeOutcome::Inserted);\n 354|\n 355|        // Lower lease loses (Stale) — the stored lease stays at 5.\n*356|        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 3)), MergeOutcome::Stale);\n 357|        assert_eq!(r.find(\"home\", \"aa\").unwrap().lease_epoch, 5);\n 358|\n 359|        // Equal lease is Stale too (strictly-greater, not >=)."}],"details":{"scopePath":"spt-core/crates/spt-daemon/src/seedproofx.rs, spt-core/crates/spt-store/src/roster.rs","searchPath":"C:\\Users\\decid\\Documents\\projects\\spt-core\\crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":39,"fileCount":2,"files":["spt-core/crates/spt-daemon/src/seedproofx.rs","spt-core/crates/spt-store/src/roster.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/src/seedproofx.rs","count":19},{"path":"spt-core/crates/spt-store/src/roster.rs","count":20}],"truncated":true,"perFileLimitReached":20,"displayContent":"# spt-core/crates/\n\n## spt-daemon/src/\n### seedproofx.rs\n   48│use spt_store::peeraddrs::PeerAddrStore;\n  *49│use spt_store::roster::{RosterEntry, RosterStore, Tombstone};\n   50│use spt_store::subnet::SubnetStore;\n   51│\n   52│/// One subnet's membership credential as the proof needs it: the human name\n     │...\n  565│pub type RosterProvider =\n *566│    Arc<dyn Fn(&HashSet<String>, &serde_json::Value) -> (Vec<RosterEntry>, Vec<Tombstone>) + Send + Sync>;\n  567│\n  568│/// Merges a received roster slice into the durable store and reconciles the dial\n  569│/// cache (gap-fill). Receives the peer's advertised entries + tombstones.\n *570│pub type RosterSink = Arc<dyn Fn(Vec<RosterEntry>, Vec<Tombstone>) + Send + Sync>;\n  571│\n  572│/// Looks up a peer's [`MemberStatus`] for a subnet (Mesh-D7 — the re-seed\n  573│/// grace gate). Production: a `RosterStore` membership/tombstone lookup.\n     │...\n  751│/// ceremony subnet). Self-contained positional codec; the field set mirrors\n *752│/// `RosterEntry` and is kept in sync by `roster_frame_round_trips`. Counts are\n  753│/// never pre-allocated on decode — a hostile count exhausts the buffer on the\n  754│/// first short field, not a huge allocation.\n  755│// [impl->REQ-MESH-2]\n *756│fn enc_roster(entries: &[RosterEntry], tombstones: &[Tombstone]) -> Vec<u8> {\n  757│    let mut b = Vec::new();\n  758│    b.extend_from_slice(&(entries.len() as u32).to_be_bytes());\n  759│    for e in entries {\n     │...\n  769│        push_field(&mut b, &addr); // empty field = None\n *770│        push_field(&mut b, e.last_seen.as_bytes());\n  771│        b.extend_from_slice(&e.lease_epoch.to_be_bytes());\n  772│    }\n  773│    b.extend_from_slice(&(tombstones.len() as u32).to_be_bytes());\n     │...\n  816│// [impl->REQ-MESH-2]\n *817│fn dec_roster(buf: &[u8]) -> Option<(Vec<RosterEntry>, Vec<Tombstone>)> {\n  818│    let mut r = Rdr { b: buf, pos: 0 };\n  819│    let n = r.u32()? as usize;\n  820│    let mut entries = Vec::new();\n     │...\n  831│        };\n *832│        let last_seen = r.utf8()?;\n  833│        let lease_epoch = r.u64()?;\n *834│        entries.push(RosterEntry {\n  835│            pubkey_hex,\n  836│            subnet,\n  837│            label,\n     │...\n  839│            address,\n *840│            last_seen,\n  841│            lease_epoch,\n  842│        });\n  843│    }\n     │...\n  869│// [impl->REQ-MESH-2]\n *870│pub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\n  871│    let mut changed = false;\n  872│    for e in entries {\n  873│        if e.pubkey_hex == self_hex {\n     │...\n  923│        }),\n *924│        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\n  925│            let mut store = RosterStore::load();\n  926│            for e in &entries {\n *927│                store.merge_entry(e.clone());\n  928│            }\n  929│            for t in &tombstones {\n  930│                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n     │...\n  969│/// system clock when NTP is disabled in hermetic scope) — the same stamp source\n *970│/// the pairing roster writers use, so `last_seen` values are comparable.\n  971│fn now_secs() -> u64 {\n  972│    spt_net::net::pairing::ntp::ceremony_now_secs()\n  973│}\n     │...\n  978│\n *979│    fn entry(pk: &str, subnet: &str, addr: Option<serde_json::Value>, lease: u64) -> RosterEntry {\n *980│        RosterEntry {\n  981│            pubkey_hex: pk.to_string(),\n  982│            subnet: subnet.to_string(),\n  983│            label: format!(\"{pk}-host\"),\n     │...\n  985│            address: addr,\n *986│            last_seen: \"1700000000\".to_string(),\n  987│            lease_epoch: lease,\n  988│        }\n  989│    }\n     │...\n 1135│        // The roster frame for a member of the same subnet.\n*1136│        let entry = RosterEntry {\n 1137│            pubkey_hex: \"aa\".into(),\n 1138│            subnet: \"home\".into(),\n 1139│            label: \"h\".into(),\n     │...\n 1141│            address: Some(serde_json::json!({\"id\": \"aa\"})),\n*1142│            last_seen: \"1\".into(),\n 1143│            lease_epoch: 1,\n 1144│        };\n 1145│        let roster_bytes = enc_roster(&[entry], &[]);\n\n## spt-store/src/\n### roster.rs\n   6│//! with. The roster is how: a **node-level union-merge grow-set** where each\n  *7│//! node authors its own [`RosterEntry`] (its pubkey, label, machine_id,\n   8│//! last-known address, last-seen) stamped with its\n  *9│//! [`lease_epoch`](RosterEntry::lease_epoch) — the same strictly-greater-wins\n  10│//! lease the registry runs for node labels (the `spt-net` registry's\n  11│//! `MergeOutcome`). It is **NOT** the seed (the seed never leaves a node except\n  12│//! over the pairing/seed-proof channel — ADR-0017); a roster entry is\n    │...\n  84│#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]\n *85│pub struct RosterEntry {\n  86│    /// The member's Ed25519 node pubkey, lowercase hex (the iroh NodeId). The\n  87│    /// merge key within a subnet, and what the mesh dials/seed-proofs.\n  88│    pub pubkey_hex: String,\n    │...\n 102│    /// Last-seen stamp (opaque epoch-seconds string).\n*103│    pub last_seen: String,\n 104│    /// The author's `node_label` lease — strictly-greater-wins. Equal/lower on\n 105│    /// merge ⇒ [`Stale`](MergeOutcome::Stale) (the registry lease, reused).\n 106│    pub lease_epoch: u64,\n    │...\n 126│    #[serde(default)]\n*127│    pub members: Vec<RosterEntry>,\n 128│    /// Revocation tombstones across all subnets (keyed `(subnet, pubkey_hex)`).\n 129│    #[serde(default)]\n 130│    pub tombstones: Vec<Tombstone>,\n    │...\n 167│    /// Find a member entry by `(subnet, pubkey)`.\n*168│    pub fn find(&self, subnet: &str, pubkey_hex: &str) -> Option<&RosterEntry> {\n 169│        self.members\n 170│            .iter()\n 171│            .find(|m| m.subnet == subnet && m.pubkey_hex == pubkey_hex)\n    │...\n 201│    /// the mesh dials by.\n*202│    pub fn members_in<'a>(&'a self, subnet: &'a str) -> impl Iterator<Item = &'a RosterEntry> {\n 203│        self.members\n 204│            .iter()\n 205│            .filter(move |m| m.subnet == subnet && !self.is_tombstoned(subnet, &m.pubkey_hex))\n    │...\n 219│        address: Option<serde_json::Value>,\n*220│        last_seen: &str,\n 221│        lease_epoch: u64,\n 222│    ) {\n*223│        let entry = RosterEntry {\n 224│            pubkey_hex: pubkey_hex.to_string(),\n 225│            subnet: subnet.to_string(),\n 226│            label: label.to_string(),\n    │...\n 228│            address,\n*229│            last_seen: last_seen.to_string(),\n 230│            lease_epoch,\n 231│        };\n 232│        match self\n    │...\n 251│    // [impl->REQ-MESH-2]\n*252│    pub fn merge_entry(&mut self, incoming: RosterEntry) -> MergeOutcome {\n 253│        match self\n 254│            .members\n 255│            .iter_mut()\n    │...\n 297│    /// Union-merge a whole other roster into this one: every entry through\n*298│    /// [`merge_entry`] (strictly-greater-wins), every tombstone unioned\n 299│    /// (dedup). The grow-set operation — commutative and idempotent.\n 300│    // [impl->REQ-MESH-2]\n 301│    pub fn merge(&mut self, other: &RosterStore) {\n 302│        for e in &other.members {\n*303│            self.merge_entry(e.clone());\n 304│        }\n 305│        for t in &other.tombstones {\n 306│            self.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n    │...\n 313│    // [impl->REQ-MESH-2]\n*314│    pub fn roster_for(&self, subnet: &str) -> (Vec<RosterEntry>, Vec<Tombstone>) {\n 315│        let members = self\n 316│            .members\n 317│            .iter()\n    │...\n 334│\n*335│    fn entry(subnet: &str, pk: &str, lease: u64) -> RosterEntry {\n*336│        RosterEntry {\n 337│            pubkey_hex: pk.to_string(),\n 338│            subnet: subnet.to_string(),\n 339│            label: format!(\"host-{pk}\"),\n    │...\n 341│            address: None,\n*342│            last_seen: \"100\".to_string(),\n 343│            lease_epoch: lease,\n 344│        }\n 345│    }\n    │...\n 350│    #[test]\n*351│    fn merge_entry_is_strictly_greater_lease_wins() {\n 352│        let mut r = RosterStore::default();\n*353│        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 5)), MergeOutcome::Inserted);\n 354│\n 355│        // Lower lease loses (Stale) — the stored lease stays at 5.\n*356│        assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 3)), MergeOutcome::Stale);\n 357│        assert_eq!(r.find(\"home\", \"aa\").unwrap().lease_epoch, 5);\n 358│\n 359│        // Equal lease is Stale too (strictly-greater, not >=)."},"isError":false,"timestamp":1784069316257}}
{"type":"message","id":"d95e9fe4","parentId":"78bdaf48","timestamp":"2026-07-14T22:48:36.268Z","message":{"role":"toolResult","toolCallId":"call_T4x6Qx94hUkpJkDK5d96uhkG|fc_050f56f290a937ae016a56bcc41b94819687f1b404b1fce11f","toolName":"read","content":[{"type":"text","text":"\n/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\n/// re-read per connect (rare; honors a concurrent pairing/revoke without a\n/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\n/// provider stamps the node's live address onto its self-entry so peers learn\n/// how to reach it; the sink merges the peer's slice and gap-fills the dial\n/// cache. Used by the real daemon only — tests inject their own exchange.\n// [impl->REQ-MESH-2]\npub fn production_roster_exchange() -> RosterExchange {\n    let self_hex = spt_store::nodeid::load_or_create()\n        .map(|id| id.public_key().to_hex())\n        .unwrap_or_default();\n    let provider_hex = self_hex.clone();\n    RosterExchange {\n        provider: Arc::new(move |proven: &HashSet<String>, self_addr: &serde_json::Value| {\n            let mut store = RosterStore::load();\n            let label = spt_store::hostlabel::os_hostname().unwrap_or_default();\n            let machine_id = crate::machineid::machine_id_hash().unwrap_or_default();\n            // Peek, never consume: roster propagation must not disturb the\n            // registry lease counter (the D3 rule).\n            let lease = spt_store::epoch::EpochSource::load().current();\n            let now = now_secs().to_string();\n            let addr = if self_addr.is_null() {\n                None\n            } else {\n                Some(self_addr.clone())\n            };\n            for s in proven {\n                store.upsert_self(s, &provider_hex, &label, &machine_id, addr.clone(), &now, lease);\n            }\n            let _ = store.save();\n            let mut entries = Vec::new();\n            let mut tombstones = Vec::new();\n            for s in proven {\n                let (m, t) = store.roster_for(s);\n                entries.extend(m);\n                tombstones.extend(t);\n            }\n            (entries, tombstones)\n        }),\n        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\n            let mut store = RosterStore::load();\n            for e in &entries {\n                store.merge_entry(e.clone());\n            }\n            for t in &tombstones {\n                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n            }\n            let _ = store.save();\n            let path = spt_store::peeraddrs::peer_addrs_file();\n            let mut pa = PeerAddrStore::load_from(&path);\n            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\n                let _ = pa.save_to(&path);\n            }\n        }),\n        // Mesh-D7 (REQ-MESH-4): the peer's roster status gates the grace —\n        // tombstoned ⇒ revoked ⇒ denied; listed ⇒ present; otherwise absent.\n        // Re-read per call so a just-propagated tombstone takes effect at once.\n        member_status: Arc::new(move |subnet: &str, peer_hex: &str| {\n            let store = RosterStore::load();\n            if store.is_tombstoned(subnet, peer_hex) {\n                MemberStatus::Tombstoned\n            } else if store.find(subnet, peer_hex).is_some() {\n                MemberStatus::Present\n            } else {\n                MemberStatus::Absent\n            }\n        }),\n        // Mesh-D7 (REQ-MESH-4): adopt a pushed seed into the live subnet store —\n        // a strictly-newer epoch only (idempotent, never a downgrade). The 20-byte\n…\n    }\n}\n\n[Showing lines 884-953 of 1160. Use :954 to continue]"}],"details":{"truncation":{"content":"\r\n/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\r\n/// re-read per connect (rare; honors a concurrent pairing/revoke without a\r\n/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\r\n/// provider stamps the node's live address onto its self-entry so peers learn\r\n/// how to reach it; the sink merges the peer's slice and gap-fills the dial\r\n/// cache. Used by the real daemon only — tests inject their own exchange.\r\n// [impl->REQ-MESH-2]\r\npub fn production_roster_exchange() -> RosterExchange {\r\n    let self_hex = spt_store::nodeid::load_or_create()\r\n        .map(|id| id.public_key().to_hex())\r\n        .unwrap_or_default();\r\n    let provider_hex = self_hex.clone();\r\n    RosterExchange {\r\n        provider: Arc::new(move |proven: &HashSet<String>, self_addr: &serde_json::Value| {\r\n            let mut store = RosterStore::load();\r\n            let label = spt_store::hostlabel::os_hostname().unwrap_or_default();\r\n            let machine_id = crate::machineid::machine_id_hash().unwrap_or_default();\r\n            // Peek, never consume: roster propagation must not disturb the\r\n            // registry lease counter (the D3 rule).\r\n            let lease = spt_store::epoch::EpochSource::load().current();\r\n            let now = now_secs().to_string();\r\n            let addr = if self_addr.is_null() {\r\n                None\r\n            } else {\r\n                Some(self_addr.clone())\r\n            };\r\n            for s in proven {\r\n                store.upsert_self(s, &provider_hex, &label, &machine_id, addr.clone(), &now, lease);\r\n            }\r\n            let _ = store.save();\r\n            let mut entries = Vec::new();\r\n            let mut tombstones = Vec::new();\r\n            for s in proven {\r\n                let (m, t) = store.roster_for(s);\r\n                entries.extend(m);\r\n                tombstones.extend(t);\r\n            }\r\n            (entries, tombstones)\r\n        }),\r\n        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\r\n            let mut store = RosterStore::load();\r\n            for e in &entries {\r\n                store.merge_entry(e.clone());\r\n            }\r\n            for t in &tombstones {\r\n                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\r\n            }\r\n            let _ = store.save();\r\n            let path = spt_store::peeraddrs::peer_addrs_file();\r\n            let mut pa = PeerAddrStore::load_from(&path);\r\n            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\r\n                let _ = pa.save_to(&path);\r\n            }\r\n        }),\r\n        // Mesh-D7 (REQ-MESH-4): the peer's roster status gates the grace —\r\n        // tombstoned ⇒ revoked ⇒ denied; listed ⇒ present; otherwise absent.\r\n        // Re-read per call so a just-propagated tombstone takes effect at once.\r\n        member_status: Arc::new(move |subnet: &str, peer_hex: &str| {\r\n            let store = RosterStore::load();\r\n            if store.is_tombstoned(subnet, peer_hex) {\r\n                MemberStatus::Tombstoned\r\n            } else if store.find(subnet, peer_hex).is_some() {\r\n                MemberStatus::Present\r\n            } else {\r\n                MemberStatus::Absent\r\n            }\r\n        }),\r\n        // Mesh-D7 (REQ-MESH-4): adopt a pushed seed into the live subnet store —\r\n        // a strictly-newer epoch only (idempotent, never a downgrade). The 20-byte\r","truncated":true,"truncatedBy":"lines","totalLines":277,"totalBytes":3432,"outputLines":70,"outputBytes":3432,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"\r\n/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\r\n/// re-read per connect (rare; honors a concurrent pairing/revoke without a\r\n/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\r\n/// provider stamps the node's live address onto its self-entry so peers learn\r\n/// how to reach it; the sink merges the peer's slice and gap-fills the dial\r\n/// cache. Used by the real daemon only — tests inject their own exchange.\r\n// [impl->REQ-MESH-2]\r\npub fn production_roster_exchange() -> RosterExchange {\r\n    let self_hex = spt_store::nodeid::load_or_create()\r\n        .map(|id| id.public_key().to_hex())\r\n        .unwrap_or_default();\r\n    let provider_hex = self_hex.clone();\r\n    RosterExchange {\r\n        provider: Arc::new(move |proven: &HashSet<String>, self_addr: &serde_json::Value| {\r\n            let mut store = RosterStore::load();\r\n            let label = spt_store::hostlabel::os_hostname().unwrap_or_default();\r\n            let machine_id = crate::machineid::machine_id_hash().unwrap_or_default();\r\n            // Peek, never consume: roster propagation must not disturb the\r\n            // registry lease counter (the D3 rule).\r\n            let lease = spt_store::epoch::EpochSource::load().current();\r\n            let now = now_secs().to_string();\r\n            let addr = if self_addr.is_null() {\r\n                None\r\n            } else {\r\n                Some(self_addr.clone())\r\n            };\r\n            for s in proven {\r\n                store.upsert_self(s, &provider_hex, &label, &machine_id, addr.clone(), &now, lease);\r\n            }\r\n            let _ = store.save();\r\n            let mut entries = Vec::new();\r\n            let mut tombstones = Vec::new();\r\n            for s in proven {\r\n                let (m, t) = store.roster_for(s);\r\n                entries.extend(m);\r\n                tombstones.extend(t);\r\n            }\r\n            (entries, tombstones)\r\n        }),\r\n        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\r\n            let mut store = RosterStore::load();\r\n            for e in &entries {\r\n                store.merge_entry(e.clone());\r\n            }\r\n            for t in &tombstones {\r\n                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\r\n            }\r\n            let _ = store.save();\r\n            let path = spt_store::peeraddrs::peer_addrs_file();\r\n            let mut pa = PeerAddrStore::load_from(&path);\r\n            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\r\n                let _ = pa.save_to(&path);\r\n            }\r\n        }),\r\n        // Mesh-D7 (REQ-MESH-4): the peer's roster status gates the grace —\r\n        // tombstoned ⇒ revoked ⇒ denied; listed ⇒ present; otherwise absent.\r\n        // Re-read per call so a just-propagated tombstone takes effect at once.\r\n        member_status: Arc::new(move |subnet: &str, peer_hex: &str| {\r\n            let store = RosterStore::load();\r\n            if store.is_tombstoned(subnet, peer_hex) {\r\n                MemberStatus::Tombstoned\r\n            } else if store.find(subnet, peer_hex).is_some() {\r\n                MemberStatus::Present\r\n            } else {\r\n                MemberStatus::Absent\r\n            }\r\n        }),\r\n        // Mesh-D7 (REQ-MESH-4): adopt a pushed seed into the live subnet store —\r\n        // a strictly-newer epoch only (idempotent, never a downgrade). The 20-byte\r\n…\n    }\n}","startLine":884,"lineNumbers":[884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,null,965,966]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":1160,"totalBytes":3432,"outputLines":70,"outputBytes":3432,"shownRange":{"start":884,"end":953},"nextOffset":954}}},"isError":false,"timestamp":1784069316268}}
{"type":"message","id":"cdc4527f","parentId":"d95e9fe4","timestamp":"2026-07-14T22:48:36.426Z","message":{"role":"toolResult","toolCallId":"call_lbtnbCQyki3aeGc3irM7mtJL|fc_050f56f290a937ae016a56bcc41ba88196aadba3e006422388","toolName":"grep","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/\n\n## adapters/_github/SaberMage-claude-spt/\n### hook-trace.log\n 1652|[1783649003119 pid 64228] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n*1653|[1783649029726 pid 59864] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 1654|[1783649034005 pid 69052] claude-spt hook: WORKER_STOP_SKIP — no minted-id mapping for agent a2769fef122f8a01d (start refused, pre-0.15.0 start, or mapping lost); core TTL reap is the backstop\n 1655|[1783649036596 pid 83508] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 1656|[1783649056229 pid 83888] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n...\n 2203|[1783663544202 pid 44752] claude-spt hook: NOTIFICATION type=\"idle_prompt\" (idle-heal fires only on idle_prompt)\n*2204|[1783663546780 pid 55960] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 2205|[1783663718421 pid 44860] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 2206|[1783663725789 pid 60628] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 2207|[1783663755739 pid 42536] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n\n## identity/\n### peer-addrs.json\n 54|        {\n*55|          \"Ip\": \"100.66.129.111:59864\"\n 56|        },\n 57|        {\n*58|          \"Ip\": \"107.131.129.74:59864\"\n 59|        },\n 60|        {\n*61|          \"Ip\": \"172.21.0.1:59864\"\n 62|        },\n 63|        {\n*64|          \"Ip\": \"192.168.1.11:59864\"\n 65|        },\n 66|        {\n 67|          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n### roster.json\n 3|    {\n*4|      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 5|      \"subnet\": \"SPT_DEV\",\n 6|      \"label\": \"HFENDULEAM\",\n 7|      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n 8|      \"address\": {\n*9|        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 10|        \"addrs\": [\n 11|          {\n 12|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 14|          {\n*15|            \"Ip\": \"100.68.35.65:63546\"\n 16|          },\n 17|          {\n*18|            \"Ip\": \"107.131.129.74:63546\"\n 19|          },\n 20|          {\n*21|            \"Ip\": \"192.168.1.81:63546\"\n 22|          }\n 23|        ]\n 24|      },\n...\n 39|          {\n*40|            \"Ip\": \"76.80.65.5:61803\"\n 41|          },\n 42|          {\n*43|            \"Ip\": \"100.125.242.88:61803\"\n 44|          },\n 45|          {\n 46|            \"Ip\": \"104.174.122.7:64860\"\n...\n 48|          {\n*49|            \"Ip\": \"172.28.240.1:61803\"\n 50|          },\n 51|          {\n*52|            \"Ip\": \"192.168.1.12:61803\"\n 53|          },\n 54|          {\n 55|            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n...\n 93|    {\n*94|      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 95|      \"subnet\": \"BIGNET\",\n 96|      \"label\": \"HFENDULEAM\",\n 97|      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n 98|      \"address\": {\n*99|        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 100|        \"addrs\": [\n 101|          {\n 102|            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n...\n 104|          {\n*105|            \"Ip\": \"100.68.35.65:63546\"\n 106|          },\n 107|          {\n*108|            \"Ip\": \"107.131.129.74:63546\"\n 109|          },\n 110|          {\n*111|            \"Ip\": \"192.168.1.81:63546\"\n 112|          }\n 113|        ]\n 114|      },\n...\n 157|          {\n*158|            \"Ip\": \"76.80.65.5:61803\"\n 159|          },\n 160|          {\n*161|            \"Ip\": \"100.125.242.88:61803\"\n 162|          },\n 163|          {\n 164|            \"Ip\": \"104.174.122.7:64860\"\n...\n 166|          {\n*167|            \"Ip\": \"172.28.240.1:61803\"\n 168|          },\n 169|          {\n*170|            \"Ip\": \"192.168.1.12:61803\"\n 171|          },\n 172|          {\n 173|            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n\n### registry/\n#### BIGNET.json\n 4|      {\n*5|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 6|        \"status\": \"Suspended\",\n 7|        \"epoch\": 630201,\n 8|        \"last_active_ms\": 1783630087661,\n...\n 20|      {\n*21|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 22|        \"status\": \"Suspended\",\n 23|        \"epoch\": 630203,\n 24|        \"last_active_ms\": 1783982275183,\n...\n 36|      {\n*37|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 38|        \"status\": \"Active\",\n 39|        \"epoch\": 630205,\n 40|        \"last_active_ms\": 1784069235233,\n...\n 44|        \"bound\": true,\n*45|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 46|        \"adapter\": \"claude-spt:ccs\",\n 47|        \"recent_projects\": [\n 48|          \"github-com-sabermage-spt-core\"\n...\n 54|      {\n*55|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 56|        \"status\": \"Suspended\",\n 57|        \"epoch\": 630207,\n 58|        \"node_label\": \"HFENDULEAM\",\n...\n 69|      {\n*70|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 71|        \"status\": \"Suspended\",\n 72|        \"epoch\": 630209,\n 73|        \"last_active_ms\": 1783991690185,\n...\n 86|      {\n*87|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 88|        \"status\": \"Suspended\",\n 89|        \"epoch\": 630211,\n 90|        \"last_active_ms\": 1783478174866,\n...\n 102|      {\n*103|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104|        \"status\": \"Active\",\n 105|        \"epoch\": 630213,\n 106|        \"node_label\": \"HFENDULEAM\",\n...\n 113|      {\n*114|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115|        \"status\": \"Active\",\n 116|        \"epoch\": 630215,\n 117|        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n...\n 122|        \"bound\": true,\n*123|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 124|        \"adapter\": \"claude-spt\",\n 125|        \"recent_projects\": [\n 126|          \"liaison\"\n...\n 132|      {\n*133|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134|        \"status\": \"Active\",\n 135|        \"epoch\": 630217,\n 136|        \"node_label\": \"HFENDULEAM\",\n...\n 139|        \"bound\": true,\n*140|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 141|        \"adapter\": \"mobile\",\n 142|        \"recent_projects\": [\n 143|          \"projects\",\n...\n 152|      {\n*153|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154|        \"status\": \"Suspended\",\n 155|        \"epoch\": 630219,\n 156|        \"last_active_ms\": 1783992010212,\n...\n 169|      {\n*170|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171|        \"status\": \"Suspended\",\n 172|        \"epoch\": 630221,\n 173|        \"last_active_ms\": 1783747106543,\n...\n 185|      {\n*186|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187|        \"status\": \"Suspended\",\n 188|        \"epoch\": 630223,\n 189|        \"node_label\": \"HFENDULEAM\",\n...\n 198|      {\n*199|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200|        \"status\": \"Active\",\n 201|        \"epoch\": 630225,\n 202|        \"node_label\": \"HFENDULEAM\",\n...\n 205|        \"bound\": true,\n*206|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 207|        \"adapter\": \"claude-spt:ccs\",\n 208|        \"recent_projects\": [\n 209|          \"github-com-sabermage-spt-core\"\n...\n 215|  \"node_labels\": {\n*216|    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n 217|      \"label\": \"HFENDULEAM\",\n 218|      \"epoch\": 630227\n 219|    },\n#### BS-Resources.json\n 4|      {\n*5|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 6|        \"status\": \"Suspended\",\n 7|        \"epoch\": 599500,\n 8|        \"last_active_ms\": 1783630087661,\n...\n 20|      {\n*21|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 22|        \"status\": \"Suspended\",\n 23|        \"epoch\": 599503,\n 24|        \"last_active_ms\": 1783982275183,\n...\n 36|      {\n*37|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 38|        \"status\": \"Active\",\n 39|        \"epoch\": 599506,\n 40|        \"last_active_ms\": 1783982630187,\n...\n 44|        \"bound\": true,\n*45|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 46|        \"adapter\": \"claude-spt:ccs\",\n 47|        \"recent_projects\": [\n 48|          \"github-com-sabermage-spt-core\"\n...\n 54|      {\n*55|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 56|        \"status\": \"Suspended\",\n 57|        \"epoch\": 599509,\n 58|        \"node_label\": \"HFENDULEAM\",\n...\n 69|      {\n*70|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 71|        \"status\": \"Active\",\n 72|        \"epoch\": 599512,\n 73|        \"last_active_ms\": 1783982630197,\n...\n 77|        \"bound\": true,\n*78|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 79|        \"adapter\": \"claude-spt:ccs\",\n 80|        \"recent_projects\": [\n 81|          \"github-com-sabermage-spt-mobile\",\n...\n 88|      {\n*89|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 90|        \"status\": \"Suspended\",\n 91|        \"epoch\": 599515,\n 92|        \"last_active_ms\": 1783478174866,\n...\n 104|      {\n*105|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 106|        \"status\": \"Active\",\n 107|        \"epoch\": 599518,\n 108|        \"node_label\": \"HFENDULEAM\",\n...\n 115|      {\n*116|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 117|        \"status\": \"Active\",\n 118|        \"epoch\": 599521,\n 119|        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n...\n 124|        \"bound\": true,\n*125|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 126|        \"adapter\": \"claude-spt\",\n 127|        \"recent_projects\": [\n 128|          \"liaison\"\n...\n 134|      {\n*135|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 136|        \"status\": \"Dormant\",\n 137|        \"epoch\": 599524,\n 138|        \"node_label\": \"HFENDULEAM\",\n...\n 152|      {\n*153|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154|        \"status\": \"Active\",\n 155|        \"epoch\": 599527,\n 156|        \"last_active_ms\": 1783982645162,\n...\n 160|        \"bound\": true,\n*161|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 162|        \"adapter\": \"claude-spt:ccs\",\n 163|        \"recent_projects\": [\n 164|          \"github-com-sabermage-claude-spt\",\n...\n 171|      {\n*172|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 173|        \"status\": \"Suspended\",\n 174|        \"epoch\": 599530,\n 175|        \"last_active_ms\": 1783747106543,\n...\n 187|      {\n*188|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 189|        \"status\": \"Suspended\",\n 190|        \"epoch\": 599533,\n 191|        \"node_label\": \"HFENDULEAM\",\n...\n 200|      {\n*201|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 202|        \"status\": \"Suspended\",\n 203|        \"epoch\": 599536,\n 204|        \"node_label\": \"HFENDULEAM\",\n...\n 215|  \"node_labels\": {\n*216|    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n 217|      \"label\": \"HFENDULEAM\",\n 218|      \"epoch\": 599539\n 219|    },\n#### SPT_DEV.json\n 4|      {\n*5|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 6|        \"status\": \"Suspended\",\n 7|        \"epoch\": 630200,\n 8|        \"last_active_ms\": 1783630087661,\n...\n 20|      {\n*21|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 22|        \"status\": \"Suspended\",\n 23|        \"epoch\": 630202,\n 24|        \"last_active_ms\": 1783982275183,\n...\n 36|      {\n*37|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 38|        \"status\": \"Active\",\n 39|        \"epoch\": 630204,\n 40|        \"last_active_ms\": 1784069235233,\n...\n 44|        \"bound\": true,\n*45|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 46|        \"adapter\": \"claude-spt:ccs\",\n 47|        \"recent_projects\": [\n 48|          \"github-com-sabermage-spt-core\"\n...\n 54|      {\n*55|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 56|        \"status\": \"Suspended\",\n 57|        \"epoch\": 630206,\n 58|        \"node_label\": \"HFENDULEAM\",\n...\n 69|      {\n*70|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 71|        \"status\": \"Suspended\",\n 72|        \"epoch\": 630208,\n 73|        \"last_active_ms\": 1783991690185,\n...\n 86|      {\n*87|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 88|        \"status\": \"Suspended\",\n 89|        \"epoch\": 630210,\n 90|        \"last_active_ms\": 1783478174866,\n...\n 102|      {\n*103|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104|        \"status\": \"Active\",\n 105|        \"epoch\": 630212,\n 106|        \"node_label\": \"HFENDULEAM\",\n...\n 113|      {\n*114|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115|        \"status\": \"Active\",\n 116|        \"epoch\": 630214,\n 117|        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n...\n 122|        \"bound\": true,\n*123|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 124|        \"adapter\": \"claude-spt\",\n 125|        \"recent_projects\": [\n 126|          \"liaison\"\n...\n 132|      {\n*133|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134|        \"status\": \"Active\",\n 135|        \"epoch\": 630216,\n 136|        \"node_label\": \"HFENDULEAM\",\n...\n 139|        \"bound\": true,\n*140|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 141|        \"adapter\": \"mobile\",\n 142|        \"recent_projects\": [\n 143|          \"projects\",\n...\n 152|      {\n*153|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154|        \"status\": \"Suspended\",\n 155|        \"epoch\": 630218,\n 156|        \"last_active_ms\": 1783992010212,\n...\n 169|      {\n*170|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171|        \"status\": \"Suspended\",\n 172|        \"epoch\": 630220,\n 173|        \"last_active_ms\": 1783747106543,\n...\n 185|      {\n*186|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187|        \"status\": \"Suspended\",\n 188|        \"epoch\": 630222,\n 189|        \"node_label\": \"HFENDULEAM\",\n...\n 198|      {\n*199|        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200|        \"status\": \"Active\",\n 201|        \"epoch\": 630224,\n 202|        \"node_label\": \"HFENDULEAM\",\n...\n 205|        \"bound\": true,\n*206|        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 207|        \"adapter\": \"claude-spt:ccs\",\n 208|        \"recent_projects\": [\n 209|          \"github-com-sabermage-spt-core\"\n...\n 215|  \"node_labels\": {\n*216|    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n 217|      \"label\": \"HFENDULEAM\",\n 218|      \"epoch\": 630226\n 219|    },\n\n## owlery/\n\n### doyle/\n#### info.json\n*1|{\"id\":\"doyle\",\"started\":\"1783745674\",\"pid\":58628,\"session_id\":\"5b71855b-82d2-483b-908f-4b2c3f57db84\",\"state\":\"live_agent\",\"parent_pid\":70668,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\",\"status\":\"online\",\"last_active_ms\":1784069315225,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt:ccs\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigsc...\n#### info.json.tmp.66492-89936\n*1|{\"id\":\"doyle\",\"started\":\"1783685652\",\"pid\":47536,\"session_id\":\"6cf22920-8f60-4a09-9b8d-7d46280f9a8c\",\"state\":\"live_agent\",\"parent_pid\":52188,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\",\"status\":\"online\",\"last_active_ms\":1783686857342,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigscreen\"}}\n\n### hall-bf/\n#### info.json.tmp.375752-80291\n*1|{\"id\":\"hall-bf\",\"started\":\"1783138373\",\"pid\":278444,\"session_id\":\"3c5986e4-e9be-46c4-ace9-5972b792830c\",\"state\":\"live_agent\",\"parent_pid\":312400,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\test-project\",\"status\":\"online\",\"last_active_ms\":1783151787988,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigscreen\"}}\n\n### lia/\n#### info.json\n*1|{\"id\":\"lia\",\"started\":\"1783745673\",\"pid\":35832,\"session_id\":\"f4df7cba-aae5-46c6-aa4f-50d2fb874894\",\"state\":\"live_agent\",\"parent_pid\":70396,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison\",\"status\":\"online\",\"last_active_ms\":1784069315238,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"resources\":\"Multipurpose subnet liaison for user Reavo.\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true}\n#### info.json.tmp.66492-89934\n*1|{\"id\":\"lia\",\"started\":\"1783670498\",\"pid\":51756,\"session_id\":\"f4df7cba-aae5-46c6-aa4f-50d2fb874894\",\"state\":\"live_agent\",\"parent_pid\":54344,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison\",\"status\":\"online\",\"last_active_ms\":1783686856632,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"resources\":\"Multipurpose subnet liaison for user Reavo.\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true}\n\n### mobile-gw/\n#### info.json\n*1|{\"id\":\"mobile-gw\",\"started\":\"1783746790\",\"pid\":65108,\"session_id\":\"spt-mobile-host-23720\",\"state\":\"gateway\",\"parent_pid\":23720,\"cwd\":\"C:/Users/decid/Documents/projects\",\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"mobile\",\"controllable\":false}\n\n### todlando/\n#### info.json\n*1|{\"id\":\"todlando\",\"started\":\"1783984129\",\"pid\":63932,\"session_id\":\"8247f171-5398-4afb-9a95-d51e296457f8\",\"state\":\"ready_agent\",\"parent_pid\":54548,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\",\"status\":\"online\",\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt:ccs\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigscreen\"}}\n\n## rca-active-20260709-222659/\n### daemon.stderr.active.log\n 3|BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n 6|PUMP_IPC_READER: spawned\n 7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 26|DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n*27|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 28|PUMP_IPC_READER: spawned\n 29|PUMP_IPC_READER: spawned\n 30|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 2918|DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920|PUMP_IPC_READER: spawned\n 2921|PUMP_IPC_READER: spawned\n 2922|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3468|PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469|PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3847|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849|PUMP_IPC_READER: spawned\n 3850|PUMP_IPC_READER: spawned\n 3851|BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n...\n 3878|LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880|PUMP_IPC_READER: spawned\n 3881|PUMP_IPC_READER: spawned\n 3882|WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n...\n 4008|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010|PUMP_IPC_READER: spawned\n 4011|PUMP_IPC_READER: spawned\n 4012|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 4404|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406|PUMP_IPC_READER: spawned\n 4407|PUMP_IPC_READER: spawned\n 4408|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 6111|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=23296 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n*6112|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6113|PUMP_IPC_READER: spawned\n 6114|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=44224 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n 6115|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=42340 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n...\n 6172|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*6173|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6174|PUMP_IPC_READER: spawned\n 6175|PUMP_IPC_READER: spawned\n 6176|RCA_BOUNDED_WAIT_BEGIN:pid=82444 child_pid=49752 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n...\n 6484|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 17248) — online at bind\n*6485|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6486|PUMP_IPC_READER: spawned\n 6487|PUMP_IPC_READER: spawned\n 6488|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 6946|RCA_CONN_CLOSE: conn_id=7 elapsed_us=220977\n*6947|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6948|RCA_CONN_OPEN: conn_id=8 elapsed_us=523369\n 6949|RCA_CONN_OPEN: conn_id=9 elapsed_us=523396\n 6950|PUMP_IPC_READER: spawned\n...\n 8645|RCA_BOUNDED_WAIT_END:pid=82604 child_pid=51144 label=\"arbitrary_command\" elapsed_ms=81 outcome=exited status_code=Some(0)\n*8646|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 8647|RCA_CONN_OPEN: conn_id=273 elapsed_us=312923438\n 8648|RCA_CONN_OPEN: conn_id=274 elapsed_us=312923462\n 8649|PUMP_IPC_READER: spawned\n### daemon.stderr.log\n 3|BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n 6|PUMP_IPC_READER: spawned\n 7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 26|DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n*27|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 28|PUMP_IPC_READER: spawned\n 29|PUMP_IPC_READER: spawned\n 30|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 2918|DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920|PUMP_IPC_READER: spawned\n 2921|PUMP_IPC_READER: spawned\n 2922|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3468|PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469|PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3847|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849|PUMP_IPC_READER: spawned\n 3850|PUMP_IPC_READER: spawned\n 3851|BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n...\n 3878|LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880|PUMP_IPC_READER: spawned\n 3881|PUMP_IPC_READER: spawned\n 3882|WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n...\n 4008|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010|PUMP_IPC_READER: spawned\n 4011|PUMP_IPC_READER: spawned\n 4012|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 4404|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406|PUMP_IPC_READER: spawned\n 4407|PUMP_IPC_READER: spawned\n 4408|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 6111|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=23296 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n*6112|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6113|PUMP_IPC_READER: spawned\n 6114|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=44224 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n 6115|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=42340 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n...\n 6172|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*6173|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6174|PUMP_IPC_READER: spawned\n 6175|PUMP_IPC_READER: spawned\n 6176|RCA_BOUNDED_WAIT_BEGIN:pid=82444 child_pid=49752 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n...\n 6484|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 17248) — online at bind\n*6485|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6486|PUMP_IPC_READER: spawned\n 6487|PUMP_IPC_READER: spawned\n 6488|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n\n## rca-capture-20260709-215646/\n### daemon.stderr.log\n 3|BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n 6|PUMP_IPC_READER: spawned\n 7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 26|DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n*27|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 28|PUMP_IPC_READER: spawned\n 29|PUMP_IPC_READER: spawned\n 30|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 2918|DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920|PUMP_IPC_READER: spawned\n 2921|PUMP_IPC_READER: spawned\n 2922|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3468|PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469|PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3847|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849|PUMP_IPC_READER: spawned\n 3850|PUMP_IPC_READER: spawned\n 3851|BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n...\n 3878|LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880|PUMP_IPC_READER: spawned\n 3881|PUMP_IPC_READER: spawned\n 3882|WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n...\n 4008|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010|PUMP_IPC_READER: spawned\n 4011|PUMP_IPC_READER: spawned\n 4012|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 4404|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406|PUMP_IPC_READER: spawned\n 4407|PUMP_IPC_READER: spawned\n 4408|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 6111|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=23296 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n*6112|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6113|PUMP_IPC_READER: spawned\n 6114|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=44224 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n 6115|RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=42340 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n...\n 6172|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*6173|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6174|PUMP_IPC_READER: spawned\n 6175|PUMP_IPC_READER: spawned\n 6176|RCA_BOUNDED_WAIT_BEGIN:pid=82444 child_pid=49752 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n### daemon.stderr.pre.log\n 3|BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 5|PUMP_IPC_READER: spawned\n 6|PUMP_IPC_READER: spawned\n 7|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 26|DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n*27|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 28|PUMP_IPC_READER: spawned\n 29|PUMP_IPC_READER: spawned\n 30|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 2918|DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920|PUMP_IPC_READER: spawned\n 2921|PUMP_IPC_READER: spawned\n 2922|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3468|PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469|PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n...\n 3847|BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849|PUMP_IPC_READER: spawned\n 3850|PUMP_IPC_READER: spawned\n 3851|BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n...\n 3878|LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880|PUMP_IPC_READER: spawned\n 3881|PUMP_IPC_READER: spawned\n 3882|WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n...\n 4008|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010|PUMP_IPC_READER: spawned\n 4011|PUMP_IPC_READER: spawned\n 4012|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n...\n 4404|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406|PUMP_IPC_READER: spawned\n 4407|PUMP_IPC_READER: spawned\n 4408|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n\n## tracked/agents/\n\n### chert/\n#### live-context.md\n*1|<!-- spt:source=llm spt:routed_at_ms=1783601062643 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:373469 -->\n 2|Agent identity: chert @ HFENDULEAM (spt-core/), operating with bypassPermissions in worktree `.worktrees/spec-pilot`.\n 3|Session ended mid-flow (no signoff) after landing on a clean status report; last action was a `/reload-plugins` local command (7 plugins, 40 agents, 20 hooks reloaded), not a task action.\n 4|Known live agents in this repo per SessionStart pick: doyle, deployah, todlando.\n\n### deployah/\n#### live-context.md\n*1|<!-- spt:source=llm spt:routed_at_ms=1783982315177 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:599354 -->\n 2|deployah signed off cleanly this session via /sptc:signoff — no new habits or corrections to record. Perch down, `/sptc:ready`/`/sptc:live` brings back.\n\n### doyle/\n#### live-context.md\n*1|<!-- spt:source=llm spt:routed_at_ms=1784026085169 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:615136 -->\n 2|Session used CAVEMAN MODE (full) per hook config — terse fragment style, no filler, code/commits normal. Doyle acting in gater/owner design-grilling capacity, working solo through a sequential Q&A ruling series with the operator (pattern: doyle proposes options with recommendation, operator rules, doyle proceeds to next open question). No commits, no gate runs, no builds this session — pure architecture-decision capture, consistent with doyle's role boundary (gates/owns, doesn't build).\n\nShowing files 1-20 of 40+. Use skip=20 for the next page, or narrow paths/pattern.\n\n[Some lines truncated to 512 chars]"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core","searchPath":"C:/Users/decid/AppData/Local/spt-core","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":130,"fileCount":20,"files":["C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/hook-trace.log","C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","C:/Users/decid/AppData/Local/spt-core/identity/roster.json","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/info.json","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/info.json.tmp.66492-89936","C:/Users/decid/AppData/Local/spt-core/owlery/hall-bf/info.json.tmp.375752-80291","C:/Users/decid/AppData/Local/spt-core/owlery/lia/info.json","C:/Users/decid/AppData/Local/spt-core/owlery/lia/info.json.tmp.66492-89934","C:/Users/decid/AppData/Local/spt-core/owlery/mobile-gw/info.json","C:/Users/decid/AppData/Local/spt-core/owlery/todlando/info.json","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log","C:/Users/decid/AppData/Local/spt-core/tracked/agents/chert/live-context.md","C:/Users/decid/AppData/Local/spt-core/tracked/agents/deployah/live-context.md","C:/Users/decid/AppData/Local/spt-core/tracked/agents/doyle/live-context.md"],"fileMatches":[{"path":"C:/Users/decid/AppData/Local/spt-core/adapters/_github/SaberMage-claude-spt/hook-trace.log","count":2},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","count":4},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","count":18},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/BS-Resources.json","count":18},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","count":18},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","count":18},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/info.json","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/info.json.tmp.66492-89936","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/hall-bf/info.json.tmp.375752-80291","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/lia/info.json","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/lia/info.json.tmp.66492-89934","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/mobile-gw/info.json","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/owlery/todlando/info.json","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","count":13},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log","count":11},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log","count":10},{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log","count":8},{"path":"C:/Users/decid/AppData/Local/spt-core/tracked/agents/chert/live-context.md","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/tracked/agents/deployah/live-context.md","count":1},{"path":"C:/Users/decid/AppData/Local/spt-core/tracked/agents/doyle/live-context.md","count":1}],"truncated":true,"fileLimitReached":20,"perFileLimitReached":20,"displayContent":"# C:/Users/decid/AppData/Local/spt-core/\n\n## adapters/_github/SaberMage-claude-spt/\n### hook-trace.log\n 1652│[1783649003119 pid 64228] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n*1653│[1783649029726 pid 59864] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 1654│[1783649034005 pid 69052] claude-spt hook: WORKER_STOP_SKIP — no minted-id mapping for agent a2769fef122f8a01d (start refused, pre-0.15.0 start, or mapping lost); core TTL reap is the backstop\n 1655│[1783649036596 pid 83508] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 1656│[1783649056229 pid 83888] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n     │...\n 2203│[1783663544202 pid 44752] claude-spt hook: NOTIFICATION type=\"idle_prompt\" (idle-heal fires only on idle_prompt)\n*2204│[1783663546780 pid 55960] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 2205│[1783663718421 pid 44860] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 2206│[1783663725789 pid 60628] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n 2207│[1783663755739 pid 42536] claude-spt hook: SPT_HOST_PID not exported — host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk\n\n## identity/\n### peer-addrs.json\n 54│        {\n*55│          \"Ip\": \"100.66.129.111:59864\"\n 56│        },\n 57│        {\n*58│          \"Ip\": \"107.131.129.74:59864\"\n 59│        },\n 60│        {\n*61│          \"Ip\": \"172.21.0.1:59864\"\n 62│        },\n 63│        {\n*64│          \"Ip\": \"192.168.1.11:59864\"\n 65│        },\n 66│        {\n 67│          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n### roster.json\n   3│    {\n  *4│      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n   5│      \"subnet\": \"SPT_DEV\",\n   6│      \"label\": \"HFENDULEAM\",\n   7│      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n   8│      \"address\": {\n  *9│        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  10│        \"addrs\": [\n  11│          {\n  12│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n    │...\n  14│          {\n *15│            \"Ip\": \"100.68.35.65:63546\"\n  16│          },\n  17│          {\n *18│            \"Ip\": \"107.131.129.74:63546\"\n  19│          },\n  20│          {\n *21│            \"Ip\": \"192.168.1.81:63546\"\n  22│          }\n  23│        ]\n  24│      },\n    │...\n  39│          {\n *40│            \"Ip\": \"76.80.65.5:61803\"\n  41│          },\n  42│          {\n *43│            \"Ip\": \"100.125.242.88:61803\"\n  44│          },\n  45│          {\n  46│            \"Ip\": \"104.174.122.7:64860\"\n    │...\n  48│          {\n *49│            \"Ip\": \"172.28.240.1:61803\"\n  50│          },\n  51│          {\n *52│            \"Ip\": \"192.168.1.12:61803\"\n  53│          },\n  54│          {\n  55│            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n    │...\n  93│    {\n *94│      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  95│      \"subnet\": \"BIGNET\",\n  96│      \"label\": \"HFENDULEAM\",\n  97│      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n  98│      \"address\": {\n *99│        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 100│        \"addrs\": [\n 101│          {\n 102│            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n    │...\n 104│          {\n*105│            \"Ip\": \"100.68.35.65:63546\"\n 106│          },\n 107│          {\n*108│            \"Ip\": \"107.131.129.74:63546\"\n 109│          },\n 110│          {\n*111│            \"Ip\": \"192.168.1.81:63546\"\n 112│          }\n 113│        ]\n 114│      },\n    │...\n 157│          {\n*158│            \"Ip\": \"76.80.65.5:61803\"\n 159│          },\n 160│          {\n*161│            \"Ip\": \"100.125.242.88:61803\"\n 162│          },\n 163│          {\n 164│            \"Ip\": \"104.174.122.7:64860\"\n    │...\n 166│          {\n*167│            \"Ip\": \"172.28.240.1:61803\"\n 168│          },\n 169│          {\n*170│            \"Ip\": \"192.168.1.12:61803\"\n 171│          },\n 172│          {\n 173│            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n\n### registry/\n#### BIGNET.json\n   4│      {\n  *5│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n   6│        \"status\": \"Suspended\",\n   7│        \"epoch\": 630201,\n   8│        \"last_active_ms\": 1783630087661,\n    │...\n  20│      {\n *21│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  22│        \"status\": \"Suspended\",\n  23│        \"epoch\": 630203,\n  24│        \"last_active_ms\": 1783982275183,\n    │...\n  36│      {\n *37│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  38│        \"status\": \"Active\",\n  39│        \"epoch\": 630205,\n  40│        \"last_active_ms\": 1784069235233,\n    │...\n  44│        \"bound\": true,\n *45│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  46│        \"adapter\": \"claude-spt:ccs\",\n  47│        \"recent_projects\": [\n  48│          \"github-com-sabermage-spt-core\"\n    │...\n  54│      {\n *55│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  56│        \"status\": \"Suspended\",\n  57│        \"epoch\": 630207,\n  58│        \"node_label\": \"HFENDULEAM\",\n    │...\n  69│      {\n *70│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  71│        \"status\": \"Suspended\",\n  72│        \"epoch\": 630209,\n  73│        \"last_active_ms\": 1783991690185,\n    │...\n  86│      {\n *87│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  88│        \"status\": \"Suspended\",\n  89│        \"epoch\": 630211,\n  90│        \"last_active_ms\": 1783478174866,\n    │...\n 102│      {\n*103│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104│        \"status\": \"Active\",\n 105│        \"epoch\": 630213,\n 106│        \"node_label\": \"HFENDULEAM\",\n    │...\n 113│      {\n*114│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115│        \"status\": \"Active\",\n 116│        \"epoch\": 630215,\n 117│        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n    │...\n 122│        \"bound\": true,\n*123│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 124│        \"adapter\": \"claude-spt\",\n 125│        \"recent_projects\": [\n 126│          \"liaison\"\n    │...\n 132│      {\n*133│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134│        \"status\": \"Active\",\n 135│        \"epoch\": 630217,\n 136│        \"node_label\": \"HFENDULEAM\",\n    │...\n 139│        \"bound\": true,\n*140│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 141│        \"adapter\": \"mobile\",\n 142│        \"recent_projects\": [\n 143│          \"projects\",\n    │...\n 152│      {\n*153│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154│        \"status\": \"Suspended\",\n 155│        \"epoch\": 630219,\n 156│        \"last_active_ms\": 1783992010212,\n    │...\n 169│      {\n*170│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171│        \"status\": \"Suspended\",\n 172│        \"epoch\": 630221,\n 173│        \"last_active_ms\": 1783747106543,\n    │...\n 185│      {\n*186│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187│        \"status\": \"Suspended\",\n 188│        \"epoch\": 630223,\n 189│        \"node_label\": \"HFENDULEAM\",\n    │...\n 198│      {\n*199│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200│        \"status\": \"Active\",\n 201│        \"epoch\": 630225,\n 202│        \"node_label\": \"HFENDULEAM\",\n    │...\n 205│        \"bound\": true,\n*206│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 207│        \"adapter\": \"claude-spt:ccs\",\n 208│        \"recent_projects\": [\n 209│          \"github-com-sabermage-spt-core\"\n    │...\n 215│  \"node_labels\": {\n*216│    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n 217│      \"label\": \"HFENDULEAM\",\n 218│      \"epoch\": 630227\n 219│    },\n#### BS-Resources.json\n   4│      {\n  *5│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n   6│        \"status\": \"Suspended\",\n   7│        \"epoch\": 599500,\n   8│        \"last_active_ms\": 1783630087661,\n    │...\n  20│      {\n *21│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  22│        \"status\": \"Suspended\",\n  23│        \"epoch\": 599503,\n  24│        \"last_active_ms\": 1783982275183,\n    │...\n  36│      {\n *37│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  38│        \"status\": \"Active\",\n  39│        \"epoch\": 599506,\n  40│        \"last_active_ms\": 1783982630187,\n    │...\n  44│        \"bound\": true,\n *45│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  46│        \"adapter\": \"claude-spt:ccs\",\n  47│        \"recent_projects\": [\n  48│          \"github-com-sabermage-spt-core\"\n    │...\n  54│      {\n *55│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  56│        \"status\": \"Suspended\",\n  57│        \"epoch\": 599509,\n  58│        \"node_label\": \"HFENDULEAM\",\n    │...\n  69│      {\n *70│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  71│        \"status\": \"Active\",\n  72│        \"epoch\": 599512,\n  73│        \"last_active_ms\": 1783982630197,\n    │...\n  77│        \"bound\": true,\n *78│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  79│        \"adapter\": \"claude-spt:ccs\",\n  80│        \"recent_projects\": [\n  81│          \"github-com-sabermage-spt-mobile\",\n    │...\n  88│      {\n *89│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  90│        \"status\": \"Suspended\",\n  91│        \"epoch\": 599515,\n  92│        \"last_active_ms\": 1783478174866,\n    │...\n 104│      {\n*105│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 106│        \"status\": \"Active\",\n 107│        \"epoch\": 599518,\n 108│        \"node_label\": \"HFENDULEAM\",\n    │...\n 115│      {\n*116│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 117│        \"status\": \"Active\",\n 118│        \"epoch\": 599521,\n 119│        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n    │...\n 124│        \"bound\": true,\n*125│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 126│        \"adapter\": \"claude-spt\",\n 127│        \"recent_projects\": [\n 128│          \"liaison\"\n    │...\n 134│      {\n*135│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 136│        \"status\": \"Dormant\",\n 137│        \"epoch\": 599524,\n 138│        \"node_label\": \"HFENDULEAM\",\n    │...\n 152│      {\n*153│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154│        \"status\": \"Active\",\n 155│        \"epoch\": 599527,\n 156│        \"last_active_ms\": 1783982645162,\n    │...\n 160│        \"bound\": true,\n*161│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 162│        \"adapter\": \"claude-spt:ccs\",\n 163│        \"recent_projects\": [\n 164│          \"github-com-sabermage-claude-spt\",\n    │...\n 171│      {\n*172│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 173│        \"status\": \"Suspended\",\n 174│        \"epoch\": 599530,\n 175│        \"last_active_ms\": 1783747106543,\n    │...\n 187│      {\n*188│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 189│        \"status\": \"Suspended\",\n 190│        \"epoch\": 599533,\n 191│        \"node_label\": \"HFENDULEAM\",\n    │...\n 200│      {\n*201│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 202│        \"status\": \"Suspended\",\n 203│        \"epoch\": 599536,\n 204│        \"node_label\": \"HFENDULEAM\",\n    │...\n 215│  \"node_labels\": {\n*216│    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n 217│      \"label\": \"HFENDULEAM\",\n 218│      \"epoch\": 599539\n 219│    },\n#### SPT_DEV.json\n   4│      {\n  *5│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n   6│        \"status\": \"Suspended\",\n   7│        \"epoch\": 630200,\n   8│        \"last_active_ms\": 1783630087661,\n    │...\n  20│      {\n *21│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  22│        \"status\": \"Suspended\",\n  23│        \"epoch\": 630202,\n  24│        \"last_active_ms\": 1783982275183,\n    │...\n  36│      {\n *37│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  38│        \"status\": \"Active\",\n  39│        \"epoch\": 630204,\n  40│        \"last_active_ms\": 1784069235233,\n    │...\n  44│        \"bound\": true,\n *45│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  46│        \"adapter\": \"claude-spt:ccs\",\n  47│        \"recent_projects\": [\n  48│          \"github-com-sabermage-spt-core\"\n    │...\n  54│      {\n *55│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  56│        \"status\": \"Suspended\",\n  57│        \"epoch\": 630206,\n  58│        \"node_label\": \"HFENDULEAM\",\n    │...\n  69│      {\n *70│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  71│        \"status\": \"Suspended\",\n  72│        \"epoch\": 630208,\n  73│        \"last_active_ms\": 1783991690185,\n    │...\n  86│      {\n *87│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n  88│        \"status\": \"Suspended\",\n  89│        \"epoch\": 630210,\n  90│        \"last_active_ms\": 1783478174866,\n    │...\n 102│      {\n*103│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 104│        \"status\": \"Active\",\n 105│        \"epoch\": 630212,\n 106│        \"node_label\": \"HFENDULEAM\",\n    │...\n 113│      {\n*114│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 115│        \"status\": \"Active\",\n 116│        \"epoch\": 630214,\n 117│        \"resources\": \"Multipurpose subnet liaison for user Reavo.\",\n    │...\n 122│        \"bound\": true,\n*123│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 124│        \"adapter\": \"claude-spt\",\n 125│        \"recent_projects\": [\n 126│          \"liaison\"\n    │...\n 132│      {\n*133│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 134│        \"status\": \"Active\",\n 135│        \"epoch\": 630216,\n 136│        \"node_label\": \"HFENDULEAM\",\n    │...\n 139│        \"bound\": true,\n*140│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 141│        \"adapter\": \"mobile\",\n 142│        \"recent_projects\": [\n 143│          \"projects\",\n    │...\n 152│      {\n*153│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 154│        \"status\": \"Suspended\",\n 155│        \"epoch\": 630218,\n 156│        \"last_active_ms\": 1783992010212,\n    │...\n 169│      {\n*170│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 171│        \"status\": \"Suspended\",\n 172│        \"epoch\": 630220,\n 173│        \"last_active_ms\": 1783747106543,\n    │...\n 185│      {\n*186│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 187│        \"status\": \"Suspended\",\n 188│        \"epoch\": 630222,\n 189│        \"node_label\": \"HFENDULEAM\",\n    │...\n 198│      {\n*199│        \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 200│        \"status\": \"Active\",\n 201│        \"epoch\": 630224,\n 202│        \"node_label\": \"HFENDULEAM\",\n    │...\n 205│        \"bound\": true,\n*206│        \"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n 207│        \"adapter\": \"claude-spt:ccs\",\n 208│        \"recent_projects\": [\n 209│          \"github-com-sabermage-spt-core\"\n    │...\n 215│  \"node_labels\": {\n*216│    \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {\n 217│      \"label\": \"HFENDULEAM\",\n 218│      \"epoch\": 630226\n 219│    },\n\n## owlery/\n\n### doyle/\n#### info.json\n*1│{\"id\":\"doyle\",\"started\":\"1783745674\",\"pid\":58628,\"session_id\":\"5b71855b-82d2-483b-908f-4b2c3f57db84\",\"state\":\"live_agent\",\"parent_pid\":70668,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\",\"status\":\"online\",\"last_active_ms\":1784069315225,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt:ccs\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigsc...\n#### info.json.tmp.66492-89936\n*1│{\"id\":\"doyle\",\"started\":\"1783685652\",\"pid\":47536,\"session_id\":\"6cf22920-8f60-4a09-9b8d-7d46280f9a8c\",\"state\":\"live_agent\",\"parent_pid\":52188,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\",\"status\":\"online\",\"last_active_ms\":1783686857342,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigscreen\"}}\n\n### hall-bf/\n#### info.json.tmp.375752-80291\n*1│{\"id\":\"hall-bf\",\"started\":\"1783138373\",\"pid\":278444,\"session_id\":\"3c5986e4-e9be-46c4-ace9-5972b792830c\",\"state\":\"live_agent\",\"parent_pid\":312400,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\test-project\",\"status\":\"online\",\"last_active_ms\":1783151787988,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigscreen\"}}\n\n### lia/\n#### info.json\n*1│{\"id\":\"lia\",\"started\":\"1783745673\",\"pid\":35832,\"session_id\":\"f4df7cba-aae5-46c6-aa4f-50d2fb874894\",\"state\":\"live_agent\",\"parent_pid\":70396,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison\",\"status\":\"online\",\"last_active_ms\":1784069315238,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"resources\":\"Multipurpose subnet liaison for user Reavo.\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true}\n#### info.json.tmp.66492-89934\n*1│{\"id\":\"lia\",\"started\":\"1783670498\",\"pid\":51756,\"session_id\":\"f4df7cba-aae5-46c6-aa4f-50d2fb874894\",\"state\":\"live_agent\",\"parent_pid\":54344,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\liaison\",\"status\":\"online\",\"last_active_ms\":1783686856632,\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"resources\":\"Multipurpose subnet liaison for user Reavo.\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt\",\"controllable\":true}\n\n### mobile-gw/\n#### info.json\n*1│{\"id\":\"mobile-gw\",\"started\":\"1783746790\",\"pid\":65108,\"session_id\":\"spt-mobile-host-23720\",\"state\":\"gateway\",\"parent_pid\":23720,\"cwd\":\"C:/Users/decid/Documents/projects\",\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"mobile\",\"controllable\":false}\n\n### todlando/\n#### info.json\n*1│{\"id\":\"todlando\",\"started\":\"1783984129\",\"pid\":63932,\"session_id\":\"8247f171-5398-4afb-9a95-d51e296457f8\",\"state\":\"ready_agent\",\"parent_pid\":54548,\"cwd\":\"C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\",\"status\":\"online\",\"driven_by\":\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\"controlled\":true,\"rest_state\":\"active\",\"home_subnet\":\"SPT_DEV\",\"adapter\":\"claude-spt:ccs\",\"controllable\":true,\"read_env\":{\"CLAUDE_CONFIG_DIR\":\"C:\\\\Users\\\\decid\\\\.ccs\\\\instances\\\\bigscreen\"}}\n\n## rca-active-20260709-222659/\n### daemon.stderr.active.log\n    3│BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n   *4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n    5│PUMP_IPC_READER: spawned\n    6│PUMP_IPC_READER: spawned\n    7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n   26│DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n  *27│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n   28│PUMP_IPC_READER: spawned\n   29│PUMP_IPC_READER: spawned\n   30│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 2918│DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920│PUMP_IPC_READER: spawned\n 2921│PUMP_IPC_READER: spawned\n 2922│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3468│PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469│PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3847│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849│PUMP_IPC_READER: spawned\n 3850│PUMP_IPC_READER: spawned\n 3851│BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n     │...\n 3878│LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880│PUMP_IPC_READER: spawned\n 3881│PUMP_IPC_READER: spawned\n 3882│WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n     │...\n 4008│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010│PUMP_IPC_READER: spawned\n 4011│PUMP_IPC_READER: spawned\n 4012│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 4404│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406│PUMP_IPC_READER: spawned\n 4407│PUMP_IPC_READER: spawned\n 4408│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 6111│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=23296 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n*6112│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6113│PUMP_IPC_READER: spawned\n 6114│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=44224 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n 6115│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=42340 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n     │...\n 6172│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*6173│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6174│PUMP_IPC_READER: spawned\n 6175│PUMP_IPC_READER: spawned\n 6176│RCA_BOUNDED_WAIT_BEGIN:pid=82444 child_pid=49752 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n     │...\n 6484│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 17248) — online at bind\n*6485│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6486│PUMP_IPC_READER: spawned\n 6487│PUMP_IPC_READER: spawned\n 6488│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 6946│RCA_CONN_CLOSE: conn_id=7 elapsed_us=220977\n*6947│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6948│RCA_CONN_OPEN: conn_id=8 elapsed_us=523369\n 6949│RCA_CONN_OPEN: conn_id=9 elapsed_us=523396\n 6950│PUMP_IPC_READER: spawned\n     │...\n 8645│RCA_BOUNDED_WAIT_END:pid=82604 child_pid=51144 label=\"arbitrary_command\" elapsed_ms=81 outcome=exited status_code=Some(0)\n*8646│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 8647│RCA_CONN_OPEN: conn_id=273 elapsed_us=312923438\n 8648│RCA_CONN_OPEN: conn_id=274 elapsed_us=312923462\n 8649│PUMP_IPC_READER: spawned\n### daemon.stderr.log\n    3│BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n   *4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n    5│PUMP_IPC_READER: spawned\n    6│PUMP_IPC_READER: spawned\n    7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n   26│DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n  *27│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n   28│PUMP_IPC_READER: spawned\n   29│PUMP_IPC_READER: spawned\n   30│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 2918│DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920│PUMP_IPC_READER: spawned\n 2921│PUMP_IPC_READER: spawned\n 2922│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3468│PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469│PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3847│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849│PUMP_IPC_READER: spawned\n 3850│PUMP_IPC_READER: spawned\n 3851│BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n     │...\n 3878│LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880│PUMP_IPC_READER: spawned\n 3881│PUMP_IPC_READER: spawned\n 3882│WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n     │...\n 4008│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010│PUMP_IPC_READER: spawned\n 4011│PUMP_IPC_READER: spawned\n 4012│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 4404│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406│PUMP_IPC_READER: spawned\n 4407│PUMP_IPC_READER: spawned\n 4408│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 6111│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=23296 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n*6112│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6113│PUMP_IPC_READER: spawned\n 6114│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=44224 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n 6115│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=42340 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n     │...\n 6172│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*6173│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6174│PUMP_IPC_READER: spawned\n 6175│PUMP_IPC_READER: spawned\n 6176│RCA_BOUNDED_WAIT_BEGIN:pid=82444 child_pid=49752 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n     │...\n 6484│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 17248) — online at bind\n*6485│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6486│PUMP_IPC_READER: spawned\n 6487│PUMP_IPC_READER: spawned\n 6488│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n\n## rca-capture-20260709-215646/\n### daemon.stderr.log\n    3│BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n   *4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n    5│PUMP_IPC_READER: spawned\n    6│PUMP_IPC_READER: spawned\n    7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n   26│DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n  *27│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n   28│PUMP_IPC_READER: spawned\n   29│PUMP_IPC_READER: spawned\n   30│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 2918│DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920│PUMP_IPC_READER: spawned\n 2921│PUMP_IPC_READER: spawned\n 2922│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3468│PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469│PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3847│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849│PUMP_IPC_READER: spawned\n 3850│PUMP_IPC_READER: spawned\n 3851│BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n     │...\n 3878│LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880│PUMP_IPC_READER: spawned\n 3881│PUMP_IPC_READER: spawned\n 3882│WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n     │...\n 4008│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010│PUMP_IPC_READER: spawned\n 4011│PUMP_IPC_READER: spawned\n 4012│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 4404│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406│PUMP_IPC_READER: spawned\n 4407│PUMP_IPC_READER: spawned\n 4408│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 6111│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=23296 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n*6112│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6113│PUMP_IPC_READER: spawned\n 6114│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=44224 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n 6115│RCA_BOUNDED_WAIT_BEGIN:pid=64996 child_pid=42340 label=\"psyche_resume\" elapsed_ms=0 outcome=waiting\n     │...\n 6172│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*6173│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 6174│PUMP_IPC_READER: spawned\n 6175│PUMP_IPC_READER: spawned\n 6176│RCA_BOUNDED_WAIT_BEGIN:pid=82444 child_pid=49752 label=\"arbitrary_command\" elapsed_ms=0 outcome=waiting\n### daemon.stderr.pre.log\n    3│BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]\n   *4│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n    5│PUMP_IPC_READER: spawned\n    6│PUMP_IPC_READER: spawned\n    7│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n   26│DAEMON_RESTART_RESUME:todlando: resuming session c86c5100-c27b-41ff-a2c0-3f42102676ef under claude-spt:ccs (pid 59756) — online at bind\n  *27│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n   28│PUMP_IPC_READER: spawned\n   29│PUMP_IPC_READER: spawned\n   30│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 2918│DAEMON_RESTART_RESUME:todlando: resuming session 812e5b03-e915-4e2e-a1ee-661d33165f74 under claude-spt:ccs (pid 74956) — online at bind\n*2919│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 2920│PUMP_IPC_READER: spawned\n 2921│PUMP_IPC_READER: spawned\n 2922│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3468│PAIR_MEET_UP:BIGNET step=59454998 id=4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083 addr=EndpointAddr { id: PublicKey(4423535eb469abc19cdfd7e515d118950bdf82489f47c32572aef7a6ef869083), addrs: {Ip(100.68.35.65:61789), Ip(192.168.1.81:61789)} }\n*3469│PAIR_MEET_UP:SPT_DEV step=59454998 id=08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4 addr=EndpointAddr { id: PublicKey(08841726a06cd7a44afb94a03c5e40b9e27e815302eb5a46dbf2192830af28c4), addrs: {Ip(100.68.35.65:61803), Ip(192.168.1.81:61803)} }\n 3470│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n 3471│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n 3472│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n     │...\n 3847│BRAIN_PROMOTED: candidate v56 signalled ready (generation 1) — swap accepted\n*3848│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3849│PUMP_IPC_READER: spawned\n 3850│PUMP_IPC_READER: spawned\n 3851│BRAIN_SUBSCRIBER_STALL_EVICT:6 — controller writer blocked > 15000ms on a suspended/black-holed brain conn; detached, driven_by released [REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]\n     │...\n 3878│LIVENESS_RECONCILE_OFFLINE:lia: no live broker session (dead harness)\n*3879│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 3880│PUMP_IPC_READER: spawned\n 3881│PUMP_IPC_READER: spawned\n 3882│WAKE_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 55204) — online at bind\n     │...\n 4008│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 43892) — online at bind\n*4009│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4010│PUMP_IPC_READER: spawned\n 4011│PUMP_IPC_READER: spawned\n 4012│PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\n     │...\n 4404│DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 71676) — online at bind\n*4405│BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\n 4406│PUMP_IPC_READER: spawned\n 4407│PUMP_IPC_READER: spawned\n 4408│NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\n\n## tracked/agents/\n\n### chert/\n#### live-context.md\n*1│<!-- spt:source=llm spt:routed_at_ms=1783601062643 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:373469 -->\n 2│Agent identity: chert @ HFENDULEAM (spt-core/), operating with bypassPermissions in worktree `.worktrees/spec-pilot`.\n 3│Session ended mid-flow (no signoff) after landing on a clean status report; last action was a `/reload-plugins` local command (7 plugins, 40 agents, 20 hooks reloaded), not a task action.\n 4│Known live agents in this repo per SessionStart pick: doyle, deployah, todlando.\n\n### deployah/\n#### live-context.md\n*1│<!-- spt:source=llm spt:routed_at_ms=1783982315177 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:599354 -->\n 2│deployah signed off cleanly this session via /sptc:signoff — no new habits or corrections to record. Perch down, `/sptc:ready`/`/sptc:live` brings back.\n\n### doyle/\n#### live-context.md\n*1│<!-- spt:source=llm spt:routed_at_ms=1784026085169 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:615136 -->\n 2│Session used CAVEMAN MODE (full) per hook config — terse fragment style, no filler, code/commits normal. Doyle acting in gater/owner design-grilling capacity, working solo through a sequential Q&A ruling series with the operator (pattern: doyle proposes options with recommendation, operator rules, doyle proceeds to next open question). No commits, no gate runs, no builds this session — pure architecture-decision capture, consistent with doyle's role boundary (gates/owns, doesn't build).","linesTruncated":true,"meta":{"limits":{"columnTruncated":{"maxColumn":512}}}},"isError":false,"timestamp":1784069316426}}
{"type":"message","id":"51df5ef3","parentId":"cdc4527f","timestamp":"2026-07-14T22:49:32.520Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Analyzing discrepancy in last_seen timestamps**\n\n**Verifying timestamp synchronization and endpoint freshness**\n\n**Noting randomization of meet endpoints**"},{"type":"thinking","thinking":"**Analyzing peer address mismatch causes**\n\n**Evaluating relay-only address key mismatches**\n\n**Cataloging peer address entry types**"},{"type":"thinking","thinking":"**Diagnosing network-wide relay certificate or discovery outage**\n\n**Evaluating relay and firewall impact on connectivity**\n\n**Considering fleet-wide inbound firewall blocking**"},{"type":"thinking","thinking":"**Diagnosing Windows local transport issue**\n\n**Formulating network diagnostics predictions**"},{"type":"toolCall","id":"call_uWXFFUfYgCqS4i8Yk8EGMHAh|fc_050f56f290a937ae016a56bcf2c2008196a9752b888207de35","name":"irc","arguments":{"i":"Sending isolation timeline","op":"send","to":"Main","message":"HF log/state RCA: direct admitted registry feed last-heard timestamps identity/registry/heard.meta: GRAVITY c893...=2026-07-14 05:51:26.121Z, EN current ecb39...=05:59:54.517Z; other peers 2026-07-13 22:43:34–22:44:14Z. Config eviction TTL 300s + 30s tick (daemon.json lines8-10; config.rs 44-51; pump/registry.rs 133-147), so remote endpoint rows predictably evicted ~05:56:30 and ~06:05:00Z, explaining endpoint list local-only; current registry JSON has only HF node rows. Current pump heartbeat 22:43:53Z proves loop alive, not connectivity. Current logs immediately after BRAIN_NET_CONSUMERS_UP fail EN current+old, KITSUBITO, aea keys with submit-dial 10s timeout; historical Jul9 capture same recurring failures and line78 old EN 'No addressing information available'. No auth/seed-proof/signature/ALPN errors found. `subnet status --json` empty `nodes:[]` is by design unless `--nodes` (cli.rs 7328-35), not reachability evidence. Bare counts union durable roster+stale registry (6713-6765). `--nodes` runs 2.5s per-node dial+serve probes and predicts online:false. Strong candidate is host-local trusted QUIC data-plane failure pre-/during connect, shared Windows/iroh path; full PAIR_MEET_UP only proves separate ephemeral rendezvous endpoints bind/advertise. Clock falsified. Firewall less likely (prior EN installer rule + HF July8 rule reported), but no current packet/listener capture. Falsifier: UDP listener absent despite net_up => stale/closed NetHost; listener present + outbound/no replies => OS/firewall/relay; inbound QUIC then no proof frames => seed-proof protocol.","replyTo":null,"await":false,"from":null,"timeoutMs":null,"peek":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":26540,"output":2344,"cacheRead":242176,"cacheWrite":0,"totalTokens":271060,"reasoningTokens":1871,"cost":{"input":0.1327,"output":0.07032000000000001,"cacheRead":0.121088,"cacheWrite":0,"total":0.32410800000000006}},"stopReason":"toolUse","timestamp":1784069316469,"responseId":"resp_050f56f290a937ae016a56bcc49f9c8196bc30cd8a45c5ef59","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bcc647c8819689e956e3f1bc45ed","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrzRPAfk9HHih9kK8nI0OZdcLpWykpAaqLVnyKgSesQYqWNHYgo7m1PCE2ksAdbZqRKpr2Cn7VxvHca3votXuQCL7gpXYH2tKd33brkGjm-iFKi8t1EzrIqa-v-ZcXchHegWnl13Sg0eWDgESjtbZPFgJ6CponVaQxYGyajlTcF75YU3HJscTnGXnQ6IHHjZYMSE1D_QJHCSeMB81IqNgq7QG-FDdDN1R7y67J4E1Le6y1YrBEizdmYKGaUpZDNRWlqxS1vp-0ISa-BsgZsp-BPoMOH8kmTM5e5Lnp2EvfkjbEtIGrJYKyU8-eVXkTDm5kCMeeyXHWGkRy5pcMB2EkVLS0_aDp3Rfu-kNclDaaSofWtrHM_9KsiR2hrs-HnpFDnl71JFju0d_-u-B1WchpMVcVprqTCVBg-5awDdMQJUQ2jGBEwbRV6t79CDjTE_knP0gsDZ3gZsy-lwYmZxGhg7YXuYwV8blGJTqmUyLifJ8YGDA-8Hv1j8jJoRCs-3RYyNDKCz-IyiHWLv2Iq7o4HUR4x7MA0bnsjHRPMtD8cMVX5dcQruI7fSCfqU6QHjmTnmTySMfGIg2u3jgLVREgsnFOi5ooXD91gaVJFTkbVnuy4AG09Wu6Re1DVRJoXu1jie4e1FVDMfA7rALdM3nQ1qUtS3YppseXeKtunREpCyFUOzaT5-JFv2InJjWGA968kdKLK-7lDbsfVQM0rC88qDTyK8UP1PyRSRDSE_ZywZn_c6QoqzZnraSWMYDTfJxfknytWZWdJmREYWDCrVO6gZjYpMGbKsMwM43xO2tTU4f9_KaxOXg-sZOD3xiXcNVs9rxE8LKySuNuGsX0VueeasY-tSre7JLoFozG25jRLPsIkOqzdJUJisnf5I8termOaCgc3FCnUxScjQNsVrlOTe2wrQHqmeLNXbY9gpe6KCIbsXxQpL0ynnS8qOHNQi9wVRJSM2JuTrP-CgljDedKTl2dJPFEgkKY8600yVvTxql7QI8O8A-XLcu2UlPWdbthw61assDHRL--FWLyY0oayy8vakM6F6VlcagJ2sf1Vlbnv6ToUhTcynaAXntR_gwKL_5H56A-6PC8gfeo17hKFKFelU9GWuSRvHvUVnbOwVvmIPNIBLVCefNkPO8hcUpZ-vcZweAWVwUJGCGJFLO72aZOHTatC3HWOz2AsXhxUXgZx8cx561GX8Ii6TmOVxGW_PA4CAwzh66e7DZCMpewkGzhFujDC6lydbkHqPmEKuH6A4P6tHN2_ccktsY8AjhUoRBLe_X8BtN1_kclLvyf3hfnKDA8oyCoD7vxaIaUhQy8BRW3i84IRaxH17CwN8VaCR_CS_u_VC9DfBRwcH8Px3F2-nQgeGafMNJYN03IOc-V-64iPMRz7hYKNZAuL0Uu9jZ0QDawUsv_QzGVBXX2eWmhna9DATzs-eFRAjPTq3Q2bvD8Ga6KeEnUDPjwQfnAplSmmge7X3WxGiG6stkjazf1lrzVfieZlOAHcYScM-Ah4-sjOZOwbo9YMefxVvr_PhHY56icW6t5Hc0iGJT_lk8uofsTwTF_uoVJ4xL2_oKX3D0AOTkbnGEF8M7bxyFWTwLZJugDQ5hKa_oFApjTQkz5GKPU9VFMP8WPUXeCvQ539s1Z2ZdaNjw0q7w1jPEF4Qd746GiE8IRwvYhRRRbmEVjwXdG76AHQOGe8wfEhS6W6uUQwK2bns-7UfNCpQiu4PUOfV5BS1xblSyqs4Am0SOxTfmFuD7w-P30msABh-4Sms55W8rh1z6FixWzgQXvMa9n5PZ0sgK8Y_ElOpx83FR9lQLHiNoIpg6GH-jk1g0Z_FVuaVppLq_R1jL1P951HtOMjVR1sRVwXtL4mIN3K05PkfcACa7g3_H3ptVgUmEgYEvmycsqyKrIIE8CA5sGwDWjeY8wZVNbdTNq-pZFJP2wEl4cGA5jFr-g7FYCJAU1FpsXYydmsOYF7yBsfoudadm6W0_vaGs2_dI5tZy8kp9PhmGN6Dtu4uHHjmx02GWhzdYDvFQEJVAuNsZUx3zpAjo2dohcMXItmiAsa23FIAIhIkSgguYNHPohpV21-rFQWieV3lb1QuDQLuZNH36FbB59w8IqZdZ0tr3xDwFJKs7K0RY51B8SWM3ZpolJ19YwUy78Azjc0N8nLYLYNYwXeNjfLPHKsN2sdRN_ZtUzvvOLKQWmBS61yDwFWEn-jQu5sIKwsg1AEkKRn_Nvr8wmjCoYpbFQO9ln6hYBgPqESdj_pQgWQrmmz_CyvW_UbsHijFkd7-X-WntxxNglmMo4SglraSKKYv8WpTeSoC80ccrjSm0fPe9SswT2m5AQOD5D51qtNq98ht65K3SczK6--HtA_KrqAwhvDIpLculvQ7j7fdNs34MkTvZhWBZ1kYkm4pqE76kt0EXNgDf8Cez2WfTUNtToQSCOCi0u40bilAV_wLOUW5-oN4mDYQfy-44sRBAjSJPmv48-pURfgJL7wu_HvELYyPL1gfNUib0d5CcaejHB4M-JGmy7_-ScUgOW5dghDin0qW6NvhTrvOjxBlMiO2VWBHdieXdacaw5e_0Ws6fESxymjRdKAaCDOdMTCYizso0XbiSBCRr9uh_usf4S_IZSSXLdAOCfpF3NpkxF2qsx4xbGCshF7AAFM-JDsCWDPbQL7e_hfzkoQdLgVj13ygwJf8xgJiXJXi6XRnUgOMRy_rxLcRYi7qD8eGTt5JCG_lVISj4V8xVALk1iloBuGRqJUwyRI8IkNTGZN9ZpV6sSbaGIdekGXvXHkSvmS4RQCkJboi8ouCLkzGSADMe-tUWUIICNyGNb4PJKJ1EPdPuALp9ARsJHyCsQa4P0FuC45UvSBEzKy6eAoVqSteYV2cVCST6ihkik7jxdx42O1fW5E-LsQzos-gVY1B-p0zhueo3Jbs_7mvd_0-j5tcfeTCmVXHcTyPPq4n0wN9QPaxzHHKJaDWRFwWFBCL1kk5dRHRo4i9A-GHP456LqBb_N8c-wcKmzeIaI0hi9MtllAzJQsi0Zn9HSyvkeud9b-pVM89oS4eAdZ22XgHCMDxPXnLYhuFjgAcykrKOUWonDp8pA_fcmYfi-xI19glRT3Extsgckn9pK4wVeDxV9TR1P2kGoCIWwUxVGDPLP3UUTNz7ndx_F9Fph-MifAasRRhgK57Su7jr4eIFDsvjnsGjziCpIYBLyD4A4LEStGEW2iffCnO4xVxzC6JcUVWXABF2MlA3QXdqU9IfVs73OH4W9qEsidxnGScvWxArZW7l8SsgLtVG5tOjU4mL1o89rwzC6A0C4eVHkLjhMbRPu7d7rWhtq6kl88UKDq3DQKg_iIZa8zjJqoU_Yy-uJIN-lqzvre-buFfXi6tKWe0xfdZKHJevNe32YK2qPz6syXw2RHvGdqJQp5z06Bphl1T_NGOx5cRj2bYECc1YHB14pXwg0Z59asjnzE-SlAfn5LheFH0gNlaIiLWbdV24t2kACEddGDHLNoM9CxbBGGZRc7iGu7KFPGp82STS8GvZuc6X3EwXr7o0-gaSgmxHiQ9Cn4a72d97-WOnXR8GEZdwdw4GXqV50nHzNZF6jQHERcYIw==","summary":[{"type":"summary_text","text":"**Analyzing discrepancy in last_seen timestamps**"},{"type":"summary_text","text":"**Verifying timestamp synchronization and endpoint freshness**"},{"type":"summary_text","text":"**Noting randomization of meet endpoints**"}]},{"id":"rs_050f56f290a937ae016a56bcd19420819693c8164aca201b6e","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrzdAdMdWUdr7uQ5dtl1D7qeHExzexzJaTKMFbV2xINOCxWdgVvncCh3WnjYWKB5VMK_2fcVVTsfZVDhFmUlnpA5OhC3admMyDg-d9smnbXzFZrJJxlp33ZkEqlzBQmRp1nA3oSbNw7B6t6SlggWG0uCY_gqLDnR10xpOH4g6pm-aR-sqoD_TYMY-YBQXXKwkL5DvZ-4SOwjuJHkU8UqTplBNIg4mRO07dlHCPp8W2ey5IMBn23FpsV_3G2poIEm10S9gjGzuElPotalv1qPY1ku9npmIMiHmSpLsc14k9PdpnZK39vsVeqUfIdNdNLimFGb4_bNG54n07NdCweZTw_Y4v9ElzqSYeZutV-c7L3AezrbUt4y7xy9b_m5BFJo4yigTosNoPcImD0kQX3WRMVyrfo_wdobAlqEoukKEqzsKUuhQLeyWxHbcNAk_Y0QuWRfaQNTRYPzrMUcQXeCQRdfoUctew-Nw0jL3ImXSK4tt8QiDypxFY0qcIz0iJtBu2scPJgs2t-YrN2ADE4UADmUofldz2Wo99aXg2KT0iSYn61QTEghaGYXVBZ19Q-bw2KoPNjci-n1qYVNiVfRfhi4iH4s92wurGnkYRsZ0fruTe5VZGHliTZHuds2p2p4iBGmg8NOHmOw9Bow95cn3iCTlJLQ7IitWNnwT7_b8DYBFEpzzF_a0_KmDSgtAgPYGgi9nVcofUVRoJUohrxdpu7zXt-noIm7UvTVRvB1YhoUYDZ0XNtJk3nJ0sM8pwk6IkG_6mhrvj2wAORV_vNJRS1BLCBgUXllpaLwVOKRzIMRqPKYAeYaJgBTwwBefDLmhde83wE-h5DWCs-JEMFJE2GMpJHALV-tQJnEgzSDIjlwwLOzwiSR71xi09lQzZqQ3joQlmvZHnG4mwhH5--zw5wpGrq3NBjenkTqRbYL6PwDLhysdfC3GXwx5QLuCj1sOD8UQ-C_YziJAYMexzKBehEunhC_9kTBytamCHAtiYdlIk3-stCNxHEyspIb_UhbmTpjPe4ymLm_-AcUn4L4pWo5cr88YFUYv8vOdwC2EB0pBVnVJ2r0JkK36f_PHirq7ArxAKWgkP-3EQ7vzCS0UPq9xR1wtitM_PQy2KuHwuCvvgUjGJ7-WyoQ7giv7lucu2_aYRN6XPC1yVWIlqXMM2rNAaHTdjLFSm_lChlPk_11T4nZTwrWOaZ2JD4ycfas6UnWboheF4Pm2rh-2rWISGgyfkXUPu64Ss9ApntnfbOSwq2WTmg2_LfTEzHjUjmIDokDXR0VhH2yfk0-nSMgWhePA1rbEaMZFTqt5d_y_2QyH_1VQChvEskFs8Hr6IRZG8HPMPmx1AAAajcxErQO1mtriEhmotlYB2B240hbw_kSKBVHRIO7jLXxmsM0ArFp6OGMn1-t1HI1ofoyfAv8Z5biWqojhFivlpvyZYZbjXqxgUGq0EdSu-oIMrrbp7DxZ9bL-M0YZ_VwLcG8CmoSKDEjBTBgy_EP0soX2lE5j6dqVbiiKqWUkFWKSToxsWuvQBRITeGKZ5xNvWYH0kOvTilqZlj1_erIXVq6wlP5ztdwxYqFEOG7DWyTmRfuL9K1c-feELst9mnUfrFfSZG_2BlNJFgHlrLyLv84qBU_EX5eCiuV4x0X7b2dpP5tnrp6gMjqvqvqtp3NdH5LZgjJyzh-6ipzPsCLIhC-QtZbDN6SdxgiN5taRMdsvW1TkLEg9fHIVPpjP43CvD_Rk4SIeS1CkbsPWI3tyDimq1gysxwIf1096N7ERJkJ4EMoX8Dp9ks9N9Ths2CDxVw9SSYD5DHt9QgeXgbu4KMRNIevpzpxqRsu_LBbl3rzBIhL8tPKNwRr2gMz_yaVMCkPOLUryczEyU5qg1yZnP0ds9ZnehjS7QwMo8cYvcS8pLAu4xxKZqGD1FPO276zAU4dgSPXEri5fhQ9OQod1i2s8NufO7YcT6vazY60RvpmL1KZHjNtQT-ICrGBI7EPxNvInTa12nFuqxoYMSNrREfvGx1nHxDI6Qbx20UzL2nPTdPfELEw-1gLfrryhZjFAHKSeMefeav7g6ptwfkQ9RDdB5v1ozF_uTSW-wVLI0igXcZV9fZ_OIPU8xnzHBOG5sMzrcIocdWknieRYbpehyENf0ziAbUwAi2uzKIsL3nuTbmEhCmZm6TEPD4DIgbM3K9vpoRhjDxnyK_tSEB7lfz4UPNPP6XgnwFIFii1HmD38dCJe0aokYRsmnNqRU3PBHyoRFbQnMux68UTSFEueplvJ3QIekLUeYUmIm6nDMxT6M7XaEQ510tBlgen100rWmKZdoNbnqYXqPsXQTIvDQngaF7c_ApOt5uo4kg7p-QT5DQMDZMcmkZFIwIwx0qm-KYmwEzxUx9vVnAg7waNVSmxzBS1SESIJX5NM5l6dMAeBakoyzO2ZxyHMgvRcNskP1HKdNNs2rCKzahMNMQq7BuU0V40v1Sl_MYF_RojVw9PDO6r-HAgppT_LkG-41frVYBG7ZL5LGEPpZnRwkD77ZFdZ2b9Wz818E-guHaoKq4GkKN6dFgMu8fCTh_A_ffNh9lgb_ITM17fiLsBsMP_EUKF4MngfLXjq8mHG0XZEUaRJteOx2rqHEO6uOvfC8R-jROt98GXnd12ZL6b4Hb06W_t9P8s_0xdoiYGHvaNZgA4U3M-QJQp2g6-izbpfBXITDPsJt5ccnCtdcgrcNP9arLIsee4FDqy1OgdMVXl3_gVgVokSJMRxgDrQ91XYzcskRnqFsbat-cNzUruxJoLlcT52uAppEHiM8rDZhPYENm1__meQ9rJyD1sQ4w65jnpL59rCDv2rRUdwyZHHQAmf8HS0oCaznPMdeg6Fj7o-ajKqw0sm91qRi8lria7rppfz_IdpMWETfmiqO0ArpoxduCjVbyJ40O0rGzUTQeIQ6dZF78T3x3Sn3Mg10XcPpkKil7k74VAAowNZewEWjFQau5vHHCdWWOXl9mXxbRWT3UEagBKslxSvERCxSBRfwXpkiND_vmt8h59vyHyafUVikvIhZwEBJ2aeF7UnEnytfzt0hSkR48dZhPDb0raGIy4RuD48Ql9NP1B6xWGrPDV9CY6NhkCm_5f97aN2ytFujaIz0ig9UkBqducZl7x59bFHVTrHQsgWh24jypFiVwak7i5etpHAKKUiGz7dNrU6AZAx7qRTqHYnjntCr7tE9nlicAOCp-S71qlmbOqCdDQ8FQ3OVJbmIAL8S9jr7mk9FpK2KJuT-_rhNx0KI7XtFDhtEQBQ17Esqv0J0pOHinO9M1zCdRTRpj-j-WoTklLeCyxpzesfp8SxiGLyxdvaXkKQOZwqOSphCXTxShRvQ6UQbEyFMqs3YIjC2c-mBkgi_bhoSPw-4CwsZnGFXx5Z42l-UaeKlYH4li6y_CTyHM8cx3zxvG-VJdZPunoHDUSCQd1KEX3dtYVkt_BrW4x18zHJttVBIf7LWODoQAsbKS8ZXDEXMKDZJWACRoSCphBvwAmFewaiInUBz5-whuBCXHwPo3Ajap6K4ObOHUVJy6VbT5jyz_sm9i3xoyepPuu5_gbJAiLb48t5_1w03_5f7y8zFi2Vwb3pzanWPV1xK1UM9GVFPiO_dWvggJMVkhc4_r4S3mLYXtNlFzi7PouwERy2LjT0Pju8k24j8R7sQJqKW-QPyKHDQD6OYvJmiCgg2rvhNtP6EIcZOufTE-OFP8RXDP1cXd-uk6-8w==","summary":[{"type":"summary_text","text":"**Analyzing peer address mismatch causes**"},{"type":"summary_text","text":"**Evaluating relay-only address key mismatches**"},{"type":"summary_text","text":"**Cataloging peer address entry types**"}]},{"id":"rs_050f56f290a937ae016a56bcddb2b081969a9f331f51238644","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrzpaXnMzUFYezROV9Slsh8utkDHFY0bqvFBPid6AOs-2hcd0jBTR7fDHuK5kypD6uPGUACmndjH_QWL9NQk5lLokoLigCJs5H_am3aHdOMrlSlfwlmsm3ymYLKqI9RXB6e-W-gHOzTCY6rbUmmsRoiCnC4deRuDXxsR27GrshCD1VJnNGjuhI3xY-Ur3vHOZy497ZhiVtsUGLNXNJX5aWSi75N3Kn3N5ZRazx0mOKixi5yJ6AEpmlQLwx4inRrzWAm-0CdMwZdE9P-V3_pzY7snk8u8uOj88P_ATdqNUWmd1WZBX_rVF57AX01XWhnD7sD3thB2K6POtDi23vVR7pRY9P4QM15bZfCeX3Nr6rTxY24KUQptogOVIqKykVSnidoiuIzp38-Z5PIqo-isZfh0B-qq4fmBcNha95IYqfb94tq4uQ_k6gZY6nxpCLM9A0_0sVu3SMrFvELk_nC0GK-1bkK11a4Pyt062V7qrvf5WRvL7NBfRFaAIf7hCV5o4dJNrjASgwSwwSSdS2f4rU8h4jraUJHlU0xIsBY-JOtfUcbyAEsVwopQL5F1I4COC12zDrIh_5X_2_wblbGMR6UZ90bw_IvhDq0eNqnEkavXmU_uiImHJzZrX6rbuLrOn1vrVsQa4O5fsMsPbatLTuLtqwGgvx5QKdaz2udV1ipbGu_DxhGHERhh1blDS1MyhiDvkr1UzYnKCNkF0UrlBYoxLy0vFT3OUk7w5t1x9sN226Tug1fHquB8YTPr_JJAKJ0fYMGFdJYkNKwvIjszTxvTwHEUYUzz1Ds0ApCC4WFnCEGqageio4mEIaOOhh8zDwqSV9l_sJ5SbsFdjVA8vMupZJNkC5b1pa3XogUvcGF5IuNQ3wstHD9jERlfRV7GTAviEfr6M6meTjqe9Dqs6Dhz8IHiMG8I3GrrnbLa26Oq7OLM-uF6oKom9t860kOAmlQsifKqjzvN8rS8uyqEmYTa6rcHFjPeYmHxqwjzpO35_XF3454oEuFKdDc4Mh4zKrFMo_pkRsGa0a6NUK7NgQEJYJabnd6DXNFuCBOrWrK5FiuCgIxgCmIirPUdOMQ_jC4yT5vBMUcMd6UIumSHt6bVZJxvqETGAbGx-lxB4u4c9w5jmKMzgwKzrmwQ483RCAO70ncUAn6xK0I2H2JbC5w29OnqJ0q6fBUHorBfllmf0wfUiJyn0_tL4c_Z9QeXCpOHdL427U602WCqHPf9GYOwcKTj1n6uPligkBfRLP5xXo045ieiFx1T093CtQk4sOyo57vfHPd99-h6dSlI3bnpg07nuh2NmxhK-qXZsJ36EprhJwDvZcu39jIs6hhr43BTvOdgOYHvGMztvIoS4mhC21BePLOQEyLFmNLJISOMaCKipj8Itp04Sn7aijUKWxPjAx80XptPOPfTQOsMRbw9LlclzfvouJXeVI6icb70Thk2ctiKIeNN3nky2LYvaqIY6_tmZJqFb4ISjRszPXLqFR56Ys_BgYGdBmy8o3niW2TsyjoTg_A5a0yWq3Fe3HAJi2SwgaSrX67BJCLnI4-Nv_WLRZjirkBYLO1IDKxB9q9tZuaxqZAaihSEh19_sTUx7DwNrC3V0CsCuqLobcz6bMQiadzc5w4PChyfulW_d9Qn8FVi411SIbsX5rupEwxjYzpZaBx--23odRtN1llmCqXZ1alYxcfK1crdIrJaPwQ-gTUj6y5PxQcXpn8GXsG-3c22Z4Ps_vwyIe8hzfPNPdTWx3I7-Q5bq6pfyuKWb2qwvbDPBqTdwHWF6QjI8JBsg9yBPNd-jbojzHcCngdJYvBJr9FPYr5hFffDCJ9tXs4QCZbUTNGbO3J-xvl1lMKF0v1BGpCQ1vpSO5Nlc2dwsWthOHwAbvE_OHU-7AvlFHx0YXL8m2oRpJedXYdgP_9mBVPBeH9zajOFCQCgnyRSOlWAavhL6J_i42Ue_xp7pImLiPAhk-4cTMGwcaatwHRpGbVtH7WpC4hLRlRSZrS6jF1rXW8NKFkw6dfJxG-5b3tQD6jKo9u4537lEry01g4D9luwEOi7ru5jvNmQeTR3l2778H9DV7GDUHE3JdbimPjCf3EaSqmvxXCoy9r5Eamfb5-vk77JOpnRKxR0_zYitnbFtPUOHpRYTBjICrwgFHhJ7ubNxTssLnvkRWNLS90sMrJsGNLmbeP__8UVZfoeyhqxGuVlpKAMCD5dGBa0ewzZaogT9c0IDHDyEUwm9bwK5KfxV8SnHNqas2XgEH3g6VPWE4sH43xxXVQHHs5pz2vJ7gzwBKF9_Vh8cZokWcWV0buTtGCFpEO4HOWkyDnF_O8EH4WVaeEPo57nPCGvpPsGm9h1IRgT8DIe9T-kDcGsJ3Zt5G9l5gMoKQQo6e98XIAzt-0HylN4hzT0_1EQyzShyTwWmMdaHtKU_K4pnfo_a2QqZ4Q3tpPN9kUp_LqrBLGDwQ9tXj5XC3SBr2Vc_Nz2BaiprZg-BbKD-YT_Wh5mCD0PjlTV6RB54mHu_N-lPlL5ZUxUVeaTVodNUx_bEIGnpvTCO2iliFY0FsQc9O4oOGNTWw5iNh7ZZQP3-aMVhM-hL1nm02A5nPHBopxi7T00azAdVT4HXygIF5GC6vyU0v0aDIMP-_TQtbtVFcwvu1Qs8CUWKa8PLE8h2mz4bDCygU948_HDS-JhJG5CqZL8WJkd6UkGO3GAvyFftYy29naQTkI_AqkLP--EcJ7VJgpCG-psb74uUBFWyLNj3pJLTN4c8EEo9ewWB3bax9z4BHne-iJuaGCkhkDcLo8iA8b8WovZfqNcVceDKL59mRW6Q6w4hFhVkwi_CvheljAGw7SS-1erlsIT11cZ66O4-mcJ6U4qnyA8_yUhuI6WZWuOk-4ZVu3XkhoUo-1kuWd7BFjm4DQTcL3rlNsc8aePJ8j2AmxI6dsO62Ey2eyY22PZEDrzkkdpxUG-ss42qVnLrmZc4gTXVuFLpGOQs9cXzYiky3azAl3QPV06HWfSn-lsnTpUPkbkt_Ziuuix_6571YxSOgppAmUyshXo5km3sbP_IIcsbnao50-GYXKa0oC-qjQxiSFk8r4DXmFGAaZ2LA3MLELS_12xa88uS2G4yFB6po-SeQHIiZfIRDNadcc8PXecYIXBI_8bCae6_r0xn5be422TlSuY9LI0l2C1IJyN-73yQUiPg4h740ADL9ri6b6VNM3e0wHqkLzGJadUjKjH95fQNZvjxnV7NMYtOdEfvOtpJE07rESyKCLDL0reOTv5dJtqEfiEyWYrsvJO9EOBhQ0s2Hu4EN-A285aWdfn2ucSS832hq_SWr2kqC7Ogu_Da5GtWYwl-5jBxUTwzBODwiKy4kHHKjtcP28G6MaBs33u1BWuglGySnwRNR9GHp10jjskytpKQbCAF8pj96W4ls9gKdWCcK1qWqwoVy890J4ngTLQ8EcDijha4UC3ZfjLNBALhFKFBU78nHsYTYhgNXSDhhWYAwiPTtzPJBRTRGEnCgS1RTZrDA8h6TYEyHD9dBZgNSueJbequ-yZoGj7tMZh30imw3z4mdgBzICBi-xFK__ZFIa0aS0DrqvlLR1-GhYEPGp1U8NtQXNQ5D53YdzkRcvyELiYfk1DLuZaRbDMI7Guym49jsA8vJc_nMVNeO11yxW9XhZwcUxdTfBDFQiZPyrFqN3YB6OeB55Xjo4b8f8bu9c2QJN4KsebWvre218lYp-GhBCiky6mo_SyjOvBAKfm-P9UmBQLuUVxazQ0llNyXJwtm1xP-mQLlYdAI_6Hx69ikLbIAzcoddHWE4_P_znRFfrM9Bhp2EuwNiRFtcy4S5E6vEWRG4rP4DwzdhEzM_UfxYdzZDTvGzpQKlyscu0zIw9IR4tnn1KNAR7Rh3FGS9ugJ2OMuh3KqUf0kShqlE7oCAcT2-e5QwbtSCK0dQy9K2EoA-C4f1oDAUWYuiRBM5IICpoSm5asn96rKbBiAePrpWfCVFBqRA==","summary":[{"type":"summary_text","text":"**Diagnosing network-wide relay certificate or discovery outage**"},{"type":"summary_text","text":"**Evaluating relay and firewall impact on connectivity**"},{"type":"summary_text","text":"**Considering fleet-wide inbound firewall blocking**"}]},{"id":"rs_050f56f290a937ae016a56bce9609881969445dd1c63d839f8","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVrzybZQkhUcrTybp6LsuOGAgYXgApgDt44LjQ_AqZWNYHnGaWd4YCdflF4NX-UwK_d8-jsygXWpK8z8UF6L8qlN0n_vTaqq1rxwHrjsQQKX97-e1VNtupa6vSgLNn9J8GLFg07gPgRTE9CfDwEvAy_DbrdzlCsWMJboc4iYY0HqJvnV6h0EJsmaY4JScvXdNiV3HSLO0Niu8ptCHISfFk58lYqsY7w33_T2oa47Vh7iN9y2eBLgujoXWGLOxjxeJO-Mu6yWLiEQvN3fAL6tSQlY2ClpZ9lf4knoviyTK1CywhQzK5-FpxJeipwqJuloSb8PM7PdZHmEa-3KpP2dZrBBvNiUhX2IHmYULLz39tncSjbNnAtUpiBJ7g42Xa4aXWQSaoc4cPMQmgNOeaFgM2NTp18y2W75-FVSI9FSC3fVsJ_LTRCbbI58tpvi-CKfv7yYSrWqn-QEfv6vMs9bP5slOpqe8C2FtG2-uFpa-fWAC7SJI2NGZp4AS63Tbc9pvI4cJPAgQrdnwWRZcfQhDObZuSqwJJwylN_dJP6M2-uAF_xsB6ZiaAAYXvYnRZjCFecMJ93AhltNtryIPCjRILNRXJny8B4sPA8L8yPfbWCyWZDukhTd6bG1p8JwQHstLElV1GbFYGmDJBX8Qnpsr1IZGhf5Zl5OWxud45E0cGIWF_KdGBkGbsayFNyG56X8kwJzfyJu6o6jzyPb9gZe6ja7TeEV6GlVdMNIy9UEbT5oKkZK0ZNkyYjT-KvJllLM_s9GH0DZpmfYxpXNaXH7IHLu3nrZLDm8aw1pWwj6rsYhydDJupexnTfG252y6bpFJTBrrzRL522e8N-M4qzmwDbx_7NcPjCf6iJ5WQmRcZfNBZ_R75hzkAnNgTZJYPCyZqlhpMYyRuY6iX1YD_w926CuQTcgNsXMu_65zLGVOLvou_bgBN13Pm56O3apXJnyfPPpEL7AFm9T4afjjoUKtnD6cGSKgSNqUPAEBvp0AN0yWk8ZyA84uyOJ-KXk66aMb6gigmW_XBDm1W5UdMZa9xrwD2pEu6C494mh1EqfwqGGpznXCbnT3JgmI9rqiWxXpmM9pishr_WqqOuP7zruVYsmyeJmy7uZx_5GCiR6NIcZjpAgXRtpmmhpSokP3Y-SHtbWSgRu-sc0tjwpjEneGSdQgqxAjr9uJd7uLnB4r0oFYVt8TZkpiHUOVINL0irlEP-DNEJFGxj3cwLjwU-QjU3Ubi7EroKCKSe4MXABTfw2BmG2_A6rZr07x2nxHtsvmcEd-nQw8rAymraRznt1ExAg3EgHLvlShr06nV9oibmzYOcuIxOqRlQnEqEjhbQYUZTBsXvDd3suJppipqGgOlqe6Mhm8LaLJpJ5Wf0f-A8QUFm2FIyEyf5yQPlVDMS2f-bbWmIaW3EXibN46qU6DzF1-KD3uqpu8FdQxRLpDvnTkr4FYuBWUrv5fEHCjA-6DnBMVfkrZ8NU2i1FKaErLZ4RLprkLunkLOoe6Av3wo19P6xASNWMeu1TT5u02hkkvpSj7css5MJisEjmFRb6p6_AN4wTZW-OXWBQ2MghktGy2fMPayx85yprF8esIuHDCXhFGMioA9cDRJTUaeBN8VrMU8AFH_Bid6ZE4Myw1otif50AY9RoEnpflG9-QtYa7NBUl8aimeUsEeK6a3oXL3qr9vkC_TjasnV49M6BBayHYkZPQDHu7ULwYcu6Qto6y7Kf0SII0o8inan6DntXGiT78qubzWZ7QXBKiM-FCGX3nhLvTRDuO0sccHipUpq4M0GvS076DHrKcydQLjxidtkViHjFSJKz5u-509sSMtwjG5VFpoRjmcZPfadkefUqfPPRkLHFlgySOKjVco9l7dwAG51ZOGwaPFrG6LSk8gHVCOrS5W0ysNG1wvb9i8b6K7Ftad8PCrDdJncsxtoJoRM0nRjuJE7E7k1VSW7gKIoMXXW8xON8pVKvXhczkLlEihMhRg1zNm4KZ1a81H6H9dC4ilQ7iaZkpFnwgVwp9rutpgqL5IrRiYNi9PHeCGXakFM5jEXpH8wwlC9eKE_95uCxcChzwRD-zK5nOV_PUjA54iIxfpZdDAdrFPwQqG58niJmlDNHErXb5v7BI5LBAoHnWa88gJdSKyTgUb0aQ-Fv6tFUdF59gJ-yBj0UjsBXyPHtIQj6aJLoMd8nRatYss75L6wfMDdi6vwO9CyPDW-o-yGCd6ys7q-Gmx_-1qnM6ddZqqocc8Aw2NzzaWBgHAag9gZsxYVjXM3C30wgAcm99BETgQecv353OiXNKkydZOE4TcjCqnYc-Kl04JekKzKLvb-HbTEHBzg_Ei0S0Ibzce1EWYvB_7KZZXe4vmqYNO2l_89AkSFDfBmcJRz2qA9XOle8009FCVIKhsgoO6zRw_ymlpqD0x2BoxGQ7zkiSlg-16ihDlWwWK9x-jBxlJFr6FGJeY_69YYag6G-Zzz8V4_E2d7zCAlDdnIeVPsqq4nOWyfJsZwrD4-HiRew8GQ0q-cvu2u0z75KO58rZBn6rGvwZkXB1hBVB09S23bIqZ3hv7bBFYqSVL1tVyxwfXjVUxmy1y8SYNO7pNmoGv9DReNNbsEhG4858BlHGA90JRZ3UoFo-bfSbr0T6iisHY2TPXlG8TiIQJsQrNz_oQP4_rDNl4NEby0Hc-EN2UU1OknIBOrPNvhNhPh-4iIbuYnn0ysDrKy9ctKLN-V6SNLUT9zyxfG81T3CZ3o5pP_PljtEIMtfSvFE_LwXCgZORYHPs3-e4lOio_nG6lBuvAXuH35-uOcDiOfNaETuS3Hl2yggQhXctuhCtRBicIbgwCeFfON7OeltHKAux2_nae1pVu_gMX3p0DFXo_S91PjqwuCu4R9uFnLAQFVbbByDykqF36w==","summary":[{"type":"summary_text","text":"**Diagnosing Windows local transport issue**"},{"type":"summary_text","text":"**Formulating network diagnostics predictions**"}]},{"id":"fc_050f56f290a937ae016a56bcf2c2008196a9752b888207de35","type":"function_call","status":"completed","arguments":"{\"i\":\"Sending isolation timeline\",\"op\":\"send\",\"to\":\"Main\",\"message\":\"HF log/state RCA: direct admitted registry feed last-heard timestamps identity/registry/heard.meta: GRAVITY c893...=2026-07-14 05:51:26.121Z, EN current ecb39...=05:59:54.517Z; other peers 2026-07-13 22:43:34–22:44:14Z. Config eviction TTL 300s + 30s tick (daemon.json lines8-10; config.rs 44-51; pump/registry.rs 133-147), so remote endpoint rows predictably evicted ~05:56:30 and ~06:05:00Z, explaining endpoint list local-only; current registry JSON has only HF node rows. Current pump heartbeat 22:43:53Z proves loop alive, not connectivity. Current logs immediately after BRAIN_NET_CONSUMERS_UP fail EN current+old, KITSUBITO, aea keys with submit-dial 10s timeout; historical Jul9 capture same recurring failures and line78 old EN 'No addressing information available'. No auth/seed-proof/signature/ALPN errors found. `subnet status --json` empty `nodes:[]` is by design unless `--nodes` (cli.rs 7328-35), not reachability evidence. Bare counts union durable roster+stale registry (6713-6765). `--nodes` runs 2.5s per-node dial+serve probes and predicts online:false. Strong candidate is host-local trusted QUIC data-plane failure pre-/during connect, shared Windows/iroh path; full PAIR_MEET_UP only proves separate ephemeral rendezvous endpoints bind/advertise. Clock falsified. Firewall less likely (prior EN installer rule + HF July8 rule reported), but no current packet/listener capture. Falsifier: UDP listener absent despite net_up => stale/closed NetHost; listener present + outbound/no replies => OS/firewall/relay; inbound QUIC then no proof frames => seed-proof protocol.\",\"replyTo\":null,\"await\":false,\"from\":null,\"timeoutMs\":null,\"peek\":null}","call_id":"call_uWXFFUfYgCqS4i8Yk8EGMHAh","name":"irc"}]},"duration":56016.244800031185,"ttft":1835.0925999879837,"contextSnapshot":{"promptTokens":268716,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_uWXFFUfYgCqS4i8Yk8EGMHAh|fc_050f56f290a937ae016a56bcf2c2008196a9752b888207de35","toolName":"irc","startedAt":"2026-07-14T22:49:32.520Z","intent":"Sending isolation timeline"},"id":"cd775597","parentId":"51df5ef3","timestamp":"2026-07-14T22:49:32.520Z"}
{"type":"message","id":"9412964e","parentId":"cd775597","timestamp":"2026-07-14T22:49:32.521Z","message":{"role":"toolResult","toolCallId":"call_uWXFFUfYgCqS4i8Yk8EGMHAh|fc_050f56f290a937ae016a56bcf2c2008196a9752b888207de35","toolName":"irc","content":[{"type":"text","text":"Delivered to 1 peer(s):\n- Main: injected"}],"details":{"op":"send","from":"IsolationLogRCA","to":"Main","receipts":[{"to":"Main","outcome":"injected"}]},"isError":false,"timestamp":1784069372520}}
{"type":"custom_message","customType":"irc:incoming","content":"<irc>\nIncoming IRC message from agent `IsolationCodeRCA`:\n\nCode cannot distinguish from current token: nethost.rs DialPlan::connect 537-558 does endpoint.connect THEN prove_membership; submit_dial 1119-1150 wraps the whole future in one 10s timeout and logs only `submit-dial exceeded...`. Explicit `seed-proof failed: peer is not a subnet member` would mean transport+proof exchange completed with denied/empty set. Generic 10s can be transport handshake blackhole OR seed-proof/open_bi/roster stream stall. Conn_count increments only after proof (`register_conn`), so remains 0 in both. Falsify via read-only packet capture: QUIC Initial with no peer Handshake=response => transport/listener/firewall; completed QUIC handshake then bidi-stream silence => proof/protocol. Compare exact subnet seeds/epochs; equality sharply lowers proof-denial. PAIR_MEET_UP is separate derived identity + SPT_PAIR_MEET_ALPN and fresh socket, not proof stable node-id SPT_NET_ALPN works. CHANGELOG 0.31 has no network change; 0.30.1/.2 only peer-pump timeout/concurrency.\n\nAn agent sent this while you were waiting or working. Any active interruptible wait was stopped early so you can read it now.\n\nIf a response is expected, reply with the `irc` tool (`op: \"send\"`, `to: \"IsolationCodeRCA\"`) — you may finish your current step first. Nobody replies on your behalf.\n</irc>","display":true,"details":{"id":"153001c0202e365a","from":"IsolationCodeRCA","message":"Code cannot distinguish from current token: nethost.rs DialPlan::connect 537-558 does endpoint.connect THEN prove_membership; submit_dial 1119-1150 wraps the whole future in one 10s timeout and logs only `submit-dial exceeded...`. Explicit `seed-proof failed: peer is not a subnet member` would mean transport+proof exchange completed with denied/empty set. Generic 10s can be transport handshake blackhole OR seed-proof/open_bi/roster stream stall. Conn_count increments only after proof (`register_conn`), so remains 0 in both. Falsify via read-only packet capture: QUIC Initial with no peer Handshake=response => transport/listener/firewall; completed QUIC handshake then bidi-stream silence => proof/protocol. Compare exact subnet seeds/epochs; equality sharply lowers proof-denial. PAIR_MEET_UP is separate derived identity + SPT_PAIR_MEET_ALPN and fresh socket, not proof stable node-id SPT_NET_ALPN works. CHANGELOG 0.31 has no network change; 0.30.1/.2 only peer-pump timeout/concurrency."},"attribution":"agent","id":"c1fd0e00","parentId":"9412964e","timestamp":"2026-07-14T22:49:32.521Z"}
{"type":"message","id":"add69701","parentId":"c1fd0e00","timestamp":"2026-07-14T22:49:58.008Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Ranking firewall candidate alternatives**\n\n**Identifying relay discovery as root cause**\n\n**Analyzing stale seed and discovery failures**"},{"type":"thinking","thinking":"**Diagnosing durable peer address collapse**\n\n**Investigating log timestamp discrepancies**"},{"type":"toolCall","id":"call_NSlknMrAPSlGTKNChOIO2iKY|fc_050f56f290a937ae016a56bd15e5688196ae5ef80015ec909a","name":"read","arguments":{"i":"Reading late current log","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"50000-50100"}},{"type":"toolCall","id":"call_x60Pby2z8tFqpb0bBaqiQRvK|fc_050f56f290a937ae016a56bd15e7708196a8d0d96675ecfeb1","name":"read","arguments":{"i":"Reading later current log","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"100000-100100"}},{"type":"toolCall","id":"call_iRCIBdt69hGIONbwJGCUVl9J|fc_050f56f290a937ae016a56bd15e78081968daf4b09f0ffab6f","name":"read","arguments":{"i":"Reading late rotated log","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","selector":"50000-50100"}},{"type":"toolCall","id":"call_qpwAfEOMk382cmka12OBZNPa|fc_050f56f290a937ae016a56bd15e7908196a753bee077c07170","name":"grep","arguments":{"i":"Finding latest step anchors","pattern":"PAIR_MEET_UP:SPT_DEV step=5946|PAIR_MEET_UP:SPT_DEV step=5947|PAIR_MEET_UP:SPT_DEV step=5948|PAIR_MEET_UP:SPT_DEV step=5949","path":"C:/Users/decid/AppData/Local/spt-core/logs","selector":null,"case":true,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":3633,"output":1216,"cacheRead":267776,"cacheWrite":0,"totalTokens":272625,"reasoningTokens":948,"cost":{"input":0.018165,"output":0.03648,"cacheRead":0.133888,"cacheWrite":0,"total":0.188533}},"stopReason":"toolUse","timestamp":1784069372526,"responseId":"resp_050f56f290a937ae016a56bcfca2a081969deec05fafd8aa2a","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bcfe88308196938bb8c30484e07a","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr0KGG93SLAHxo8-Npf8mf7MRy1U4t3psFzIY_rquKvSnbVndp2ybn-DbDSxvCjd_-Pv4GLbKWh_6OcTezENT2r6rDFnxdxZGb7gSnd-eGzwTLsNIzkKw3VnknK8kdxiU7lRb1-kAGcMC8CkH66p9JLPG8q3rroacYqJXideFCyXeCuaz8qK-1a9rzfQ7SvrV7yabIHPHfwZ3WoQDbtjNZCe7NuxTvgtk5sCqo1OQLnErIvjWk0qZ3uRV6NWASrOFfVQbAktNKLf8xb7ZuJIgV2dtPJf_Qu5Wmm9ymoEalA_qlTSHI9kB7PPETjk9ryIds5XWQmlYdrStVPJaXdO9aGWGS6FBWJi4OqZkAt7JTshJAB3jauJCfZqIU_dy1WFdoJ4gg0eyCTa2u9GtMN99gLwRgqXn8103q65NlXTxAyaYMb9TvFFZRjRZRVqEJ99l62wqDUMLE7MZ_8mqbdAuyssyMvdqD6m-jQd9VWVQa91hrg9wR08aozw5iIEng2uDR-g6qIIy432hTBk0wIm5l_nbCbQaFdqpkpGis6XVOSwfsjkaWd2_uCOPomVFTJUNp95NqEGQ96imcAg4erkkrkZrTCJzSipsioQqP4FotSXGy_MqGige8QY-YrPvoQChzrocsfF7uIIEfUESWiFmsDk8ag8PW5YSKZuqFo2z4RTR7boEsBDpmkzLTtNlVWBSs5fYvgSZx_0gR_NCKs3pG1E2Hxy4G_W-__yHNHDZQLVEkgd3fbFwrReNisuYRfyyS66iG5ajqP50GsgY_JmMl42Pnr3dIyV4NT4BLUEQCcox63-qH5ZxEPm1F1E_j86rF_QHKY9W1FcZ2q7STZ2JIonhsIhM7l1PI0EwnqfkFCaYPhQb8Dus-bXz_v6DPWMAjw9UwA8eat-ffrRGMZXmpqO_7vyjYjjComBTgau1YDKnQ8O27x0Kcst4aLLjKRjjXQkJR6qXMCJdnRWaoaM_-OTbIoutovnk0BYh64WRD_Y8-nUatQ301gvggpYIIWHMzpx7Iio1rAa-IYxc4bqC9jIWeG4QqXb6TBwuo8OvGVHbfHlaNtcnZgN_Vrx5qVQN2UUrETk3sDLUyuiIzgOBJ9pRVA3EhDjST2Ol7wJYG1TOh3FCskEjkFOfNOXWSZUR0hGXx1w-SU7ox08H5Oyiqb4LoQE241H5UIa5YQrkrFUiWxjfAAYPP4ZHG9wvCBmMtabBDo8cDGiAGcGyukyPb7m1ZaU98rtoyEleKAL2TUVj7E9DqoPfK-4eETNZoZAcr8GBf7RJ4TIhO1GdpIFzd7_psQ7D9b3RiYetj6sCPMDjsBNZm1IHTDNVa7uMjAKwX2oYyyoIkD8-vXBoW-LUycQvDcm3tAwtN_yfMgsXq9pVDdH7UeOCFaKSsxcM0y6CesPXv6QiTdWbLsnmADQDf7uBdrhKlJ3ke8QQZWAc9AuPzg1JZhI4NXI1XomET6rstv3_uYss_DDtOvrl3d949dpWikt0htQaBGy4Jp6G1ddD3TTs_W-yBFdlZktoBEFZx56dq-mI0N0-4oLcZdBjPr_b-5T-BMbBEwlcplzmeUqksdnCGJ8ORHFazOkhcn9Uu_2nwQBavuCDqp1_83KYZvUz_LK__VTTBGvlCgBPI09_RYQogX8d6pX1qlvOOURPXvnNsHhkqLGy2l1K8zFYYgciy_u_ZqwsIzojjb0quh-mglAFdxn2xFCe5RwkZBtDl13lbFFXFpSFiYE6pa4OW4AOl4BywY8zHGjgAkUMmVn64MoPkPWyn5HInZLBbV8EjXfIWzkclpRCEhL-UMLJ-7dhvypTB9l4L85ySb12s9UcDSimc4YtF9bn7Vwml1EqT9FjQtm9u-fw9QN165dm18kbQoL1Gn7P70AotZNKWAszdjiEW7PD8CtB_NQ8y2WUk0ImxspyWI5qm8_qPevnwQxGd4KaSUNdY7KcKEigohO87EsBldrC12eiYPlAM3koLLOHzFuXv8UelxkXLR_ZxKHhoH392R4gE85LtHJyToH2sbzf16fVU6Bl0HC4mLsOG3zDyOsggi5Rczb8MZzxrJFczBid0XZXuguOTdCUh45jkyPCrM5l3MkrlwNx4Njbz5k-gjG_0d8mcw-l3QSIByV5x_btis_PRWUgRQuPSah3jTM0uquGjztzLrTr92Xd8MMYcesgT87Z-t5lbNNg9lscxFuBOdY5IBUb35qs4RCWkN4qF_7MtSJ6nIj_fdbYxxqv3adqNCKK24PSAuIQgt6wl4mP7sV80D9mLVTPblR1ehCq8nLYfnMPRUd1auUGLqEoG8biGllVC4KG4iNqtf5dLuUyCq8zpeLmpwrMirya06TdQyUYtV2v7LA9x77JjmR8mAup_9RgiylSItU7aoeZgkeKBpuzaP85Hg5BBSnGLDEQe1m0SxhYCayJfjp5Qt5t3xqXo1RbCTEXAc6OdQ57NbBdhCd6yqZi_a8hFtwJyXPMj1_iV_SA8jdJsugkSTW7kbZjtn_NAFPeoz6zHaPwVbQb99Jn4-V61rDfBM0Hq8Ey5NWVsPeSKrH_iXCSvpa9VQL7ZezM28pcklPbz07FZhVNyLGoJuqs68KmvVW_bugHaoR9xeZTVbATidaLHkBf-nwQ_voZEpNkJQfcGeTGO7IcTdy--QT-4izZn2qoYtwPGpEVpDM49_dis_O9Hvqux0EC2sGC_K01u2IVwhOA2vFISCwVQw-eVmotJDDi-XSxipIfVNiwEf-6fXaxUJf0xY0zZ5Pu85HWKUODn19bZqSrlAhkQmwORYWfGKvMW44_3uJCVPDAgNF5JjVMiVln0PJagTm3BV0EcS-U_KErRyIVgdCfbkK1MUxppV7z3XnhJaoSHWOzGOp6fWluvMtKWq8C7e0QgTOXYDzx3dFY_D58DoNxF-ZOMPlPo54-cPKkFJRc0DBsj3tG4ysuf7qBlWLCfPFkbetnIfRNqMn00rJvlVg58qsdpGCGaKsf22x4dojEd5ow_2tG-UHLJ1ymC-1hmaEjsOCoqU-6HzYuTyAYcS1vcG_ams2huz2-eDcK8auTbp6iYRjmCom99NNXiNRZD1M-SVGTvy-MbT91nQnXjR5iM2kTa3sLhLfDgqkqYugMP5b8g3qSAYrTP0CwaDiW7inZqp4db3teGVTEFc5vdgEmZKDegooffELNwyVmzJ5i-c9lBP6SN_Fmr8P1bmr7r-ggBWWdRymIAO3-xGgcj-o1dxwhE59B8BJaTVi7CxF1cQK6jnw1_21T76EZiBH70M34iKR39Y3AtzrT_qXOoOdXfEU7u0Wm27lZeP9EyAhP9fn9MKWGuokjjnwdXlu-gqp5r2S4qo8TKKO2TLlhxVHpInM6n6b0tC2hwkaqRKSzTtouHX9pvndlVIFP4gdYkGWVaCawYP15QtbhwoksGb9Cbtb4H0hnnE6uAog2vn4QxhplLY0iybt8xAEY3nMO5Bj3bAMUJsXOTJn-51sS3sZdU9b5uN0_KK7AQHLuwSzUYjAOIhn4Z0DY9g4Gj4mX9iFyRMUn8V8GVeEIDWQPk7l-He-g71IVRjyJL-tsYvHUtYvCste8yauFdKAfDDNNBxeHJxJ7GyJFte5Ieh3zkQ3DMtEWE5jGFsEhs8mW4a6t8-Iq3IvZrFAFdcZdlZcCSVUFSqd2mRGONOHN9BlVs6IKdXmjLjdN02ifaGJQomxIrOu2-TLTVvBt7EzOYY9hbv5nTksR8987GZPUHU_XZPuGOJTvVrxuN4IbcPpbSbOC5Q1bu-vGqn7kqM9UYSNumnUVllU4YAk6SybTc7hehTG00tzTrfld8Fo8w1OR6wtFkmB-ZsmkbOGq3HVG5fGfMRnFhHJ5fS9BCHkQWa7CzTDxP9-w0ITD92eXoVl8-6i2ROBUMkJjNzl5_-5TE0Rv-PbgDeXoYIBbvoUOil2vvMIsI2xy14G6WuXJqzWG3L_requ4CrXNXEWAKeZDYcQoTG02zjVeunxkSaom1QSF6Uf7zUC3TMFA7ozQQrNTVrairKI0ITItusDL6jxkc-iNwWtH5b9pEMXwae_HAi6kxj1jw3veo_WDLymecZfogRW1fyT8OSLiDJXJ8CU7DHMXYkH5ElftivtASJQGIbTbjXZcdUwNiYAdCIoofJb1vEoh0J8teWzQnx59xrms2il17OChAconxqVHKGxZ6Yen43fFJPZiNBQtieMbddIFOtcij8aFeF6G-HhrkGOXNGNKlgO8X_6s6SUF5zxOc6qqZTYgGWzbRF5Np3mmww=","summary":[{"type":"summary_text","text":"**Ranking firewall candidate alternatives**"},{"type":"summary_text","text":"**Identifying relay discovery as root cause**"},{"type":"summary_text","text":"**Analyzing stale seed and discovery failures**"}]},{"id":"rs_050f56f290a937ae016a56bd0aa8e08196b35265621b012212","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr0VU_HAf4d8nixSETYfYggvgsrspMQnQsWS4573ZZvIkPvD11orlAGHcyZbeYScclw4vo1TY5e8P1Gn41QMKTvAWS3tXOYzBdavEh5Wq-97EfByZGYwbZY8d20arNrg2dm-aVFRH3wc5VRS37TUWGzyMcY_ggK8-XGAhCxBWrAl2LuMXEEBeC3uQWyoYbTYCki9H_F_HyvxOrfOtHgk5dH-AWvdTZdV0J72N65_RJzC-1gF3Mhu_zoz54VosOUFsRn6nLzWj9Ffs2KOEfu4TokcH0-u63ybC8L85Xby_lXAXjnKsqNywtK7cbZaMM-_5PSTfa73kZa-Uhy87qhzjOH_7_qICMj9Rh0ZNIaWHg4MqEeCJB2kO1YWHR61aSmpjwZuEGHlCV_42RENvqp5cjjn_7wpsKVgh1HCrlPOirPfFEM-6Qc9tMxKJeEDlRYti6Fi3u1KiuMpqimq37x3JNQVZEimNSgPP7Q5AyTnPAprU8rlRKdhmzWUBtynLfpYhaSdtjfBCanR2IZ89lRTIAbVaQ2FUw3aFAgPg4kQSQFVl6jReCPQP-CzLf6-EYuSEsm15sJuw6Xt2ixJ80aVmY5IywwKJp5geGDd7cfJU7eWE4AdORXhgoXV-Eh2TvOmFtZLAYo8XAp4A4c6tt-qSLzTPyM2GpNSfO4Lto8YI_61Kr1E77pCZV53Qv14BTkOlYHSjd2smfikGRrBi7AmCDYwqjPhZttJnJrAzXBkarJ1lZDj6eOHW4zXeK1zzILwJrOvzIcIgGSNywjllrSRmZIEi1NGkyWc5QHYorxGghcvCdlwB17wnblwj1QsOnP4NdCxOPmN7l1rBeL8VvcMXmWC_QUHCARPuS6rI95UUT4m3WvwpbgQbQNRwklyGY-7ZU-uLkSWIDL8qYUNabflD1gF4highSzgs-EbQ3dXayTh-hvtmwjogkvJgIbVmsyn1Un0iBb9Avb46Bl_hF2TKLNA9QjjJ5OqnydSBiU9hRnlVeAxcj7SuQF6Mi7f3Kz4MQxcrRJrMyeOAkvEHWYSz2r9XE5bruBToMC-dSR5FNF1dtkqh3tzzYUY9BHUWMUCHO51I3VGJauODwGL_cRWm-UET9RTRFVw_xa-4R3bU1L5JLow_PzvHFrDj-X66nNekfM-ZBFSjHNLY-xlw9th8o1OONTkBtQRkJJHs0zzV-xvhHkCYwmxYDttyZgX-8J9Xx__Xu9b8txLtIhTkCeHIHi0J_FDF_E16llBjgdVY6iXcKOGOiD_Fivx92mWZzQLozR6Nsfp6noQ4QU49qq8RhXLeKxNqGUw32kxUCk0UC422rbfXU2Zn9jHJHP7Bv3qV7lzG_7NSAcVMjhfuLBTa2j0s3eGfKYt6EST3676sK0m3yz-agl7F-ZQF2lMKO2HqyCVCMqeLP-YAITG6jhix5N6a-6tf1ezvEV_GEvU8nlsZFGXmhgLsEuACRShY0MWZ87ijJZvu4HraOq99Y0PJf3f3S2brd8BenIsw1izozssSxSz_QQF_UdHQrAE7djGw1klsOV3YkQ-7mAT6th9L_lWr70kX2gfLWuikbmPfeAJiqLPGa9HbeMMBd-4I3wqMHgFvjFkH5WpyfEpVPiH71lQdoz1FZACi7DdEPquvI70aWdjkIRwgEozHjNShOZPra81dTQj_xcW2HpJV7Z8OlR_nI0lXz7FNvCBcfVkNa6Xu6VAPhxmDbMigwMiifEhiaqKsgCPxJB-4CZl5Ugd5YVfCrPxOWsa4H5l9yDT0mjVcsAweM3B98N8bQc2Yn6JFOWBakBoMROLlVn5l3C4IUKaizni9UzUTasvoL5pjs6NP9tsimOvRAjEs-0uos2Oi1kK4XknJyeMg4ILybd7V-a_G-z5pocKPoTJ6etf-vp17UdgpGuxvD0Y9w20neOjD0k8jvNYVnbAUrTequ732YTCTxeCK5MeNZ5UGw-f7mnCRr_HbKxik0UGhFA3RnwZ6ySysQXY2sBgR9bqodlJq-arbxRaanRLGl0Z-zP1Rmtd-MdYwGn6xGxIUIhCJlSpZe7QJoDhp4Ev2lUTATt7SNRdeczuB9SfXhumPaxQrjVxv3bjtrRVaP5lRd8nxdoD8p-e8pBAosD_kaMoad0qpNfhp1ON8kjXrDL5m8lgMjS1EOKLMksVesg0aYi-q7Fz-BOMKnrd7sZa-xOLC5NU7H8wbL7h7zNv3-pBh9q20okG2r0pbXhLvVcXjuhOixc0pxNafHwV96MIhKPElwHWtrgpluiyDrgbmQ30Cv1xBk2eyrTgZ117dtd_gp3rooSMDI-EtdFcs8Il5ndIRbe6-xcHkuCFGAoqdcgtxkU21znt6zcTwFxwO1IULZA1pKqhVDpp4TYkqaCTGuS3OuUQ63BKQHhIhoc46tivddSoNH0AiamxLnLAkdfoxfk_8nlVupGmb4Y8v4Yk1U5ojFAVPn3L1zA-X30RqCmd0XnGslcVzFb9bOs6y3T4JASg3VmHVoBQRal8Xsd7y614Y8vqChPHlHRivMoDhyiiHoWrySCPLmMu-3JqwZd7zjV1biH9HQZT0OTiybArY-BJIenrHOtH4gau6nDImZrij6yTjYylMVX0t6wzpZ7lugihJT5aYxuqSZYDmULYUfdP6n8GpfxhA5sP0K6eyRsrbADZucPosonXf86SBZkYWKWPbLo4zlYvoOLhIIL41ysEaq8P41jws-R3xGyHkrWWy5UBZAFCxCMEm7WhXnQ117HhOHSR8iVDHdIJRP2Bat3Mh13J6gqvEOlplWsH6cf-kdHBxutpMZ7-JdfcbRtVQGqYXHpZw_k-XOTTgUQooU8JC1o04dfLDa3jeOYQfocTPpD4AergEZPqws4vJ5gClgfbkYLlqtyFed2yDqkaBMWaoaCLQsODvhZAREqroj9IiT-9-eu5LGv5cfxIOwjSLftJTOlxZqNWFOYVemorN6vulHXStt-k56czpZfayazCdac7IKrl0Y-4iBDKs1jWZvO8WMoOSj84XnycPKB9iu4OqfmvqWqiyPDjO54ORsM5qgIxYF0Xd7RWtPVL-18YavjU0ZBSt-2j2hy-8ifIWCEqPQCL646d4ZUfYhlYE8QoCFqKD6QFsjpqYYaVj473KLqMcSOlC2CbTRnRsUGJu1ON8rQ7RsbzcjkYxAb7CXjhdwqZTYyYqsyQ2vvB7LksLtYf9jEW2Ij7Gu--2Ux2mjvwYwhRunq06vKx3HrA8_4kNR-Oa7-r-srYZPddZWC8SyNhG0ymq10l12KEfHyrsW6q7ZvXeBHbdinkQdPWQ8DPr4YG-QJsn3cHSsPtbRXsaQ9AVDdUWkBpmX-tltLa0VFO66qUFhW3ng==","summary":[{"type":"summary_text","text":"**Diagnosing durable peer address collapse**"},{"type":"summary_text","text":"**Investigating log timestamp discrepancies**"}]},{"id":"fc_050f56f290a937ae016a56bd15e5688196ae5ef80015ec909a","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading late current log\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"50000-50100\"}","call_id":"call_NSlknMrAPSlGTKNChOIO2iKY","name":"read"},{"id":"fc_050f56f290a937ae016a56bd15e7708196a8d0d96675ecfeb1","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading later current log\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"100000-100100\"}","call_id":"call_x60Pby2z8tFqpb0bBaqiQRvK","name":"read"},{"id":"fc_050f56f290a937ae016a56bd15e78081968daf4b09f0ffab6f","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading late rotated log\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\",\"selector\":\"50000-50100\"}","call_id":"call_iRCIBdt69hGIONbwJGCUVl9J","name":"read"},{"id":"fc_050f56f290a937ae016a56bd15e7908196a753bee077c07170","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding latest step anchors\",\"pattern\":\"PAIR_MEET_UP:SPT_DEV step=5946|PAIR_MEET_UP:SPT_DEV step=5947|PAIR_MEET_UP:SPT_DEV step=5948|PAIR_MEET_UP:SPT_DEV step=5949\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs\",\"selector\":null,\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_qpwAfEOMk382cmka12OBZNPa","name":"grep"}]},"duration":25480.73949998617,"ttft":2048.1226999759674,"contextSnapshot":{"promptTokens":271409,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_NSlknMrAPSlGTKNChOIO2iKY|fc_050f56f290a937ae016a56bd15e5688196ae5ef80015ec909a","toolName":"read","startedAt":"2026-07-14T22:49:58.008Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading late current log"},"id":"764974e5","parentId":"add69701","timestamp":"2026-07-14T22:49:58.008Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_x60Pby2z8tFqpb0bBaqiQRvK|fc_050f56f290a937ae016a56bd15e7708196a8d0d96675ecfeb1","toolName":"read","startedAt":"2026-07-14T22:49:58.008Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading later current log"},"id":"b4390a91","parentId":"764974e5","timestamp":"2026-07-14T22:49:58.008Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_iRCIBdt69hGIONbwJGCUVl9J|fc_050f56f290a937ae016a56bd15e78081968daf4b09f0ffab6f","toolName":"read","startedAt":"2026-07-14T22:49:58.009Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"intent":"Reading late rotated log"},"id":"4a223097","parentId":"b4390a91","timestamp":"2026-07-14T22:49:58.009Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_qpwAfEOMk382cmka12OBZNPa|fc_050f56f290a937ae016a56bd15e7908196a753bee077c07170","toolName":"grep","startedAt":"2026-07-14T22:49:58.009Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs"},"intent":"Finding latest step anchors"},"id":"e23cacee","parentId":"4a223097","timestamp":"2026-07-14T22:49:58.009Z"}
{"type":"message","id":"eba3113f","parentId":"e23cacee","timestamp":"2026-07-14T22:49:58.024Z","message":{"role":"toolResult","toolCallId":"call_qpwAfEOMk382cmka12OBZNPa|fc_050f56f290a937ae016a56bd15e7908196a753bee077c07170","toolName":"grep","content":[{"type":"text","text":"No matches found"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs","searchPath":"C:/Users/decid/AppData/Local/spt-core/logs","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069398023}}
{"type":"message","id":"071c0edc","parentId":"eba3113f","timestamp":"2026-07-14T22:49:58.068Z","message":{"role":"toolResult","toolCallId":"call_iRCIBdt69hGIONbwJGCUVl9J|fc_050f56f290a937ae016a56bd15e78081968daf4b09f0ffab6f","toolName":"read","content":[{"type":"text","text":"Line 50000 is beyond end of file (39944 lines total). Use :1 to read from the start, or :39944 to read the last line."}],"details":{"resolvedPath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1"},"isError":false,"timestamp":1784069398068}}
{"type":"message","id":"68ff893e","parentId":"071c0edc","timestamp":"2026-07-14T22:49:58.084Z","message":{"role":"toolResult","toolCallId":"call_NSlknMrAPSlGTKNChOIO2iKY|fc_050f56f290a937ae016a56bd15e5688196ae5ef80015ec909a","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=13738 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704377 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain wall_ms=1783768374798 mono_ms=22704378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704378 event=stream-sub-attach stream=6925 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374802 mono_ms=22704382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59458946 id=3c60e97ae72264f529b722aeba99a8fdc979de9b050d96c661f27c9c6bcd4441 addr=EndpointAddr { id: PublicKey(3c60e97ae72264f529b722aeba99a8fdc979de9b050d96c661f27c9c6bcd4441), addrs: {Ip(100.68.35.65:55382), Ip(192.168.1.81:55382)} }\nPAIR_MEET_UP:BS-Resources step=59458946 id=eab4d1ad4a021ec8e072c09cbd2a58d8aaa5180953970744891d724a57e4d01c addr=EndpointAddr { id: PublicKey(eab4d1ad4a021ec8e072c09cbd2a58d8aaa5180953970744891d724a57e4d01c), addrs: {Ip(100.68.35.65:55388), Ip(192.168.1.81:55388)} }\nPAIR_MEET_UP:SPT_DEV step=59458946 id=ae5aa298e9678dd207c2c966f80b3a43e3fd21e80c0b0a530918ca8fa4d50cad addr=EndpointAddr { id: PublicKey(ae5aa298e9678dd207c2c966f80b3a43e3fd21e80c0b0a530918ca8fa4d50cad), addrs: {Ip(100.68.35.65:55389), Ip(192.168.1.81:55389)} }\nCONN_LIFECYCLE: conn=13741 role=brain wall_ms=1783768382029 mono_ms=22711608 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13741 role=brain wall_ms=1783768382029 mono_ms=22711608 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=stream-sub-attach stream=6926 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain wall_ms=1783768385934 mono_ms=22715513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain stream-subscriber stream=6926 wall_ms=1783768385934 mono_ms=22715513 event=stream-sub-attach stream=6926 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain stream-subscriber stream=6926 wall_ms=1783768385938 mono_ms=22715518 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=13744 role=brain wall_ms=1783768387072 mono_ms=22716651 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13744 role=brain wall_ms=1783768387072 mono_ms=22716651 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=stream-sub-attach stream=6927 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=stream-sub-attach stream=6927 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388446 mono_ms=22718025 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=stream-sub-attach stream=6928 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 event=stream-sub-attach stream=6929 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719496 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719496 event=stream-sub-attach stream=6928 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain wall_ms=1783768389917 mono_ms=22719496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain stream-subscriber stream=6929 wall_ms=1783768389917 mono_ms=22719497 event=stream-sub-attach stream=6929 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389922 mono_ms=22719501 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain stream-subscriber stream=6929 wall_ms=1783768389928 mono_ms=22719508 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13751 role=brain wall_ms=1783768392113 mono_ms=22721692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13751 role=brain wall_ms=1783768392113 mono_ms=22721692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13752 role=brain wall_ms=1783768397155 mono_ms=22726734 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13752 role=brain wall_ms=1783768397155 mono_ms=22726734 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=stream-sub-attach stream=6932 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain wall_ms=1783768401020 mono_ms=22730599 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain stream-subscriber stream=6932 wall_ms=1783768401020 mono_ms=22730599 event=stream-sub-attach stream=6932 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain stream-subscriber stream=6932 wall_ms=1783768401024 mono_ms=22730603 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13755 role=brain wall_ms=1783768402200 mono_ms=22731779 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13755 role=brain wall_ms=1783768402200 mono_ms=22731779 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=stream-sub-attach stream=6933 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain wall_ms=1783768404996 mono_ms=22734575 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain stream-subscriber stream=6933 wall_ms=1783768404996 mono_ms=22734575 event=stream-sub-attach stream=6933 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain stream-subscriber stream=6933 wall_ms=1783768405000 mono_ms=22734579 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13758 role=brain wall_ms=1783768407242 mono_ms=22736821 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13758 role=brain wall_ms=1783768407242 mono_ms=22736821 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59458947 id=6668233be59fc7bede25016bd5abcbc57c07ef2480f66e4a88709ece79d999f5 addr=EndpointAddr { id: PublicKey(6668233be59fc7bede25016bd5abcbc57c07ef2480f66e4a88709ece79d999f5), addrs: {Ip(100.68.35.65:53072), Ip(192.168.1.81:53072)} }\nPAIR_MEET_UP:BIGNET step=59458947 id=faef51386adca3f56470168e9d9f99f64f8e02ca8e45d922289f23665b31fb8f addr=EndpointAddr { id: PublicKey(faef51386adca3f56470168e9d9f99f64f8e02ca8e45d922289f23665b31fb8f), addrs: {Ip(100.68.35.65:53074), Ip(192.168.1.81:53074)} }\nPAIR_MEET_UP:BS-Resources step=59458947 id=f75cb2a00cc84337fb6321da2df22fc421a0b7a68d1f0110d291fd92bdf226d4 addr=EndpointAddr { id: PublicKey(f75cb2a00cc84337fb6321da2df22fc421a0b7a68d1f0110d291fd92bdf226d4), addrs: {Ip(100.68.35.65:53084), Ip(192.168.1.81:53084)} }\nCONN_LIFECYCLE: conn=13759 role=brain wall_ms=1783768412286 mono_ms=22741866 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13759 role=brain wall_ms=1783768412287 mono_ms=22741866 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745742 event=stream-sub-attach stream=6936 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745742 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745743 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745743 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain wall_ms=1783768416164 mono_ms=22745744 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain stream-subscriber stream=6936 wall_ms=1783768416164 mono_ms=22745744 event=stream-sub-attach stream=6936 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain stream-subscriber stream=6936 wall_ms=1783768416168 mono_ms=22745748 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13762 role=brain wall_ms=1783768417330 mono_ms=22746909 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13762 role=brain wall_ms=1783768417330 mono_ms=22746909 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=stream-sub-attach stream=6937 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=stream-sub-attach stream=6937 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=stream-sub-attach stream=6938 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418789 mono_ms=22748368 event=stream-sub-attach stream=6938 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418789 mono_ms=22748368 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418794 mono_ms=22748373 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 event=stream-sub-attach stream=6940 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=stream-sub-attach stream=6939 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420151 mono_ms=22749730 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=stream-sub-attach stream=6939 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13769 role=brain wall_ms=1783768420152 mono_ms=22749731 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 49999-50103 of 107. Use :50104 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=13738 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704377 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain wall_ms=1783768374798 mono_ms=22704378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704378 event=stream-sub-attach stream=6925 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374802 mono_ms=22704382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59458946 id=3c60e97ae72264f529b722aeba99a8fdc979de9b050d96c661f27c9c6bcd4441 addr=EndpointAddr { id: PublicKey(3c60e97ae72264f529b722aeba99a8fdc979de9b050d96c661f27c9c6bcd4441), addrs: {Ip(100.68.35.65:55382), Ip(192.168.1.81:55382)} }\nPAIR_MEET_UP:BS-Resources step=59458946 id=eab4d1ad4a021ec8e072c09cbd2a58d8aaa5180953970744891d724a57e4d01c addr=EndpointAddr { id: PublicKey(eab4d1ad4a021ec8e072c09cbd2a58d8aaa5180953970744891d724a57e4d01c), addrs: {Ip(100.68.35.65:55388), Ip(192.168.1.81:55388)} }\nPAIR_MEET_UP:SPT_DEV step=59458946 id=ae5aa298e9678dd207c2c966f80b3a43e3fd21e80c0b0a530918ca8fa4d50cad addr=EndpointAddr { id: PublicKey(ae5aa298e9678dd207c2c966f80b3a43e3fd21e80c0b0a530918ca8fa4d50cad), addrs: {Ip(100.68.35.65:55389), Ip(192.168.1.81:55389)} }\nCONN_LIFECYCLE: conn=13741 role=brain wall_ms=1783768382029 mono_ms=22711608 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13741 role=brain wall_ms=1783768382029 mono_ms=22711608 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=stream-sub-attach stream=6926 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain wall_ms=1783768385934 mono_ms=22715513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain stream-subscriber stream=6926 wall_ms=1783768385934 mono_ms=22715513 event=stream-sub-attach stream=6926 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain stream-subscriber stream=6926 wall_ms=1783768385938 mono_ms=22715518 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=13744 role=brain wall_ms=1783768387072 mono_ms=22716651 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13744 role=brain wall_ms=1783768387072 mono_ms=22716651 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=stream-sub-attach stream=6927 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=stream-sub-attach stream=6927 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388446 mono_ms=22718025 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=stream-sub-attach stream=6928 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 event=stream-sub-attach stream=6929 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719496 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719496 event=stream-sub-attach stream=6928 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain wall_ms=1783768389917 mono_ms=22719496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain stream-subscriber stream=6929 wall_ms=1783768389917 mono_ms=22719497 event=stream-sub-attach stream=6929 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389922 mono_ms=22719501 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain stream-subscriber stream=6929 wall_ms=1783768389928 mono_ms=22719508 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13751 role=brain wall_ms=1783768392113 mono_ms=22721692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13751 role=brain wall_ms=1783768392113 mono_ms=22721692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13752 role=brain wall_ms=1783768397155 mono_ms=22726734 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13752 role=brain wall_ms=1783768397155 mono_ms=22726734 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=stream-sub-attach stream=6932 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain wall_ms=1783768401020 mono_ms=22730599 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain stream-subscriber stream=6932 wall_ms=1783768401020 mono_ms=22730599 event=stream-sub-attach stream=6932 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain stream-subscriber stream=6932 wall_ms=1783768401024 mono_ms=22730603 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13755 role=brain wall_ms=1783768402200 mono_ms=22731779 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13755 role=brain wall_ms=1783768402200 mono_ms=22731779 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=stream-sub-attach stream=6933 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain wall_ms=1783768404996 mono_ms=22734575 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain stream-subscriber stream=6933 wall_ms=1783768404996 mono_ms=22734575 event=stream-sub-attach stream=6933 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain stream-subscriber stream=6933 wall_ms=1783768405000 mono_ms=22734579 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13758 role=brain wall_ms=1783768407242 mono_ms=22736821 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13758 role=brain wall_ms=1783768407242 mono_ms=22736821 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59458947 id=6668233be59fc7bede25016bd5abcbc57c07ef2480f66e4a88709ece79d999f5 addr=EndpointAddr { id: PublicKey(6668233be59fc7bede25016bd5abcbc57c07ef2480f66e4a88709ece79d999f5), addrs: {Ip(100.68.35.65:53072), Ip(192.168.1.81:53072)} }\nPAIR_MEET_UP:BIGNET step=59458947 id=faef51386adca3f56470168e9d9f99f64f8e02ca8e45d922289f23665b31fb8f addr=EndpointAddr { id: PublicKey(faef51386adca3f56470168e9d9f99f64f8e02ca8e45d922289f23665b31fb8f), addrs: {Ip(100.68.35.65:53074), Ip(192.168.1.81:53074)} }\nPAIR_MEET_UP:BS-Resources step=59458947 id=f75cb2a00cc84337fb6321da2df22fc421a0b7a68d1f0110d291fd92bdf226d4 addr=EndpointAddr { id: PublicKey(f75cb2a00cc84337fb6321da2df22fc421a0b7a68d1f0110d291fd92bdf226d4), addrs: {Ip(100.68.35.65:53084), Ip(192.168.1.81:53084)} }\nCONN_LIFECYCLE: conn=13759 role=brain wall_ms=1783768412286 mono_ms=22741866 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13759 role=brain wall_ms=1783768412287 mono_ms=22741866 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745742 event=stream-sub-attach stream=6936 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745742 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745743 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745743 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain wall_ms=1783768416164 mono_ms=22745744 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain stream-subscriber stream=6936 wall_ms=1783768416164 mono_ms=22745744 event=stream-sub-attach stream=6936 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain stream-subscriber stream=6936 wall_ms=1783768416168 mono_ms=22745748 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13762 role=brain wall_ms=1783768417330 mono_ms=22746909 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13762 role=brain wall_ms=1783768417330 mono_ms=22746909 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=stream-sub-attach stream=6937 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=stream-sub-attach stream=6937 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=stream-sub-attach stream=6938 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418789 mono_ms=22748368 event=stream-sub-attach stream=6938 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418789 mono_ms=22748368 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418794 mono_ms=22748373 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 event=stream-sub-attach stream=6940 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=stream-sub-attach stream=6939 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420151 mono_ms=22749730 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=stream-sub-attach stream=6939 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13769 role=brain wall_ms=1783768420152 mono_ms=22749731 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":107,"totalBytes":18456,"outputLines":105,"outputBytes":18456,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=13738 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704377 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain wall_ms=1783768374798 mono_ms=22704378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704378 event=stream-sub-attach stream=6925 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374802 mono_ms=22704382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59458946 id=3c60e97ae72264f529b722aeba99a8fdc979de9b050d96c661f27c9c6bcd4441 addr=EndpointAddr { id: PublicKey(3c60e97ae72264f529b722aeba99a8fdc979de9b050d96c661f27c9c6bcd4441), addrs: {Ip(100.68.35.65:55382), Ip(192.168.1.81:55382)} }\nPAIR_MEET_UP:BS-Resources step=59458946 id=eab4d1ad4a021ec8e072c09cbd2a58d8aaa5180953970744891d724a57e4d01c addr=EndpointAddr { id: PublicKey(eab4d1ad4a021ec8e072c09cbd2a58d8aaa5180953970744891d724a57e4d01c), addrs: {Ip(100.68.35.65:55388), Ip(192.168.1.81:55388)} }\nPAIR_MEET_UP:SPT_DEV step=59458946 id=ae5aa298e9678dd207c2c966f80b3a43e3fd21e80c0b0a530918ca8fa4d50cad addr=EndpointAddr { id: PublicKey(ae5aa298e9678dd207c2c966f80b3a43e3fd21e80c0b0a530918ca8fa4d50cad), addrs: {Ip(100.68.35.65:55389), Ip(192.168.1.81:55389)} }\nCONN_LIFECYCLE: conn=13741 role=brain wall_ms=1783768382029 mono_ms=22711608 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13741 role=brain wall_ms=1783768382029 mono_ms=22711608 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=stream-sub-attach stream=6926 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13742 role=brain stream-subscriber stream=6926 wall_ms=1783768385933 mono_ms=22715512 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain wall_ms=1783768385934 mono_ms=22715513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain stream-subscriber stream=6926 wall_ms=1783768385934 mono_ms=22715513 event=stream-sub-attach stream=6926 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13743 role=brain stream-subscriber stream=6926 wall_ms=1783768385938 mono_ms=22715518 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=13744 role=brain wall_ms=1783768387072 mono_ms=22716651 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13744 role=brain wall_ms=1783768387072 mono_ms=22716651 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=stream-sub-attach stream=6927 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13745 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=stream-sub-attach stream=6927 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388440 mono_ms=22718019 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13746 role=brain stream-subscriber stream=6927 wall_ms=1783768388446 mono_ms=22718025 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=stream-sub-attach stream=6928 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 event=stream-sub-attach stream=6929 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13747 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719495 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719495 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13748 role=brain stream-subscriber stream=6929 wall_ms=1783768389916 mono_ms=22719496 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719496 event=stream-sub-attach stream=6928 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389916 mono_ms=22719496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain wall_ms=1783768389917 mono_ms=22719496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain stream-subscriber stream=6929 wall_ms=1783768389917 mono_ms=22719497 event=stream-sub-attach stream=6929 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13749 role=brain stream-subscriber stream=6928 wall_ms=1783768389922 mono_ms=22719501 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13750 role=brain stream-subscriber stream=6929 wall_ms=1783768389928 mono_ms=22719508 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13751 role=brain wall_ms=1783768392113 mono_ms=22721692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13751 role=brain wall_ms=1783768392113 mono_ms=22721692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13752 role=brain wall_ms=1783768397155 mono_ms=22726734 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13752 role=brain wall_ms=1783768397155 mono_ms=22726734 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=stream-sub-attach stream=6932 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13753 role=brain stream-subscriber stream=6932 wall_ms=1783768401019 mono_ms=22730598 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain wall_ms=1783768401020 mono_ms=22730599 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain stream-subscriber stream=6932 wall_ms=1783768401020 mono_ms=22730599 event=stream-sub-attach stream=6932 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13754 role=brain stream-subscriber stream=6932 wall_ms=1783768401024 mono_ms=22730603 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13755 role=brain wall_ms=1783768402200 mono_ms=22731779 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13755 role=brain wall_ms=1783768402200 mono_ms=22731779 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=stream-sub-attach stream=6933 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13756 role=brain stream-subscriber stream=6933 wall_ms=1783768404995 mono_ms=22734574 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain wall_ms=1783768404996 mono_ms=22734575 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain stream-subscriber stream=6933 wall_ms=1783768404996 mono_ms=22734575 event=stream-sub-attach stream=6933 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13757 role=brain stream-subscriber stream=6933 wall_ms=1783768405000 mono_ms=22734579 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13758 role=brain wall_ms=1783768407242 mono_ms=22736821 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13758 role=brain wall_ms=1783768407242 mono_ms=22736821 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59458947 id=6668233be59fc7bede25016bd5abcbc57c07ef2480f66e4a88709ece79d999f5 addr=EndpointAddr { id: PublicKey(6668233be59fc7bede25016bd5abcbc57c07ef2480f66e4a88709ece79d999f5), addrs: {Ip(100.68.35.65:53072), Ip(192.168.1.81:53072)} }\nPAIR_MEET_UP:BIGNET step=59458947 id=faef51386adca3f56470168e9d9f99f64f8e02ca8e45d922289f23665b31fb8f addr=EndpointAddr { id: PublicKey(faef51386adca3f56470168e9d9f99f64f8e02ca8e45d922289f23665b31fb8f), addrs: {Ip(100.68.35.65:53074), Ip(192.168.1.81:53074)} }\nPAIR_MEET_UP:BS-Resources step=59458947 id=f75cb2a00cc84337fb6321da2df22fc421a0b7a68d1f0110d291fd92bdf226d4 addr=EndpointAddr { id: PublicKey(f75cb2a00cc84337fb6321da2df22fc421a0b7a68d1f0110d291fd92bdf226d4), addrs: {Ip(100.68.35.65:53084), Ip(192.168.1.81:53084)} }\nCONN_LIFECYCLE: conn=13759 role=brain wall_ms=1783768412286 mono_ms=22741866 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13759 role=brain wall_ms=1783768412287 mono_ms=22741866 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745742 event=stream-sub-attach stream=6936 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745742 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745743 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13760 role=brain stream-subscriber stream=6936 wall_ms=1783768416163 mono_ms=22745743 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain wall_ms=1783768416164 mono_ms=22745744 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain stream-subscriber stream=6936 wall_ms=1783768416164 mono_ms=22745744 event=stream-sub-attach stream=6936 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13761 role=brain stream-subscriber stream=6936 wall_ms=1783768416168 mono_ms=22745748 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13762 role=brain wall_ms=1783768417330 mono_ms=22746909 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13762 role=brain wall_ms=1783768417330 mono_ms=22746909 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=stream-sub-attach stream=6937 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13763 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747796 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=stream-sub-attach stream=6937 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13764 role=brain stream-subscriber stream=6937 wall_ms=1783768418217 mono_ms=22747797 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=stream-sub-attach stream=6938 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13765 role=brain stream-subscriber stream=6938 wall_ms=1783768418788 mono_ms=22748368 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418789 mono_ms=22748368 event=stream-sub-attach stream=6938 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418789 mono_ms=22748368 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13766 role=brain stream-subscriber stream=6938 wall_ms=1783768418794 mono_ms=22748373 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 event=stream-sub-attach stream=6940 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=stream-sub-attach stream=6939 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13768 role=brain stream-subscriber stream=6939 wall_ms=1783768420150 mono_ms=22749730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420150 mono_ms=22749730 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420151 mono_ms=22749730 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=stream-sub-attach stream=6939 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13769 role=brain wall_ms=1783768420152 mono_ms=22749731 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":49999,"lineNumbers":[49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50024,50025,50026,50027,50028,50029,50030,50031,50032,50033,50034,50035,50036,50037,50038,50039,50040,50041,50042,50043,50044,50045,50046,50047,50048,50049,50050,50051,50052,50053,50054,50055,50056,50057,50058,50059,50060,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":107,"totalBytes":18456,"outputLines":105,"outputBytes":18456,"shownRange":{"start":49999,"end":50103},"nextOffset":50104}}},"isError":false,"timestamp":1784069398084}}
{"type":"message","id":"199298b3","parentId":"68ff893e","timestamp":"2026-07-14T22:49:58.127Z","message":{"role":"toolResult","toolCallId":"call_x60Pby2z8tFqpb0bBaqiQRvK|fc_050f56f290a937ae016a56bd15e7708196a8d0d96675ecfeb1","toolName":"read","content":[{"type":"text","text":"PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=stream-sub-attach stream=14469 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657074 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657074 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain wall_ms=1783793327533 mono_ms=47657075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain stream-subscriber stream=14469 wall_ms=1783793327533 mono_ms=47657075 event=stream-sub-attach stream=14469 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain stream-subscriber stream=14469 wall_ms=1783793327536 mono_ms=47657078 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=stream-sub-attach stream=14470 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=stream-sub-attach stream=14470 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327795 mono_ms=47657337 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28855 role=brain wall_ms=1783793332129 mono_ms=47661671 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28855 role=brain wall_ms=1783793332129 mono_ms=47661671 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334171 mono_ms=47663713 event=stream-sub-attach stream=14471 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=stream-sub-attach stream=14472 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334171 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334172 mono_ms=47663713 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334172 mono_ms=47663713 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334172 mono_ms=47663713 event=stream-sub-attach stream=14472 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334172 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain wall_ms=1783793334172 mono_ms=47663714 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain stream-subscriber stream=14471 wall_ms=1783793334173 mono_ms=47663714 event=stream-sub-attach stream=14471 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334177 mono_ms=47663718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain stream-subscriber stream=14471 wall_ms=1783793334234 mono_ms=47663776 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28860 role=brain wall_ms=1783793337171 mono_ms=47666713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28860 role=brain wall_ms=1783793337171 mono_ms=47666713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59459778 id=5c5a2bc3bcdd364a520b96f4d80dd8c6af80d2c2345867d267b4d89fc3caa390 addr=EndpointAddr { id: PublicKey(5c5a2bc3bcdd364a520b96f4d80dd8c6af80d2c2345867d267b4d89fc3caa390), addrs: {Ip(100.68.35.65:64802), Ip(192.168.1.81:64802)} }\nPAIR_MEET_UP:BS-Resources step=59459778 id=33172803420a4f68bd439457a0c00460997840a739d6859373aee5f49b796882 addr=EndpointAddr { id: PublicKey(33172803420a4f68bd439457a0c00460997840a739d6859373aee5f49b796882), addrs: {Ip(100.68.35.65:64808), Ip(192.168.1.81:64808)} }\nPAIR_MEET_UP:BIGNET step=59459778 id=e1b09c587e2ae9048e09d781a8981c2b988e060a4be6259572b827e896bf4a6f addr=EndpointAddr { id: PublicKey(e1b09c587e2ae9048e09d781a8981c2b988e060a4be6259572b827e896bf4a6f), addrs: {Ip(100.68.35.65:64810), Ip(192.168.1.81:64810)} }\nCONN_LIFECYCLE: conn=28861 role=brain wall_ms=1783793342213 mono_ms=47671755 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28861 role=brain wall_ms=1783793342214 mono_ms=47671755 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 event=stream-sub-attach stream=14473 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672028 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain wall_ms=1783793342487 mono_ms=47672029 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain stream-subscriber stream=14473 wall_ms=1783793342487 mono_ms=47672029 event=stream-sub-attach stream=14473 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain stream-subscriber stream=14473 wall_ms=1783793342491 mono_ms=47672032 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674625 event=stream-sub-attach stream=14474 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674625 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674626 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674626 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain wall_ms=1783793345085 mono_ms=47674627 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain stream-subscriber stream=14474 wall_ms=1783793345085 mono_ms=47674627 event=stream-sub-attach stream=14474 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain stream-subscriber stream=14474 wall_ms=1783793345089 mono_ms=47674631 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28866 role=brain wall_ms=1783793347254 mono_ms=47676796 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28866 role=brain wall_ms=1783793347255 mono_ms=47676796 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28867 role=brain wall_ms=1783793352297 mono_ms=47681838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28867 role=brain wall_ms=1783793352297 mono_ms=47681838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28868 role=brain wall_ms=1783793357337 mono_ms=47686879 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28868 role=brain wall_ms=1783793357337 mono_ms=47686879 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=stream-sub-attach stream=14477 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain wall_ms=1783793357547 mono_ms=47687089 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain stream-subscriber stream=14477 wall_ms=1783793357547 mono_ms=47687089 event=stream-sub-attach stream=14477 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain stream-subscriber stream=14477 wall_ms=1783793357551 mono_ms=47687092 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=stream-sub-attach stream=14478 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358060 mono_ms=47687601 event=stream-sub-attach stream=14478 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358060 mono_ms=47687601 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358064 mono_ms=47687606 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360122 mono_ms=47689664 event=stream-sub-attach stream=14479 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360122 mono_ms=47689664 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360123 mono_ms=47689665 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360123 mono_ms=47689665 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain wall_ms=1783793360124 mono_ms=47689666 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain stream-subscriber stream=14479 wall_ms=1783793360124 mono_ms=47689666 event=stream-sub-attach stream=14479 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain stream-subscriber stream=14479 wall_ms=1783793360128 mono_ms=47689670 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361171 mono_ms=47690713 event=stream-sub-attach stream=14480 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361171 mono_ms=47690713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=stream-sub-attach stream=14480 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361176 mono_ms=47690718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28877 role=brain wall_ms=1783793362379 mono_ms=47691920 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28877 role=brain wall_ms=1783793362379 mono_ms=47691920 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28878 role=brain wall_ms=1783793367424 mono_ms=47696966 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28878 role=brain wall_ms=1783793367425 mono_ms=47696966 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367580 mono_ms=47697122 event=stream-sub-attach stream=14481 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367580 mono_ms=47697122 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=stream-sub-attach stream=14481 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697123 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59459779 id=7d06a2bd00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f addr=EndpointAddr { id: PublicKey(7d06a2bd00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f), addrs: {Ip(100.68.35.65:63050), Ip(192.168.1.81:63050)} }\nPAIR_MEET_UP:SPT_DEV step=59459779 id=7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a addr=EndpointAddr { id: PublicKey(7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a), addrs: {Ip(100.68.35.65:63052), Ip(192.168.1.81:63052)} }\nPAIR_MEET_UP:BIGNET step=59459779 id=6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d addr=EndpointAddr { id: PublicKey(6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d), addrs: {Ip(100.68.35.65:63064), Ip(192.168.1.81:63064)} }\n\n[Showing lines 99999-100103 of 120. Use :100104 to continue]"}],"details":{"truncation":{"content":"PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=stream-sub-attach stream=14469 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657074 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657074 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain wall_ms=1783793327533 mono_ms=47657075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain stream-subscriber stream=14469 wall_ms=1783793327533 mono_ms=47657075 event=stream-sub-attach stream=14469 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain stream-subscriber stream=14469 wall_ms=1783793327536 mono_ms=47657078 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=stream-sub-attach stream=14470 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=stream-sub-attach stream=14470 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327795 mono_ms=47657337 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28855 role=brain wall_ms=1783793332129 mono_ms=47661671 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28855 role=brain wall_ms=1783793332129 mono_ms=47661671 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334171 mono_ms=47663713 event=stream-sub-attach stream=14471 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=stream-sub-attach stream=14472 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334171 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334172 mono_ms=47663713 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334172 mono_ms=47663713 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334172 mono_ms=47663713 event=stream-sub-attach stream=14472 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334172 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain wall_ms=1783793334172 mono_ms=47663714 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain stream-subscriber stream=14471 wall_ms=1783793334173 mono_ms=47663714 event=stream-sub-attach stream=14471 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334177 mono_ms=47663718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain stream-subscriber stream=14471 wall_ms=1783793334234 mono_ms=47663776 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28860 role=brain wall_ms=1783793337171 mono_ms=47666713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28860 role=brain wall_ms=1783793337171 mono_ms=47666713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59459778 id=5c5a2bc3bcdd364a520b96f4d80dd8c6af80d2c2345867d267b4d89fc3caa390 addr=EndpointAddr { id: PublicKey(5c5a2bc3bcdd364a520b96f4d80dd8c6af80d2c2345867d267b4d89fc3caa390), addrs: {Ip(100.68.35.65:64802), Ip(192.168.1.81:64802)} }\nPAIR_MEET_UP:BS-Resources step=59459778 id=33172803420a4f68bd439457a0c00460997840a739d6859373aee5f49b796882 addr=EndpointAddr { id: PublicKey(33172803420a4f68bd439457a0c00460997840a739d6859373aee5f49b796882), addrs: {Ip(100.68.35.65:64808), Ip(192.168.1.81:64808)} }\nPAIR_MEET_UP:BIGNET step=59459778 id=e1b09c587e2ae9048e09d781a8981c2b988e060a4be6259572b827e896bf4a6f addr=EndpointAddr { id: PublicKey(e1b09c587e2ae9048e09d781a8981c2b988e060a4be6259572b827e896bf4a6f), addrs: {Ip(100.68.35.65:64810), Ip(192.168.1.81:64810)} }\nCONN_LIFECYCLE: conn=28861 role=brain wall_ms=1783793342213 mono_ms=47671755 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28861 role=brain wall_ms=1783793342214 mono_ms=47671755 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 event=stream-sub-attach stream=14473 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672028 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain wall_ms=1783793342487 mono_ms=47672029 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain stream-subscriber stream=14473 wall_ms=1783793342487 mono_ms=47672029 event=stream-sub-attach stream=14473 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain stream-subscriber stream=14473 wall_ms=1783793342491 mono_ms=47672032 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674625 event=stream-sub-attach stream=14474 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674625 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674626 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674626 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain wall_ms=1783793345085 mono_ms=47674627 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain stream-subscriber stream=14474 wall_ms=1783793345085 mono_ms=47674627 event=stream-sub-attach stream=14474 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain stream-subscriber stream=14474 wall_ms=1783793345089 mono_ms=47674631 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28866 role=brain wall_ms=1783793347254 mono_ms=47676796 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28866 role=brain wall_ms=1783793347255 mono_ms=47676796 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28867 role=brain wall_ms=1783793352297 mono_ms=47681838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28867 role=brain wall_ms=1783793352297 mono_ms=47681838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28868 role=brain wall_ms=1783793357337 mono_ms=47686879 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28868 role=brain wall_ms=1783793357337 mono_ms=47686879 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=stream-sub-attach stream=14477 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain wall_ms=1783793357547 mono_ms=47687089 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain stream-subscriber stream=14477 wall_ms=1783793357547 mono_ms=47687089 event=stream-sub-attach stream=14477 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain stream-subscriber stream=14477 wall_ms=1783793357551 mono_ms=47687092 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=stream-sub-attach stream=14478 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358060 mono_ms=47687601 event=stream-sub-attach stream=14478 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358060 mono_ms=47687601 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358064 mono_ms=47687606 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360122 mono_ms=47689664 event=stream-sub-attach stream=14479 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360122 mono_ms=47689664 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360123 mono_ms=47689665 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360123 mono_ms=47689665 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain wall_ms=1783793360124 mono_ms=47689666 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain stream-subscriber stream=14479 wall_ms=1783793360124 mono_ms=47689666 event=stream-sub-attach stream=14479 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain stream-subscriber stream=14479 wall_ms=1783793360128 mono_ms=47689670 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361171 mono_ms=47690713 event=stream-sub-attach stream=14480 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361171 mono_ms=47690713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=stream-sub-attach stream=14480 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361176 mono_ms=47690718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28877 role=brain wall_ms=1783793362379 mono_ms=47691920 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28877 role=brain wall_ms=1783793362379 mono_ms=47691920 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28878 role=brain wall_ms=1783793367424 mono_ms=47696966 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28878 role=brain wall_ms=1783793367425 mono_ms=47696966 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367580 mono_ms=47697122 event=stream-sub-attach stream=14481 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367580 mono_ms=47697122 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=stream-sub-attach stream=14481 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697123 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59459779 id=7d06a2bd00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f addr=EndpointAddr { id: PublicKey(7d06a2bd00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f), addrs: {Ip(100.68.35.65:63050), Ip(192.168.1.81:63050)} }\nPAIR_MEET_UP:SPT_DEV step=59459779 id=7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a addr=EndpointAddr { id: PublicKey(7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a), addrs: {Ip(100.68.35.65:63052), Ip(192.168.1.81:63052)} }\nPAIR_MEET_UP:BIGNET step=59459779 id=6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d addr=EndpointAddr { id: PublicKey(6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d), addrs: {Ip(100.68.35.65:63064), Ip(192.168.1.81:63064)} }","truncated":true,"truncatedBy":"lines","totalLines":120,"totalBytes":18555,"outputLines":105,"outputBytes":18555,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=stream-sub-attach stream=14469 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657074 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657074 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain wall_ms=1783793327533 mono_ms=47657075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain stream-subscriber stream=14469 wall_ms=1783793327533 mono_ms=47657075 event=stream-sub-attach stream=14469 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28852 role=brain stream-subscriber stream=14469 wall_ms=1783793327536 mono_ms=47657078 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=stream-sub-attach stream=14470 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28853 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=stream-sub-attach stream=14470 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327790 mono_ms=47657332 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28854 role=brain stream-subscriber stream=14470 wall_ms=1783793327795 mono_ms=47657337 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28855 role=brain wall_ms=1783793332129 mono_ms=47661671 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28855 role=brain wall_ms=1783793332129 mono_ms=47661671 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334171 mono_ms=47663713 event=stream-sub-attach stream=14471 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=stream-sub-attach stream=14472 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334171 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28857 role=brain stream-subscriber stream=14472 wall_ms=1783793334171 mono_ms=47663713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334172 mono_ms=47663713 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28856 role=brain stream-subscriber stream=14471 wall_ms=1783793334172 mono_ms=47663713 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334172 mono_ms=47663713 event=stream-sub-attach stream=14472 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334172 mono_ms=47663713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain wall_ms=1783793334172 mono_ms=47663714 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain stream-subscriber stream=14471 wall_ms=1783793334173 mono_ms=47663714 event=stream-sub-attach stream=14471 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28858 role=brain stream-subscriber stream=14472 wall_ms=1783793334177 mono_ms=47663718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28859 role=brain stream-subscriber stream=14471 wall_ms=1783793334234 mono_ms=47663776 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28860 role=brain wall_ms=1783793337171 mono_ms=47666713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28860 role=brain wall_ms=1783793337171 mono_ms=47666713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59459778 id=5c5a2bc3bcdd364a520b96f4d80dd8c6af80d2c2345867d267b4d89fc3caa390 addr=EndpointAddr { id: PublicKey(5c5a2bc3bcdd364a520b96f4d80dd8c6af80d2c2345867d267b4d89fc3caa390), addrs: {Ip(100.68.35.65:64802), Ip(192.168.1.81:64802)} }\nPAIR_MEET_UP:BS-Resources step=59459778 id=33172803420a4f68bd439457a0c00460997840a739d6859373aee5f49b796882 addr=EndpointAddr { id: PublicKey(33172803420a4f68bd439457a0c00460997840a739d6859373aee5f49b796882), addrs: {Ip(100.68.35.65:64808), Ip(192.168.1.81:64808)} }\nPAIR_MEET_UP:BIGNET step=59459778 id=e1b09c587e2ae9048e09d781a8981c2b988e060a4be6259572b827e896bf4a6f addr=EndpointAddr { id: PublicKey(e1b09c587e2ae9048e09d781a8981c2b988e060a4be6259572b827e896bf4a6f), addrs: {Ip(100.68.35.65:64810), Ip(192.168.1.81:64810)} }\nCONN_LIFECYCLE: conn=28861 role=brain wall_ms=1783793342213 mono_ms=47671755 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28861 role=brain wall_ms=1783793342214 mono_ms=47671755 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 event=stream-sub-attach stream=14473 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672027 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28862 role=brain stream-subscriber stream=14473 wall_ms=1783793342486 mono_ms=47672028 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain wall_ms=1783793342487 mono_ms=47672029 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain stream-subscriber stream=14473 wall_ms=1783793342487 mono_ms=47672029 event=stream-sub-attach stream=14473 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28863 role=brain stream-subscriber stream=14473 wall_ms=1783793342491 mono_ms=47672032 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674625 event=stream-sub-attach stream=14474 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674625 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674626 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28864 role=brain stream-subscriber stream=14474 wall_ms=1783793345084 mono_ms=47674626 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain wall_ms=1783793345085 mono_ms=47674627 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain stream-subscriber stream=14474 wall_ms=1783793345085 mono_ms=47674627 event=stream-sub-attach stream=14474 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28865 role=brain stream-subscriber stream=14474 wall_ms=1783793345089 mono_ms=47674631 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28866 role=brain wall_ms=1783793347254 mono_ms=47676796 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28866 role=brain wall_ms=1783793347255 mono_ms=47676796 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28867 role=brain wall_ms=1783793352297 mono_ms=47681838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28867 role=brain wall_ms=1783793352297 mono_ms=47681838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28868 role=brain wall_ms=1783793357337 mono_ms=47686879 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28868 role=brain wall_ms=1783793357337 mono_ms=47686879 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=stream-sub-attach stream=14477 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28869 role=brain stream-subscriber stream=14477 wall_ms=1783793357546 mono_ms=47687088 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain wall_ms=1783793357547 mono_ms=47687089 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain stream-subscriber stream=14477 wall_ms=1783793357547 mono_ms=47687089 event=stream-sub-attach stream=14477 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28870 role=brain stream-subscriber stream=14477 wall_ms=1783793357551 mono_ms=47687092 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=stream-sub-attach stream=14478 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28871 role=brain stream-subscriber stream=14478 wall_ms=1783793358059 mono_ms=47687601 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358060 mono_ms=47687601 event=stream-sub-attach stream=14478 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358060 mono_ms=47687601 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28872 role=brain stream-subscriber stream=14478 wall_ms=1783793358064 mono_ms=47687606 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360122 mono_ms=47689664 event=stream-sub-attach stream=14479 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360122 mono_ms=47689664 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360123 mono_ms=47689665 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=28873 role=brain stream-subscriber stream=14479 wall_ms=1783793360123 mono_ms=47689665 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain wall_ms=1783793360124 mono_ms=47689666 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain stream-subscriber stream=14479 wall_ms=1783793360124 mono_ms=47689666 event=stream-sub-attach stream=14479 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28874 role=brain stream-subscriber stream=14479 wall_ms=1783793360128 mono_ms=47689670 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361171 mono_ms=47690713 event=stream-sub-attach stream=14480 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361171 mono_ms=47690713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28875 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=stream-sub-attach stream=14480 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361172 mono_ms=47690713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28876 role=brain stream-subscriber stream=14480 wall_ms=1783793361176 mono_ms=47690718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28877 role=brain wall_ms=1783793362379 mono_ms=47691920 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28877 role=brain wall_ms=1783793362379 mono_ms=47691920 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=28878 role=brain wall_ms=1783793367424 mono_ms=47696966 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28878 role=brain wall_ms=1783793367425 mono_ms=47696966 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367580 mono_ms=47697122 event=stream-sub-attach stream=14481 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367580 mono_ms=47697122 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28879 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=stream-sub-attach stream=14481 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697122 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=28880 role=brain stream-subscriber stream=14481 wall_ms=1783793367581 mono_ms=47697123 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59459779 id=7d06a2bd00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f addr=EndpointAddr { id: PublicKey(7d06a2bd00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f), addrs: {Ip(100.68.35.65:63050), Ip(192.168.1.81:63050)} }\nPAIR_MEET_UP:SPT_DEV step=59459779 id=7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a addr=EndpointAddr { id: PublicKey(7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a), addrs: {Ip(100.68.35.65:63052), Ip(192.168.1.81:63052)} }\nPAIR_MEET_UP:BIGNET step=59459779 id=6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d addr=EndpointAddr { id: PublicKey(6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d), addrs: {Ip(100.68.35.65:63064), Ip(192.168.1.81:63064)} }","startLine":99999,"lineNumbers":[99999,100000,100001,100002,100003,100004,100005,100006,100007,100008,100009,100010,100011,100012,100013,100014,100015,100016,100017,100018,100019,100020,100021,100022,100023,100024,100025,100026,100027,100028,100029,100030,100031,100032,100033,100034,100035,100036,100037,100038,100039,100040,100041,100042,100043,100044,100045,100046,100047,100048,100049,100050,100051,100052,100053,100054,100055,100056,100057,100058,100059,100060,100061,100062,100063,100064,100065,100066,100067,100068,100069,100070,100071,100072,100073,100074,100075,100076,100077,100078,100079,100080,100081,100082,100083,100084,100085,100086,100087,100088,100089,100090,100091,100092,100093,100094,100095,100096,100097,100098,100099,100100,100101,100102,100103]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":120,"totalBytes":18555,"outputLines":105,"outputBytes":18555,"shownRange":{"start":99999,"end":100103},"nextOffset":100104}}},"isError":false,"timestamp":1784069398127}}
{"type":"message","id":"2852f3b2","parentId":"199298b3","timestamp":"2026-07-14T22:50:07.641Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Probing total log size beyond known range**"},{"type":"toolCall","id":"call_kRM2SgIlwZPB8zv3XYkKh9mc|fc_050f56f290a937ae016a56bd1d52348196af71db0e8b287b61","name":"read","arguments":{"i":"Finding current log end","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"200000-200010"}},{"type":"toolCall","id":"call_5o0Y9a2QmEw9LolJCpFWO5le|fc_050f56f290a937ae016a56bd1d5240819684b0515b0597131a","name":"read","arguments":{"i":"Reading recent current log","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"150000-150100"}},{"type":"toolCall","id":"call_YiTsNEqzc5e2YmLQAq40W3z2|fc_050f56f290a937ae016a56bd1d52488196a8a2142bd90461b3","name":"read","arguments":{"i":"Reading later current log","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"180000-180100"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":14031,"output":255,"cacheRead":270848,"cacheWrite":0,"totalTokens":285134,"reasoningTokens":95,"cost":{"input":0.07015500000000001,"output":0.0076500000000000005,"cacheRead":0.135424,"cacheWrite":0,"total":0.213229}},"stopReason":"toolUse","timestamp":1784069398172,"responseId":"resp_050f56f290a937ae016a56bd1653008196834cfb516d0d664f","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bd1870b881969874b64243822fde","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr0diGStHR72mRBkteaisAmIe7xKw_DVBl6k-VG-yC342P_axo-yyWb2B4La-XEbHScChM4PzO3pmCFaosZJnn6_dYsb2_zvSWOU_KsgQ6A-I3J-Gt6qhuLbo7Kq13nzluvD8NdvPS3_-xmOL1hI1YSOiD9f_idEVEXKxq__d0Zg0X3g0-87v7MNYpVi8hIDj8y9SS1JtCY2SfPivGFA6Vbmwuc4y8MvZFxKO_KBoaNfmIa2o1IbR7R07z2iJVFQODdNTNf7akRW16XFSDptcPPklM6FEA8y9nCeP5OATch3-Qd_tfc4PJe_uM9PVm-v0B_dbhgD0IGBypNpAt2boLQw2ImOExkfJJEF4jHh9QaI7xtfpvOxjVU58a9LTG_azMq7mZHJx7BAFG9Kw73UydBh8E0J8tbKxXJ2E7bD9mtg541Dw_bHucl8Xrta7EKpN4AMI59wVFhAgu2lyPNkQD2jSpIAn-KTswSoBLug5SFgj6BvZefEkrULZU7C2UfV3aDtQojd6M5IUU3Px98bY3UTXsOpXA4SqjP5-FPNGzZKE6u-pChYjdXdCCMOKPQw9aveuNIyVDvlpN-HLhy5ycfdvTQSF911ujEiP77JCFLkqhe83MTl7vR7Iety280H5pLo2mPmermhP5Obrv24NEIu3swkntjIKzvStFK20Ed_SckPsbj4NTBZ2_xevS14VGnZHXPxhl3D1dEW1i8xxIDD-gySYq88UkVbWZ3UUF--XlMALxIelvpu0ZndYocvZsDHKjumkoPoRKQiXrpxO9FlMo8YytmTvrH6rA1lWNsUk6QA-n3oKN-Ez1NupCzjYCiZ4GeNaquJjE-P2vX1K4e7Znn6VPKixuguuN4B8RvCAvwhNYSPXdIZrHg_WUQXOfuiOJ3ltTygb0J7tWxlpXgUIE7pj-tRtDAvkgiNKDyjlBhS4u5OjmiLizKQxrHzF_1j16Rx4vlej-8Zcff7Bn39nB8tmGaY1pmWpKX0JegTIK65Dq_TEBPYA7HjucKjstY3iQw77KiQja-vL2QWAcuBH46JF9nQPsdzC8YjB3geye_kMxKz-91KgNPvuZVidRe7ejYOMOa3mIgj0XwH64BsVh0dqLKjR8SxN2ipK9Lo3ly00ziV_QkIZSB-IeFQp6ccgEwt_eeCEzDP1O0p1RxaevDkUqYveV5NwBITngoGIcLKzR_fRYBbHkV5mUX6vKxQeLgmtTeqTzPQ0iYzFgxRA41h4dsrncRGKZb61zfU-3O8o12mddayca8OXTyDwROiHH1x-1iO1uibythRMZTJN1wFNbM9H-7G1o6KIUIxQ9nsuNgJiNfovpv5aEo4hyoUgbiIcYjozMaumj6UH_p_ajWorU1PaeFNwi-Bna1RrIM_JWOjbHPYJQYtefUW8fiBRTn9VQcGp3uSJN6slcWHy_9Vwwk9ND8q4pKg0HECBcA=","summary":[{"type":"summary_text","text":"**Probing total log size beyond known range**"}]},{"id":"fc_050f56f290a937ae016a56bd1d52348196af71db0e8b287b61","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding current log end\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"200000-200010\"}","call_id":"call_kRM2SgIlwZPB8zv3XYkKh9mc","name":"read"},{"id":"fc_050f56f290a937ae016a56bd1d5240819684b0515b0597131a","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading recent current log\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"150000-150100\"}","call_id":"call_5o0Y9a2QmEw9LolJCpFWO5le","name":"read"},{"id":"fc_050f56f290a937ae016a56bd1d52488196a8a2142bd90461b3","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading later current log\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"180000-180100\"}","call_id":"call_YiTsNEqzc5e2YmLQAq40W3z2","name":"read"}]},"duration":9467.706800043583,"ttft":2313.656500041485,"contextSnapshot":{"promptTokens":284879,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_kRM2SgIlwZPB8zv3XYkKh9mc|fc_050f56f290a937ae016a56bd1d52348196af71db0e8b287b61","toolName":"read","startedAt":"2026-07-14T22:50:07.641Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Finding current log end"},"id":"552aeb69","parentId":"2852f3b2","timestamp":"2026-07-14T22:50:07.641Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_5o0Y9a2QmEw9LolJCpFWO5le|fc_050f56f290a937ae016a56bd1d5240819684b0515b0597131a","toolName":"read","startedAt":"2026-07-14T22:50:07.641Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading recent current log"},"id":"bdef7fc0","parentId":"552aeb69","timestamp":"2026-07-14T22:50:07.641Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_YiTsNEqzc5e2YmLQAq40W3z2|fc_050f56f290a937ae016a56bd1d52488196a8a2142bd90461b3","toolName":"read","startedAt":"2026-07-14T22:50:07.641Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading later current log"},"id":"1e96b957","parentId":"bdef7fc0","timestamp":"2026-07-14T22:50:07.641Z"}
{"type":"message","id":"b900990e","parentId":"1e96b957","timestamp":"2026-07-14T22:50:07.847Z","message":{"role":"toolResult","toolCallId":"call_5o0Y9a2QmEw9LolJCpFWO5le|fc_050f56f290a937ae016a56bd1d5240819684b0515b0597131a","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=43964 role=brain stream-subscriber stream=21949 wall_ms=1783818349185 mono_ms=72678698 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain wall_ms=1783818349186 mono_ms=72678699 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349186 mono_ms=72678699 event=stream-sub-attach stream=21949 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43965 role=brain stream-subscriber stream=21948 wall_ms=1783818349192 mono_ms=72678705 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349198 mono_ms=72678711 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352884 mono_ms=72682398 event=stream-sub-attach stream=21951 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=stream-sub-attach stream=21951 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352890 mono_ms=72682404 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43969 role=brain wall_ms=1783818353402 mono_ms=72682915 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43969 role=brain wall_ms=1783818353402 mono_ms=72682916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=43970 role=brain wall_ms=1783818358445 mono_ms=72687959 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43970 role=brain wall_ms=1783818358446 mono_ms=72687959 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 event=stream-sub-attach stream=21952 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360768 mono_ms=72690281 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain wall_ms=1783818360768 mono_ms=72690282 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain stream-subscriber stream=21952 wall_ms=1783818360769 mono_ms=72690282 event=stream-sub-attach stream=21952 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain stream-subscriber stream=21952 wall_ms=1783818360772 mono_ms=72690286 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59460612 id=064031ee416879af8d209d9935c601265513232b4ab25c2162dd399b4edba5da addr=EndpointAddr { id: PublicKey(064031ee416879af8d209d9935c601265513232b4ab25c2162dd399b4edba5da), addrs: {Ip(100.68.35.65:50480), Ip(192.168.1.81:50480)} }\nPAIR_MEET_UP:SPT_DEV step=59460612 id=5f4d1378a54c39e07f19a43d83dccc923f66e3a04817d861a3f27e3ed0d8811a addr=EndpointAddr { id: PublicKey(5f4d1378a54c39e07f19a43d83dccc923f66e3a04817d861a3f27e3ed0d8811a), addrs: {Ip(100.68.35.65:50482), Ip(192.168.1.81:50482)} }\nPAIR_MEET_UP:BS-Resources step=59460612 id=867a1e592b0dbb4cbe9abd375af22753f51c471050ab5797863601208907bfc2 addr=EndpointAddr { id: PublicKey(867a1e592b0dbb4cbe9abd375af22753f51c471050ab5797863601208907bfc2), addrs: {Ip(100.68.35.65:50492), Ip(192.168.1.81:50492)} }\nCONN_LIFECYCLE: conn=43973 role=brain wall_ms=1783818363489 mono_ms=72693002 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43973 role=brain wall_ms=1783818363489 mono_ms=72693002 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=stream-sub-attach stream=21953 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain wall_ms=1783818364245 mono_ms=72693759 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain stream-subscriber stream=21953 wall_ms=1783818364245 mono_ms=72693759 event=stream-sub-attach stream=21953 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain stream-subscriber stream=21953 wall_ms=1783818364250 mono_ms=72693763 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43976 role=brain wall_ms=1783818368532 mono_ms=72698046 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43976 role=brain wall_ms=1783818368532 mono_ms=72698046 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43977 role=brain wall_ms=1783818373577 mono_ms=72703091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43977 role=brain wall_ms=1783818373578 mono_ms=72703091 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375743 mono_ms=72705257 event=stream-sub-attach stream=21956 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375743 mono_ms=72705257 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375744 mono_ms=72705257 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375744 mono_ms=72705257 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain wall_ms=1783818375745 mono_ms=72705258 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain stream-subscriber stream=21956 wall_ms=1783818375745 mono_ms=72705258 event=stream-sub-attach stream=21956 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain stream-subscriber stream=21956 wall_ms=1783818375749 mono_ms=72705262 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=43980 role=brain wall_ms=1783818378622 mono_ms=72708135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43980 role=brain wall_ms=1783818378622 mono_ms=72708135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=stream-sub-attach stream=21958 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708822 event=stream-sub-attach stream=21957 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=stream-sub-attach stream=21957 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain wall_ms=1783818379310 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain stream-subscriber stream=21958 wall_ms=1783818379310 mono_ms=72708823 event=stream-sub-attach stream=21958 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379316 mono_ms=72708830 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain stream-subscriber stream=21958 wall_ms=1783818379323 mono_ms=72708836 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=stream-sub-attach stream=21961 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712151 event=stream-sub-attach stream=21961 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382638 mono_ms=72712151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=stream-sub-attach stream=21962 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=stream-sub-attach stream=21962 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383386 mono_ms=72712900 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43989 role=brain wall_ms=1783818383667 mono_ms=72713180 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43989 role=brain wall_ms=1783818383667 mono_ms=72713180 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43990 role=brain wall_ms=1783818388712 mono_ms=72718225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43990 role=brain wall_ms=1783818388712 mono_ms=72718225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59460613 id=c7fbbaa52f8c8ddf415a03ba9bf755e3861ebf5fce7e5d48d375981427bf63b1 addr=EndpointAddr { id: PublicKey(c7fbbaa52f8c8ddf415a03ba9bf755e3861ebf5fce7e5d48d375981427bf63b1), addrs: {Ip(100.68.35.65:51335), Ip(192.168.1.81:51335)} }\nPAIR_MEET_UP:SPT_DEV step=59460613 id=8f0d895aa2dfdee835aa84042cd1b1ce39dfba8252f98156792725ed5b324660 addr=EndpointAddr { id: PublicKey(8f0d895aa2dfdee835aa84042cd1b1ce39dfba8252f98156792725ed5b324660), addrs: {Ip(100.68.35.65:51336), Ip(192.168.1.81:51336)} }\nPAIR_MEET_UP:BS-Resources step=59460613 id=2789c465560d7b1e768d35d3558faa5e9bcc62569d5e01df4c7d7b2f33a9f4f8 addr=EndpointAddr { id: PublicKey(2789c465560d7b1e768d35d3558faa5e9bcc62569d5e01df4c7d7b2f33a9f4f8), addrs: {Ip(100.68.35.65:51347), Ip(192.168.1.81:51347)} }\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=stream-sub-attach stream=21963 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain wall_ms=1783818391915 mono_ms=72721428 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain stream-subscriber stream=21963 wall_ms=1783818391915 mono_ms=72721429 event=stream-sub-attach stream=21963 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain stream-subscriber stream=21963 wall_ms=1783818391919 mono_ms=72721433 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43993 role=brain wall_ms=1783818393757 mono_ms=72723271 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43993 role=brain wall_ms=1783818393757 mono_ms=72723271 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394744 mono_ms=72724258 event=stream-sub-attach stream=21964 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394744 mono_ms=72724258 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43995 role=brain wall_ms=1783818394746 mono_ms=72724259 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 149999-150103 of 151. Use :150104 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=43964 role=brain stream-subscriber stream=21949 wall_ms=1783818349185 mono_ms=72678698 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain wall_ms=1783818349186 mono_ms=72678699 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349186 mono_ms=72678699 event=stream-sub-attach stream=21949 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43965 role=brain stream-subscriber stream=21948 wall_ms=1783818349192 mono_ms=72678705 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349198 mono_ms=72678711 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352884 mono_ms=72682398 event=stream-sub-attach stream=21951 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=stream-sub-attach stream=21951 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352890 mono_ms=72682404 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43969 role=brain wall_ms=1783818353402 mono_ms=72682915 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43969 role=brain wall_ms=1783818353402 mono_ms=72682916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=43970 role=brain wall_ms=1783818358445 mono_ms=72687959 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43970 role=brain wall_ms=1783818358446 mono_ms=72687959 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 event=stream-sub-attach stream=21952 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360768 mono_ms=72690281 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain wall_ms=1783818360768 mono_ms=72690282 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain stream-subscriber stream=21952 wall_ms=1783818360769 mono_ms=72690282 event=stream-sub-attach stream=21952 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain stream-subscriber stream=21952 wall_ms=1783818360772 mono_ms=72690286 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59460612 id=064031ee416879af8d209d9935c601265513232b4ab25c2162dd399b4edba5da addr=EndpointAddr { id: PublicKey(064031ee416879af8d209d9935c601265513232b4ab25c2162dd399b4edba5da), addrs: {Ip(100.68.35.65:50480), Ip(192.168.1.81:50480)} }\nPAIR_MEET_UP:SPT_DEV step=59460612 id=5f4d1378a54c39e07f19a43d83dccc923f66e3a04817d861a3f27e3ed0d8811a addr=EndpointAddr { id: PublicKey(5f4d1378a54c39e07f19a43d83dccc923f66e3a04817d861a3f27e3ed0d8811a), addrs: {Ip(100.68.35.65:50482), Ip(192.168.1.81:50482)} }\nPAIR_MEET_UP:BS-Resources step=59460612 id=867a1e592b0dbb4cbe9abd375af22753f51c471050ab5797863601208907bfc2 addr=EndpointAddr { id: PublicKey(867a1e592b0dbb4cbe9abd375af22753f51c471050ab5797863601208907bfc2), addrs: {Ip(100.68.35.65:50492), Ip(192.168.1.81:50492)} }\nCONN_LIFECYCLE: conn=43973 role=brain wall_ms=1783818363489 mono_ms=72693002 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43973 role=brain wall_ms=1783818363489 mono_ms=72693002 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=stream-sub-attach stream=21953 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain wall_ms=1783818364245 mono_ms=72693759 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain stream-subscriber stream=21953 wall_ms=1783818364245 mono_ms=72693759 event=stream-sub-attach stream=21953 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain stream-subscriber stream=21953 wall_ms=1783818364250 mono_ms=72693763 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43976 role=brain wall_ms=1783818368532 mono_ms=72698046 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43976 role=brain wall_ms=1783818368532 mono_ms=72698046 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43977 role=brain wall_ms=1783818373577 mono_ms=72703091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43977 role=brain wall_ms=1783818373578 mono_ms=72703091 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375743 mono_ms=72705257 event=stream-sub-attach stream=21956 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375743 mono_ms=72705257 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375744 mono_ms=72705257 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375744 mono_ms=72705257 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain wall_ms=1783818375745 mono_ms=72705258 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain stream-subscriber stream=21956 wall_ms=1783818375745 mono_ms=72705258 event=stream-sub-attach stream=21956 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain stream-subscriber stream=21956 wall_ms=1783818375749 mono_ms=72705262 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=43980 role=brain wall_ms=1783818378622 mono_ms=72708135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43980 role=brain wall_ms=1783818378622 mono_ms=72708135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=stream-sub-attach stream=21958 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708822 event=stream-sub-attach stream=21957 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=stream-sub-attach stream=21957 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain wall_ms=1783818379310 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain stream-subscriber stream=21958 wall_ms=1783818379310 mono_ms=72708823 event=stream-sub-attach stream=21958 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379316 mono_ms=72708830 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain stream-subscriber stream=21958 wall_ms=1783818379323 mono_ms=72708836 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=stream-sub-attach stream=21961 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712151 event=stream-sub-attach stream=21961 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382638 mono_ms=72712151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=stream-sub-attach stream=21962 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=stream-sub-attach stream=21962 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383386 mono_ms=72712900 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43989 role=brain wall_ms=1783818383667 mono_ms=72713180 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43989 role=brain wall_ms=1783818383667 mono_ms=72713180 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43990 role=brain wall_ms=1783818388712 mono_ms=72718225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43990 role=brain wall_ms=1783818388712 mono_ms=72718225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59460613 id=c7fbbaa52f8c8ddf415a03ba9bf755e3861ebf5fce7e5d48d375981427bf63b1 addr=EndpointAddr { id: PublicKey(c7fbbaa52f8c8ddf415a03ba9bf755e3861ebf5fce7e5d48d375981427bf63b1), addrs: {Ip(100.68.35.65:51335), Ip(192.168.1.81:51335)} }\nPAIR_MEET_UP:SPT_DEV step=59460613 id=8f0d895aa2dfdee835aa84042cd1b1ce39dfba8252f98156792725ed5b324660 addr=EndpointAddr { id: PublicKey(8f0d895aa2dfdee835aa84042cd1b1ce39dfba8252f98156792725ed5b324660), addrs: {Ip(100.68.35.65:51336), Ip(192.168.1.81:51336)} }\nPAIR_MEET_UP:BS-Resources step=59460613 id=2789c465560d7b1e768d35d3558faa5e9bcc62569d5e01df4c7d7b2f33a9f4f8 addr=EndpointAddr { id: PublicKey(2789c465560d7b1e768d35d3558faa5e9bcc62569d5e01df4c7d7b2f33a9f4f8), addrs: {Ip(100.68.35.65:51347), Ip(192.168.1.81:51347)} }\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=stream-sub-attach stream=21963 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain wall_ms=1783818391915 mono_ms=72721428 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain stream-subscriber stream=21963 wall_ms=1783818391915 mono_ms=72721429 event=stream-sub-attach stream=21963 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain stream-subscriber stream=21963 wall_ms=1783818391919 mono_ms=72721433 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43993 role=brain wall_ms=1783818393757 mono_ms=72723271 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43993 role=brain wall_ms=1783818393757 mono_ms=72723271 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394744 mono_ms=72724258 event=stream-sub-attach stream=21964 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394744 mono_ms=72724258 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43995 role=brain wall_ms=1783818394746 mono_ms=72724259 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":151,"totalBytes":18400,"outputLines":105,"outputBytes":18400,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=43964 role=brain stream-subscriber stream=21949 wall_ms=1783818349185 mono_ms=72678698 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain wall_ms=1783818349186 mono_ms=72678699 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349186 mono_ms=72678699 event=stream-sub-attach stream=21949 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43965 role=brain stream-subscriber stream=21948 wall_ms=1783818349192 mono_ms=72678705 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349198 mono_ms=72678711 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352884 mono_ms=72682398 event=stream-sub-attach stream=21951 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=stream-sub-attach stream=21951 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43968 role=brain stream-subscriber stream=21951 wall_ms=1783818352890 mono_ms=72682404 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43969 role=brain wall_ms=1783818353402 mono_ms=72682915 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43969 role=brain wall_ms=1783818353402 mono_ms=72682916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=43970 role=brain wall_ms=1783818358445 mono_ms=72687959 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43970 role=brain wall_ms=1783818358446 mono_ms=72687959 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 event=stream-sub-attach stream=21952 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360767 mono_ms=72690281 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43971 role=brain stream-subscriber stream=21952 wall_ms=1783818360768 mono_ms=72690281 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain wall_ms=1783818360768 mono_ms=72690282 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain stream-subscriber stream=21952 wall_ms=1783818360769 mono_ms=72690282 event=stream-sub-attach stream=21952 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43972 role=brain stream-subscriber stream=21952 wall_ms=1783818360772 mono_ms=72690286 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59460612 id=064031ee416879af8d209d9935c601265513232b4ab25c2162dd399b4edba5da addr=EndpointAddr { id: PublicKey(064031ee416879af8d209d9935c601265513232b4ab25c2162dd399b4edba5da), addrs: {Ip(100.68.35.65:50480), Ip(192.168.1.81:50480)} }\nPAIR_MEET_UP:SPT_DEV step=59460612 id=5f4d1378a54c39e07f19a43d83dccc923f66e3a04817d861a3f27e3ed0d8811a addr=EndpointAddr { id: PublicKey(5f4d1378a54c39e07f19a43d83dccc923f66e3a04817d861a3f27e3ed0d8811a), addrs: {Ip(100.68.35.65:50482), Ip(192.168.1.81:50482)} }\nPAIR_MEET_UP:BS-Resources step=59460612 id=867a1e592b0dbb4cbe9abd375af22753f51c471050ab5797863601208907bfc2 addr=EndpointAddr { id: PublicKey(867a1e592b0dbb4cbe9abd375af22753f51c471050ab5797863601208907bfc2), addrs: {Ip(100.68.35.65:50492), Ip(192.168.1.81:50492)} }\nCONN_LIFECYCLE: conn=43973 role=brain wall_ms=1783818363489 mono_ms=72693002 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43973 role=brain wall_ms=1783818363489 mono_ms=72693002 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=stream-sub-attach stream=21953 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43974 role=brain stream-subscriber stream=21953 wall_ms=1783818364244 mono_ms=72693758 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain wall_ms=1783818364245 mono_ms=72693759 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain stream-subscriber stream=21953 wall_ms=1783818364245 mono_ms=72693759 event=stream-sub-attach stream=21953 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43975 role=brain stream-subscriber stream=21953 wall_ms=1783818364250 mono_ms=72693763 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43976 role=brain wall_ms=1783818368532 mono_ms=72698046 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43976 role=brain wall_ms=1783818368532 mono_ms=72698046 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43977 role=brain wall_ms=1783818373577 mono_ms=72703091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43977 role=brain wall_ms=1783818373578 mono_ms=72703091 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375743 mono_ms=72705257 event=stream-sub-attach stream=21956 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375743 mono_ms=72705257 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375744 mono_ms=72705257 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43978 role=brain stream-subscriber stream=21956 wall_ms=1783818375744 mono_ms=72705257 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain wall_ms=1783818375745 mono_ms=72705258 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain stream-subscriber stream=21956 wall_ms=1783818375745 mono_ms=72705258 event=stream-sub-attach stream=21956 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43979 role=brain stream-subscriber stream=21956 wall_ms=1783818375749 mono_ms=72705262 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=43980 role=brain wall_ms=1783818378622 mono_ms=72708135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43980 role=brain wall_ms=1783818378622 mono_ms=72708135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=stream-sub-attach stream=21958 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43981 role=brain stream-subscriber stream=21958 wall_ms=1783818379309 mono_ms=72708822 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708822 event=stream-sub-attach stream=21957 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43983 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=stream-sub-attach stream=21957 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379309 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain wall_ms=1783818379310 mono_ms=72708823 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain stream-subscriber stream=21958 wall_ms=1783818379310 mono_ms=72708823 event=stream-sub-attach stream=21958 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43984 role=brain stream-subscriber stream=21957 wall_ms=1783818379316 mono_ms=72708830 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43982 role=brain stream-subscriber stream=21958 wall_ms=1783818379323 mono_ms=72708836 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=stream-sub-attach stream=21961 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43985 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712150 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712151 event=stream-sub-attach stream=21961 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382637 mono_ms=72712151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43986 role=brain stream-subscriber stream=21961 wall_ms=1783818382638 mono_ms=72712151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=stream-sub-attach stream=21962 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43987 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=stream-sub-attach stream=21962 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383380 mono_ms=72712893 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43988 role=brain stream-subscriber stream=21962 wall_ms=1783818383386 mono_ms=72712900 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43989 role=brain wall_ms=1783818383667 mono_ms=72713180 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43989 role=brain wall_ms=1783818383667 mono_ms=72713180 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43990 role=brain wall_ms=1783818388712 mono_ms=72718225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43990 role=brain wall_ms=1783818388712 mono_ms=72718225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59460613 id=c7fbbaa52f8c8ddf415a03ba9bf755e3861ebf5fce7e5d48d375981427bf63b1 addr=EndpointAddr { id: PublicKey(c7fbbaa52f8c8ddf415a03ba9bf755e3861ebf5fce7e5d48d375981427bf63b1), addrs: {Ip(100.68.35.65:51335), Ip(192.168.1.81:51335)} }\nPAIR_MEET_UP:SPT_DEV step=59460613 id=8f0d895aa2dfdee835aa84042cd1b1ce39dfba8252f98156792725ed5b324660 addr=EndpointAddr { id: PublicKey(8f0d895aa2dfdee835aa84042cd1b1ce39dfba8252f98156792725ed5b324660), addrs: {Ip(100.68.35.65:51336), Ip(192.168.1.81:51336)} }\nPAIR_MEET_UP:BS-Resources step=59460613 id=2789c465560d7b1e768d35d3558faa5e9bcc62569d5e01df4c7d7b2f33a9f4f8 addr=EndpointAddr { id: PublicKey(2789c465560d7b1e768d35d3558faa5e9bcc62569d5e01df4c7d7b2f33a9f4f8), addrs: {Ip(100.68.35.65:51347), Ip(192.168.1.81:51347)} }\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=stream-sub-attach stream=21963 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43991 role=brain stream-subscriber stream=21963 wall_ms=1783818391914 mono_ms=72721427 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain wall_ms=1783818391915 mono_ms=72721428 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain stream-subscriber stream=21963 wall_ms=1783818391915 mono_ms=72721429 event=stream-sub-attach stream=21963 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43992 role=brain stream-subscriber stream=21963 wall_ms=1783818391919 mono_ms=72721433 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43993 role=brain wall_ms=1783818393757 mono_ms=72723271 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43993 role=brain wall_ms=1783818393757 mono_ms=72723271 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394744 mono_ms=72724258 event=stream-sub-attach stream=21964 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394744 mono_ms=72724258 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=43995 role=brain wall_ms=1783818394746 mono_ms=72724259 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":149999,"lineNumbers":[149999,150000,150001,150002,150003,150004,150005,150006,150007,150008,150009,150010,150011,150012,150013,150014,150015,150016,150017,150018,150019,150020,150021,150022,150023,150024,150025,150026,150027,150028,150029,150030,150031,150032,150033,150034,150035,150036,150037,150038,150039,150040,150041,150042,150043,150044,150045,150046,150047,150048,150049,150050,150051,150052,150053,150054,150055,150056,150057,150058,150059,150060,150061,150062,150063,150064,150065,150066,150067,150068,150069,150070,150071,150072,150073,150074,150075,150076,150077,150078,150079,150080,150081,150082,150083,150084,150085,150086,150087,150088,150089,150090,150091,150092,150093,150094,150095,150096,150097,150098,150099,150100,150101,150102,150103]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":151,"totalBytes":18400,"outputLines":105,"outputBytes":18400,"shownRange":{"start":149999,"end":150103},"nextOffset":150104}}},"isError":false,"timestamp":1784069407846}}
{"type":"message","id":"5d460b87","parentId":"b900990e","timestamp":"2026-07-14T22:50:07.872Z","message":{"role":"toolResult","toolCallId":"call_YiTsNEqzc5e2YmLQAq40W3z2|fc_050f56f290a937ae016a56bd1d52488196a8a2142bd90461b3","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371113 mono_ms=87700615 event=stream-sub-attach stream=26399 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371114 mono_ms=87700615 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371119 mono_ms=87700621 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374456 mono_ms=87703958 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374457 mono_ms=87703958 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=stream-sub-attach stream=26400 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=stream-sub-attach stream=26400 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712776 event=stream-sub-attach stream=26401 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712776 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712777 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712777 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain wall_ms=1783833383276 mono_ms=87712778 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain stream-subscriber stream=26401 wall_ms=1783833383276 mono_ms=87712778 event=stream-sub-attach stream=26401 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain stream-subscriber stream=26401 wall_ms=1783833383280 mono_ms=87712782 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53048 role=brain wall_ms=1783833384548 mono_ms=87714050 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53048 role=brain wall_ms=1783833384548 mono_ms=87714050 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=stream-sub-attach stream=26405 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=stream-sub-attach stream=26404 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384774 mono_ms=87714275 event=stream-sub-attach stream=26404 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384774 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain wall_ms=1783833384775 mono_ms=87714276 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain stream-subscriber stream=26405 wall_ms=1783833384775 mono_ms=87714277 event=stream-sub-attach stream=26405 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384781 mono_ms=87714283 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain stream-subscriber stream=26405 wall_ms=1783833384789 mono_ms=87714291 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53053 role=brain wall_ms=1783833389595 mono_ms=87719097 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53053 role=brain wall_ms=1783833389596 mono_ms=87719097 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59461113 id=174ef3a3f48b795016acb6bc500444636c1093d30402af64ebfb261e587e8f6b addr=EndpointAddr { id: PublicKey(174ef3a3f48b795016acb6bc500444636c1093d30402af64ebfb261e587e8f6b), addrs: {Ip(100.68.35.65:58689), Ip(192.168.1.81:58689)} }\nPAIR_MEET_UP:SPT_DEV step=59461113 id=e6e862f5f0f0ea6ad0f5219b4431230c42af9528298ebbb222ef550c6b971981 addr=EndpointAddr { id: PublicKey(e6e862f5f0f0ea6ad0f5219b4431230c42af9528298ebbb222ef550c6b971981), addrs: {Ip(100.68.35.65:58691), Ip(192.168.1.81:58691)} }\nPAIR_MEET_UP:BS-Resources step=59461113 id=9fabd43ed9d50ffe24341b5dd5b9638bc3eb3276a1cced8fbdcf56c80fca671e addr=EndpointAddr { id: PublicKey(9fabd43ed9d50ffe24341b5dd5b9638bc3eb3276a1cced8fbdcf56c80fca671e), addrs: {Ip(100.68.35.65:58702), Ip(192.168.1.81:58702)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53054 role=brain wall_ms=1783833394640 mono_ms=87724142 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53054 role=brain wall_ms=1783833394641 mono_ms=87724142 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398407 mono_ms=87727909 event=stream-sub-attach stream=26406 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398407 mono_ms=87727909 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398408 mono_ms=87727909 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398408 mono_ms=87727909 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain wall_ms=1783833398409 mono_ms=87727910 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain stream-subscriber stream=26406 wall_ms=1783833398409 mono_ms=87727910 event=stream-sub-attach stream=26406 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain stream-subscriber stream=26406 wall_ms=1783833398413 mono_ms=87727915 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53057 role=brain wall_ms=1783833399692 mono_ms=87729194 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53057 role=brain wall_ms=1783833399692 mono_ms=87729194 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=stream-sub-attach stream=26407 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain wall_ms=1783833399860 mono_ms=87729362 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain stream-subscriber stream=26407 wall_ms=1783833399860 mono_ms=87729362 event=stream-sub-attach stream=26407 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain stream-subscriber stream=26407 wall_ms=1783833399864 mono_ms=87729366 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=stream-sub-attach stream=26408 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833401353 mono_ms=87730855 event=stream-sub-attach stream=26408 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833401353 mono_ms=87730855 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53062 role=brain wall_ms=1783833404740 mono_ms=87734242 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53062 role=brain wall_ms=1783833404740 mono_ms=87734242 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833409293 mono_ms=87738794 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53063 role=brain wall_ms=1783833409787 mono_ms=87739289 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53063 role=brain wall_ms=1783833409787 mono_ms=87739289 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=stream-sub-attach stream=26411 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain wall_ms=1783833413441 mono_ms=87742942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain stream-subscriber stream=26411 wall_ms=1783833413441 mono_ms=87742942 event=stream-sub-attach stream=26411 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain stream-subscriber stream=26411 wall_ms=1783833413445 mono_ms=87742946 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53066 role=brain wall_ms=1783833414832 mono_ms=87744334 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53066 role=brain wall_ms=1783833414832 mono_ms=87744334 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=stream-sub-attach stream=26413 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=stream-sub-attach stream=26412 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415072 mono_ms=87744573 event=stream-sub-attach stream=26412 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415072 mono_ms=87744574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain wall_ms=1783833415073 mono_ms=87744574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain stream-subscriber stream=26413 wall_ms=1783833415073 mono_ms=87744574 event=stream-sub-attach stream=26413 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415079 mono_ms=87744581 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain stream-subscriber stream=26413 wall_ms=1783833415086 mono_ms=87744587 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53071 role=brain wall_ms=1783833419876 mono_ms=87749378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53071 role=brain wall_ms=1783833419876 mono_ms=87749378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59461114 id=1a5d50292ce892923ee1342b665a315b2c7162490e51128e29c7c8824c8b11db addr=EndpointAddr { id: PublicKey(1a5d50292ce892923ee1342b665a315b2c7162490e51128e29c7c8824c8b11db), addrs: {Ip(100.68.35.65:64398), Ip(192.168.1.81:64398)} }\nPAIR_MEET_UP:SPT_DEV step=59461114 id=f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a addr=EndpointAddr { id: PublicKey(f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a), addrs: {Ip(100.68.35.65:64399), Ip(192.168.1.81:64399)} }\nPAIR_MEET_UP:BS-Resources step=59461114 id=ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d addr=EndpointAddr { id: PublicKey(ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d), addrs: {Ip(100.68.35.65:64410), Ip(192.168.1.81:64410)} }\nCONN_LIFECYCLE: conn=53072 role=brain wall_ms=1783833424921 mono_ms=87754423 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 179999-180103 of 129. Use :180104 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371113 mono_ms=87700615 event=stream-sub-attach stream=26399 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371114 mono_ms=87700615 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371119 mono_ms=87700621 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374456 mono_ms=87703958 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374457 mono_ms=87703958 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=stream-sub-attach stream=26400 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=stream-sub-attach stream=26400 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712776 event=stream-sub-attach stream=26401 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712776 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712777 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712777 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain wall_ms=1783833383276 mono_ms=87712778 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain stream-subscriber stream=26401 wall_ms=1783833383276 mono_ms=87712778 event=stream-sub-attach stream=26401 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain stream-subscriber stream=26401 wall_ms=1783833383280 mono_ms=87712782 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53048 role=brain wall_ms=1783833384548 mono_ms=87714050 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53048 role=brain wall_ms=1783833384548 mono_ms=87714050 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=stream-sub-attach stream=26405 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=stream-sub-attach stream=26404 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384774 mono_ms=87714275 event=stream-sub-attach stream=26404 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384774 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain wall_ms=1783833384775 mono_ms=87714276 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain stream-subscriber stream=26405 wall_ms=1783833384775 mono_ms=87714277 event=stream-sub-attach stream=26405 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384781 mono_ms=87714283 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain stream-subscriber stream=26405 wall_ms=1783833384789 mono_ms=87714291 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53053 role=brain wall_ms=1783833389595 mono_ms=87719097 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53053 role=brain wall_ms=1783833389596 mono_ms=87719097 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59461113 id=174ef3a3f48b795016acb6bc500444636c1093d30402af64ebfb261e587e8f6b addr=EndpointAddr { id: PublicKey(174ef3a3f48b795016acb6bc500444636c1093d30402af64ebfb261e587e8f6b), addrs: {Ip(100.68.35.65:58689), Ip(192.168.1.81:58689)} }\nPAIR_MEET_UP:SPT_DEV step=59461113 id=e6e862f5f0f0ea6ad0f5219b4431230c42af9528298ebbb222ef550c6b971981 addr=EndpointAddr { id: PublicKey(e6e862f5f0f0ea6ad0f5219b4431230c42af9528298ebbb222ef550c6b971981), addrs: {Ip(100.68.35.65:58691), Ip(192.168.1.81:58691)} }\nPAIR_MEET_UP:BS-Resources step=59461113 id=9fabd43ed9d50ffe24341b5dd5b9638bc3eb3276a1cced8fbdcf56c80fca671e addr=EndpointAddr { id: PublicKey(9fabd43ed9d50ffe24341b5dd5b9638bc3eb3276a1cced8fbdcf56c80fca671e), addrs: {Ip(100.68.35.65:58702), Ip(192.168.1.81:58702)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53054 role=brain wall_ms=1783833394640 mono_ms=87724142 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53054 role=brain wall_ms=1783833394641 mono_ms=87724142 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398407 mono_ms=87727909 event=stream-sub-attach stream=26406 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398407 mono_ms=87727909 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398408 mono_ms=87727909 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398408 mono_ms=87727909 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain wall_ms=1783833398409 mono_ms=87727910 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain stream-subscriber stream=26406 wall_ms=1783833398409 mono_ms=87727910 event=stream-sub-attach stream=26406 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain stream-subscriber stream=26406 wall_ms=1783833398413 mono_ms=87727915 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53057 role=brain wall_ms=1783833399692 mono_ms=87729194 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53057 role=brain wall_ms=1783833399692 mono_ms=87729194 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=stream-sub-attach stream=26407 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain wall_ms=1783833399860 mono_ms=87729362 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain stream-subscriber stream=26407 wall_ms=1783833399860 mono_ms=87729362 event=stream-sub-attach stream=26407 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain stream-subscriber stream=26407 wall_ms=1783833399864 mono_ms=87729366 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=stream-sub-attach stream=26408 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833401353 mono_ms=87730855 event=stream-sub-attach stream=26408 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833401353 mono_ms=87730855 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53062 role=brain wall_ms=1783833404740 mono_ms=87734242 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53062 role=brain wall_ms=1783833404740 mono_ms=87734242 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833409293 mono_ms=87738794 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53063 role=brain wall_ms=1783833409787 mono_ms=87739289 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53063 role=brain wall_ms=1783833409787 mono_ms=87739289 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=stream-sub-attach stream=26411 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain wall_ms=1783833413441 mono_ms=87742942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain stream-subscriber stream=26411 wall_ms=1783833413441 mono_ms=87742942 event=stream-sub-attach stream=26411 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain stream-subscriber stream=26411 wall_ms=1783833413445 mono_ms=87742946 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53066 role=brain wall_ms=1783833414832 mono_ms=87744334 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53066 role=brain wall_ms=1783833414832 mono_ms=87744334 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=stream-sub-attach stream=26413 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=stream-sub-attach stream=26412 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415072 mono_ms=87744573 event=stream-sub-attach stream=26412 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415072 mono_ms=87744574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain wall_ms=1783833415073 mono_ms=87744574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain stream-subscriber stream=26413 wall_ms=1783833415073 mono_ms=87744574 event=stream-sub-attach stream=26413 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415079 mono_ms=87744581 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain stream-subscriber stream=26413 wall_ms=1783833415086 mono_ms=87744587 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53071 role=brain wall_ms=1783833419876 mono_ms=87749378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53071 role=brain wall_ms=1783833419876 mono_ms=87749378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59461114 id=1a5d50292ce892923ee1342b665a315b2c7162490e51128e29c7c8824c8b11db addr=EndpointAddr { id: PublicKey(1a5d50292ce892923ee1342b665a315b2c7162490e51128e29c7c8824c8b11db), addrs: {Ip(100.68.35.65:64398), Ip(192.168.1.81:64398)} }\nPAIR_MEET_UP:SPT_DEV step=59461114 id=f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a addr=EndpointAddr { id: PublicKey(f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a), addrs: {Ip(100.68.35.65:64399), Ip(192.168.1.81:64399)} }\nPAIR_MEET_UP:BS-Resources step=59461114 id=ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d addr=EndpointAddr { id: PublicKey(ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d), addrs: {Ip(100.68.35.65:64410), Ip(192.168.1.81:64410)} }\nCONN_LIFECYCLE: conn=53072 role=brain wall_ms=1783833424921 mono_ms=87754423 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":129,"totalBytes":18432,"outputLines":105,"outputBytes":18432,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371113 mono_ms=87700615 event=stream-sub-attach stream=26399 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371114 mono_ms=87700615 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371119 mono_ms=87700621 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374456 mono_ms=87703958 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374457 mono_ms=87703958 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=stream-sub-attach stream=26400 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53044 role=brain stream-subscriber stream=26400 wall_ms=1783833382951 mono_ms=87712453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=stream-sub-attach stream=26400 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53045 role=brain stream-subscriber stream=26400 wall_ms=1783833382952 mono_ms=87712454 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712776 event=stream-sub-attach stream=26401 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712776 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712777 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53046 role=brain stream-subscriber stream=26401 wall_ms=1783833383275 mono_ms=87712777 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain wall_ms=1783833383276 mono_ms=87712778 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain stream-subscriber stream=26401 wall_ms=1783833383276 mono_ms=87712778 event=stream-sub-attach stream=26401 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53047 role=brain stream-subscriber stream=26401 wall_ms=1783833383280 mono_ms=87712782 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53048 role=brain wall_ms=1783833384548 mono_ms=87714050 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53048 role=brain wall_ms=1783833384548 mono_ms=87714050 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=stream-sub-attach stream=26405 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=stream-sub-attach stream=26404 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53050 role=brain stream-subscriber stream=26404 wall_ms=1783833384773 mono_ms=87714275 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53049 role=brain stream-subscriber stream=26405 wall_ms=1783833384773 mono_ms=87714275 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384774 mono_ms=87714275 event=stream-sub-attach stream=26404 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384774 mono_ms=87714275 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain wall_ms=1783833384775 mono_ms=87714276 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain stream-subscriber stream=26405 wall_ms=1783833384775 mono_ms=87714277 event=stream-sub-attach stream=26405 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53052 role=brain stream-subscriber stream=26404 wall_ms=1783833384781 mono_ms=87714283 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53051 role=brain stream-subscriber stream=26405 wall_ms=1783833384789 mono_ms=87714291 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53053 role=brain wall_ms=1783833389595 mono_ms=87719097 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53053 role=brain wall_ms=1783833389596 mono_ms=87719097 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59461113 id=174ef3a3f48b795016acb6bc500444636c1093d30402af64ebfb261e587e8f6b addr=EndpointAddr { id: PublicKey(174ef3a3f48b795016acb6bc500444636c1093d30402af64ebfb261e587e8f6b), addrs: {Ip(100.68.35.65:58689), Ip(192.168.1.81:58689)} }\nPAIR_MEET_UP:SPT_DEV step=59461113 id=e6e862f5f0f0ea6ad0f5219b4431230c42af9528298ebbb222ef550c6b971981 addr=EndpointAddr { id: PublicKey(e6e862f5f0f0ea6ad0f5219b4431230c42af9528298ebbb222ef550c6b971981), addrs: {Ip(100.68.35.65:58691), Ip(192.168.1.81:58691)} }\nPAIR_MEET_UP:BS-Resources step=59461113 id=9fabd43ed9d50ffe24341b5dd5b9638bc3eb3276a1cced8fbdcf56c80fca671e addr=EndpointAddr { id: PublicKey(9fabd43ed9d50ffe24341b5dd5b9638bc3eb3276a1cced8fbdcf56c80fca671e), addrs: {Ip(100.68.35.65:58702), Ip(192.168.1.81:58702)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53054 role=brain wall_ms=1783833394640 mono_ms=87724142 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53054 role=brain wall_ms=1783833394641 mono_ms=87724142 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398407 mono_ms=87727909 event=stream-sub-attach stream=26406 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398407 mono_ms=87727909 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398408 mono_ms=87727909 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53055 role=brain stream-subscriber stream=26406 wall_ms=1783833398408 mono_ms=87727909 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain wall_ms=1783833398409 mono_ms=87727910 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain stream-subscriber stream=26406 wall_ms=1783833398409 mono_ms=87727910 event=stream-sub-attach stream=26406 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53056 role=brain stream-subscriber stream=26406 wall_ms=1783833398413 mono_ms=87727915 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53057 role=brain wall_ms=1783833399692 mono_ms=87729194 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53057 role=brain wall_ms=1783833399692 mono_ms=87729194 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=stream-sub-attach stream=26407 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53058 role=brain stream-subscriber stream=26407 wall_ms=1783833399859 mono_ms=87729361 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain wall_ms=1783833399860 mono_ms=87729362 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain stream-subscriber stream=26407 wall_ms=1783833399860 mono_ms=87729362 event=stream-sub-attach stream=26407 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53059 role=brain stream-subscriber stream=26407 wall_ms=1783833399864 mono_ms=87729366 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=stream-sub-attach stream=26408 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53060 role=brain stream-subscriber stream=26408 wall_ms=1783833401352 mono_ms=87730854 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833401353 mono_ms=87730855 event=stream-sub-attach stream=26408 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833401353 mono_ms=87730855 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53062 role=brain wall_ms=1783833404740 mono_ms=87734242 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53062 role=brain wall_ms=1783833404740 mono_ms=87734242 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53061 role=brain stream-subscriber stream=26408 wall_ms=1783833409293 mono_ms=87738794 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53063 role=brain wall_ms=1783833409787 mono_ms=87739289 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53063 role=brain wall_ms=1783833409787 mono_ms=87739289 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=stream-sub-attach stream=26411 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53064 role=brain stream-subscriber stream=26411 wall_ms=1783833413439 mono_ms=87742941 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain wall_ms=1783833413441 mono_ms=87742942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain stream-subscriber stream=26411 wall_ms=1783833413441 mono_ms=87742942 event=stream-sub-attach stream=26411 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53065 role=brain stream-subscriber stream=26411 wall_ms=1783833413445 mono_ms=87742946 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53066 role=brain wall_ms=1783833414832 mono_ms=87744334 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53066 role=brain wall_ms=1783833414832 mono_ms=87744334 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=stream-sub-attach stream=26413 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=stream-sub-attach stream=26412 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53067 role=brain stream-subscriber stream=26413 wall_ms=1783833415071 mono_ms=87744573 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53068 role=brain stream-subscriber stream=26412 wall_ms=1783833415071 mono_ms=87744573 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415072 mono_ms=87744573 event=stream-sub-attach stream=26412 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415072 mono_ms=87744574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain wall_ms=1783833415073 mono_ms=87744574 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain stream-subscriber stream=26413 wall_ms=1783833415073 mono_ms=87744574 event=stream-sub-attach stream=26413 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53070 role=brain stream-subscriber stream=26412 wall_ms=1783833415079 mono_ms=87744581 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53069 role=brain stream-subscriber stream=26413 wall_ms=1783833415086 mono_ms=87744587 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=53071 role=brain wall_ms=1783833419876 mono_ms=87749378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=53071 role=brain wall_ms=1783833419876 mono_ms=87749378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59461114 id=1a5d50292ce892923ee1342b665a315b2c7162490e51128e29c7c8824c8b11db addr=EndpointAddr { id: PublicKey(1a5d50292ce892923ee1342b665a315b2c7162490e51128e29c7c8824c8b11db), addrs: {Ip(100.68.35.65:64398), Ip(192.168.1.81:64398)} }\nPAIR_MEET_UP:SPT_DEV step=59461114 id=f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a addr=EndpointAddr { id: PublicKey(f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a), addrs: {Ip(100.68.35.65:64399), Ip(192.168.1.81:64399)} }\nPAIR_MEET_UP:BS-Resources step=59461114 id=ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d addr=EndpointAddr { id: PublicKey(ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d), addrs: {Ip(100.68.35.65:64410), Ip(192.168.1.81:64410)} }\nCONN_LIFECYCLE: conn=53072 role=brain wall_ms=1783833424921 mono_ms=87754423 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":179999,"lineNumbers":[179999,180000,180001,180002,180003,180004,180005,180006,180007,180008,180009,180010,180011,180012,180013,180014,180015,180016,180017,180018,180019,180020,180021,180022,180023,180024,180025,180026,180027,180028,180029,180030,180031,180032,180033,180034,180035,180036,180037,180038,180039,180040,180041,180042,180043,180044,180045,180046,180047,180048,180049,180050,180051,180052,180053,180054,180055,180056,180057,180058,180059,180060,180061,180062,180063,180064,180065,180066,180067,180068,180069,180070,180071,180072,180073,180074,180075,180076,180077,180078,180079,180080,180081,180082,180083,180084,180085,180086,180087,180088,180089,180090,180091,180092,180093,180094,180095,180096,180097,180098,180099,180100,180101,180102,180103]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":129,"totalBytes":18432,"outputLines":105,"outputBytes":18432,"shownRange":{"start":179999,"end":180103},"nextOffset":180104}}},"isError":false,"timestamp":1784069407872}}
{"type":"message","id":"44f3a46d","parentId":"5d460b87","timestamp":"2026-07-14T22:50:07.889Z","message":{"role":"toolResult","toolCallId":"call_kRM2SgIlwZPB8zv3XYkKh9mc|fc_050f56f290a937ae016a56bd1d52348196af71db0e8b287b61","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350746 mono_ms=97680241 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350752 mono_ms=97680247 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=stream-sub-attach stream=29349 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain wall_ms=1783843359879 mono_ms=97689373 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359879 mono_ms=97689374 event=stream-sub-attach stream=29349 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359883 mono_ms=97689378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59095 role=brain stream-subscriber stream=29350 wall_ms=1783843360563 mono_ms=97690058 event=stream-sub-attach stream=29350 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 199999-200013 of 27. Use :200014 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350746 mono_ms=97680241 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350752 mono_ms=97680247 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=stream-sub-attach stream=29349 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain wall_ms=1783843359879 mono_ms=97689373 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359879 mono_ms=97689374 event=stream-sub-attach stream=29349 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359883 mono_ms=97689378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59095 role=brain stream-subscriber stream=29350 wall_ms=1783843360563 mono_ms=97690058 event=stream-sub-attach stream=29350 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":27,"totalBytes":2617,"outputLines":15,"outputBytes":2617,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350746 mono_ms=97680241 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350752 mono_ms=97680247 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=stream-sub-attach stream=29349 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain wall_ms=1783843359879 mono_ms=97689373 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359879 mono_ms=97689374 event=stream-sub-attach stream=29349 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359883 mono_ms=97689378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=59095 role=brain stream-subscriber stream=29350 wall_ms=1783843360563 mono_ms=97690058 event=stream-sub-attach stream=29350 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]","startLine":199999,"lineNumbers":[199999,200000,200001,200002,200003,200004,200005,200006,200007,200008,200009,200010,200011,200012,200013]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":27,"totalBytes":2617,"outputLines":15,"outputBytes":2617,"shownRange":{"start":199999,"end":200013},"nextOffset":200014}}},"isError":false,"timestamp":1784069407889}}
{"type":"message","id":"67fcadab","parentId":"44f3a46d","timestamp":"2026-07-14T22:50:13.950Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning log line probing**"},{"type":"toolCall","id":"call_HQ1mv6oYMAoh2pCnJZGiMSRz|fc_050f56f290a937ae016a56bd25c8388196a7fab8ca76c9a11a","name":"read","arguments":{"i":"Finding upper log bound","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"400000-400010"}},{"type":"toolCall","id":"call_jD8OuCNsoTP3NIB5NetZ582K|fc_050f56f290a937ae016a56bd25c84c8196bd6fe530f71c68ce","name":"read","arguments":{"i":"Reading near current wall time","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"300000-300050"}},{"type":"toolCall","id":"call_f8KlqCMf5zQdq7HVkFSZ9PvG|fc_050f56f290a937ae016a56bd25c8588196b767ddf27416b742","name":"read","arguments":{"i":"Reading later wall time","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"350000-350050"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":14006,"output":210,"cacheRead":284160,"cacheWrite":0,"totalTokens":298376,"reasoningTokens":49,"cost":{"input":0.07003000000000001,"output":0.0063,"cacheRead":0.14207999999999998,"cacheWrite":0,"total":0.21841}},"stopReason":"toolUse","timestamp":1784069407938,"responseId":"resp_050f56f290a937ae016a56bd200a90819694e8c5550056232f","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bd21b8508196ba940e50a7caf129","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr0lJ57KtW0RFOJnsKHwjP_oteTb6tTy4qBxH6G3eU_oEBl8FnWDnFIwkf8lqIUvZP0wEgYWSBLS8_yUraK5LRXy1eb1kJ1LcxSAV6KisG3WN0mFLkIy9lxtbFp1D3BeLK_goCqTvZ1PmKKrNImpAzyaRLB7hNH-nE59bl0IAFoQGCg8mGL5_P3pICmNhQFUb89xVldSSlO2vLPl9PxNaTcE5uHS4OUgCJhk_v9wp0RwaOp_XnMcK2pEkynWphfLOhCW0jROgeeShLvd9nJunImOJkQbBGLPZUDJoizNNc2ZhZsLbXZaqYJy4EXqzBgLLK6xp1U7WtzqI0EgtqUtPP2y62SpNBKFFNybKDEqWamW_sr4s7yGBSAGNYHzRmCKze6-dD-Ch6lyG7yo-5zfI0YrRympMn3-9-19N5JJb2cLVj39_jfMaX8i9Fj7o-4q1n1ajVmUdePdP_Vh-KRJLKzg4GKPSEnI68M06ZKXkWybe33GhgdDN38zI5PHpOt8E7z7GRpdHqOYWjNnJpu6sN1xrmcOcP2SIS40tzNfEPTUCmGL2pqIUAaRNdFPEpoYGDu9fDvScw6IMtLa8XKWu4GyobTJnDFWMt0fo6vx8qrGOUdbiedn1FgTRJ3BSrFagbVRZMTCadbD5s3Dk08aIck3jEEvYQPbtkH1dS4CiMnYFbuNeuWiP-tnij0jiesgxbdWIflfdHjqrcnoVlZ3NqcTvAXWYnBt4WMJVY4IMQNADQeHQVR0wWbNQpJaqv7QSCaVwl5IC1L_sZxJGN7F56oMsWBcvFICaEgoKBVu3uo9N-U1I84g-lFZWac4PineiMLc4y5XuM-01tWuRdlyFBbRXrekiCkPkc7czH2oBJFKiwHdXV0G1mxlXuj11thhp2b6kwcYGajc1vTCjzjdRiuhaGItJGkPv4Hw8FWQT7zSstaj-RqZw3bSiJyqG73P85f-2Bt1X8S76rc8Tj5w4V8D5G4ysHCwOaCK0IBHCQsdRQ8qFNy_3UG9FSJm0GJbtEpWHbwy8ymiW84sqSE4h87Z4-Ao8R0wftwz_kXgsMdhBQ1Yl6hm-JjAhxcC8uzHWAlBNBRm2q_gnpg3JxvT8TA5bg==","summary":[{"type":"summary_text","text":"**Planning log line probing**"}]},{"id":"fc_050f56f290a937ae016a56bd25c8388196a7fab8ca76c9a11a","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding upper log bound\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"400000-400010\"}","call_id":"call_HQ1mv6oYMAoh2pCnJZGiMSRz","name":"read"},{"id":"fc_050f56f290a937ae016a56bd25c84c8196bd6fe530f71c68ce","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading near current wall time\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"300000-300050\"}","call_id":"call_jD8OuCNsoTP3NIB5NetZ582K","name":"read"},{"id":"fc_050f56f290a937ae016a56bd25c8588196b767ddf27416b742","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading later wall time\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"350000-350050\"}","call_id":"call_f8KlqCMf5zQdq7HVkFSZ9PvG","name":"read"}]},"duration":6010.612800002098,"ttft":1807.8720000386238,"contextSnapshot":{"promptTokens":298166,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_HQ1mv6oYMAoh2pCnJZGiMSRz|fc_050f56f290a937ae016a56bd25c8388196a7fab8ca76c9a11a","toolName":"read","startedAt":"2026-07-14T22:50:13.950Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Finding upper log bound"},"id":"a834cb92","parentId":"67fcadab","timestamp":"2026-07-14T22:50:13.950Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_jD8OuCNsoTP3NIB5NetZ582K|fc_050f56f290a937ae016a56bd25c84c8196bd6fe530f71c68ce","toolName":"read","startedAt":"2026-07-14T22:50:13.950Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading near current wall time"},"id":"13643430","parentId":"a834cb92","timestamp":"2026-07-14T22:50:13.950Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_f8KlqCMf5zQdq7HVkFSZ9PvG|fc_050f56f290a937ae016a56bd25c8588196b767ddf27416b742","toolName":"read","startedAt":"2026-07-14T22:50:13.950Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading later wall time"},"id":"a1301ffc","parentId":"13643430","timestamp":"2026-07-14T22:50:13.950Z"}
{"type":"message","id":"55bb7d46","parentId":"a1301ffc","timestamp":"2026-07-14T22:50:14.276Z","message":{"role":"toolResult","toolCallId":"call_jD8OuCNsoTP3NIB5NetZ582K|fc_050f56f290a937ae016a56bd25c84c8196bd6fe530f71c68ce","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=89353 role=brain wall_ms=1783893552121 mono_ms=147881558 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=stream-sub-attach stream=43973 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain wall_ms=1783893553802 mono_ms=147883239 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain stream-subscriber stream=43973 wall_ms=1783893553802 mono_ms=147883239 event=stream-sub-attach stream=43973 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain stream-subscriber stream=43973 wall_ms=1783893553806 mono_ms=147883243 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=stream-sub-attach stream=43974 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=stream-sub-attach stream=43974 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=stream-sub-attach stream=43975 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain wall_ms=1783893556065 mono_ms=147885502 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain stream-subscriber stream=43975 wall_ms=1783893556065 mono_ms=147885502 event=stream-sub-attach stream=43975 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556069 mono_ms=147885506 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain stream-subscriber stream=43975 wall_ms=1783893556075 mono_ms=147885512 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89360 role=brain wall_ms=1783893557167 mono_ms=147886604 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89360 role=brain wall_ms=1783893557167 mono_ms=147886604 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89361 role=brain wall_ms=1783893562209 mono_ms=147891646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89361 role=brain wall_ms=1783893562209 mono_ms=147891646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=stream-sub-attach stream=43976 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=stream-sub-attach stream=43976 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564511 mono_ms=147893948 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564705 mono_ms=147894142 event=stream-sub-attach stream=43977 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=stream-sub-attach stream=43977 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89366 role=brain wall_ms=1783893567253 mono_ms=147896690 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89366 role=brain wall_ms=1783893567253 mono_ms=147896690 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59463119 id=020b15644b4f1d2fb16dd84f1802335e2742fe5af4671dab6a3351a336bd786a addr=EndpointAddr { id: PublicKey(020b15644b4f1d2fb16dd84f1802335e2742fe5af4671dab6a3351a336bd786a), addrs: {Ip(100.68.35.65:63383), Ip(192.168.1.81:63383)} }\nPAIR_MEET_UP:BIGNET step=59463119 id=cca2c42193f87f34940ee1486ff4ce63ce8054944c8e8a844e7f1690ebab2b65 addr=EndpointAddr { id: PublicKey(cca2c42193f87f34940ee1486ff4ce63ce8054944c8e8a844e7f1690ebab2b65), addrs: {Ip(100.68.35.65:63385), Ip(192.168.1.81:63385)} }\nPAIR_MEET_UP:BS-Resources step=59463119 id=898f3bbc4ff6f1264af561dfdfcc959f301e6c5ee766cfe5b20e88016a48d9b1 addr=EndpointAddr { id: PublicKey(898f3bbc4ff6f1264af561dfdfcc959f301e6c5ee766cfe5b20e88016a48d9b1), addrs: {Ip(100.68.35.65:63389), Ip(192.168.1.81:63389)} }\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900692 event=stream-sub-attach stream=43978 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900693 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900693 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain wall_ms=1783893571257 mono_ms=147900694 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893571257 mono_ms=147900694 event=stream-sub-attach stream=43978 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893573327 mono_ms=147902764 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 299999-300053 of 96. Use :300054 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=89353 role=brain wall_ms=1783893552121 mono_ms=147881558 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=stream-sub-attach stream=43973 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain wall_ms=1783893553802 mono_ms=147883239 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain stream-subscriber stream=43973 wall_ms=1783893553802 mono_ms=147883239 event=stream-sub-attach stream=43973 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain stream-subscriber stream=43973 wall_ms=1783893553806 mono_ms=147883243 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=stream-sub-attach stream=43974 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=stream-sub-attach stream=43974 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=stream-sub-attach stream=43975 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain wall_ms=1783893556065 mono_ms=147885502 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain stream-subscriber stream=43975 wall_ms=1783893556065 mono_ms=147885502 event=stream-sub-attach stream=43975 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556069 mono_ms=147885506 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain stream-subscriber stream=43975 wall_ms=1783893556075 mono_ms=147885512 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89360 role=brain wall_ms=1783893557167 mono_ms=147886604 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89360 role=brain wall_ms=1783893557167 mono_ms=147886604 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89361 role=brain wall_ms=1783893562209 mono_ms=147891646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89361 role=brain wall_ms=1783893562209 mono_ms=147891646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=stream-sub-attach stream=43976 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=stream-sub-attach stream=43976 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564511 mono_ms=147893948 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564705 mono_ms=147894142 event=stream-sub-attach stream=43977 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=stream-sub-attach stream=43977 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89366 role=brain wall_ms=1783893567253 mono_ms=147896690 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89366 role=brain wall_ms=1783893567253 mono_ms=147896690 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59463119 id=020b15644b4f1d2fb16dd84f1802335e2742fe5af4671dab6a3351a336bd786a addr=EndpointAddr { id: PublicKey(020b15644b4f1d2fb16dd84f1802335e2742fe5af4671dab6a3351a336bd786a), addrs: {Ip(100.68.35.65:63383), Ip(192.168.1.81:63383)} }\nPAIR_MEET_UP:BIGNET step=59463119 id=cca2c42193f87f34940ee1486ff4ce63ce8054944c8e8a844e7f1690ebab2b65 addr=EndpointAddr { id: PublicKey(cca2c42193f87f34940ee1486ff4ce63ce8054944c8e8a844e7f1690ebab2b65), addrs: {Ip(100.68.35.65:63385), Ip(192.168.1.81:63385)} }\nPAIR_MEET_UP:BS-Resources step=59463119 id=898f3bbc4ff6f1264af561dfdfcc959f301e6c5ee766cfe5b20e88016a48d9b1 addr=EndpointAddr { id: PublicKey(898f3bbc4ff6f1264af561dfdfcc959f301e6c5ee766cfe5b20e88016a48d9b1), addrs: {Ip(100.68.35.65:63389), Ip(192.168.1.81:63389)} }\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900692 event=stream-sub-attach stream=43978 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900693 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900693 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain wall_ms=1783893571257 mono_ms=147900694 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893571257 mono_ms=147900694 event=stream-sub-attach stream=43978 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893573327 mono_ms=147902764 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":96,"totalBytes":9597,"outputLines":55,"outputBytes":9597,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=89353 role=brain wall_ms=1783893552121 mono_ms=147881558 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=stream-sub-attach stream=43973 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain wall_ms=1783893553802 mono_ms=147883239 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain stream-subscriber stream=43973 wall_ms=1783893553802 mono_ms=147883239 event=stream-sub-attach stream=43973 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89355 role=brain stream-subscriber stream=43973 wall_ms=1783893553806 mono_ms=147883243 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=stream-sub-attach stream=43974 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89356 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=stream-sub-attach stream=43974 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556063 mono_ms=147885500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=stream-sub-attach stream=43975 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=89358 role=brain stream-subscriber stream=43975 wall_ms=1783893556064 mono_ms=147885501 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain wall_ms=1783893556065 mono_ms=147885502 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain stream-subscriber stream=43975 wall_ms=1783893556065 mono_ms=147885502 event=stream-sub-attach stream=43975 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89357 role=brain stream-subscriber stream=43974 wall_ms=1783893556069 mono_ms=147885506 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89359 role=brain stream-subscriber stream=43975 wall_ms=1783893556075 mono_ms=147885512 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89360 role=brain wall_ms=1783893557167 mono_ms=147886604 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89360 role=brain wall_ms=1783893557167 mono_ms=147886604 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89361 role=brain wall_ms=1783893562209 mono_ms=147891646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89361 role=brain wall_ms=1783893562209 mono_ms=147891646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=stream-sub-attach stream=43976 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89362 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=stream-sub-attach stream=43976 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564505 mono_ms=147893942 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89363 role=brain stream-subscriber stream=43976 wall_ms=1783893564511 mono_ms=147893948 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564705 mono_ms=147894142 event=stream-sub-attach stream=43977 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89364 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=stream-sub-attach stream=43977 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89365 role=brain stream-subscriber stream=43977 wall_ms=1783893564706 mono_ms=147894143 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89366 role=brain wall_ms=1783893567253 mono_ms=147896690 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89366 role=brain wall_ms=1783893567253 mono_ms=147896690 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59463119 id=020b15644b4f1d2fb16dd84f1802335e2742fe5af4671dab6a3351a336bd786a addr=EndpointAddr { id: PublicKey(020b15644b4f1d2fb16dd84f1802335e2742fe5af4671dab6a3351a336bd786a), addrs: {Ip(100.68.35.65:63383), Ip(192.168.1.81:63383)} }\nPAIR_MEET_UP:BIGNET step=59463119 id=cca2c42193f87f34940ee1486ff4ce63ce8054944c8e8a844e7f1690ebab2b65 addr=EndpointAddr { id: PublicKey(cca2c42193f87f34940ee1486ff4ce63ce8054944c8e8a844e7f1690ebab2b65), addrs: {Ip(100.68.35.65:63385), Ip(192.168.1.81:63385)} }\nPAIR_MEET_UP:BS-Resources step=59463119 id=898f3bbc4ff6f1264af561dfdfcc959f301e6c5ee766cfe5b20e88016a48d9b1 addr=EndpointAddr { id: PublicKey(898f3bbc4ff6f1264af561dfdfcc959f301e6c5ee766cfe5b20e88016a48d9b1), addrs: {Ip(100.68.35.65:63389), Ip(192.168.1.81:63389)} }\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900692 event=stream-sub-attach stream=43978 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900693 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89367 role=brain stream-subscriber stream=43978 wall_ms=1783893571256 mono_ms=147900693 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain wall_ms=1783893571257 mono_ms=147900694 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893571257 mono_ms=147900694 event=stream-sub-attach stream=43978 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893573327 mono_ms=147902764 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","startLine":299999,"lineNumbers":[299999,300000,300001,300002,300003,300004,300005,300006,300007,300008,300009,300010,300011,300012,300013,300014,300015,300016,300017,300018,300019,300020,300021,300022,300023,300024,300025,300026,300027,300028,300029,300030,300031,300032,300033,300034,300035,300036,300037,300038,300039,300040,300041,300042,300043,300044,300045,300046,300047,300048,300049,300050,300051,300052,300053]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":96,"totalBytes":9597,"outputLines":55,"outputBytes":9597,"shownRange":{"start":299999,"end":300053},"nextOffset":300054}}},"isError":false,"timestamp":1784069414275}}
{"type":"message","id":"bd950353","parentId":"55bb7d46","timestamp":"2026-07-14T22:50:14.313Z","message":{"role":"toolResult","toolCallId":"call_f8KlqCMf5zQdq7HVkFSZ9PvG|fc_050f56f290a937ae016a56bd25c8588196b767ddf27416b742","toolName":"read","content":[{"type":"text","text":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59463952 id=b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b addr=EndpointAddr { id: PublicKey(b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b), addrs: {Ip(100.68.35.65:62679), Ip(192.168.1.81:62679)} }\nPAIR_MEET_UP:SPT_DEV step=59463952 id=7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e addr=EndpointAddr { id: PublicKey(7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e), addrs: {Ip(100.68.35.65:62677), Ip(192.168.1.81:62677)} }\nPAIR_MEET_UP:BIGNET step=59463952 id=c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555 addr=EndpointAddr { id: PublicKey(c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555), addrs: {Ip(100.68.35.65:62683), Ip(192.168.1.81:62683)} }\nCONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562739 mono_ms=172892151 event=stream-sub-attach stream=51164 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=stream-sub-attach stream=51164 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562746 mono_ms=172892157 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=stream-sub-attach stream=51165 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain wall_ms=1783918563197 mono_ms=172892609 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain stream-subscriber stream=51165 wall_ms=1783918563197 mono_ms=172892609 event=stream-sub-attach stream=51165 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain stream-subscriber stream=51165 wall_ms=1783918563202 mono_ms=172892614 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104446 role=brain wall_ms=1783918566436 mono_ms=172895848 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104446 role=brain wall_ms=1783918566436 mono_ms=172895848 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=104447 role=brain wall_ms=1783918571480 mono_ms=172900892 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104447 role=brain wall_ms=1783918571480 mono_ms=172900892 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903173 event=stream-sub-attach stream=51166 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903173 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903174 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903174 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain wall_ms=1783918573763 mono_ms=172903175 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain stream-subscriber stream=51166 wall_ms=1783918573763 mono_ms=172903175 event=stream-sub-attach stream=51166 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain stream-subscriber stream=51166 wall_ms=1783918573767 mono_ms=172903179 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104450 role=brain wall_ms=1783918576523 mono_ms=172905935 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104450 role=brain wall_ms=1783918576523 mono_ms=172905935 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 event=stream-sub-attach stream=51168 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577784 mono_ms=172907195 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=stream-sub-attach stream=51167 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907196 event=stream-sub-attach stream=51167 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907196 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain wall_ms=1783918577785 mono_ms=172907196 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain stream-subscriber stream=51168 wall_ms=1783918577785 mono_ms=172907196 event=stream-sub-attach stream=51168 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577790 mono_ms=172907202 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain stream-subscriber stream=51168 wall_ms=1783918577797 mono_ms=172907208 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104455 role=brain wall_ms=1783918581569 mono_ms=172910981 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104455 role=brain wall_ms=1783918581570 mono_ms=172910981 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=104456 role=brain wall_ms=1783918586616 mono_ms=172916028 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104456 role=brain wall_ms=1783918586616 mono_ms=172916028 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=stream-sub-attach stream=51171 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 349999-350053 of 57. Use :350054 to continue]"}],"details":{"truncation":{"content":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59463952 id=b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b addr=EndpointAddr { id: PublicKey(b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b), addrs: {Ip(100.68.35.65:62679), Ip(192.168.1.81:62679)} }\nPAIR_MEET_UP:SPT_DEV step=59463952 id=7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e addr=EndpointAddr { id: PublicKey(7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e), addrs: {Ip(100.68.35.65:62677), Ip(192.168.1.81:62677)} }\nPAIR_MEET_UP:BIGNET step=59463952 id=c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555 addr=EndpointAddr { id: PublicKey(c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555), addrs: {Ip(100.68.35.65:62683), Ip(192.168.1.81:62683)} }\nCONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562739 mono_ms=172892151 event=stream-sub-attach stream=51164 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=stream-sub-attach stream=51164 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562746 mono_ms=172892157 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=stream-sub-attach stream=51165 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain wall_ms=1783918563197 mono_ms=172892609 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain stream-subscriber stream=51165 wall_ms=1783918563197 mono_ms=172892609 event=stream-sub-attach stream=51165 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain stream-subscriber stream=51165 wall_ms=1783918563202 mono_ms=172892614 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104446 role=brain wall_ms=1783918566436 mono_ms=172895848 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104446 role=brain wall_ms=1783918566436 mono_ms=172895848 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=104447 role=brain wall_ms=1783918571480 mono_ms=172900892 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104447 role=brain wall_ms=1783918571480 mono_ms=172900892 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903173 event=stream-sub-attach stream=51166 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903173 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903174 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903174 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain wall_ms=1783918573763 mono_ms=172903175 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain stream-subscriber stream=51166 wall_ms=1783918573763 mono_ms=172903175 event=stream-sub-attach stream=51166 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain stream-subscriber stream=51166 wall_ms=1783918573767 mono_ms=172903179 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104450 role=brain wall_ms=1783918576523 mono_ms=172905935 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104450 role=brain wall_ms=1783918576523 mono_ms=172905935 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 event=stream-sub-attach stream=51168 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577784 mono_ms=172907195 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=stream-sub-attach stream=51167 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907196 event=stream-sub-attach stream=51167 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907196 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain wall_ms=1783918577785 mono_ms=172907196 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain stream-subscriber stream=51168 wall_ms=1783918577785 mono_ms=172907196 event=stream-sub-attach stream=51168 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577790 mono_ms=172907202 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain stream-subscriber stream=51168 wall_ms=1783918577797 mono_ms=172907208 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104455 role=brain wall_ms=1783918581569 mono_ms=172910981 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104455 role=brain wall_ms=1783918581570 mono_ms=172910981 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=104456 role=brain wall_ms=1783918586616 mono_ms=172916028 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104456 role=brain wall_ms=1783918586616 mono_ms=172916028 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=stream-sub-attach stream=51171 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":57,"totalBytes":10083,"outputLines":55,"outputBytes":10083,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BS-Resources step=59463952 id=b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b addr=EndpointAddr { id: PublicKey(b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b), addrs: {Ip(100.68.35.65:62679), Ip(192.168.1.81:62679)} }\nPAIR_MEET_UP:SPT_DEV step=59463952 id=7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e addr=EndpointAddr { id: PublicKey(7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e), addrs: {Ip(100.68.35.65:62677), Ip(192.168.1.81:62677)} }\nPAIR_MEET_UP:BIGNET step=59463952 id=c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555 addr=EndpointAddr { id: PublicKey(c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555), addrs: {Ip(100.68.35.65:62683), Ip(192.168.1.81:62683)} }\nCONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562739 mono_ms=172892151 event=stream-sub-attach stream=51164 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104442 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=stream-sub-attach stream=51164 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562740 mono_ms=172892151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104443 role=brain stream-subscriber stream=51164 wall_ms=1783918562746 mono_ms=172892157 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=stream-sub-attach stream=51165 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104444 role=brain stream-subscriber stream=51165 wall_ms=1783918563196 mono_ms=172892607 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain wall_ms=1783918563197 mono_ms=172892609 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain stream-subscriber stream=51165 wall_ms=1783918563197 mono_ms=172892609 event=stream-sub-attach stream=51165 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104445 role=brain stream-subscriber stream=51165 wall_ms=1783918563202 mono_ms=172892614 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104446 role=brain wall_ms=1783918566436 mono_ms=172895848 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104446 role=brain wall_ms=1783918566436 mono_ms=172895848 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=104447 role=brain wall_ms=1783918571480 mono_ms=172900892 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104447 role=brain wall_ms=1783918571480 mono_ms=172900892 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903173 event=stream-sub-attach stream=51166 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903173 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903174 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104448 role=brain stream-subscriber stream=51166 wall_ms=1783918573762 mono_ms=172903174 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain wall_ms=1783918573763 mono_ms=172903175 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain stream-subscriber stream=51166 wall_ms=1783918573763 mono_ms=172903175 event=stream-sub-attach stream=51166 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104449 role=brain stream-subscriber stream=51166 wall_ms=1783918573767 mono_ms=172903179 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104450 role=brain wall_ms=1783918576523 mono_ms=172905935 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104450 role=brain wall_ms=1783918576523 mono_ms=172905935 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 event=stream-sub-attach stream=51168 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577783 mono_ms=172907195 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104451 role=brain stream-subscriber stream=51168 wall_ms=1783918577784 mono_ms=172907195 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=stream-sub-attach stream=51167 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104453 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907195 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907196 event=stream-sub-attach stream=51167 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577784 mono_ms=172907196 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain wall_ms=1783918577785 mono_ms=172907196 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain stream-subscriber stream=51168 wall_ms=1783918577785 mono_ms=172907196 event=stream-sub-attach stream=51168 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104454 role=brain stream-subscriber stream=51167 wall_ms=1783918577790 mono_ms=172907202 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104452 role=brain stream-subscriber stream=51168 wall_ms=1783918577797 mono_ms=172907208 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104455 role=brain wall_ms=1783918581569 mono_ms=172910981 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104455 role=brain wall_ms=1783918581570 mono_ms=172910981 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=104456 role=brain wall_ms=1783918586616 mono_ms=172916028 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104456 role=brain wall_ms=1783918586616 mono_ms=172916028 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=stream-sub-attach stream=51171 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","startLine":349999,"lineNumbers":[349999,350000,350001,350002,350003,350004,350005,350006,350007,350008,350009,350010,350011,350012,350013,350014,350015,350016,350017,350018,350019,350020,350021,350022,350023,350024,350025,350026,350027,350028,350029,350030,350031,350032,350033,350034,350035,350036,350037,350038,350039,350040,350041,350042,350043,350044,350045,350046,350047,350048,350049,350050,350051,350052,350053]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":57,"totalBytes":10083,"outputLines":55,"outputBytes":10083,"shownRange":{"start":349999,"end":350053},"nextOffset":350054}}},"isError":false,"timestamp":1784069414313}}
{"type":"message","id":"e542d294","parentId":"bd950353","timestamp":"2026-07-14T22:50:14.352Z","message":{"role":"toolResult","toolCallId":"call_HQ1mv6oYMAoh2pCnJZGiMSRz|fc_050f56f290a937ae016a56bd25c8388196a7fab8ca76c9a11a","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=119540 role=brain wall_ms=1783943253525 mono_ms=197582911 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253525 mono_ms=197582911 event=stream-sub-attach stream=58283 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253529 mono_ms=197582916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256931 mono_ms=197586318 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256932 mono_ms=197586318 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119543 role=brain wall_ms=1783943267038 mono_ms=197596424 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119543 role=brain wall_ms=1783943267038 mono_ms=197596425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597043 event=stream-sub-attach stream=58284 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=stream-sub-attach stream=58284 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 399999-400013 of 52. Use :400014 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=119540 role=brain wall_ms=1783943253525 mono_ms=197582911 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253525 mono_ms=197582911 event=stream-sub-attach stream=58283 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253529 mono_ms=197582916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256931 mono_ms=197586318 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256932 mono_ms=197586318 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119543 role=brain wall_ms=1783943267038 mono_ms=197596424 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119543 role=brain wall_ms=1783943267038 mono_ms=197596425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597043 event=stream-sub-attach stream=58284 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=stream-sub-attach stream=58284 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":52,"totalBytes":2394,"outputLines":15,"outputBytes":2394,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=119540 role=brain wall_ms=1783943253525 mono_ms=197582911 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253525 mono_ms=197582911 event=stream-sub-attach stream=58283 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253529 mono_ms=197582916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256931 mono_ms=197586318 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256932 mono_ms=197586318 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119543 role=brain wall_ms=1783943267038 mono_ms=197596424 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119543 role=brain wall_ms=1783943267038 mono_ms=197596425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597043 event=stream-sub-attach stream=58284 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=stream-sub-attach stream=58284 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":399999,"lineNumbers":[399999,400000,400001,400002,400003,400004,400005,400006,400007,400008,400009,400010,400011,400012,400013]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":52,"totalBytes":2394,"outputLines":15,"outputBytes":2394,"shownRange":{"start":399999,"end":400013},"nextOffset":400014}}},"isError":false,"timestamp":1784069414352}}
{"type":"message","id":"bf50d0c6","parentId":"e542d294","timestamp":"2026-07-14T22:50:21.012Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Estimating current data span**"},{"type":"toolCall","id":"call_mqlUtqgL9on62jFjvtIp4eud|fc_050f56f290a937ae016a56bd2cd3fc819686d1694ad21c87e3","name":"read","arguments":{"i":"Locating recent log bound","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"600000-600020"}},{"type":"toolCall","id":"call_s177YwdTwYNhzukUMOZeuJKD|fc_050f56f290a937ae016a56bd2cd7548196b44b5cd3b764cf1d","name":"read","arguments":{"i":"Reading current-day onset","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"500000-500050"}},{"type":"toolCall","id":"call_aoYwEUHYfavzItzmSfC0rrE5|fc_050f56f290a937ae016a56bd2cd7608196aab7a3dcf3f20568","name":"read","arguments":{"i":"Reading current-day isolation","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"550000-550050"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":8147,"output":240,"cacheRead":297472,"cacheWrite":0,"totalTokens":305859,"reasoningTokens":79,"cost":{"input":0.040735,"output":0.0072,"cacheRead":0.148736,"cacheWrite":0,"total":0.196671}},"stopReason":"toolUse","timestamp":1784069414405,"responseId":"resp_050f56f290a937ae016a56bd26b6f08196b7c21f6043b1ac77","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bd283dac819690eb06ef5b7a4049","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr0sXrEY1c-BxrrW4IfUX51KD8BgR8tsatxNgtGmyYKNaTMSp-kmB8tVZH62so0B_QomOJA5iHCvh9B067yv-RML2kMuvlOR8cu1Mjq5BZ_XC4xF6tP2qgfe8cQaROmyvBiA47NPVAmV6gvtG9fJbBaKru8fSWSlsJs7pZr5daGsH7m4MHq7E54rOejaK2taI3eRTploinVX9JzIsPFABAzTV6T79L0LoIs-3h6jQXwdJrgOkphDZgFNHFg_CzKKKmGmuERKCnYpG145R12Ur_544rhZU1xQD2-V8Cc5h1HSKrZOVOdtw_vK34GbHAQf4aLcI2cQudNEmazYsX3dCtWjLZ4fLI8QrQ5XDnF4GfkeV-2ZSRNIengWhFAymP2gdGemCMBWWpgmuNVy2v9EbV25awT1_TdNEHOBbcL0_wSfmdXgkdVIb5GZb644VvhKj8diOy3CU31fbFv__5jD-loCGLmjsUrozpXDGkOqUxKKNtfpmvwDfMAa9W88LW3ni_z7GuRdjE_gSHWC0Ch4myrmKB_-ctS6rMqaF11Stlxg2S76TdqdQrDH91o41Q626PAszAB68FsCSgt8N2QzPmw8nQmUnwYl-ToS9nDWC8CfC3BSKiwNZ7djlLGQ-iImvD9ioY3sx5KDfsdQ5Ct7bukMfYjYYexi1dC71haiSrtogPfsh3ohAWzTpWjK4XO-5CPZ_cj4xwZdCGZL3OTCn2G4_IdUK5bE5va84sN8C8k5QtHtKE8JTjxePDS1eB6fJY8rOb9h0hRj9p-nYgdF1G3aeGWsj3B3_bXcX2PKyd2usJYVIBdOplD4D2Kiok-4qOVWPrslmxQjEZggihBd5MPdMWpzLCMgYGPx8Cc8rEEjHgPo8F2vxsVCNjoHila6qhZgtyu2Dn9uw4yq4AitXgXraTWSHbsveuJC3UAuxXSzAFI7eQDaEdSqnkWLPXn8HYqNEOGIH0LnWBpY4OO6kir6MXuI6VtWGDTKWz78fFdPA1jIU9d-O6nzNjPTFrTHrO5Ljq68SVgYzhrVAdmaMkH-XrHYNOI06rrOr7euHNRcqlh5BrJH1hROYn6dIR0rBTzBpNyByTuwHEcgVGLw3idOrojyf4IWOxnAsYcJbhzQNEsCXjbXZOfhrdjhme8_NDqS2iFtZ3vbYPPbgLbGe0tHxKazn2V6wY2aslVOW5n23hVU4eVrHgctmA9O4Rbur8IpxHO6KFiELh9mI3OkUPiQiw==","summary":[{"type":"summary_text","text":"**Estimating current data span**"}]},{"id":"fc_050f56f290a937ae016a56bd2cd3fc819686d1694ad21c87e3","type":"function_call","status":"completed","arguments":"{\"i\":\"Locating recent log bound\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"600000-600020\"}","call_id":"call_mqlUtqgL9on62jFjvtIp4eud","name":"read"},{"id":"fc_050f56f290a937ae016a56bd2cd7548196b44b5cd3b764cf1d","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading current-day onset\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"500000-500050\"}","call_id":"call_s177YwdTwYNhzukUMOZeuJKD","name":"read"},{"id":"fc_050f56f290a937ae016a56bd2cd7608196aab7a3dcf3f20568","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading current-day isolation\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"550000-550050\"}","call_id":"call_aoYwEUHYfavzItzmSfC0rrE5","name":"read"}]},"duration":6606.16629999876,"ttft":1861.863400042057,"contextSnapshot":{"promptTokens":305619,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_mqlUtqgL9on62jFjvtIp4eud|fc_050f56f290a937ae016a56bd2cd3fc819686d1694ad21c87e3","toolName":"read","startedAt":"2026-07-14T22:50:21.012Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Locating recent log bound"},"id":"e968266a","parentId":"bf50d0c6","timestamp":"2026-07-14T22:50:21.012Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_s177YwdTwYNhzukUMOZeuJKD|fc_050f56f290a937ae016a56bd2cd7548196b44b5cd3b764cf1d","toolName":"read","startedAt":"2026-07-14T22:50:21.012Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading current-day onset"},"id":"edd98eea","parentId":"e968266a","timestamp":"2026-07-14T22:50:21.012Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_aoYwEUHYfavzItzmSfC0rrE5|fc_050f56f290a937ae016a56bd2cd7608196aab7a3dcf3f20568","toolName":"read","startedAt":"2026-07-14T22:50:21.012Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading current-day isolation"},"id":"8f298e58","parentId":"edd98eea","timestamp":"2026-07-14T22:50:21.012Z"}
{"type":"message","id":"627af473","parentId":"8f298e58","timestamp":"2026-07-14T22:50:22.351Z","message":{"role":"toolResult","toolCallId":"call_s177YwdTwYNhzukUMOZeuJKD|fc_050f56f290a937ae016a56bd2cd7548196b44b5cd3b764cf1d","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=149928 role=brain stream-subscriber stream=74378 wall_ms=1783985560763 mono_ms=239890108 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149934 role=brain stream-subscriber stream=74377 wall_ms=1783985560776 mono_ms=239890122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=stream-sub-attach stream=74386 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain wall_ms=1783985561048 mono_ms=239890393 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain stream-subscriber stream=74386 wall_ms=1783985561048 mono_ms=239890393 event=stream-sub-attach stream=74386 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain stream-subscriber stream=74386 wall_ms=1783985561049 mono_ms=239890394 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 event=stream-sub-attach stream=74387 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561050 mono_ms=239890395 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=stream-sub-attach stream=74385 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain wall_ms=1783985561051 mono_ms=239890396 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain stream-subscriber stream=74387 wall_ms=1783985561051 mono_ms=239890396 event=stream-sub-attach stream=74387 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain wall_ms=1783985561051 mono_ms=239890397 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890397 event=stream-sub-attach stream=74385 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain stream-subscriber stream=74387 wall_ms=1783985561055 mono_ms=239890400 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain stream-subscriber stream=74385 wall_ms=1783985561061 mono_ms=239890407 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149943 role=brain wall_ms=1783985562772 mono_ms=239892117 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149943 role=brain wall_ms=1783985562772 mono_ms=239892117 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149944 role=brain wall_ms=1783985567817 mono_ms=239897162 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149944 role=brain wall_ms=1783985567817 mono_ms=239897162 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=stream-sub-attach stream=74388 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain wall_ms=1783985571705 mono_ms=239901050 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain stream-subscriber stream=74388 wall_ms=1783985571705 mono_ms=239901050 event=stream-sub-attach stream=74388 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=stream-sub-attach stream=74390 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=stream-sub-attach stream=74389 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain wall_ms=1783985571707 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain stream-subscriber stream=74390 wall_ms=1783985571707 mono_ms=239901053 event=stream-sub-attach stream=74390 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain wall_ms=1783985571708 mono_ms=239901053 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain stream-subscriber stream=74389 wall_ms=1783985571708 mono_ms=239901053 event=stream-sub-attach stream=74389 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain stream-subscriber stream=74389 wall_ms=1783985571708 mono_ms=239901054 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain stream-subscriber stream=74390 wall_ms=1783985571712 mono_ms=239901057 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain stream-subscriber stream=74388 wall_ms=1783985571714 mono_ms=239901060 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1783985572336 mono_ms=239901682 event=stream-sub-attach stream=74391 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149951 role=brain wall_ms=1783985572862 mono_ms=239902208 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149951 role=brain wall_ms=1783985572862 mono_ms=239902208 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=stream-sub-attach stream=74392 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=stream-sub-attach stream=74392 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902483 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 499999-500053 of 94. Use :500054 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=149928 role=brain stream-subscriber stream=74378 wall_ms=1783985560763 mono_ms=239890108 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149934 role=brain stream-subscriber stream=74377 wall_ms=1783985560776 mono_ms=239890122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=stream-sub-attach stream=74386 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain wall_ms=1783985561048 mono_ms=239890393 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain stream-subscriber stream=74386 wall_ms=1783985561048 mono_ms=239890393 event=stream-sub-attach stream=74386 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain stream-subscriber stream=74386 wall_ms=1783985561049 mono_ms=239890394 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 event=stream-sub-attach stream=74387 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561050 mono_ms=239890395 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=stream-sub-attach stream=74385 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain wall_ms=1783985561051 mono_ms=239890396 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain stream-subscriber stream=74387 wall_ms=1783985561051 mono_ms=239890396 event=stream-sub-attach stream=74387 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain wall_ms=1783985561051 mono_ms=239890397 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890397 event=stream-sub-attach stream=74385 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain stream-subscriber stream=74387 wall_ms=1783985561055 mono_ms=239890400 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain stream-subscriber stream=74385 wall_ms=1783985561061 mono_ms=239890407 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149943 role=brain wall_ms=1783985562772 mono_ms=239892117 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149943 role=brain wall_ms=1783985562772 mono_ms=239892117 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149944 role=brain wall_ms=1783985567817 mono_ms=239897162 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149944 role=brain wall_ms=1783985567817 mono_ms=239897162 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=stream-sub-attach stream=74388 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain wall_ms=1783985571705 mono_ms=239901050 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain stream-subscriber stream=74388 wall_ms=1783985571705 mono_ms=239901050 event=stream-sub-attach stream=74388 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=stream-sub-attach stream=74390 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=stream-sub-attach stream=74389 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain wall_ms=1783985571707 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain stream-subscriber stream=74390 wall_ms=1783985571707 mono_ms=239901053 event=stream-sub-attach stream=74390 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain wall_ms=1783985571708 mono_ms=239901053 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain stream-subscriber stream=74389 wall_ms=1783985571708 mono_ms=239901053 event=stream-sub-attach stream=74389 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain stream-subscriber stream=74389 wall_ms=1783985571708 mono_ms=239901054 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain stream-subscriber stream=74390 wall_ms=1783985571712 mono_ms=239901057 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain stream-subscriber stream=74388 wall_ms=1783985571714 mono_ms=239901060 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1783985572336 mono_ms=239901682 event=stream-sub-attach stream=74391 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149951 role=brain wall_ms=1783985572862 mono_ms=239902208 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149951 role=brain wall_ms=1783985572862 mono_ms=239902208 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=stream-sub-attach stream=74392 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=stream-sub-attach stream=74392 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902483 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":94,"totalBytes":10362,"outputLines":55,"outputBytes":10362,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=149928 role=brain stream-subscriber stream=74378 wall_ms=1783985560763 mono_ms=239890108 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149934 role=brain stream-subscriber stream=74377 wall_ms=1783985560776 mono_ms=239890122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=stream-sub-attach stream=74386 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain wall_ms=1783985561048 mono_ms=239890393 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain stream-subscriber stream=74386 wall_ms=1783985561048 mono_ms=239890393 event=stream-sub-attach stream=74386 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149938 role=brain stream-subscriber stream=74386 wall_ms=1783985561049 mono_ms=239890394 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 event=stream-sub-attach stream=74387 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561049 mono_ms=239890395 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149939 role=brain stream-subscriber stream=74387 wall_ms=1783985561050 mono_ms=239890395 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=stream-sub-attach stream=74385 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain wall_ms=1783985561051 mono_ms=239890396 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain stream-subscriber stream=74387 wall_ms=1783985561051 mono_ms=239890396 event=stream-sub-attach stream=74387 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149941 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890396 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain wall_ms=1783985561051 mono_ms=239890397 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain stream-subscriber stream=74385 wall_ms=1783985561051 mono_ms=239890397 event=stream-sub-attach stream=74385 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149940 role=brain stream-subscriber stream=74387 wall_ms=1783985561055 mono_ms=239890400 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149942 role=brain stream-subscriber stream=74385 wall_ms=1783985561061 mono_ms=239890407 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149943 role=brain wall_ms=1783985562772 mono_ms=239892117 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149943 role=brain wall_ms=1783985562772 mono_ms=239892117 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149944 role=brain wall_ms=1783985567817 mono_ms=239897162 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149944 role=brain wall_ms=1783985567817 mono_ms=239897162 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=stream-sub-attach stream=74388 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149945 role=brain stream-subscriber stream=74388 wall_ms=1783985571704 mono_ms=239901049 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain wall_ms=1783985571705 mono_ms=239901050 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain stream-subscriber stream=74388 wall_ms=1783985571705 mono_ms=239901050 event=stream-sub-attach stream=74388 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=stream-sub-attach stream=74390 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=149947 role=brain stream-subscriber stream=74390 wall_ms=1783985571706 mono_ms=239901052 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=stream-sub-attach stream=74389 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149949 role=brain stream-subscriber stream=74389 wall_ms=1783985571707 mono_ms=239901052 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain wall_ms=1783985571707 mono_ms=239901052 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain stream-subscriber stream=74390 wall_ms=1783985571707 mono_ms=239901053 event=stream-sub-attach stream=74390 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain wall_ms=1783985571708 mono_ms=239901053 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain stream-subscriber stream=74389 wall_ms=1783985571708 mono_ms=239901053 event=stream-sub-attach stream=74389 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149950 role=brain stream-subscriber stream=74389 wall_ms=1783985571708 mono_ms=239901054 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149948 role=brain stream-subscriber stream=74390 wall_ms=1783985571712 mono_ms=239901057 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149946 role=brain stream-subscriber stream=74388 wall_ms=1783985571714 mono_ms=239901060 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1783985572336 mono_ms=239901682 event=stream-sub-attach stream=74391 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149951 role=brain wall_ms=1783985572862 mono_ms=239902208 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149951 role=brain wall_ms=1783985572862 mono_ms=239902208 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=stream-sub-attach stream=74392 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=stream-sub-attach stream=74392 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902483 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","startLine":499999,"lineNumbers":[499999,500000,500001,500002,500003,500004,500005,500006,500007,500008,500009,500010,500011,500012,500013,500014,500015,500016,500017,500018,500019,500020,500021,500022,500023,500024,500025,500026,500027,500028,500029,500030,500031,500032,500033,500034,500035,500036,500037,500038,500039,500040,500041,500042,500043,500044,500045,500046,500047,500048,500049,500050,500051,500052,500053]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":94,"totalBytes":10362,"outputLines":55,"outputBytes":10362,"shownRange":{"start":499999,"end":500053},"nextOffset":500054}}},"isError":false,"timestamp":1784069422350}}
{"type":"message","id":"83b814d8","parentId":"627af473","timestamp":"2026-07-14T22:50:22.396Z","message":{"role":"toolResult","toolCallId":"call_aoYwEUHYfavzItzmSfC0rrE5|fc_050f56f290a937ae016a56bd2cd7608196aab7a3dcf3f20568","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=165705 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863024 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=stream-sub-attach stream=85112 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533696 mono_ms=250863030 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=stream-sub-attach stream=85113 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165708 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863348 event=stream-sub-attach stream=85113 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165708 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863348 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165708 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863348 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165709 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863660 event=stream-sub-attach stream=85114 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165709 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863660 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165709 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863661 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165710 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863661 event=stream-sub-attach stream=85114 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165710 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863661 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165710 role=brain stream-subscriber stream=85114 wall_ms=1783996534331 mono_ms=250863666 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165711 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863973 event=stream-sub-attach stream=85115 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165711 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863973 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165711 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863973 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165712 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863974 event=stream-sub-attach stream=85115 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165712 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863974 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165712 role=brain stream-subscriber stream=85115 wall_ms=1783996534640 mono_ms=250863974 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165713 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864294 event=stream-sub-attach stream=85119 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165713 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864294 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165713 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864294 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165714 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864295 event=stream-sub-attach stream=85119 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165714 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864295 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165714 role=brain stream-subscriber stream=85119 wall_ms=1783996534965 mono_ms=250864300 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165715 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864611 event=stream-sub-attach stream=85122 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165715 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864611 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165715 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864611 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165716 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864612 event=stream-sub-attach stream=85122 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165716 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864612 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165716 role=brain stream-subscriber stream=85122 wall_ms=1783996535278 mono_ms=250864612 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165717 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864930 event=stream-sub-attach stream=85123 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165717 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864930 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165717 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864931 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165718 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864931 event=stream-sub-attach stream=85123 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165718 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864931 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165718 role=brain stream-subscriber stream=85123 wall_ms=1783996535601 mono_ms=250864935 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165719 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865255 event=stream-sub-attach stream=85124 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165719 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865255 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165719 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865255 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165720 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865256 event=stream-sub-attach stream=85124 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165720 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865256 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165720 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865256 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165721 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=stream-sub-attach stream=85125 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165721 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165721 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=stream-sub-attach stream=85125 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536235 mono_ms=250865569 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=stream-sub-attach stream=85126 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865873 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n\n[More lines in file (108.8MB total; not scanned to EOF). Use :550054 to continue]"}],"details":{"displayContent":{"text":"CONN_LIFECYCLE: conn=165705 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863024 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=stream-sub-attach stream=85112 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533696 mono_ms=250863030 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=stream-sub-attach stream=85113 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165708 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863348 event=stream-sub-attach stream=85113 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165708 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863348 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165708 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863348 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165709 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863660 event=stream-sub-attach stream=85114 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165709 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863660 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165709 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863661 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165710 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863661 event=stream-sub-attach stream=85114 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165710 role=brain stream-subscriber stream=85114 wall_ms=1783996534326 mono_ms=250863661 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165710 role=brain stream-subscriber stream=85114 wall_ms=1783996534331 mono_ms=250863666 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165711 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863973 event=stream-sub-attach stream=85115 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165711 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863973 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165711 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863973 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165712 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863974 event=stream-sub-attach stream=85115 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165712 role=brain stream-subscriber stream=85115 wall_ms=1783996534639 mono_ms=250863974 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165712 role=brain stream-subscriber stream=85115 wall_ms=1783996534640 mono_ms=250863974 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165713 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864294 event=stream-sub-attach stream=85119 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165713 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864294 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165713 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864294 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165714 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864295 event=stream-sub-attach stream=85119 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165714 role=brain stream-subscriber stream=85119 wall_ms=1783996534960 mono_ms=250864295 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165714 role=brain stream-subscriber stream=85119 wall_ms=1783996534965 mono_ms=250864300 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165715 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864611 event=stream-sub-attach stream=85122 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165715 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864611 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165715 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864611 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165716 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864612 event=stream-sub-attach stream=85122 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165716 role=brain stream-subscriber stream=85122 wall_ms=1783996535277 mono_ms=250864612 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165716 role=brain stream-subscriber stream=85122 wall_ms=1783996535278 mono_ms=250864612 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165717 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864930 event=stream-sub-attach stream=85123 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165717 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864930 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165717 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864931 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165718 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864931 event=stream-sub-attach stream=85123 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165718 role=brain stream-subscriber stream=85123 wall_ms=1783996535596 mono_ms=250864931 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165718 role=brain stream-subscriber stream=85123 wall_ms=1783996535601 mono_ms=250864935 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165719 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865255 event=stream-sub-attach stream=85124 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165719 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865255 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165719 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865255 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165720 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865256 event=stream-sub-attach stream=85124 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165720 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865256 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165720 role=brain stream-subscriber stream=85124 wall_ms=1783996535921 mono_ms=250865256 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165721 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=stream-sub-attach stream=85125 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165721 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165721 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=stream-sub-attach stream=85125 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536229 mono_ms=250865563 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536235 mono_ms=250865569 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=stream-sub-attach stream=85126 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865873 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","startLine":549999,"lineNumbers":[549999,550000,550001,550002,550003,550004,550005,550006,550007,550008,550009,550010,550011,550012,550013,550014,550015,550016,550017,550018,550019,550020,550021,550022,550023,550024,550025,550026,550027,550028,550029,550030,550031,550032,550033,550034,550035,550036,550037,550038,550039,550040,550041,550042,550043,550044,550045,550046,550047,550048,550049,550050,550051,550052,550053]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"}}},"isError":false,"timestamp":1784069422396}}
{"type":"message","id":"304d84a0","parentId":"83b814d8","timestamp":"2026-07-14T22:50:22.433Z","message":{"role":"toolResult","toolCallId":"call_mqlUtqgL9on62jFjvtIp4eud|fc_050f56f290a937ae016a56bd2cd3fc819686d1694ad21c87e3","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=stream-sub-attach stream=95897 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181399 role=brain stream-subscriber stream=95898 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372090 event=stream-sub-attach stream=95899 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372090 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372091 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372091 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain wall_ms=1784007042768 mono_ms=261372091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain wall_ms=1784007042768 mono_ms=261372091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain stream-subscriber stream=95899 wall_ms=1784007042768 mono_ms=261372092 event=stream-sub-attach stream=95899 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain stream-subscriber stream=95897 wall_ms=1784007042768 mono_ms=261372092 event=stream-sub-attach stream=95897 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain stream-subscriber stream=95899 wall_ms=1784007042772 mono_ms=261372096 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain stream-subscriber stream=95897 wall_ms=1784007042777 mono_ms=261372101 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=stream-sub-attach stream=95900 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=stream-sub-attach stream=95900 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043103 mono_ms=261372427 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=stream-sub-attach stream=95901 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043105 mono_ms=261372428 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181407 role=brain wall_ms=1784007043106 mono_ms=261372430 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 599999-600023 of 55. Use :600024 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=stream-sub-attach stream=95897 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181399 role=brain stream-subscriber stream=95898 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372090 event=stream-sub-attach stream=95899 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372090 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372091 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372091 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain wall_ms=1784007042768 mono_ms=261372091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain wall_ms=1784007042768 mono_ms=261372091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain stream-subscriber stream=95899 wall_ms=1784007042768 mono_ms=261372092 event=stream-sub-attach stream=95899 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain stream-subscriber stream=95897 wall_ms=1784007042768 mono_ms=261372092 event=stream-sub-attach stream=95897 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain stream-subscriber stream=95899 wall_ms=1784007042772 mono_ms=261372096 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain stream-subscriber stream=95897 wall_ms=1784007042777 mono_ms=261372101 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=stream-sub-attach stream=95900 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=stream-sub-attach stream=95900 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043103 mono_ms=261372427 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=stream-sub-attach stream=95901 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043105 mono_ms=261372428 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181407 role=brain wall_ms=1784007043106 mono_ms=261372430 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":55,"totalBytes":4724,"outputLines":25,"outputBytes":4724,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=stream-sub-attach stream=95897 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181399 role=brain stream-subscriber stream=95898 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372090 event=stream-sub-attach stream=95899 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372090 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372091 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372091 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain wall_ms=1784007042768 mono_ms=261372091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain wall_ms=1784007042768 mono_ms=261372091 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain stream-subscriber stream=95899 wall_ms=1784007042768 mono_ms=261372092 event=stream-sub-attach stream=95899 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain stream-subscriber stream=95897 wall_ms=1784007042768 mono_ms=261372092 event=stream-sub-attach stream=95897 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181403 role=brain stream-subscriber stream=95899 wall_ms=1784007042772 mono_ms=261372096 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181401 role=brain stream-subscriber stream=95897 wall_ms=1784007042777 mono_ms=261372101 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=stream-sub-attach stream=95900 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181404 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=stream-sub-attach stream=95900 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043097 mono_ms=261372421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181405 role=brain stream-subscriber stream=95900 wall_ms=1784007043103 mono_ms=261372427 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=stream-sub-attach stream=95901 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043105 mono_ms=261372428 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=181407 role=brain wall_ms=1784007043106 mono_ms=261372430 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":599999,"lineNumbers":[599999,600000,600001,600002,600003,600004,600005,600006,600007,600008,600009,600010,600011,600012,600013,600014,600015,600016,600017,600018,600019,600020,600021,600022,600023]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":55,"totalBytes":4724,"outputLines":25,"outputBytes":4724,"shownRange":{"start":599999,"end":600023},"nextOffset":600024}}},"isError":false,"timestamp":1784069422433}}
{"type":"message","id":"5b86f4f1","parentId":"304d84a0","timestamp":"2026-07-14T22:50:28.082Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning timestamp-based search**"},{"type":"toolCall","id":"call_Xm18QMX7g2O3Fn5JxoHwFwKt|fc_050f56f290a937ae016a56bd33e49881969a344941e3d1f694","name":"read","arguments":{"i":"Reading last-heard window","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"620000-620100"}},{"type":"toolCall","id":"call_WzlxcFSscwUjIRSSxDJfUGbr|fc_050f56f290a937ae016a56bd33e6188196956b850547f46226","name":"read","arguments":{"i":"Reading post-heard window","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"640000-640100"}},{"type":"toolCall","id":"call_oC30dbj6i0k69Wr8h6ylTBhl|fc_050f56f290a937ae016a56bd33e62881968b13993ea02198e2","name":"read","arguments":{"i":"Finding current log total","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"800000-800010"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":8999,"output":192,"cacheRead":304640,"cacheWrite":0,"totalTokens":313831,"reasoningTokens":30,"cost":{"input":0.044995,"output":0.00576,"cacheRead":0.15231999999999998,"cacheWrite":0,"total":0.20307499999999998}},"stopReason":"toolUse","timestamp":1784069422483,"responseId":"resp_050f56f290a937ae016a56bd2e9abc8196b3d5d8d07f63d706","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bd302de881968e9fb7fe60f5df27","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr0zlF6NBlavaZz6KgUdaY0DTRHNIKze-BulgdAtLqpX5y1vnudKG1KtPuI9e7b8_3Fw_7MbOAeoXXZXWJIMWu8NbNpbgbIR3n02cVmqwqPTQUrM4WcrCDheTyofYZrZJ3xGWhOBbw8GOEPS5nerAFGbkYF0GuiJ-wLDG0Up46REk50p9lvQLMUNn3HUH8uk-2Ho5vwCe6Be9q1q3UoyzCwmK4cjIZ3WYT9tilhkzFmTInr1HdqIqAeb7wGGFOsMo1bWMq4agUDEGgBPYpiTo5UYwBmuk_2InbJXyFOwtRzfhERINq016UoGydqXvDbn9DUu89BuINLIGR-emrZ90MuQxu74vu1oW84ETjuLppwpzTJvKJvA6PfAgJalyt0d_ZfwH0RvGhLgW5C8ALCB1Gx4Q1OgziMYL0v5HodhDb2EKnsQq8YSvosXCTnIBL7epBItFb6t5XaJ-fM581P4_gvnGIef7hEi1eMOqxgHLbn_s4-nPFVItY3-h9dP9Ct6vg-f_YxLCD5v2Rswf3TDi8K6TG5d4zMxfwPka3OIqL9trTgnH23htQrf73GOKioJ2UbP3Ls5bbcSYL-FIG1k0coCZQvPZgk14vITA9SXldQOfR08rrpUQA6BNnq5IkTlqFShy5V0WkcoP0O7lBl9nEfVzlO2Hr-J3hLe8hurCqqPnKup4UeJVg_Vf5KhoDpqvQqvtZAy786rkgmBrUver3_kp7_o1xNrbQhD3so0adpRLrcufMwsCzGfDLCFPbEJtrTEaruL9kTPLxJhdXINNwSdalCGZQ0jjCEvztZuFgH2d1gbYHU-KPb4pcM5LO_tazwGT0S-DL0zuBfoTE7ydXPLjmTL0cXTsn2kGQZOab-Qd5WjTX4cZ2HjM9px5Ju-MYWsgDduKV75ZEgXRHrABX0AXH8itBSbPKO8R_jmqim-LUw6jEunt8EjJHFwnxG87dIX40aSMK2w-3p9kj-1DO_36XzRSPvcCzlCBWkx_Q1lm6mhMYPrksfDDMKlj8t7u6zYb_x1p6vFmT0MTM6rXfEgAg==","summary":[{"type":"summary_text","text":"**Planning timestamp-based search**"}]},{"id":"fc_050f56f290a937ae016a56bd33e49881969a344941e3d1f694","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading last-heard window\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"620000-620100\"}","call_id":"call_Xm18QMX7g2O3Fn5JxoHwFwKt","name":"read"},{"id":"fc_050f56f290a937ae016a56bd33e6188196956b850547f46226","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading post-heard window\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"640000-640100\"}","call_id":"call_WzlxcFSscwUjIRSSxDJfUGbr","name":"read"},{"id":"fc_050f56f290a937ae016a56bd33e62881968b13993ea02198e2","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding current log total\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"800000-800010\"}","call_id":"call_oC30dbj6i0k69Wr8h6ylTBhl","name":"read"}]},"duration":5597.97729998827,"ttft":1722.5977999567986,"contextSnapshot":{"promptTokens":313639,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Xm18QMX7g2O3Fn5JxoHwFwKt|fc_050f56f290a937ae016a56bd33e49881969a344941e3d1f694","toolName":"read","startedAt":"2026-07-14T22:50:28.083Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading last-heard window"},"id":"1fdc47ca","parentId":"5b86f4f1","timestamp":"2026-07-14T22:50:28.083Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_WzlxcFSscwUjIRSSxDJfUGbr|fc_050f56f290a937ae016a56bd33e6188196956b850547f46226","toolName":"read","startedAt":"2026-07-14T22:50:28.083Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading post-heard window"},"id":"9626987b","parentId":"1fdc47ca","timestamp":"2026-07-14T22:50:28.083Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_oC30dbj6i0k69Wr8h6ylTBhl|fc_050f56f290a937ae016a56bd33e62881968b13993ea02198e2","toolName":"read","startedAt":"2026-07-14T22:50:28.083Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Finding current log total"},"id":"fd7a5505","parentId":"9626987b","timestamp":"2026-07-14T22:50:28.083Z"}
{"type":"message","id":"2502fbec","parentId":"fd7a5505","timestamp":"2026-07-14T22:50:29.049Z","message":{"role":"toolResult","toolCallId":"call_Xm18QMX7g2O3Fn5JxoHwFwKt|fc_050f56f290a937ae016a56bd33e49881969a344941e3d1f694","toolName":"read","content":[{"type":"text","text":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467614 id=a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f addr=EndpointAddr { id: PublicKey(a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f), addrs: {Ip(100.68.35.65:59900), Ip(192.168.1.81:59900)} }\nPAIR_MEET_UP:BIGNET step=59467614 id=b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8 addr=EndpointAddr { id: PublicKey(b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8), addrs: {Ip(100.68.35.65:59898), Ip(192.168.1.81:59898)} }\nCONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759570 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187938 role=brain wall_ms=1784028435307 mono_ms=282764610 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187938 role=brain wall_ms=1784028435307 mono_ms=282764610 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187939 role=brain wall_ms=1784028440346 mono_ms=282769649 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187939 role=brain wall_ms=1784028440346 mono_ms=282769649 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187940 role=brain wall_ms=1784028445384 mono_ms=282774687 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187940 role=brain wall_ms=1784028445385 mono_ms=282774687 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187941 role=brain wall_ms=1784028450428 mono_ms=282779730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187941 role=brain wall_ms=1784028450428 mono_ms=282779730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467615 id=acc67612949683752e836a44db7f4443cfda1baba7c1a904a8920752b6e95ed7 addr=EndpointAddr { id: PublicKey(acc67612949683752e836a44db7f4443cfda1baba7c1a904a8920752b6e95ed7), addrs: {Ip(100.68.35.65:51151), Ip(192.168.1.81:51151)} }\nPAIR_MEET_UP:SPT_DEV step=59467615 id=79c8eda425ff643eae8bc3159eae972310591a017b15e273813dde20dd09efcb addr=EndpointAddr { id: PublicKey(79c8eda425ff643eae8bc3159eae972310591a017b15e273813dde20dd09efcb), addrs: {Ip(100.68.35.65:51149), Ip(192.168.1.81:51149)} }\nCONN_LIFECYCLE: conn=187942 role=brain wall_ms=1784028455462 mono_ms=282784765 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187942 role=brain wall_ms=1784028455462 mono_ms=282784765 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187943 role=brain wall_ms=1784028460502 mono_ms=282789805 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187943 role=brain wall_ms=1784028460502 mono_ms=282789805 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187944 role=brain wall_ms=1784028465539 mono_ms=282794842 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187944 role=brain wall_ms=1784028465539 mono_ms=282794842 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187945 role=brain wall_ms=1784028470581 mono_ms=282799884 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187945 role=brain wall_ms=1784028470581 mono_ms=282799884 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187946 role=brain wall_ms=1784028475618 mono_ms=282804921 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187946 role=brain wall_ms=1784028475618 mono_ms=282804921 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187947 role=brain wall_ms=1784028480656 mono_ms=282809959 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187947 role=brain wall_ms=1784028480656 mono_ms=282809959 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467616 id=b5716f030ad33479a1a99c05237758ea70faf33d3cc037b644775c59e247ea7b addr=EndpointAddr { id: PublicKey(b5716f030ad33479a1a99c05237758ea70faf33d3cc037b644775c59e247ea7b), addrs: {Ip(100.68.35.65:56661), Ip(192.168.1.81:56661)} }\nPAIR_MEET_UP:BIGNET step=59467616 id=e6a7ce7fc79e97b998746a1298518ed9467b24ad7a8aaf33132e775961e70cee addr=EndpointAddr { id: PublicKey(e6a7ce7fc79e97b998746a1298518ed9467b24ad7a8aaf33132e775961e70cee), addrs: {Ip(100.68.35.65:56659), Ip(192.168.1.81:56659)} }\nCONN_LIFECYCLE: conn=187948 role=brain wall_ms=1784028485696 mono_ms=282814999 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187948 role=brain wall_ms=1784028485696 mono_ms=282814999 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187949 role=brain wall_ms=1784028490735 mono_ms=282820038 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187949 role=brain wall_ms=1784028490735 mono_ms=282820038 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187950 role=brain wall_ms=1784028495773 mono_ms=282825075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187950 role=brain wall_ms=1784028495773 mono_ms=282825076 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187951 role=brain wall_ms=1784028500811 mono_ms=282830113 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187951 role=brain wall_ms=1784028500811 mono_ms=282830114 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187952 role=brain wall_ms=1784028505848 mono_ms=282835151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187952 role=brain wall_ms=1784028505848 mono_ms=282835151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467617 id=0aecc09533556f169a96460eafb56273d2399b94d57139e01ef986ace9d4dec5 addr=EndpointAddr { id: PublicKey(0aecc09533556f169a96460eafb56273d2399b94d57139e01ef986ace9d4dec5), addrs: {Ip(100.68.35.65:56091), Ip(192.168.1.81:56091)} }\nPAIR_MEET_UP:BIGNET step=59467617 id=c2993025746fa6e9c5ddb84b31cad43aff52baacaa99cd95fad246b8633859f2 addr=EndpointAddr { id: PublicKey(c2993025746fa6e9c5ddb84b31cad43aff52baacaa99cd95fad246b8633859f2), addrs: {Ip(100.68.35.65:56097), Ip(192.168.1.81:56097)} }\nCONN_LIFECYCLE: conn=187953 role=brain wall_ms=1784028510887 mono_ms=282840190 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187953 role=brain wall_ms=1784028510887 mono_ms=282840190 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187954 role=brain wall_ms=1784028515924 mono_ms=282845227 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187954 role=brain wall_ms=1784028515924 mono_ms=282845227 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187955 role=brain wall_ms=1784028520963 mono_ms=282850266 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187955 role=brain wall_ms=1784028520963 mono_ms=282850266 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187956 role=brain wall_ms=1784028526001 mono_ms=282855304 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187956 role=brain wall_ms=1784028526001 mono_ms=282855304 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187957 role=brain wall_ms=1784028531039 mono_ms=282860342 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187957 role=brain wall_ms=1784028531039 mono_ms=282860342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187958 role=brain wall_ms=1784028536079 mono_ms=282865382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187958 role=brain wall_ms=1784028536079 mono_ms=282865382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467618 id=2b1dc33bba7bc4233c26de4e920c4398c7483d15637cf63527bd02c0714ead34 addr=EndpointAddr { id: PublicKey(2b1dc33bba7bc4233c26de4e920c4398c7483d15637cf63527bd02c0714ead34), addrs: {Ip(100.68.35.65:56157), Ip(192.168.1.81:56157)} }\nPAIR_MEET_UP:BIGNET step=59467618 id=067951452685f48b889d5cab506f8f1bb1368eac5c559f07548a6381cc6eaaf8 addr=EndpointAddr { id: PublicKey(067951452685f48b889d5cab506f8f1bb1368eac5c559f07548a6381cc6eaaf8), addrs: {Ip(100.68.35.65:56155), Ip(192.168.1.81:56155)} }\nCONN_LIFECYCLE: conn=187959 role=brain wall_ms=1784028541118 mono_ms=282870421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187959 role=brain wall_ms=1784028541118 mono_ms=282870421 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187960 role=brain wall_ms=1784028546157 mono_ms=282875460 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187960 role=brain wall_ms=1784028546157 mono_ms=282875460 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187961 role=brain wall_ms=1784028551197 mono_ms=282880500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187961 role=brain wall_ms=1784028551197 mono_ms=282880500 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187962 role=brain wall_ms=1784028556237 mono_ms=282885540 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187962 role=brain wall_ms=1784028556237 mono_ms=282885540 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187963 role=brain wall_ms=1784028561275 mono_ms=282890577 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187963 role=brain wall_ms=1784028561275 mono_ms=282890577 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187964 role=brain wall_ms=1784028566312 mono_ms=282895615 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187964 role=brain wall_ms=1784028566312 mono_ms=282895615 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467619 id=4b879c8f285b6e5b2f69203b07b6d6ff9683d7e7d0a4f1856e50788aa1d2179b addr=EndpointAddr { id: PublicKey(4b879c8f285b6e5b2f69203b07b6d6ff9683d7e7d0a4f1856e50788aa1d2179b), addrs: {Ip(100.68.35.65:51367), Ip(192.168.1.81:51367)} }\nPAIR_MEET_UP:SPT_DEV step=59467619 id=0546dce0f7d5a649319394667c0c0fa4dfa0cd3697d4df77c217648d4b388dfc addr=EndpointAddr { id: PublicKey(0546dce0f7d5a649319394667c0c0fa4dfa0cd3697d4df77c217648d4b388dfc), addrs: {Ip(100.68.35.65:51369), Ip(192.168.1.81:51369)} }\nCONN_LIFECYCLE: conn=187965 role=brain wall_ms=1784028571351 mono_ms=282900653 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187965 role=brain wall_ms=1784028571351 mono_ms=282900654 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187966 role=brain wall_ms=1784028576389 mono_ms=282905692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187966 role=brain wall_ms=1784028576389 mono_ms=282905692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187967 role=brain wall_ms=1784028581428 mono_ms=282910730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187967 role=brain wall_ms=1784028581428 mono_ms=282910730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187968 role=brain wall_ms=1784028586465 mono_ms=282915768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187968 role=brain wall_ms=1784028586465 mono_ms=282915768 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187969 role=brain wall_ms=1784028591504 mono_ms=282920807 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187969 role=brain wall_ms=1784028591504 mono_ms=282920807 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187970 role=brain wall_ms=1784028596545 mono_ms=282925847 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187970 role=brain wall_ms=1784028596545 mono_ms=282925848 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467620 id=27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913 addr=EndpointAddr { id: PublicKey(27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913), addrs: {Ip(100.68.35.65:65481), Ip(192.168.1.81:65481)} }\nPAIR_MEET_UP:SPT_DEV step=59467620 id=d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80 addr=EndpointAddr { id: PublicKey(d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80), addrs: {Ip(100.68.35.65:65479), Ip(192.168.1.81:65479)} }\nCONN_LIFECYCLE: conn=187971 role=brain wall_ms=1784028601585 mono_ms=282930888 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 619999-620103 of 159. Use :620104 to continue]"}],"details":{"truncation":{"content":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467614 id=a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f addr=EndpointAddr { id: PublicKey(a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f), addrs: {Ip(100.68.35.65:59900), Ip(192.168.1.81:59900)} }\nPAIR_MEET_UP:BIGNET step=59467614 id=b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8 addr=EndpointAddr { id: PublicKey(b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8), addrs: {Ip(100.68.35.65:59898), Ip(192.168.1.81:59898)} }\nCONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759570 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187938 role=brain wall_ms=1784028435307 mono_ms=282764610 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187938 role=brain wall_ms=1784028435307 mono_ms=282764610 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187939 role=brain wall_ms=1784028440346 mono_ms=282769649 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187939 role=brain wall_ms=1784028440346 mono_ms=282769649 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187940 role=brain wall_ms=1784028445384 mono_ms=282774687 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187940 role=brain wall_ms=1784028445385 mono_ms=282774687 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187941 role=brain wall_ms=1784028450428 mono_ms=282779730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187941 role=brain wall_ms=1784028450428 mono_ms=282779730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467615 id=acc67612949683752e836a44db7f4443cfda1baba7c1a904a8920752b6e95ed7 addr=EndpointAddr { id: PublicKey(acc67612949683752e836a44db7f4443cfda1baba7c1a904a8920752b6e95ed7), addrs: {Ip(100.68.35.65:51151), Ip(192.168.1.81:51151)} }\nPAIR_MEET_UP:SPT_DEV step=59467615 id=79c8eda425ff643eae8bc3159eae972310591a017b15e273813dde20dd09efcb addr=EndpointAddr { id: PublicKey(79c8eda425ff643eae8bc3159eae972310591a017b15e273813dde20dd09efcb), addrs: {Ip(100.68.35.65:51149), Ip(192.168.1.81:51149)} }\nCONN_LIFECYCLE: conn=187942 role=brain wall_ms=1784028455462 mono_ms=282784765 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187942 role=brain wall_ms=1784028455462 mono_ms=282784765 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187943 role=brain wall_ms=1784028460502 mono_ms=282789805 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187943 role=brain wall_ms=1784028460502 mono_ms=282789805 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187944 role=brain wall_ms=1784028465539 mono_ms=282794842 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187944 role=brain wall_ms=1784028465539 mono_ms=282794842 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187945 role=brain wall_ms=1784028470581 mono_ms=282799884 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187945 role=brain wall_ms=1784028470581 mono_ms=282799884 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187946 role=brain wall_ms=1784028475618 mono_ms=282804921 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187946 role=brain wall_ms=1784028475618 mono_ms=282804921 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187947 role=brain wall_ms=1784028480656 mono_ms=282809959 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187947 role=brain wall_ms=1784028480656 mono_ms=282809959 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467616 id=b5716f030ad33479a1a99c05237758ea70faf33d3cc037b644775c59e247ea7b addr=EndpointAddr { id: PublicKey(b5716f030ad33479a1a99c05237758ea70faf33d3cc037b644775c59e247ea7b), addrs: {Ip(100.68.35.65:56661), Ip(192.168.1.81:56661)} }\nPAIR_MEET_UP:BIGNET step=59467616 id=e6a7ce7fc79e97b998746a1298518ed9467b24ad7a8aaf33132e775961e70cee addr=EndpointAddr { id: PublicKey(e6a7ce7fc79e97b998746a1298518ed9467b24ad7a8aaf33132e775961e70cee), addrs: {Ip(100.68.35.65:56659), Ip(192.168.1.81:56659)} }\nCONN_LIFECYCLE: conn=187948 role=brain wall_ms=1784028485696 mono_ms=282814999 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187948 role=brain wall_ms=1784028485696 mono_ms=282814999 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187949 role=brain wall_ms=1784028490735 mono_ms=282820038 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187949 role=brain wall_ms=1784028490735 mono_ms=282820038 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187950 role=brain wall_ms=1784028495773 mono_ms=282825075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187950 role=brain wall_ms=1784028495773 mono_ms=282825076 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187951 role=brain wall_ms=1784028500811 mono_ms=282830113 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187951 role=brain wall_ms=1784028500811 mono_ms=282830114 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187952 role=brain wall_ms=1784028505848 mono_ms=282835151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187952 role=brain wall_ms=1784028505848 mono_ms=282835151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467617 id=0aecc09533556f169a96460eafb56273d2399b94d57139e01ef986ace9d4dec5 addr=EndpointAddr { id: PublicKey(0aecc09533556f169a96460eafb56273d2399b94d57139e01ef986ace9d4dec5), addrs: {Ip(100.68.35.65:56091), Ip(192.168.1.81:56091)} }\nPAIR_MEET_UP:BIGNET step=59467617 id=c2993025746fa6e9c5ddb84b31cad43aff52baacaa99cd95fad246b8633859f2 addr=EndpointAddr { id: PublicKey(c2993025746fa6e9c5ddb84b31cad43aff52baacaa99cd95fad246b8633859f2), addrs: {Ip(100.68.35.65:56097), Ip(192.168.1.81:56097)} }\nCONN_LIFECYCLE: conn=187953 role=brain wall_ms=1784028510887 mono_ms=282840190 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187953 role=brain wall_ms=1784028510887 mono_ms=282840190 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187954 role=brain wall_ms=1784028515924 mono_ms=282845227 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187954 role=brain wall_ms=1784028515924 mono_ms=282845227 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187955 role=brain wall_ms=1784028520963 mono_ms=282850266 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187955 role=brain wall_ms=1784028520963 mono_ms=282850266 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187956 role=brain wall_ms=1784028526001 mono_ms=282855304 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187956 role=brain wall_ms=1784028526001 mono_ms=282855304 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187957 role=brain wall_ms=1784028531039 mono_ms=282860342 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187957 role=brain wall_ms=1784028531039 mono_ms=282860342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187958 role=brain wall_ms=1784028536079 mono_ms=282865382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187958 role=brain wall_ms=1784028536079 mono_ms=282865382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467618 id=2b1dc33bba7bc4233c26de4e920c4398c7483d15637cf63527bd02c0714ead34 addr=EndpointAddr { id: PublicKey(2b1dc33bba7bc4233c26de4e920c4398c7483d15637cf63527bd02c0714ead34), addrs: {Ip(100.68.35.65:56157), Ip(192.168.1.81:56157)} }\nPAIR_MEET_UP:BIGNET step=59467618 id=067951452685f48b889d5cab506f8f1bb1368eac5c559f07548a6381cc6eaaf8 addr=EndpointAddr { id: PublicKey(067951452685f48b889d5cab506f8f1bb1368eac5c559f07548a6381cc6eaaf8), addrs: {Ip(100.68.35.65:56155), Ip(192.168.1.81:56155)} }\nCONN_LIFECYCLE: conn=187959 role=brain wall_ms=1784028541118 mono_ms=282870421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187959 role=brain wall_ms=1784028541118 mono_ms=282870421 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187960 role=brain wall_ms=1784028546157 mono_ms=282875460 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187960 role=brain wall_ms=1784028546157 mono_ms=282875460 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187961 role=brain wall_ms=1784028551197 mono_ms=282880500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187961 role=brain wall_ms=1784028551197 mono_ms=282880500 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187962 role=brain wall_ms=1784028556237 mono_ms=282885540 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187962 role=brain wall_ms=1784028556237 mono_ms=282885540 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187963 role=brain wall_ms=1784028561275 mono_ms=282890577 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187963 role=brain wall_ms=1784028561275 mono_ms=282890577 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187964 role=brain wall_ms=1784028566312 mono_ms=282895615 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187964 role=brain wall_ms=1784028566312 mono_ms=282895615 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467619 id=4b879c8f285b6e5b2f69203b07b6d6ff9683d7e7d0a4f1856e50788aa1d2179b addr=EndpointAddr { id: PublicKey(4b879c8f285b6e5b2f69203b07b6d6ff9683d7e7d0a4f1856e50788aa1d2179b), addrs: {Ip(100.68.35.65:51367), Ip(192.168.1.81:51367)} }\nPAIR_MEET_UP:SPT_DEV step=59467619 id=0546dce0f7d5a649319394667c0c0fa4dfa0cd3697d4df77c217648d4b388dfc addr=EndpointAddr { id: PublicKey(0546dce0f7d5a649319394667c0c0fa4dfa0cd3697d4df77c217648d4b388dfc), addrs: {Ip(100.68.35.65:51369), Ip(192.168.1.81:51369)} }\nCONN_LIFECYCLE: conn=187965 role=brain wall_ms=1784028571351 mono_ms=282900653 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187965 role=brain wall_ms=1784028571351 mono_ms=282900654 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187966 role=brain wall_ms=1784028576389 mono_ms=282905692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187966 role=brain wall_ms=1784028576389 mono_ms=282905692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187967 role=brain wall_ms=1784028581428 mono_ms=282910730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187967 role=brain wall_ms=1784028581428 mono_ms=282910730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187968 role=brain wall_ms=1784028586465 mono_ms=282915768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187968 role=brain wall_ms=1784028586465 mono_ms=282915768 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187969 role=brain wall_ms=1784028591504 mono_ms=282920807 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187969 role=brain wall_ms=1784028591504 mono_ms=282920807 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187970 role=brain wall_ms=1784028596545 mono_ms=282925847 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187970 role=brain wall_ms=1784028596545 mono_ms=282925848 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467620 id=27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913 addr=EndpointAddr { id: PublicKey(27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913), addrs: {Ip(100.68.35.65:65481), Ip(192.168.1.81:65481)} }\nPAIR_MEET_UP:SPT_DEV step=59467620 id=d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80 addr=EndpointAddr { id: PublicKey(d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80), addrs: {Ip(100.68.35.65:65479), Ip(192.168.1.81:65479)} }\nCONN_LIFECYCLE: conn=187971 role=brain wall_ms=1784028601585 mono_ms=282930888 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":159,"totalBytes":15705,"outputLines":105,"outputBytes":15705,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467614 id=a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f addr=EndpointAddr { id: PublicKey(a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f), addrs: {Ip(100.68.35.65:59900), Ip(192.168.1.81:59900)} }\nPAIR_MEET_UP:BIGNET step=59467614 id=b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8 addr=EndpointAddr { id: PublicKey(b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8), addrs: {Ip(100.68.35.65:59898), Ip(192.168.1.81:59898)} }\nCONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759570 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187938 role=brain wall_ms=1784028435307 mono_ms=282764610 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187938 role=brain wall_ms=1784028435307 mono_ms=282764610 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187939 role=brain wall_ms=1784028440346 mono_ms=282769649 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187939 role=brain wall_ms=1784028440346 mono_ms=282769649 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187940 role=brain wall_ms=1784028445384 mono_ms=282774687 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187940 role=brain wall_ms=1784028445385 mono_ms=282774687 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187941 role=brain wall_ms=1784028450428 mono_ms=282779730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187941 role=brain wall_ms=1784028450428 mono_ms=282779730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467615 id=acc67612949683752e836a44db7f4443cfda1baba7c1a904a8920752b6e95ed7 addr=EndpointAddr { id: PublicKey(acc67612949683752e836a44db7f4443cfda1baba7c1a904a8920752b6e95ed7), addrs: {Ip(100.68.35.65:51151), Ip(192.168.1.81:51151)} }\nPAIR_MEET_UP:SPT_DEV step=59467615 id=79c8eda425ff643eae8bc3159eae972310591a017b15e273813dde20dd09efcb addr=EndpointAddr { id: PublicKey(79c8eda425ff643eae8bc3159eae972310591a017b15e273813dde20dd09efcb), addrs: {Ip(100.68.35.65:51149), Ip(192.168.1.81:51149)} }\nCONN_LIFECYCLE: conn=187942 role=brain wall_ms=1784028455462 mono_ms=282784765 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187942 role=brain wall_ms=1784028455462 mono_ms=282784765 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187943 role=brain wall_ms=1784028460502 mono_ms=282789805 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187943 role=brain wall_ms=1784028460502 mono_ms=282789805 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187944 role=brain wall_ms=1784028465539 mono_ms=282794842 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187944 role=brain wall_ms=1784028465539 mono_ms=282794842 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187945 role=brain wall_ms=1784028470581 mono_ms=282799884 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187945 role=brain wall_ms=1784028470581 mono_ms=282799884 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187946 role=brain wall_ms=1784028475618 mono_ms=282804921 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187946 role=brain wall_ms=1784028475618 mono_ms=282804921 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187947 role=brain wall_ms=1784028480656 mono_ms=282809959 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187947 role=brain wall_ms=1784028480656 mono_ms=282809959 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467616 id=b5716f030ad33479a1a99c05237758ea70faf33d3cc037b644775c59e247ea7b addr=EndpointAddr { id: PublicKey(b5716f030ad33479a1a99c05237758ea70faf33d3cc037b644775c59e247ea7b), addrs: {Ip(100.68.35.65:56661), Ip(192.168.1.81:56661)} }\nPAIR_MEET_UP:BIGNET step=59467616 id=e6a7ce7fc79e97b998746a1298518ed9467b24ad7a8aaf33132e775961e70cee addr=EndpointAddr { id: PublicKey(e6a7ce7fc79e97b998746a1298518ed9467b24ad7a8aaf33132e775961e70cee), addrs: {Ip(100.68.35.65:56659), Ip(192.168.1.81:56659)} }\nCONN_LIFECYCLE: conn=187948 role=brain wall_ms=1784028485696 mono_ms=282814999 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187948 role=brain wall_ms=1784028485696 mono_ms=282814999 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187949 role=brain wall_ms=1784028490735 mono_ms=282820038 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187949 role=brain wall_ms=1784028490735 mono_ms=282820038 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187950 role=brain wall_ms=1784028495773 mono_ms=282825075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187950 role=brain wall_ms=1784028495773 mono_ms=282825076 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187951 role=brain wall_ms=1784028500811 mono_ms=282830113 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187951 role=brain wall_ms=1784028500811 mono_ms=282830114 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187952 role=brain wall_ms=1784028505848 mono_ms=282835151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187952 role=brain wall_ms=1784028505848 mono_ms=282835151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467617 id=0aecc09533556f169a96460eafb56273d2399b94d57139e01ef986ace9d4dec5 addr=EndpointAddr { id: PublicKey(0aecc09533556f169a96460eafb56273d2399b94d57139e01ef986ace9d4dec5), addrs: {Ip(100.68.35.65:56091), Ip(192.168.1.81:56091)} }\nPAIR_MEET_UP:BIGNET step=59467617 id=c2993025746fa6e9c5ddb84b31cad43aff52baacaa99cd95fad246b8633859f2 addr=EndpointAddr { id: PublicKey(c2993025746fa6e9c5ddb84b31cad43aff52baacaa99cd95fad246b8633859f2), addrs: {Ip(100.68.35.65:56097), Ip(192.168.1.81:56097)} }\nCONN_LIFECYCLE: conn=187953 role=brain wall_ms=1784028510887 mono_ms=282840190 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187953 role=brain wall_ms=1784028510887 mono_ms=282840190 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187954 role=brain wall_ms=1784028515924 mono_ms=282845227 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187954 role=brain wall_ms=1784028515924 mono_ms=282845227 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187955 role=brain wall_ms=1784028520963 mono_ms=282850266 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187955 role=brain wall_ms=1784028520963 mono_ms=282850266 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187956 role=brain wall_ms=1784028526001 mono_ms=282855304 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187956 role=brain wall_ms=1784028526001 mono_ms=282855304 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187957 role=brain wall_ms=1784028531039 mono_ms=282860342 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187957 role=brain wall_ms=1784028531039 mono_ms=282860342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187958 role=brain wall_ms=1784028536079 mono_ms=282865382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187958 role=brain wall_ms=1784028536079 mono_ms=282865382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467618 id=2b1dc33bba7bc4233c26de4e920c4398c7483d15637cf63527bd02c0714ead34 addr=EndpointAddr { id: PublicKey(2b1dc33bba7bc4233c26de4e920c4398c7483d15637cf63527bd02c0714ead34), addrs: {Ip(100.68.35.65:56157), Ip(192.168.1.81:56157)} }\nPAIR_MEET_UP:BIGNET step=59467618 id=067951452685f48b889d5cab506f8f1bb1368eac5c559f07548a6381cc6eaaf8 addr=EndpointAddr { id: PublicKey(067951452685f48b889d5cab506f8f1bb1368eac5c559f07548a6381cc6eaaf8), addrs: {Ip(100.68.35.65:56155), Ip(192.168.1.81:56155)} }\nCONN_LIFECYCLE: conn=187959 role=brain wall_ms=1784028541118 mono_ms=282870421 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187959 role=brain wall_ms=1784028541118 mono_ms=282870421 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187960 role=brain wall_ms=1784028546157 mono_ms=282875460 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187960 role=brain wall_ms=1784028546157 mono_ms=282875460 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187961 role=brain wall_ms=1784028551197 mono_ms=282880500 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187961 role=brain wall_ms=1784028551197 mono_ms=282880500 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187962 role=brain wall_ms=1784028556237 mono_ms=282885540 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187962 role=brain wall_ms=1784028556237 mono_ms=282885540 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187963 role=brain wall_ms=1784028561275 mono_ms=282890577 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187963 role=brain wall_ms=1784028561275 mono_ms=282890577 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187964 role=brain wall_ms=1784028566312 mono_ms=282895615 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187964 role=brain wall_ms=1784028566312 mono_ms=282895615 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467619 id=4b879c8f285b6e5b2f69203b07b6d6ff9683d7e7d0a4f1856e50788aa1d2179b addr=EndpointAddr { id: PublicKey(4b879c8f285b6e5b2f69203b07b6d6ff9683d7e7d0a4f1856e50788aa1d2179b), addrs: {Ip(100.68.35.65:51367), Ip(192.168.1.81:51367)} }\nPAIR_MEET_UP:SPT_DEV step=59467619 id=0546dce0f7d5a649319394667c0c0fa4dfa0cd3697d4df77c217648d4b388dfc addr=EndpointAddr { id: PublicKey(0546dce0f7d5a649319394667c0c0fa4dfa0cd3697d4df77c217648d4b388dfc), addrs: {Ip(100.68.35.65:51369), Ip(192.168.1.81:51369)} }\nCONN_LIFECYCLE: conn=187965 role=brain wall_ms=1784028571351 mono_ms=282900653 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187965 role=brain wall_ms=1784028571351 mono_ms=282900654 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=187966 role=brain wall_ms=1784028576389 mono_ms=282905692 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187966 role=brain wall_ms=1784028576389 mono_ms=282905692 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187967 role=brain wall_ms=1784028581428 mono_ms=282910730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187967 role=brain wall_ms=1784028581428 mono_ms=282910730 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187968 role=brain wall_ms=1784028586465 mono_ms=282915768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187968 role=brain wall_ms=1784028586465 mono_ms=282915768 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187969 role=brain wall_ms=1784028591504 mono_ms=282920807 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187969 role=brain wall_ms=1784028591504 mono_ms=282920807 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187970 role=brain wall_ms=1784028596545 mono_ms=282925847 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=187970 role=brain wall_ms=1784028596545 mono_ms=282925848 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467620 id=27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913 addr=EndpointAddr { id: PublicKey(27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913), addrs: {Ip(100.68.35.65:65481), Ip(192.168.1.81:65481)} }\nPAIR_MEET_UP:SPT_DEV step=59467620 id=d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80 addr=EndpointAddr { id: PublicKey(d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80), addrs: {Ip(100.68.35.65:65479), Ip(192.168.1.81:65479)} }\nCONN_LIFECYCLE: conn=187971 role=brain wall_ms=1784028601585 mono_ms=282930888 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":619999,"lineNumbers":[619999,620000,620001,620002,620003,620004,620005,620006,620007,620008,620009,620010,620011,620012,620013,620014,620015,620016,620017,620018,620019,620020,620021,620022,620023,620024,620025,620026,620027,620028,620029,620030,620031,620032,620033,620034,620035,620036,620037,620038,620039,620040,620041,620042,620043,620044,620045,620046,620047,620048,620049,620050,620051,620052,620053,620054,620055,620056,620057,620058,620059,620060,620061,620062,620063,620064,620065,620066,620067,620068,620069,620070,620071,620072,620073,620074,620075,620076,620077,620078,620079,620080,620081,620082,620083,620084,620085,620086,620087,620088,620089,620090,620091,620092,620093,620094,620095,620096,620097,620098,620099,620100,620101,620102,620103]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":159,"totalBytes":15705,"outputLines":105,"outputBytes":15705,"shownRange":{"start":619999,"end":620103},"nextOffset":620104}}},"isError":false,"timestamp":1784069429048}}
{"type":"message","id":"d8fb3e72","parentId":"2502fbec","timestamp":"2026-07-14T22:50:29.064Z","message":{"role":"toolResult","toolCallId":"call_WzlxcFSscwUjIRSSxDJfUGbr|fc_050f56f290a937ae016a56bd33e6188196956b850547f46226","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=194772 role=brain wall_ms=1784063365147 mono_ms=317694416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468779 id=7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4 addr=EndpointAddr { id: PublicKey(7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4), addrs: {Ip(100.68.35.65:51058), Ip(192.168.1.81:51058)} }\nPAIR_MEET_UP:SPT_DEV step=59468779 id=74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af addr=EndpointAddr { id: PublicKey(74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af), addrs: {Ip(100.68.35.65:51060), Ip(192.168.1.81:51060)} }\nCONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194775 role=brain wall_ms=1784063380264 mono_ms=317709534 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194775 role=brain wall_ms=1784063380264 mono_ms=317709534 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194776 role=brain wall_ms=1784063385301 mono_ms=317714571 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194776 role=brain wall_ms=1784063385301 mono_ms=317714571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194777 role=brain wall_ms=1784063390338 mono_ms=317719608 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194777 role=brain wall_ms=1784063390338 mono_ms=317719608 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194778 role=brain wall_ms=1784063395377 mono_ms=317724646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194778 role=brain wall_ms=1784063395377 mono_ms=317724646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194779 role=brain wall_ms=1784063400414 mono_ms=317729684 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194779 role=brain wall_ms=1784063400415 mono_ms=317729684 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468780 id=bbb54d74dc5625cf48409f49315cf297370c75338f8ed37b7ad59a8579fb30e7 addr=EndpointAddr { id: PublicKey(bbb54d74dc5625cf48409f49315cf297370c75338f8ed37b7ad59a8579fb30e7), addrs: {Ip(100.68.35.65:55512), Ip(192.168.1.81:55512)} }\nPAIR_MEET_UP:SPT_DEV step=59468780 id=f253079ac1457d373f65fd8037e12e0e4ec4122249654ddfc525df3d1552fe76 addr=EndpointAddr { id: PublicKey(f253079ac1457d373f65fd8037e12e0e4ec4122249654ddfc525df3d1552fe76), addrs: {Ip(100.68.35.65:55514), Ip(192.168.1.81:55514)} }\nCONN_LIFECYCLE: conn=194780 role=brain wall_ms=1784063405452 mono_ms=317734722 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194780 role=brain wall_ms=1784063405452 mono_ms=317734722 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194781 role=brain wall_ms=1784063410488 mono_ms=317739758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194781 role=brain wall_ms=1784063410488 mono_ms=317739758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194782 role=brain wall_ms=1784063415525 mono_ms=317744795 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194782 role=brain wall_ms=1784063415525 mono_ms=317744795 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194783 role=brain wall_ms=1784063420562 mono_ms=317749832 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194783 role=brain wall_ms=1784063420562 mono_ms=317749832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194784 role=brain wall_ms=1784063425604 mono_ms=317754873 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194784 role=brain wall_ms=1784063425604 mono_ms=317754874 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194785 role=brain wall_ms=1784063430645 mono_ms=317759914 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194785 role=brain wall_ms=1784063430645 mono_ms=317759914 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468781 id=f37a7700f1bdc2877384e716fcfda81a6029dfba6bb18e5ed7001ec6e4e11c04 addr=EndpointAddr { id: PublicKey(f37a7700f1bdc2877384e716fcfda81a6029dfba6bb18e5ed7001ec6e4e11c04), addrs: {Ip(100.68.35.65:59988), Ip(192.168.1.81:59988)} }\nPAIR_MEET_UP:SPT_DEV step=59468781 id=8cd131b1e51fd98c44343a3d27b5510bbf98ec2bbc512d41103129fe347f415d addr=EndpointAddr { id: PublicKey(8cd131b1e51fd98c44343a3d27b5510bbf98ec2bbc512d41103129fe347f415d), addrs: {Ip(100.68.35.65:59986), Ip(192.168.1.81:59986)} }\nCONN_LIFECYCLE: conn=194786 role=brain wall_ms=1784063435686 mono_ms=317764955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194786 role=brain wall_ms=1784063435686 mono_ms=317764955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194787 role=brain wall_ms=1784063440723 mono_ms=317769992 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194787 role=brain wall_ms=1784063440723 mono_ms=317769992 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194788 role=brain wall_ms=1784063445763 mono_ms=317775033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194788 role=brain wall_ms=1784063445763 mono_ms=317775033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194789 role=brain wall_ms=1784063450804 mono_ms=317780073 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194789 role=brain wall_ms=1784063450804 mono_ms=317780074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194790 role=brain wall_ms=1784063455842 mono_ms=317785112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194790 role=brain wall_ms=1784063455842 mono_ms=317785112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468782 id=3cb4e7a2c2d77b5b9d18c4f401bd0bb9217465a9b64111e71c0361d3e906ef5a addr=EndpointAddr { id: PublicKey(3cb4e7a2c2d77b5b9d18c4f401bd0bb9217465a9b64111e71c0361d3e906ef5a), addrs: {Ip(100.68.35.65:52706), Ip(192.168.1.81:52706)} }\nPAIR_MEET_UP:SPT_DEV step=59468782 id=a9af317c27dfc5236f13189aa69a7ef0717669e0610385a8270318759593f538 addr=EndpointAddr { id: PublicKey(a9af317c27dfc5236f13189aa69a7ef0717669e0610385a8270318759593f538), addrs: {Ip(100.68.35.65:52708), Ip(192.168.1.81:52708)} }\nCONN_LIFECYCLE: conn=194791 role=brain wall_ms=1784063460881 mono_ms=317790151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194791 role=brain wall_ms=1784063460881 mono_ms=317790151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194792 role=brain wall_ms=1784063465919 mono_ms=317795189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194792 role=brain wall_ms=1784063465919 mono_ms=317795189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194793 role=brain wall_ms=1784063470955 mono_ms=317800225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194793 role=brain wall_ms=1784063470955 mono_ms=317800225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194794 role=brain wall_ms=1784063475994 mono_ms=317805263 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194794 role=brain wall_ms=1784063475994 mono_ms=317805263 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194795 role=brain wall_ms=1784063481030 mono_ms=317810300 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194795 role=brain wall_ms=1784063481030 mono_ms=317810300 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194796 role=brain wall_ms=1784063486067 mono_ms=317815337 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194796 role=brain wall_ms=1784063486067 mono_ms=317815337 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468783 id=94a83154cf6bab34e94484d09bac0a79dcbebd4b0e1a9cb69ca7c8ea7a53c233 addr=EndpointAddr { id: PublicKey(94a83154cf6bab34e94484d09bac0a79dcbebd4b0e1a9cb69ca7c8ea7a53c233), addrs: {Ip(100.68.35.65:53193), Ip(192.168.1.81:53193)} }\nPAIR_MEET_UP:SPT_DEV step=59468783 id=41274b33e1150760be93afdaa486889a828f472428e9f17dbda32564355b605c addr=EndpointAddr { id: PublicKey(41274b33e1150760be93afdaa486889a828f472428e9f17dbda32564355b605c), addrs: {Ip(100.68.35.65:53191), Ip(192.168.1.81:53191)} }\nCONN_LIFECYCLE: conn=194797 role=brain wall_ms=1784063491106 mono_ms=317820376 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194797 role=brain wall_ms=1784063491106 mono_ms=317820376 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194798 role=brain wall_ms=1784063496143 mono_ms=317825413 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194798 role=brain wall_ms=1784063496143 mono_ms=317825413 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194799 role=brain wall_ms=1784063501183 mono_ms=317830452 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194799 role=brain wall_ms=1784063501183 mono_ms=317830452 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194800 role=brain wall_ms=1784063506220 mono_ms=317835490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194800 role=brain wall_ms=1784063506220 mono_ms=317835490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194801 role=brain wall_ms=1784063511256 mono_ms=317840526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194801 role=brain wall_ms=1784063511256 mono_ms=317840526 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194802 role=brain wall_ms=1784063516295 mono_ms=317845565 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194802 role=brain wall_ms=1784063516295 mono_ms=317845565 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468784 id=735013d030cacad2149897953d8518f42b2e0182d2c2a7fb8b04902783c85965 addr=EndpointAddr { id: PublicKey(735013d030cacad2149897953d8518f42b2e0182d2c2a7fb8b04902783c85965), addrs: {Ip(100.68.35.65:53267), Ip(192.168.1.81:53267)} }\nPAIR_MEET_UP:BIGNET step=59468784 id=13f4dbb01bf54d6854b58b9f744580cf3f902ab3d4ecffa34af61fe86fce156d addr=EndpointAddr { id: PublicKey(13f4dbb01bf54d6854b58b9f744580cf3f902ab3d4ecffa34af61fe86fce156d), addrs: {Ip(100.68.35.65:53269), Ip(192.168.1.81:53269)} }\nCONN_LIFECYCLE: conn=194803 role=brain wall_ms=1784063521334 mono_ms=317850603 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194803 role=brain wall_ms=1784063521334 mono_ms=317850603 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194804 role=brain wall_ms=1784063526372 mono_ms=317855641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194804 role=brain wall_ms=1784063526372 mono_ms=317855641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194805 role=brain wall_ms=1784063531407 mono_ms=317860676 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194805 role=brain wall_ms=1784063531407 mono_ms=317860676 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194808 role=brain wall_ms=1784063546518 mono_ms=317875788 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 639999-640103 of 116. Use :640104 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=194772 role=brain wall_ms=1784063365147 mono_ms=317694416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468779 id=7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4 addr=EndpointAddr { id: PublicKey(7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4), addrs: {Ip(100.68.35.65:51058), Ip(192.168.1.81:51058)} }\nPAIR_MEET_UP:SPT_DEV step=59468779 id=74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af addr=EndpointAddr { id: PublicKey(74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af), addrs: {Ip(100.68.35.65:51060), Ip(192.168.1.81:51060)} }\nCONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194775 role=brain wall_ms=1784063380264 mono_ms=317709534 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194775 role=brain wall_ms=1784063380264 mono_ms=317709534 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194776 role=brain wall_ms=1784063385301 mono_ms=317714571 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194776 role=brain wall_ms=1784063385301 mono_ms=317714571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194777 role=brain wall_ms=1784063390338 mono_ms=317719608 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194777 role=brain wall_ms=1784063390338 mono_ms=317719608 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194778 role=brain wall_ms=1784063395377 mono_ms=317724646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194778 role=brain wall_ms=1784063395377 mono_ms=317724646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194779 role=brain wall_ms=1784063400414 mono_ms=317729684 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194779 role=brain wall_ms=1784063400415 mono_ms=317729684 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468780 id=bbb54d74dc5625cf48409f49315cf297370c75338f8ed37b7ad59a8579fb30e7 addr=EndpointAddr { id: PublicKey(bbb54d74dc5625cf48409f49315cf297370c75338f8ed37b7ad59a8579fb30e7), addrs: {Ip(100.68.35.65:55512), Ip(192.168.1.81:55512)} }\nPAIR_MEET_UP:SPT_DEV step=59468780 id=f253079ac1457d373f65fd8037e12e0e4ec4122249654ddfc525df3d1552fe76 addr=EndpointAddr { id: PublicKey(f253079ac1457d373f65fd8037e12e0e4ec4122249654ddfc525df3d1552fe76), addrs: {Ip(100.68.35.65:55514), Ip(192.168.1.81:55514)} }\nCONN_LIFECYCLE: conn=194780 role=brain wall_ms=1784063405452 mono_ms=317734722 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194780 role=brain wall_ms=1784063405452 mono_ms=317734722 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194781 role=brain wall_ms=1784063410488 mono_ms=317739758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194781 role=brain wall_ms=1784063410488 mono_ms=317739758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194782 role=brain wall_ms=1784063415525 mono_ms=317744795 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194782 role=brain wall_ms=1784063415525 mono_ms=317744795 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194783 role=brain wall_ms=1784063420562 mono_ms=317749832 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194783 role=brain wall_ms=1784063420562 mono_ms=317749832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194784 role=brain wall_ms=1784063425604 mono_ms=317754873 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194784 role=brain wall_ms=1784063425604 mono_ms=317754874 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194785 role=brain wall_ms=1784063430645 mono_ms=317759914 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194785 role=brain wall_ms=1784063430645 mono_ms=317759914 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468781 id=f37a7700f1bdc2877384e716fcfda81a6029dfba6bb18e5ed7001ec6e4e11c04 addr=EndpointAddr { id: PublicKey(f37a7700f1bdc2877384e716fcfda81a6029dfba6bb18e5ed7001ec6e4e11c04), addrs: {Ip(100.68.35.65:59988), Ip(192.168.1.81:59988)} }\nPAIR_MEET_UP:SPT_DEV step=59468781 id=8cd131b1e51fd98c44343a3d27b5510bbf98ec2bbc512d41103129fe347f415d addr=EndpointAddr { id: PublicKey(8cd131b1e51fd98c44343a3d27b5510bbf98ec2bbc512d41103129fe347f415d), addrs: {Ip(100.68.35.65:59986), Ip(192.168.1.81:59986)} }\nCONN_LIFECYCLE: conn=194786 role=brain wall_ms=1784063435686 mono_ms=317764955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194786 role=brain wall_ms=1784063435686 mono_ms=317764955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194787 role=brain wall_ms=1784063440723 mono_ms=317769992 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194787 role=brain wall_ms=1784063440723 mono_ms=317769992 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194788 role=brain wall_ms=1784063445763 mono_ms=317775033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194788 role=brain wall_ms=1784063445763 mono_ms=317775033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194789 role=brain wall_ms=1784063450804 mono_ms=317780073 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194789 role=brain wall_ms=1784063450804 mono_ms=317780074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194790 role=brain wall_ms=1784063455842 mono_ms=317785112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194790 role=brain wall_ms=1784063455842 mono_ms=317785112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468782 id=3cb4e7a2c2d77b5b9d18c4f401bd0bb9217465a9b64111e71c0361d3e906ef5a addr=EndpointAddr { id: PublicKey(3cb4e7a2c2d77b5b9d18c4f401bd0bb9217465a9b64111e71c0361d3e906ef5a), addrs: {Ip(100.68.35.65:52706), Ip(192.168.1.81:52706)} }\nPAIR_MEET_UP:SPT_DEV step=59468782 id=a9af317c27dfc5236f13189aa69a7ef0717669e0610385a8270318759593f538 addr=EndpointAddr { id: PublicKey(a9af317c27dfc5236f13189aa69a7ef0717669e0610385a8270318759593f538), addrs: {Ip(100.68.35.65:52708), Ip(192.168.1.81:52708)} }\nCONN_LIFECYCLE: conn=194791 role=brain wall_ms=1784063460881 mono_ms=317790151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194791 role=brain wall_ms=1784063460881 mono_ms=317790151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194792 role=brain wall_ms=1784063465919 mono_ms=317795189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194792 role=brain wall_ms=1784063465919 mono_ms=317795189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194793 role=brain wall_ms=1784063470955 mono_ms=317800225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194793 role=brain wall_ms=1784063470955 mono_ms=317800225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194794 role=brain wall_ms=1784063475994 mono_ms=317805263 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194794 role=brain wall_ms=1784063475994 mono_ms=317805263 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194795 role=brain wall_ms=1784063481030 mono_ms=317810300 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194795 role=brain wall_ms=1784063481030 mono_ms=317810300 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194796 role=brain wall_ms=1784063486067 mono_ms=317815337 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194796 role=brain wall_ms=1784063486067 mono_ms=317815337 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468783 id=94a83154cf6bab34e94484d09bac0a79dcbebd4b0e1a9cb69ca7c8ea7a53c233 addr=EndpointAddr { id: PublicKey(94a83154cf6bab34e94484d09bac0a79dcbebd4b0e1a9cb69ca7c8ea7a53c233), addrs: {Ip(100.68.35.65:53193), Ip(192.168.1.81:53193)} }\nPAIR_MEET_UP:SPT_DEV step=59468783 id=41274b33e1150760be93afdaa486889a828f472428e9f17dbda32564355b605c addr=EndpointAddr { id: PublicKey(41274b33e1150760be93afdaa486889a828f472428e9f17dbda32564355b605c), addrs: {Ip(100.68.35.65:53191), Ip(192.168.1.81:53191)} }\nCONN_LIFECYCLE: conn=194797 role=brain wall_ms=1784063491106 mono_ms=317820376 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194797 role=brain wall_ms=1784063491106 mono_ms=317820376 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194798 role=brain wall_ms=1784063496143 mono_ms=317825413 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194798 role=brain wall_ms=1784063496143 mono_ms=317825413 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194799 role=brain wall_ms=1784063501183 mono_ms=317830452 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194799 role=brain wall_ms=1784063501183 mono_ms=317830452 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194800 role=brain wall_ms=1784063506220 mono_ms=317835490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194800 role=brain wall_ms=1784063506220 mono_ms=317835490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194801 role=brain wall_ms=1784063511256 mono_ms=317840526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194801 role=brain wall_ms=1784063511256 mono_ms=317840526 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194802 role=brain wall_ms=1784063516295 mono_ms=317845565 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194802 role=brain wall_ms=1784063516295 mono_ms=317845565 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468784 id=735013d030cacad2149897953d8518f42b2e0182d2c2a7fb8b04902783c85965 addr=EndpointAddr { id: PublicKey(735013d030cacad2149897953d8518f42b2e0182d2c2a7fb8b04902783c85965), addrs: {Ip(100.68.35.65:53267), Ip(192.168.1.81:53267)} }\nPAIR_MEET_UP:BIGNET step=59468784 id=13f4dbb01bf54d6854b58b9f744580cf3f902ab3d4ecffa34af61fe86fce156d addr=EndpointAddr { id: PublicKey(13f4dbb01bf54d6854b58b9f744580cf3f902ab3d4ecffa34af61fe86fce156d), addrs: {Ip(100.68.35.65:53269), Ip(192.168.1.81:53269)} }\nCONN_LIFECYCLE: conn=194803 role=brain wall_ms=1784063521334 mono_ms=317850603 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194803 role=brain wall_ms=1784063521334 mono_ms=317850603 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194804 role=brain wall_ms=1784063526372 mono_ms=317855641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194804 role=brain wall_ms=1784063526372 mono_ms=317855641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194805 role=brain wall_ms=1784063531407 mono_ms=317860676 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194805 role=brain wall_ms=1784063531407 mono_ms=317860676 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194808 role=brain wall_ms=1784063546518 mono_ms=317875788 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":116,"totalBytes":15548,"outputLines":105,"outputBytes":15548,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=194772 role=brain wall_ms=1784063365147 mono_ms=317694416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468779 id=7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4 addr=EndpointAddr { id: PublicKey(7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4), addrs: {Ip(100.68.35.65:51058), Ip(192.168.1.81:51058)} }\nPAIR_MEET_UP:SPT_DEV step=59468779 id=74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af addr=EndpointAddr { id: PublicKey(74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af), addrs: {Ip(100.68.35.65:51060), Ip(192.168.1.81:51060)} }\nCONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194775 role=brain wall_ms=1784063380264 mono_ms=317709534 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194775 role=brain wall_ms=1784063380264 mono_ms=317709534 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194776 role=brain wall_ms=1784063385301 mono_ms=317714571 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194776 role=brain wall_ms=1784063385301 mono_ms=317714571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194777 role=brain wall_ms=1784063390338 mono_ms=317719608 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194777 role=brain wall_ms=1784063390338 mono_ms=317719608 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194778 role=brain wall_ms=1784063395377 mono_ms=317724646 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194778 role=brain wall_ms=1784063395377 mono_ms=317724646 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194779 role=brain wall_ms=1784063400414 mono_ms=317729684 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194779 role=brain wall_ms=1784063400415 mono_ms=317729684 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468780 id=bbb54d74dc5625cf48409f49315cf297370c75338f8ed37b7ad59a8579fb30e7 addr=EndpointAddr { id: PublicKey(bbb54d74dc5625cf48409f49315cf297370c75338f8ed37b7ad59a8579fb30e7), addrs: {Ip(100.68.35.65:55512), Ip(192.168.1.81:55512)} }\nPAIR_MEET_UP:SPT_DEV step=59468780 id=f253079ac1457d373f65fd8037e12e0e4ec4122249654ddfc525df3d1552fe76 addr=EndpointAddr { id: PublicKey(f253079ac1457d373f65fd8037e12e0e4ec4122249654ddfc525df3d1552fe76), addrs: {Ip(100.68.35.65:55514), Ip(192.168.1.81:55514)} }\nCONN_LIFECYCLE: conn=194780 role=brain wall_ms=1784063405452 mono_ms=317734722 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194780 role=brain wall_ms=1784063405452 mono_ms=317734722 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194781 role=brain wall_ms=1784063410488 mono_ms=317739758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194781 role=brain wall_ms=1784063410488 mono_ms=317739758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194782 role=brain wall_ms=1784063415525 mono_ms=317744795 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194782 role=brain wall_ms=1784063415525 mono_ms=317744795 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194783 role=brain wall_ms=1784063420562 mono_ms=317749832 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194783 role=brain wall_ms=1784063420562 mono_ms=317749832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194784 role=brain wall_ms=1784063425604 mono_ms=317754873 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194784 role=brain wall_ms=1784063425604 mono_ms=317754874 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194785 role=brain wall_ms=1784063430645 mono_ms=317759914 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194785 role=brain wall_ms=1784063430645 mono_ms=317759914 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468781 id=f37a7700f1bdc2877384e716fcfda81a6029dfba6bb18e5ed7001ec6e4e11c04 addr=EndpointAddr { id: PublicKey(f37a7700f1bdc2877384e716fcfda81a6029dfba6bb18e5ed7001ec6e4e11c04), addrs: {Ip(100.68.35.65:59988), Ip(192.168.1.81:59988)} }\nPAIR_MEET_UP:SPT_DEV step=59468781 id=8cd131b1e51fd98c44343a3d27b5510bbf98ec2bbc512d41103129fe347f415d addr=EndpointAddr { id: PublicKey(8cd131b1e51fd98c44343a3d27b5510bbf98ec2bbc512d41103129fe347f415d), addrs: {Ip(100.68.35.65:59986), Ip(192.168.1.81:59986)} }\nCONN_LIFECYCLE: conn=194786 role=brain wall_ms=1784063435686 mono_ms=317764955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194786 role=brain wall_ms=1784063435686 mono_ms=317764955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194787 role=brain wall_ms=1784063440723 mono_ms=317769992 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194787 role=brain wall_ms=1784063440723 mono_ms=317769992 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194788 role=brain wall_ms=1784063445763 mono_ms=317775033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194788 role=brain wall_ms=1784063445763 mono_ms=317775033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194789 role=brain wall_ms=1784063450804 mono_ms=317780073 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194789 role=brain wall_ms=1784063450804 mono_ms=317780074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194790 role=brain wall_ms=1784063455842 mono_ms=317785112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194790 role=brain wall_ms=1784063455842 mono_ms=317785112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468782 id=3cb4e7a2c2d77b5b9d18c4f401bd0bb9217465a9b64111e71c0361d3e906ef5a addr=EndpointAddr { id: PublicKey(3cb4e7a2c2d77b5b9d18c4f401bd0bb9217465a9b64111e71c0361d3e906ef5a), addrs: {Ip(100.68.35.65:52706), Ip(192.168.1.81:52706)} }\nPAIR_MEET_UP:SPT_DEV step=59468782 id=a9af317c27dfc5236f13189aa69a7ef0717669e0610385a8270318759593f538 addr=EndpointAddr { id: PublicKey(a9af317c27dfc5236f13189aa69a7ef0717669e0610385a8270318759593f538), addrs: {Ip(100.68.35.65:52708), Ip(192.168.1.81:52708)} }\nCONN_LIFECYCLE: conn=194791 role=brain wall_ms=1784063460881 mono_ms=317790151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194791 role=brain wall_ms=1784063460881 mono_ms=317790151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194792 role=brain wall_ms=1784063465919 mono_ms=317795189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194792 role=brain wall_ms=1784063465919 mono_ms=317795189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194793 role=brain wall_ms=1784063470955 mono_ms=317800225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194793 role=brain wall_ms=1784063470955 mono_ms=317800225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194794 role=brain wall_ms=1784063475994 mono_ms=317805263 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194794 role=brain wall_ms=1784063475994 mono_ms=317805263 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194795 role=brain wall_ms=1784063481030 mono_ms=317810300 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194795 role=brain wall_ms=1784063481030 mono_ms=317810300 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194796 role=brain wall_ms=1784063486067 mono_ms=317815337 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194796 role=brain wall_ms=1784063486067 mono_ms=317815337 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468783 id=94a83154cf6bab34e94484d09bac0a79dcbebd4b0e1a9cb69ca7c8ea7a53c233 addr=EndpointAddr { id: PublicKey(94a83154cf6bab34e94484d09bac0a79dcbebd4b0e1a9cb69ca7c8ea7a53c233), addrs: {Ip(100.68.35.65:53193), Ip(192.168.1.81:53193)} }\nPAIR_MEET_UP:SPT_DEV step=59468783 id=41274b33e1150760be93afdaa486889a828f472428e9f17dbda32564355b605c addr=EndpointAddr { id: PublicKey(41274b33e1150760be93afdaa486889a828f472428e9f17dbda32564355b605c), addrs: {Ip(100.68.35.65:53191), Ip(192.168.1.81:53191)} }\nCONN_LIFECYCLE: conn=194797 role=brain wall_ms=1784063491106 mono_ms=317820376 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194797 role=brain wall_ms=1784063491106 mono_ms=317820376 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194798 role=brain wall_ms=1784063496143 mono_ms=317825413 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194798 role=brain wall_ms=1784063496143 mono_ms=317825413 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194799 role=brain wall_ms=1784063501183 mono_ms=317830452 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194799 role=brain wall_ms=1784063501183 mono_ms=317830452 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194800 role=brain wall_ms=1784063506220 mono_ms=317835490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194800 role=brain wall_ms=1784063506220 mono_ms=317835490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194801 role=brain wall_ms=1784063511256 mono_ms=317840526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194801 role=brain wall_ms=1784063511256 mono_ms=317840526 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194802 role=brain wall_ms=1784063516295 mono_ms=317845565 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194802 role=brain wall_ms=1784063516295 mono_ms=317845565 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468784 id=735013d030cacad2149897953d8518f42b2e0182d2c2a7fb8b04902783c85965 addr=EndpointAddr { id: PublicKey(735013d030cacad2149897953d8518f42b2e0182d2c2a7fb8b04902783c85965), addrs: {Ip(100.68.35.65:53267), Ip(192.168.1.81:53267)} }\nPAIR_MEET_UP:BIGNET step=59468784 id=13f4dbb01bf54d6854b58b9f744580cf3f902ab3d4ecffa34af61fe86fce156d addr=EndpointAddr { id: PublicKey(13f4dbb01bf54d6854b58b9f744580cf3f902ab3d4ecffa34af61fe86fce156d), addrs: {Ip(100.68.35.65:53269), Ip(192.168.1.81:53269)} }\nCONN_LIFECYCLE: conn=194803 role=brain wall_ms=1784063521334 mono_ms=317850603 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194803 role=brain wall_ms=1784063521334 mono_ms=317850603 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194804 role=brain wall_ms=1784063526372 mono_ms=317855641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194804 role=brain wall_ms=1784063526372 mono_ms=317855641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194805 role=brain wall_ms=1784063531407 mono_ms=317860676 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194805 role=brain wall_ms=1784063531407 mono_ms=317860676 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=194808 role=brain wall_ms=1784063546518 mono_ms=317875788 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":639999,"lineNumbers":[639999,640000,640001,640002,640003,640004,640005,640006,640007,640008,640009,640010,640011,640012,640013,640014,640015,640016,640017,640018,640019,640020,640021,640022,640023,640024,640025,640026,640027,640028,640029,640030,640031,640032,640033,640034,640035,640036,640037,640038,640039,640040,640041,640042,640043,640044,640045,640046,640047,640048,640049,640050,640051,640052,640053,640054,640055,640056,640057,640058,640059,640060,640061,640062,640063,640064,640065,640066,640067,640068,640069,640070,640071,640072,640073,640074,640075,640076,640077,640078,640079,640080,640081,640082,640083,640084,640085,640086,640087,640088,640089,640090,640091,640092,640093,640094,640095,640096,640097,640098,640099,640100,640101,640102,640103]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":116,"totalBytes":15548,"outputLines":105,"outputBytes":15548,"shownRange":{"start":639999,"end":640103},"nextOffset":640104}}},"isError":false,"timestamp":1784069429064}}
{"type":"message","id":"143809f4","parentId":"d8fb3e72","timestamp":"2026-07-14T22:50:29.067Z","message":{"role":"toolResult","toolCallId":"call_oC30dbj6i0k69Wr8h6ylTBhl|fc_050f56f290a937ae016a56bd33e62881968b13993ea02198e2","toolName":"read","content":[{"type":"text","text":"Line 800000 is beyond end of file (643509 lines total). Use :1 to read from the start, or :643509 to read the last line."}],"details":{"resolvedPath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"isError":false,"timestamp":1784069429067}}
{"type":"message","id":"e500c730","parentId":"143809f4","timestamp":"2026-07-14T22:50:36.331Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Inspecting log around 608k for 05:59 timestamp**"},{"type":"toolCall","id":"call_LfKNvUynQxRdljs2fpFwbl8R|fc_050f56f290a937ae016a56bd3c39c48196995363607528ca18","name":"read","arguments":{"i":"Reading EN last-heard onset","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"608000-608150"}},{"type":"toolCall","id":"call_zXWpUqX6EhMhDMoQoEPTnf9B|fc_050f56f290a937ae016a56bd3c39d881969f507ba930013c8e","name":"read","arguments":{"i":"Reading EN post-heard failures","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"610000-610150"}},{"type":"toolCall","id":"call_LvfntIo1jUlW5dHQ05UWX6zO|fc_050f56f290a937ae016a56bd3c39e081969d8b4b66c847bb90","name":"read","arguments":{"i":"Reading latest failure cadence","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"643300-643509"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":12331,"output":246,"cacheRead":312832,"cacheWrite":0,"totalTokens":325409,"reasoningTokens":82,"cost":{"input":0.06165500000000001,"output":0.00738,"cacheRead":0.156416,"cacheWrite":0,"total":0.225451}},"stopReason":"toolUse","timestamp":1784069429791,"responseId":"resp_050f56f290a937ae016a56bd35e580819691b4a5f6dfafeccd","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bd3771408196b54df3bf3acfe0a3","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr08yd3-2yoHrpeIm5ailoa77n3bII9g9RkuIdg5gazSRJQboJ3sTsv8VnRlP-8T5cjttoFJ65OUhV0vknnDUJKROD4sugt89k8S8SHPZTn81_fGZi-FudMsT7LibZrblOKXXit04wbjDfQXWW-m7UZTKdGg-vyRnMYY1JbDntOakeeBwQdqGuXzU8JxxMTj8ArLgHyAytrQ1R8zUFQE_Y5VZOmKQ8Nvtc1Wk2bL2tqlJxqysKiYMUYptVHlp0IntA66-xm-vFZRzNiSZLS16_7V2T9PKHaCQ94pNJ9Jq8b8n-6XhEbM5EofvmTxhe-vVH18RHjb-kETMJo14iKzZ2sunEXZtqFQJI5r_6NgyL5vHAE1yji_2jkKHyeLpQw8Q9hz-0IGnIDR1WerCqPsc_v2wNupISESrrktlSfPonikJPFqodfhsxvUP0XgcBn7DfX7L3_Eu3sdFuIJzeNIZcaOiAqQpH5cjSrOuUTIk4cUlEBISiV3OBxNPAjaes52v9aU53uUYmU7RA_mTIXF7CpRJMnZ417jtcZXVK3ARNQuaVw_OvzCHiKKqSa5zyOzhH5k1LVpjzARVBc3yLsidn0qoAVMIkKqeooWa4jlPKMHs2wxm0u1dkVLEgcIs91IJwxfdDv4ovnbvpevqtqieQ_H5_roYXrtZkDumaFsG4YFXU68ZIAFdy-aIGaF3_i7TkLFlSH_g9HXoj8NhO2YBcgoyoiXuMP7Kn1sCTzfQ356WbhbBsRZsvl599AqkR6fPsy5l01Dij6Qic4EgEwy4QmPPz31PqMxHEzSMMnAipN1Ffv7hgpXKanmyIfUrxGOqsMxr1kcpxTrn1QE7pxTNQdRqPSTrb8sMP4ypE9jnvpoZvwuRVnzjnB601l2IQkeidSmSon1o_tH4zPX9c7vN3t56suxiMXs6rbPCHhyiHs69fueH_CQr0elpPCEWGLpen9dAIk3ev7WB5VeKekeT12YO1fgXHk6h-mDSI9rWqERNi2lnuI_Iq8Maew07gJTRNdxF9s2FdQOy5CoN6-Qw6J0hoyTvobHT0P72MHChHUeNiLZFlR6Jeuri3FakyzLcay1bm6iOawsLGGdRqLZQV9ZcEEx84cQ2eBeXxi6Jt0v6rNQs3NhjaR3bYTbCuEePcX7dZbn2EJKbu8Vw8qvBlRxLrbP84Q1RguVO_cP-WrFbJlEdymwPfMgZqlhGlxTK6-qWaxp0CokQFzL1f6wUf3XCZZ36UN3D6cAuy4jJ6EpLOQ=","summary":[{"type":"summary_text","text":"**Inspecting log around 608k for 05:59 timestamp**"}]},{"id":"fc_050f56f290a937ae016a56bd3c39c48196995363607528ca18","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading EN last-heard onset\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"608000-608150\"}","call_id":"call_LfKNvUynQxRdljs2fpFwbl8R","name":"read"},{"id":"fc_050f56f290a937ae016a56bd3c39d881969f507ba930013c8e","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading EN post-heard failures\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"610000-610150\"}","call_id":"call_zXWpUqX6EhMhDMoQoEPTnf9B","name":"read"},{"id":"fc_050f56f290a937ae016a56bd3c39e081969d8b4b66c847bb90","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading latest failure cadence\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"643300-643509\"}","call_id":"call_LvfntIo1jUlW5dHQ05UWX6zO","name":"read"}]},"duration":6538.89050000906,"ttft":1871.79390001297,"contextSnapshot":{"promptTokens":325163,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_LfKNvUynQxRdljs2fpFwbl8R|fc_050f56f290a937ae016a56bd3c39c48196995363607528ca18","toolName":"read","startedAt":"2026-07-14T22:50:36.331Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading EN last-heard onset"},"id":"7d007d73","parentId":"e500c730","timestamp":"2026-07-14T22:50:36.331Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_zXWpUqX6EhMhDMoQoEPTnf9B|fc_050f56f290a937ae016a56bd3c39d881969f507ba930013c8e","toolName":"read","startedAt":"2026-07-14T22:50:36.331Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading EN post-heard failures"},"id":"2c8ef04c","parentId":"7d007d73","timestamp":"2026-07-14T22:50:36.331Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_LvfntIo1jUlW5dHQ05UWX6zO|fc_050f56f290a937ae016a56bd3c39e081969d8b4b66c847bb90","toolName":"read","startedAt":"2026-07-14T22:50:36.331Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Reading latest failure cadence"},"id":"a2db108e","parentId":"2c8ef04c","timestamp":"2026-07-14T22:50:36.331Z"}
{"type":"message","id":"ad184ba4","parentId":"a2db108e","timestamp":"2026-07-14T22:50:36.979Z","message":{"role":"toolResult","toolCallId":"call_LfKNvUynQxRdljs2fpFwbl8R|fc_050f56f290a937ae016a56bd3c39c48196995363607528ca18","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=183901 role=brain stream-subscriber stream=97584 wall_ms=1784008688415 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain stream-subscriber stream=97584 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97584 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183900 role=brain stream-subscriber stream=97585 wall_ms=1784008688417 mono_ms=263017739 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain wall_ms=1784008688417 mono_ms=263017739 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain stream-subscriber stream=97583 wall_ms=1784008688417 mono_ms=263017739 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain stream-subscriber stream=97584 wall_ms=1784008688417 mono_ms=263017739 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain stream-subscriber stream=97583 wall_ms=1784008688425 mono_ms=263017747 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 event=stream-sub-attach stream=97592 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018076 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain wall_ms=1784008688754 mono_ms=263018076 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain stream-subscriber stream=97592 wall_ms=1784008688754 mono_ms=263018076 event=stream-sub-attach stream=97592 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688754 mono_ms=263018077 event=stream-sub-attach stream=97593 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688754 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018077 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=stream-sub-attach stream=97591 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018077 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain wall_ms=1784008688755 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain stream-subscriber stream=97592 wall_ms=1784008688755 mono_ms=263018078 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018078 event=stream-sub-attach stream=97593 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain wall_ms=1784008688755 mono_ms=263018078 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain stream-subscriber stream=97591 wall_ms=1784008688756 mono_ms=263018078 event=stream-sub-attach stream=97591 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain stream-subscriber stream=97593 wall_ms=1784008688759 mono_ms=263018081 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain stream-subscriber stream=97591 wall_ms=1784008688765 mono_ms=263018087 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183911 role=brain wall_ms=1784008691871 mono_ms=263021193 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183911 role=brain wall_ms=1784008691871 mono_ms=263021193 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183912 role=brain wall_ms=1784008696907 mono_ms=263026229 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183912 role=brain wall_ms=1784008696907 mono_ms=263026229 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008700772 mono_ms=263030094 event=stream-sub-attach stream=97594 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183913 role=brain wall_ms=1784008701950 mono_ms=263031272 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183913 role=brain wall_ms=1784008701950 mono_ms=263031272 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008702107 mono_ms=263031429 event=stream-sub-attach stream=97595 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008704720 mono_ms=263034043 event=stream-sub-attach stream=97596 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183914 role=brain wall_ms=1784008706986 mono_ms=263036308 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183914 role=brain wall_ms=1784008706986 mono_ms=263036308 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008707299 mono_ms=263036621 event=stream-sub-attach stream=97597 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59466957 id=513f587be10ef09f850238d2ad3a45e8feb6bf1cfd85f603f749377b854d2fd3 addr=EndpointAddr { id: PublicKey(513f587be10ef09f850238d2ad3a45e8feb6bf1cfd85f603f749377b854d2fd3), addrs: {Ip(100.68.35.65:58979), Ip(192.168.1.81:58979)} }\nPAIR_MEET_UP:BIGNET step=59466957 id=ca330ba15314d92a8eddb7ff46bd49b8dc52db141d0d9d2a7bb0f5c3e42af0cb addr=EndpointAddr { id: PublicKey(ca330ba15314d92a8eddb7ff46bd49b8dc52db141d0d9d2a7bb0f5c3e42af0cb), addrs: {Ip(100.68.35.65:58977), Ip(192.168.1.81:58977)} }\nCONN_LIFECYCLE: conn=183915 role=brain wall_ms=1784008712025 mono_ms=263041347 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183915 role=brain wall_ms=1784008712025 mono_ms=263041347 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715445 mono_ms=263044768 event=stream-sub-attach stream=97606 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715445 mono_ms=263044768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=stream-sub-attach stream=97605 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715446 mono_ms=263044768 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715446 mono_ms=263044768 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97600 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain stream-subscriber stream=97605 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97605 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain stream-subscriber stream=97606 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97606 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97599 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715447 mono_ms=263044770 event=stream-sub-attach stream=97601 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715447 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=stream-sub-attach stream=97598 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715448 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715448 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain wall_ms=1784008715448 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain stream-subscriber stream=97600 wall_ms=1784008715448 mono_ms=263044770 event=stream-sub-attach stream=97600 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain wall_ms=1784008715448 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain stream-subscriber stream=97599 wall_ms=1784008715448 mono_ms=263044771 event=stream-sub-attach stream=97599 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain stream-subscriber stream=97605 wall_ms=1784008715448 mono_ms=263044771 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715448 mono_ms=263044771 event=stream-sub-attach stream=97602 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain stream-subscriber stream=97601 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97601 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain stream-subscriber stream=97598 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97598 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97603 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain wall_ms=1784008715450 mono_ms=263044772 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain stream-subscriber stream=97602 wall_ms=1784008715450 mono_ms=263044772 event=stream-sub-attach stream=97602 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain stream-subscriber stream=97599 wall_ms=1784008715450 mono_ms=263044772 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain wall_ms=1784008715450 mono_ms=263044772 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain stream-subscriber stream=97603 wall_ms=1784008715450 mono_ms=263044772 event=stream-sub-attach stream=97603 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=stream-sub-attach stream=97604 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain stream-subscriber stream=97606 wall_ms=1784008715452 mono_ms=263044774 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain wall_ms=1784008715453 mono_ms=263044775 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain stream-subscriber stream=97604 wall_ms=1784008715453 mono_ms=263044775 event=stream-sub-attach stream=97604 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain stream-subscriber stream=97600 wall_ms=1784008715453 mono_ms=263044775 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain stream-subscriber stream=97603 wall_ms=1784008715454 mono_ms=263044777 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain stream-subscriber stream=97601 wall_ms=1784008715460 mono_ms=263044782 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain stream-subscriber stream=97602 wall_ms=1784008715471 mono_ms=263044793 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain stream-subscriber stream=97598 wall_ms=1784008715494 mono_ms=263044817 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain stream-subscriber stream=97604 wall_ms=1784008715509 mono_ms=263044832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=stream-sub-attach stream=97615 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain wall_ms=1784008715796 mono_ms=263045118 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=stream-sub-attach stream=97612 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain stream-subscriber stream=97615 wall_ms=1784008715796 mono_ms=263045118 event=stream-sub-attach stream=97615 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715796 mono_ms=263045119 event=stream-sub-attach stream=97616 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715796 mono_ms=263045119 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045119 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045119 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain wall_ms=1784008715797 mono_ms=263045119 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain stream-subscriber stream=97612 wall_ms=1784008715797 mono_ms=263045119 event=stream-sub-attach stream=97612 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain wall_ms=1784008715797 mono_ms=263045120 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain stream-subscriber stream=97615 wall_ms=1784008715797 mono_ms=263045120 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045120 event=stream-sub-attach stream=97616 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain stream-subscriber stream=97616 wall_ms=1784008715802 mono_ms=263045124 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain stream-subscriber stream=97612 wall_ms=1784008715806 mono_ms=263045128 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183940 role=brain wall_ms=1784008717064 mono_ms=263046386 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183940 role=brain wall_ms=1784008717064 mono_ms=263046386 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183941 role=brain wall_ms=1784008722104 mono_ms=263051426 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183941 role=brain wall_ms=1784008722104 mono_ms=263051426 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183942 role=brain wall_ms=1784008727145 mono_ms=263056468 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183942 role=brain wall_ms=1784008727145 mono_ms=263056468 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=stream-sub-attach stream=97618 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058291 event=stream-sub-attach stream=97618 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058291 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728969 mono_ms=263058291 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=stream-sub-attach stream=97617 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=stream-sub-attach stream=97617 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=stream-sub-attach stream=97619 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 607999-608153 of 166. Use :608154 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=183901 role=brain stream-subscriber stream=97584 wall_ms=1784008688415 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain stream-subscriber stream=97584 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97584 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183900 role=brain stream-subscriber stream=97585 wall_ms=1784008688417 mono_ms=263017739 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain wall_ms=1784008688417 mono_ms=263017739 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain stream-subscriber stream=97583 wall_ms=1784008688417 mono_ms=263017739 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain stream-subscriber stream=97584 wall_ms=1784008688417 mono_ms=263017739 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain stream-subscriber stream=97583 wall_ms=1784008688425 mono_ms=263017747 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 event=stream-sub-attach stream=97592 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018076 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain wall_ms=1784008688754 mono_ms=263018076 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain stream-subscriber stream=97592 wall_ms=1784008688754 mono_ms=263018076 event=stream-sub-attach stream=97592 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688754 mono_ms=263018077 event=stream-sub-attach stream=97593 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688754 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018077 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=stream-sub-attach stream=97591 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018077 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain wall_ms=1784008688755 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain stream-subscriber stream=97592 wall_ms=1784008688755 mono_ms=263018078 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018078 event=stream-sub-attach stream=97593 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain wall_ms=1784008688755 mono_ms=263018078 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain stream-subscriber stream=97591 wall_ms=1784008688756 mono_ms=263018078 event=stream-sub-attach stream=97591 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain stream-subscriber stream=97593 wall_ms=1784008688759 mono_ms=263018081 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain stream-subscriber stream=97591 wall_ms=1784008688765 mono_ms=263018087 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183911 role=brain wall_ms=1784008691871 mono_ms=263021193 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183911 role=brain wall_ms=1784008691871 mono_ms=263021193 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183912 role=brain wall_ms=1784008696907 mono_ms=263026229 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183912 role=brain wall_ms=1784008696907 mono_ms=263026229 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008700772 mono_ms=263030094 event=stream-sub-attach stream=97594 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183913 role=brain wall_ms=1784008701950 mono_ms=263031272 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183913 role=brain wall_ms=1784008701950 mono_ms=263031272 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008702107 mono_ms=263031429 event=stream-sub-attach stream=97595 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008704720 mono_ms=263034043 event=stream-sub-attach stream=97596 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183914 role=brain wall_ms=1784008706986 mono_ms=263036308 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183914 role=brain wall_ms=1784008706986 mono_ms=263036308 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008707299 mono_ms=263036621 event=stream-sub-attach stream=97597 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59466957 id=513f587be10ef09f850238d2ad3a45e8feb6bf1cfd85f603f749377b854d2fd3 addr=EndpointAddr { id: PublicKey(513f587be10ef09f850238d2ad3a45e8feb6bf1cfd85f603f749377b854d2fd3), addrs: {Ip(100.68.35.65:58979), Ip(192.168.1.81:58979)} }\nPAIR_MEET_UP:BIGNET step=59466957 id=ca330ba15314d92a8eddb7ff46bd49b8dc52db141d0d9d2a7bb0f5c3e42af0cb addr=EndpointAddr { id: PublicKey(ca330ba15314d92a8eddb7ff46bd49b8dc52db141d0d9d2a7bb0f5c3e42af0cb), addrs: {Ip(100.68.35.65:58977), Ip(192.168.1.81:58977)} }\nCONN_LIFECYCLE: conn=183915 role=brain wall_ms=1784008712025 mono_ms=263041347 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183915 role=brain wall_ms=1784008712025 mono_ms=263041347 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715445 mono_ms=263044768 event=stream-sub-attach stream=97606 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715445 mono_ms=263044768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=stream-sub-attach stream=97605 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715446 mono_ms=263044768 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715446 mono_ms=263044768 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97600 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain stream-subscriber stream=97605 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97605 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain stream-subscriber stream=97606 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97606 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97599 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715447 mono_ms=263044770 event=stream-sub-attach stream=97601 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715447 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=stream-sub-attach stream=97598 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715448 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715448 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain wall_ms=1784008715448 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain stream-subscriber stream=97600 wall_ms=1784008715448 mono_ms=263044770 event=stream-sub-attach stream=97600 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain wall_ms=1784008715448 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain stream-subscriber stream=97599 wall_ms=1784008715448 mono_ms=263044771 event=stream-sub-attach stream=97599 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain stream-subscriber stream=97605 wall_ms=1784008715448 mono_ms=263044771 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715448 mono_ms=263044771 event=stream-sub-attach stream=97602 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain stream-subscriber stream=97601 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97601 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain stream-subscriber stream=97598 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97598 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97603 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain wall_ms=1784008715450 mono_ms=263044772 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain stream-subscriber stream=97602 wall_ms=1784008715450 mono_ms=263044772 event=stream-sub-attach stream=97602 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain stream-subscriber stream=97599 wall_ms=1784008715450 mono_ms=263044772 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain wall_ms=1784008715450 mono_ms=263044772 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain stream-subscriber stream=97603 wall_ms=1784008715450 mono_ms=263044772 event=stream-sub-attach stream=97603 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=stream-sub-attach stream=97604 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain stream-subscriber stream=97606 wall_ms=1784008715452 mono_ms=263044774 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain wall_ms=1784008715453 mono_ms=263044775 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain stream-subscriber stream=97604 wall_ms=1784008715453 mono_ms=263044775 event=stream-sub-attach stream=97604 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain stream-subscriber stream=97600 wall_ms=1784008715453 mono_ms=263044775 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain stream-subscriber stream=97603 wall_ms=1784008715454 mono_ms=263044777 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain stream-subscriber stream=97601 wall_ms=1784008715460 mono_ms=263044782 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain stream-subscriber stream=97602 wall_ms=1784008715471 mono_ms=263044793 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain stream-subscriber stream=97598 wall_ms=1784008715494 mono_ms=263044817 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain stream-subscriber stream=97604 wall_ms=1784008715509 mono_ms=263044832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=stream-sub-attach stream=97615 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain wall_ms=1784008715796 mono_ms=263045118 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=stream-sub-attach stream=97612 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain stream-subscriber stream=97615 wall_ms=1784008715796 mono_ms=263045118 event=stream-sub-attach stream=97615 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715796 mono_ms=263045119 event=stream-sub-attach stream=97616 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715796 mono_ms=263045119 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045119 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045119 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain wall_ms=1784008715797 mono_ms=263045119 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain stream-subscriber stream=97612 wall_ms=1784008715797 mono_ms=263045119 event=stream-sub-attach stream=97612 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain wall_ms=1784008715797 mono_ms=263045120 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain stream-subscriber stream=97615 wall_ms=1784008715797 mono_ms=263045120 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045120 event=stream-sub-attach stream=97616 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain stream-subscriber stream=97616 wall_ms=1784008715802 mono_ms=263045124 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain stream-subscriber stream=97612 wall_ms=1784008715806 mono_ms=263045128 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183940 role=brain wall_ms=1784008717064 mono_ms=263046386 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183940 role=brain wall_ms=1784008717064 mono_ms=263046386 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183941 role=brain wall_ms=1784008722104 mono_ms=263051426 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183941 role=brain wall_ms=1784008722104 mono_ms=263051426 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183942 role=brain wall_ms=1784008727145 mono_ms=263056468 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183942 role=brain wall_ms=1784008727145 mono_ms=263056468 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=stream-sub-attach stream=97618 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058291 event=stream-sub-attach stream=97618 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058291 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728969 mono_ms=263058291 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=stream-sub-attach stream=97617 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=stream-sub-attach stream=97617 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=stream-sub-attach stream=97619 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":166,"totalBytes":30113,"outputLines":155,"outputBytes":30113,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=183901 role=brain stream-subscriber stream=97584 wall_ms=1784008688415 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain stream-subscriber stream=97584 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97584 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183900 role=brain stream-subscriber stream=97585 wall_ms=1784008688417 mono_ms=263017739 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain wall_ms=1784008688417 mono_ms=263017739 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain stream-subscriber stream=97583 wall_ms=1784008688417 mono_ms=263017739 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183902 role=brain stream-subscriber stream=97584 wall_ms=1784008688417 mono_ms=263017739 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183904 role=brain stream-subscriber stream=97583 wall_ms=1784008688425 mono_ms=263017747 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 event=stream-sub-attach stream=97592 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018075 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183905 role=brain stream-subscriber stream=97592 wall_ms=1784008688753 mono_ms=263018076 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain wall_ms=1784008688754 mono_ms=263018076 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain stream-subscriber stream=97592 wall_ms=1784008688754 mono_ms=263018076 event=stream-sub-attach stream=97592 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688754 mono_ms=263018077 event=stream-sub-attach stream=97593 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688754 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018077 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=stream-sub-attach stream=97591 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183907 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018077 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183908 role=brain stream-subscriber stream=97591 wall_ms=1784008688755 mono_ms=263018077 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain wall_ms=1784008688755 mono_ms=263018077 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183906 role=brain stream-subscriber stream=97592 wall_ms=1784008688755 mono_ms=263018078 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain stream-subscriber stream=97593 wall_ms=1784008688755 mono_ms=263018078 event=stream-sub-attach stream=97593 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain wall_ms=1784008688755 mono_ms=263018078 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain stream-subscriber stream=97591 wall_ms=1784008688756 mono_ms=263018078 event=stream-sub-attach stream=97591 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183909 role=brain stream-subscriber stream=97593 wall_ms=1784008688759 mono_ms=263018081 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183910 role=brain stream-subscriber stream=97591 wall_ms=1784008688765 mono_ms=263018087 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183911 role=brain wall_ms=1784008691871 mono_ms=263021193 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183911 role=brain wall_ms=1784008691871 mono_ms=263021193 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183912 role=brain wall_ms=1784008696907 mono_ms=263026229 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183912 role=brain wall_ms=1784008696907 mono_ms=263026229 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008700772 mono_ms=263030094 event=stream-sub-attach stream=97594 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183913 role=brain wall_ms=1784008701950 mono_ms=263031272 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183913 role=brain wall_ms=1784008701950 mono_ms=263031272 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008702107 mono_ms=263031429 event=stream-sub-attach stream=97595 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008704720 mono_ms=263034043 event=stream-sub-attach stream=97596 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183914 role=brain wall_ms=1784008706986 mono_ms=263036308 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183914 role=brain wall_ms=1784008706986 mono_ms=263036308 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784008707299 mono_ms=263036621 event=stream-sub-attach stream=97597 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59466957 id=513f587be10ef09f850238d2ad3a45e8feb6bf1cfd85f603f749377b854d2fd3 addr=EndpointAddr { id: PublicKey(513f587be10ef09f850238d2ad3a45e8feb6bf1cfd85f603f749377b854d2fd3), addrs: {Ip(100.68.35.65:58979), Ip(192.168.1.81:58979)} }\nPAIR_MEET_UP:BIGNET step=59466957 id=ca330ba15314d92a8eddb7ff46bd49b8dc52db141d0d9d2a7bb0f5c3e42af0cb addr=EndpointAddr { id: PublicKey(ca330ba15314d92a8eddb7ff46bd49b8dc52db141d0d9d2a7bb0f5c3e42af0cb), addrs: {Ip(100.68.35.65:58977), Ip(192.168.1.81:58977)} }\nCONN_LIFECYCLE: conn=183915 role=brain wall_ms=1784008712025 mono_ms=263041347 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183915 role=brain wall_ms=1784008712025 mono_ms=263041347 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715445 mono_ms=263044768 event=stream-sub-attach stream=97606 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715445 mono_ms=263044768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=stream-sub-attach stream=97605 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715446 mono_ms=263044768 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183917 role=brain stream-subscriber stream=97605 wall_ms=1784008715446 mono_ms=263044768 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183916 role=brain stream-subscriber stream=97606 wall_ms=1784008715446 mono_ms=263044768 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97600 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain stream-subscriber stream=97605 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97605 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain stream-subscriber stream=97606 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97606 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183920 role=brain stream-subscriber stream=97600 wall_ms=1784008715447 mono_ms=263044769 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044769 event=stream-sub-attach stream=97599 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044769 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715447 mono_ms=263044770 event=stream-sub-attach stream=97601 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715447 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183922 role=brain stream-subscriber stream=97599 wall_ms=1784008715447 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=stream-sub-attach stream=97598 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715448 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183923 role=brain stream-subscriber stream=97601 wall_ms=1784008715448 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183925 role=brain stream-subscriber stream=97598 wall_ms=1784008715448 mono_ms=263044770 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain wall_ms=1784008715448 mono_ms=263044770 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain stream-subscriber stream=97600 wall_ms=1784008715448 mono_ms=263044770 event=stream-sub-attach stream=97600 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain wall_ms=1784008715448 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain stream-subscriber stream=97599 wall_ms=1784008715448 mono_ms=263044771 event=stream-sub-attach stream=97599 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183919 role=brain stream-subscriber stream=97605 wall_ms=1784008715448 mono_ms=263044771 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715448 mono_ms=263044771 event=stream-sub-attach stream=97602 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183928 role=brain stream-subscriber stream=97602 wall_ms=1784008715449 mono_ms=263044771 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain stream-subscriber stream=97601 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97601 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain stream-subscriber stream=97598 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97598 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=stream-sub-attach stream=97603 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183930 role=brain stream-subscriber stream=97603 wall_ms=1784008715449 mono_ms=263044771 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain wall_ms=1784008715450 mono_ms=263044772 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain stream-subscriber stream=97602 wall_ms=1784008715450 mono_ms=263044772 event=stream-sub-attach stream=97602 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183924 role=brain stream-subscriber stream=97599 wall_ms=1784008715450 mono_ms=263044772 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain wall_ms=1784008715450 mono_ms=263044772 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain stream-subscriber stream=97603 wall_ms=1784008715450 mono_ms=263044772 event=stream-sub-attach stream=97603 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=stream-sub-attach stream=97604 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183932 role=brain stream-subscriber stream=97604 wall_ms=1784008715452 mono_ms=263044774 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183918 role=brain stream-subscriber stream=97606 wall_ms=1784008715452 mono_ms=263044774 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain wall_ms=1784008715453 mono_ms=263044775 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain stream-subscriber stream=97604 wall_ms=1784008715453 mono_ms=263044775 event=stream-sub-attach stream=97604 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183921 role=brain stream-subscriber stream=97600 wall_ms=1784008715453 mono_ms=263044775 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183931 role=brain stream-subscriber stream=97603 wall_ms=1784008715454 mono_ms=263044777 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183926 role=brain stream-subscriber stream=97601 wall_ms=1784008715460 mono_ms=263044782 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183929 role=brain stream-subscriber stream=97602 wall_ms=1784008715471 mono_ms=263044793 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183927 role=brain stream-subscriber stream=97598 wall_ms=1784008715494 mono_ms=263044817 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183933 role=brain stream-subscriber stream=97604 wall_ms=1784008715509 mono_ms=263044832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=stream-sub-attach stream=97615 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183934 role=brain stream-subscriber stream=97615 wall_ms=1784008715795 mono_ms=263045117 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain wall_ms=1784008715796 mono_ms=263045118 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=stream-sub-attach stream=97612 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain stream-subscriber stream=97615 wall_ms=1784008715796 mono_ms=263045118 event=stream-sub-attach stream=97615 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183936 role=brain stream-subscriber stream=97612 wall_ms=1784008715796 mono_ms=263045118 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715796 mono_ms=263045119 event=stream-sub-attach stream=97616 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715796 mono_ms=263045119 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045119 — organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=183938 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045119 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain wall_ms=1784008715797 mono_ms=263045119 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain stream-subscriber stream=97612 wall_ms=1784008715797 mono_ms=263045119 event=stream-sub-attach stream=97612 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain wall_ms=1784008715797 mono_ms=263045120 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183935 role=brain stream-subscriber stream=97615 wall_ms=1784008715797 mono_ms=263045120 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain stream-subscriber stream=97616 wall_ms=1784008715797 mono_ms=263045120 event=stream-sub-attach stream=97616 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183939 role=brain stream-subscriber stream=97616 wall_ms=1784008715802 mono_ms=263045124 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183937 role=brain stream-subscriber stream=97612 wall_ms=1784008715806 mono_ms=263045128 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183940 role=brain wall_ms=1784008717064 mono_ms=263046386 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183940 role=brain wall_ms=1784008717064 mono_ms=263046386 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183941 role=brain wall_ms=1784008722104 mono_ms=263051426 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183941 role=brain wall_ms=1784008722104 mono_ms=263051426 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183942 role=brain wall_ms=1784008727145 mono_ms=263056468 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183942 role=brain wall_ms=1784008727145 mono_ms=263056468 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=stream-sub-attach stream=97618 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183943 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058290 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058291 event=stream-sub-attach stream=97618 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728968 mono_ms=263058291 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183944 role=brain stream-subscriber stream=97618 wall_ms=1784008728969 mono_ms=263058291 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=stream-sub-attach stream=97617 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183945 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058292 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=stream-sub-attach stream=97617 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=stream-sub-attach stream=97619 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]","startLine":607999,"lineNumbers":[607999,608000,608001,608002,608003,608004,608005,608006,608007,608008,608009,608010,608011,608012,608013,608014,608015,608016,608017,608018,608019,608020,608021,608022,608023,608024,608025,608026,608027,608028,608029,608030,608031,608032,608033,608034,608035,608036,608037,608038,608039,608040,608041,608042,608043,608044,608045,608046,608047,608048,608049,608050,608051,608052,608053,608054,608055,608056,608057,608058,608059,608060,608061,608062,608063,608064,608065,608066,608067,608068,608069,608070,608071,608072,608073,608074,608075,608076,608077,608078,608079,608080,608081,608082,608083,608084,608085,608086,608087,608088,608089,608090,608091,608092,608093,608094,608095,608096,608097,608098,608099,608100,608101,608102,608103,608104,608105,608106,608107,608108,608109,608110,608111,608112,608113,608114,608115,608116,608117,608118,608119,608120,608121,608122,608123,608124,608125,608126,608127,608128,608129,608130,608131,608132,608133,608134,608135,608136,608137,608138,608139,608140,608141,608142,608143,608144,608145,608146,608147,608148,608149,608150,608151,608152,608153]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":166,"totalBytes":30113,"outputLines":155,"outputBytes":30113,"shownRange":{"start":607999,"end":608153},"nextOffset":608154}}},"isError":false,"timestamp":1784069436978}}
{"type":"message","id":"0b84abbb","parentId":"ad184ba4","timestamp":"2026-07-14T22:50:36.981Z","message":{"role":"toolResult","toolCallId":"call_zXWpUqX6EhMhDMoQoEPTnf9B|fc_050f56f290a937ae016a56bd3c39d881969f507ba930013c8e","toolName":"read","content":[{"type":"text","text":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467043 id=cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e addr=EndpointAddr { id: PublicKey(cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e), addrs: {Ip(100.68.35.65:57625), Ip(192.168.1.81:57625)} }\nPAIR_MEET_UP:BIGNET step=59467043 id=089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d addr=EndpointAddr { id: PublicKey(089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d), addrs: {Ip(100.68.35.65:57623), Ip(192.168.1.81:57623)} }\nCONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184537 role=brain wall_ms=1784011301752 mono_ms=265631072 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184537 role=brain wall_ms=1784011301752 mono_ms=265631072 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184538 role=brain wall_ms=1784011306792 mono_ms=265636112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184538 role=brain wall_ms=1784011306792 mono_ms=265636112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184539 role=brain wall_ms=1784011311831 mono_ms=265641151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184539 role=brain wall_ms=1784011311831 mono_ms=265641151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184540 role=brain wall_ms=1784011316868 mono_ms=265646188 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184540 role=brain wall_ms=1784011316868 mono_ms=265646188 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467044 id=eda29fdbe01afc995f8e5a71a2de9d5bcd54fe8b1c1ba220dbfcef9f7044ad2e addr=EndpointAddr { id: PublicKey(eda29fdbe01afc995f8e5a71a2de9d5bcd54fe8b1c1ba220dbfcef9f7044ad2e), addrs: {Ip(100.68.35.65:54072), Ip(192.168.1.81:54072)} }\nPAIR_MEET_UP:BIGNET step=59467044 id=18c2e4e24c5a651bb8d21bd1a6192eaa5a393b4b9d65002b6500f63d7ed8e570 addr=EndpointAddr { id: PublicKey(18c2e4e24c5a651bb8d21bd1a6192eaa5a393b4b9d65002b6500f63d7ed8e570), addrs: {Ip(100.68.35.65:54074), Ip(192.168.1.81:54074)} }\nCONN_LIFECYCLE: conn=184541 role=brain wall_ms=1784011321908 mono_ms=265651228 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184541 role=brain wall_ms=1784011321908 mono_ms=265651228 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184542 role=brain wall_ms=1784011326946 mono_ms=265656266 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184542 role=brain wall_ms=1784011326946 mono_ms=265656266 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184543 role=brain wall_ms=1784011331983 mono_ms=265661303 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184543 role=brain wall_ms=1784011331983 mono_ms=265661303 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184544 role=brain wall_ms=1784011337021 mono_ms=265666341 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184544 role=brain wall_ms=1784011337021 mono_ms=265666341 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=184545 role=brain wall_ms=1784011342056 mono_ms=265671376 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184545 role=brain wall_ms=1784011342056 mono_ms=265671376 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184546 role=brain wall_ms=1784011347131 mono_ms=265676451 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184546 role=brain wall_ms=1784011347131 mono_ms=265676451 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467045 id=f2b2453ede96528841b43dd80df6e1d925da252f8be4b9525d956953d4076521 addr=EndpointAddr { id: PublicKey(f2b2453ede96528841b43dd80df6e1d925da252f8be4b9525d956953d4076521), addrs: {Ip(100.68.35.65:54156), Ip(192.168.1.81:54156)} }\nPAIR_MEET_UP:SPT_DEV step=59467045 id=0afa151732970d156c648e0782e563e7aaf9f207d060a9c25f55c5466ed2c9b6 addr=EndpointAddr { id: PublicKey(0afa151732970d156c648e0782e563e7aaf9f207d060a9c25f55c5466ed2c9b6), addrs: {Ip(100.68.35.65:54154), Ip(192.168.1.81:54154)} }\nCONN_LIFECYCLE: conn=184547 role=brain wall_ms=1784011352169 mono_ms=265681489 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184547 role=brain wall_ms=1784011352169 mono_ms=265681489 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011354479 mono_ms=265683799 event=stream-sub-attach stream=99700 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011356370 mono_ms=265685690 event=stream-sub-attach stream=99702 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184548 role=brain wall_ms=1784011357208 mono_ms=265686527 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184548 role=brain wall_ms=1784011357208 mono_ms=265686527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011357802 mono_ms=265687122 event=stream-sub-attach stream=99703 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011359223 mono_ms=265688543 event=stream-sub-attach stream=99704 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184549 role=brain wall_ms=1784011362245 mono_ms=265691565 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184549 role=brain wall_ms=1784011362245 mono_ms=265691565 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011362826 mono_ms=265692146 event=stream-sub-attach stream=99705 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011364551 mono_ms=265693871 event=stream-sub-attach stream=99706 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184550 role=brain wall_ms=1784011367282 mono_ms=265696602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184550 role=brain wall_ms=1784011367282 mono_ms=265696602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184551 role=brain wall_ms=1784011372321 mono_ms=265701640 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184551 role=brain wall_ms=1784011372321 mono_ms=265701641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184552 role=brain wall_ms=1784011377361 mono_ms=265706681 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184552 role=brain wall_ms=1784011377361 mono_ms=265706681 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467046 id=f75d7b1cc8a10e60312b80aaf68909301a7a3d00b79004efd1e6f628eaa08222 addr=EndpointAddr { id: PublicKey(f75d7b1cc8a10e60312b80aaf68909301a7a3d00b79004efd1e6f628eaa08222), addrs: {Ip(100.68.35.65:62340), Ip(192.168.1.81:62340)} }\nPAIR_MEET_UP:SPT_DEV step=59467046 id=00f51f7c6a7bb3bd1eef90b8c16c0942a064941771cefc305da9ed88bfb748d7 addr=EndpointAddr { id: PublicKey(00f51f7c6a7bb3bd1eef90b8c16c0942a064941771cefc305da9ed88bfb748d7), addrs: {Ip(100.68.35.65:62341), Ip(192.168.1.81:62341)} }\nCONN_LIFECYCLE: conn=184553 role=brain wall_ms=1784011382396 mono_ms=265711716 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184553 role=brain wall_ms=1784011382397 mono_ms=265711716 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184554 role=brain wall_ms=1784011387433 mono_ms=265716752 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184554 role=brain wall_ms=1784011387433 mono_ms=265716753 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184555 role=brain wall_ms=1784011392469 mono_ms=265721789 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184555 role=brain wall_ms=1784011392469 mono_ms=265721789 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184556 role=brain wall_ms=1784011397505 mono_ms=265726825 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184556 role=brain wall_ms=1784011397505 mono_ms=265726825 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184557 role=brain wall_ms=1784011402545 mono_ms=265731865 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184557 role=brain wall_ms=1784011402545 mono_ms=265731865 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184558 role=brain wall_ms=1784011407584 mono_ms=265736904 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184558 role=brain wall_ms=1784011407584 mono_ms=265736904 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467047 id=28b0020f9f7b2b8fb0d1eabb68bfb98e234604b5cfdbea94786e33e4ce9cf5ee addr=EndpointAddr { id: PublicKey(28b0020f9f7b2b8fb0d1eabb68bfb98e234604b5cfdbea94786e33e4ce9cf5ee), addrs: {Ip(100.68.35.65:60665), Ip(192.168.1.81:60665)} }\nPAIR_MEET_UP:BIGNET step=59467047 id=fc41d78107d2b18d956ede0d2579f7a95a4c3d7a09d9b0b5882883c687932a41 addr=EndpointAddr { id: PublicKey(fc41d78107d2b18d956ede0d2579f7a95a4c3d7a09d9b0b5882883c687932a41), addrs: {Ip(100.68.35.65:60671), Ip(192.168.1.81:60671)} }\nCONN_LIFECYCLE: conn=184559 role=brain wall_ms=1784011412620 mono_ms=265741940 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184559 role=brain wall_ms=1784011412620 mono_ms=265741940 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184560 role=brain wall_ms=1784011417657 mono_ms=265746977 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184560 role=brain wall_ms=1784011417657 mono_ms=265746977 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184561 role=brain wall_ms=1784011422694 mono_ms=265752013 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184561 role=brain wall_ms=1784011422694 mono_ms=265752013 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184562 role=brain wall_ms=1784011427732 mono_ms=265757051 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184562 role=brain wall_ms=1784011427732 mono_ms=265757051 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184563 role=brain wall_ms=1784011432767 mono_ms=265762087 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184563 role=brain wall_ms=1784011432767 mono_ms=265762087 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011435240 mono_ms=265764560 event=stream-sub-attach stream=99759 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184564 role=brain wall_ms=1784011437806 mono_ms=265767126 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184564 role=brain wall_ms=1784011437806 mono_ms=265767126 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011439155 mono_ms=265768475 event=stream-sub-attach stream=99760 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467048 id=e4ec87c9aeb265916dda2bfe7f11f35610db7b17a0f1977f4b23d1cce60b1639 addr=EndpointAddr { id: PublicKey(e4ec87c9aeb265916dda2bfe7f11f35610db7b17a0f1977f4b23d1cce60b1639), addrs: {Ip(100.68.35.65:56481), Ip(192.168.1.81:56481)} }\nPAIR_MEET_UP:BIGNET step=59467048 id=0e45d104c475c6ecf3f09aa8d19f8844c6ce2486a57da47376eb242c9b2d7641 addr=EndpointAddr { id: PublicKey(0e45d104c475c6ecf3f09aa8d19f8844c6ce2486a57da47376eb242c9b2d7641), addrs: {Ip(100.68.35.65:56485), Ip(192.168.1.81:56485)} }\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011440601 mono_ms=265769920 event=stream-sub-attach stream=99764 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184565 role=brain wall_ms=1784011442843 mono_ms=265772162 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184565 role=brain wall_ms=1784011442843 mono_ms=265772163 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011443676 mono_ms=265772996 event=stream-sub-attach stream=99771 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011445481 mono_ms=265774801 event=stream-sub-attach stream=99772 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184566 role=brain wall_ms=1784011447880 mono_ms=265777199 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184566 role=brain wall_ms=1784011447880 mono_ms=265777199 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011448250 mono_ms=265777570 event=stream-sub-attach stream=99773 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184567 role=brain wall_ms=1784011452918 mono_ms=265782238 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184567 role=brain wall_ms=1784011452919 mono_ms=265782238 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184568 role=brain wall_ms=1784011457953 mono_ms=265787273 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184568 role=brain wall_ms=1784011457953 mono_ms=265787273 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184569 role=brain wall_ms=1784011462991 mono_ms=265792311 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184569 role=brain wall_ms=1784011462991 mono_ms=265792311 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184570 role=brain wall_ms=1784011468031 mono_ms=265797351 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184570 role=brain wall_ms=1784011468031 mono_ms=265797351 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467049 id=1fe26f782f7b44169840a827e7994670ac9937a65e68bb710e5e03aec7f206ed addr=EndpointAddr { id: PublicKey(1fe26f782f7b44169840a827e7994670ac9937a65e68bb710e5e03aec7f206ed), addrs: {Ip(100.68.35.65:63737), Ip(192.168.1.81:63737)} }\nPAIR_MEET_UP:BIGNET step=59467049 id=6d1ed1c4c74970232081746aed1ae4eda420bef1b8e6d9b8e65d9ceb0053392b addr=EndpointAddr { id: PublicKey(6d1ed1c4c74970232081746aed1ae4eda420bef1b8e6d9b8e65d9ceb0053392b), addrs: {Ip(100.68.35.65:63739), Ip(192.168.1.81:63739)} }\nCONN_LIFECYCLE: conn=184571 role=brain wall_ms=1784011473067 mono_ms=265802387 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184571 role=brain wall_ms=1784011473067 mono_ms=265802387 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184572 role=brain wall_ms=1784011478106 mono_ms=265807426 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184572 role=brain wall_ms=1784011478106 mono_ms=265807426 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184573 role=brain wall_ms=1784011483141 mono_ms=265812461 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184573 role=brain wall_ms=1784011483141 mono_ms=265812461 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184574 role=brain wall_ms=1784011488179 mono_ms=265817499 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184574 role=brain wall_ms=1784011488179 mono_ms=265817499 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184575 role=brain wall_ms=1784011493215 mono_ms=265822535 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184575 role=brain wall_ms=1784011493215 mono_ms=265822535 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184576 role=brain wall_ms=1784011498253 mono_ms=265827572 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184576 role=brain wall_ms=1784011498253 mono_ms=265827572 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467050 id=26eb113b70a92a0d8c0bde170d540e46c0ec7ec532129b708ca65750b3984120 addr=EndpointAddr { id: PublicKey(26eb113b70a92a0d8c0bde170d540e46c0ec7ec532129b708ca65750b3984120), addrs: {Ip(100.68.35.65:54503), Ip(192.168.1.81:54503)} }\nPAIR_MEET_UP:BIGNET step=59467050 id=aa393b5ca8c373fab2aacb842ff1e32739b7b2662fa9dac2ca0c0b38eaa5faf1 addr=EndpointAddr { id: PublicKey(aa393b5ca8c373fab2aacb842ff1e32739b7b2662fa9dac2ca0c0b38eaa5faf1), addrs: {Ip(100.68.35.65:54509), Ip(192.168.1.81:54509)} }\nCONN_LIFECYCLE: conn=184577 role=brain wall_ms=1784011503292 mono_ms=265832612 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184577 role=brain wall_ms=1784011503292 mono_ms=265832612 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184578 role=brain wall_ms=1784011508329 mono_ms=265837648 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184578 role=brain wall_ms=1784011508329 mono_ms=265837648 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184579 role=brain wall_ms=1784011513368 mono_ms=265842688 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184579 role=brain wall_ms=1784011513369 mono_ms=265842688 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011514282 mono_ms=265843601 event=stream-sub-attach stream=99823 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011516984 mono_ms=265846304 event=stream-sub-attach stream=99827 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184580 role=brain wall_ms=1784011518409 mono_ms=265847729 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184580 role=brain wall_ms=1784011518410 mono_ms=265847729 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011519514 mono_ms=265848834 event=stream-sub-attach stream=99828 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011520689 mono_ms=265850009 event=stream-sub-attach stream=99829 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011522140 mono_ms=265851460 event=stream-sub-attach stream=99836 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184581 role=brain wall_ms=1784011523448 mono_ms=265852768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184581 role=brain wall_ms=1784011523448 mono_ms=265852768 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011526771 mono_ms=265856091 event=stream-sub-attach stream=99837 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184582 role=brain wall_ms=1784011528487 mono_ms=265857806 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184582 role=brain wall_ms=1784011528487 mono_ms=265857807 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467051 id=a1099bde56a36f1fa91d1d3fcf7127734e3e6afd3c3c52610c2fe52dd0b3041b addr=EndpointAddr { id: PublicKey(a1099bde56a36f1fa91d1d3fcf7127734e3e6afd3c3c52610c2fe52dd0b3041b), addrs: {Ip(100.68.35.65:61562), Ip(192.168.1.81:61562)} }\nPAIR_MEET_UP:SPT_DEV step=59467051 id=a633471ff94f20496674609fa055970bf1edf747c742b61c56a04bc7afc0e9cd addr=EndpointAddr { id: PublicKey(a633471ff94f20496674609fa055970bf1edf747c742b61c56a04bc7afc0e9cd), addrs: {Ip(100.68.35.65:61560), Ip(192.168.1.81:61560)} }\nCONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184585 role=brain wall_ms=1784011543599 mono_ms=265872918 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 609999-610153 of 191. Use :610154 to continue]"}],"details":{"truncation":{"content":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467043 id=cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e addr=EndpointAddr { id: PublicKey(cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e), addrs: {Ip(100.68.35.65:57625), Ip(192.168.1.81:57625)} }\nPAIR_MEET_UP:BIGNET step=59467043 id=089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d addr=EndpointAddr { id: PublicKey(089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d), addrs: {Ip(100.68.35.65:57623), Ip(192.168.1.81:57623)} }\nCONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184537 role=brain wall_ms=1784011301752 mono_ms=265631072 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184537 role=brain wall_ms=1784011301752 mono_ms=265631072 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184538 role=brain wall_ms=1784011306792 mono_ms=265636112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184538 role=brain wall_ms=1784011306792 mono_ms=265636112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184539 role=brain wall_ms=1784011311831 mono_ms=265641151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184539 role=brain wall_ms=1784011311831 mono_ms=265641151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184540 role=brain wall_ms=1784011316868 mono_ms=265646188 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184540 role=brain wall_ms=1784011316868 mono_ms=265646188 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467044 id=eda29fdbe01afc995f8e5a71a2de9d5bcd54fe8b1c1ba220dbfcef9f7044ad2e addr=EndpointAddr { id: PublicKey(eda29fdbe01afc995f8e5a71a2de9d5bcd54fe8b1c1ba220dbfcef9f7044ad2e), addrs: {Ip(100.68.35.65:54072), Ip(192.168.1.81:54072)} }\nPAIR_MEET_UP:BIGNET step=59467044 id=18c2e4e24c5a651bb8d21bd1a6192eaa5a393b4b9d65002b6500f63d7ed8e570 addr=EndpointAddr { id: PublicKey(18c2e4e24c5a651bb8d21bd1a6192eaa5a393b4b9d65002b6500f63d7ed8e570), addrs: {Ip(100.68.35.65:54074), Ip(192.168.1.81:54074)} }\nCONN_LIFECYCLE: conn=184541 role=brain wall_ms=1784011321908 mono_ms=265651228 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184541 role=brain wall_ms=1784011321908 mono_ms=265651228 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184542 role=brain wall_ms=1784011326946 mono_ms=265656266 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184542 role=brain wall_ms=1784011326946 mono_ms=265656266 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184543 role=brain wall_ms=1784011331983 mono_ms=265661303 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184543 role=brain wall_ms=1784011331983 mono_ms=265661303 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184544 role=brain wall_ms=1784011337021 mono_ms=265666341 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184544 role=brain wall_ms=1784011337021 mono_ms=265666341 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=184545 role=brain wall_ms=1784011342056 mono_ms=265671376 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184545 role=brain wall_ms=1784011342056 mono_ms=265671376 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184546 role=brain wall_ms=1784011347131 mono_ms=265676451 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184546 role=brain wall_ms=1784011347131 mono_ms=265676451 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467045 id=f2b2453ede96528841b43dd80df6e1d925da252f8be4b9525d956953d4076521 addr=EndpointAddr { id: PublicKey(f2b2453ede96528841b43dd80df6e1d925da252f8be4b9525d956953d4076521), addrs: {Ip(100.68.35.65:54156), Ip(192.168.1.81:54156)} }\nPAIR_MEET_UP:SPT_DEV step=59467045 id=0afa151732970d156c648e0782e563e7aaf9f207d060a9c25f55c5466ed2c9b6 addr=EndpointAddr { id: PublicKey(0afa151732970d156c648e0782e563e7aaf9f207d060a9c25f55c5466ed2c9b6), addrs: {Ip(100.68.35.65:54154), Ip(192.168.1.81:54154)} }\nCONN_LIFECYCLE: conn=184547 role=brain wall_ms=1784011352169 mono_ms=265681489 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184547 role=brain wall_ms=1784011352169 mono_ms=265681489 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011354479 mono_ms=265683799 event=stream-sub-attach stream=99700 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011356370 mono_ms=265685690 event=stream-sub-attach stream=99702 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184548 role=brain wall_ms=1784011357208 mono_ms=265686527 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184548 role=brain wall_ms=1784011357208 mono_ms=265686527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011357802 mono_ms=265687122 event=stream-sub-attach stream=99703 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011359223 mono_ms=265688543 event=stream-sub-attach stream=99704 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184549 role=brain wall_ms=1784011362245 mono_ms=265691565 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184549 role=brain wall_ms=1784011362245 mono_ms=265691565 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011362826 mono_ms=265692146 event=stream-sub-attach stream=99705 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011364551 mono_ms=265693871 event=stream-sub-attach stream=99706 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184550 role=brain wall_ms=1784011367282 mono_ms=265696602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184550 role=brain wall_ms=1784011367282 mono_ms=265696602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184551 role=brain wall_ms=1784011372321 mono_ms=265701640 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184551 role=brain wall_ms=1784011372321 mono_ms=265701641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184552 role=brain wall_ms=1784011377361 mono_ms=265706681 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184552 role=brain wall_ms=1784011377361 mono_ms=265706681 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467046 id=f75d7b1cc8a10e60312b80aaf68909301a7a3d00b79004efd1e6f628eaa08222 addr=EndpointAddr { id: PublicKey(f75d7b1cc8a10e60312b80aaf68909301a7a3d00b79004efd1e6f628eaa08222), addrs: {Ip(100.68.35.65:62340), Ip(192.168.1.81:62340)} }\nPAIR_MEET_UP:SPT_DEV step=59467046 id=00f51f7c6a7bb3bd1eef90b8c16c0942a064941771cefc305da9ed88bfb748d7 addr=EndpointAddr { id: PublicKey(00f51f7c6a7bb3bd1eef90b8c16c0942a064941771cefc305da9ed88bfb748d7), addrs: {Ip(100.68.35.65:62341), Ip(192.168.1.81:62341)} }\nCONN_LIFECYCLE: conn=184553 role=brain wall_ms=1784011382396 mono_ms=265711716 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184553 role=brain wall_ms=1784011382397 mono_ms=265711716 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184554 role=brain wall_ms=1784011387433 mono_ms=265716752 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184554 role=brain wall_ms=1784011387433 mono_ms=265716753 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184555 role=brain wall_ms=1784011392469 mono_ms=265721789 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184555 role=brain wall_ms=1784011392469 mono_ms=265721789 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184556 role=brain wall_ms=1784011397505 mono_ms=265726825 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184556 role=brain wall_ms=1784011397505 mono_ms=265726825 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184557 role=brain wall_ms=1784011402545 mono_ms=265731865 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184557 role=brain wall_ms=1784011402545 mono_ms=265731865 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184558 role=brain wall_ms=1784011407584 mono_ms=265736904 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184558 role=brain wall_ms=1784011407584 mono_ms=265736904 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467047 id=28b0020f9f7b2b8fb0d1eabb68bfb98e234604b5cfdbea94786e33e4ce9cf5ee addr=EndpointAddr { id: PublicKey(28b0020f9f7b2b8fb0d1eabb68bfb98e234604b5cfdbea94786e33e4ce9cf5ee), addrs: {Ip(100.68.35.65:60665), Ip(192.168.1.81:60665)} }\nPAIR_MEET_UP:BIGNET step=59467047 id=fc41d78107d2b18d956ede0d2579f7a95a4c3d7a09d9b0b5882883c687932a41 addr=EndpointAddr { id: PublicKey(fc41d78107d2b18d956ede0d2579f7a95a4c3d7a09d9b0b5882883c687932a41), addrs: {Ip(100.68.35.65:60671), Ip(192.168.1.81:60671)} }\nCONN_LIFECYCLE: conn=184559 role=brain wall_ms=1784011412620 mono_ms=265741940 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184559 role=brain wall_ms=1784011412620 mono_ms=265741940 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184560 role=brain wall_ms=1784011417657 mono_ms=265746977 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184560 role=brain wall_ms=1784011417657 mono_ms=265746977 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184561 role=brain wall_ms=1784011422694 mono_ms=265752013 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184561 role=brain wall_ms=1784011422694 mono_ms=265752013 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184562 role=brain wall_ms=1784011427732 mono_ms=265757051 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184562 role=brain wall_ms=1784011427732 mono_ms=265757051 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184563 role=brain wall_ms=1784011432767 mono_ms=265762087 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184563 role=brain wall_ms=1784011432767 mono_ms=265762087 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011435240 mono_ms=265764560 event=stream-sub-attach stream=99759 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184564 role=brain wall_ms=1784011437806 mono_ms=265767126 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184564 role=brain wall_ms=1784011437806 mono_ms=265767126 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011439155 mono_ms=265768475 event=stream-sub-attach stream=99760 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467048 id=e4ec87c9aeb265916dda2bfe7f11f35610db7b17a0f1977f4b23d1cce60b1639 addr=EndpointAddr { id: PublicKey(e4ec87c9aeb265916dda2bfe7f11f35610db7b17a0f1977f4b23d1cce60b1639), addrs: {Ip(100.68.35.65:56481), Ip(192.168.1.81:56481)} }\nPAIR_MEET_UP:BIGNET step=59467048 id=0e45d104c475c6ecf3f09aa8d19f8844c6ce2486a57da47376eb242c9b2d7641 addr=EndpointAddr { id: PublicKey(0e45d104c475c6ecf3f09aa8d19f8844c6ce2486a57da47376eb242c9b2d7641), addrs: {Ip(100.68.35.65:56485), Ip(192.168.1.81:56485)} }\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011440601 mono_ms=265769920 event=stream-sub-attach stream=99764 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184565 role=brain wall_ms=1784011442843 mono_ms=265772162 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184565 role=brain wall_ms=1784011442843 mono_ms=265772163 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011443676 mono_ms=265772996 event=stream-sub-attach stream=99771 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011445481 mono_ms=265774801 event=stream-sub-attach stream=99772 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184566 role=brain wall_ms=1784011447880 mono_ms=265777199 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184566 role=brain wall_ms=1784011447880 mono_ms=265777199 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011448250 mono_ms=265777570 event=stream-sub-attach stream=99773 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184567 role=brain wall_ms=1784011452918 mono_ms=265782238 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184567 role=brain wall_ms=1784011452919 mono_ms=265782238 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184568 role=brain wall_ms=1784011457953 mono_ms=265787273 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184568 role=brain wall_ms=1784011457953 mono_ms=265787273 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184569 role=brain wall_ms=1784011462991 mono_ms=265792311 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184569 role=brain wall_ms=1784011462991 mono_ms=265792311 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184570 role=brain wall_ms=1784011468031 mono_ms=265797351 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184570 role=brain wall_ms=1784011468031 mono_ms=265797351 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467049 id=1fe26f782f7b44169840a827e7994670ac9937a65e68bb710e5e03aec7f206ed addr=EndpointAddr { id: PublicKey(1fe26f782f7b44169840a827e7994670ac9937a65e68bb710e5e03aec7f206ed), addrs: {Ip(100.68.35.65:63737), Ip(192.168.1.81:63737)} }\nPAIR_MEET_UP:BIGNET step=59467049 id=6d1ed1c4c74970232081746aed1ae4eda420bef1b8e6d9b8e65d9ceb0053392b addr=EndpointAddr { id: PublicKey(6d1ed1c4c74970232081746aed1ae4eda420bef1b8e6d9b8e65d9ceb0053392b), addrs: {Ip(100.68.35.65:63739), Ip(192.168.1.81:63739)} }\nCONN_LIFECYCLE: conn=184571 role=brain wall_ms=1784011473067 mono_ms=265802387 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184571 role=brain wall_ms=1784011473067 mono_ms=265802387 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184572 role=brain wall_ms=1784011478106 mono_ms=265807426 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184572 role=brain wall_ms=1784011478106 mono_ms=265807426 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184573 role=brain wall_ms=1784011483141 mono_ms=265812461 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184573 role=brain wall_ms=1784011483141 mono_ms=265812461 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184574 role=brain wall_ms=1784011488179 mono_ms=265817499 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184574 role=brain wall_ms=1784011488179 mono_ms=265817499 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184575 role=brain wall_ms=1784011493215 mono_ms=265822535 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184575 role=brain wall_ms=1784011493215 mono_ms=265822535 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184576 role=brain wall_ms=1784011498253 mono_ms=265827572 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184576 role=brain wall_ms=1784011498253 mono_ms=265827572 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467050 id=26eb113b70a92a0d8c0bde170d540e46c0ec7ec532129b708ca65750b3984120 addr=EndpointAddr { id: PublicKey(26eb113b70a92a0d8c0bde170d540e46c0ec7ec532129b708ca65750b3984120), addrs: {Ip(100.68.35.65:54503), Ip(192.168.1.81:54503)} }\nPAIR_MEET_UP:BIGNET step=59467050 id=aa393b5ca8c373fab2aacb842ff1e32739b7b2662fa9dac2ca0c0b38eaa5faf1 addr=EndpointAddr { id: PublicKey(aa393b5ca8c373fab2aacb842ff1e32739b7b2662fa9dac2ca0c0b38eaa5faf1), addrs: {Ip(100.68.35.65:54509), Ip(192.168.1.81:54509)} }\nCONN_LIFECYCLE: conn=184577 role=brain wall_ms=1784011503292 mono_ms=265832612 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184577 role=brain wall_ms=1784011503292 mono_ms=265832612 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184578 role=brain wall_ms=1784011508329 mono_ms=265837648 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184578 role=brain wall_ms=1784011508329 mono_ms=265837648 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184579 role=brain wall_ms=1784011513368 mono_ms=265842688 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184579 role=brain wall_ms=1784011513369 mono_ms=265842688 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011514282 mono_ms=265843601 event=stream-sub-attach stream=99823 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011516984 mono_ms=265846304 event=stream-sub-attach stream=99827 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184580 role=brain wall_ms=1784011518409 mono_ms=265847729 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184580 role=brain wall_ms=1784011518410 mono_ms=265847729 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011519514 mono_ms=265848834 event=stream-sub-attach stream=99828 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011520689 mono_ms=265850009 event=stream-sub-attach stream=99829 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011522140 mono_ms=265851460 event=stream-sub-attach stream=99836 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184581 role=brain wall_ms=1784011523448 mono_ms=265852768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184581 role=brain wall_ms=1784011523448 mono_ms=265852768 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011526771 mono_ms=265856091 event=stream-sub-attach stream=99837 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184582 role=brain wall_ms=1784011528487 mono_ms=265857806 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184582 role=brain wall_ms=1784011528487 mono_ms=265857807 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467051 id=a1099bde56a36f1fa91d1d3fcf7127734e3e6afd3c3c52610c2fe52dd0b3041b addr=EndpointAddr { id: PublicKey(a1099bde56a36f1fa91d1d3fcf7127734e3e6afd3c3c52610c2fe52dd0b3041b), addrs: {Ip(100.68.35.65:61562), Ip(192.168.1.81:61562)} }\nPAIR_MEET_UP:SPT_DEV step=59467051 id=a633471ff94f20496674609fa055970bf1edf747c742b61c56a04bc7afc0e9cd addr=EndpointAddr { id: PublicKey(a633471ff94f20496674609fa055970bf1edf747c742b61c56a04bc7afc0e9cd), addrs: {Ip(100.68.35.65:61560), Ip(192.168.1.81:61560)} }\nCONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184585 role=brain wall_ms=1784011543599 mono_ms=265872918 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":191,"totalBytes":27056,"outputLines":155,"outputBytes":27056,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467043 id=cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e addr=EndpointAddr { id: PublicKey(cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e), addrs: {Ip(100.68.35.65:57625), Ip(192.168.1.81:57625)} }\nPAIR_MEET_UP:BIGNET step=59467043 id=089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d addr=EndpointAddr { id: PublicKey(089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d), addrs: {Ip(100.68.35.65:57623), Ip(192.168.1.81:57623)} }\nCONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184537 role=brain wall_ms=1784011301752 mono_ms=265631072 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184537 role=brain wall_ms=1784011301752 mono_ms=265631072 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184538 role=brain wall_ms=1784011306792 mono_ms=265636112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184538 role=brain wall_ms=1784011306792 mono_ms=265636112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184539 role=brain wall_ms=1784011311831 mono_ms=265641151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184539 role=brain wall_ms=1784011311831 mono_ms=265641151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184540 role=brain wall_ms=1784011316868 mono_ms=265646188 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184540 role=brain wall_ms=1784011316868 mono_ms=265646188 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467044 id=eda29fdbe01afc995f8e5a71a2de9d5bcd54fe8b1c1ba220dbfcef9f7044ad2e addr=EndpointAddr { id: PublicKey(eda29fdbe01afc995f8e5a71a2de9d5bcd54fe8b1c1ba220dbfcef9f7044ad2e), addrs: {Ip(100.68.35.65:54072), Ip(192.168.1.81:54072)} }\nPAIR_MEET_UP:BIGNET step=59467044 id=18c2e4e24c5a651bb8d21bd1a6192eaa5a393b4b9d65002b6500f63d7ed8e570 addr=EndpointAddr { id: PublicKey(18c2e4e24c5a651bb8d21bd1a6192eaa5a393b4b9d65002b6500f63d7ed8e570), addrs: {Ip(100.68.35.65:54074), Ip(192.168.1.81:54074)} }\nCONN_LIFECYCLE: conn=184541 role=brain wall_ms=1784011321908 mono_ms=265651228 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184541 role=brain wall_ms=1784011321908 mono_ms=265651228 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184542 role=brain wall_ms=1784011326946 mono_ms=265656266 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184542 role=brain wall_ms=1784011326946 mono_ms=265656266 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184543 role=brain wall_ms=1784011331983 mono_ms=265661303 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184543 role=brain wall_ms=1784011331983 mono_ms=265661303 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184544 role=brain wall_ms=1784011337021 mono_ms=265666341 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184544 role=brain wall_ms=1784011337021 mono_ms=265666341 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=184545 role=brain wall_ms=1784011342056 mono_ms=265671376 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184545 role=brain wall_ms=1784011342056 mono_ms=265671376 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184546 role=brain wall_ms=1784011347131 mono_ms=265676451 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184546 role=brain wall_ms=1784011347131 mono_ms=265676451 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467045 id=f2b2453ede96528841b43dd80df6e1d925da252f8be4b9525d956953d4076521 addr=EndpointAddr { id: PublicKey(f2b2453ede96528841b43dd80df6e1d925da252f8be4b9525d956953d4076521), addrs: {Ip(100.68.35.65:54156), Ip(192.168.1.81:54156)} }\nPAIR_MEET_UP:SPT_DEV step=59467045 id=0afa151732970d156c648e0782e563e7aaf9f207d060a9c25f55c5466ed2c9b6 addr=EndpointAddr { id: PublicKey(0afa151732970d156c648e0782e563e7aaf9f207d060a9c25f55c5466ed2c9b6), addrs: {Ip(100.68.35.65:54154), Ip(192.168.1.81:54154)} }\nCONN_LIFECYCLE: conn=184547 role=brain wall_ms=1784011352169 mono_ms=265681489 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184547 role=brain wall_ms=1784011352169 mono_ms=265681489 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011354479 mono_ms=265683799 event=stream-sub-attach stream=99700 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011356370 mono_ms=265685690 event=stream-sub-attach stream=99702 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184548 role=brain wall_ms=1784011357208 mono_ms=265686527 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184548 role=brain wall_ms=1784011357208 mono_ms=265686527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011357802 mono_ms=265687122 event=stream-sub-attach stream=99703 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011359223 mono_ms=265688543 event=stream-sub-attach stream=99704 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184549 role=brain wall_ms=1784011362245 mono_ms=265691565 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184549 role=brain wall_ms=1784011362245 mono_ms=265691565 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011362826 mono_ms=265692146 event=stream-sub-attach stream=99705 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011364551 mono_ms=265693871 event=stream-sub-attach stream=99706 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184550 role=brain wall_ms=1784011367282 mono_ms=265696602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184550 role=brain wall_ms=1784011367282 mono_ms=265696602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184551 role=brain wall_ms=1784011372321 mono_ms=265701640 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184551 role=brain wall_ms=1784011372321 mono_ms=265701641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184552 role=brain wall_ms=1784011377361 mono_ms=265706681 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184552 role=brain wall_ms=1784011377361 mono_ms=265706681 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467046 id=f75d7b1cc8a10e60312b80aaf68909301a7a3d00b79004efd1e6f628eaa08222 addr=EndpointAddr { id: PublicKey(f75d7b1cc8a10e60312b80aaf68909301a7a3d00b79004efd1e6f628eaa08222), addrs: {Ip(100.68.35.65:62340), Ip(192.168.1.81:62340)} }\nPAIR_MEET_UP:SPT_DEV step=59467046 id=00f51f7c6a7bb3bd1eef90b8c16c0942a064941771cefc305da9ed88bfb748d7 addr=EndpointAddr { id: PublicKey(00f51f7c6a7bb3bd1eef90b8c16c0942a064941771cefc305da9ed88bfb748d7), addrs: {Ip(100.68.35.65:62341), Ip(192.168.1.81:62341)} }\nCONN_LIFECYCLE: conn=184553 role=brain wall_ms=1784011382396 mono_ms=265711716 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184553 role=brain wall_ms=1784011382397 mono_ms=265711716 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184554 role=brain wall_ms=1784011387433 mono_ms=265716752 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184554 role=brain wall_ms=1784011387433 mono_ms=265716753 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184555 role=brain wall_ms=1784011392469 mono_ms=265721789 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184555 role=brain wall_ms=1784011392469 mono_ms=265721789 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184556 role=brain wall_ms=1784011397505 mono_ms=265726825 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184556 role=brain wall_ms=1784011397505 mono_ms=265726825 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184557 role=brain wall_ms=1784011402545 mono_ms=265731865 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184557 role=brain wall_ms=1784011402545 mono_ms=265731865 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184558 role=brain wall_ms=1784011407584 mono_ms=265736904 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184558 role=brain wall_ms=1784011407584 mono_ms=265736904 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467047 id=28b0020f9f7b2b8fb0d1eabb68bfb98e234604b5cfdbea94786e33e4ce9cf5ee addr=EndpointAddr { id: PublicKey(28b0020f9f7b2b8fb0d1eabb68bfb98e234604b5cfdbea94786e33e4ce9cf5ee), addrs: {Ip(100.68.35.65:60665), Ip(192.168.1.81:60665)} }\nPAIR_MEET_UP:BIGNET step=59467047 id=fc41d78107d2b18d956ede0d2579f7a95a4c3d7a09d9b0b5882883c687932a41 addr=EndpointAddr { id: PublicKey(fc41d78107d2b18d956ede0d2579f7a95a4c3d7a09d9b0b5882883c687932a41), addrs: {Ip(100.68.35.65:60671), Ip(192.168.1.81:60671)} }\nCONN_LIFECYCLE: conn=184559 role=brain wall_ms=1784011412620 mono_ms=265741940 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184559 role=brain wall_ms=1784011412620 mono_ms=265741940 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184560 role=brain wall_ms=1784011417657 mono_ms=265746977 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184560 role=brain wall_ms=1784011417657 mono_ms=265746977 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184561 role=brain wall_ms=1784011422694 mono_ms=265752013 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184561 role=brain wall_ms=1784011422694 mono_ms=265752013 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184562 role=brain wall_ms=1784011427732 mono_ms=265757051 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184562 role=brain wall_ms=1784011427732 mono_ms=265757051 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184563 role=brain wall_ms=1784011432767 mono_ms=265762087 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184563 role=brain wall_ms=1784011432767 mono_ms=265762087 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011435240 mono_ms=265764560 event=stream-sub-attach stream=99759 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184564 role=brain wall_ms=1784011437806 mono_ms=265767126 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184564 role=brain wall_ms=1784011437806 mono_ms=265767126 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011439155 mono_ms=265768475 event=stream-sub-attach stream=99760 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467048 id=e4ec87c9aeb265916dda2bfe7f11f35610db7b17a0f1977f4b23d1cce60b1639 addr=EndpointAddr { id: PublicKey(e4ec87c9aeb265916dda2bfe7f11f35610db7b17a0f1977f4b23d1cce60b1639), addrs: {Ip(100.68.35.65:56481), Ip(192.168.1.81:56481)} }\nPAIR_MEET_UP:BIGNET step=59467048 id=0e45d104c475c6ecf3f09aa8d19f8844c6ce2486a57da47376eb242c9b2d7641 addr=EndpointAddr { id: PublicKey(0e45d104c475c6ecf3f09aa8d19f8844c6ce2486a57da47376eb242c9b2d7641), addrs: {Ip(100.68.35.65:56485), Ip(192.168.1.81:56485)} }\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011440601 mono_ms=265769920 event=stream-sub-attach stream=99764 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184565 role=brain wall_ms=1784011442843 mono_ms=265772162 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184565 role=brain wall_ms=1784011442843 mono_ms=265772163 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011443676 mono_ms=265772996 event=stream-sub-attach stream=99771 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011445481 mono_ms=265774801 event=stream-sub-attach stream=99772 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184566 role=brain wall_ms=1784011447880 mono_ms=265777199 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184566 role=brain wall_ms=1784011447880 mono_ms=265777199 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011448250 mono_ms=265777570 event=stream-sub-attach stream=99773 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184567 role=brain wall_ms=1784011452918 mono_ms=265782238 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184567 role=brain wall_ms=1784011452919 mono_ms=265782238 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184568 role=brain wall_ms=1784011457953 mono_ms=265787273 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184568 role=brain wall_ms=1784011457953 mono_ms=265787273 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184569 role=brain wall_ms=1784011462991 mono_ms=265792311 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184569 role=brain wall_ms=1784011462991 mono_ms=265792311 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184570 role=brain wall_ms=1784011468031 mono_ms=265797351 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184570 role=brain wall_ms=1784011468031 mono_ms=265797351 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467049 id=1fe26f782f7b44169840a827e7994670ac9937a65e68bb710e5e03aec7f206ed addr=EndpointAddr { id: PublicKey(1fe26f782f7b44169840a827e7994670ac9937a65e68bb710e5e03aec7f206ed), addrs: {Ip(100.68.35.65:63737), Ip(192.168.1.81:63737)} }\nPAIR_MEET_UP:BIGNET step=59467049 id=6d1ed1c4c74970232081746aed1ae4eda420bef1b8e6d9b8e65d9ceb0053392b addr=EndpointAddr { id: PublicKey(6d1ed1c4c74970232081746aed1ae4eda420bef1b8e6d9b8e65d9ceb0053392b), addrs: {Ip(100.68.35.65:63739), Ip(192.168.1.81:63739)} }\nCONN_LIFECYCLE: conn=184571 role=brain wall_ms=1784011473067 mono_ms=265802387 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184571 role=brain wall_ms=1784011473067 mono_ms=265802387 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184572 role=brain wall_ms=1784011478106 mono_ms=265807426 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184572 role=brain wall_ms=1784011478106 mono_ms=265807426 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184573 role=brain wall_ms=1784011483141 mono_ms=265812461 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184573 role=brain wall_ms=1784011483141 mono_ms=265812461 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184574 role=brain wall_ms=1784011488179 mono_ms=265817499 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184574 role=brain wall_ms=1784011488179 mono_ms=265817499 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184575 role=brain wall_ms=1784011493215 mono_ms=265822535 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184575 role=brain wall_ms=1784011493215 mono_ms=265822535 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184576 role=brain wall_ms=1784011498253 mono_ms=265827572 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184576 role=brain wall_ms=1784011498253 mono_ms=265827572 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59467050 id=26eb113b70a92a0d8c0bde170d540e46c0ec7ec532129b708ca65750b3984120 addr=EndpointAddr { id: PublicKey(26eb113b70a92a0d8c0bde170d540e46c0ec7ec532129b708ca65750b3984120), addrs: {Ip(100.68.35.65:54503), Ip(192.168.1.81:54503)} }\nPAIR_MEET_UP:BIGNET step=59467050 id=aa393b5ca8c373fab2aacb842ff1e32739b7b2662fa9dac2ca0c0b38eaa5faf1 addr=EndpointAddr { id: PublicKey(aa393b5ca8c373fab2aacb842ff1e32739b7b2662fa9dac2ca0c0b38eaa5faf1), addrs: {Ip(100.68.35.65:54509), Ip(192.168.1.81:54509)} }\nCONN_LIFECYCLE: conn=184577 role=brain wall_ms=1784011503292 mono_ms=265832612 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184577 role=brain wall_ms=1784011503292 mono_ms=265832612 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184578 role=brain wall_ms=1784011508329 mono_ms=265837648 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184578 role=brain wall_ms=1784011508329 mono_ms=265837648 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184579 role=brain wall_ms=1784011513368 mono_ms=265842688 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184579 role=brain wall_ms=1784011513369 mono_ms=265842688 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011514282 mono_ms=265843601 event=stream-sub-attach stream=99823 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011516984 mono_ms=265846304 event=stream-sub-attach stream=99827 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184580 role=brain wall_ms=1784011518409 mono_ms=265847729 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184580 role=brain wall_ms=1784011518410 mono_ms=265847729 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011519514 mono_ms=265848834 event=stream-sub-attach stream=99828 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011520689 mono_ms=265850009 event=stream-sub-attach stream=99829 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011522140 mono_ms=265851460 event=stream-sub-attach stream=99836 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184581 role=brain wall_ms=1784011523448 mono_ms=265852768 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184581 role=brain wall_ms=1784011523448 mono_ms=265852768 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=13 role=brain stream-subscriber stream=11 stream-subscriber stream=14 stream-subscriber stream=1123 stream-subscriber stream=1124 stream-subscriber stream=2231 stream-subscriber stream=2232 stream-subscriber stream=2233… wall_ms=1784011526771 mono_ms=265856091 event=stream-sub-attach stream=99837 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184582 role=brain wall_ms=1784011528487 mono_ms=265857806 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184582 role=brain wall_ms=1784011528487 mono_ms=265857807 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59467051 id=a1099bde56a36f1fa91d1d3fcf7127734e3e6afd3c3c52610c2fe52dd0b3041b addr=EndpointAddr { id: PublicKey(a1099bde56a36f1fa91d1d3fcf7127734e3e6afd3c3c52610c2fe52dd0b3041b), addrs: {Ip(100.68.35.65:61562), Ip(192.168.1.81:61562)} }\nPAIR_MEET_UP:SPT_DEV step=59467051 id=a633471ff94f20496674609fa055970bf1edf747c742b61c56a04bc7afc0e9cd addr=EndpointAddr { id: PublicKey(a633471ff94f20496674609fa055970bf1edf747c742b61c56a04bc7afc0e9cd), addrs: {Ip(100.68.35.65:61560), Ip(192.168.1.81:61560)} }\nCONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=184585 role=brain wall_ms=1784011543599 mono_ms=265872918 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":609999,"lineNumbers":[609999,610000,610001,610002,610003,610004,610005,610006,610007,610008,610009,610010,610011,610012,610013,610014,610015,610016,610017,610018,610019,610020,610021,610022,610023,610024,610025,610026,610027,610028,610029,610030,610031,610032,610033,610034,610035,610036,610037,610038,610039,610040,610041,610042,610043,610044,610045,610046,610047,610048,610049,610050,610051,610052,610053,610054,610055,610056,610057,610058,610059,610060,610061,610062,610063,610064,610065,610066,610067,610068,610069,610070,610071,610072,610073,610074,610075,610076,610077,610078,610079,610080,610081,610082,610083,610084,610085,610086,610087,610088,610089,610090,610091,610092,610093,610094,610095,610096,610097,610098,610099,610100,610101,610102,610103,610104,610105,610106,610107,610108,610109,610110,610111,610112,610113,610114,610115,610116,610117,610118,610119,610120,610121,610122,610123,610124,610125,610126,610127,610128,610129,610130,610131,610132,610133,610134,610135,610136,610137,610138,610139,610140,610141,610142,610143,610144,610145,610146,610147,610148,610149,610150,610151,610152,610153]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":191,"totalBytes":27056,"outputLines":155,"outputBytes":27056,"shownRange":{"start":609999,"end":610153},"nextOffset":610154}}},"isError":false,"timestamp":1784069436981}}
{"type":"message","id":"5289a705","parentId":"0b84abbb","timestamp":"2026-07-14T22:50:37.002Z","message":{"role":"toolResult","toolCallId":"call_LvfntIo1jUlW5dHQ05UWX6zO|fc_050f56f290a937ae016a56bd3c39e081969d8b4b66c847bb90","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=195913 role=brain wall_ms=1784069083710 mono_ms=323412974 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468970 id=19b2990c9c55c885dbd12673e05c3fef89deef625d2e8944145568394d3186b4 addr=EndpointAddr { id: PublicKey(19b2990c9c55c885dbd12673e05c3fef89deef625d2e8944145568394d3186b4), addrs: {Ip(100.68.35.65:60455), Ip(192.168.1.81:60455)} }\nPAIR_MEET_UP:SPT_DEV step=59468970 id=b96bde9ffea719decde7374ff8a344db65d9cf2b4e09a8de925573ff0958286f addr=EndpointAddr { id: PublicKey(b96bde9ffea719decde7374ff8a344db65d9cf2b4e09a8de925573ff0958286f), addrs: {Ip(100.68.35.65:60457), Ip(192.168.1.81:60457)} }\nCONN_LIFECYCLE: conn=195917 role=brain wall_ms=1784069103890 mono_ms=323433154 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195917 role=brain wall_ms=1784069103890 mono_ms=323433154 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195918 role=brain wall_ms=1784069108930 mono_ms=323438194 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195918 role=brain wall_ms=1784069108930 mono_ms=323438194 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195919 role=brain wall_ms=1784069113966 mono_ms=323443230 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195919 role=brain wall_ms=1784069113966 mono_ms=323443230 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195920 role=brain wall_ms=1784069119004 mono_ms=323448267 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195920 role=brain wall_ms=1784069119004 mono_ms=323448268 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195921 role=brain wall_ms=1784069124045 mono_ms=323453309 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195921 role=brain wall_ms=1784069124045 mono_ms=323453309 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195922 role=brain wall_ms=1784069129084 mono_ms=323458348 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195922 role=brain wall_ms=1784069129084 mono_ms=323458348 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468971 id=62575183e086b9dbebb480c108483245219508f458404e74345a23a67eb22e7e addr=EndpointAddr { id: PublicKey(62575183e086b9dbebb480c108483245219508f458404e74345a23a67eb22e7e), addrs: {Ip(100.68.35.65:56136), Ip(192.168.1.81:56136)} }\nPAIR_MEET_UP:SPT_DEV step=59468971 id=53f4fa0c210417d2dd113e93eb08463a25b827367e411c22aa30ff55f858c620 addr=EndpointAddr { id: PublicKey(53f4fa0c210417d2dd113e93eb08463a25b827367e411c22aa30ff55f858c620), addrs: {Ip(100.68.35.65:56138), Ip(192.168.1.81:56138)} }\nCONN_LIFECYCLE: conn=195923 role=brain wall_ms=1784069134123 mono_ms=323463387 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195923 role=brain wall_ms=1784069134123 mono_ms=323463387 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195924 role=brain wall_ms=1784069139160 mono_ms=323468424 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195924 role=brain wall_ms=1784069139160 mono_ms=323468424 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195925 role=brain wall_ms=1784069144203 mono_ms=323473466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195925 role=brain wall_ms=1784069144203 mono_ms=323473467 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195926 role=brain wall_ms=1784069149241 mono_ms=323478505 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195926 role=brain wall_ms=1784069149241 mono_ms=323478505 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195927 role=brain wall_ms=1784069154282 mono_ms=323483546 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195927 role=brain wall_ms=1784069154282 mono_ms=323483546 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195928 role=brain wall_ms=1784069159320 mono_ms=323488584 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195928 role=brain wall_ms=1784069159321 mono_ms=323488584 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468972 id=398722ed02ed2cf59e449592ba217fd2161775997e332ab3d659303536e92fb7 addr=EndpointAddr { id: PublicKey(398722ed02ed2cf59e449592ba217fd2161775997e332ab3d659303536e92fb7), addrs: {Ip(100.68.35.65:63979), Ip(192.168.1.81:63979)} }\nPAIR_MEET_UP:SPT_DEV step=59468972 id=145c1c684b2111138bf9fc1e07d9fdde0238714f443933e750da6185a63158f5 addr=EndpointAddr { id: PublicKey(145c1c684b2111138bf9fc1e07d9fdde0238714f443933e750da6185a63158f5), addrs: {Ip(100.68.35.65:63978), Ip(192.168.1.81:63978)} }\nCONN_LIFECYCLE: conn=195929 role=brain wall_ms=1784069164357 mono_ms=323493621 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195929 role=brain wall_ms=1784069164357 mono_ms=323493621 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195930 role=brain wall_ms=1784069169395 mono_ms=323498659 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195930 role=brain wall_ms=1784069169395 mono_ms=323498659 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195931 role=brain wall_ms=1784069174433 mono_ms=323503697 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195931 role=brain wall_ms=1784069174433 mono_ms=323503697 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195932 role=brain wall_ms=1784069179481 mono_ms=323508745 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195932 role=brain wall_ms=1784069179481 mono_ms=323508745 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195933 role=brain wall_ms=1784069184519 mono_ms=323513783 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195933 role=brain wall_ms=1784069184520 mono_ms=323513783 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195934 role=brain wall_ms=1784069189556 mono_ms=323518820 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195934 role=brain wall_ms=1784069189556 mono_ms=323518820 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468973 id=947125eb710ee3041aa02b21727a5fc8512f1ed06ed7595ac4277477a662ceb5 addr=EndpointAddr { id: PublicKey(947125eb710ee3041aa02b21727a5fc8512f1ed06ed7595ac4277477a662ceb5), addrs: {Ip(100.68.35.65:65274), Ip(192.168.1.81:65274)} }\nPAIR_MEET_UP:SPT_DEV step=59468973 id=be0e6909d60e0fa08a060d8e5861a5dd39bbc6ab5871e660fabacd05666426a3 addr=EndpointAddr { id: PublicKey(be0e6909d60e0fa08a060d8e5861a5dd39bbc6ab5871e660fabacd05666426a3), addrs: {Ip(100.68.35.65:65280), Ip(192.168.1.81:65280)} }\nCONN_LIFECYCLE: conn=195935 role=brain wall_ms=1784069194592 mono_ms=323523856 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195935 role=brain wall_ms=1784069194592 mono_ms=323523856 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195936 role=brain wall_ms=1784069199631 mono_ms=323528895 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195936 role=brain wall_ms=1784069199631 mono_ms=323528895 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195937 role=brain wall_ms=1784069204670 mono_ms=323533934 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195937 role=brain wall_ms=1784069204670 mono_ms=323533934 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195938 role=brain wall_ms=1784069209707 mono_ms=323538971 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195938 role=brain wall_ms=1784069209707 mono_ms=323538971 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195939 role=brain wall_ms=1784069214741 mono_ms=323544005 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195939 role=brain wall_ms=1784069214741 mono_ms=323544005 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195940 role=brain wall_ms=1784069219776 mono_ms=323549040 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195940 role=brain wall_ms=1784069219776 mono_ms=323549040 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468974 id=101a6307d9769fd60c086b55801b8634ae4b7ab9b3eea2267473b0ec881f0330 addr=EndpointAddr { id: PublicKey(101a6307d9769fd60c086b55801b8634ae4b7ab9b3eea2267473b0ec881f0330), addrs: {Ip(100.68.35.65:49256), Ip(192.168.1.81:49256)} }\nPAIR_MEET_UP:BIGNET step=59468974 id=a6b7879a59efc3c3b1c2902b56793c2253824ad113e35ab52ac47f24002c6aad addr=EndpointAddr { id: PublicKey(a6b7879a59efc3c3b1c2902b56793c2253824ad113e35ab52ac47f24002c6aad), addrs: {Ip(100.68.35.65:49260), Ip(192.168.1.81:49260)} }\nCONN_LIFECYCLE: conn=195941 role=brain wall_ms=1784069224812 mono_ms=323554076 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195941 role=brain wall_ms=1784069224812 mono_ms=323554076 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195942 role=brain wall_ms=1784069229848 mono_ms=323559112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195942 role=brain wall_ms=1784069229848 mono_ms=323559112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195943 role=brain wall_ms=1784069234885 mono_ms=323564149 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195943 role=brain wall_ms=1784069234885 mono_ms=323564149 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195944 role=brain wall_ms=1784069239924 mono_ms=323569188 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195944 role=brain wall_ms=1784069239924 mono_ms=323569188 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195945 role=brain wall_ms=1784069244962 mono_ms=323574226 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195945 role=brain wall_ms=1784069244962 mono_ms=323574226 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195946 role=brain wall_ms=1784069249999 mono_ms=323579263 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195946 role=brain wall_ms=1784069249999 mono_ms=323579263 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468975 id=8990a652df56c3b160b0f508b23c4463af224f2e389f273ecd7b7e3a914ab4c4 addr=EndpointAddr { id: PublicKey(8990a652df56c3b160b0f508b23c4463af224f2e389f273ecd7b7e3a914ab4c4), addrs: {Ip(100.68.35.65:60066), Ip(192.168.1.81:60066)} }\nPAIR_MEET_UP:SPT_DEV step=59468975 id=44b0e2a75c4ffa8550bf46cd0ff4d6e70baddd7104816461cdd9f7b0916b3242 addr=EndpointAddr { id: PublicKey(44b0e2a75c4ffa8550bf46cd0ff4d6e70baddd7104816461cdd9f7b0916b3242), addrs: {Ip(100.68.35.65:60068), Ip(192.168.1.81:60068)} }\nCONN_LIFECYCLE: conn=195947 role=brain wall_ms=1784069255039 mono_ms=323584303 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195947 role=brain wall_ms=1784069255039 mono_ms=323584303 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468976 id=573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72 addr=EndpointAddr { id: PublicKey(573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72), addrs: {Ip(100.68.35.65:49427), Ip(192.168.1.81:49427)} }\nPAIR_MEET_UP:BIGNET step=59468976 id=dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d addr=EndpointAddr { id: PublicKey(dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d), addrs: {Ip(100.68.35.65:49425), Ip(192.168.1.81:49425)} }\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290334 mono_ms=323619598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290335 mono_ms=323619598 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468977 id=2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d addr=EndpointAddr { id: PublicKey(2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d), addrs: {Ip(100.68.35.65:50594), Ip(192.168.1.81:50594)} }\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310494 mono_ms=323639758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310495 mono_ms=323639758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPAIR_MEET_UP:SPT_DEV step=59468977 id=063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d addr=EndpointAddr { id: PublicKey(063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d), addrs: {Ip(100.68.35.65:50598), Ip(192.168.1.81:50598)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330652 mono_ms=323659916 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330653 mono_ms=323659916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468978 id=7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df addr=EndpointAddr { id: PublicKey(7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df), addrs: {Ip(100.68.35.65:64979), Ip(192.168.1.81:64979)} }\nPAIR_MEET_UP:BIGNET step=59468978 id=a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3 addr=EndpointAddr { id: PublicKey(a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3), addrs: {Ip(100.68.35.65:64983), Ip(192.168.1.81:64983)} }\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468979 id=6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34 addr=EndpointAddr { id: PublicKey(6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34), addrs: {Ip(100.68.35.65:52959), Ip(192.168.1.81:52959)} }\nPAIR_MEET_UP:SPT_DEV step=59468979 id=f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734 addr=EndpointAddr { id: PublicKey(f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734), addrs: {Ip(100.68.35.65:52956), Ip(192.168.1.81:52956)} }\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468980 id=5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f addr=EndpointAddr { id: PublicKey(5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f), addrs: {Ip(100.68.35.65:60565), Ip(192.168.1.81:60565)} }\nPAIR_MEET_UP:BIGNET step=59468980 id=321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2 addr=EndpointAddr { id: PublicKey(321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2), addrs: {Ip(100.68.35.65:60569), Ip(192.168.1.81:60569)} }\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406226 mono_ms=323735490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406227 mono_ms=323735490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }\nPAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }\n\n[Showing lines 643299-643512 of 643517. Use :643513 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=195913 role=brain wall_ms=1784069083710 mono_ms=323412974 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468970 id=19b2990c9c55c885dbd12673e05c3fef89deef625d2e8944145568394d3186b4 addr=EndpointAddr { id: PublicKey(19b2990c9c55c885dbd12673e05c3fef89deef625d2e8944145568394d3186b4), addrs: {Ip(100.68.35.65:60455), Ip(192.168.1.81:60455)} }\nPAIR_MEET_UP:SPT_DEV step=59468970 id=b96bde9ffea719decde7374ff8a344db65d9cf2b4e09a8de925573ff0958286f addr=EndpointAddr { id: PublicKey(b96bde9ffea719decde7374ff8a344db65d9cf2b4e09a8de925573ff0958286f), addrs: {Ip(100.68.35.65:60457), Ip(192.168.1.81:60457)} }\nCONN_LIFECYCLE: conn=195917 role=brain wall_ms=1784069103890 mono_ms=323433154 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195917 role=brain wall_ms=1784069103890 mono_ms=323433154 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195918 role=brain wall_ms=1784069108930 mono_ms=323438194 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195918 role=brain wall_ms=1784069108930 mono_ms=323438194 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195919 role=brain wall_ms=1784069113966 mono_ms=323443230 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195919 role=brain wall_ms=1784069113966 mono_ms=323443230 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195920 role=brain wall_ms=1784069119004 mono_ms=323448267 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195920 role=brain wall_ms=1784069119004 mono_ms=323448268 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195921 role=brain wall_ms=1784069124045 mono_ms=323453309 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195921 role=brain wall_ms=1784069124045 mono_ms=323453309 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195922 role=brain wall_ms=1784069129084 mono_ms=323458348 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195922 role=brain wall_ms=1784069129084 mono_ms=323458348 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468971 id=62575183e086b9dbebb480c108483245219508f458404e74345a23a67eb22e7e addr=EndpointAddr { id: PublicKey(62575183e086b9dbebb480c108483245219508f458404e74345a23a67eb22e7e), addrs: {Ip(100.68.35.65:56136), Ip(192.168.1.81:56136)} }\nPAIR_MEET_UP:SPT_DEV step=59468971 id=53f4fa0c210417d2dd113e93eb08463a25b827367e411c22aa30ff55f858c620 addr=EndpointAddr { id: PublicKey(53f4fa0c210417d2dd113e93eb08463a25b827367e411c22aa30ff55f858c620), addrs: {Ip(100.68.35.65:56138), Ip(192.168.1.81:56138)} }\nCONN_LIFECYCLE: conn=195923 role=brain wall_ms=1784069134123 mono_ms=323463387 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195923 role=brain wall_ms=1784069134123 mono_ms=323463387 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195924 role=brain wall_ms=1784069139160 mono_ms=323468424 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195924 role=brain wall_ms=1784069139160 mono_ms=323468424 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195925 role=brain wall_ms=1784069144203 mono_ms=323473466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195925 role=brain wall_ms=1784069144203 mono_ms=323473467 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195926 role=brain wall_ms=1784069149241 mono_ms=323478505 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195926 role=brain wall_ms=1784069149241 mono_ms=323478505 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195927 role=brain wall_ms=1784069154282 mono_ms=323483546 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195927 role=brain wall_ms=1784069154282 mono_ms=323483546 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195928 role=brain wall_ms=1784069159320 mono_ms=323488584 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195928 role=brain wall_ms=1784069159321 mono_ms=323488584 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468972 id=398722ed02ed2cf59e449592ba217fd2161775997e332ab3d659303536e92fb7 addr=EndpointAddr { id: PublicKey(398722ed02ed2cf59e449592ba217fd2161775997e332ab3d659303536e92fb7), addrs: {Ip(100.68.35.65:63979), Ip(192.168.1.81:63979)} }\nPAIR_MEET_UP:SPT_DEV step=59468972 id=145c1c684b2111138bf9fc1e07d9fdde0238714f443933e750da6185a63158f5 addr=EndpointAddr { id: PublicKey(145c1c684b2111138bf9fc1e07d9fdde0238714f443933e750da6185a63158f5), addrs: {Ip(100.68.35.65:63978), Ip(192.168.1.81:63978)} }\nCONN_LIFECYCLE: conn=195929 role=brain wall_ms=1784069164357 mono_ms=323493621 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195929 role=brain wall_ms=1784069164357 mono_ms=323493621 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195930 role=brain wall_ms=1784069169395 mono_ms=323498659 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195930 role=brain wall_ms=1784069169395 mono_ms=323498659 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195931 role=brain wall_ms=1784069174433 mono_ms=323503697 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195931 role=brain wall_ms=1784069174433 mono_ms=323503697 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195932 role=brain wall_ms=1784069179481 mono_ms=323508745 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195932 role=brain wall_ms=1784069179481 mono_ms=323508745 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195933 role=brain wall_ms=1784069184519 mono_ms=323513783 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195933 role=brain wall_ms=1784069184520 mono_ms=323513783 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195934 role=brain wall_ms=1784069189556 mono_ms=323518820 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195934 role=brain wall_ms=1784069189556 mono_ms=323518820 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468973 id=947125eb710ee3041aa02b21727a5fc8512f1ed06ed7595ac4277477a662ceb5 addr=EndpointAddr { id: PublicKey(947125eb710ee3041aa02b21727a5fc8512f1ed06ed7595ac4277477a662ceb5), addrs: {Ip(100.68.35.65:65274), Ip(192.168.1.81:65274)} }\nPAIR_MEET_UP:SPT_DEV step=59468973 id=be0e6909d60e0fa08a060d8e5861a5dd39bbc6ab5871e660fabacd05666426a3 addr=EndpointAddr { id: PublicKey(be0e6909d60e0fa08a060d8e5861a5dd39bbc6ab5871e660fabacd05666426a3), addrs: {Ip(100.68.35.65:65280), Ip(192.168.1.81:65280)} }\nCONN_LIFECYCLE: conn=195935 role=brain wall_ms=1784069194592 mono_ms=323523856 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195935 role=brain wall_ms=1784069194592 mono_ms=323523856 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195936 role=brain wall_ms=1784069199631 mono_ms=323528895 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195936 role=brain wall_ms=1784069199631 mono_ms=323528895 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195937 role=brain wall_ms=1784069204670 mono_ms=323533934 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195937 role=brain wall_ms=1784069204670 mono_ms=323533934 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195938 role=brain wall_ms=1784069209707 mono_ms=323538971 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195938 role=brain wall_ms=1784069209707 mono_ms=323538971 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195939 role=brain wall_ms=1784069214741 mono_ms=323544005 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195939 role=brain wall_ms=1784069214741 mono_ms=323544005 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195940 role=brain wall_ms=1784069219776 mono_ms=323549040 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195940 role=brain wall_ms=1784069219776 mono_ms=323549040 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468974 id=101a6307d9769fd60c086b55801b8634ae4b7ab9b3eea2267473b0ec881f0330 addr=EndpointAddr { id: PublicKey(101a6307d9769fd60c086b55801b8634ae4b7ab9b3eea2267473b0ec881f0330), addrs: {Ip(100.68.35.65:49256), Ip(192.168.1.81:49256)} }\nPAIR_MEET_UP:BIGNET step=59468974 id=a6b7879a59efc3c3b1c2902b56793c2253824ad113e35ab52ac47f24002c6aad addr=EndpointAddr { id: PublicKey(a6b7879a59efc3c3b1c2902b56793c2253824ad113e35ab52ac47f24002c6aad), addrs: {Ip(100.68.35.65:49260), Ip(192.168.1.81:49260)} }\nCONN_LIFECYCLE: conn=195941 role=brain wall_ms=1784069224812 mono_ms=323554076 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195941 role=brain wall_ms=1784069224812 mono_ms=323554076 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195942 role=brain wall_ms=1784069229848 mono_ms=323559112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195942 role=brain wall_ms=1784069229848 mono_ms=323559112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195943 role=brain wall_ms=1784069234885 mono_ms=323564149 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195943 role=brain wall_ms=1784069234885 mono_ms=323564149 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195944 role=brain wall_ms=1784069239924 mono_ms=323569188 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195944 role=brain wall_ms=1784069239924 mono_ms=323569188 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195945 role=brain wall_ms=1784069244962 mono_ms=323574226 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195945 role=brain wall_ms=1784069244962 mono_ms=323574226 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195946 role=brain wall_ms=1784069249999 mono_ms=323579263 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195946 role=brain wall_ms=1784069249999 mono_ms=323579263 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468975 id=8990a652df56c3b160b0f508b23c4463af224f2e389f273ecd7b7e3a914ab4c4 addr=EndpointAddr { id: PublicKey(8990a652df56c3b160b0f508b23c4463af224f2e389f273ecd7b7e3a914ab4c4), addrs: {Ip(100.68.35.65:60066), Ip(192.168.1.81:60066)} }\nPAIR_MEET_UP:SPT_DEV step=59468975 id=44b0e2a75c4ffa8550bf46cd0ff4d6e70baddd7104816461cdd9f7b0916b3242 addr=EndpointAddr { id: PublicKey(44b0e2a75c4ffa8550bf46cd0ff4d6e70baddd7104816461cdd9f7b0916b3242), addrs: {Ip(100.68.35.65:60068), Ip(192.168.1.81:60068)} }\nCONN_LIFECYCLE: conn=195947 role=brain wall_ms=1784069255039 mono_ms=323584303 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195947 role=brain wall_ms=1784069255039 mono_ms=323584303 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468976 id=573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72 addr=EndpointAddr { id: PublicKey(573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72), addrs: {Ip(100.68.35.65:49427), Ip(192.168.1.81:49427)} }\nPAIR_MEET_UP:BIGNET step=59468976 id=dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d addr=EndpointAddr { id: PublicKey(dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d), addrs: {Ip(100.68.35.65:49425), Ip(192.168.1.81:49425)} }\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290334 mono_ms=323619598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290335 mono_ms=323619598 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468977 id=2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d addr=EndpointAddr { id: PublicKey(2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d), addrs: {Ip(100.68.35.65:50594), Ip(192.168.1.81:50594)} }\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310494 mono_ms=323639758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310495 mono_ms=323639758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPAIR_MEET_UP:SPT_DEV step=59468977 id=063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d addr=EndpointAddr { id: PublicKey(063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d), addrs: {Ip(100.68.35.65:50598), Ip(192.168.1.81:50598)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330652 mono_ms=323659916 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330653 mono_ms=323659916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468978 id=7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df addr=EndpointAddr { id: PublicKey(7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df), addrs: {Ip(100.68.35.65:64979), Ip(192.168.1.81:64979)} }\nPAIR_MEET_UP:BIGNET step=59468978 id=a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3 addr=EndpointAddr { id: PublicKey(a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3), addrs: {Ip(100.68.35.65:64983), Ip(192.168.1.81:64983)} }\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468979 id=6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34 addr=EndpointAddr { id: PublicKey(6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34), addrs: {Ip(100.68.35.65:52959), Ip(192.168.1.81:52959)} }\nPAIR_MEET_UP:SPT_DEV step=59468979 id=f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734 addr=EndpointAddr { id: PublicKey(f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734), addrs: {Ip(100.68.35.65:52956), Ip(192.168.1.81:52956)} }\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468980 id=5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f addr=EndpointAddr { id: PublicKey(5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f), addrs: {Ip(100.68.35.65:60565), Ip(192.168.1.81:60565)} }\nPAIR_MEET_UP:BIGNET step=59468980 id=321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2 addr=EndpointAddr { id: PublicKey(321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2), addrs: {Ip(100.68.35.65:60569), Ip(192.168.1.81:60569)} }\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406226 mono_ms=323735490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406227 mono_ms=323735490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }\nPAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }","truncated":true,"truncatedBy":"lines","totalLines":219,"totalBytes":32593,"outputLines":214,"outputBytes":32593,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=195913 role=brain wall_ms=1784069083710 mono_ms=323412974 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468970 id=19b2990c9c55c885dbd12673e05c3fef89deef625d2e8944145568394d3186b4 addr=EndpointAddr { id: PublicKey(19b2990c9c55c885dbd12673e05c3fef89deef625d2e8944145568394d3186b4), addrs: {Ip(100.68.35.65:60455), Ip(192.168.1.81:60455)} }\nPAIR_MEET_UP:SPT_DEV step=59468970 id=b96bde9ffea719decde7374ff8a344db65d9cf2b4e09a8de925573ff0958286f addr=EndpointAddr { id: PublicKey(b96bde9ffea719decde7374ff8a344db65d9cf2b4e09a8de925573ff0958286f), addrs: {Ip(100.68.35.65:60457), Ip(192.168.1.81:60457)} }\nCONN_LIFECYCLE: conn=195917 role=brain wall_ms=1784069103890 mono_ms=323433154 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195917 role=brain wall_ms=1784069103890 mono_ms=323433154 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195918 role=brain wall_ms=1784069108930 mono_ms=323438194 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195918 role=brain wall_ms=1784069108930 mono_ms=323438194 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195919 role=brain wall_ms=1784069113966 mono_ms=323443230 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195919 role=brain wall_ms=1784069113966 mono_ms=323443230 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195920 role=brain wall_ms=1784069119004 mono_ms=323448267 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195920 role=brain wall_ms=1784069119004 mono_ms=323448268 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195921 role=brain wall_ms=1784069124045 mono_ms=323453309 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195921 role=brain wall_ms=1784069124045 mono_ms=323453309 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195922 role=brain wall_ms=1784069129084 mono_ms=323458348 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195922 role=brain wall_ms=1784069129084 mono_ms=323458348 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468971 id=62575183e086b9dbebb480c108483245219508f458404e74345a23a67eb22e7e addr=EndpointAddr { id: PublicKey(62575183e086b9dbebb480c108483245219508f458404e74345a23a67eb22e7e), addrs: {Ip(100.68.35.65:56136), Ip(192.168.1.81:56136)} }\nPAIR_MEET_UP:SPT_DEV step=59468971 id=53f4fa0c210417d2dd113e93eb08463a25b827367e411c22aa30ff55f858c620 addr=EndpointAddr { id: PublicKey(53f4fa0c210417d2dd113e93eb08463a25b827367e411c22aa30ff55f858c620), addrs: {Ip(100.68.35.65:56138), Ip(192.168.1.81:56138)} }\nCONN_LIFECYCLE: conn=195923 role=brain wall_ms=1784069134123 mono_ms=323463387 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195923 role=brain wall_ms=1784069134123 mono_ms=323463387 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195924 role=brain wall_ms=1784069139160 mono_ms=323468424 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195924 role=brain wall_ms=1784069139160 mono_ms=323468424 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195925 role=brain wall_ms=1784069144203 mono_ms=323473466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195925 role=brain wall_ms=1784069144203 mono_ms=323473467 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195926 role=brain wall_ms=1784069149241 mono_ms=323478505 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195926 role=brain wall_ms=1784069149241 mono_ms=323478505 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195927 role=brain wall_ms=1784069154282 mono_ms=323483546 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195927 role=brain wall_ms=1784069154282 mono_ms=323483546 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195928 role=brain wall_ms=1784069159320 mono_ms=323488584 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195928 role=brain wall_ms=1784069159321 mono_ms=323488584 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468972 id=398722ed02ed2cf59e449592ba217fd2161775997e332ab3d659303536e92fb7 addr=EndpointAddr { id: PublicKey(398722ed02ed2cf59e449592ba217fd2161775997e332ab3d659303536e92fb7), addrs: {Ip(100.68.35.65:63979), Ip(192.168.1.81:63979)} }\nPAIR_MEET_UP:SPT_DEV step=59468972 id=145c1c684b2111138bf9fc1e07d9fdde0238714f443933e750da6185a63158f5 addr=EndpointAddr { id: PublicKey(145c1c684b2111138bf9fc1e07d9fdde0238714f443933e750da6185a63158f5), addrs: {Ip(100.68.35.65:63978), Ip(192.168.1.81:63978)} }\nCONN_LIFECYCLE: conn=195929 role=brain wall_ms=1784069164357 mono_ms=323493621 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195929 role=brain wall_ms=1784069164357 mono_ms=323493621 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195930 role=brain wall_ms=1784069169395 mono_ms=323498659 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195930 role=brain wall_ms=1784069169395 mono_ms=323498659 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195931 role=brain wall_ms=1784069174433 mono_ms=323503697 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195931 role=brain wall_ms=1784069174433 mono_ms=323503697 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195932 role=brain wall_ms=1784069179481 mono_ms=323508745 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195932 role=brain wall_ms=1784069179481 mono_ms=323508745 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195933 role=brain wall_ms=1784069184519 mono_ms=323513783 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195933 role=brain wall_ms=1784069184520 mono_ms=323513783 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195934 role=brain wall_ms=1784069189556 mono_ms=323518820 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195934 role=brain wall_ms=1784069189556 mono_ms=323518820 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468973 id=947125eb710ee3041aa02b21727a5fc8512f1ed06ed7595ac4277477a662ceb5 addr=EndpointAddr { id: PublicKey(947125eb710ee3041aa02b21727a5fc8512f1ed06ed7595ac4277477a662ceb5), addrs: {Ip(100.68.35.65:65274), Ip(192.168.1.81:65274)} }\nPAIR_MEET_UP:SPT_DEV step=59468973 id=be0e6909d60e0fa08a060d8e5861a5dd39bbc6ab5871e660fabacd05666426a3 addr=EndpointAddr { id: PublicKey(be0e6909d60e0fa08a060d8e5861a5dd39bbc6ab5871e660fabacd05666426a3), addrs: {Ip(100.68.35.65:65280), Ip(192.168.1.81:65280)} }\nCONN_LIFECYCLE: conn=195935 role=brain wall_ms=1784069194592 mono_ms=323523856 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195935 role=brain wall_ms=1784069194592 mono_ms=323523856 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195936 role=brain wall_ms=1784069199631 mono_ms=323528895 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195936 role=brain wall_ms=1784069199631 mono_ms=323528895 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195937 role=brain wall_ms=1784069204670 mono_ms=323533934 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195937 role=brain wall_ms=1784069204670 mono_ms=323533934 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195938 role=brain wall_ms=1784069209707 mono_ms=323538971 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195938 role=brain wall_ms=1784069209707 mono_ms=323538971 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195939 role=brain wall_ms=1784069214741 mono_ms=323544005 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195939 role=brain wall_ms=1784069214741 mono_ms=323544005 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195940 role=brain wall_ms=1784069219776 mono_ms=323549040 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195940 role=brain wall_ms=1784069219776 mono_ms=323549040 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468974 id=101a6307d9769fd60c086b55801b8634ae4b7ab9b3eea2267473b0ec881f0330 addr=EndpointAddr { id: PublicKey(101a6307d9769fd60c086b55801b8634ae4b7ab9b3eea2267473b0ec881f0330), addrs: {Ip(100.68.35.65:49256), Ip(192.168.1.81:49256)} }\nPAIR_MEET_UP:BIGNET step=59468974 id=a6b7879a59efc3c3b1c2902b56793c2253824ad113e35ab52ac47f24002c6aad addr=EndpointAddr { id: PublicKey(a6b7879a59efc3c3b1c2902b56793c2253824ad113e35ab52ac47f24002c6aad), addrs: {Ip(100.68.35.65:49260), Ip(192.168.1.81:49260)} }\nCONN_LIFECYCLE: conn=195941 role=brain wall_ms=1784069224812 mono_ms=323554076 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195941 role=brain wall_ms=1784069224812 mono_ms=323554076 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195942 role=brain wall_ms=1784069229848 mono_ms=323559112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195942 role=brain wall_ms=1784069229848 mono_ms=323559112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195943 role=brain wall_ms=1784069234885 mono_ms=323564149 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195943 role=brain wall_ms=1784069234885 mono_ms=323564149 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195944 role=brain wall_ms=1784069239924 mono_ms=323569188 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195944 role=brain wall_ms=1784069239924 mono_ms=323569188 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195945 role=brain wall_ms=1784069244962 mono_ms=323574226 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195945 role=brain wall_ms=1784069244962 mono_ms=323574226 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195946 role=brain wall_ms=1784069249999 mono_ms=323579263 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195946 role=brain wall_ms=1784069249999 mono_ms=323579263 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468975 id=8990a652df56c3b160b0f508b23c4463af224f2e389f273ecd7b7e3a914ab4c4 addr=EndpointAddr { id: PublicKey(8990a652df56c3b160b0f508b23c4463af224f2e389f273ecd7b7e3a914ab4c4), addrs: {Ip(100.68.35.65:60066), Ip(192.168.1.81:60066)} }\nPAIR_MEET_UP:SPT_DEV step=59468975 id=44b0e2a75c4ffa8550bf46cd0ff4d6e70baddd7104816461cdd9f7b0916b3242 addr=EndpointAddr { id: PublicKey(44b0e2a75c4ffa8550bf46cd0ff4d6e70baddd7104816461cdd9f7b0916b3242), addrs: {Ip(100.68.35.65:60068), Ip(192.168.1.81:60068)} }\nCONN_LIFECYCLE: conn=195947 role=brain wall_ms=1784069255039 mono_ms=323584303 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195947 role=brain wall_ms=1784069255039 mono_ms=323584303 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468976 id=573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72 addr=EndpointAddr { id: PublicKey(573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72), addrs: {Ip(100.68.35.65:49427), Ip(192.168.1.81:49427)} }\nPAIR_MEET_UP:BIGNET step=59468976 id=dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d addr=EndpointAddr { id: PublicKey(dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d), addrs: {Ip(100.68.35.65:49425), Ip(192.168.1.81:49425)} }\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290334 mono_ms=323619598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290335 mono_ms=323619598 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468977 id=2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d addr=EndpointAddr { id: PublicKey(2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d), addrs: {Ip(100.68.35.65:50594), Ip(192.168.1.81:50594)} }\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310494 mono_ms=323639758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310495 mono_ms=323639758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPAIR_MEET_UP:SPT_DEV step=59468977 id=063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d addr=EndpointAddr { id: PublicKey(063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d), addrs: {Ip(100.68.35.65:50598), Ip(192.168.1.81:50598)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330652 mono_ms=323659916 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330653 mono_ms=323659916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468978 id=7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df addr=EndpointAddr { id: PublicKey(7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df), addrs: {Ip(100.68.35.65:64979), Ip(192.168.1.81:64979)} }\nPAIR_MEET_UP:BIGNET step=59468978 id=a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3 addr=EndpointAddr { id: PublicKey(a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3), addrs: {Ip(100.68.35.65:64983), Ip(192.168.1.81:64983)} }\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468979 id=6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34 addr=EndpointAddr { id: PublicKey(6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34), addrs: {Ip(100.68.35.65:52959), Ip(192.168.1.81:52959)} }\nPAIR_MEET_UP:SPT_DEV step=59468979 id=f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734 addr=EndpointAddr { id: PublicKey(f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734), addrs: {Ip(100.68.35.65:52956), Ip(192.168.1.81:52956)} }\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468980 id=5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f addr=EndpointAddr { id: PublicKey(5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f), addrs: {Ip(100.68.35.65:60565), Ip(192.168.1.81:60565)} }\nPAIR_MEET_UP:BIGNET step=59468980 id=321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2 addr=EndpointAddr { id: PublicKey(321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2), addrs: {Ip(100.68.35.65:60569), Ip(192.168.1.81:60569)} }\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406226 mono_ms=323735490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406227 mono_ms=323735490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }\nPAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }","startLine":643299,"lineNumbers":[643299,643300,643301,643302,643303,643304,643305,643306,643307,643308,643309,643310,643311,643312,643313,643314,643315,643316,643317,643318,643319,643320,643321,643322,643323,643324,643325,643326,643327,643328,643329,643330,643331,643332,643333,643334,643335,643336,643337,643338,643339,643340,643341,643342,643343,643344,643345,643346,643347,643348,643349,643350,643351,643352,643353,643354,643355,643356,643357,643358,643359,643360,643361,643362,643363,643364,643365,643366,643367,643368,643369,643370,643371,643372,643373,643374,643375,643376,643377,643378,643379,643380,643381,643382,643383,643384,643385,643386,643387,643388,643389,643390,643391,643392,643393,643394,643395,643396,643397,643398,643399,643400,643401,643402,643403,643404,643405,643406,643407,643408,643409,643410,643411,643412,643413,643414,643415,643416,643417,643418,643419,643420,643421,643422,643423,643424,643425,643426,643427,643428,643429,643430,643431,643432,643433,643434,643435,643436,643437,643438,643439,643440,643441,643442,643443,643444,643445,643446,643447,643448,643449,643450,643451,643452,643453,643454,643455,643456,643457,643458,643459,643460,643461,643462,643463,643464,643465,643466,643467,643468,643469,643470,643471,643472,643473,643474,643475,643476,643477,643478,643479,643480,643481,643482,643483,643484,643485,643486,643487,643488,643489,643490,643491,643492,643493,643494,643495,643496,643497,643498,643499,643500,643501,643502,643503,643504,643505,643506,643507,643508,643509,643510,643511,643512]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":643517,"totalBytes":32593,"outputLines":214,"outputBytes":32593,"shownRange":{"start":643299,"end":643512},"nextOffset":643513}}},"isError":false,"timestamp":1784069437002}}
{"type":"message","id":"73d0b7c2","parentId":"5289a705","timestamp":"2026-07-14T22:50:46.621Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Searching timestamps and failures with grep**"},{"type":"toolCall","id":"call_0kECIPd1kibCC2lSD61BszOO|fc_050f56f290a937ae016a56bd46523c8196871be302667dc2a9","name":"grep","arguments":{"i":"Anchoring last EN feed time","pattern":"178400879[0-9]|PUMP_PEER_FAIL|REGISTRY_EVICT|PAIR_MEET_UP","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"608000-610000","case":true,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_9z4CnehHWBedn2FffeOIIkhN|fc_050f56f290a937ae016a56bd4652508196a1e1b8cc3f3f5745","name":"grep","arguments":{"i":"Anchoring first row eviction","pattern":"REGISTRY_EVICT:(SPT_DEV|BIGNET)|PUMP_PEER_FAIL|PAIR_MEET_UP","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"608000-615000","case":true,"gitignore":false,"skip":null}},{"type":"toolCall","id":"call_P5P6E3A1dIQocFbJaHb9i7DJ|fc_050f56f290a937ae016a56bd46550081968432b6730a3a79d1","name":"grep","arguments":{"i":"Counting recent peer failures","pattern":"PUMP_PEER_FAIL","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"640000-643517","case":true,"gitignore":false,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":31320,"output":381,"cacheRead":324096,"cacheWrite":0,"totalTokens":355797,"reasoningTokens":114,"cost":{"input":0.15660000000000002,"output":0.011430000000000001,"cacheRead":0.162048,"cacheWrite":0,"total":0.330078}},"stopReason":"toolUse","timestamp":1784069437051,"responseId":"resp_050f56f290a937ae016a56bd3d292081969c441ba3558a1837","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_050f56f290a937ae016a56bd3f375081969ab5547f04a4dab2","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr1G6xDP8tyfaH_ACskhlOsfdF19ETu8U2dB70Q_zrD4AM9W1dd5daY6kfZYwbbb6pxVoNYfMxSjYejUpxdDi3giIdYCiTIivVC__vLZ6_Gw1y4pDx7Ll3z0OPT5hricmbdtXnStZlFjS1cgPQt5qCie5fa8sEs0gVNLXThOAoMBo0A2ipJez8wulgP_gBBQfPrjXlJm3quZuoQQT5X2KOUXlS-_rdVt_fitck9MfCNnBeu9kfo-m3tAz3QeA3cE-vHpdnSTMr0zKoUngCq1MlXB6gip51CPRO2IuHCQ5Xa5fRNxY2eyS0F3FligzBS0JxRA4dJTlhNAVlS0oS5ceboYatcqhZQ5r9soRw13GPejvx0jPtQmmylRcFq1MIzqAhSS7FNtBztp5Ak_eVXw35qtxJjiRv5v8BSDSKtyqdFpG-n-Ikgq55AZ2xFqzGLxu6FjwAlW0Uw-fq4vldFd0msuQI6nDazym9qgE3wNX0KFtTetmjfznGKdZxUIV1eej5_v-SLA4NRbjey5Jff_lI8_vjBeD9yH1KmY1XB9Lbb5a911zcfYOS26YBoXB-BXrfY8biCccw1G15uSJiUWWuNNFG4LUCRnyEn-i0fqU4U-wi505ylD-nCeuc7KX8ACYHVnWfJD48dAgvRt1ixFqIV1bE-Ml1hy4bCRYEOUo0qGcAK9Wq5iW9BB9ZsjjAGR0A4ZeocW3Z4ebZSkrv9vf2NKNAPyUczKcpImKnIx9r4Cvq-qnOtjKKyxUz6NnBFZHVVrbCrA_w_AaDkqybw9WrNfuvTGLxpUCg9_DEyMn0ZvdmJm73i9rInS6pSFUbB5ZZTX4AWDLWo0hh8Au_ddOJ4FIFzx_0c3e0nQYXtApLkiavAOlT4sdOo05cw5r7wtVdk4mUEfAYWbl-ZX0M7lKzsaxjYD5emQb0hQu_W-9UK-bc0xLky0EfTTuKx2-ZYd_mWeJAPERMdWEj-OxvgPLhBM_1yEo1u4E_DdeEAhPQlYLxfuBnjmqkBFjjr3C6bSvwAqQM_kVz5MYZvP4ha0AxVOigNfDByBkbD_OegFEmmRjg_p-Mxa8O9NqZJTduvWV2I2OhEUAJcNUCkA48gj6c1tcn1QFZBUbYgbKfyAz1YQ1IAUqm0jA3JJlMTdAP_tIsJxEO4K5kcLTMssxkqLLsjsrjNpMN_hEeFBVD0uFCId3KcYH6iv7t3Pjuo3AtatmYZmDaXmRM8VByZj91gpNjTgP86ZGd_FhEEGC6GVEKxRx8SBKgY3RGT61E11qyqbkjf7UVFeGbjoyG9L2o9zdroOauCPr8RdJZPX-7pUa0rp24FQA8zEk5jR9W7tvrO9J5tvCNNqfxNxMLO66tlZNykW5bA-H4_is4DWUJj-fGVQKshJ70C4Gtq0fR_YQIQwS6nDpLeh815gf-weKg7p7cwTQHrpWpKy4URA0nIpqODG7hPdhw6ISZAmdxY86WS_kcfrKKb18yy3dKfO_G_1EhZ7zZc5_c1HpV4aFKrbpzNUx4g=","summary":[{"type":"summary_text","text":"**Searching timestamps and failures with grep**"}]},{"id":"fc_050f56f290a937ae016a56bd46523c8196871be302667dc2a9","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring last EN feed time\",\"pattern\":\"178400879[0-9]|PUMP_PEER_FAIL|REGISTRY_EVICT|PAIR_MEET_UP\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"608000-610000\",\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_0kECIPd1kibCC2lSD61BszOO","name":"grep"},{"id":"fc_050f56f290a937ae016a56bd4652508196a1e1b8cc3f3f5745","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring first row eviction\",\"pattern\":\"REGISTRY_EVICT:(SPT_DEV|BIGNET)|PUMP_PEER_FAIL|PAIR_MEET_UP\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"608000-615000\",\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_9z4CnehHWBedn2FffeOIIkhN","name":"grep"},{"id":"fc_050f56f290a937ae016a56bd46550081968432b6730a3a79d1","type":"function_call","status":"completed","arguments":"{\"i\":\"Counting recent peer failures\",\"pattern\":\"PUMP_PEER_FAIL\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"640000-643517\",\"case\":true,\"gitignore\":false,\"skip\":null}","call_id":"call_P5P6E3A1dIQocFbJaHb9i7DJ","name":"grep"}]},"duration":9570.416100025177,"ttft":2191.2329999804497,"contextSnapshot":{"promptTokens":355416,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_0kECIPd1kibCC2lSD61BszOO|fc_050f56f290a937ae016a56bd46523c8196871be302667dc2a9","toolName":"grep","startedAt":"2026-07-14T22:50:46.622Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Anchoring last EN feed time"},"id":"663e75c0","parentId":"73d0b7c2","timestamp":"2026-07-14T22:50:46.622Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_9z4CnehHWBedn2FffeOIIkhN|fc_050f56f290a937ae016a56bd4652508196a1e1b8cc3f3f5745","toolName":"grep","startedAt":"2026-07-14T22:50:46.622Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Anchoring first row eviction"},"id":"776e21bf","parentId":"663e75c0","timestamp":"2026-07-14T22:50:46.622Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_P5P6E3A1dIQocFbJaHb9i7DJ|fc_050f56f290a937ae016a56bd46550081968432b6730a3a79d1","toolName":"grep","startedAt":"2026-07-14T22:50:46.622Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Counting recent peer failures"},"id":"b1f9003d","parentId":"776e21bf","timestamp":"2026-07-14T22:50:46.622Z"}
{"type":"message","id":"0954ee59","parentId":"b1f9003d","timestamp":"2026-07-14T22:50:46.647Z","message":{"role":"toolResult","toolCallId":"call_P5P6E3A1dIQocFbJaHb9i7DJ|fc_050f56f290a937ae016a56bd46550081968432b6730a3a79d1","toolName":"grep","content":[{"type":"text","text":"No matches found\nSearched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","searchPath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069446647}}
{"type":"message","id":"4270feb9","parentId":"0954ee59","timestamp":"2026-07-14T22:50:46.647Z","message":{"role":"toolResult","toolCallId":"call_0kECIPd1kibCC2lSD61BszOO|fc_050f56f290a937ae016a56bd46523c8196871be302667dc2a9","toolName":"grep","content":[{"type":"text","text":"No matches found\nSearched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","searchPath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069446647}}
{"type":"message","id":"d18606c9","parentId":"4270feb9","timestamp":"2026-07-14T22:50:46.647Z","message":{"role":"toolResult","toolCallId":"call_9z4CnehHWBedn2FffeOIIkhN|fc_050f56f290a937ae016a56bd4652508196a1e1b8cc3f3f5745","toolName":"grep","content":[{"type":"text","text":"No matches found\nSearched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","searchPath":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":0,"fileCount":0,"files":[],"truncated":false},"isError":false,"useless":true,"timestamp":1784069446647}}
{"type":"compaction","id":"7249fb7e","parentId":"d18606c9","timestamp":"2026-07-14T22:50:46.864Z","summary":"You are resuming a prior conversation. Its earlier turns were archived to reclaim context and are reproduced under HISTORY below, oldest to newest. Read HISTORY in full, then continue from the live conversation that follows it.\n\nThe archived transcript is compact: each turn opens with a heading — `# User ¶`, `# Assistant ¶`, or `# Tool call ¶` — assistant reasoning is wrapped in _italics_, and tool output sits inside `<out>…</out>`.\n\nReading HISTORY:\n- Plain-text sections are the verbatim transcript — rely on them exactly.\n- Some middle sections are attached as images instead of text. Each image is a page of that same transcript and belongs at its place in the reading order, between marked delimiters. Within an image, a solid black cell marks a newline and runs of spaces collapse to one.\n  - A frame is one grid 196 characters wide and up to 71 rows tall: read left to right, top to bottom — there is no word wrap, so a word may break across rows.\n  - Text inside `<out>` is dim gray — that gray is archived tool output, not conversation.\n- When an exact earlier detail matters and a section reads unclearly, re-derive it from the workspace (re-read files, re-run commands) rather than guessing.\n\nFILES\n===================\n# C:/Users/decid/AppData/Local/spt-core/\nbrain.ready (Read)\ndaemon-effects.log (Read)\ndaemon.json (Read)\n## identity/\nattachment.json (Read)\ncli-ops.json (Read)\npeer-addrs.json (Read)\npump-heartbeat.json (Read)\npump-ops.json (Read)\nroster.json (Read)\nroster.json.tmp.374632-417 (Read)\nroster.json.tmp.385948-640 (Read)\nsubnet.json (Read)\nvisibility.json (Read)\n### registry/\nBIGNET.json (Read)\nSPT_DEV.json (Read)\nheard.meta (Read)\n## logs/\ndaemon.stderr.log (Read)\ndaemon.stderr.log.1 (Read)\n## owlery/doyle/\ndigest.log (Read)\n## rca-active-20260709-222659/\ndaemon.stderr.active.log (Read)\n[…17 files elided…]\n\nHISTORY\n===================","shortSummary":"Archived 162,710 chars of history onto 10 snapcompact frames (+27,833 chars as text)","firstKeptEntryId":"73d0b7c2","tokensBefore":355797,"details":{"readFiles":["C:/Users/decid/AppData/Local/spt-core/brain.ready","C:/Users/decid/AppData/Local/spt-core/daemon-effects.log","C:/Users/decid/AppData/Local/spt-core/daemon.json","C:/Users/decid/AppData/Local/spt-core/identity/attachment.json","C:/Users/decid/AppData/Local/spt-core/identity/cli-ops.json","C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json","C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json","C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","C:/Users/decid/AppData/Local/spt-core/identity/roster.json","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-417","C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-640","C:/Users/decid/AppData/Local/spt-core/identity/subnet.json","C:/Users/decid/AppData/Local/spt-core/identity/visibility.json","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1","C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt","C:/Users/decid/AppData/Local/spt-core/releases/release.json","C:/Users/decid/Documents/projects","C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/config.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/serveprobe.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","C:/Users/decid/Documents/projects/spt-core/crates/spt/src/wansend.rs"],"modifiedFiles":[]},"fromExtension":false,"preserveData":{"snapcompact":{"frames":[{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":13916,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"},{"data":"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","mimeType":"image/png","cols":196,"rows":71,"chars":9633,"font":"8x13","variant":"bw","lineRepeat":1,"detail":"original"}],"totalChars":162710,"truncatedChars":0,"text":"# User ¶█Complete the assignment below, thoroughly:█# Target█HFENDULEAM live logs/config/state and safe read-only SPT CLI queries. Non-goal: daemon lifecycle or writes.█# Change█Construct a feedback loop proving cross-node isolation; identify when remote nodes disappeared and correlate transport/dial/meet/auth/key/subnet errors. Inspect current network listeners/connections with safe OS read-only commands if useful. Explain why daemon status can remain green.█# Acceptance█Return concrete failing route evidence, affected subnet/node keys, onset/cadence, and strongest log-grounded root candidate with alternatives falsified.█# Assistant ¶█_**Planning safe CLI filesystem inspection**_█# Tool call ¶█//Listing live SPT logs█glob(path=\"C:/Users/decid/AppData/Local/spt-core/logs/**/*\", hidden=true, gitignore=false, limit=300)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█daemon.stderr.log█daemon.stderr.log.1\u000f█</out>█# Tool call ¶█//Locating SPT configs█glob(path=\"C:/Users/decid/AppData/Local/spt-core/**/*\", hidden=true, gitignore=false, limit=300)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/█brain.ready█daemon-effects.log█## owlery/█### mobile-gw/█### hertz/█### doyle/█info.json█digest.log█.idle█### lia/█info.json█### todlando/█## identity/█epoch█pump-heartbeat.json█pump-ops.json█peer-addrs.json█roster.json█### registry/█heard.meta█SPT_DEV.json█BS-Resources.json█BIGNET.json█## logs/█daemon.stderr.log█## adapters/_github/SaberMage-claude-spt/█hook-trace.log█### state/digest/█doyle.pos█## tracked/█### .seed.git/█#### objects/█##### e1/█f1531628b44ce6be172972c28a8d70deab07db█##### e8/█1884421140a5d840e7059844d9ee5971bd601c█de6269894ae2a2290dc95f96c0b784a0604eb1█##### e2/█88effdbf1d1ec85f3d189180d32f3a03dd2a35█##### a7/█d519790660be33b7cc9a93fd636f93f2ccd1b7█##### 9f/█c93d27e80fa119a405911d6388072e5a032dd1█2423b4c1074fd9b27539a4ed67d6ba63f3c9e3█##### 61/█a3b521ca2fe662e8daf4bbdeb51d5930e8ea2c█2e6743262379d694c6739889ae386de85e44fe█##### 89/█06f02c12c41d9a3976552501405a0d126d56bc█##### 5c/█631d983a44ffdadc42b3a6f61ca49d093fe8e4█##### 6b/█60b871bc4ee3467669d1a8d433586835d745a7█##### 76/█cc7c43a22d5f2e6b1aa22bbd56a4d5edcc865d█30b1527e10e1c7fc14a1ac6227dff5814907b0█##### de/█d9d734f04d98cd4e2147ae995613c50b2d918a█1e2b847c9989ecf394def92 [...2961ch elided...] 7c635c24b72ca8ad60830█##### 2c/█1472160f8ff55af4600d47869eb830bb058730█##### 9d/█6d55b97e60cd8ab9d0957232f5d149d34b2053█##### d6/█a017b73ca49b8cfc3d7812abd47193d012e624█##### 0a/█7d7c73a2400ccb010c822cfe292d35d63f22c2█##### 12/█da36d2696edac7004fb228a90802fc624c0f97█b0fd29897bb9096fa3ea27c6e170e90d5adb62█##### a1/█f5a93dbd4853245e072b102b5316f0f000f606█##### e3/█#### refs/heads/█p-github-com-sabermage-spt-core█a-doyle█#### worktrees/█##### github-com-sabermage-spt-core/█COMMIT_EDITMSG█index█###### logs/█HEAD█##### doyle/█COMMIT_EDITMSG█index█###### logs/█HEAD█#### logs/refs/heads/█p-github-com-sabermage-spt-core█a-doyle█### projects/github-com-sabermage-spt-core/doyle/█project-context.md█### agents/doyle/█live-context.md█## scratch/pump/█[200 results limit reached. Use limit=400 for more]\u000f█</out>█# Tool call ¶█//Locating user SPT state█glob(path=\"C:/Users/decid/.spt/**/*\", hidden=true, gitignore=false, limit=300)█<out>█\u000ePath not found: C:/Users/decid/.spt\u000f█</out>█# Assistant ¶█_**Planning parallel log and config inspection**_█# Tool call ¶█//Finding transport failures█grep(pattern=\"(?i)(error|warn|fail|dial|meet|auth|key|subnet|route|disconnect|timeout|refused|unreachable|handshake|peer|transport)\", path=\"C:/Users/decid/AppData/Local/spt-core/logs\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log█3|BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]█*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) - dispatcher + peer pump started█5|PUMP_IPC_READER: spawned█6|PUMP_IPC_READER: spawned█*7|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)█*8|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█*9|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)█*10|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)█*11|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█*12|DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")█*13|DISPATCH:3885:Failed(\"notif jo [...4727ch elided...] icKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }█*34|PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }█*35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }█*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\u000f█</out>█# Tool call ¶█//Finding affected node events█grep(pattern=\"(?i)(HFENDULEAM|ENLYZEAM|SPT_DEV|BIGNET)\", path=\"C:/Users/decid/AppData/Local/spt-core/logs\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log█561|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█*562|PAIR_MEET_UP:BIGNET step=59458128 id=ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce addr=EndpointAddr { id: PublicKey(ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce), addrs: {Ip(100.68.35.65:50072), Ip(192.168.1.81:50072)} }█563|PAIR_MEET_UP:BS-Resources step=59458128 id=f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116 addr=EndpointAddr { id: PublicKey(f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116), addrs: {Ip(100.68.35.65:50071), Ip(192.168.1.81:50071)} }█564|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█565|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█*566|PAIR_MEET_UP:SPT_DEV step=59458128 id=2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4 addr=EndpointAddr { id: PublicKey(2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4), addrs: {Ip(100.68.35.65:50077), Ip(192 [...23239ch elided...] 3d2bc26d6ff95eb73874b859 addr=EndpointAddr { id: PublicKey(345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859), addrs: {Ip(100.68.35.65:64059), Ip(192.168.1.81:64059)} }█*108|PAIR_MEET_UP:BIGNET step=59454603 id=5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736 addr=EndpointAddr { id: PublicKey(5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736), addrs: {Ip(100.68.35.65:64073), Ip(192.168.1.81:64073)} }█109|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█110|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█111|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\u000f█</out>█# Tool call ¶█//Reading live roster state█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\", selector=\"raw\")█<out>█\u000e{█\"members\": [█{█\"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"subnet\": \"SPT_DEV\",█\"label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"address\": {█\"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█},█{█\"Ip\": \"100.68.35.65:63546\"█},█{█\"Ip\": \"107.131.129.74:63546\"█},█{█\"Ip\": \"192.168.1.81:63546\"█}█]█},█\"last_seen\": \"1784012120\",█\"lease_epoch\": 610151█},█{█\"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█\"subnet\": \"SPT_DEV\",█\"label\": \"ENLYZEAM\",█\"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",█\"address\": {█\"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█[...6378ch elided...] a6b2122e2ed3ad9b79f6b88bbf04d144\",█\"address\": {█\"id\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█},█{█\"Ip\": \"100.65.194.82:55908\"█},█{█\"Ip\": \"192.168.1.8:55908\"█}█]█},█\"last_seen\": \"1784007760\",█\"lease_epoch\": 1130█}█],█\"tombstones\": [█{█\"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",█\"subnet\": \"BIGNET\",█\"stamp\": \"1783983420\"█},█{█\"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",█\"subnet\": \"SPT_DEV\",█\"stamp\": \"1783983420\"█}█]█}\u000f█</out>█# Tool call ¶█//Reading peer addresses█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\", selector=\"raw\")█<out>█\u000e{█\"addrs\": {█\"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {█\"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█},█{█\"Ip\": \"76.80.65.5:57900\"█},█{█\"Ip\": \"100.125.242.88:57900\"█},█{█\"Ip\": \"172.28.240.1:57900\"█},█{█\"Ip\": \"192.168.1.12:57900\"█},█{█\"Ip\": \"[2603:8000:a800:7857::6df]:57902\"█},█{█\"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"█},█{█\"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"█}█]█},█\"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {█\"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█}█]█},█\"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {█\"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",█[...563ch elided...] 1:59864\"█},█{█\"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"█},█{█\"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"█},█{█\"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"█}█]█},█\"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {█\"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█}█]█},█\"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {█\"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",█\"addrs\": [█{█\"Ip\": \"64.227.107.3:42537\"█}█]█}█}█}\u000f█</out>█# Tool call ¶█//Reading SPT_DEV registry█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json\", selector=\"raw\")█<out>█\u000e{█\"by_id\": {█\"chert\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630116,█\"last_active_ms\": 1783630087661,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"deployah\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630118,█\"last_active_ms\": 1783982275183,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"doyle\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Active\",█[...5421ch elided...] 1a91c85f2d\",█\"status\": \"Active\",█\"epoch\": 630140,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"ready_agent\",█\"bound\": true,█\"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"adapter\": \"claude-spt:ccs\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█],█\"controlled\": true█}█]█},█\"node_labels\": {█\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {█\"label\": \"HFENDULEAM\",█\"epoch\": 630142█},█\"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {█\"label\": \"ENLYZEAM\",█\"epoch\": 445951█}█}█}\u000f█</out>█# Tool call ¶█//Reading BIGNET registry█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json\", selector=\"raw\")█<out>█\u000e{█\"by_id\": {█\"chert\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630117,█\"last_active_ms\": 1783630087661,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"deployah\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630119,█\"last_active_ms\": 1783982275183,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"doyle\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Active\",█[...5555ch elided...] 7898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"ready_agent\",█\"bound\": true,█\"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"adapter\": \"claude-spt:ccs\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█],█\"controlled\": true█}█]█},█\"node_labels\": {█\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {█\"label\": \"HFENDULEAM\",█\"epoch\": 630143█},█\"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": {█\"label\": \"GRAVITY-RUNNER\",█\"epoch\": 1166█},█\"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {█\"label\": \"ENLYZEAM\",█\"epoch\": 445952█}█}█}\u000f█</out>█# Tool call ¶█//Reading daemon effect history█read(path=\"C:/Users/decid/AppData/Local/spt-core/daemon-effects.log\", selector=\"raw\")█<out>█\u000ePENDING 0 1 net-send█PENDING 0 2 net-send█DONE 0 2█PENDING 0 3 net-send█DONE 0 3█PENDING 0 4 net-send█DONE 0 4█PENDING 0 5 net-send█DONE 0 5█PENDING 0 6 net-send█DONE 0 6█PENDING 0 7 net-send█DONE 0 7█PENDING 0 8 net-send█DONE 0 8█PENDING 0 9 net-send█DONE 0 9█PENDING 0 10 net-send█DONE 0 10█PENDING 0 11 net-send█DONE 0 11█PENDING 0 12 net-send█DONE 0 12█PENDING 0 13 net-send█DONE 0 13█PENDING 0 14 net-send█DONE 0 14█PENDING 0 15 net-send█DONE 0 15█PENDING 0 16 net-send█DONE 0 16█PENDING 0 17 net-send█DONE 0 17█PENDING 0 18 net-send█DONE 0 18█PENDING 0 19 net-send█DONE 0 19█PENDING 0 20 net-send█DONE 0 20█PENDING 0 21 net-send█DONE 0 21█PENDING 0 22 net-send█DONE 0 22█PENDING 0 23 net-send█DONE 0 23█PENDING 0 24 net-send█DONE 0 24█PENDING 0 25 net-send█DONE 0 25█PENDING 0 26 net-send█DONE 0 26█PENDING 0 27 net-send█DONE 0 27█PENDING 0 28 net-send█DONE 0 28█PENDING 0 29 net-send█DONE 0 29█PENDING 0 30 net-send█DONE 0 30█PENDING 0 31 net-send█DONE 0 31█PENDING 0 32 net-send█DONE 0 32█PENDING 0 33 net-send█DONE 0 33█PENDING 0 34 net-send█DONE 0 34█PENDING 0 35 net-send█DONE 0 35█PENDING 0 36 net-send█DONE 0 36█PENDING 0 37 net-send█DONE 0 37█PENDING 0 38 net-send█DONE 0 38█PENDING 0 3 [...2951ch elided...] ONE 0 129█PENDING 0 130 net-send█DONE 0 130█PENDING 0 131 net-send█DONE 0 131█PENDING 0 132 net-send█DONE 0 132█PENDING 0 133 net-send█DONE 0 133█PENDING 0 134 net-send█DONE 0 134█PENDING 0 135 net-send█DONE 0 135█PENDING 0 136 net-send█DONE 0 136█PENDING 0 137 net-send█DONE 0 137█PENDING 0 138 net-send█DONE 0 138█PENDING 0 139 net-send█DONE 0 139█PENDING 0 140 net-send█DONE 0 140█PENDING 0 141 net-send█DONE 0 141█PENDING 0 142 net-send█DONE 0 142█PENDING 0 143 net-send█DONE 0 143█PENDING 0 144 net-send█DONE 0 144█PENDING 0 145 net-send█DONE 0 145█PENDING 0 146 net-send█DONE 0 146█PENDING 0 147 net-send█DONE 0 147█PENDING 0 148 net-send█DONE 0 148█PENDING 0 149 net-send█DONE 0 149█PENDING 0 150 net-send█DONE 0 150█PENDING 0 151 net-send█[Showing lines 1-300 of 52984. Use :301 to continue]\u000f█</out>█# Tool call ¶█//Reading pump health state█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/pump-heartbeat.json\", selector=\"raw\")█<out>█\u000e1784069033136\u000f█</out>█# Tool call ¶█//Reading pump operations█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/pump-ops.json\", selector=\"raw\")█<out>█\u000e25307\u000f█</out>█# Assistant ¶█_**Mapping registry outputs and events**█**Analyzing log timestamps and heartbeat intervals**█**Correlating log events with connection timestamps**█**Narrowing project path with glob search**_█# Tool call ¶█//Reading current log onset█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"1-180\")█<out>█\u000e=== spt brain stderr - generation 1 - pid 37736 ===█BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)█BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]█BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) - dispatcher + peer pump started█PUMP_IPC_READER: spawned█PUMP_IPC_READER: spawned█PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)█PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c [...20383ch elided...] ed\")█DISPATCH:1585:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")█DISPATCH:4615:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")█DISPATCH:3290:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")█DISPATCH:2789:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")█DISPATCH:5304:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")█DISPATCH:2185:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")█[Showing lines 1-183 of 201. Use :184 to continue]\u000f█</out>█# Tool call ¶█//Reading rotated log onset█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\", selector=\"1-180\")█<out>█\u000e=== spt brain stderr - generation 1 - pid 43932 ===█BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)█BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]█BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) - dispatcher + peer pump started█PUMP_IPC_READER: spawned█PUMP_IPC_READER: spawned█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget - dropping peer (brain IPC read deadline elapsed)█PEER_PUMP_FAIL: brain IPC read deadline elapsed█PEER_PUMP_RESTART: supervised restart in 10s█PUMP_IPC_READER: spawned█PUMP_IPC_READER: spawned█=== spt broker stderr - generation 0 - pid 50220 ===█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█=== spt brain stderr - generation 0 - pid 9476 ===█BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachabl [...24564ch elided...] timed out after 30s (killed): claude-spt psyche --id doyle --session-id a5918ea9-d5bf-4657-a6d3-159f6d6634c4 --psyche-context-file C:\\Users\\decid\\AppData\\Local\\spt-core\\owlery\\doyle\\nested\\doyle-psyche\\psyche-context.txt█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█ENDPOINT_INJECT:todlando (2712 bytes -> translation binary)█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█[Showing lines 1-183 of 221. Use :184 to continue]\u000f█</out>█# Tool call ¶█//Tracing peer failures exactly█grep(pattern=\"PUMP_PEER_FAIL|PEER_PUMP_FAIL|PEER_PUMP_RESTART|PUMP_PEER_OK|PUMP_PEER_UP\", path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\", selector=null, case=true, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log█6|PUMP_IPC_READER: spawned█*7|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)█*8|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█*9|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)█*10|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)█*11|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█12|DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")█13|DISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")█14|DISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")█...█732|CONN_LIFECYCLE: [...9845ch elided...] unreachable or disabled)█80|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█81|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█...█84|PAIR_MEET_UP:BS-Resources step=59454600 id=80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6 addr=EndpointAddr { id: PublicKey(80da6c07d2622a3e5d5f6b33e5cba107eed460d08aa8355ca6d88ddc059e19e6), addrs: {Ip(100.68.35.65:53891), Ip(192.168.1.81:53891)} }█*85|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█Searched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log, ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log.1\u000f█</out>█# Tool call ¶█//Tracing subnet membership changes█grep(pattern=\"(?i)(tombstone|removed|expired|lease|member|roster|meet.*fail|meet.*error|PAIR_MEET|subnet.*(fail|error|empty))\", path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log█561|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█*562|PAIR_MEET_UP:BIGNET step=59458128 id=ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce addr=EndpointAddr { id: PublicKey(ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce), addrs: {Ip(100.68.35.65:50072), Ip(192.168.1.81:50072)} }█*563|PAIR_MEET_UP:BS-Resources step=59458128 id=f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116 addr=EndpointAddr { id: PublicKey(f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116), addrs: {Ip(100.68.35.65:50071), Ip(192.168.1.81:50071)} }█564|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█565|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█*566|PAIR_MEET_UP:SPT_DEV step=59458128 id=2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4 addr=EndpointAddr { id: PublicKey(2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4), addrs: {Ip(100.68.35.65:50077), Ip(192 [...15795ch elided...] binding IPv4-only (IPv6 unreachable or disabled)█*82|PAIR_MEET_UP:BIGNET step=59454600 id=253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a addr=EndpointAddr { id: PublicKey(253f61839b5c04f44fc1e61d1bfe8c2cc6e5459112be1ffb885d4b062b83552a), addrs: {Ip(100.68.35.65:53877), Ip(192.168.1.81:53877)} }█*83|PAIR_MEET_UP:SPT_DEV step=59454600 id=9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed addr=EndpointAddr { id: PublicKey(9b7fbcddba002e82d43af0a6dee80e0b9b2f94cd34dde00a2a28a3b4c4990aed), addrs: {Ip(100.68.35.65:53879), Ip(192.168.1.81:53879)} }█Searched only the first 4MB of large files (matches past the 4MB window are not shown; use `read` for the rest): ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log, ..\\..\\AppData\\Local\\spt-core\\logs\\daemon.stderr.log.1\u000f█</out>█# Tool call ¶█//Locating repository manifests█glob(path=\"C:/Users/decid/Documents/projects/*/*/Cargo.toml\", hidden=true, gitignore=true, limit=100)█<out>█\u000e# traceable-reqs/rust/█Cargo.toml█# spt-mobile/█## host/█Cargo.toml█## rust/█Cargo.toml█# holohue-gui/src-tauri/█Cargo.toml█# rustHello/helloProject/█Cargo.toml\u000f█</out>█# Tool call ¶█//Locating SPT user configs█glob(path=\"C:/Users/decid/AppData/Roaming/**/spt*\", hidden=true, gitignore=false, limit=100)█<out>█\u000e# C:/Users/decid/AppData/Roaming/Microsoft/Windows/Recent/█spt-lecturn.lnk█spt-test-engineer.md.lnk█spt-claude-code.lnk█spt-core.lnk\u000f█</out>█# Tool call ¶█//Locating current state files█glob(path=\"C:/Users/decid/AppData/Local/spt-core/identity/**/*\", hidden=true, gitignore=false, limit=200)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/identity/█pump-heartbeat.json█epoch█pump-ops.json█peer-addrs.json█roster.json█notifs.db█attachment.json█subnet.json█cli-ops.json█visibility.json█roster.json.tmp.385948-640█roster.json.tmp.385948-639█roster.json.tmp.374632-420█roster.json.tmp.374632-419█roster.json.tmp.374632-418█roster.json.tmp.374632-417█visibility.json.tmp.356240-0█node.key█## registry/█SPT_DEV.json█heard.meta█BIGNET.json█BS-Resources.json\u000f█</out>█# Assistant ¶█_**Adjusting glob search to top directory**_█# Tool call ¶█//Reading subnet attachment█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/subnet.json\", selector=\"raw\")█<out>█\u000e{█\"subnets\": [█{█\"name\": \"SPT_DEV\",█\"seed_hex\": \"04d75fcecd5d307974bb15dd90fbd9c8ad49579e\",█\"epoch\": 1,█\"created\": \"1780979462\",█\"hide_new_endpoints\": false█},█{█\"name\": \"BIGNET\",█\"seed_hex\": \"f66208577423b34a670cc4beb7c3acb534200001\",█\"epoch\": 1,█\"created\": \"1782116186\",█\"hide_new_endpoints\": false█}█]█}\u000f█</out>█# Tool call ¶█//Reading visibility state█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/visibility.json\", selector=\"raw\")█<out>█\u000e{█\"default_hide\": {},█\"overrides\": {},█\"sync_subnets\": {█\"ccbind-int-56308\": [█\"SPT_DEV\"█],█\"chert\": [█\"SPT_DEV\"█],█\"deployah\": [█\"SPT_DEV\"█],█\"doyle\": [█\"SPT_DEV\"█],█\"emphasys\": [█\"SPT_DEV\"█],█\"flynn\": [█\"SPT_DEV\"█],█\"hall-bf\": [█\"SPT_DEV\"█],█\"hertz\": [█\"SPT_DEV\"█],█\"lia\": [█\"SPT_DEV\"█],█\"mobile-gw\": [█\"SPT_DEV\"█],█\"perri\": [█\"SPT_DEV\"█],█\"rt-102212\": [█\"SPT_DEV\"█],█\"rt-102212-psyche\": [█\"SPT_DEV\"█],█\"rt-14188\": [█\"SPT_DEV\"█],█\"rt-14188-psyche\": [█\"SPT_DEV\"█],█\"scratch-c\": [█\"SPT_DEV\"█],█\"scratch-d\": [█\"SPT_DEV\"█],█\"sptc-argv-cap-psyche\": [█\"SPT_DEV\"█],█\"sptc-ci-diag-psyche\": [█\"SPT_DEV\"█],█\"sptc-ci-diag2-psyche\": [█\"SPT_DEV\"█],█\"sptc-ci-liverelay-24320-psyche\": [█\"SPT_DEV\"█],█\"sptc-ci-liverelay-27377-psyche\": [█\"SPT_DEV\"█],█\"sptc-ci-liverelay-40306\": [█\"SPT_DEV\"█],█\"sptc-ci-liverelay-40306-psyche\": [█\"SPT_DEV\"█],█\"sptc-ci-liverelay-psyche\": [...856ch elided...] ],█\"sptc-reval-f009-1643-psyche\": [█\"SPT_DEV\"█],█\"sptc-reval2-2634\": [█\"SPT_DEV\"█],█\"sptc-reval2-2634-psyche\": [█\"SPT_DEV\"█],█\"sptc-uniq-24156-1781652991-psyche\": [█\"SPT_DEV\"█],█\"sptc-v091-live\": [█\"SPT_DEV\"█],█\"sptc-v091-live-psyche\": [█\"SPT_DEV\"█],█\"sptc-v091-ready\": [█\"SPT_DEV\"█],█\"todlando\": [█\"SPT_DEV\"█],█\"wall-a-psyche\": [█\"SPT_DEV\"█],█\"wall-aa-psyche\": [█\"SPT_DEV\"█],█\"wall-b-psyche\": [█\"SPT_DEV\"█],█\"wall-c-psyche\": [█\"SPT_DEV\"█],█\"wall-d-psyche\": [█\"SPT_DEV\"█],█\"wall-f-psyche\": [█\"SPT_DEV\"█],█\"wallb-e2e\": [█\"SPT_DEV\"█],█\"wallb-e2e-psyche\": [█\"SPT_DEV\"█]█}█}\u000f█</out>█# Tool call ¶█//Reading attachment state█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/attachment.json\", selector=\"raw\")█<out>█\u000e{█\"detached\": []█}\u000f█</out>█# Tool call ¶█//Reading CLI operation state█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/cli-ops.json\", selector=\"raw\")█<out>█\u000e136\u000f█</out>█# Tool call ¶█//Reading registry heard watermark█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta\", selector=\"raw\")█<out>█\u000e{█\"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,█\"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,█\"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,█\"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,█\"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398█}\u000f█</out>█# Tool call ¶█//Reading SPT_DEV members█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json\", selector=\"raw\")█<out>█\u000e{█\"by_id\": {█\"chert\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630116,█\"last_active_ms\": 1783630087661,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"deployah\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630118,█\"last_active_ms\": 1783982275183,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"doyle\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Active\",█[...5421ch elided...] 1a91c85f2d\",█\"status\": \"Active\",█\"epoch\": 630140,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"ready_agent\",█\"bound\": true,█\"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"adapter\": \"claude-spt:ccs\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█],█\"controlled\": true█}█]█},█\"node_labels\": {█\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {█\"label\": \"HFENDULEAM\",█\"epoch\": 630142█},█\"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {█\"label\": \"ENLYZEAM\",█\"epoch\": 445951█}█}█}\u000f█</out>█# Tool call ¶█//Reading BIGNET members█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json\", selector=\"raw\")█<out>█\u000e{█\"by_id\": {█\"chert\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630117,█\"last_active_ms\": 1783630087661,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"deployah\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630119,█\"last_active_ms\": 1783982275183,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"doyle\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Active\",█[...5555ch elided...] 7898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"ready_agent\",█\"bound\": true,█\"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"adapter\": \"claude-spt:ccs\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█],█\"controlled\": true█}█]█},█\"node_labels\": {█\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {█\"label\": \"HFENDULEAM\",█\"epoch\": 630143█},█\"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": {█\"label\": \"GRAVITY-RUNNER\",█\"epoch\": 1166█},█\"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {█\"label\": \"ENLYZEAM\",█\"epoch\": 445952█}█}█}\u000f█</out>█# Tool call ¶█//Finding status implementation█grep(pattern=\"daemon status|net_up|subnet status|PUMP_PEER_FAIL|submit-dial exceeded\", path=\"C:/Users/decid/Documents/projects\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000eGrep timed out after 30s; narrow paths or pattern, or scope with `glob` first\u000f█</out>█# Assistant ¶█_**Narrowing directories for investigation**_█# Tool call ¶█//Sharing live isolation evidence█irc(op=\"send\", to=\"IsolationCodeRCA\", message=\"HF live anchors: logs/daemon.stderr.log.1 lines 1-10 generation1 brain up/net consumers then EN key ecb39... dial timeout, KITSUBITO cfd9... peer reply-read stalls entire pump -> PEER_PUMP_FAIL + supervised restart 10s. Lines 20-22 PAIR_MEET_UP for all 3 subnets uses fresh ephemeral meet keys, only [...730ch elided...] 94517. Strongest state candidate: peer-addrs key/id mismatch causes current EN lookup miss/relay-only while status remains process/pump heartbeat green. No auth/key/signature errors found first 4MiB.\", replyTo=null, await=false, from=null, timeoutMs=null, peek=null)█<out>█\u000eDelivered to 1 peer(s):█- IsolationCodeRCA: injected\u000f█</out>█# Assistant ¶█_**Investigating key mismatch and registry inconsistencies**█**Clarifying registry and roster output distinctions**█**Locating project directory for spt-core**_█# Tool call ¶█//Listing project directory█read(path=\"C:/Users/decid/Documents/projects\", selector=null)█<out>█\u000e.█- spt-claude-code/ 3d ago█- .claude/ 21h ago█- adapter/ 3d ago█- CHANGELOG.md 57.2KB 3d ago█- docs/ 3d ago█- traceable-reqs.toml 146.5KB 4d ago█- STUB-INJECT-PLAN.md 4.0KB 4d ago█- CONTEXT.md 9.7KB 4d ago█- DISCIPLINE-BRIEF-PLAN.md 2.3KB 4d ago█- tests/ 4d ago█- NEXT-WORKLOAD-PLAN.md 12.7KB 5d ago█- TRUNCATION-PROBE-PLAN.md 6.6KB 1w ago█- ... 34 more█- HANDOFF.md 8.5KB 1mo ago█- spt-core/ 3d ago█- .claude/ 11h ago█- Cargo.lock 136.6KB 3d ago█- Cargo.toml 1.5KB 3d ago█- CHANGELOG.md 99.5KB 3d ago█- .worktrees/ [...34857ch elided...] 16mo ago█- beyond_synaptics.zip 48.7MB 28mo ago█- tundra-mag-plate/ 22mo ago█- STL/ 22mo ago█- TundraMagPlateV2.step 435.4KB 22mo ago█- TundraMagPlate v12.f3z 9.3MB 22mo ago█- CADLatest.png 414.6KB 22mo ago█- Tundra_Charging_Dock_V1/ 22mo ago█- Tundra_Pogo_Interface_V1/ 22mo ago█- .repoLink.url 150B 22mo ago█- Tundra_Tracker_Reference/ 22mo ago█- README.md 81B 22mo ago█[1 results limit reached. Use limit=2 for more]\u000f█</out>█# Tool call ¶█//Locating SPT source roots█glob(path=\"C:/Users/decid/Documents/projects/spt-core/**/Cargo.toml\", hidden=true, gitignore=true, limit=50)█<out>█\u000e# spt-core/█Cargo.toml█## crates/█### spt-store/█Cargo.toml█### spt-net/█Cargo.toml█### xtask/█Cargo.toml█### spt-term/█Cargo.toml█### spt-runtime/█Cargo.toml█### spt-proto/█Cargo.toml█### spt-msg/█Cargo.toml█### spt-live/█Cargo.toml█### spt-daemon/█Cargo.toml█### spt/█Cargo.toml█## adapters/mock/█Cargo.toml\u000f█</out>█# Tool call ¶█//Locating nested SPT source█glob(path=\"C:/Users/decid/Documents/projects/github.com/**/Cargo.toml\", hidden=true, gitignore=true, limit=100)█<out>█\u000ePath not found: github.com\u000f█</out>█# Tool call ¶█//Locating source status symbols█glob(path=\"C:/Users/decid/Documents/projects/*/src/**/*.rs\", hidden=true, gitignore=true, limit=200)█<out>█\u000e# spt-shell-notify/src/█main.rs█# claude_skill_owl/src/█cli.rs█main.rs█lib.rs█## owl/█echo_commune.rs█mod.rs█resume.rs█doctor.rs█psyche_sync_setup.rs█list.rs█ring.rs█poll.rs█hook_subagent_start.rs█sync_prompt.rs█plugin_session_start.rs█hook_prompt.rs█send.rs█hook_check.rs█hook_idle.rs█cleanup.rs█stop.rs█list_working.rs█hook_subagent_stop.rs█version_changelog.rs█primer.rs█reboot.rs█new_alarm.rs█whoami.rs█setup.rs█gsd_setup.rs█## live/█list_psyches.rs█start.rs█list.rs█commune.rs█stop.rs█boot_spine.rs█touch_loop.rs█signoff.rs█fork.rs█mod.rs█context.rs█pick_spec.rs█pulse_wait.rs█### wrapper/█mod.rs█echo_fire.rs█orphan.rs█lifecycle.rs█claude.rs█## common/█list_filter.rs█sync.rs█git.rs█owlery.rs█tracked.rs█listener.rs█hook_output.rs█mod.rs█process.rs█types.rs█outcomes.rs█wrapper_state.rs█spool.rs█inbox.rs█perch_path.rs█output.rs█envelope.rs█time.rs█handoff.rs█agent_ids.rs█win_spawn.rs█trace.rs█resolve.rs█psmux.rs█registry.rs█id_validate.rs█auto_setup.rs█protocol.rs█# vmulti-client-testing/src/█main.rs█# playdial/src/█main.rs█# oship/src/█main.rs█# _3functions/src/█main.rs\u000f█</out>█# Tool call ¶█//Reading stale roster snapshot█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.374632-417\", selector=\"raw\")█# Tool call ¶█//Reading recent roster snapshot█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json.tmp.385948-640\", selector=\"raw\")█# Tool call ¶█//Finding node key corruption evidence█grep(pattern=\"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce|ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657|39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\", path=\"C:/Users/decid/AppData/Local/spt-core\", selector=null, case=true, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/█## identity/█### peer-addrs.json█2| \"addrs\": {█*3| \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {█*4| \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",█5| \"addrs\": [█6| {█7| \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█...█31| },█*32| \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {█*33| \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█34| \"addrs\": [█35| {█36| \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█### roster.json█28| {█*29| \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█30| \"subnet\": \"SPT_DEV\",█31| \"label\": \"ENLYZEAM\",█32| \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",█33| \"address\": {█*34| \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█35| \"addrs\": [█36| {█37| \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█...█118| {█*119| \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0a [...48987ch elided...] dca73914685fb91b2d82969119e42293408511e27e55657:broker QUIC op exceeded the 10s bound (peer unresponsive) - failing as an ordinary per-peer error█1213|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█1214|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█1215|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█...█1351|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:broker QUIC op exceeded the 10s bound (peer unresponsive) - failing as an ordinary per-peer error█*1352|PUMP_PEER_FAIL:5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce:broker QUIC op exceeded the 10s bound (peer unresponsive) - failing as an ordinary per-peer error█[Showing lines 1-527 of 794 (49.8KB limit). Use :528 to continue]\u000f█</out>█# Assistant ¶█_**Investigating log file inconsistencies**█**Planning diagnostics JSON inspection**_█# Tool call ¶█//Listing prior RCA captures█glob(path=\"C:/Users/decid/AppData/Local/spt-core/rca-*/*\", hidden=true, gitignore=false, limit=200)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/█## rca-active-20260709-222659/█status.active.json█daemon.stderr.active.log█keep-rc.ps1█lia.stdin█doyle.stdin█flynn.stdin█deployah.stdin█daemon.stderr.log█spt.pre-active.exe█daemon.stderr.log.1█### releases.before/█## rca-capture-20260709-215646/█status.after-apply.json█daemon.stderr.log█install-and-start.ps1█prepare-and-start.ps1█status.pre.txt█daemon.stderr.pre.log█spt.pre-capture.exe█daemon.stderr.log.1█daemon.stderr.pre.log.1█### releases.before/\u000f█</out>█# Tool call ¶█//Locating peer address writer█grep(pattern=\"peer-addrs|peer_addrs|PeerAddrs|address_book|addr.*insert\", path=\"C:/Users/decid/Documents/projects/spt-core/crates\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt-daemon/█### src/█#### msg.rs█682| /// (M8 decision 20, REQ-CONV-1): what the pump persists into█*683| /// `peer-addrs.json` after a successful dial. `null` from an older█684| /// broker or when no path is readable (additive serde-default field).█685| #[serde(default)]█686| pub remote_addr: serde_json::Value,█...█943| /// The connection's OBSERVED remote address (REQ-CONV-1 seed write-back),█*944| /// carried on [`PRESENCE_CONNECTED`] so the pump seeds `peer-addrs.json` from█945| /// the async connect the same way the blocking dial reply did. `null`/absent█946| /// on the other kinds and when the path is id-only (nothing worth seeding).█947| // [impl->REQ-CONV-1]█#### nethost.rs█337| /// reply used to carry - now it rides the presence stream so the pump seeds█*338| /// `peer-addrs.json` from a non-blocking dial the same way.█339| // [impl->REQ-CONV-1]█340| fn append_connected(&mut self, conn_id: u64, remote_id_hex: &str, remote_addr: serde_json::Value) {█341| self.push(NetPresenceEvent {█...█585| // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a█*586| // non-bloc [...16271ch elided...]█*1419| PeerAddrStore::record(&peer_addrs_file(), &b_hex, b_addr).unwrap();█1420|█1421| match resolve_and_dial_owner(&mut a, \"ling-remote\") {█1422| OwnerDial::Dialed { node, .. } => {█### tests/█#### twohost_cli.rs█370| std::fs::write(█*371| identity_dir.join(\"peer-addrs.json\"),█372| serde_json::to_string(&addrs).expect(\"peer addrs json\"),█373| )█*374| .expect(\"write peer-addrs.json\");█375|}█376|█377|/// Create a perch record for `id` on this host. `pid` picks the advertised█## xtask/src/█### main.rs█1178| let resolver = spt_daemon::pump::production_resolver();█*1179| let seeds = spt_store::peeraddrs::PeerAddrStore::load();█1180|█1181| println!(█1182| \"DEBUG_CONVERGE target={target} channel=debug{} expected={}\",\u000f█</out>█# Tool call ¶█//Locating status health logic█grep(pattern=\"net_up|DaemonStatus|daemon status|pump-heartbeat|pump_heartbeat|subnet.*status\", path=\"C:/Users/decid/Documents/projects/spt-core/crates\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt-daemon/█### src/█#### brain.rs█1158| /// is too old to answer (an older broker replies `unknown command kind`), read as█*1159| /// \"not reported\" on `daemon status` - same forward-compat contract as█1160| /// [`broker_image_version`](Self::broker_image_version).█1161| // [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]█1162| pub fn stall_evicts(&mut self) -> io::Result<Option<(u64, u64)>> {█#### broker.rs█268|/// The current stall-evict tally `(count_since_boot, last_evict_wall_ms)` -█*269|/// `last_evict_wall_ms` is 0 when none have happened. Read by the `daemon status`█270|/// surface (the observability rider).█271|// [impl->REQ-HAZARD-BROKER-VIEWER-BRAIN-DECOUPLE]█272|pub(crate) fn stall_evict_stats() -> (u64, u64) {█...█1055| /// record the evict for observability (broker log now; W3 persists the stderr,█*1056| /// the tally surfaces on `daemon status`). The take/reattach path and the█1057| /// `KIND_SESSIONS` reap call this so a suspended brain subscriber can never hold█1058| /// control on an idle session (the output-driven [`mark_controller_gone`] never█1059| /// fires without new output). Returns true iff [...16274ch elided...] _ms()) {█4123| Ok(mut b) => {█4124| let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);█...█4147| .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));█*4148| let pump_heartbeat_ms = if running {█*4149| spt_daemon::read_pump_heartbeat()█4150| } else {█4151| None█4152| };█...█4166| .unwrap_or_default();█*4167| for row in subnet_status_rows(█4168| &store,█4169| &regs,█4170| &roster,█...█4194| .collect();█*4195| return print_json(&DaemonStatusJson {█4196| running,█4197| pid,█Showing files 1-20 of 25+. Use skip=20 for the next page, or narrow paths/pattern.\u000f█</out>█# Tool call ¶█//Locating pump failure logic█grep(pattern=\"PUMP_PEER_FAIL|PEER_PUMP_FAIL|submit-dial|No addressing information|peer reply-read\", path=\"C:/Users/decid/Documents/projects/spt-core/crates\", selector=null, case=true, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt-daemon/█### src/█#### brain.rs█772| }█*773| // The bare ack for a non-blocking submit-dial (PUMP-TRUTH W2) -█774| // null payload; the dial's outcome rides the presence stream.█775| // [impl->REQ-PUMP-PEER-ISOLATION]█776| KIND_NET_DIAL_SUBMITTED => return Ok(BrokerEvent::NetDialSubmitted),█...█1753| io::Error::other(format!(█*1754| \"peer reply-read: no progress within budget - dropping peer ({e})\"█1755| ))█1756| } else {█1757| e█#### nethost.rs█585| // event carries the OBSERVED remote addr (REQ-CONV-1 seed write-back) so a█*586| // non-blocking submit-dial seeds `peer-addrs.json` like the blocking reply█587| // did (id-only / path-less -> `null`, nothing worth seeding).█588| let observed = observed_addr_json(&conn);█589| shared█...█1138| Err(_elapsed) => Err(io::Error::other(format!(█*1139| \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"█1140| ))),█1141| }█1142| }█#### pump/█##### mod.rs█637| [...1565ch elided...] |/// dialable path (`addr_for_node_hex`), relay disabled, discovery off. `connect`█*180|/// has nowhere to go; this is the field's \"submit-dial exceeded the bound (peer█181|/// unresponsive)\" shape (ecb39e40 / cfd9fc55), distinct from the proof-hang peer█182|/// above (which at least completes the QUIC handshake). Same question: does the█183|/// unreachable-connect burst starve the 2 workers, or yield?█## spt-store/src/█### peeraddrs.rs█93| /// (callers skip the disk write on a no-op). The stale-seed self-heal█*94| /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded█95| /// address FAILS, the pump forgets the stale seed so the next round█96| /// re-resolves via id-only discovery - a stale addr never strands a peer.█97| // [impl->REQ-CONV-1]\u000f█</out>█# Assistant ¶█_**Investigating peer address mismatch**_█# Tool call ¶█//Reading captured daemon status█read(path=\"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json\", selector=\"raw\")█<out>█\u000e{█\"running\": true,█\"pid\": \"82604\",█\"net_up\": true,█\"pump_heartbeat_ms\": 1783661718037,█\"managed_by\": null,█\"managed_active\": null,█\"subnets\": [█{█\"name\": \"SPT_DEV\",█\"nodes\": 5,█\"endpoints\": 11█},█{█\"name\": \"BIGNET\",█\"nodes\": 3,█\"endpoints\": 11█},█{█\"name\": \"BS-Resources\",█\"nodes\": 6,█\"endpoints\": 18█}█],█\"local_endpoints\": [█{█\"id\": \"chert\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"deployah\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█\"id\": \"doyle\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█\"id\": \"emphasys\",█\"state\": \"ready_agent\",█\"address\": null,█\"ready\": false,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"flynn\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█[...228ch elided...] \"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"lia\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█\"id\": \"mobile-gw\",█\"state\": \"gateway\",█\"address\": null,█\"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"perri\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"todlando\",█\"state\": \"ready_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█}█],█\"broker_image\": \"0.30.0\",█\"broker_stale\": true,█\"stall_evict_count\": 8,█\"stall_evict_last_ms\": 1783661631593█}█\u000f█</out>█# Tool call ¶█//Reading pre-update status█read(path=\"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt\", selector=\"raw\")█<out>█\u000edaemon: running (pid 62164)█peer pump: live (last tick 3s ago)█broker image: 0.30.5 (matches installed)█brain subscribers: healthy (none stall-evicted)█managed-by: manual - at-logon task 'spt-core daemon' registered (auto-starts at logon)█subnets:█SPT_DEV nodes=5 endpoints=11█BIGNET nodes=3 endpoints=11█BS-Resources nodes=6 endpoints=16█local endpoints:█chert live_agent ready=true alive=false█deployah live_agent ready=true alive=true█doyle live_agent ready=true alive=true█emphasys ready_agent ready=false alive=false█flynn live_agent ready=true alive=true█hall-bf live_agent ready=false alive=false█hertz ready_agent ready=true alive=true█lia live_agent ready=true alive=true█mobile-gw gateway ready=true alive=true█perri live_agent ready=true alive=false█todlando ready_agent ready=true alive=true█\u000f█</out>█# Tool call ¶█//Reading post-update status█read(path=\"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json\", selector=\"raw\")█<out>█\u000e{█\"running\": true,█\"pid\": \"82444\",█\"net_up\": true,█\"pump_heartbeat_ms\": 1783659727933,█\"managed_by\": null,█\"managed_active\": null,█\"subnets\": [█{█\"name\": \"SPT_DEV\",█\"nodes\": 5,█\"endpoints\": 11█},█{█\"name\": \"BIGNET\",█\"nodes\": 3,█\"endpoints\": 11█},█{█\"name\": \"BS-Resources\",█\"nodes\": 6,█\"endpoints\": 15█}█],█\"local_endpoints\": [█{█\"id\": \"chert\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"deployah\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█\"id\": \"doyle\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█\"id\": \"emphasys\",█\"state\": \"ready_agent\",█\"address\": null,█\"ready\": false,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"flynn\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█[...217ch elided...] null,█\"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"lia\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█},█{█\"id\": \"mobile-gw\",█\"state\": \"gateway\",█\"address\": null,█\"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"perri\",█\"state\": \"live_agent\",█\"address\": null,█\"ready\": true,█\"alive\": false,█\"unbound\": false█},█{█\"id\": \"todlando\",█\"state\": \"ready_agent\",█\"address\": null,█\"ready\": true,█\"alive\": true,█\"unbound\": false█}█],█\"broker_image\": \"0.30.0\",█\"broker_stale\": true,█\"stall_evict_count\": 0,█\"stall_evict_last_ms\": 0█}█\u000f█</out>█# Tool call ¶█//Reading address store invariants█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs\", selector=\"36-125\")█<out>█\u000e█/// The on-disk + in-memory shape: peer pubkey-hex -> last-known address.█#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]█pub struct PeerAddrStore {█/// Last-known dialable address per peer (opaque `EndpointAddr` JSON).█#[serde(default)]█pub addrs: BTreeMap<String, serde_json::Value>,█}█impl PeerAddrStore {█/// Load from the canonical [`peer_addrs_file`]. Absent => empty.█pub fn load() -> PeerAddrStore {█Self::load_from(&peer_addrs_file())█}█/// Load from an explicit path. Absent/corrupt degrades to empty - a█/// broken seed file must never break peer resolution (the id-only█/// discovery path is always behind it).█pub fn load_from(path: &Path) -> PeerAddrStore {█match std::fs::read_to_string(path) {█Ok(s) => serde_json::from_str(&s).unwrap_or_default(),█Err(_) => PeerAddrStore::default(),█}█}█/// Persist to the canonical path.█pub fn save(&self) -> std::io::Result<()> {█self.save_to(&peer_addrs_file())█}█/// Persist to an explicit path (atomic; creates the parent dir).█pub fn save_to(&self, path: &Path) -> std::io::Result<()> {█[...1545ch elided...] so concurrent█/// writers lose at most their own update, never tear the file).█pub fn record(path: &Path, peer_hex: &str, addr: serde_json::Value) -> std::io::Result<()> {█let mut store = Self::load_from(path);█if store.put(peer_hex, addr) {█store.save_to(path)?;█}█Ok(())█}█/// Load -> forget -> save against `path` in one step (the stale-seed drop█/// sibling of [`Self::record`]).█// [impl->REQ-CONV-1]█pub fn drop_seed(path: &Path, peer_hex: &str) -> std::io::Result<()> {█let mut store = Self::load_from(path);█if store.forget(peer_hex) {█store.save_to(path)?;█}█Ok(())█}█}█#[cfg(test)]█mod tests {█use super::*;█...█}█[Showing lines 35-128 of 181. Use :129 to continue]\u000f█</out>█# Tool call ¶█//Reading pump scheduling flow█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs\", selector=\"584-681,815-967,1008-1084\")█<out>█\u000epub fn run_peer_pump(█...█) -> io::Result<()> {█...█while !stop.load(Ordering::Relaxed) {█...█if due(last_hb, false, now, HEARTBEAT_PERIOD) {█...█last_hb = Some(now);█}█// Poll every worker's wake and decide due (the pure scheduler step):█// every wake is consumed EVERY tick so a marker is never stranded (the█// registry advertise-now, REQ-CONV-2; the sync freshness pull,█// REQ-INST-3). The take IS the remove - one wake claims exactly one█// forced round.█let (due_flags, any_due) = compute_due(&mut workers, &last, now);█if !any_due {█thread::sleep(TICK);█continue;█}█// Per-round shared loads (§Frozen-3): subnets / attachment /█// roster-backed policy, read ONCE and handed to every worker.█let ctx = RoundCtx::load(paths);█// Each due worker's node-local pre_round, once per round before ANY█// peer_step (only the registry leg does work here - its sweep +█// advertise; the rest default to a no-op).█pre_rounds(&mut workers, &due_flags, &ctx);█// -- PUMP-TRUTH W2 round (REQ-PUMP-PEER-ISOLATION) - concurrent di [...13161ch elided...] Ok(Err(e)) => eprintln!(\"PEER_PUMP_FAIL: {e}\"),█Err(panic) => {█let msg = panic█.downcast_ref::<&str>()█.map(|s| s.to_string())█.or_else(|| panic.downcast_ref::<String>().cloned())█.unwrap_or_else(|| \"<non-string panic>\".to_string());█eprintln!(\"PEER_PUMP_PANIC: {msg}\");█}█}█backoff = next_backoff(backoff, ran_for, base);█eprintln!(█\"PEER_PUMP_RESTART: supervised restart in {}s\",█backoff.as_secs()█);█let mut slept = Duration::ZERO;█while slept < backoff && !stop.load(Ordering::Relaxed) {█thread::sleep(TICK.min(backoff - slept));█slept += TICK;█}█}█}█\u000f█</out>█# Tool call ¶█//Reading daemon health collection█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\", selector=\"3960-4035,4110-4215\")█<out>█\u000efn cmd_daemon_stop(force: bool) -> i32 {█...█match spt_daemon::stop_daemon() {█...█Err(e) => {█eprintln!(\"DAEMON_STOP_FAIL: {e}\");█1█}█}█}█/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.█/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +█/// a pump waiting on the network - NOT a STALLED alarm read off a stale█/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the█/// heartbeat age exceeded uptime). With net up, the heartbeat drives█/// live/stalled as before (a genuine wedge still reads STALLED honestly).█// [impl->REQ-DAEMON-9]█fn render_connection_lines(█net_up: bool,█heartbeat: Option<u64>,█now: u64,█stale_after: u64,█) -> String {█if !net_up {█return \"connection: no connection - net endpoint not bound (retrying in background)\\n\\█peer pump: waiting on network\\n\"█.to_string();█}█match heartbeat {█Some(at) => {█let age = now.saturating_sub(at);█if age <= stale_after {█format!(\"peer pump: live (last tick {}s ago)\\n\", age / 1000)█} e [...5777ch elided...] // does not derive it (avoids per-perch git cost here) - skip-if-none.█project: None,█})█.collect();█return print_json(&DaemonStatusJson {█running,█pid,█net_up,█pump_heartbeat_ms,█managed_by,█managed_active,█subnets,█local_endpoints,█broker_image,█broker_stale,█stall_evict_count,█stall_evict_last_ms,█});█}█if running {█let pid = std::fs::read_to_string(spt_daemon::daemon_pid_path())█.ok()█.map(|s| s.trim().to_string());█match pid {█Some(p) if !p.is_empty() => println!(\"daemon: running (pid {p})\"),█...█}█...█} else {█...█}\u000f█</out>█# Tool call ¶█//Reading status node grouping█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\", selector=\"2960-3090\")█<out>█\u000efn cmd_endpoint_list(█...█) -> i32 {█...█if json {█...█let local = all_local█...█.map(|p| {█...█LocalPerchJson {█...█project,█}█})█.collect();█return print_json(&EndpointListJson {█self_pin,█subnets: subnet_groups,█local,█});█}█// SELF pin (decision 2): the session's own endpoint renders first and█// distinctly, whatever subnet groups follow. `spt whoami` is a thin alias for█// this command (REQ-WHOAMI-1), so the SELF pin additionally carries the Self█// endpoint's authored description - the \"who am I\" answer.█// The canonical `LABEL (keyprefix...)` for THIS node - reused by the SELF-pin█// `(self @ <node>)` marker and the \"This node:\" group header below.█// [impl->REQ-ENDPOINT-LIST-NODE-IDENT]█let self_node_ident = node_ident_display();█if let Some(self_id) = roster::detect_self_id() {█let state = roster::enumerate()█.into_iter()█.find(|p| p.id == self_id)█.map(|p| {█// UNBOUND surfaces here too (REQ-ENDPOINT-UNBOUND-ATTACH): the Self█[...4302ch elided...] de_hex, tagged);█// The stderr `ENDPOINTS:<n>` line and the grand total are REMOVED█// (REQ-ENDPOINT-LIST-NODE-GROUPED): each node group carries its own `Total:`.█print!(█\"{}\",█render_node_grouped(█&self_node_ident,█&names,█&this_cells,█&remote,█detail,█show_all,█crate::helpfmt::stdout_color(),█)█);█0█}█/// One instance row rendered under a node group in `endpoint list`: the█/// `(id, endpoint_type, EpDisplay, resources)` cell a single `(id, node)`█/// instance contributes. The node itself is the group header (node-grouped view,█/// REQ-ENDPOINT-LIST-NODE-GROUPED), so the row carries no node column - the█[Showing lines 2959-3093 of 17537. Use :3094 to continue]\u000f█</out>█# Tool call ¶█//Reading subnet node probing█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/serveprobe.rs\", selector=\"1-190\")█<out>█\u000e//! Subnet-scoped liveness probe (REQ-SUBNET-5) - the serve/request pair plus█//! the shared local \"am I serving subnet X?\" predicate the `--nodes` view█//! ultimately consults across the wire.█//!█//! ## Why this exists█//!█//! `subnet status --nodes` settles liveness in two tiers: gossip-recency█//! first, a live probe for the rows gossip could not settle. The probe used to█//! be a raw transport dial by node-pubkey - it proved the peer's daemon█//! endpoint was bound (the box is up), but ONE ALPN serves every subnet, so it█//! could not tell \"still serving THIS subnet\" from \"up for its own home\". A█//! peer that ran `subnet detach X` correctly stops advertising/connecting X█//! (the pump skips it - [`pump`]; the pairing responder filters it -█//! [`pairhost`]) yet its endpoint stays bound, so the raw dial read it█//! `online` for X indefinitely (criterion-5 detach-liveness bug, 2026-06-07).█//!█//! The fix: after the dial proves reachability, the prober asks the peer█//! \"serving `subnet`?\" over this one-shot record. The peer answers from the█//! SAME source the pump/responder consult - [`is_serving_subnet`], which is█//! membership ∧ `!AttachmentStore::is_detached`. A detached [...5957ch elided...] e_subnet(\"ACCEPT\").expect(\"create\");█store.save().expect(\"save subnet\");█assert!(is_serving_subnet(\"ACCEPT\"), \"member + attached serves\");█// Detach it -> still a member on disk, but not serving.█let mut att = AttachmentStore::load();█att.set_detached(\"ACCEPT\", true);█att.save().expect(\"save attachment\");█assert!(█!is_serving_subnet(\"ACCEPT\"),█\"detached member does not serve\"█);█// Re-attach -> serving again.█let mut att = AttachmentStore::load();█att.set_detached(\"ACCEPT\", false);█att.save().expect(\"save attachment\");█assert!(is_serving_subnet(\"ACCEPT\"), \"re-attached member serves\");█});█}█}█\u000f█</out>█# Assistant ¶█_**Locating subnet status rows definition**_█# Tool call ¶█//Locating subnet status rows█grep(pattern=\"fn subnet_status_rows|struct SubnetStatus|probe.*node|nodes: Vec|NodeStatus\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src\", selector=null, case=true, gitignore=true, skip=null)█<out>█\u000eSkipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed.\u000f█</out>█# Tool call ¶█//Tracing exact registry freshness█grep(pattern=\"VisibilityStore|last_seen|gossip.*recency|fresh|stale|OFFLINE|RECENCY\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\", selector=\"2500-2960,3500-3960\", case=false, gitignore=true, skip=null)█<out>█\u000eSkipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed.\u000f█</out>█# Tool call ¶█//Finding status JSON examples█grep(pattern=\"\\\"nodes\\\"\\\\s*:\\\\s*\\\\[|subnet status --json|EndpointListJson\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/tests; C:/Users/decid/Documents/projects/spt-core/crates/spt/src\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000eSkipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed.\u000f█</out>█# Tool call ¶█//Checking relay failures█grep(pattern=\"(?i)(relay|iroh|dns|discovery|magic|derp|home relay|netcheck|portmap|stun)\", path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log; C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000eSkipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed.\u000f█</out>█# Tool call ¶█//Reading status render capture tail█read(path=\"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log\", selector=\"1-20,2050-2140\")█<out>█\u000e=== spt brain stderr - generation 1 - pid 43932 ===█BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)█BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]█BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) - dispatcher + peer pump started█PUMP_IPC_READER: spawned█PUMP_IPC_READER: spawned█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:peer reply-read: no progress within budget - dropping peer (brain IPC read deadline elapsed)█PEER_PUMP_FAIL: brain IPC read deadline elapsed█PEER_PUMP_RESTART: supervised restart in 10s█PUMP_IPC_READER: spawned█PUMP_IPC_READER: spawned█=== spt broker stderr - generation 0 - pid 50220 ===█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█=== spt brain stderr - generation 0 - pid 9476 ===█BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 9476, generation 0, start-reason cold)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachabl [...13577ch elided...] licKey(1f57b5bca27ae17b2324cfcd34413f869501969b88f72fcfe1cbdb6caa8edd2e), addrs: {Ip(100.68.35.65:59730), Ip(192.168.1.81:59730)} }█PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█ENDPOINT_INJECT:doyle: endpoint ACTIVE -> spool (deferred hint), not injected█ENDPOINT_INJECT:doyle (84 bytes -> translation binary)█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\u000f█</out>█# Tool call ¶█//Tracing clock jumps█grep(pattern=\"(?i)(clock|wall_ms|time.*jump|backward|future|skew)\", path=\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000eSkipped due to queued user message. Do not count this skipped result as completed work or verification. After the queued message is handled on the next step, retry the skipped tool if it is still needed.\u000f█</out>█# User ¶█Your current interruptible wait was interrupted because an IRC message arrived from your parent agent `Main`.█Parent IRC message:█New evidence from ENLYZEAM via SSH: v0.31.0, net_up true, only local ball-b visible; repeated PUMP_PEER_FAIL for HF key and all other node keys. w32tm offsets are HF +0.003s and EN -0.135s, so rotating-step clock divergence is falsified. Full meetup records advertise EN local 100.125.242.88/192.168.1.12 UDP endpoints and rotate each 30s. Prioritize transport/listener/firewall/protocol causes and status semantics.█# Assistant ¶█_**Investigating network config and logs**█**Analyzing transport and listener architecture**_█# Tool call ¶█//Locating subnet status rows█grep(pattern=\"fn subnet_status_rows|struct SubnetStatus|probe.*node|nodes: Vec|NodeStatus\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src\", selector=null, case=true, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/spt/src/█## cli.rs█1046| #[arg(required = true)]█*1047| nodes: Vec<String>,█1048| /// Rotate the seed immediately instead of at the window's close - the█1049| /// compromised-node path (a benign offliner may then fall behind and█1050| /// must re-pair rather than re-seed).█...█2472| if !holders.is_empty() {█*2473| let nodes: Vec<&str> = holders.iter().map(|i| i.node.as_str()).collect();█2474| eprintln!(█2475| \"COLLISION:{new_id} already exists in subnet '{subnet}' on node(s): {} - \\█2476| pick another id (or rename the holder first)\",█...█3625| let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));█*3626| let cand_nodes: Vec<String> = regs█3627| .values()█3628| .flat_map(|reg| reg.instances(id).iter().map(|i| i.node.clone()))█3629| .collect();█...█6712|/// or codes (M7 plan decision 5).█*6713|struct SubnetStatusRow {█6714| name: String,█6715| /// Paired nodes known for the subnet (this node included).█6716| nodes: usize,█...█6730|// [impl->REQ-SUBNET- [...2657ch elided...] // Pass 3: stitch results back in row order - the work-list was filled in█7417| // row order, so a single cursor walks it deterministically. Render is█...█8518| endpoint: String,█*8519| nodes: Vec<String>,█8520| locked: bool,█8521|}█8522|█## wansend.rs█581|█*582|/// Subnet-scoped liveness probe for a node (M7 D2 / M8, REQ-SUBNET-1 +█583|/// REQ-SUBNET-5 - the hybrid liveness's expensive half, spent only on rows█584|/// gossip-recency could not settle): true iff the peer is reachable RIGHT NOW█585|/// **and still serving `subnet`**. The raw dial alone is subnet-blind (one█...█594|// [impl->REQ-SUBNET-5]█*595|pub fn probe_node_serving(node_hex: &str, subnet: &str) -> bool {█596| if spt_daemon::daemon::ensure_running().is_err() {█597| return false;█598| }\u000f█</out>█# Tool call ¶█//Locating firewall logs█glob(path=\"C:/Windows/System32/LogFiles/Firewall/*\", hidden=true, gitignore=false, limit=50)█<out>█\u000ePath not found: C:/Windows/System32/LogFiles/Firewall\u000f█</out>█# Tool call ¶█//Finding transport bind implementation█grep(pattern=\"Endpoint::builder|bind_addr|RelayMode|discovery|alpns|accept|net_status|enabled\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src\", selector=null, case=true, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt-net/src/█### lib.rs█6|//! endpoint (WAN, with the n0-relay default + a self-host knob - ADR-0002), mDNS█*7|//! LAN discovery, TOTP-seeded SPAKE2 pairing (ADR-0005), the eventually-consistent█8|//! per-subnet registry (ADR-0006), the subnet notification spool (ADR-0007),█9|//! cross-node Psyche sync (ADR-0003 + KNOWN-HAZARDS 6.5), and the update█10|//! peer-propagation transport plugged into the M3c update-engine seam (ADR-0004 §D).█...█31|//! D0 scaffold + `net` feature flag <- this commit█*32|//! D1 Iroh endpoint + n0 relay/self-host + mDNS discovery (REQ-NET-1, REQ-NET-2)█33|//! D2 TOTP-SPAKE2 pairing + transcript/seed-epoch/rate-limit (REQ-PAIR-1..6)█34|//! D3 per-subnet registry + epoch-lease resolution (REQ-INST-7,9..13)█35|//! D4 broker-owned QUIC endpoint (ADR-0004 §B) (REQ-EP-4 seam)█### net/█#### endpoint.rs█22|use iroh::endpoint::{presets, IdleTimeout, Incoming, PortmapperConfig, QuicTransportConfig};█*23|use iroh::{Endpoint, EndpointId, RelayMap, RelayMode, SecretKey};█24|use spt_proto::identity::{Identity, PublicKey};█25|█26|// Re-exported for the daemon (D4): the br [...44862ch elided...]█*1561| // real-terminal escape is an operator real-env acceptance step (a job█1562| // that PERMITS breakaway, which cargo's runner job does not).█1563| Err(e) if e.raw_os_error() == Some(5) => {█1564| unsafe { CloseHandle(job) };█...█1695| // (iii) REQ-HAZARD-DAEMON-STOP-BARRIER conn-close discipline: stop the serve█*1696| // loop so this test does not leak its serve + accepted-conn handler threads█1697| // (each parked in read_frame holding a seed pipe instance - the█1698| // self-sustaining pin doyle's cdb found feeding the stop-barrier convoy).█1699| let _ = crate::seedmap::request_stop(&name);█Showing files 1-20 of 48+. Use skip=20 for the next page, or narrow paths/pattern.\u000f█</out>█# Tool call ¶█//Reading worker starvation evidence█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs\", selector=\"1-260\")█<out>█\u000e//! UPDATE-WEDGE round-3 DIAGNOSTIC rig (throwaway - NO REQ until the verdict█//! lands and doyle rules the shape; see docs/UPDATE-WEDGE-2-ROUND3-RULING.md).█//!█//! The decider the round-3 ruling §5 demands: does a burst of dead-peer█//! `submit_dial`s actually HOLD/serialize the broker net runtime's 2 worker█//! threads (starving the reactor that services LOCAL loopback `rc` I/O), or do█//! the QUIC awaits YIELD cleanly (=> 2 tasks never monopolize 2 workers => the█//! whole \"2-worker-starvation\" seam is FALSIFIED and must be re-opened)?█//!█//! STAGE 1 (this file, first): the narrow mechanism probe. Stand a dialer whose█//! connects black-hole a dead peer, fire a `submit_dial` burst straight onto the█//! broker's own [`NetHost`] (the exact pump path), and read the two round-3█//! DIAGNOSTIC probes added to `nethost.rs`:█//! - `active_dial_tasks()` - in-flight dead-peer connects on the 2 workers;█//! - `net_canary_age_ms()` - a reactor-liveness canary stamped FROM the runtime█//! every ~25ms; a STALE stamp under the burst == worker starvation confirmed,█//! a FRESH stamp == the awaits yield (seam falsified).█//!█//! Hermetic: relays disabled, no discovery, loopback QUIC [...8726ch elided...] unreachable submit_dials | \\█peak_in_flight_tasks={peak_tasks} peak_canary_age={peak_canary}ms \\█dial_permits_free={permits}\"█);█// Record whichever way it falls (asserted after first observed run below).█// A large canary here - but small in the proof-hang test - would mean the█// UNREACHABLE (discovery/holepunch) connect path is the true worker-holder,█// narrowing the fix to that path. A small canary confirms the falsification█// across BOTH dead-peer shapes.█assert!(█peak_canary < 300,█\"UNREACHABLE-connect burst starved the net runtime (canary {peak_canary}ms) \\█while the proof-hang peer did not - the worker-holder is the discovery/\\█holepunch connect path. Escalate this discriminator to doyle.\"█);█}█\u000f█</out>█# Tool call ¶█//Finding transport timeout tests█grep(pattern=\"unreachable-connect|starve|worker|submit-dial exceeded|proof-hang|field\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/tests/net_worker_starve.rs\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000e 4|//! The decider the round-3 ruling §5 demands: does a burst of dead-peer█*5|//! `submit_dial`s actually HOLD/serialize the broker net runtime's 2 worker█6|//! threads (starving the reactor that services LOCAL loopback `rc` I/O), or do█*7|//! the QUIC awaits YIELD cleanly (=> 2 tasks never monopolize 2 workers => the█*8|//! whole \"2-worker-starvation\" seam is FALSIFIED and must be re-opened)?█9|//!█10|//! STAGE 1 (this file, first): the narrow mechanism probe. Stand a dialer whose█11|//! connects black-hole a dead peer, fire a `submit_dial` burst straight onto the█...█13|//! DIAGNOSTIC probes added to `nethost.rs`:█*14|//! - `active_dial_tasks()` - in-flight dead-peer connects on the 2 workers;█15|//! - `net_canary_age_ms()` - a reactor-liveness canary stamped FROM the runtime█*16|//! every ~25ms; a STALE stamp under the burst == worker starvation confirmed,█17|//! a FRESH stamp == the awaits yield (seam falsified).█18|//!█19|//! Hermetic: relays disabled, no discovery, loopback QUIC only. Runner contract:█*20|//! `cargo nextest run --test net_worker_starve` (process-per-test) or█21|//! `--test-threads=1` - NEVER a bare `cargo test` on Windows (shared SPT_HOME [...3118ch elided...] burst_vs_net_runtime_canary() {█186| let dir = tempfile::tempdir().expect(\"tempdir\");█...█216| // Record whichever way it falls (asserted after first observed run below).█*217| // A large canary here - but small in the proof-hang test - would mean the█*218| // UNREACHABLE (discovery/holepunch) connect path is the true worker-holder,█219| // narrowing the fix to that path. A small canary confirms the falsification█220| // across BOTH dead-peer shapes.█221| assert!(█222| peak_canary < 300,█*223| \"UNREACHABLE-connect burst starved the net runtime (canary {peak_canary}ms) \\█*224| while the proof-hang peer did not - the worker-holder is the discovery/\\█225| holepunch connect path. Escalate this discriminator to doyle.\"█226| );█227|}\u000f█</out>█# Tool call ¶█//Tracing net family checks█grep(pattern=\"NET_FAMILY_GATE|IPv4-only|IPv6 unreachable|bind.*IPv4\", path=\"C:/Users/decid/Documents/projects/spt-core/crates\", selector=null, case=true, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt-daemon/src/█### pairhost.rs█755| let concise =█*756| meet_failure_detail(\"IPv4-only\", \"meet probe timed out\", 4, 75, 75, clock, false);█757| assert_eq!(█758| concise, \"meet probe timed out\",█759| \"non-verbose surfaces exactly the last concrete error\"█...█761|█*762| let v = meet_failure_detail(\"IPv4-only\", \"meet probe timed out\", 4, 75, 75, clock, true);█763| assert!(v.contains(\"4 rendezvous attempt\"), \"attempt count: {v}\");█764| assert!(v.contains(\"75s\"), \"elapsed/deadline: {v}\");█*765| assert!(v.contains(\"bound families: IPv4-only\"), \"families (ties W1): {v}\");█766| assert!(v.contains(\"last error: meet probe timed out\"), \"last error kept: {v}\");█767| // REQ-JOIN-VERBOSE-CLOCK: the joiner's step, signed offset, and█768| // correction state all carried in the verbose block.█## spt-net/src/net/█### endpoint.rs█347| BindFamilies::V4Only => {█*348| eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")█349| }█350| BindFamilies::V6Only => {█*351| eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")█352| }█353| }█354| let builder = match scope {█...█464| (true, true) => \"IPv4+IPv6\",█*465| (true, false) => \"IPv4-only\",█466| (false, true) => \"IPv6-only\",█467| (false, false) => \"none\",█468| }█...█639| BindFamilies::V4Only,█*640| \"IPv6 dead -> IPv4-only\"█641| );█642| assert_eq!(█643| select_families(false, true, false, false).unwrap(),█...█656| BindFamilies::V4Only,█*657| \"SPT_DISABLE_IPV6 -> IPv4-only even though IPv6 probed healthy\"█658| );█659| assert_eq!(█660| select_families(true, true, true, false).unwrap(),\u000f█</out>█# Assistant ¶█_**Investigating nethost connect timeout causes**_█# Tool call ¶█//Reading production endpoint bind█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs\", selector=\"284-390,430-485\")█<out>█\u000e pub async fn bind(█...█relay: RelayPolicy,█discovery: LocalDiscovery,█) -> Result<NetEndpoint, NetError> {█Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await█}█/// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].█///█/// The pairing driver uses this to stand up a **dedicated pre-trust endpoint** bound█/// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) - the pre-trust█/// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`█/// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to█/// [`bind`](Self::bind).█// [impl->REQ-NET-1] [impl->REQ-NET-2]█pub async fn bind_with_alpns(█identity: &Identity,█relay: RelayPolicy,█discovery: LocalDiscovery,█alpns: Vec<Vec<u8>>,█) -> Result<NetEndpoint, NetError> {█Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await█}█/// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an█/// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the█[...5830ch elided...] Pv4-only\",█(false, true) => \"IPv6-only\",█(false, false) => \"none\",█}█}█/// Wait until the endpoint has registered with its relays - needed before the█/// [`addr`](Self::addr) ticket is dialable from off-LAN. Not required for a█/// direct/loopback dial where the peer already has a direct address.█pub async fn online(&self) {█self.inner.online().await;█}█/// Accept the next inbound connection (already ALPN-filtered to [`SPT_NET_ALPN`]).█/// `None` once the endpoint is closed.█pub async fn accept(&self) -> Option<Incoming> {█self.inner.accept().await█}█/// Gracefully close the endpoint: every held connection sends its QUIC█/// CLOSE frame so peers observe the disconnect promptly (a bare drop may\u000f█</out>█# Tool call ¶█//Reading network dial timeout path█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs\", selector=\"480-630,1040-1160\")█<out>█\u000estruct NetShared {█next_conn_id: AtomicU64,█conns: Mutex<HashMap<u64, ConnEntry>>,█next_stream_id: AtomicU64,█streams: Mutex<HashMap<u64, Arc<StreamEntry>>>,█ring_cap: usize,█/// The conn-liveness event log (D4c) - one per host, all conns interleaved.█presence: Mutex<PresenceLog>,█}█impl NetShared {█fn new() -> Self {█NetShared {█next_conn_id: AtomicU64::new(1),█conns: Mutex::new(HashMap::new()),█next_stream_id: AtomicU64::new(1),█streams: Mutex::new(HashMap::new()),█ring_cap: DEFAULT_STREAM_RING_CHUNKS,█presence: Mutex::new(PresenceLog::new(DEFAULT_STREAM_RING_CHUNKS)),█}█}█}█/// Register a live connection: mint its broker id and spawn its inbound-stream█/// acceptor. Must run inside the host's runtime context (the accept loop, or a█/// `block_on` future) - it spawns tasks.█/// The connection's OBSERVED remote address as opaque seed JSON (REQ-CONV-1):█/// the path address string, or `null` when id-only / path-less (nothing worth█/// seeding over discovery). Shared by [`register_conn`]'s presence write-back█/// and [`NetHost::conn_remote_addr_json`] so both [...9824ch elided...] ait;█if let Err(e) = outcome {█// Ordinary per-peer failure rides the presence stream - the pump█// backs THIS peer off and moves on; the round is never poisoned.█shared█.presence█.lock()█.unwrap()█.append_dial_failed(&remote_id_hex, e.to_string());█}█});█}█/// Snapshot the per-dial state (endpoint, shared table, identity, membership,█/// the opt-in roster exchange, our live address) into a `Send + 'static`█/// [`DialPlan`] both the blocking [`Self::dial`] and the spawned█/// [`Self::submit_dial`] connect through - the ONE connect+prove+register█/// path, so W1's bound and the seed-proof stay single-sourced.\u000f█</out>█# Tool call ¶█//Reading subnet status semantics█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\", selector=\"6700-6795,7100-7435\")█<out>█\u000efn cmd_subnet_create(name: String) -> i32 {█...█if let Some(out) = result.out {█print!(\"{out}\");█let _ = std::io::stdout().flush();█}█eprintln!(\"{}\", result.msg);█announce_sync_home(&adopted);█// Hold a fresh elevated console open (Windows UAC re-launch) so the joining█// material stays readable before the window closes; no-op otherwise.█pause_elevated_console_if_fresh();█result.code█}█/// One subnet's status-view row: membership shape only - never seeds, epochs,█/// or codes (M7 plan decision 5).█struct SubnetStatusRow {█name: String,█/// Paired nodes known for the subnet (this node included).█nodes: usize,█/// Endpoints visible in the subnet's registry snapshot.█endpoints: usize,█}█/// Build the status rows from the subnet store + registry snapshots + the█/// member roster. Pure over its inputs so the view is unit-tested hermetically.█///█/// Node membership is ROSTER-derived (self + roster members - the durable mesh█/// membership record, Mesh-D6), with registry-row nodes unioned in as█/// enrichment: a member node with zero advertised endpoints (fresh box, empty█/// owlery) is still a member, and an offline pee [...15646ch elided...] ut = String::new();█// [impl->REQ-CLI-JSON] Collect the settled rows per subnet so the machine█// view emits the same probe-settled liveness the human table renders.█let mut json_subnets: Vec<SubnetRowJson> = Vec::new();█for (sub_name, rows) in per_subnet {█let settled: Vec<(NodeRow, bool)> = rows█.into_iter()█.map(|r| {█let online = match r.liveness {█NodeLiveness::Online => true,█NodeLiveness::Offline => false,█NodeLiveness::Probe => {█let v = probed.get(cursor).copied().unwrap_or(false);█cursor += 1;█v█}█};█...█})█.collect();█...█}█...█}\u000f█</out>█# Tool call ¶█//Reading node probe transport█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/wansend.rs\", selector=\"560-630\")█<out>█\u000epub fn wan_shell_link_with(█...█) -> WanShellLinkOutcome {█...█let round_trip = || -> std::io::Result<spt_daemon::ShellLinkRequestOutcome> {█...█spt_daemon::request_shell_link(█brain,█conn.conn_id,█&address.id,█shell_ref,█action,█args,█op_id,█open_op,█)█};█match round_trip() {█Ok(spt_daemon::ShellLinkRequestOutcome::Ok(detail)) => {█WanShellLinkOutcome::Ok { node, detail }█}█Ok(spt_daemon::ShellLinkRequestOutcome::NoShell) => WanShellLinkOutcome::NoShell { node },█Ok(spt_daemon::ShellLinkRequestOutcome::NoReply) => WanShellLinkOutcome::NoReply { node },█Ok(spt_daemon::ShellLinkRequestOutcome::Failed(detail)) => {█WanShellLinkOutcome::RemoteFail { node, detail }█}█Err(e) => WanShellLinkOutcome::Failed(e.to_string()),█}█}█/// Subnet-scoped liveness probe for a node (M7 D2 / M8, REQ-SUBNET-1 +█/// REQ-SUBNET-5 - the hybrid liveness's expensive half, spent only on rows█/// gossip-recency could not settle): true iff the peer is reachable RIGHT NOW█/// **and still serving `subnet`**. The [...1530ch elided...]█/// are preferred for `@node` qualifiers (REQ-SUBNET-3 made them addressable);█/// a label shared between candidates falls back to the paste-able key prefix█/// - the same never-guess-between-twins rule resolution itself enforces.█// [impl->REQ-INST-10]█// [impl->REQ-SUBNET-3]█pub fn render_refusal(█id: &str,█why: &Ambiguity,█regs: &BTreeMap<String, SubnetRegistry>,█) -> String {█match why {█Ambiguity::AcrossNodes(nodes) => {█let targets: Vec<String> = nodes█.iter()█.map(|n| format!(\"{id}@{}\", node_qualifier(n, nodes, regs)))█.collect();█format!(█\"several nodes hold '{id}' - pick one: {}\",█...█)█}█...█}█}█[Showing lines 559-633 of 1429. Use :634 to continue]\u000f█</out>█# Tool call ¶█//Finding proof error logs█grep(pattern=\"SEED|PROOF|MEMBERSHIP|RESEED|UNTRUSTED|AUTH|shared subnet|no shared|mismatch|denied\", path=\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log.1█7099|RCA_BOUNDED_WAIT_BEGIN:pid=31192 child_pid=48352 label=\"echo_commune\" elapsed_ms=0 outcome=waiting█*7100|UPDATE_REJECTED:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:artifact digest mismatch: signed 1601ecc7e88d96c5114e3ad25ea42df5c31bf1aba55d8b054b5ed9fa9ae03f5a, actual 4f5c61e8442641e4becd0c4d744b37771a2dc350dca6c84b2fc95c7e9eedf9d2█7101|RCA_CONN_OPEN: conn_id=29 elapsed_us=29727600█7102|RCA_CONN_EOF: conn_id=29 error_kind=UnexpectedEof elapsed_us=29727690█7103|RCA_CONN_CLOSE: conn_id=29 elapsed_us=29727715\u000f█</out>█# Assistant ¶█_**Analyzing node array emptiness cause**█**Correlating log timestamps with failures**█**Inspecting registry remote node data**█**Investigating remote row eviction timing**_█# Tool call ¶█//Finding registry eviction events█grep(pattern=\"(?i)(REGISTRY.*(EVICT|EXPIRE|STALE|OFFLINE|REMOVE|SWEEP)|EVICT.*REGISTRY|ghost row|heard|visibility)\", path=\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log.1█420|PAIR_MEET_UP:BS-Resources step=59454640 id=2ab24df451cb809c18e38aa7cbfb6823b850a36bd1eaa49867d0a59d6304bc2a addr=EndpointAddr { id: PublicKey(2ab24df451cb809c18e38aa7cbfb6823b850a36bd1eaa49867d0a59d6304bc2a), addrs: {Ip(100.68.35.65:49636), Ip(192.168.1.81:49636)} }█*421|REGISTRY_EVICT:BS-Resources: 2 row(s) from silent node(s)█422|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█423|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█424|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█...█880|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█*881|REGISTRY_EVICT:BS-Resources: 2 row(s) from silent node(s)█882|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█883|ENDPOINT_INJECT:flynn (572 bytes -> translation binary)█884|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█...█3307|PUMP_PEER_FAIL:aea099f8f77 [...508ch elided...] bound (peer unresponsive)█*4290|REGISTRY_EVICT_OFFLINE:BS-Resources: 1 aged-offline row(s)█4291|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█4292|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█4293|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█...█4808|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█*4809|REGISTRY_EVICT:BS-Resources: 1 row(s) from silent node(s)█4810|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█4811|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█4812|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\u000f█</out>█# Tool call ¶█//Finding current local instances█grep(pattern=\"\\\"node\\\"\\\\s*:\\\\s*\\\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\\\"\", path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry\", selector=null, case=true, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/identity/registry/█## BIGNET.json█4| {█*5| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█6| \"status\": \"Suspended\",█7| \"epoch\": 630173,█8| \"last_active_ms\": 1783630087661,█...█20| {█*21| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█22| \"status\": \"Suspended\",█23| \"epoch\": 630175,█24| \"last_active_ms\": 1783982275183,█...█36| {█*37| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█38| \"status\": \"Active\",█39| \"epoch\": 630177,█40| \"last_active_ms\": 1784069155223,█...█54| {█*55| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█56| \"status\": \"Suspended\",█57| \"epoch\": 630179,█58| \"node_label\": \"HFENDULEAM\",█...█69| {█*70| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█71| \"status\": \"Suspended\",█72| \"epoch\": 630181,█73| \"last_active_ms\": 1783991690185,█...█86| {█*87| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b6 [...6454ch elided...] c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█154| \"status\": \"Suspended\",█155| \"epoch\": 630190,█156| \"last_active_ms\": 1783992010212,█...█169| {█*170| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█171| \"status\": \"Suspended\",█172| \"epoch\": 630192,█173| \"last_active_ms\": 1783747106543,█...█185| {█*186| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█187| \"status\": \"Suspended\",█188| \"epoch\": 630194,█189| \"node_label\": \"HFENDULEAM\",█...█198| {█*199| \"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█200| \"status\": \"Active\",█201| \"epoch\": 630196,█202| \"node_label\": \"HFENDULEAM\",\u000f█</out>█# Tool call ¶█//Locating eviction cadence█grep(pattern=\"REGISTRY.*PERIOD|GHOST|EVICT|stale_after|OFFLINE_GRACE|lease\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/registry.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt-net/src/net/█### registry.rs█7|//! than one machine); picking the right one is the resolution policy's job (D3c) - this█*8|//! module owns the **data model + the merge lease**, not resolution.█9|//!█*10|//! ## The epoch lease (#8)█11|//!█12|//! Registry updates arrive out of order across a partition or under clock skew. A█13|//! lagging node could re-announce a stale `Active` after the endpoint has actually gone█...█58| /// resumed-on-wake. Still addressable (`spt wake ling@desktop` must route) -█*59| /// only `Offline` is unroutable. Additive variant on a pre-release fleet;█60| /// the NDJSON decode posture (unknown-kind skip) is the registry record's█61| /// forward-compat story.█62| // [impl->REQ-INST-3]█...█82| /// endpoint can serve. **Not a separate registry** - a field on the█*83| /// instance row, riding the existing epoch lease + `RegistryUpdate`█84| /// replication (a blurb update is ordered like any instance update);█85| /// the \"subnet resource registry\" is a [projection](resource_projection)█86| /// of these rows. Additive serde-default: absent = no blurb, and a█...█92| /// advertisement scan. ** [...18774ch elided...] M8 decision 19): the status query reports█136| // this as the last typed outcome.█...█139| // REQ-UPD-4: gated on user confirmation by default - the staged█*140| // release surfaces as a consent notif (D8's producer); apply█141| // rides the existing self-update machinery once confirmed.█142| // Full-auto writes nothing.█143| let decision = decide(self.full_auto_update, most_recently_active(&self.owlery));█...█159| // collide (the rig presence-rung UNIQUE failure).█*160| // [impl->REQ-HAZARD-REGISTRY-EPOCH-LEASE]█161| let produced = self.registry.with_epoch(|ep| {█162| produce_consent_notif(█163| &decision,\u000f█</out>█# Tool call ¶█//Reading daemon timing defaults█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/config.rs\", selector=\"1-220\")█<out>█\u000e//! Durable daemon configuration (B3) - the configurable pulse period that█//! replaces the interim 5s constant.█//!█//! In the no-daemon interim model the pulse cadence was a hard-coded█//! `spt_live::pulse::DEFAULT_PULSE_PERIOD` (5s). Consolidation (REQ-DAEMON-1)█//! folds the pulse loop into the brain as a *scheduled* in-process loop whose█//! period is **durable and configurable**, sourced from a small JSON file under█//! the spt home (`<spt_home>/daemon.json`) and falling back to the default when█//! absent. Kept deliberately tiny - one struct, JSON via the crate's existing█//! `serde_json` dep (no new TOML edge) - so the brain's loop reads its cadence█//! from config, never a constant.█// [impl->REQ-DAEMON-1]█use std::path::{Path, PathBuf};█use std::time::Duration;█use serde::{Deserialize, Serialize};█/// The interim default pulse period carried forward as the config default. The█/// daemon now treats this as a *fallback*, not a constant: `daemon.json` may█/// override it per machine.█pub const DEFAULT_PULSE_PERIOD: Duration = Duration::from_secs(5);█/// Default drop-file precedence protection window (epoch-ms), mirroring the█/// interim `spt_live` guard. Surfaced here so [...10161ch elided...] d: DEFAULT_SYNC_PULL_PERIOD,█update_check_period: DEFAULT_UPDATE_CHECK_PERIOD,█auto_suspend_after_ms: None, // opt-in, default OFF (REQ-INST-3)█resources_blurb: None, // endpoints author their own (REQ-INST-14)█detached_subnets: Vec::new(), // every held subnet starts attached (REQ-SUBNET-5)█worker_reap_ttl_secs: spt_store::worker_reap::DEFAULT_REAP_TTL_SECS, // 24h (W-3)█startup_endpoints: Vec::new(), // nothing auto-starts by default (REQ-ENDPOINT-AUTOSTART)█}█}█}█impl DaemonConfig {█/// The canonical config path: `<spt_home>/daemon.json`.█pub fn default_path() -> PathBuf {█spt_store::perch::spt_home().join(\"daemon.json\")█}█...█}█[Showing lines 1-223 of 642. Use :224 to continue]\u000f█</out>█# Tool call ¶█//Locating installed SPT configs█grep(pattern=\"registry_pump_period|relay|SPT_RELAY|SPT_DISABLE|quic_op_timeout|pump_period\", path=\"C:/Users/decid/AppData/Local/spt-core; C:/Users/decid/Documents/projects/config.toml\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/█## daemon.json█5| \"full_auto_update\": false,█*6| \"relay\": \"n0\",█7| \"peer_pump\": true,█*8| \"registry_pump_period_ms\": 30000,█9| \"registry_evict_after_ms\": 300000,█*10| \"notif_pump_period_ms\": 15000,█11| \"sync_pull_period_ms\": 60000,█12| \"update_check_period_ms\": 3600000,█13| \"detached_subnets\": [],█## adapters/_github/█### BigscreenVR-omp-spt/█#### manifest.toml█81|# \"replies arrive automatically; never arm a Monitor\" wording was spt-hosted-only; for a HARNESS-hosted█*82|# live agent the agent's OWN `spt api listen` relay IS the delivery pipe. messaging-perch.md now█*83|# distinguishes the hosting modes and says \"do not arm an EXTRA Monitor\" (preserving the primary relay).█84|# 0.10.0 (2026-07-01): the DIGEST-FETCHER cut - consumes spt-core v0.19.0 (counter 38, #17). [digest]█85|# flips to strategy=\"fetcher\": the extractor now LOCATES + reads + emits itself (spt-core runs it█86|# bounded, no pre-read, no `source` pre-resolve), fed only harness-NEUTRAL fills ({session_id} + the█...█965|# ([session.psyche_init] in base), so going live is just the COMMAND - bare `spt api listen <id>` under█*966|# a Monitor relay. The live l [...32482ch elided...] y. Checked `spt --version` + `spt endpoint list`: this node (HFENDULEAM) already on 0.30.6. Notice ori...\",\"ts\":\"2026-07-10T15:53:22Z\"}█4|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session idle, no active task. Two events handled: 1. spt-update notice for v0.30.6 checked - this node (HFENDULEAM) already on 0.30.6. Notice source = remote node DESKTOP-BNPVDJE's o...\",\"ts\":\"2026-07-10T15:54:39Z\"}█5|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session on node HFENDULEAM, agent scratch-c, cwd claude-spt/. Checked `spt --version` (0.30.6, this node current) + `spt endpoint list` on receipt of spt-update notify - notice origi...\",\"ts\":\"2026-07-10T15:55:35Z\"}█6|{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-10T16:08:42Z\"}\u000f█</out>█# Assistant ¶█_**Tracing cross-node update failure timing**█**Searching release notes for 0.31 timing**_█# Tool call ¶█//Finding 0.31 rollout timing█grep(pattern=\"0\\\\.31\\\\.0|v0\\\\.31|update.*31\", path=\"C:/Users/decid/AppData/Local/spt-core/owlery\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/owlery/█## deployah/█### digest.log█202|{\"context_kind\":\"echo_mirror\",\"body\":\"<live-context> deployah = spt-core release driver. Lane: doyle GATES, todlando BUILDS, deployah PUBLISHES. GROUND before assert (self-host runner load = 0 CI runs; ssh uptime verify). NEVER inline msg...\",\"ts\":\"2026-07-10T11:30:20Z\"}█*203|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 counter 57 (update-wedge ROUND-4) - PR #76 HELD, ping-pong RESOLVED with doyle. R4 = Option-C durable fix (bounded broker writes, conn.rs BrokerConn), REQ-HAZARD-SHAREDSEND-N...\",\"ts\":\"2026-07-10T11:31:55Z\"}█204|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 counter 57 update-wedge ROUND-4. PR #76 HELD. Root cause corrected by doyle (not toolchain drift): CI incremental-cache suppressed clippy lint on conn.rs across earlier Linux...\",\"ts\":\"2026-07-10T11:33:05Z\"}█205|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.6 (counter 57) re-cut in flight, PR #77 opened on branch `release/v0.30.6` (commit 0a972b0), targeting `main` in worktree `C:\\\\Users\\\\decid\\\\Documents\\\\projects\\\\spt-core\\\\.worktrees...\",\"ts\":\"2026-07-10T11:46:29Z\"}█206|{\"context_ki [...23493ch elided...] ho_mirror\",\"body\":\"<project-context> v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL - DONE, gate SHA @fb499db pushed to origin/uwedge2-resume-viewer, branch off origin/main @3136702. Fix: `resume_sessions` (brain.rs) re-atta...\",\"ts\":\"2026-07-09T21:37:12Z\"}█191|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL (update-wedge 2: resume-steal) - todlando build work COMPLETE. Root cause: `resume_sessions` silently STOLE all local by:None controll...\",\"ts\":\"2026-07-09T21:39:12Z\"}█192|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> v0.30.4 REQ-BRAIN-RESUME-NO-CONTROL-STEAL: todlando's build DONE, handed to gate chain. - Bug: `resume_sessions` silently stole all local `by:None` controllers of spt-hosted PTYs it ...\",\"ts\":\"2026-07-09T21:40:12Z\"}\u000f█</out>█# Tool call ¶█//Finding last remote deliveries█grep(pattern=\"(?i)(SENT\\\\(WAN\\\\)|WAN_|remote node|update notice|relay path|node DESKTOP|ENLYZEAM|HFENDULEAM)\", path=\"C:/Users/decid/AppData/Local/spt-core/owlery\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/owlery/█## chert/█### digest.log█4|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session opened on spt-core (branch main), agent id \\\"chert\\\". Session start only - no task work performed, no tool calls made, no messages exchanged. Git status at session start showed...\",\"ts\":\"2026-07-09T08:30:47Z\"}█*5|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session ended before any task work began. Session start only: agent \\\"chert\\\" launched in spt-core repo (branch main), Windows/HFENDULEAM host, caveman-mode hook active (full level). U...\",\"ts\":\"2026-07-09T08:33:51Z\"}█6|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Session start only - no task work performed. Repo state at session start: modified files CONTEXT.md, crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump/mod.rs,sync.rs}; untracke...\",\"ts\":\"2026-07-09T08:34:14Z\"}█7|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> No task work done this session. Session opened on branch `main` with pre-existing uncommitted changes: modified `CONTEXT.md`, `crates/spt-daemon/src/{broker.rs,lib.rs,nethost.rs,pump...\",\"ts\":\"2026-07-09T08:34:53Z\"}█8|{\"context_kind\":\"echo_mirro [...48533ch elided...] for user Reavo) relaying bug reports + build request to omp-pilot re: omp-spt tool. Bugs relayed to omp-pilot (both ...\",\"ts\":\"2026-07-10T04:19:37Z\"}█106|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia relaying omp-spt bug reports (Reavo -> omp-pilot) and requesting build/release. Status: both bugs relayed to omp-pilot; omp-pilot confirmed live/responsive; lia relayed Reav...\",\"ts\":\"2026-07-10T04:20:33Z\"}█107|{\"context_kind\":\"echo_mirror\",\"body\":\"<project-context> Task: lia forwarded two bug reports to omp-pilot (github-com-bigscreenvr-athenaeum project) - (1) new-endpoint path must surface harness PTY, (2) manifest `[update]` command must use...\",\"ts\":\"2026-07-10T04:30:12Z\"}█[Showing lines 1-252 of 409 (49.8KB limit). Use :253 to continue. Some lines truncated to 512 chars]\u000f█</out>█# Tool call ¶█//Finding update generation anchors█grep(pattern=\"BRAIN_PROMOTED|generation 1|start-reason update|UPDATE_APPLIED|APPLY|0\\\\.31\\\\.0\", path=\"C:/Users/decid/AppData/Local/spt-core/logs; C:/Users/decid/AppData/Local/spt-core/rca-*\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log█*1|=== spt brain stderr - generation 1 - pid 37736 ===█*2|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)█3|BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]█4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) - dispatcher + peer pump started█5|PUMP_IPC_READER: spawned█## daemon.stderr.log.1█*1|=== spt brain stderr - generation 1 - pid 43932 ===█*2|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 43932, generation 1, start-reason update)█3|BRAIN_RESUMED: re-attached 4 session(s): [1, 2, 4, 3]█4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) - dispatcher + peer pump started█5|PUMP_IPC_READER: spawned█...█3842|BRAIN_UPDATE_RESTART: planned restart - cycling brain onto the swapped binary█*3843|BRAIN_RESTART: planned update respawn (generation 1)█*3844|=== spt brain stderr - generation 1 - pid 11052 ===█*3845|BRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (p [...2306ch elided...] \" elapsed_ms=0 outcome=waiting█8641|RCA_BOUNDED_WAIT_END:pid=82604 child_pid=68432 label=\"arbitrary_command\" elapsed_ms=141 outcome=exited status_code=Some(0)█...█16299|DAEMON_RESTART_RESUME:deployah: resuming session a54257af-8b81-456c-ba38-85739f7f10e9 under claude-spt:ccs (pid 12480) - online at bind█*16300|BRAIN_PROMOTED: candidate v57 signalled ready (generation 0) - swap accepted█16301|DAEMON_RESTART_RESUME:doyle: resuming session 6cf22920-8f60-4a09-9b8d-7d46280f9a8c under claude-spt (pid 39868) - online at bind█16302|DAEMON_RESTART_RESUME:flynn: resuming session f4c1fc0e-de8e-4df0-8416-f01761a944cb under claude-spt:ccs (pid 74392) - online at bind█16303|DAEMON_RESTART_RESUME:lia: resuming session f4df7cba-aae5-46c6-aa4f-50d2fb874894 under claude-spt (pid 75756) - online at bind\u000f█</out>█# Tool call ¶█//Reading current daemon config█read(path=\"C:/Users/decid/AppData/Local/spt-core/daemon.json\", selector=\"raw\")█<out>█\u000e{█\"pulse_period_ms\": 5000,█\"protection_window_ms\": 2000,█\"crash_grace_ms\": 2000,█\"full_auto_update\": false,█\"relay\": \"n0\",█\"peer_pump\": true,█\"registry_pump_period_ms\": 30000,█\"registry_evict_after_ms\": 300000,█\"notif_pump_period_ms\": 15000,█\"sync_pull_period_ms\": 60000,█\"update_check_period_ms\": 3600000,█\"detached_subnets\": [],█\"worker_reap_ttl_secs\": 86400,█\"startup_endpoints\": [█{█\"id\": \"mobile-gw\",█\"adapter\": \"mobile\",█\"cwd\": \"C:\\\\Users\\\\decid\\\\Documents\\\\projects\"█}█]█}\u000f█</out>█# Tool call ¶█//Reading current brain readiness█read(path=\"C:/Users/decid/AppData/Local/spt-core/brain.ready\", selector=\"raw\")█<out>█\u000e{\"pid\":27776,\"generation\":0,\"exe_hash\":\"4d57cf941d45d4504a0e4ae8c543d512bbd428fa23cdc297373413a347f62b5d\"}\u000f█</out>█# Tool call ¶█//Listing update state files█glob(path=\"C:/Users/decid/AppData/Local/spt-core/**/*update*; C:/Users/decid/AppData/Local/spt-core/**/*release*; C:/Users/decid/AppData/Local/spt-core/**/*version*\", hidden=true, gitignore=false, limit=100)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/█## releases/█release.json█## rca-active-20260709-222659/releases.before/█release.json█## rca-capture-20260709-215646/releases.before/█release.json█## adapters/_github/█### BigscreenVR-omp-spt/strings/skills/█version.md█### SaberMage-spt-mobile/state/history/█spt-update.jsonl█### SaberMage-claude-spt/strings/skills/█version.md█### SaberMage-spt-claude-code/strings/skills/█version.md█## tracked/.seed.git/hooks/█update.sample█post-update.sample█## context/.seed.git/hooks/█update.sample█post-update.sample\u000f█</out>█# Assistant ¶█_**Inspecting old digest entries**_█# Tool call ¶█//Reading prior transport RCA█read(path=\"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/digest.log\", selector=\"742-752\")█<out>█\u000e{\"context_kind\":\"echo_mirror\",\"body\":\"LIFECYCLE-TRUTH complete. v0.29.0 (counter 49) SHIPPED + field-verified, box live. **Status:** - All 6 waves gated+blessed, released @d0c1cf1, CI gate-hold fixed @7190730. - W1 field-accept swap windo...\",\"ts\":\"2026-07-08T04:38:05Z\"}█{\"context_kind\":\"echo_mirror\",\"body\":\"# Diagnose task: librarian unreachable via `spt send` (PR #57, lifecycle-truth) **Status:** root cause found, converged, no fix applied yet. ## Findings - Repro: first `spt send` -> `WAN_FAIL:librarian...\",\"ts\":\"2026-07-08T05:29:05Z\"}█{\"context_kind\":\"echo_mirror\",\"body\":\"# Delta: librarian WAN delivery stall (2026-07-08) **Task:** debug - remote node (librarian, on desktop DESKTOP-VHCFIBH) shows \\\"peer unresponsive\\\" for message delivery, on branch `lifecycle-truth`. **...\",\"ts\":\"2026-07-08T05:42:42Z\"}█{\"context_kind\":\"echo_mirror\",\"body\":\"# Context delta - doyle @ HFENDULEAM, subnet BS-Resources delivery break ## Task Diagnose HFENDULEAM->DESKTOP delivery failure in BS-Resources subnet (2-node). ## Root found Asymmetric reachability, no...\",\"ts\":\"2026-07-08T05:49:32Z\"}█{\"context_kind\":\"echo_mirror\",\"body\":\"## Task: HFENDULEAM<->DESKTOP subnet reachability bug (BS-Resources subnet) **Stat [...1954ch elided...] o run rebuild commands. **Root cause found:** Operator e...\",\"ts\":\"2026-07-08T07:23:16Z\"}█{\"context_kind\":\"echo_mirror\",\"body\":\"## Session delta - doyle @ HFENDULEAM, PR #57 (lifecycle-truth) **Task:** answer perri's question re: claude-spt digest fetcher (strategy=fetcher) invocation model. **Done:** - Grepped `digest.rs` + `...\",\"ts\":\"2026-07-08T09:27:31Z\"}█{\"context_kind\":\"echo_mirror\",\"body\":\"## Session Delta - doyle @ HFENDULEAM (spt-core/, lifecycle-truth branch) **Task:** Answered perri's question (adapter builder, spt-mobile/claude-spt digest fetcher, strategy=fetcher) about spt-core's...\",\"ts\":\"2026-07-08T09:29:33Z\"}█{\"context_kind\":\"psyche_download\",\"body\":\"downloaded Psyche context (role/live/project)\",\"ts\":\"2026-07-08T09:46:34Z\"}█[Showing lines 741-755 of 2926. Use :756 to continue]\u000f█</out>█# Assistant ¶█_**Searching main source docs for transport root**_█# Tool call ¶█//Finding historical transport RCA█grep(pattern=\"(?i)(HFENDULEAM.*(iroh|unreachable|transport)|rendezvous transport dead|Asymmetric reachability|NO_SEED_HOLDER|spt-core inbound UDP)\", path=\"C:/Users/decid/Documents/projects/spt-core; C:/Users/decid/AppData/Local/spt-core/owlery/doyle\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000eGrep timed out after 30s; narrow paths or pattern, or scope with `glob` first\u000f█</out>█# Tool call ¶█//Locating Doyle RCA memory█glob(path=\"C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*RCA*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*network*; C:/Users/decid/AppData/Local/spt-core/owlery/doyle/**/*transport*\", hidden=true, gitignore=false, limit=100)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/owlery/doyle/nested/doyle-psyche/█UPDATE-WEDGE-2-SME-RCA-ROUND3.md█## docs/█UPDATE-WEDGE-2-RCA.md\u000f█</out>█# Tool call ¶█//Finding inbound firewall hint█grep(pattern=\"fn inbound_block_hint|inbound.*UDP|firewall rule|Windows.*Firewall|blocked inbound\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt/src/█### cli.rs█6852|/// render half): a fresh user-scope install never triggers the first-bind█*6853|/// firewall prompt, so inbound UDP (mDNS + QUIC meet/pairing) drops with no█6854|/// rendered cause - the M7 NO_SEED_HOLDER dead-end. When the installer's█6855|/// named rule is absent, say so with the exact fix; when the probe itself█6856|/// fails or times out, say nothing (never alarm off a broken probe).█*6857|/// Non-Windows: no firewall story to tell.█6858|// [impl->REQ-INSTALL-7]█*6859|fn inbound_block_hint() -> Option<String> {█6860| #[cfg(windows)]█6861| {█6862| if windows_inbound_rule_present() == Some(false) {█...█6866| return Some(format!(█*6867| \"warning: no Windows Firewall inbound rule for spt - joins/pairing toward \\█6868| this node may be silently blocked (the NO_SEED_HOLDER shape). Run the \\█6869| installer elevated, or add the rule:\\n netsh advfirewall firewall add \\█*6870| rule name=\\\"spt-core inbound UDP\\\" dir=in action=allow protocol=UDP \\█6871| program=\\\"{exe}\\\"\\n\"█6872| ));█6873| }█...█6881|█*688 [...41ch elided...] nd-UDP rule exists, via a BOUNDED█6883|/// `netsh` probe (KNOWN-HAZARDS 5.3: every subprocess has a timeout - a█6884|/// wedged netsh costs 3s, never a hang). `None` = probe failed/timed out█6885|/// (the caller stays silent rather than alarm on a broken probe).█...█6896| \"rule\",█*6897| \"name=spt-core inbound UDP\",█6898| ])█6899| .output();█6900| let _ = tx.send(out);█## spt-daemon/src/█### nethost.rs█95| /// [`BindScope::Loopback`] in hermetic tests (no real interface touched,█*96| /// no per-test-binary Windows firewall prompt).█97| pub scope: BindScope,█98| /// Live source of this node's subnet credentials for the connect-time█99| /// seed-proof (Mesh-D2, REQ-MESH-1). `Some` enables the mutual proof at\u000f█</out>█# Tool call ¶█//Finding Windows install rules█grep(pattern=\"firewall|New-NetFirewallRule|UDP|spt-core inbound\", path=\"C:/Users/decid/Documents/projects/spt-core\", selector=null, case=false, gitignore=true, skip=null)█<out>█\u000e# spt-core/█## CHANGELOG.md█919|- **Automatic re-pair cleanup.** If you reinstall or regenerate a node's identity and pair it again from the same machine under the same name, its old, now-dead identity is removed automatically during pairing - no manual prune needed.█*920|- **Firewall setup on Windows.** The installer (when run elevated) now adds the inbound network rule `spt` needs so other nodes can reach you. If it wasn't added, `spt subnet status` and the \"coming online\" banner now tell you the rule is missing and print the exact command to add it.█921|- **Starts on boot.** The installer now registers `spt` to start automatically - at login on Windows, and as a per-user service on Linux - so your node is reachable after a reboot without running a command first.█922|█923|### Changed█## CI-SELFHOST-PLAN.md█64| runner + target).█*65|- [ ] Decide whether the netstream/netbroker UDP-binding tests need a firewall█66| allowance on gravity (loopback-only since BindScope::Loopback - no).█## CONTEXT.md█518|█*519|First network socket bind triggers an OS firewall prompt (Windows Defender, some Linux); unavoidable without a signed binary + pre-declared exception. Framed in [...13225ch elided...] iled write only costs a future reply its exemption (it█129|/// will classify unsolicited - the conservative direction).█130|// [impl->REQ-SEC-1]█...█193|█*194| // [unit->REQ-SEC-1] the stateful-firewall exemption: a Reply classifies█195| // past a whitelist that would refuse the same node unsolicited - and█196| // classification itself turns on the recorded outbound within the window.█197| #[test]█### linkhost.rs█11|//!█*12|//! ## Trust class: remote-drive (ungated beyond the firewall)█13|//!█14|//! Same posture as remote rest/attach: the [`access_check`] whitelist on the█15|//! **handshake-proven** origin node (ADR-0009; REQ-HAZARD-WAN-ORIGIN-AUTH -█Showing files 1-20 of 44. Use skip=20 for the next page, or narrow paths/pattern.█[Some lines truncated to 512 chars]\u000f█</out>█# Assistant ¶█_**Assessing IPv4-only connection failures**█**Distinguishing transport and seed-proof failures**_█# Tool call ¶█//Requesting code-path discriminator█irc(op=\"send\", to=\"IsolationCodeRCA\", message=\"Live evidence now points symmetric all-peer submit-dial 10s timeouts while meet listeners rotate/rebind normally, clocks ruled out. Can code/log shape distinguish transport handshake blackhole vs seed-proof stream blackhole? Any v0.31 change around accept loop/identity/address? Please send strongest mechanism and falsifiable signature.\", replyTo=null, await=false, from=null, timeoutMs=null, peek=null)█<out>█\u000eDelivered to 1 peer(s):█- IsolationCodeRCA: injected\u000f█</out>█# Assistant ¶█_**Assessing network state from artifacts**█**Investigating roster last_seen discrepancies**_█# Tool call ¶█//Tracing roster last seen█grep(pattern=\"last_seen|merge_entry|stamp.*roster|RosterEntry\", path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs; C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs\", selector=null, case=true, gitignore=true, skip=null)█<out>█\u000e# spt-core/crates/█## spt-daemon/src/█### seedproofx.rs█48|use spt_store::peeraddrs::PeerAddrStore;█*49|use spt_store::roster::{RosterEntry, RosterStore, Tombstone};█50|use spt_store::subnet::SubnetStore;█51|█52|/// One subnet's membership credential as the proof needs it: the human name█...█565|pub type RosterProvider =█*566| Arc<dyn Fn(&HashSet<String>, &serde_json::Value) -> (Vec<RosterEntry>, Vec<Tombstone>) + Send + Sync>;█567|█568|/// Merges a received roster slice into the durable store and reconciles the dial█569|/// cache (gap-fill). Receives the peer's advertised entries + tombstones.█*570|pub type RosterSink = Arc<dyn Fn(Vec<RosterEntry>, Vec<Tombstone>) + Send + Sync>;█571|█572|/// Looks up a peer's [`MemberStatus`] for a subnet (Mesh-D7 - the re-seed█573|/// grace gate). Production: a `RosterStore` membership/tombstone lookup.█...█751|/// ceremony subnet). Self-contained positional codec; the field set mirrors█*752|/// `RosterEntry` and is kept in sync by `roster_frame_round_trips`. Counts are█753|/// never pre-allocated on decode - a hostile count exhausts the buffer on the█754|/// first short field, not a huge allocation.█755|// [impl->REQ-MESH-2]█[...6264ch elided...] pubkey_hex: pk.to_string(),█338| subnet: subnet.to_string(),█339| label: format!(\"host-{pk}\"),█...█341| address: None,█*342| last_seen: \"100\".to_string(),█343| lease_epoch: lease,█344| }█345| }█...█350| #[test]█*351| fn merge_entry_is_strictly_greater_lease_wins() {█352| let mut r = RosterStore::default();█*353| assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 5)), MergeOutcome::Inserted);█354|█355| // Lower lease loses (Stale) - the stored lease stays at 5.█*356| assert_eq!(r.merge_entry(entry(\"home\", \"aa\", 3)), MergeOutcome::Stale);█357| assert_eq!(r.find(\"home\", \"aa\").unwrap().lease_epoch, 5);█358|█359| // Equal lease is Stale too (strictly-greater, not >=).\u000f█</out>█# Tool call ¶█//Reading roster timestamps█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/roster.rs\", selector=\"60-180,250-390\")█<out>█\u000eimpl std::fmt::Display for RosterError {█fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {█match self {█RosterError::Io(e) => write!(f, \"roster store io: {e}\"),█}█}█}█impl std::error::Error for RosterError {}█/// The lease decision when merging an entry (mirrors the `spt-net` registry's█/// `MergeOutcome` naming - strictly-greater wins).█#[derive(Debug, Clone, Copy, PartialEq, Eq)]█pub enum MergeOutcome {█/// First entry for this `(subnet, pubkey)` - inserted.█Inserted,█/// A strictly-newer `lease_epoch` for an existing member - replaced.█Updated,█/// Equal/older `lease_epoch` (or a tombstoned-but-still-merged fact) - the█/// incoming entry did not advance the lease; nothing changed.█Stale,█}█/// One member of a subnet's roster. Authored by the member itself; merged into█/// every other member's roster strictly-greater-`lease_epoch`-wins.█#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]█pub struct RosterEntry {█/// The member's Ed25519 node pubkey, lowercase hex (the iroh NodeId). The█/// merge key within a subnet, and what the mesh dials/seed-proofs.█pub pubkey_hex: Stri [...8587ch elided...] rge is commutative (A∪B == B∪A on█// the winning-lease facts) and idempotent (merging twice == once). The█// grow-set CRDT property the mesh relies on.█#[test]█fn merge_is_commutative_and_idempotent() {█let mut a = RosterStore::default();█a.merge_entry(entry(\"home\", \"aa\", 2));█a.merge_entry(entry(\"home\", \"bb\", 1));█let mut b = RosterStore::default();█b.merge_entry(entry(\"home\", \"bb\", 9)); // bb newer on b█b.merge_entry(entry(\"home\", \"cc\", 1));█let mut ab = a.clone();█ab.merge(&b);█let mut ba = b.clone();█ba.merge(&a);█// Same membership set and same winning leases regardless of order.█for pk in [\"aa\", \"bb\", \"cc\"] {█assert_eq!(█...█);█}█...█}█...█}\u000f█</out>█# Tool call ¶█//Reading roster propagation sink█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs\", selector=\"885-950\")█<out>█\u000e█/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,█/// re-read per connect (rare; honors a concurrent pairing/revoke without a█/// restart). Wired onto the live host by the daemon after `NetHost::start`. The█/// provider stamps the node's live address onto its self-entry so peers learn█/// how to reach it; the sink merges the peer's slice and gap-fills the dial█/// cache. Used by the real daemon only - tests inject their own exchange.█// [impl->REQ-MESH-2]█pub fn production_roster_exchange() -> RosterExchange {█let self_hex = spt_store::nodeid::load_or_create()█.map(|id| id.public_key().to_hex())█.unwrap_or_default();█let provider_hex = self_hex.clone();█RosterExchange {█provider: Arc::new(move |proven: &HashSet<String>, self_addr: &serde_json::Value| {█let mut store = RosterStore::load();█let label = spt_store::hostlabel::os_hostname().unwrap_or_default();█let machine_id = crate::machineid::machine_id_hash().unwrap_or_default();█// Peek, never consume: roster propagation must not disturb the█// registry lease counter (the D3 rule).█let lease = [...1415ch elided...] es the grace -█// tombstoned => revoked => denied; listed => present; otherwise absent.█// Re-read per call so a just-propagated tombstone takes effect at once.█member_status: Arc::new(move |subnet: &str, peer_hex: &str| {█let store = RosterStore::load();█if store.is_tombstoned(subnet, peer_hex) {█MemberStatus::Tombstoned█} else if store.find(subnet, peer_hex).is_some() {█MemberStatus::Present█} else {█MemberStatus::Absent█}█}),█// Mesh-D7 (REQ-MESH-4): adopt a pushed seed into the live subnet store -█// a strictly-newer epoch only (idempotent, never a downgrade). The 20-byte█...█}█}█[Showing lines 884-953 of 1160. Use :954 to continue]\u000f█</out>█# Tool call ¶█//Reading registry heard eviction█read(path=\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs\", selector=\"250-340,560-650\")█<out>█\u000e pub fn apply_feed_flips(█...█) -> (Vec<RegistryApplyVerdict>, Vec<String>) {█...█let verdicts = updates█...█.map(|u| {█...█// [impl->REQ-MESH-5]█if !policy.roster.is_member(&u.subnet, origin_node) {█return RegistryApplyVerdict::UntrustedOrigin;█}█admitted_any = true;█let reg = regs.entry(u.subnet.clone()).or_default();█let prev = reg█.instances(&u.endpoint_id)█.iter()█.find(|i| i.node == u.instance.node)█.map(|i| i.status);█// The epoch lease (4.8) decides; an own-row echo from a peer█// is dropped Stale by construction (our epoch is newer or█// equal - never authored elsewhere).█let outcome = reg.merge_instance(&u.endpoint_id, u.instance.clone());█if outcome == MergeOutcome::Updated█&& u.instance.status == Status::Active█&& prev != Some(Status::Active)█&& u.instance.node != self.node_hex█&& !flips.contains(&u.en [...6467ch elided...] td::time::Duration, now_ms: u64) -> usize {█let ttl_ms = ttl.as_millis() as u64;█let heard = self.heard.lock().unwrap();█let silent = |node: &str| {█node != self.node_hex█&& heard█.get(node)█.is_none_or(|&t| now_ms.saturating_sub(t) > ttl_ms)█};█let mut regs = self.regs.lock().unwrap();█let mut evicted = 0usize;█for (subnet, reg) in regs.iter_mut() {█let n = reg.evict_nodes(silent);█if n > 0 {█eprintln!(\"REGISTRY_EVICT:{subnet}: {n} row(s) from silent node(s)\");█}█evicted += n;█}█drop(regs);█drop(heard);█if evicted > 0 {█self.write_snapshots();█}█...█}\u000f█</out>█# Tool call ¶█//Reading current release metadata█read(path=\"C:/Users/decid/AppData/Local/spt-core/releases/release.json\", selector=\"raw\")█<out>█\u000e{█\"metadata_json\": \"{\\\"version\\\":58,\\\"channel\\\":\\\"stable\\\",\\\"expires_at_ms\\\":1815279679594,\\\"key_id\\\":\\\"rel-primary-2026\\\",\\\"artifacts\\\":{\\\"x86_64-pc-windows-msvc\\\":{\\\"artifact_sha256\\\":\\\"4d57cf941d45d4504a0e4ae8c543d512bbd428fa23cdc297373413a347f62b5d\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-windows.exe\\\"},\\\"x86_64-unknown-linux-gnu\\\":{\\\"artifact_sha256\\\":\\\"1306b84e46b083cbb7ce88ae87c72b66b834c3da5c62e19495b9dbeb952e2ba9\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-linux\\\"},\\\"x86_64-unknown-linux-musl\\\":{\\\"artifact_sha256\\\":\\\"7356a2a9280f32fe7178e22f1b2e149d17ed81c7d740e12f14a774772fe4c0da\\\",\\\"brain_ipc_version\\\":1,\\\"broker_resource_abi\\\":1,\\\"asset_name\\\":\\\"spt-x86_64-linux-musl\\\"}},\\\"product_version\\\":\\\"0.31.0\\\"}\",█\"signature_hex\": \"2e095f5658320831727c227cdb90c7ef621abe494c2d3a5e4220e7dc7597493e03698556af48690ed8ce1d8add56348626a906cde7a8791cf11d58f84b8d950a\"█}\u000f█</out>█# Tool call ¶█//Finding current broker address records█grep(pattern=\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d|63546|61803|59864\", path=\"C:/Users/decid/AppData/Local/spt-core\", selector=null, case=true, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/█## adapters/_github/SaberMage-claude-spt/█### hook-trace.log█1652|[1783649003119 pid 64228] claude-spt hook: SPT_HOST_PID not exported - host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk█*1653|[1783649029726 pid 59864] claude-spt hook: SPT_HOST_PID not exported - host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk█1654|[1783649034005 pid 69052] claude-spt hook: WORKER_STOP_SKIP - no minted-id mapping for agent a2769fef122f8a01d (start refused, pre-0.15.0 start, or mapping lost); core TTL reap is the backstop█1655|[1783649036596 pid 83508] claude-spt hook: SPT_HOST_PID not exported - host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk█1656|[1783649056229 pid 83888] claude-spt hook: SPT_HOST_PID not exported - host pid '1' is not a plausible anchor (msys pseudo-init under headless git-bash?); /sptc:live will fall back to a process-tree walk█...█2203|[1783663544202 pid 44752] claude-spt hook: NOTIF [...40389ch elided...] ted_at_ms=1784026085169 spt:node=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d spt:vector=14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:615136 -->█2|Session used CAVEMAN MODE (full) per hook config - terse fragment style, no filler, code/commits normal. Doyle acting in gater/owner design-grilling capacity, working solo through a sequential Q&A ruling series with the operator (pattern: doyle proposes options with recommendation, operator rules, doyle proceeds to next open question). No commits, no gate runs, no builds this session - pure architecture-decision capture, consistent with doyle's role boundary (gates/owns, doesn't build).█Showing files 1-20 of 40+. Use skip=20 for the next page, or narrow paths/pattern.█[Some lines truncated to 512 chars]\u000f█</out>█# Assistant ¶█_**Analyzing discrepancy in last_seen timestamps**█**Verifying timestamp synchronization and endpoint freshness**█**Noting randomization of meet endpoints**█**Analyzing peer address mismatch causes**█**Evaluating relay-only address key mismatches**█**Cataloging peer address entry types**█**Diagnosing network-wide relay certificate or discovery outage**█**Evaluating relay and firewall impact on connectivity**█**Considering fleet-wide inbound firewall blocking**█**Diagnosing Windows local transport issue**█**Formulating network diagnostics predictions**_█# Tool call ¶█//Sending isolation timeline█irc(op=\"send\", to=\"Main\", message=\"HF log/state RCA: direct admitted registry feed last-heard timestamps identity/registry/heard.meta: GRAVITY c893...=2026-07-14 05:51:26.121Z, EN current ecb39...=05:59:54.517Z; other peers 2026-07-13 22:43:34-22:44:14Z. Config eviction TTL 300s + 30s tick (daemon.json lines8-10; config.rs 44-51; pu [...1091ch elided...] capture. Falsifier: UDP listener absent despite net_up => stale/closed NetHost; listener present + outbound/no replies => OS/firewall/relay; inbound QUIC then no proof frames => seed-proof protocol.\", replyTo=null, await=false, from=null, timeoutMs=null, peek=null)█<out>█\u000eDelivered to 1 peer(s):█- Main: injected\u000f█</out>█# Assistant ¶█_**Ranking firewall candidate alternatives**█**Identifying relay discovery as root cause**█**Analyzing stale seed and discovery failures**█**Diagnosing durable peer address collapse**█**Investigating log timestamp discrepancies**_█# Tool call ¶█//Reading late current log█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"50000-50100\")█<out>█\u000eCONN_LIFECYCLE: conn=13738 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704377 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13739 role=brain wall_ms=1783768374798 mono_ms=22704378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374798 mono_ms=22704378 event=stream-sub-attach stream=6925 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13739 role=brain stream-subscriber stream=6925 wall_ms=1783768374802 mono_ms=22704382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13740 role=brain wall_ms=1783768376988 mono_ms=22706568 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BIGNET step=5945 [...16492ch elided...] ire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=13767 role=brain stream-subscriber stream=6940 wall_ms=1783768420151 mono_ms=22749730 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=stream-sub-attach stream=6939 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13770 role=brain stream-subscriber stream=6939 wall_ms=1783768420151 mono_ms=22749730 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=13769 role=brain wall_ms=1783768420152 mono_ms=22749731 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 49999-50103 of 107. Use :50104 to continue]\u000f█</out>█# Tool call ¶█//Reading later current log█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"100000-100100\")█<out>█\u000ePUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█CONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=28850 role=brain wall_ms=1783793327087 mono_ms=47656629 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=stream-sub-attach stream=14469 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657073 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_WRITE_RETIRED: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ms=47657074 - organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=28851 role=brain stream-subscriber stream=14469 wall_ms=1783793327532 mono_ [...16593ch elided...] 00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f addr=EndpointAddr { id: PublicKey(7d06a2bd00648b140765f55ce248f7adaf66ddc1c4f2bbc70025aa5b7086386f), addrs: {Ip(100.68.35.65:63050), Ip(192.168.1.81:63050)} }█PAIR_MEET_UP:SPT_DEV step=59459779 id=7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a addr=EndpointAddr { id: PublicKey(7931268d264b73397008552819fb927754be13433ae1a0224355354855236d1a), addrs: {Ip(100.68.35.65:63052), Ip(192.168.1.81:63052)} }█PAIR_MEET_UP:BIGNET step=59459779 id=6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d addr=EndpointAddr { id: PublicKey(6fb5bd531dadda46d2f72f6515d0b7a83389e1f41d2ff3f8cffe55c0ec26932d), addrs: {Ip(100.68.35.65:63064), Ip(192.168.1.81:63064)} }█[Showing lines 99999-100103 of 120. Use :100104 to continue]\u000f█</out>█# Tool call ¶█//Reading late rotated log█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log.1\", selector=\"50000-50100\")█<out>█\u000eLine 50000 is beyond end of file (39944 lines total). Use :1 to read from the start, or :39944 to read the last line.\u000f█</out>█# Assistant ¶█_**Probing total log size beyond known range**_█# Tool call ¶█//Finding current log end█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"200000-200010\")█<out>█\u000eCONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350746 mono_ms=97680241 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59090 role=brain stream-subscriber stream=29348 wall_ms=1783843350752 mono_ms=97680247 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59091 role=brain wall_ms=1783843353337 mono_ms=97682832 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59092 role=brain wall_ms=1783843358384 mono_ms=97687879 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█CONN_LIFECYCLE: conn=59093 role=brain stream-subscriber stream=29349 wall_ms=1783843359877 mono_ms=97689372 event=stream-sub-attach stream=29349 fro [...675ch elided...] true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59094 role=brain wall_ms=1783843359879 mono_ms=97689373 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359879 mono_ms=97689374 event=stream-sub-attach stream=29349 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59094 role=brain stream-subscriber stream=29349 wall_ms=1783843359883 mono_ms=97689378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=59095 role=brain stream-subscriber stream=29350 wall_ms=1783843360563 mono_ms=97690058 event=stream-sub-attach stream=29350 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 199999-200013 of 27. Use :200014 to continue]\u000f█</out>█# Tool call ¶█//Reading recent current log█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"150000-150100\")█<out>█\u000eCONN_LIFECYCLE: conn=43964 role=brain stream-subscriber stream=21949 wall_ms=1783818349185 mono_ms=72678698 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=43966 role=brain wall_ms=1783818349186 mono_ms=72678699 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349186 mono_ms=72678699 event=stream-sub-attach stream=21949 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=43965 role=brain stream-subscriber stream=21948 wall_ms=1783818349192 mono_ms=72678705 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=43966 role=brain stream-subscriber stream=21949 wall_ms=1783818349198 mono_ms=72678711 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352884 mono_ms=72682398 event=stream-sub-attach stream=21951 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=43967 role=brain stream-subscriber stream=21951 wall_ms=1783818352885 mono_ms=72682398 event=write-start [REQ- [...16439ch elided...] s=1783818394744 mono_ms=72724258 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_WRITE_RETIRED: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 - organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=43994 role=brain stream-subscriber stream=21964 wall_ms=1783818394745 mono_ms=72724258 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=43995 role=brain wall_ms=1783818394746 mono_ms=72724259 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 149999-150103 of 151. Use :150104 to continue]\u000f█</out>█# Tool call ¶█//Reading later current log█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"180000-180100\")█<out>█\u000eCONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371113 mono_ms=87700615 event=stream-sub-attach stream=26399 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371114 mono_ms=87700615 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=53041 role=brain stream-subscriber stream=26399 wall_ms=1783833371119 mono_ms=87700621 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374456 mono_ms=87703958 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=53042 role=brain wall_ms=1783833374457 mono_ms=87703958 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█CONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=53043 role=brain wall_ms=1783833379502 mono_ms=87709004 event=transport-close poisoned=false timed_ou [...16471ch elided...] e51128e29c7c8824c8b11db), addrs: {Ip(100.68.35.65:64398), Ip(192.168.1.81:64398)} }█PAIR_MEET_UP:SPT_DEV step=59461114 id=f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a addr=EndpointAddr { id: PublicKey(f2723fc15d7faf494c914a8a6fe3ee13dcaf5721cc030f21e06460ea7b3ae10a), addrs: {Ip(100.68.35.65:64399), Ip(192.168.1.81:64399)} }█PAIR_MEET_UP:BS-Resources step=59461114 id=ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d addr=EndpointAddr { id: PublicKey(ba98819a1aca1f6d9f60c236e384e31314b07e7ea8e603c74f4401461d64ef5d), addrs: {Ip(100.68.35.65:64410), Ip(192.168.1.81:64410)} }█CONN_LIFECYCLE: conn=53072 role=brain wall_ms=1783833424921 mono_ms=87754423 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 179999-180103 of 129. Use :180104 to continue]\u000f█</out>█# Assistant ¶█_**Planning log line probing**_█# Tool call ¶█//Finding upper log bound█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"400000-400010\")█<out>█\u000eCONN_LIFECYCLE: conn=119540 role=brain wall_ms=1783943253525 mono_ms=197582911 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253525 mono_ms=197582911 event=stream-sub-attach stream=58283 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119540 role=brain stream-subscriber stream=58283 wall_ms=1783943253529 mono_ms=197582916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256931 mono_ms=197586318 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119541 role=brain wall_ms=1783943256932 mono_ms=197586318 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█CONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119542 role=brain wall_ms=1783943261994 mono_ms=197591380 event=transport-close poisoned=false timed_out=false [REQ-CONN [...456ch elided...] from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119544 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=stream-sub-attach stream=58284 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=119545 role=brain stream-subscriber stream=58284 wall_ms=1783943267657 mono_ms=197597044 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 399999-400013 of 52. Use :400014 to continue]\u000f█</out>█# Tool call ¶█//Reading near current wall time█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"300000-300050\")█<out>█\u000eCONN_LIFECYCLE: conn=89353 role=brain wall_ms=1783893552121 mono_ms=147881558 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█CONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=stream-sub-attach stream=43973 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_WRITE_RETIRED: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 - organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=89354 role=brain stream-subscriber stream=43973 wall_ms=1783893553801 mono_ms=147883238 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=89355 [...7651ch elided...] 571257 mono_ms=147900694 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893571257 mono_ms=147900694 event=stream-sub-attach stream=43978 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=89369 role=brain wall_ms=1783893572299 mono_ms=147901736 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=89368 role=brain stream-subscriber stream=43978 wall_ms=1783893573327 mono_ms=147902764 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 299999-300053 of 96. Use :300054 to continue]\u000f█</out>█# Tool call ¶█//Reading later wall time█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"350000-350050\")█<out>█\u000eNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BS-Resources step=59463952 id=b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b addr=EndpointAddr { id: PublicKey(b142ac42dd8009fd9c503790e55251c53efe389de024838e289117f211a9701b), addrs: {Ip(100.68.35.65:62679), Ip(192.168.1.81:62679)} }█PAIR_MEET_UP:SPT_DEV step=59463952 id=7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e addr=EndpointAddr { id: PublicKey(7821c2e81ad85e6a11fbad89eef4f68e1c22f70837a67955fe273677d0ac204e), addrs: {Ip(100.68.35.65:62677), Ip(192.168.1.81:62677)} }█PAIR_MEET_UP:BIGNET step=59463952 id=c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555 addr=EndpointAddr { id: PublicKey(c9431ef998b1a24026b707abe06d9aedcdac850552547449fee0518d4a79d555), addrs: {Ip(100.68.35.65:62683), Ip(192.168.1.81:62683)} }█CONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=104441 role=brain wall_ms=1783918561391 mono_ms=172890803 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=104442 role=brain stream-subscribe [...8129ch elided...] 171 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_WRITE_RETIRED: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 - organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=104457 role=brain stream-subscriber stream=51171 wall_ms=1783918588718 mono_ms=172918130 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 349999-350053 of 57. Use :350054 to continue]\u000f█</out>█# Assistant ¶█_**Estimating current data span**_█# Tool call ¶█//Locating recent log bound█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"600000-600020\")█<out>█\u000eCONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=stream-sub-attach stream=95897 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=181399 role=brain stream-subscriber stream=95898 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_WRITE_RETIRED: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 - organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=181400 role=brain stream-subscriber stream=95897 wall_ms=1784007042766 mono_ms=261372090 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=181402 role=brain stream-subscriber stream=95899 wall_ms=1784007042767 mono_ms=261372090 event=stream-su [...2778ch elided...] sport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=stream-sub-attach stream=95901 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043104 mono_ms=261372428 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=181406 role=brain stream-subscriber stream=95901 wall_ms=1784007043105 mono_ms=261372428 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=181407 role=brain wall_ms=1784007043106 mono_ms=261372430 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 599999-600023 of 55. Use :600024 to continue]\u000f█</out>█# Tool call ¶█//Reading current-day onset█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"500000-500050\")█<out>█\u000eCONN_LIFECYCLE: conn=149928 role=brain stream-subscriber stream=74378 wall_ms=1783985560763 mono_ms=239890108 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149934 role=brain stream-subscriber stream=74377 wall_ms=1783985560776 mono_ms=239890122 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=stream-sub-attach stream=74386 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149937 role=brain stream-subscriber stream=74386 wall_ms=1783985561046 mono_ms=239890392 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149938 role=brain wall_ms=1783985561048 mono_ms=239890393 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149938 role=brain stream-subscriber stream=74386 wall_ms=1783985561048 mono_ms=239890393 event=stream-sub-attach stream=74386 f [...8406ch elided...] UTION]█CONN_LIFECYCLE: conn=149952 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=stream-sub-attach stream=74392 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█C\u000eONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902483 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 499999-500053 of 94. Use :500054 to continue]\u000f█</out>█# Tool call ¶█//Reading current-day isolation█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"550000-550050\")█<out>█\u000eCONN_LIFECYCLE: conn=165705 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863024 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=stream-sub-attach stream=85112 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533696 mono_ms=250863030 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=stream-sub-attach stream=85113 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=transp [...7977ch elided...] : conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536235 mono_ms=250865569 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=stream-sub-attach stream=85126 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865873 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[More lines in file (108.8MB total; not scanned to EOF). Use :550054 to continue]\u000f█</out>█# Assistant ¶█_**Planning timestamp-based search**_█# Tool call ¶█//Reading last-heard window█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"620000-620100\")█<out>█\u000eNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:SPT_DEV step=59467614 id=a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f addr=EndpointAddr { id: PublicKey(a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f), addrs: {Ip(100.68.35.65:59900), Ip(192.168.1.81:59900)} }█PAIR_MEET_UP:BIGNET step=59467614 id=b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8 addr=EndpointAddr { id: PublicKey(b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8), addrs: {Ip(100.68.35.65:59898), Ip(192.168.1.81:59898)} }█CONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759570 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187938 role= [...13768ch elided...] eachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BIGNET step=59467620 id=27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913 addr=EndpointAddr { id: PublicKey(27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913), addrs: {Ip(100.68.35.65:65481), Ip(192.168.1.81:65481)} }█PAIR_MEET_UP:SPT_DEV step=59467620 id=d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80 addr=EndpointAddr { id: PublicKey(d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80), addrs: {Ip(100.68.35.65:65479), Ip(192.168.1.81:65479)} }█CONN_LIFECYCLE: conn=187971 role=brain wall_ms=1784028601585 mono_ms=282930888 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 619999-620103 of 159. Use :620104 to continue]\u000f█</out>█# Tool call ¶█//Reading post-heard window█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"640000-640100\")█<out>█\u000eCONN_LIFECYCLE: conn=194772 role=brain wall_ms=1784063365147 mono_ms=317694416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BIGNET step=59468779 id=7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4 addr=EndpointAddr { id: PublicKey(7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4), addrs: {Ip(100.68.35.65:51058), Ip(192.168.1.81:51058)} }█PAIR_MEET_UP:SPT_DEV step=59468779 id=74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af addr=EndpointAddr { id: PublicKey(74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af), addrs: {Ip(100.68.35.65:51060), Ip(192.168.1.81:51060)} }█CONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=write-sta [...13611ch elided...] CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█CONN_LIFECYCLE: conn=194808 role=brain wall_ms=1784063546518 mono_ms=317875788 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 639999-640103 of 116. Use :640104 to continue]\u000f█</out>█# Tool call ¶█//Finding current log total█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"800000-800010\")█<out>█\u000eLine 800000 is beyond end of file (643509 lines total). Use :1 to read from the start, or :643509 to read the last line.\u000f█</out>█# Assistant ¶█_**Inspecting log around 608k for 05:59 timestamp**_█# Tool call ¶█//Reading EN last-heard onset█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"608000-608150\")█<out>█\u000eCONN_LIFECYCLE: conn=183901 role=brain stream-subscriber stream=97584 wall_ms=1784008688415 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_WRITE_RETIRED: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 - organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183902 role=brain wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION] [...28104ch elided...] from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=stream-sub-attach stream=97619 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 607999-608153 of 166. Use :608154 to continue]\u000f█</out>█# Tool call ¶█//Reading EN post-heard failures█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"610000-610150\")█<out>█\u000eNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:SPT_DEV step=59467043 id=cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e addr=EndpointAddr { id: PublicKey(cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e), addrs: {Ip(100.68.35.65:57625), Ip(192.168.1.81:57625)} }█PAIR_MEET_UP:BIGNET step=59467043 id=089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d addr=EndpointAddr { id: PublicKey(089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d), addrs: {Ip(100.68.35.65:57623), Ip(192.168.1.81:57623)} }█CONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184537 role= [...25083ch elided...] 1560), Ip(192.168.1.81:61560)} }█CONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184585 role=brain wall_ms=1784011543599 mono_ms=265872918 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 609999-610153 of 191. Use :610154 to continue]\u000f█</out>█# Tool call ¶█//Reading latest failure cadence█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"643300-643509\")█<out>█\u000eCONN_LIFECYCLE: conn=195913 role=brain wall_ms=1784069083710 mono_ms=323412974 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BIGNET step=59468970 id=19 [...30639ch elided...] nt=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }█PAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }█[Showing lines 643299-643512 of 643517. Use :643513 to continue]\u000f█</out>","textHead":"# User ¶█Complete the assignment below, thoroughly:█# Target█HFENDULEAM live logs/config/state and safe read-only SPT CLI queries. Non-goal: daemon lifecycle or writes.█# Change█Construct a feedback loop proving cross-node isolation; identify when remote nodes disappeared and correlate transport/dial/meet/auth/key/subnet errors. Inspect current network listeners/connections with safe OS read-only commands if useful. Explain why daemon status can remain green.█# Acceptance█Return concrete failing route evidence, affected subnet/node keys, onset/cadence, and strongest log-grounded root candidate with alternatives falsified.█# Assistant ¶█_**Planning safe CLI filesystem inspection**_█# Tool call ¶█//Listing live SPT logs█glob(path=\"C:/Users/decid/AppData/Local/spt-core/logs/**/*\", hidden=true, gitignore=false, limit=300)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█daemon.stderr.log█daemon.stderr.log.1\u000f█</out>█# Tool call ¶█//Locating SPT configs█glob(path=\"C:/Users/decid/AppData/Local/spt-core/**/*\", hidden=true, gitignore=false, limit=300)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/█brain.ready█daemon-effects.log█## owlery/█### mobile-gw/█### hertz/█### doyle/█info.json█digest.log█.idle█### lia/█info.json█### todlando/█## identity/█epoch█pump-heartbeat.json█pump-ops.json█peer-addrs.json█roster.json█### registry/█heard.meta█SPT_DEV.json█BS-Resources.json█BIGNET.json█## logs/█daemon.stderr.log█## adapters/_github/SaberMage-claude-spt/█hook-trace.log█### state/digest/█doyle.pos█## tracked/█### .seed.git/█#### objects/█##### e1/█f1531628b44ce6be172972c28a8d70deab07db█##### e8/█1884421140a5d840e7059844d9ee5971bd601c█de6269894ae2a2290dc95f96c0b784a0604eb1█##### e2/█88effdbf1d1ec85f3d189180d32f3a03dd2a35█##### a7/█d519790660be33b7cc9a93fd636f93f2ccd1b7█##### 9f/█c93d27e80fa119a405911d6388072e5a032dd1█2423b4c1074fd9b27539a4ed67d6ba63f3c9e3█##### 61/█a3b521ca2fe662e8daf4bbdeb51d5930e8ea2c█2e6743262379d694c6739889ae386de85e44fe█##### 89/█06f02c12c41d9a3976552501405a0d126d56bc█##### 5c/█631d983a44ffdadc42b3a6f61ca49d093fe8e4█##### 6b/█60b871bc4ee3467669d1a8d433586835d745a7█##### 76/█cc7c43a22d5f2e6b1aa22bbd56a4d5edcc865d█30b1527e10e1c7fc14a1ac6227dff5814907b0█##### de/█d9d734f04d98cd4e2147ae995613c50b2d918a█1e2b847c9989ecf394def92 [...2961ch elided...] 7c635c24b72ca8ad60830█##### 2c/█1472160f8ff55af4600d47869eb830bb058730█##### 9d/█6d55b97e60cd8ab9d0957232f5d149d34b2053█##### d6/█a017b73ca49b8cfc3d7812abd47193d012e624█##### 0a/█7d7c73a2400ccb010c822cfe292d35d63f22c2█##### 12/█da36d2696edac7004fb228a90802fc624c0f97█b0fd29897bb9096fa3ea27c6e170e90d5adb62█##### a1/█f5a93dbd4853245e072b102b5316f0f000f606█##### e3/█#### refs/heads/█p-github-com-sabermage-spt-core█a-doyle█#### worktrees/█##### github-com-sabermage-spt-core/█COMMIT_EDITMSG█index█###### logs/█HEAD█##### doyle/█COMMIT_EDITMSG█index█###### logs/█HEAD█#### logs/refs/heads/█p-github-com-sabermage-spt-core█a-doyle█### projects/github-com-sabermage-spt-core/doyle/█project-context.md█### agents/doyle/█live-context.md█## scratch/pump/█[200 results limit reached. Use limit=400 for more]\u000f█</out>█# Tool call ¶█//Locating user SPT state█glob(path=\"C:/Users/decid/.spt/**/*\", hidden=true, gitignore=false, limit=300)█<out>█\u000ePath not found: C:/Users/decid/.spt\u000f█</out>█# Assistant ¶█_**Planning parallel log and config inspection**_█# Tool call ¶█//Finding transport failures█grep(pattern=\"(?i)(error|warn|fail|dial|meet|auth|key|subnet|route|disconnect|timeout|refused|unreachable|handshake|peer|transport)\", path=\"C:/Users/decid/AppData/Local/spt-core/logs\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log█3|BRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]█*4|BRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) - dispatcher + peer pump started█5|PUMP_IPC_READER: spawned█6|PUMP_IPC_READER: spawned█*7|PUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)█*8|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█*9|PUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)█*10|PUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)█*11|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█*12|DISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")█*13|DISPATCH:3885:Failed(\"notif jo [...4727ch elided...] icKey(d9c367f242c8b2aaf0bb082f32706a7100a6e5462b8cf0bc643c5d9d5d9e2b09), addrs: {Ip(100.68.35.65:52946), Ip(192.168.1.81:52946)} }█*34|PAIR_MEET_UP:SPT_DEV step=59454595 id=b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce addr=EndpointAddr { id: PublicKey(b246f421576bf47ec89f02d4ef1b2c949391550991985d22b49bc672aafffcce), addrs: {Ip(100.68.35.65:52944), Ip(192.168.1.81:52944)} }█*35|PAIR_MEET_UP:BIGNET step=59454595 id=ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a addr=EndpointAddr { id: PublicKey(ad0a8a60bcf4378ec0f3cced9cc47c81daa133b8e99b1af39b9cb410391f224a), addrs: {Ip(100.68.35.65:52958), Ip(192.168.1.81:52958)} }█*36|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\u000f█</out>█# Tool call ¶█//Finding affected node events█grep(pattern=\"(?i)(HFENDULEAM|ENLYZEAM|SPT_DEV|BIGNET)\", path=\"C:/Users/decid/AppData/Local/spt-core/logs\", selector=null, case=false, gitignore=false, skip=null)█<out>█\u000e# C:/Users/decid/AppData/Local/spt-core/logs/█## daemon.stderr.log█561|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█*562|PAIR_MEET_UP:BIGNET step=59458128 id=ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce addr=EndpointAddr { id: PublicKey(ceffd0798359f6b0a4b4b7adefee67944496b55c825c60acd5ec622d7394adce), addrs: {Ip(100.68.35.65:50072), Ip(192.168.1.81:50072)} }█563|PAIR_MEET_UP:BS-Resources step=59458128 id=f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116 addr=EndpointAddr { id: PublicKey(f332ce3c5bcb212775fbb30eea945c6c1484cd15979fa4a7f5a92fa47aa0f116), addrs: {Ip(100.68.35.65:50071), Ip(192.168.1.81:50071)} }█564|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█565|CONN_LIFECYCLE: conn=2 role=brain wall_ms=1783743857070 mono_ms=135 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█*566|PAIR_MEET_UP:SPT_DEV step=59458128 id=2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4 addr=EndpointAddr { id: PublicKey(2b23f7fecdd88e2e81ee1799c75ff9bc164a711cb3c5dc512cd430cd5f12deb4), addrs: {Ip(100.68.35.65:50077), Ip(192 [...23239ch elided...] 3d2bc26d6ff95eb73874b859 addr=EndpointAddr { id: PublicKey(345ec2a48afaceaa1747819b07b0c87b054de7973d2bc26d6ff95eb73874b859), addrs: {Ip(100.68.35.65:64059), Ip(192.168.1.81:64059)} }█*108|PAIR_MEET_UP:BIGNET step=59454603 id=5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736 addr=EndpointAddr { id: PublicKey(5ae1877a0fcd8d35035baa56d404e53519556c4b82bc640097a86e9168680736), addrs: {Ip(100.68.35.65:64073), Ip(192.168.1.81:64073)} }█109|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█110|PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█111|NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\u000f█</out>█# Tool call ¶█//Reading live roster state█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\", selector=\"raw\")█<out>█\u000e{█\"members\": [█{█\"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"subnet\": \"SPT_DEV\",█\"label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"address\": {█\"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█},█{█\"Ip\": \"100.68.35.65:63546\"█},█{█\"Ip\": \"107.131.129.74:63546\"█},█{█\"Ip\": \"192.168.1.81:63546\"█}█]█},█\"last_seen\": \"1784012120\",█\"lease_epoch\": 610151█},█{█\"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█\"subnet\": \"SPT_DEV\",█\"label\": \"ENLYZEAM\",█\"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",█\"address\": {█\"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█[...6378ch elided...] a6b2122e2ed3ad9b79f6b88bbf04d144\",█\"address\": {█\"id\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█},█{█\"Ip\": \"100.65.194.82:55908\"█},█{█\"Ip\": \"192.168.1.8:55908\"█}█]█},█\"last_seen\": \"1784007760\",█\"lease_epoch\": 1130█}█],█\"tombstones\": [█{█\"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",█\"subnet\": \"BIGNET\",█\"stamp\": \"1783983420\"█},█{█\"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",█\"subnet\": \"SPT_DEV\",█\"stamp\": \"1783983420\"█}█]█}\u000f█</out>█# Tool call ¶█//Reading peer addresses█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\", selector=\"raw\")█<out>█\u000e{█\"addrs\": {█\"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {█\"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█},█{█\"Ip\": \"76.80.65.5:57900\"█},█{█\"Ip\": \"100.125.242.88:57900\"█},█{█\"Ip\": \"172.28.240.1:57900\"█},█{█\"Ip\": \"192.168.1.12:57900\"█},█{█\"Ip\": \"[2603:8000:a800:7857::6df]:57902\"█},█{█\"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"█},█{█\"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"█}█]█},█\"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {█\"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█}█]█},█\"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {█\"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",█[...563ch elided...] 1:59864\"█},█{█\"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"█},█{█\"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"█},█{█\"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"█}█]█},█\"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {█\"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",█\"addrs\": [█{█\"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"█}█]█},█\"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {█\"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",█\"addrs\": [█{█\"Ip\": \"64.227.107.3:42537\"█}█]█}█}█}\u000f█</out>█# Tool call ¶█//Reading SPT_DEV registry█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry/SPT_DEV.json\", selector=\"raw\")█<out>█\u000e{█\"by_id\": {█\"chert\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630116,█\"last_active_ms\": 1783630087661,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"deployah\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630118,█\"last_active_ms\": 1783982275183,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"doyle\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Active\",█[...5421ch elided...] 1a91c85f2d\",█\"status\": \"Active\",█\"epoch\": 630140,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"ready_agent\",█\"bound\": true,█\"controller_node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"adapter\": \"claude-spt:ccs\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█],█\"controlled\": true█}█]█},█\"node_labels\": {█\"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\": {█\"label\": \"HFENDULEAM\",█\"epoch\": 630142█},█\"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": {█\"label\": \"ENLYZEAM\",█\"epoch\": 445951█}█}█}\u000f█</out>█# Tool call ¶█//Reading BIGNET registry█read(path=\"C:/Users/decid/AppData/Local/spt-core/identity/registry/BIGNET.json\", selector=\"raw\")█<out>█\u000e{█\"by_id\": {█\"chert\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630117,█\"last_active_ms\": 1783630087661,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"github-com-sabermage-spt-core\"█]█}█],█\"deployah\": [█{█\"node\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",█\"status\": \"Suspended\",█\"epoch\": 630119,█\"last_active_ms\": 1783982275183,█\"node_label\": \"HFENDULEAM\",█\"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",█\"endpoint_type\": \"live_agent\",█\"bound\": false,█\"adapter\": \"claude-spt\",█\"recent_projects\": [█\"","textTail":"\u000eONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902482 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=149953 role=brain stream-subscriber stream=74392 wall_ms=1783985573137 mono_ms=239902483 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 499999-500053 of 94. Use :500054 to continue]\u000f█</out>█# Tool call ¶█//Reading current-day isolation█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"550000-550050\")█<out>█\u000eCONN_LIFECYCLE: conn=165705 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863024 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=stream-sub-attach stream=85112 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533690 mono_ms=250863025 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165706 role=brain stream-subscriber stream=85112 wall_ms=1783996533696 mono_ms=250863030 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=stream-sub-attach stream=85113 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165707 role=brain stream-subscriber stream=85113 wall_ms=1783996534013 mono_ms=250863347 event=transp [...7977ch elided...] : conn=165722 role=brain stream-subscriber stream=85125 wall_ms=1783996536235 mono_ms=250865569 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=stream-sub-attach stream=85126 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865872 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=165723 role=brain stream-subscriber stream=85126 wall_ms=1783996536538 mono_ms=250865873 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[More lines in file (108.8MB total; not scanned to EOF). Use :550054 to continue]\u000f█</out>█# Assistant ¶█_**Planning timestamp-based search**_█# Tool call ¶█//Reading last-heard window█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"620000-620100\")█<out>█\u000eNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:SPT_DEV step=59467614 id=a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f addr=EndpointAddr { id: PublicKey(a22dedf4dce1e5962954b496211ce2226fc5ee13b789256f8b4b98a33552818f), addrs: {Ip(100.68.35.65:59900), Ip(192.168.1.81:59900)} }█PAIR_MEET_UP:BIGNET step=59467614 id=b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8 addr=EndpointAddr { id: PublicKey(b6666816198bb060218a0d64753ed523b38b389aa4a5afe7bf07b6fc49acb3f8), addrs: {Ip(100.68.35.65:59898), Ip(192.168.1.81:59898)} }█CONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187936 role=brain wall_ms=1784028425220 mono_ms=282754523 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759570 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187937 role=brain wall_ms=1784028430268 mono_ms=282759571 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=187938 role= [...13768ch elided...] eachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BIGNET step=59467620 id=27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913 addr=EndpointAddr { id: PublicKey(27accc8b40417392ca890c0730d1d43c417d636e122eef12b98356d85b02f913), addrs: {Ip(100.68.35.65:65481), Ip(192.168.1.81:65481)} }█PAIR_MEET_UP:SPT_DEV step=59467620 id=d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80 addr=EndpointAddr { id: PublicKey(d36441d2de3a0d7877643a0318444d8330940064e7b7431f52fde5abbc77eb80), addrs: {Ip(100.68.35.65:65479), Ip(192.168.1.81:65479)} }█CONN_LIFECYCLE: conn=187971 role=brain wall_ms=1784028601585 mono_ms=282930888 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 619999-620103 of 159. Use :620104 to continue]\u000f█</out>█# Tool call ¶█//Reading post-heard window█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"640000-640100\")█<out>█\u000eCONN_LIFECYCLE: conn=194772 role=brain wall_ms=1784063365147 mono_ms=317694416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194773 role=brain wall_ms=1784063370185 mono_ms=317699455 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BIGNET step=59468779 id=7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4 addr=EndpointAddr { id: PublicKey(7e37319420539ee7c397572328d83c19661bdde98e31c7e2d0733ad78eb533a4), addrs: {Ip(100.68.35.65:51058), Ip(192.168.1.81:51058)} }█PAIR_MEET_UP:SPT_DEV step=59468779 id=74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af addr=EndpointAddr { id: PublicKey(74224b4f0d835907454e43d538ab01254aa3eb9508b662fbca2f8152412546af), addrs: {Ip(100.68.35.65:51060), Ip(192.168.1.81:51060)} }█CONN_LIFECYCLE: conn=194774 role=brain wall_ms=1784063375226 mono_ms=317704496 event=write-sta [...13611ch elided...] CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194806 role=brain wall_ms=1784063536444 mono_ms=317865713 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=194807 role=brain wall_ms=1784063541480 mono_ms=317870750 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█PUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)█CONN_LIFECYCLE: conn=194808 role=brain wall_ms=1784063546518 mono_ms=317875788 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 639999-640103 of 116. Use :640104 to continue]\u000f█</out>█# Tool call ¶█//Finding current log total█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"800000-800010\")█<out>█\u000eLine 800000 is beyond end of file (643509 lines total). Use :1 to read from the start, or :643509 to read the last line.\u000f█</out>█# Assistant ¶█_**Inspecting log around 608k for 05:59 timestamp**_█# Tool call ¶█//Reading EN last-heard onset█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"608000-608150\")█<out>█\u000eCONN_LIFECYCLE: conn=183901 role=brain stream-subscriber stream=97584 wall_ms=1784008688415 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=stream-sub-attach stream=97583 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_WRITE_RETIRED: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 - organic write failure (BrokenPipe: The pipe has been ended. (os error 109)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED - only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]█CONN_LIFECYCLE: conn=183903 role=brain stream-subscriber stream=97583 wall_ms=1784008688416 mono_ms=263017738 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183902 role=brain wall_ms=1784008688416 mono_ms=263017738 event=write-start [REQ-CONN-POISON-ATTRIBUTION] [...28104ch elided...] from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183946 role=brain stream-subscriber stream=97617 wall_ms=1784008728970 mono_ms=263058293 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=stream-sub-attach stream=97619 from_seq=0 [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=183947 role=brain stream-subscriber stream=97619 wall_ms=1784008729319 mono_ms=263058641 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 607999-608153 of 166. Use :608154 to continue]\u000f█</out>█# Tool call ¶█//Reading EN post-heard failures█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"610000-610150\")█<out>█\u000eNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:SPT_DEV step=59467043 id=cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e addr=EndpointAddr { id: PublicKey(cabe4589d5505d8b43c4e1bc74b9386dc6e3b8bdec8ae34cde4d5f064aeb8b4e), addrs: {Ip(100.68.35.65:57625), Ip(192.168.1.81:57625)} }█PAIR_MEET_UP:BIGNET step=59467043 id=089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d addr=EndpointAddr { id: PublicKey(089a91d48786614caeb69a36428a77a033b299056fbc7e00734496d6da072f0d), addrs: {Ip(100.68.35.65:57623), Ip(192.168.1.81:57623)} }█CONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184535 role=brain wall_ms=1784011291676 mono_ms=265620996 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184536 role=brain wall_ms=1784011296716 mono_ms=265626036 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184537 role= [...25083ch elided...] 1560), Ip(192.168.1.81:61560)} }█CONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184583 role=brain wall_ms=1784011533524 mono_ms=265862843 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184584 role=brain wall_ms=1784011538563 mono_ms=265867882 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=184585 role=brain wall_ms=1784011543599 mono_ms=265872918 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█[Showing lines 609999-610153 of 191. Use :610154 to continue]\u000f█</out>█# Tool call ¶█//Reading latest failure cadence█read(path=\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\", selector=\"643300-643509\")█<out>█\u000eCONN_LIFECYCLE: conn=195913 role=brain wall_ms=1784069083710 mono_ms=323412974 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195914 role=brain wall_ms=1784069088752 mono_ms=323418016 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195915 role=brain wall_ms=1784069093795 mono_ms=323423059 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=write-start [REQ-CONN-POISON-ATTRIBUTION]█CONN_LIFECYCLE: conn=195916 role=brain wall_ms=1784069098840 mono_ms=323428104 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:BIGNET step=59468970 id=19 [...30639ch elided...] nt=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)█PAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }█PAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }█[Showing lines 643299-643512 of 643517. Use :643513 to continue]\u000f█</out>"}}}
{"type":"message","id":"207d3e45","parentId":"7249fb7e","timestamp":"2026-07-14T22:51:08.135Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Listing relevant capture files**"},{"type":"toolCall","id":"call_Qfi4pHJTuCKwXkKTx3oirim8|fc_0cb567042bb57cd4016a56bd5843e481968e9a8fe3956d1bdb","name":"glob","arguments":{"i":"Listing forensic captures","path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/*","hidden":true,"gitignore":false,"limit":100}},{"type":"toolCall","id":"call_p3QJ1hQketIqwSvmsON1DgW0|fc_0cb567042bb57cd4016a56bd58441081968928fd0719b82731","name":"glob","arguments":{"i":"Listing older forensic capture","path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/*","hidden":true,"gitignore":false,"limit":100}},{"type":"toolCall","id":"call_3W2wCS9genN0xhB07K2q9Gxu|fc_0cb567042bb57cd4016a56bd58441881969e20e342e432ff04","name":"read","arguments":{"i":"Reading live roster section","path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","selector":"1-115"}},{"type":"toolCall","id":"call_nkmqDbvUUnNTQrj1yxOPsiVw|fc_0cb567042bb57cd4016a56bd5844208196ada5121fd05d0a0f","name":"read","arguments":{"i":"Reading peer address section","path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","selector":"1-55"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":56746,"output":283,"cacheRead":0,"cacheWrite":0,"totalTokens":57029,"reasoningTokens":58,"cost":{"input":0.28373000000000004,"output":0.008490000000000001,"cacheRead":0,"cacheWrite":0,"total":0.29222000000000004}},"stopReason":"toolUse","timestamp":1784069446913,"responseId":"resp_0cb567042bb57cd4016a56bd47828c8196b35e71b273588dc8","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bd4cfa6c8196bb6a5a40a0e5e6b7","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr1YAE79PZRBgiqMi_RvBDd6Y3HKGWs80n-ZNGqGNOYK7eq9RYSOzz1bHIMcYLgQ4Mp225GBDC72k_xNbATNLyT5uddBv1eOjn5IOBBzpvJypaytM0nHCpSjGDxaxTXk5rXXQDZiQyYdcvGXDqgWj9LaVd6TTYm5YnOXY7pmiBFFAeuz-6HGxSEvWWc1aAtt31kcyGCxYXWhglj_KKKwyDdLWO2GHgxqTHNfzq6NVmWCJ6wrlJvJe6nPrhuYzwUMIK536Qj6UjmPUg6A-HZFQmPt_KhTQr32VcnuW-7rO_5AGweA-rpSwOe8dG1n5y6u88Q5lfJ6TmtTxgY3TfBz1jU80AIj_ho4c9mpXkrT0aBAylTwIK5C-jyB3BQ4K3iOXvAv3i9bX7QnMCStSe7S6DgqOSavvV_tWzmAbFDXF-IV9uajhITpA4iP7W4Y0IiYjb8SNTmqlxn1lP9agY4ooK00BHCSCZAeYqlVXXmWugSe3oeSUBSVL7xO4Sk9hKbs94VaCaK2WwgPaTcM2z6Hde6sJLduwPcKWVw9vWdY3-u7uAi6XEOrIHvdeYxmSAfGp7FOe1LmFMNDdue1riWt1WEYVUGD1TeeXeuGr0YacSuhb1rOzXAhLK_e2v6HcarZkR-MwXJ44jfCzuhC80eoDKJNaecvd0ncWOIXVEFI5crzVHCHfOnvlLucldSPt2IcNMb3oDlcYhwlnpe8Jvr2lEWCeg8eZ2GejdBiFa-y0l8bINfcmP5auPAVno5iqF4nVwQ-5WeL33rWqjaViTWbworlYtRPJCPf5DzZsLdqBH-KwEg-RGzXvFgJgAqXSB_DofLew1t-NH-q0FyO45bRnx6Zg_HXhhafYryJf4tNlH9Rxd_QiA1dAHMU9nIojj860888sEoa6aTAKMi7AyScYX_Tkp8IXIIybz-OQCaq7PLEX4Tc4t4Y2xdj7ZNFB1R-3Q69lXjhAFEfejO4W_a3uZo_syini6RpFSuMmPgF6OaNojcKuCLYIhCOI2Ba5KY7jm3FAjj4-jF1w7pKhcgA6mKRDyWgwDXdruZ6uHdbA-h66scuQ3AhRqgr5lWLUj28BRO-HfwHm-ySUalcqc-mmHmVKnSl_7vs70v3tQgZr99rEzMT1whFphYwqfquBzV8zbjCNK2DJdDwbDYOpvdL3PQrJVjAaD_Uq6c_2YSPv68qAgRbEOM0f3_M-P8eY8DpGJfm5JeDZQEr28oQ8xYOwxKPnuTClP_dIEWhKnjHZe0YQi4i0fob5I47vjF_86EmNH-2xueBqh-KJDbTg-iJnpdvbA==","summary":[{"type":"summary_text","text":"**Listing relevant capture files**"}]},{"id":"fc_0cb567042bb57cd4016a56bd5843e481968e9a8fe3956d1bdb","type":"function_call","status":"completed","arguments":"{\"i\":\"Listing forensic captures\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/*\",\"hidden\":true,\"gitignore\":false,\"limit\":100}","call_id":"call_Qfi4pHJTuCKwXkKTx3oirim8","name":"glob"},{"id":"fc_0cb567042bb57cd4016a56bd58441081968928fd0719b82731","type":"function_call","status":"completed","arguments":"{\"i\":\"Listing older forensic capture\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/*\",\"hidden\":true,\"gitignore\":false,\"limit\":100}","call_id":"call_p3QJ1hQketIqwSvmsON1DgW0","name":"glob"},{"id":"fc_0cb567042bb57cd4016a56bd58441881969e20e342e432ff04","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading live roster section\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\",\"selector\":\"1-115\"}","call_id":"call_3W2wCS9genN0xhB07K2q9Gxu","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bd5844208196ada5121fd05d0a0f","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading peer address section\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\",\"selector\":\"1-55\"}","call_id":"call_nkmqDbvUUnNTQrj1yxOPsiVw","name":"read"}]},"duration":21220.176299989223,"ttft":6100.931100010872,"contextSnapshot":{"promptTokens":56746,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Qfi4pHJTuCKwXkKTx3oirim8|fc_0cb567042bb57cd4016a56bd5843e481968e9a8fe3956d1bdb","toolName":"glob","startedAt":"2026-07-14T22:51:08.135Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/*"},"intent":"Listing forensic captures"},"id":"af919389","parentId":"207d3e45","timestamp":"2026-07-14T22:51:08.135Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_p3QJ1hQketIqwSvmsON1DgW0|fc_0cb567042bb57cd4016a56bd58441081968928fd0719b82731","toolName":"glob","startedAt":"2026-07-14T22:51:08.135Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/*"},"intent":"Listing older forensic capture"},"id":"1de1e26e","parentId":"af919389","timestamp":"2026-07-14T22:51:08.135Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_3W2wCS9genN0xhB07K2q9Gxu|fc_0cb567042bb57cd4016a56bd58441881969e20e342e432ff04","toolName":"read","startedAt":"2026-07-14T22:51:08.135Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"},"intent":"Reading live roster section"},"id":"39d29cdf","parentId":"1de1e26e","timestamp":"2026-07-14T22:51:08.135Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_nkmqDbvUUnNTQrj1yxOPsiVw|fc_0cb567042bb57cd4016a56bd5844208196ada5121fd05d0a0f","toolName":"read","startedAt":"2026-07-14T22:51:08.135Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"},"intent":"Reading peer address section"},"id":"1d4cee58","parentId":"39d29cdf","timestamp":"2026-07-14T22:51:08.135Z"}
{"type":"message","id":"83580fb0","parentId":"1d4cee58","timestamp":"2026-07-14T22:51:08.138Z","message":{"role":"toolResult","toolCallId":"call_Qfi4pHJTuCKwXkKTx3oirim8|fc_0cb567042bb57cd4016a56bd5843e481968e9a8fe3956d1bdb","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/\nstatus.active.json\ndaemon.stderr.active.log\nkeep-rc.ps1\nlia.stdin\ndoyle.stdin\nflynn.stdin\ndeployah.stdin\ndaemon.stderr.log\nspt.pre-active.exe\ndaemon.stderr.log.1\n## releases.before/"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659","fileCount":11,"files":["C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/status.active.json","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.active.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/keep-rc.ps1","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/lia.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/doyle.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/flynn.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/deployah.stdin","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/releases.before/","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/spt.pre-active.exe","C:/Users/decid/AppData/Local/spt-core/rca-active-20260709-222659/daemon.stderr.log.1"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069468138}}
{"type":"message","id":"4b632342","parentId":"83580fb0","timestamp":"2026-07-14T22:51:08.139Z","message":{"role":"toolResult","toolCallId":"call_p3QJ1hQketIqwSvmsON1DgW0|fc_0cb567042bb57cd4016a56bd58441081968928fd0719b82731","toolName":"glob","content":[{"type":"text","text":"# C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/\nstatus.after-apply.json\ndaemon.stderr.log\ninstall-and-start.ps1\nprepare-and-start.ps1\nstatus.pre.txt\ndaemon.stderr.pre.log\nspt.pre-capture.exe\ndaemon.stderr.log.1\ndaemon.stderr.pre.log.1\n## releases.before/"}],"details":{"scopePath":"C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646","fileCount":10,"files":["C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.after-apply.json","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/install-and-start.ps1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/prepare-and-start.ps1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/status.pre.txt","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/releases.before/","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/spt.pre-capture.exe","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.log.1","C:/Users/decid/AppData/Local/spt-core/rca-capture-20260709-215646/daemon.stderr.pre.log.1"],"truncated":false,"cwd":"C:\\Users\\decid\\Documents\\projects"},"isError":false,"timestamp":1784069468139}}
{"type":"message","id":"66511d26","parentId":"4b632342","timestamp":"2026-07-14T22:51:08.142Z","message":{"role":"toolResult","toolCallId":"call_3W2wCS9genN0xhB07K2q9Gxu|fc_0cb567042bb57cd4016a56bd58441881969e20e342e432ff04","toolName":"read","content":[{"type":"text","text":"{\n  \"members\": [\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"KITSUBITO\",\n      \"machine_id\": \"67ceedba5b6c5c686d19ba6701663b0f4170a9b0eabc6f58799819751353422e\",\n      \"address\": {\n        \"id\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.98.197.12:40683\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:40683\"\n          },\n          {\n            \"Ip\": \"192.168.1.154:40683\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783682162\",\n      \"lease_epoch\": 20764\n    },\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n…\n    },\n…\n  ],\n…\n}\n\n[Showing lines 1-118 of 295. Use :119 to continue]"}],"details":{"truncation":{"content":"{\n  \"members\": [\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"KITSUBITO\",\n      \"machine_id\": \"67ceedba5b6c5c686d19ba6701663b0f4170a9b0eabc6f58799819751353422e\",\n      \"address\": {\n        \"id\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.98.197.12:40683\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:40683\"\n          },\n          {\n            \"Ip\": \"192.168.1.154:40683\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783682162\",\n      \"lease_epoch\": 20764\n    },\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {","truncated":true,"truncatedBy":"lines","totalLines":295,"totalBytes":3346,"outputLines":118,"outputBytes":3346,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"{\n  \"members\": [\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"KITSUBITO\",\n      \"machine_id\": \"67ceedba5b6c5c686d19ba6701663b0f4170a9b0eabc6f58799819751353422e\",\n      \"address\": {\n        \"id\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.98.197.12:40683\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:40683\"\n          },\n          {\n            \"Ip\": \"192.168.1.154:40683\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783682162\",\n      \"lease_epoch\": 20764\n    },\n    {\n      \"pubkey_hex\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"HFENDULEAM\",\n      \"machine_id\": \"fd8aed2a77898d1676a8185b557b289535fec881081a7058a2e4b4287efd8200\",\n      \"address\": {\n        \"id\": \"14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.68.35.65:63546\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:63546\"\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n…\n    },\n…\n  ],\n…\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,null,145,null,282,null,295]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":295,"totalBytes":3346,"outputLines":118,"outputBytes":3346,"shownRange":{"start":1,"end":118},"nextOffset":119}}},"isError":false,"timestamp":1784069468142}}
{"type":"message","id":"1bef1d0e","parentId":"66511d26","timestamp":"2026-07-14T22:51:08.142Z","message":{"role":"toolResult","toolCallId":"call_nkmqDbvUUnNTQrj1yxOPsiVw|fc_0cb567042bb57cd4016a56bd5844208196ada5121fd05d0a0f","toolName":"read","content":[{"type":"text","text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"76.80.65.5:57900\"\n        },\n        {\n          \"Ip\": \"100.125.242.88:57900\"\n        },\n        {\n          \"Ip\": \"172.28.240.1:57900\"\n        },\n        {\n          \"Ip\": \"192.168.1.12:57900\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n        }\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n…\n      ]\n    },\n…\n  }\n}\n\n[Showing lines 1-58 of 94. Use :59 to continue]"}],"details":{"truncation":{"content":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"76.80.65.5:57900\"\n        },\n        {\n          \"Ip\": \"100.125.242.88:57900\"\n        },\n        {\n          \"Ip\": \"172.28.240.1:57900\"\n        },\n        {\n          \"Ip\": \"192.168.1.12:57900\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n        }\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"","truncated":true,"truncatedBy":"lines","totalLines":94,"totalBytes":1657,"outputLines":58,"outputBytes":1657,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"76.80.65.5:57900\"\n        },\n        {\n          \"Ip\": \"100.125.242.88:57900\"\n        },\n        {\n          \"Ip\": \"172.28.240.1:57900\"\n        },\n        {\n          \"Ip\": \"192.168.1.12:57900\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n        }\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n…\n      ]\n    },\n…\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,null,75,76,null,93,94]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":94,"totalBytes":1657,"outputLines":58,"outputBytes":1657,"shownRange":{"start":1,"end":58},"nextOffset":59}}},"isError":false,"timestamp":1784069468142}}
{"type":"message","id":"504e8f46","parentId":"1bef1d0e","timestamp":"2026-07-14T22:51:27.133Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating peer address key mismatch**\n\n**Planning cross-referencing peer IDs**"},{"type":"toolCall","id":"call_LAmEwPpAOsf9GztiUwjYVSuw|fc_0cb567042bb57cd4016a56bd6e1f148196a3b1d28b720e0941","name":"read","arguments":{"i":"Reading remaining peer addresses","path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","selector":"31-94"}},{"type":"toolCall","id":"call_qNsyr24hQuPwdnWw90eKORzv|fc_0cb567042bb57cd4016a56bd6e1f288196b95ec417eed0e021","name":"read","arguments":{"i":"Reading remaining roster entries","path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","selector":"110-295"}},{"type":"toolCall","id":"call_jAj3cKid98zG7ZmvEG0SptV8|fc_0cb567042bb57cd4016a56bd6e1f34819692292c5cc1672461","name":"read","arguments":{"i":"Reading peer resolution logic","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","selector":"1120-1205"}},{"type":"toolCall","id":"call_Bi90dtYHZLrDduKkpLclEXGi|fc_0cb567042bb57cd4016a56bd6e1f3881968515316c65e33c3e","name":"grep","arguments":{"i":"Finding resolver definitions","pattern":"production_resolver|resolve_addr|PeerAddrStore|roster.*address|peer_addrs","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src","selector":null,"case":true,"gitignore":true,"skip":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":7532,"output":402,"cacheRead":51712,"cacheWrite":0,"totalTokens":59646,"reasoningTokens":148,"cost":{"input":0.037660000000000006,"output":0.01206,"cacheRead":0.025856,"cacheWrite":0,"total":0.075576}},"stopReason":"toolUse","timestamp":1784069468149,"responseId":"resp_0cb567042bb57cd4016a56bd5db95481968bf6a7eeb08f3a45","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bd6447108196b6c595545f6fafa1","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr1ukwB3fj9aTc7fMt1dYFZbkoN85SQQZR2V-bJoAY9DNrs5r8zXT4fFBRTljs4RkDSzSae7gUn291lx7LWHYbeg8AkFD59j-0Ajal9F8miODBPHD2Z991Q6GJmoFbN68OUlgqFaU1WXB6xdCOZAUJHStdsEfD9UcYKsUSB0H2F_Lcwq2wKlVZ7Fug3s85iWx7jMYtp9TOx_kSXrPdUr9GK1ABXTFBDvA1R3p2D41pnzfrMlfiUTs-yIxkLIHNXStsKr_QdqPnoL_eb-cnnX8FdfYHHU90Lv0PPHqAas_jBLKpt46TqNjOPnv-UJLyy51EooE4BeAfnBQ1N1E6VxBTJo_jt08uBsDzijcwGkPzLlDBLos2neJy5bG4ZZApRraEHv1-qMOzwTTTwVuXktRKpTx2jpGWIE31XKTgnuWTBpMtk0liUzikIh712dvqIeo9bJ9DAWkjxUwkbNU0fqp95bQMQH1BEnE840Q795GZUm6VI3BkDIFmgqY0NTyCC6lyimNRyk1FhRTn_AGlS6mzjQy3ew5hS4aG_xcaB8xApuAnRWO91-DFbLbbtj_5rniF9iDq9QR1SAMNNnj_-s3IBps0o2fXEbKWF5GNOfZjwPhMazN68DlZ8Up0UFSmk-ShoaqCdA0iToD0FrRgaLe26ac8uZNp5GfuZSw8cjILocFXzGQ7kDvpLs6BNE8aqD8pb1_VwfMG0feU9yKGot3qotOmRy_NL5yLxyvVULdXofhAoHx7TB0fknzQWvnh92tiutfBpg5rLcgN9f3Htq6oK3-vmY_HdcY949OpjEwskerfwUmdFYVN8YhJEs7dSMC9ovqUUnyotP_oOZsJKcLpTaM1MXGZMhWaes6w2bh_2AbL0AttYO8HdbPTKo98C3RuqgRUqZ3zFiEtPJCVGyHG6uE41vkdkOublDEcF9Q1va_KJKcavmbaFKuIlvgblUzK5FDnxC4qfICtHo1ecgB-EIJHUJ4fmy4bsbB-V_I0YtkdlggUB8tEdCGrCRT_mf4wN_JMjkDF8misJT2R8ZWmT0X7A5b60x0CLdu5dJ2ayf5c9XBhUVeLp5a2_y-vXanDQm1hZSnC7NXK0-CktAgwe3IyZMrrBkt2SBmAIXe3vDnxDjueOcmnIfh0IEvac39PVPgMW4RU6E2hWD8uKjiZECGRWtdAByIrK5QX_d5FwF9HGT331G2nbV3aT0fvcpB2FbcFEH55Zw4_23QgeusBUfyrm4XlcelSUiOdB8cw_9TYPIc3NVD9WhaoxrWV1c8ND5ZRNRUMRFnRDI11JJXNyiMZhBQoFJXYlawPQ0KtbceSz9WgpSJLUWsBj-ddekateZk-lxhWA07M7nRnyF5bzWCXmZ8wC2HAikojjO--vVKxvdh9NBqeCaD1Q6zIXXejVIt3ftaSbV2O0e9nbjbjK3lhTQ8nLZS3qEaab-XkP4oVqWNu8b6RiEbNzJNiGVMqvOo4PVHZnJOvCT54jMfKPF_it8CU4I4KVJunXQ3K0MjM2T4uXS6hZdjmyc8GK6CITeZuEI5MukCNw3M4gqyVeFXXmHAVKhOmonbRMl7ky7CcRW4PDfOjYZc-Gom0f8OT2BbaiinyrmcShyu4Vag231G1EMQZD1F-zdLNPfdl75JYsqxieiqcxVX1R-z5qexq0pBuDXjTNGB6Zs1cdptKLVsMkMZCty56xQLHZvlWK1uYZRnG2NfenwFESNPHEhUw551QbekLCzM8hbfJ8qnSWfs7za1TsODrkKSFykYA_pT8A4-T57gk2fsNO8UcYvy_cB_1ztCSIkpYy3QeRjocRb8z5SiZfqFGANZupgkt-IdUIAZzafyPCGsk2_k0BFdFzC6egiS78ADAoSoK-9zFQIXA==","summary":[{"type":"summary_text","text":"**Investigating peer address key mismatch**"},{"type":"summary_text","text":"**Planning cross-referencing peer IDs**"}]},{"id":"fc_0cb567042bb57cd4016a56bd6e1f148196a3b1d28b720e0941","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading remaining peer addresses\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\",\"selector\":\"31-94\"}","call_id":"call_LAmEwPpAOsf9GztiUwjYVSuw","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bd6e1f288196b95ec417eed0e021","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading remaining roster entries\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\",\"selector\":\"110-295\"}","call_id":"call_qNsyr24hQuPwdnWw90eKORzv","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bd6e1f34819692292c5cc1672461","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading peer resolution logic\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs\",\"selector\":\"1120-1205\"}","call_id":"call_jAj3cKid98zG7ZmvEG0SptV8","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bd6e1f3881968515316c65e33c3e","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding resolver definitions\",\"pattern\":\"production_resolver|resolve_addr|PeerAddrStore|roster.*address|peer_addrs\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_Bi90dtYHZLrDduKkpLclEXGi","name":"grep"}]},"duration":18982.261200010777,"ttft":8157.353900015354,"contextSnapshot":{"promptTokens":59244,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_LAmEwPpAOsf9GztiUwjYVSuw|fc_0cb567042bb57cd4016a56bd6e1f148196a3b1d28b720e0941","toolName":"read","startedAt":"2026-07-14T22:51:27.133Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"},"intent":"Reading remaining peer addresses"},"id":"4b2782be","parentId":"504e8f46","timestamp":"2026-07-14T22:51:27.133Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_qNsyr24hQuPwdnWw90eKORzv|fc_0cb567042bb57cd4016a56bd6e1f288196b95ec417eed0e021","toolName":"read","startedAt":"2026-07-14T22:51:27.133Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"},"intent":"Reading remaining roster entries"},"id":"c01cfe7b","parentId":"4b2782be","timestamp":"2026-07-14T22:51:27.133Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_jAj3cKid98zG7ZmvEG0SptV8|fc_0cb567042bb57cd4016a56bd6e1f34819692292c5cc1672461","toolName":"read","startedAt":"2026-07-14T22:51:27.133Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs"},"intent":"Reading peer resolution logic"},"id":"708202ba","parentId":"c01cfe7b","timestamp":"2026-07-14T22:51:27.133Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Bi90dtYHZLrDduKkpLclEXGi|fc_0cb567042bb57cd4016a56bd6e1f3881968515316c65e33c3e","toolName":"grep","startedAt":"2026-07-14T22:51:27.133Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src"},"intent":"Finding resolver definitions"},"id":"8c00347e","parentId":"708202ba","timestamp":"2026-07-14T22:51:27.133Z"}
{"type":"message","id":"d92a7b40","parentId":"8c00347e","timestamp":"2026-07-14T22:51:27.136Z","message":{"role":"toolResult","toolCallId":"call_LAmEwPpAOsf9GztiUwjYVSuw|fc_0cb567042bb57cd4016a56bd6e1f148196a3b1d28b720e0941","toolName":"read","content":[{"type":"text","text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n…\n      \"addrs\": [\n…\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n        {\n          \"Ip\": \"172.21.0.1:59864\"\n        },\n        {\n          \"Ip\": \"192.168.1.11:59864\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"\n        }\n      ]\n    },\n    \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {\n      \"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {\n      \"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",\n      \"addrs\": [\n        {\n          \"Ip\": \"64.227.107.3:42537\"\n        }\n      ]\n    }\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n…\n      \"addrs\": [\n…\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n        {\n          \"Ip\": \"172.21.0.1:59864\"\n        },\n        {\n          \"Ip\": \"192.168.1.11:59864\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"\n        }\n      ]\n    },\n    \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {\n      \"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {\n      \"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",\n      \"addrs\": [\n        {\n          \"Ip\": \"64.227.107.3:42537\"\n        }\n      ]\n    }\n  }\n}","startLine":1,"lineNumbers":[1,2,3,null,5,null,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"}}},"isError":false,"timestamp":1784069487136}}
{"type":"message","id":"3bdf5391","parentId":"d92a7b40","timestamp":"2026-07-14T22:51:27.138Z","message":{"role":"toolResult","toolCallId":"call_qNsyr24hQuPwdnWw90eKORzv|fc_0cb567042bb57cd4016a56bd6e1f288196b95ec417eed0e021","toolName":"read","content":[{"type":"text","text":"{\n  \"members\": [\n…\n    {\n…\n      \"address\": {\n…\n        \"addrs\": [\n…\n          {\n…\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"SCELTOUIN\",\n      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n      \"address\": {\n        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.105.1.5:61419\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:61419\"\n          },\n          {\n            \"Ip\": \"172.29.112.1:61419\"\n          },\n          {\n            \"Ip\": \"192.168.1.156:61419\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783206905\",\n      \"lease_epoch\": 399\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"GRAVITY-RUNNER\",\n      \"machine_id\": \"c507fc3b0804c21897e392d056d41694a6b2122e2ed3ad9b79f6b88bbf04d144\",\n      \"address\": {\n        \"id\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.65.194.82:55908\"\n          },\n          {\n            \"Ip\": \"192.168.1.8:55908\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784007760\",\n      \"lease_epoch\": 1130\n    }\n  ],\n  \"tombstones\": [\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"stamp\": \"1783983420\"\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"stamp\": \"1783983420\"\n    }\n  ]\n}"}],"details":{"displayContent":{"text":"{\n  \"members\": [\n…\n    {\n…\n      \"address\": {\n…\n        \"addrs\": [\n…\n          {\n…\n          },\n          {\n            \"Ip\": \"192.168.1.81:63546\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"SCELTOUIN\",\n      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n      \"address\": {\n        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.105.1.5:61419\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:61419\"\n          },\n          {\n            \"Ip\": \"172.29.112.1:61419\"\n          },\n          {\n            \"Ip\": \"192.168.1.156:61419\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783206905\",\n      \"lease_epoch\": 399\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:57900\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:57900\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:57900\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:57900\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783572729\",\n      \"lease_epoch\": 371215\n    },\n    {\n      \"pubkey_hex\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"GRAVITY-RUNNER\",\n      \"machine_id\": \"c507fc3b0804c21897e392d056d41694a6b2122e2ed3ad9b79f6b88bbf04d144\",\n      \"address\": {\n        \"id\": \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.65.194.82:55908\"\n          },\n          {\n            \"Ip\": \"192.168.1.8:55908\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784007760\",\n      \"lease_epoch\": 1130\n    }\n  ],\n  \"tombstones\": [\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"stamp\": \"1783983420\"\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"SPT_DEV\",\n      \"stamp\": \"1783983420\"\n    }\n  ]\n}","startLine":1,"lineNumbers":[1,2,null,93,null,98,null,100,null,107,null,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"}}},"isError":false,"timestamp":1784069487138}}
{"type":"message","id":"533b28c8","parentId":"3bdf5391","timestamp":"2026-07-14T22:51:27.152Z","message":{"role":"toolResult","toolCallId":"call_jAj3cKid98zG7ZmvEG0SptV8|fc_0cb567042bb57cd4016a56bd6e1f34819692292c5cc1672461","toolName":"read","content":[{"type":"text","text":"    // `now.duration_since(past)` forward — there is no `Instant - Duration`\n    // arithmetic left to underflow.\n    // [unit->REQ-HAZARD-INSTANT-UNDERFLOW]\n    #[test]\n    fn first_tick_is_due_and_never_underflows() {\n        let now = Instant::now();\n        // A day-long cadence on a process that may have started milliseconds\n        // ago: the never-run leg is due regardless, with no subtraction-from-\n        // instant anywhere in the path. (No wake edge.)\n        assert!(due(None, false, now, Duration::from_secs(86_400)));\n        // A leg that just ran is not due until its cadence elapses.\n        assert!(!due(Some(now), false, now, Duration::from_secs(86_400)));\n        // And it becomes due once enough has elapsed.\n        let earlier = now - Duration::from_millis(50);\n        assert!(due(Some(earlier), false, now, Duration::from_millis(10)));\n        assert!(!due(Some(earlier), false, now, Duration::from_millis(500)));\n    }\n\n    // [unit->REQ-CONV-2] [unit->REQ-INST-3] the wake edge (a worker's\n    // `poll_wake` marker take — registry's advertise-now, sync's freshness\n    // pull) forces a round NOW regardless of cadence: a leg that just ran (not\n    // time-due) becomes due under wake; and wake on an already-time-due leg is\n    // still one round, not a doubled one. The kernel stays underflow-safe under\n    // wake (no Instant arithmetic added).\n    #[test]\n    fn wake_forces_a_round_regardless_of_cadence() {\n        let now = Instant::now();\n        let day = Duration::from_secs(86_400);\n        // Just ran, nowhere near due — wake forces it anyway.\n        assert!(due(Some(now), true, now, day));\n        // Without the wake it would NOT be due (the contrast the marker buys).\n        assert!(!due(Some(now), false, now, day));\n        // Wake on a never-run leg is still just due (one round, idempotent OR).\n        assert!(due(None, true, now, day));\n        // Wake on an already-elapsed leg is due (the same single round).\n        let earlier = now - Duration::from_millis(50);\n        assert!(due(Some(earlier), true, now, Duration::from_millis(10)));\n    }\n\n    // [unit->REQ-MESH-3] the widened fan-out: the push target is EVERY roster\n    // member of the subnet (not the directly-paired set), excluding self and\n    // tombstoned members. This is the seam whose widening closes the staggered\n    // A→B→C repro — own rows reach all members directly, never relayed.\n    #[test]\n    fn push_target_is_the_full_roster_minus_self_and_tombstoned() {\n        use spt_store::roster::{RosterEntry, RosterStore};\n        let entry = |sub: &str, pk: &str| RosterEntry {\n            pubkey_hex: pk.to_string(),\n            subnet: sub.to_string(),\n            label: String::new(),\n            machine_id: String::new(),\n            address: None,\n            last_seen: String::new(),\n            lease_epoch: 1,\n        };\n        let mut r = RosterStore::default();\n        r.merge_entry(entry(\"home\", \"self\"));\n        r.merge_entry(entry(\"home\", \"aa\"));\n        r.merge_entry(entry(\"home\", \"bb\"));\n        r.merge_entry(entry(\"home\", \"gone\"));\n        r.merge_entry(entry(\"work\", \"cc\")); // other subnet — not a home target\n        r.tombstone(\"home\", \"gone\", \"1\");\n\n        let mut targets = push_targets(&r, \"home\", \"self\");\n        targets.sort();\n        assert_eq!(\n            targets,\n            vec![\"aa\".to_string(), \"bb\".to_string()],\n            \"all home members except self and the tombstoned one — and never another subnet's\"\n        );\n        // A subnet with only ourselves yields no targets (never pump at self).\n        assert!(push_targets(&r, \"work\", \"cc\").is_empty());\n    }\n\n    // --- Pump choreography table (P5) -------------------------------------\n    //\n    // The six choreography facts (§Goal) asserted against the SHELL's pure\n    // scheduler kernels — `compute_due` / `pre_rounds` / `run_due` / `mark_ran`\n    // / `fan_targets`, the exact fns `run_peer_pump` drives — with scripted\n    // workers and no real time, no broker, no loopback E2E. The peer-step IO\n    // (PeerIo → brain) is exercised by `tests/pump.rs`; here `run_due` takes a\n    // recording closure so the ordering/abort choreography is a unit fact.\n\n    use std::cell::RefCell;\n    use std::rc::Rc;\n\n    /// A scripted [`PumpWorker`] that records its `pre_round` into a shared log\n    /// and returns a preset cadence / wake. `peer_step` is never invoked by the\n    /// kernel tests (they drive `run_due` with a recording closure), so it is a\n    /// no-op satisfying the trait.\n\n[Showing lines 1119-1208 of 1717. Use :1209 to continue]"}],"details":{"truncation":{"content":"    // `now.duration_since(past)` forward — there is no `Instant - Duration`\r\n    // arithmetic left to underflow.\r\n    // [unit->REQ-HAZARD-INSTANT-UNDERFLOW]\r\n    #[test]\r\n    fn first_tick_is_due_and_never_underflows() {\r\n        let now = Instant::now();\r\n        // A day-long cadence on a process that may have started milliseconds\r\n        // ago: the never-run leg is due regardless, with no subtraction-from-\r\n        // instant anywhere in the path. (No wake edge.)\r\n        assert!(due(None, false, now, Duration::from_secs(86_400)));\r\n        // A leg that just ran is not due until its cadence elapses.\r\n        assert!(!due(Some(now), false, now, Duration::from_secs(86_400)));\r\n        // And it becomes due once enough has elapsed.\r\n        let earlier = now - Duration::from_millis(50);\r\n        assert!(due(Some(earlier), false, now, Duration::from_millis(10)));\r\n        assert!(!due(Some(earlier), false, now, Duration::from_millis(500)));\r\n    }\r\n\r\n    // [unit->REQ-CONV-2] [unit->REQ-INST-3] the wake edge (a worker's\r\n    // `poll_wake` marker take — registry's advertise-now, sync's freshness\r\n    // pull) forces a round NOW regardless of cadence: a leg that just ran (not\r\n    // time-due) becomes due under wake; and wake on an already-time-due leg is\r\n    // still one round, not a doubled one. The kernel stays underflow-safe under\r\n    // wake (no Instant arithmetic added).\r\n    #[test]\r\n    fn wake_forces_a_round_regardless_of_cadence() {\r\n        let now = Instant::now();\r\n        let day = Duration::from_secs(86_400);\r\n        // Just ran, nowhere near due — wake forces it anyway.\r\n        assert!(due(Some(now), true, now, day));\r\n        // Without the wake it would NOT be due (the contrast the marker buys).\r\n        assert!(!due(Some(now), false, now, day));\r\n        // Wake on a never-run leg is still just due (one round, idempotent OR).\r\n        assert!(due(None, true, now, day));\r\n        // Wake on an already-elapsed leg is due (the same single round).\r\n        let earlier = now - Duration::from_millis(50);\r\n        assert!(due(Some(earlier), true, now, Duration::from_millis(10)));\r\n    }\r\n\r\n    // [unit->REQ-MESH-3] the widened fan-out: the push target is EVERY roster\r\n    // member of the subnet (not the directly-paired set), excluding self and\r\n    // tombstoned members. This is the seam whose widening closes the staggered\r\n    // A→B→C repro — own rows reach all members directly, never relayed.\r\n    #[test]\r\n    fn push_target_is_the_full_roster_minus_self_and_tombstoned() {\r\n        use spt_store::roster::{RosterEntry, RosterStore};\r\n        let entry = |sub: &str, pk: &str| RosterEntry {\r\n            pubkey_hex: pk.to_string(),\r\n            subnet: sub.to_string(),\r\n            label: String::new(),\r\n            machine_id: String::new(),\r\n            address: None,\r\n            last_seen: String::new(),\r\n            lease_epoch: 1,\r\n        };\r\n        let mut r = RosterStore::default();\r\n        r.merge_entry(entry(\"home\", \"self\"));\r\n        r.merge_entry(entry(\"home\", \"aa\"));\r\n        r.merge_entry(entry(\"home\", \"bb\"));\r\n        r.merge_entry(entry(\"home\", \"gone\"));\r\n        r.merge_entry(entry(\"work\", \"cc\")); // other subnet — not a home target\r\n        r.tombstone(\"home\", \"gone\", \"1\");\r\n\r\n        let mut targets = push_targets(&r, \"home\", \"self\");\r\n        targets.sort();\r\n        assert_eq!(\r\n            targets,\r\n            vec![\"aa\".to_string(), \"bb\".to_string()],\r\n            \"all home members except self and the tombstoned one — and never another subnet's\"\r\n        );\r\n        // A subnet with only ourselves yields no targets (never pump at self).\r\n        assert!(push_targets(&r, \"work\", \"cc\").is_empty());\r\n    }\r\n\r\n    // --- Pump choreography table (P5) -------------------------------------\r\n    //\r\n    // The six choreography facts (§Goal) asserted against the SHELL's pure\r\n    // scheduler kernels — `compute_due` / `pre_rounds` / `run_due` / `mark_ran`\r\n    // / `fan_targets`, the exact fns `run_peer_pump` drives — with scripted\r\n    // workers and no real time, no broker, no loopback E2E. The peer-step IO\r\n    // (PeerIo → brain) is exercised by `tests/pump.rs`; here `run_due` takes a\r\n    // recording closure so the ordering/abort choreography is a unit fact.\r\n\r\n    use std::cell::RefCell;\r\n    use std::rc::Rc;\r\n\r\n    /// A scripted [`PumpWorker`] that records its `pre_round` into a shared log\r\n    /// and returns a preset cadence / wake. `peer_step` is never invoked by the\r\n    /// kernel tests (they drive `run_due` with a recording closure), so it is a\r\n    /// no-op satisfying the trait.\r","truncated":true,"truncatedBy":"lines","totalLines":599,"totalBytes":4641,"outputLines":90,"outputBytes":4641,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"    // `now.duration_since(past)` forward — there is no `Instant - Duration`\r\n    // arithmetic left to underflow.\r\n    // [unit->REQ-HAZARD-INSTANT-UNDERFLOW]\r\n    #[test]\r\n    fn first_tick_is_due_and_never_underflows() {\r\n        let now = Instant::now();\r\n        // A day-long cadence on a process that may have started milliseconds\r\n        // ago: the never-run leg is due regardless, with no subtraction-from-\r\n        // instant anywhere in the path. (No wake edge.)\r\n        assert!(due(None, false, now, Duration::from_secs(86_400)));\r\n        // A leg that just ran is not due until its cadence elapses.\r\n        assert!(!due(Some(now), false, now, Duration::from_secs(86_400)));\r\n        // And it becomes due once enough has elapsed.\r\n        let earlier = now - Duration::from_millis(50);\r\n        assert!(due(Some(earlier), false, now, Duration::from_millis(10)));\r\n        assert!(!due(Some(earlier), false, now, Duration::from_millis(500)));\r\n    }\r\n\r\n    // [unit->REQ-CONV-2] [unit->REQ-INST-3] the wake edge (a worker's\r\n    // `poll_wake` marker take — registry's advertise-now, sync's freshness\r\n    // pull) forces a round NOW regardless of cadence: a leg that just ran (not\r\n    // time-due) becomes due under wake; and wake on an already-time-due leg is\r\n    // still one round, not a doubled one. The kernel stays underflow-safe under\r\n    // wake (no Instant arithmetic added).\r\n    #[test]\r\n    fn wake_forces_a_round_regardless_of_cadence() {\r\n        let now = Instant::now();\r\n        let day = Duration::from_secs(86_400);\r\n        // Just ran, nowhere near due — wake forces it anyway.\r\n        assert!(due(Some(now), true, now, day));\r\n        // Without the wake it would NOT be due (the contrast the marker buys).\r\n        assert!(!due(Some(now), false, now, day));\r\n        // Wake on a never-run leg is still just due (one round, idempotent OR).\r\n        assert!(due(None, true, now, day));\r\n        // Wake on an already-elapsed leg is due (the same single round).\r\n        let earlier = now - Duration::from_millis(50);\r\n        assert!(due(Some(earlier), true, now, Duration::from_millis(10)));\r\n    }\r\n\r\n    // [unit->REQ-MESH-3] the widened fan-out: the push target is EVERY roster\r\n    // member of the subnet (not the directly-paired set), excluding self and\r\n    // tombstoned members. This is the seam whose widening closes the staggered\r\n    // A→B→C repro — own rows reach all members directly, never relayed.\r\n    #[test]\r\n    fn push_target_is_the_full_roster_minus_self_and_tombstoned() {\r\n        use spt_store::roster::{RosterEntry, RosterStore};\r\n        let entry = |sub: &str, pk: &str| RosterEntry {\r\n            pubkey_hex: pk.to_string(),\r\n            subnet: sub.to_string(),\r\n            label: String::new(),\r\n            machine_id: String::new(),\r\n            address: None,\r\n            last_seen: String::new(),\r\n            lease_epoch: 1,\r\n        };\r\n        let mut r = RosterStore::default();\r\n        r.merge_entry(entry(\"home\", \"self\"));\r\n        r.merge_entry(entry(\"home\", \"aa\"));\r\n        r.merge_entry(entry(\"home\", \"bb\"));\r\n        r.merge_entry(entry(\"home\", \"gone\"));\r\n        r.merge_entry(entry(\"work\", \"cc\")); // other subnet — not a home target\r\n        r.tombstone(\"home\", \"gone\", \"1\");\r\n\r\n        let mut targets = push_targets(&r, \"home\", \"self\");\r\n        targets.sort();\r\n        assert_eq!(\r\n            targets,\r\n            vec![\"aa\".to_string(), \"bb\".to_string()],\r\n            \"all home members except self and the tombstoned one — and never another subnet's\"\r\n        );\r\n        // A subnet with only ourselves yields no targets (never pump at self).\r\n        assert!(push_targets(&r, \"work\", \"cc\").is_empty());\r\n    }\r\n\r\n    // --- Pump choreography table (P5) -------------------------------------\r\n    //\r\n    // The six choreography facts (§Goal) asserted against the SHELL's pure\r\n    // scheduler kernels — `compute_due` / `pre_rounds` / `run_due` / `mark_ran`\r\n    // / `fan_targets`, the exact fns `run_peer_pump` drives — with scripted\r\n    // workers and no real time, no broker, no loopback E2E. The peer-step IO\r\n    // (PeerIo → brain) is exercised by `tests/pump.rs`; here `run_due` takes a\r\n    // recording closure so the ordering/abort choreography is a unit fact.\r\n\r\n    use std::cell::RefCell;\r\n    use std::rc::Rc;\r\n\r\n    /// A scripted [`PumpWorker`] that records its `pre_round` into a shared log\r\n    /// and returns a preset cadence / wake. `peer_step` is never invoked by the\r\n    /// kernel tests (they drive `run_due` with a recording closure), so it is a\r\n    /// no-op satisfying the trait.\r","startLine":1119,"lineNumbers":[1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":1717,"totalBytes":4641,"outputLines":90,"outputBytes":4641,"shownRange":{"start":1119,"end":1208},"nextOffset":1209}}},"isError":false,"timestamp":1784069487152}}
{"type":"message","id":"86e09b0f","parentId":"533b28c8","timestamp":"2026-07-14T22:51:27.166Z","message":{"role":"toolResult","toolCallId":"call_Bi90dtYHZLrDduKkpLclEXGi|fc_0cb567042bb57cd4016a56bd6e1f3881968515316c65e33c3e","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-daemon/src/\n### inject.rs\n 31|/// broker-PTY-`controllable`. A harness-hosted endpoint with a relay\n*32|/// (`resolve_address` is `Some`) takes the normal TCP path; an offline or\n 33|/// non-controllable perch is not a PTY-inject target. Factored verbatim from\n 34|/// `cmd_send`'s predicate so the WAN ingress shares ONE definition.\n 35|// [impl->REQ-WAN-SPT-HOSTED-DELIVERY]\n...\n 40|    }\n*41|    if spt_store::registry::resolve_address(target, owlery).is_some() {\n 42|        return false; // a relay listener exists → normal TCP delivery\n 43|    }\n 44|    spt_store::info::read_info(&spt_store::perch::resolve_perch_path(\n### livehost.rs\n 562|        };\n*563|        let relay_present = spt_store::registry::resolve_address(&id, owlery).is_some();\n 564|        let custody_pid_alive =\n 565|            read_resume_pid(&perch).is_some_and(spt_store::proc::is_process_alive);\n 566|        match restart_resume_gate(\n### nethost.rs\n 860|                let membership = accept_membership.clone();\n*861|                // Snapshot the (opt-in) roster exchange + our live address for\n 862|                // this connect; the leg runs after the proof verifies.\n 863|                let roster_rx = accept_roster.lock().unwrap().clone();\n 864|                let self_addr =\n...\n 1156|    /// Snapshot the per-dial state (endpoint, shared table, identity, membership,\n*1157|    /// the opt-in roster exchange, our live address) into a `Send + 'static`\n 1158|    /// [`DialPlan`] both the blocking [`Self::dial`] and the spawned\n 1159|    /// [`Self::submit_dial`] connect through — the ONE connect+prove+register\n 1160|    /// path, so W1's bound and the seed-proof stay single-sourced.\n### pairhost.rs\n 635|    };\n*636|    let path = spt_store::peeraddrs::peer_addrs_file();\n*637|    if let Err(e) = spt_store::peeraddrs::PeerAddrStore::record(&path, peer_hex, value) {\n 638|        eprintln!(\"PEER_ADDR_SEED_FAIL:{peer_hex}: {e}\");\n 639|    }\n 640|}\n...\n 686|/// entry on the joiner side (REQ-MESH-2) — the joiner learned the responder's\n*687|/// identity from the transferred roster, but not its address (a self-entry\n 688|/// carries none); the live ceremony connection supplies it.\n 689|// [impl->REQ-MESH-2]\n 690|fn stamp_roster_responder(roster: &mut RosterStore, subnet: &str, conn: &Connection) {\n### seedproofx.rs\n 47|use spt_proto::identity::{Identity, PublicKey};\n*48|use spt_store::peeraddrs::PeerAddrStore;\n 49|use spt_store::roster::{RosterEntry, RosterStore, Tombstone};\n 50|use spt_store::subnet::SubnetStore;\n 51|\n...\n 869|// [impl->REQ-MESH-2]\n*870|pub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\n 871|    let mut changed = false;\n 872|    for e in entries {\n 873|        if e.pubkey_hex == self_hex {\n...\n 884|\n*885|/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\n 886|/// re-read per connect (rare; honors a concurrent pairing/revoke without a\n 887|/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\n 888|/// provider stamps the node's live address onto its self-entry so peers learn\n...\n 932|            let _ = store.save();\n*933|            let path = spt_store::peeraddrs::peer_addrs_file();\n*934|            let mut pa = PeerAddrStore::load_from(&path);\n 935|            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\n 936|                let _ = pa.save_to(&path);\n 937|            }\n...\n 1044|        b.extend_from_slice(&0u32.to_be_bytes());\n*1045|        assert_eq!(dec_roster(&b), None, \"non-json address\");\n 1046|    }\n 1047|\n 1048|    // [unit->REQ-MESH-2] gap-fill seeds the dial cache from a learned member's\n...\n 1056|\n*1057|        let mut pa = PeerAddrStore::default();\n 1058|        pa.put(\"bb\", observed_b.clone()); // a fresher, locally-observed addr\n 1059|\n 1060|        let entries = vec![\n...\n 1130|    // travel the (member-auth'd) SeedTransfer leg are ABSENT from the roster\n*1131|    // frame — the roster carries identities + addresses, never key material.\n 1132|    #[test]\n 1133|    fn seed_never_appears_in_roster_gossip() {\n 1134|        let seed = vec![0x7Cu8; 20];\n\n### pump/\n#### mod.rs\n 69|use spt_store::epoch::EpochSource;\n*70|use spt_store::peeraddrs::PeerAddrStore;\n 71|use spt_store::perch;\n 72|use spt_store::subnet::SubnetStore;\n 73|use spt_store::visibility::VisibilityStore;\n...\n 205|/// address (the serde JSON `net-dial` carries). Production resolution lets\n*206|/// discovery do the work ([`production_resolver`]); hermetic tests inject a\n 207|/// concrete address map (loopback endpoints run no discovery).\n 208|pub type PeerResolver = Box<dyn Fn(&str) -> Option<serde_json::Value> + Send>;\n 209|\n...\n 211|/// DNS on the WAN (`addr_for_node_hex`).\n*212|pub fn production_resolver() -> PeerResolver {\n 213|    Box::new(|hex| addr_for_node_hex(hex).and_then(|a| serde_json::to_value(a).ok()))\n 214|}\n 215|\n...\n 252|    /// REQ-CONV-1): consulted before id-only discovery, written back after\n*253|    /// every successful dial ([`spt_store::peeraddrs::PeerAddrStore`]).\n*254|    pub peer_addrs: PathBuf,\n 255|    /// The pump's last-tick heartbeat (M8 decision 23, REQ-DAEMON-5):\n 256|    /// epoch-ms written while the loop is alive, rendered by\n 257|    /// `spt daemon status` / the `subnet status` stall warning\n...\n 282|            advertise_marker: identity.join(crate::registryhost::ADVERTISE_MARKER_FILE),\n*283|            peer_addrs: identity.join(\"peer-addrs.json\"),\n 284|            heartbeat: crate::endpoint::pump_heartbeat_path(),\n 285|            rotations: identity.join(\"rotation-pending.json\"),\n 286|        }\n...\n 626|            } else if peer_eligible(&sched, peer_hex, round_start) {\n*627|                if let Some(addr) = resolve_submit_addr(&resolver, peer_hex, &paths.peer_addrs) {\n 628|                    match brain.submit_dial(addr) {\n 629|                        Ok(()) => {\n 630|                            pending.insert(peer_hex.clone());\n...\n 665|                    ev, &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n*666|                    &mut pending, &peer_subnets, &ctx, &paths.peer_addrs, round_start,\n 667|                )?,\n 668|                DrainStep::Skip => continue, // the event carrier only carries presence\n 669|                DrainStep::RoundDone => break, // quiet (TimedOut) — drain done\n...\n 815|    ctx: &RoundCtx,\n*816|    peer_addrs: &std::path::Path,\n 817|    now: Instant,\n 818|) -> io::Result<()> {\n 819|    let is_target = peer_subnets.contains_key(&ev.remote_id_hex);\n*820|    if presence_state_effect(&ev, conns, sched, pending, peer_addrs, is_target, now) {\n 821|        // A CONNECTED peer that is a fan target this round → advertise NOW.\n 822|        if let Some(subs) = peer_subnets.get(&ev.remote_id_hex) {\n 823|            run_peer_subnets(\n...\n 852|    pending: &mut HashSet<String>,\n*853|    peer_addrs: &std::path::Path,\n 854|    is_target: bool,\n 855|    now: Instant,\n 856|) -> bool {\n...\n 864|                let _ =\n*865|                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\n 866|            }\n 867|            is_target\n 868|        }\n...\n 879|            // eligible round re-resolves via id-only discovery.\n*880|            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\n 881|            false\n 882|        }\n 883|        PRESENCE_DISCONNECTED => {\n...\n 942|/// else the injected resolver (production: id-only discovery). A stale seed costs\n*943|/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\n 944|/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\n 945|/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\n 946|/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\n...\n 952|    peer_hex: &str,\n*953|    peer_addrs: &std::path::Path,\n 954|) -> Option<serde_json::Value> {\n*955|    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\n 956|        return Some(seeded); // seeded FIRST (cold-start fast path)\n 957|    }\n 958|    resolver(peer_hex) // miss → id-only discovery\n...\n 1102|                &paths,\n*1103|                production_resolver(),\n 1104|                PumpConfig::from_config(&cfg),\n 1105|                PumpHooks::default(),\n 1106|                &stop,\n...\n 1694|        // Seeded: the recorded addr is submitted FIRST (skips discovery).\n*1695|        PeerAddrStore::record(&seeds, \"ab\", seeded_addr.clone()).unwrap();\n 1696|        assert_eq!(\n 1697|            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1698|            Some(seeded_addr.clone()),\n...\n 1703|        // resolves via id-only discovery again — the peer is never stranded.\n*1704|        PeerAddrStore::drop_seed(&seeds, \"ab\").unwrap();\n 1705|        assert_eq!(\n 1706|            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1707|            Some(id_only.clone()),\n\n## spt-net/src/net/pairing/\n### wire.rs\n 675|                serde_json::from_slice(addr_bytes)\n*676|                    .map_err(|_| PairWireError::Protocol(\"roster address not json\".into()))?,\n 677|            )\n 678|        };\n 679|        let last_seen = dec_utf8(c.field()?, \"roster last_seen\")?;\n...\n 1544|                assert_eq!(roster[0].label, \"host-a\");\n*1545|                assert_eq!(roster[0].address, Some(serde_json::json!({\"addr\": \"1.2.3.4:5\"})));\n 1546|                assert_eq!(roster[0].lease_epoch, 7);\n*1547|                assert_eq!(roster[1].address, None, \"absent address stays None\");\n 1548|                assert_eq!(tombstones.len(), 1);\n 1549|                assert_eq!(tombstones[0].pubkey_hex, \"cc\");\n 1550|            }"}],"details":{"scopePath":"spt-core/crates/spt-daemon/src, spt-core/crates/spt-net/src","searchPath":"C:\\Users\\decid\\Documents\\projects\\spt-core\\crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":38,"fileCount":7,"files":["spt-core/crates/spt-daemon/src/inject.rs","spt-core/crates/spt-daemon/src/livehost.rs","spt-core/crates/spt-daemon/src/nethost.rs","spt-core/crates/spt-daemon/src/pairhost.rs","spt-core/crates/spt-daemon/src/pump/mod.rs","spt-core/crates/spt-daemon/src/seedproofx.rs","spt-core/crates/spt-net/src/net/pairing/wire.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/src/inject.rs","count":2},{"path":"spt-core/crates/spt-daemon/src/livehost.rs","count":1},{"path":"spt-core/crates/spt-daemon/src/nethost.rs","count":2},{"path":"spt-core/crates/spt-daemon/src/pairhost.rs","count":3},{"path":"spt-core/crates/spt-daemon/src/pump/mod.rs","count":19},{"path":"spt-core/crates/spt-daemon/src/seedproofx.rs","count":8},{"path":"spt-core/crates/spt-net/src/net/pairing/wire.rs","count":3}],"truncated":false,"displayContent":"# spt-core/crates/\n\n## spt-daemon/src/\n### inject.rs\n 31│/// broker-PTY-`controllable`. A harness-hosted endpoint with a relay\n*32│/// (`resolve_address` is `Some`) takes the normal TCP path; an offline or\n 33│/// non-controllable perch is not a PTY-inject target. Factored verbatim from\n 34│/// `cmd_send`'s predicate so the WAN ingress shares ONE definition.\n 35│// [impl->REQ-WAN-SPT-HOSTED-DELIVERY]\n   │...\n 40│    }\n*41│    if spt_store::registry::resolve_address(target, owlery).is_some() {\n 42│        return false; // a relay listener exists → normal TCP delivery\n 43│    }\n 44│    spt_store::info::read_info(&spt_store::perch::resolve_perch_path(\n### livehost.rs\n 562│        };\n*563│        let relay_present = spt_store::registry::resolve_address(&id, owlery).is_some();\n 564│        let custody_pid_alive =\n 565│            read_resume_pid(&perch).is_some_and(spt_store::proc::is_process_alive);\n 566│        match restart_resume_gate(\n### nethost.rs\n  860│                let membership = accept_membership.clone();\n *861│                // Snapshot the (opt-in) roster exchange + our live address for\n  862│                // this connect; the leg runs after the proof verifies.\n  863│                let roster_rx = accept_roster.lock().unwrap().clone();\n  864│                let self_addr =\n     │...\n 1156│    /// Snapshot the per-dial state (endpoint, shared table, identity, membership,\n*1157│    /// the opt-in roster exchange, our live address) into a `Send + 'static`\n 1158│    /// [`DialPlan`] both the blocking [`Self::dial`] and the spawned\n 1159│    /// [`Self::submit_dial`] connect through — the ONE connect+prove+register\n 1160│    /// path, so W1's bound and the seed-proof stay single-sourced.\n### pairhost.rs\n 635│    };\n*636│    let path = spt_store::peeraddrs::peer_addrs_file();\n*637│    if let Err(e) = spt_store::peeraddrs::PeerAddrStore::record(&path, peer_hex, value) {\n 638│        eprintln!(\"PEER_ADDR_SEED_FAIL:{peer_hex}: {e}\");\n 639│    }\n 640│}\n    │...\n 686│/// entry on the joiner side (REQ-MESH-2) — the joiner learned the responder's\n*687│/// identity from the transferred roster, but not its address (a self-entry\n 688│/// carries none); the live ceremony connection supplies it.\n 689│// [impl->REQ-MESH-2]\n 690│fn stamp_roster_responder(roster: &mut RosterStore, subnet: &str, conn: &Connection) {\n### seedproofx.rs\n   47│use spt_proto::identity::{Identity, PublicKey};\n  *48│use spt_store::peeraddrs::PeerAddrStore;\n   49│use spt_store::roster::{RosterEntry, RosterStore, Tombstone};\n   50│use spt_store::subnet::SubnetStore;\n   51│\n     │...\n  869│// [impl->REQ-MESH-2]\n *870│pub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\n  871│    let mut changed = false;\n  872│    for e in entries {\n  873│        if e.pubkey_hex == self_hex {\n     │...\n  884│\n *885│/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\n  886│/// re-read per connect (rare; honors a concurrent pairing/revoke without a\n  887│/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\n  888│/// provider stamps the node's live address onto its self-entry so peers learn\n     │...\n  932│            let _ = store.save();\n *933│            let path = spt_store::peeraddrs::peer_addrs_file();\n *934│            let mut pa = PeerAddrStore::load_from(&path);\n  935│            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\n  936│                let _ = pa.save_to(&path);\n  937│            }\n     │...\n 1044│        b.extend_from_slice(&0u32.to_be_bytes());\n*1045│        assert_eq!(dec_roster(&b), None, \"non-json address\");\n 1046│    }\n 1047│\n 1048│    // [unit->REQ-MESH-2] gap-fill seeds the dial cache from a learned member's\n     │...\n 1056│\n*1057│        let mut pa = PeerAddrStore::default();\n 1058│        pa.put(\"bb\", observed_b.clone()); // a fresher, locally-observed addr\n 1059│\n 1060│        let entries = vec![\n     │...\n 1130│    // travel the (member-auth'd) SeedTransfer leg are ABSENT from the roster\n*1131│    // frame — the roster carries identities + addresses, never key material.\n 1132│    #[test]\n 1133│    fn seed_never_appears_in_roster_gossip() {\n 1134│        let seed = vec![0x7Cu8; 20];\n\n### pump/\n#### mod.rs\n   69│use spt_store::epoch::EpochSource;\n  *70│use spt_store::peeraddrs::PeerAddrStore;\n   71│use spt_store::perch;\n   72│use spt_store::subnet::SubnetStore;\n   73│use spt_store::visibility::VisibilityStore;\n     │...\n  205│/// address (the serde JSON `net-dial` carries). Production resolution lets\n *206│/// discovery do the work ([`production_resolver`]); hermetic tests inject a\n  207│/// concrete address map (loopback endpoints run no discovery).\n  208│pub type PeerResolver = Box<dyn Fn(&str) -> Option<serde_json::Value> + Send>;\n  209│\n     │...\n  211│/// DNS on the WAN (`addr_for_node_hex`).\n *212│pub fn production_resolver() -> PeerResolver {\n  213│    Box::new(|hex| addr_for_node_hex(hex).and_then(|a| serde_json::to_value(a).ok()))\n  214│}\n  215│\n     │...\n  252│    /// REQ-CONV-1): consulted before id-only discovery, written back after\n *253│    /// every successful dial ([`spt_store::peeraddrs::PeerAddrStore`]).\n *254│    pub peer_addrs: PathBuf,\n  255│    /// The pump's last-tick heartbeat (M8 decision 23, REQ-DAEMON-5):\n  256│    /// epoch-ms written while the loop is alive, rendered by\n  257│    /// `spt daemon status` / the `subnet status` stall warning\n     │...\n  282│            advertise_marker: identity.join(crate::registryhost::ADVERTISE_MARKER_FILE),\n *283│            peer_addrs: identity.join(\"peer-addrs.json\"),\n  284│            heartbeat: crate::endpoint::pump_heartbeat_path(),\n  285│            rotations: identity.join(\"rotation-pending.json\"),\n  286│        }\n     │...\n  626│            } else if peer_eligible(&sched, peer_hex, round_start) {\n *627│                if let Some(addr) = resolve_submit_addr(&resolver, peer_hex, &paths.peer_addrs) {\n  628│                    match brain.submit_dial(addr) {\n  629│                        Ok(()) => {\n  630│                            pending.insert(peer_hex.clone());\n     │...\n  665│                    ev, &mut brain, &mut ops, &mut workers, &due_flags, &mut conns, &mut sched,\n *666│                    &mut pending, &peer_subnets, &ctx, &paths.peer_addrs, round_start,\n  667│                )?,\n  668│                DrainStep::Skip => continue, // the event carrier only carries presence\n  669│                DrainStep::RoundDone => break, // quiet (TimedOut) — drain done\n     │...\n  815│    ctx: &RoundCtx,\n *816│    peer_addrs: &std::path::Path,\n  817│    now: Instant,\n  818│) -> io::Result<()> {\n  819│    let is_target = peer_subnets.contains_key(&ev.remote_id_hex);\n *820│    if presence_state_effect(&ev, conns, sched, pending, peer_addrs, is_target, now) {\n  821│        // A CONNECTED peer that is a fan target this round → advertise NOW.\n  822│        if let Some(subs) = peer_subnets.get(&ev.remote_id_hex) {\n  823│            run_peer_subnets(\n     │...\n  852│    pending: &mut HashSet<String>,\n *853│    peer_addrs: &std::path::Path,\n  854│    is_target: bool,\n  855│    now: Instant,\n  856│) -> bool {\n     │...\n  864│                let _ =\n *865│                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\n  866│            }\n  867│            is_target\n  868│        }\n     │...\n  879│            // eligible round re-resolves via id-only discovery.\n *880│            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\n  881│            false\n  882│        }\n  883│        PRESENCE_DISCONNECTED => {\n     │...\n  942│/// else the injected resolver (production: id-only discovery). A stale seed costs\n *943│/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\n  944│/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\n  945│/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\n  946│/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\n     │...\n  952│    peer_hex: &str,\n *953│    peer_addrs: &std::path::Path,\n  954│) -> Option<serde_json::Value> {\n *955│    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\n  956│        return Some(seeded); // seeded FIRST (cold-start fast path)\n  957│    }\n  958│    resolver(peer_hex) // miss → id-only discovery\n     │...\n 1102│                &paths,\n*1103│                production_resolver(),\n 1104│                PumpConfig::from_config(&cfg),\n 1105│                PumpHooks::default(),\n 1106│                &stop,\n     │...\n 1694│        // Seeded: the recorded addr is submitted FIRST (skips discovery).\n*1695│        PeerAddrStore::record(&seeds, \"ab\", seeded_addr.clone()).unwrap();\n 1696│        assert_eq!(\n 1697│            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1698│            Some(seeded_addr.clone()),\n     │...\n 1703│        // resolves via id-only discovery again — the peer is never stranded.\n*1704│        PeerAddrStore::drop_seed(&seeds, \"ab\").unwrap();\n 1705│        assert_eq!(\n 1706│            resolve_submit_addr(&resolver, \"ab\", &seeds),\n 1707│            Some(id_only.clone()),\n\n## spt-net/src/net/pairing/\n### wire.rs\n  675│                serde_json::from_slice(addr_bytes)\n *676│                    .map_err(|_| PairWireError::Protocol(\"roster address not json\".into()))?,\n  677│            )\n  678│        };\n  679│        let last_seen = dec_utf8(c.field()?, \"roster last_seen\")?;\n     │...\n 1544│                assert_eq!(roster[0].label, \"host-a\");\n*1545│                assert_eq!(roster[0].address, Some(serde_json::json!({\"addr\": \"1.2.3.4:5\"})));\n 1546│                assert_eq!(roster[0].lease_epoch, 7);\n*1547│                assert_eq!(roster[1].address, None, \"absent address stays None\");\n 1548│                assert_eq!(tombstones.len(), 1);\n 1549│                assert_eq!(tombstones[0].pubkey_hex, \"cc\");\n 1550│            }"},"isError":false,"timestamp":1784069487166}}
{"type":"message","id":"432f10b2","parentId":"86e09b0f","timestamp":"2026-07-14T22:51:36.885Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Identifying addr_for_node_hex definition**"},{"type":"toolCall","id":"call_lqBm7oBD6v4IsyycIg7kf5r7|fc_0cb567042bb57cd4016a56bd7708988196b9e152a0137c9e75","name":"grep","arguments":{"i":"Finding address resolver source","pattern":"fn addr_for_node_hex|pub fn addr_for_node_hex","path":"C:/Users/decid/Documents/projects/spt-core/crates","selector":null,"case":true,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_82CrxrjatnELJzPKBEOHYiRE|fc_0cb567042bb57cd4016a56bd7708ac8196af560f201cefaf53","name":"read","arguments":{"i":"Reading seed gap fill logic","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs","selector":"865-945"}},{"type":"toolCall","id":"call_7zjSxwiSPBFN47vrnkRTwmNl|fc_0cb567042bb57cd4016a56bd7708b8819684c805c339605f3f","name":"read","arguments":{"i":"Reading address store methods","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs","selector":"35-128"}},{"type":"toolCall","id":"call_cODTtGqA1mgtjb222rIEAJpy|fc_0cb567042bb57cd4016a56bd7708d081969748033a1962f355","name":"read","arguments":{"i":"Reading pump failure transitions","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","selector":"850-965"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":12674,"output":241,"cacheRead":53760,"cacheWrite":0,"totalTokens":66675,"reasoningTokens":11,"cost":{"input":0.06337000000000001,"output":0.00723,"cacheRead":0.026879999999999998,"cacheWrite":0,"total":0.09748000000000001}},"stopReason":"toolUse","timestamp":1784069487218,"responseId":"resp_0cb567042bb57cd4016a56bd6fe300819685037ff9fc5cb0d4","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bd728abc81968fb74485c8d3d336","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr13vlIt52vRoyygO_baBYp2rJ_eS0sDacDyIV5VUB-JIVYWNFm46BSuJVOJxMDDmg1AamoY-j1nv0-AzfUocPZ6bBerD9LYx8rFs_eHqPSPjs5n0esMG5Itlwvnplr03vosKkbzBXfMEnnGplzdCZD2tTHXk6paAc-P-pZ_Al_z7EtpSHo3LP0gxFmptbCbCw05nbKMibdLoMGdSz34NdxsZx92j_CtCOmxcMjz_gnA29EWVkYrF_lKuXG1KzLg7aUShW--xKeuaz3VRn0nPzK1ksFW-PNR_4z31f993Dlodz4pAiWVAy6tLE77ttR2oyYunld4VmjfGZzWu5qrA0D-IbER81bO1t4NpS62m7-jgU4JTFwPe41Iyt9kEZQHAZpFg0nn2c0H5ySPHmWzTLWPletibAcDzuX9w98-lBSUI36liJi5ENtGvwnzt9oy7jMZ1tyCh9N5MaXlFO5PmhscaaTu925wOcDoncN3nHOZKjFNFAjQJL_ns-fe7hs7MyvnUk2v5J_kOsbc2xMNk4Uuh9hOiU-FKK33-ofCF0NBVYeu_8aP2sVWVQTTu9GIDYnm7iKqOfItEN_dYAf5Mc-kCiLaLhUYIIJsHX2W0Bk3Nd9AenZ-brxle-AkFgUha2UVymfRHbHJqxymmwwgslSxMRexiZriOgXS2eKBDh0bwiuKoWQ_1cSJDs6xLHq_opgynZrwqvTCMOhMsZ0W_pepk0nb-cinc0paMVVvpmOL5VoT6vc5qRbVrdwlX6rm9Np22tgcgGgqmU3A-MMe0AdQHegqECipevQ3lfclJi0maVS0FbD1FoD0WUd3YrO_JYSIoO_SFRYf4F96nGP1kU8JVJJJsjl73b9mviIAIOh1pej3beOIF-lbI6v7mj3uGGC9IM29GC8BgDgh9XlLYM3z7r8Dsq9Meib6fid7xxrGwWprah0OrkygjvVxSaw-fAq2tSDcSnv8yBGk0gK-7ErRHw==","summary":[{"type":"summary_text","text":"**Identifying addr_for_node_hex definition**"}]},{"id":"fc_0cb567042bb57cd4016a56bd7708988196b9e152a0137c9e75","type":"function_call","status":"completed","arguments":"{\"i\":\"Finding address resolver source\",\"pattern\":\"fn addr_for_node_hex|pub fn addr_for_node_hex\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_lqBm7oBD6v4IsyycIg7kf5r7","name":"grep"},{"id":"fc_0cb567042bb57cd4016a56bd7708ac8196af560f201cefaf53","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading seed gap fill logic\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs\",\"selector\":\"865-945\"}","call_id":"call_82CrxrjatnELJzPKBEOHYiRE","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bd7708b8819684c805c339605f3f","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading address store methods\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs\",\"selector\":\"35-128\"}","call_id":"call_7zjSxwiSPBFN47vrnkRTwmNl","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bd7708d081969748033a1962f355","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading pump failure transitions\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs\",\"selector\":\"850-965\"}","call_id":"call_cODTtGqA1mgtjb222rIEAJpy","name":"read"}]},"duration":9665.982400000095,"ttft":3351.346399962902,"contextSnapshot":{"promptTokens":66434,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_lqBm7oBD6v4IsyycIg7kf5r7|fc_0cb567042bb57cd4016a56bd7708988196b9e152a0137c9e75","toolName":"grep","startedAt":"2026-07-14T22:51:36.885Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates"},"intent":"Finding address resolver source"},"id":"b166b563","parentId":"432f10b2","timestamp":"2026-07-14T22:51:36.885Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_82CrxrjatnELJzPKBEOHYiRE|fc_0cb567042bb57cd4016a56bd7708ac8196af560f201cefaf53","toolName":"read","startedAt":"2026-07-14T22:51:36.885Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs"},"intent":"Reading seed gap fill logic"},"id":"d463128d","parentId":"b166b563","timestamp":"2026-07-14T22:51:36.885Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_7zjSxwiSPBFN47vrnkRTwmNl|fc_0cb567042bb57cd4016a56bd7708b8819684c805c339605f3f","toolName":"read","startedAt":"2026-07-14T22:51:36.885Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs"},"intent":"Reading address store methods"},"id":"ed54d8ad","parentId":"d463128d","timestamp":"2026-07-14T22:51:36.885Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_cODTtGqA1mgtjb222rIEAJpy|fc_0cb567042bb57cd4016a56bd7708d081969748033a1962f355","toolName":"read","startedAt":"2026-07-14T22:51:36.885Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs"},"intent":"Reading pump failure transitions"},"id":"6c786766","parentId":"ed54d8ad","timestamp":"2026-07-14T22:51:36.885Z"}
{"type":"message","id":"84ede2cd","parentId":"6c786766","timestamp":"2026-07-14T22:51:36.895Z","message":{"role":"toolResult","toolCallId":"call_7zjSxwiSPBFN47vrnkRTwmNl|fc_0cb567042bb57cd4016a56bd7708b8819684c805c339605f3f","toolName":"read","content":[{"type":"text","text":"pub fn peer_addrs_file() -> PathBuf {\n…\n}\n\n/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\n#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\npub struct PeerAddrStore {\n    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\n    #[serde(default)]\n    pub addrs: BTreeMap<String, serde_json::Value>,\n}\n\nimpl PeerAddrStore {\n    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\n    pub fn load() -> PeerAddrStore {\n        Self::load_from(&peer_addrs_file())\n    }\n\n    /// Load from an explicit path. Absent/corrupt degrades to empty — a\n    /// broken seed file must never break peer resolution (the id-only\n    /// discovery path is always behind it).\n    pub fn load_from(path: &Path) -> PeerAddrStore {\n        match std::fs::read_to_string(path) {\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\n            Err(_) => PeerAddrStore::default(),\n        }\n    }\n\n    /// Persist to the canonical path.\n    pub fn save(&self) -> std::io::Result<()> {\n        self.save_to(&peer_addrs_file())\n    }\n\n    /// Persist to an explicit path (atomic; creates the parent dir).\n    pub fn save_to(&self, path: &Path) -> std::io::Result<()> {\n        if let Some(parent) = path.parent() {\n            std::fs::create_dir_all(parent)?;\n        }\n        let json =\n            serde_json::to_string_pretty(self).map_err(|e| std::io::Error::other(e.to_string()))?;\n        atomic_write_string(path, &json)\n    }\n\n    /// The last-known address for a peer, if one was ever recorded.\n    pub fn get(&self, peer_hex: &str) -> Option<&serde_json::Value> {\n        self.addrs.get(peer_hex)\n    }\n\n    /// Record a peer's freshly-observed address. Returns `true` when the\n    /// stored value changed (callers skip the disk write on a no-op).\n    pub fn put(&mut self, peer_hex: &str, addr: serde_json::Value) -> bool {\n        match self.addrs.get(peer_hex) {\n            Some(prev) if *prev == addr => false,\n            _ => {\n                self.addrs.insert(peer_hex.to_string(), addr);\n                true\n            }\n        }\n    }\n\n    /// Drop a peer's stored address. Returns `true` when a value was removed\n    /// (callers skip the disk write on a no-op). The stale-seed self-heal\n    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\n    /// address FAILS, the pump forgets the stale seed so the next round\n    /// re-resolves via id-only discovery — a stale addr never strands a peer.\n    // [impl->REQ-CONV-1]\n    pub fn forget(&mut self, peer_hex: &str) -> bool {\n        self.addrs.remove(peer_hex).is_some()\n    }\n\n    /// Load → put → save against `path` in one step — the shared writer the\n    /// ceremony legs and the pump use (each write re-reads, so concurrent\n    /// writers lose at most their own update, never tear the file).\n    pub fn record(path: &Path, peer_hex: &str, addr: serde_json::Value) -> std::io::Result<()> {\n        let mut store = Self::load_from(path);\n        if store.put(peer_hex, addr) {\n            store.save_to(path)?;\n        }\n        Ok(())\n    }\n\n    /// Load → forget → save against `path` in one step (the stale-seed drop\n    /// sibling of [`Self::record`]).\n    // [impl->REQ-CONV-1]\n    pub fn drop_seed(path: &Path, peer_hex: &str) -> std::io::Result<()> {\n        let mut store = Self::load_from(path);\n        if store.forget(peer_hex) {\n            store.save_to(path)?;\n        }\n        Ok(())\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    // [unit->REQ-CONV-1] absent file = empty seed; put/get round-trips\n    // through disk; a re-put of the same address is a no-edge (no disk\n    // churn from the pump's per-connect write-back).\n…\n}\n\n[Showing lines 34-131 of 181. Use :132 to continue]"}],"details":{"truncation":{"content":"}\r\n\r\n/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\r\n#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\r\npub struct PeerAddrStore {\r\n    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\r\n    #[serde(default)]\r\n    pub addrs: BTreeMap<String, serde_json::Value>,\r\n}\r\n\r\nimpl PeerAddrStore {\r\n    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\r\n    pub fn load() -> PeerAddrStore {\r\n        Self::load_from(&peer_addrs_file())\r\n    }\r\n\r\n    /// Load from an explicit path. Absent/corrupt degrades to empty — a\r\n    /// broken seed file must never break peer resolution (the id-only\r\n    /// discovery path is always behind it).\r\n    pub fn load_from(path: &Path) -> PeerAddrStore {\r\n        match std::fs::read_to_string(path) {\r\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\r\n            Err(_) => PeerAddrStore::default(),\r\n        }\r\n    }\r\n\r\n    /// Persist to the canonical path.\r\n    pub fn save(&self) -> std::io::Result<()> {\r\n        self.save_to(&peer_addrs_file())\r\n    }\r\n\r\n    /// Persist to an explicit path (atomic; creates the parent dir).\r\n    pub fn save_to(&self, path: &Path) -> std::io::Result<()> {\r\n        if let Some(parent) = path.parent() {\r\n            std::fs::create_dir_all(parent)?;\r\n        }\r\n        let json =\r\n            serde_json::to_string_pretty(self).map_err(|e| std::io::Error::other(e.to_string()))?;\r\n        atomic_write_string(path, &json)\r\n    }\r\n\r\n    /// The last-known address for a peer, if one was ever recorded.\r\n    pub fn get(&self, peer_hex: &str) -> Option<&serde_json::Value> {\r\n        self.addrs.get(peer_hex)\r\n    }\r\n\r\n    /// Record a peer's freshly-observed address. Returns `true` when the\r\n    /// stored value changed (callers skip the disk write on a no-op).\r\n    pub fn put(&mut self, peer_hex: &str, addr: serde_json::Value) -> bool {\r\n        match self.addrs.get(peer_hex) {\r\n            Some(prev) if *prev == addr => false,\r\n            _ => {\r\n                self.addrs.insert(peer_hex.to_string(), addr);\r\n                true\r\n            }\r\n        }\r\n    }\r\n\r\n    /// Drop a peer's stored address. Returns `true` when a value was removed\r\n    /// (callers skip the disk write on a no-op). The stale-seed self-heal\r\n    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\r\n    /// address FAILS, the pump forgets the stale seed so the next round\r\n    /// re-resolves via id-only discovery — a stale addr never strands a peer.\r\n    // [impl->REQ-CONV-1]\r\n    pub fn forget(&mut self, peer_hex: &str) -> bool {\r\n        self.addrs.remove(peer_hex).is_some()\r\n    }\r\n\r\n    /// Load → put → save against `path` in one step — the shared writer the\r\n    /// ceremony legs and the pump use (each write re-reads, so concurrent\r\n    /// writers lose at most their own update, never tear the file).\r\n    pub fn record(path: &Path, peer_hex: &str, addr: serde_json::Value) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.put(peer_hex, addr) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n\r\n    /// Load → forget → save against `path` in one step (the stale-seed drop\r\n    /// sibling of [`Self::record`]).\r\n    // [impl->REQ-CONV-1]\r\n    pub fn drop_seed(path: &Path, peer_hex: &str) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.forget(peer_hex) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n}\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n\r\n    // [unit->REQ-CONV-1] absent file = empty seed; put/get round-trips\r\n    // through disk; a re-put of the same address is a no-edge (no disk\r\n    // churn from the pump's per-connect write-back).\r","truncated":true,"truncatedBy":"lines","totalLines":148,"totalBytes":3804,"outputLines":98,"outputBytes":3804,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"pub fn peer_addrs_file() -> PathBuf {\n…\n}\r\n\r\n/// The on-disk + in-memory shape: peer pubkey-hex → last-known address.\r\n#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]\r\npub struct PeerAddrStore {\r\n    /// Last-known dialable address per peer (opaque `EndpointAddr` JSON).\r\n    #[serde(default)]\r\n    pub addrs: BTreeMap<String, serde_json::Value>,\r\n}\r\n\r\nimpl PeerAddrStore {\r\n    /// Load from the canonical [`peer_addrs_file`]. Absent ⇒ empty.\r\n    pub fn load() -> PeerAddrStore {\r\n        Self::load_from(&peer_addrs_file())\r\n    }\r\n\r\n    /// Load from an explicit path. Absent/corrupt degrades to empty — a\r\n    /// broken seed file must never break peer resolution (the id-only\r\n    /// discovery path is always behind it).\r\n    pub fn load_from(path: &Path) -> PeerAddrStore {\r\n        match std::fs::read_to_string(path) {\r\n            Ok(s) => serde_json::from_str(&s).unwrap_or_default(),\r\n            Err(_) => PeerAddrStore::default(),\r\n        }\r\n    }\r\n\r\n    /// Persist to the canonical path.\r\n    pub fn save(&self) -> std::io::Result<()> {\r\n        self.save_to(&peer_addrs_file())\r\n    }\r\n\r\n    /// Persist to an explicit path (atomic; creates the parent dir).\r\n    pub fn save_to(&self, path: &Path) -> std::io::Result<()> {\r\n        if let Some(parent) = path.parent() {\r\n            std::fs::create_dir_all(parent)?;\r\n        }\r\n        let json =\r\n            serde_json::to_string_pretty(self).map_err(|e| std::io::Error::other(e.to_string()))?;\r\n        atomic_write_string(path, &json)\r\n    }\r\n\r\n    /// The last-known address for a peer, if one was ever recorded.\r\n    pub fn get(&self, peer_hex: &str) -> Option<&serde_json::Value> {\r\n        self.addrs.get(peer_hex)\r\n    }\r\n\r\n    /// Record a peer's freshly-observed address. Returns `true` when the\r\n    /// stored value changed (callers skip the disk write on a no-op).\r\n    pub fn put(&mut self, peer_hex: &str, addr: serde_json::Value) -> bool {\r\n        match self.addrs.get(peer_hex) {\r\n            Some(prev) if *prev == addr => false,\r\n            _ => {\r\n                self.addrs.insert(peer_hex.to_string(), addr);\r\n                true\r\n            }\r\n        }\r\n    }\r\n\r\n    /// Drop a peer's stored address. Returns `true` when a value was removed\r\n    /// (callers skip the disk write on a no-op). The stale-seed self-heal\r\n    /// (REQ-CONV-1, PUMP-TRUTH W2): when a non-blocking submit-dial to the seeded\r\n    /// address FAILS, the pump forgets the stale seed so the next round\r\n    /// re-resolves via id-only discovery — a stale addr never strands a peer.\r\n    // [impl->REQ-CONV-1]\r\n    pub fn forget(&mut self, peer_hex: &str) -> bool {\r\n        self.addrs.remove(peer_hex).is_some()\r\n    }\r\n\r\n    /// Load → put → save against `path` in one step — the shared writer the\r\n    /// ceremony legs and the pump use (each write re-reads, so concurrent\r\n    /// writers lose at most their own update, never tear the file).\r\n    pub fn record(path: &Path, peer_hex: &str, addr: serde_json::Value) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.put(peer_hex, addr) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n\r\n    /// Load → forget → save against `path` in one step (the stale-seed drop\r\n    /// sibling of [`Self::record`]).\r\n    // [impl->REQ-CONV-1]\r\n    pub fn drop_seed(path: &Path, peer_hex: &str) -> std::io::Result<()> {\r\n        let mut store = Self::load_from(path);\r\n        if store.forget(peer_hex) {\r\n            store.save_to(path)?;\r\n        }\r\n        Ok(())\r\n    }\r\n}\r\n\r\n#[cfg(test)]\r\nmod tests {\r\n    use super::*;\r\n\r\n    // [unit->REQ-CONV-1] absent file = empty seed; put/get round-trips\r\n    // through disk; a re-put of the same address is a no-edge (no disk\r\n    // churn from the pump's per-connect write-back).\r\n…\n}","startLine":30,"lineNumbers":[30,null,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,null,180]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-store/src/peeraddrs.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":181,"totalBytes":3804,"outputLines":98,"outputBytes":3804,"shownRange":{"start":34,"end":131},"nextOffset":132}}},"isError":false,"timestamp":1784069496895}}
{"type":"message","id":"89ddefde","parentId":"84ede2cd","timestamp":"2026-07-14T22:51:36.904Z","message":{"role":"toolResult","toolCallId":"call_82CrxrjatnELJzPKBEOHYiRE|fc_0cb567042bb57cd4016a56bd7708ac8196af560f201cefaf53","toolName":"read","content":[{"type":"text","text":"/// absent** — a locally-observed address (written by the pump after a real dial)\n/// is fresher and more reachable, so it is never clobbered. Self entries are\n/// skipped. Returns whether anything changed (callers skip the disk write on a\n/// no-op). This is what lets a node that learned C's entry from B's roster later\n/// dial C directly — the Mesh-D6 reach precondition.\n// [impl->REQ-MESH-2]\npub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\n    let mut changed = false;\n    for e in entries {\n        if e.pubkey_hex == self_hex {\n            continue;\n        }\n        if let Some(addr) = &e.address {\n            if pa.get(&e.pubkey_hex).is_none() {\n                changed |= pa.put(&e.pubkey_hex, addr.clone());\n            }\n        }\n    }\n    changed\n}\n\n/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\n/// re-read per connect (rare; honors a concurrent pairing/revoke without a\n/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\n/// provider stamps the node's live address onto its self-entry so peers learn\n/// how to reach it; the sink merges the peer's slice and gap-fills the dial\n/// cache. Used by the real daemon only — tests inject their own exchange.\n// [impl->REQ-MESH-2]\npub fn production_roster_exchange() -> RosterExchange {\n    let self_hex = spt_store::nodeid::load_or_create()\n        .map(|id| id.public_key().to_hex())\n        .unwrap_or_default();\n    let provider_hex = self_hex.clone();\n    RosterExchange {\n        provider: Arc::new(move |proven: &HashSet<String>, self_addr: &serde_json::Value| {\n            let mut store = RosterStore::load();\n            let label = spt_store::hostlabel::os_hostname().unwrap_or_default();\n            let machine_id = crate::machineid::machine_id_hash().unwrap_or_default();\n            // Peek, never consume: roster propagation must not disturb the\n            // registry lease counter (the D3 rule).\n            let lease = spt_store::epoch::EpochSource::load().current();\n            let now = now_secs().to_string();\n            let addr = if self_addr.is_null() {\n                None\n            } else {\n                Some(self_addr.clone())\n            };\n            for s in proven {\n                store.upsert_self(s, &provider_hex, &label, &machine_id, addr.clone(), &now, lease);\n            }\n            let _ = store.save();\n            let mut entries = Vec::new();\n            let mut tombstones = Vec::new();\n            for s in proven {\n                let (m, t) = store.roster_for(s);\n                entries.extend(m);\n                tombstones.extend(t);\n            }\n            (entries, tombstones)\n        }),\n        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\n            let mut store = RosterStore::load();\n            for e in &entries {\n                store.merge_entry(e.clone());\n            }\n            for t in &tombstones {\n                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\n            }\n            let _ = store.save();\n            let path = spt_store::peeraddrs::peer_addrs_file();\n            let mut pa = PeerAddrStore::load_from(&path);\n            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\n                let _ = pa.save_to(&path);\n            }\n        }),\n        // Mesh-D7 (REQ-MESH-4): the peer's roster status gates the grace —\n        // tombstoned ⇒ revoked ⇒ denied; listed ⇒ present; otherwise absent.\n        // Re-read per call so a just-propagated tombstone takes effect at once.\n        member_status: Arc::new(move |subnet: &str, peer_hex: &str| {\n            let store = RosterStore::load();\n            if store.is_tombstoned(subnet, peer_hex) {\n                MemberStatus::Tombstoned\n            } else if store.find(subnet, peer_hex).is_some() {\n                MemberStatus::Present\n            } else {\n…\n            }\n        }),\n…\n    }\n}\n\n[Showing lines 864-948 of 1160. Use :949 to continue]"}],"details":{"truncation":{"content":"/// absent** — a locally-observed address (written by the pump after a real dial)\r\n/// is fresher and more reachable, so it is never clobbered. Self entries are\r\n/// skipped. Returns whether anything changed (callers skip the disk write on a\r\n/// no-op). This is what lets a node that learned C's entry from B's roster later\r\n/// dial C directly — the Mesh-D6 reach precondition.\r\n// [impl->REQ-MESH-2]\r\npub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\r\n    let mut changed = false;\r\n    for e in entries {\r\n        if e.pubkey_hex == self_hex {\r\n            continue;\r\n        }\r\n        if let Some(addr) = &e.address {\r\n            if pa.get(&e.pubkey_hex).is_none() {\r\n                changed |= pa.put(&e.pubkey_hex, addr.clone());\r\n            }\r\n        }\r\n    }\r\n    changed\r\n}\r\n\r\n/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\r\n/// re-read per connect (rare; honors a concurrent pairing/revoke without a\r\n/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\r\n/// provider stamps the node's live address onto its self-entry so peers learn\r\n/// how to reach it; the sink merges the peer's slice and gap-fills the dial\r\n/// cache. Used by the real daemon only — tests inject their own exchange.\r\n// [impl->REQ-MESH-2]\r\npub fn production_roster_exchange() -> RosterExchange {\r\n    let self_hex = spt_store::nodeid::load_or_create()\r\n        .map(|id| id.public_key().to_hex())\r\n        .unwrap_or_default();\r\n    let provider_hex = self_hex.clone();\r\n    RosterExchange {\r\n        provider: Arc::new(move |proven: &HashSet<String>, self_addr: &serde_json::Value| {\r\n            let mut store = RosterStore::load();\r\n            let label = spt_store::hostlabel::os_hostname().unwrap_or_default();\r\n            let machine_id = crate::machineid::machine_id_hash().unwrap_or_default();\r\n            // Peek, never consume: roster propagation must not disturb the\r\n            // registry lease counter (the D3 rule).\r\n            let lease = spt_store::epoch::EpochSource::load().current();\r\n            let now = now_secs().to_string();\r\n            let addr = if self_addr.is_null() {\r\n                None\r\n            } else {\r\n                Some(self_addr.clone())\r\n            };\r\n            for s in proven {\r\n                store.upsert_self(s, &provider_hex, &label, &machine_id, addr.clone(), &now, lease);\r\n            }\r\n            let _ = store.save();\r\n            let mut entries = Vec::new();\r\n            let mut tombstones = Vec::new();\r\n            for s in proven {\r\n                let (m, t) = store.roster_for(s);\r\n                entries.extend(m);\r\n                tombstones.extend(t);\r\n            }\r\n            (entries, tombstones)\r\n        }),\r\n        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\r\n            let mut store = RosterStore::load();\r\n            for e in &entries {\r\n                store.merge_entry(e.clone());\r\n            }\r\n            for t in &tombstones {\r\n                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\r\n            }\r\n            let _ = store.save();\r\n            let path = spt_store::peeraddrs::peer_addrs_file();\r\n            let mut pa = PeerAddrStore::load_from(&path);\r\n            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\r\n                let _ = pa.save_to(&path);\r\n            }\r\n        }),\r\n        // Mesh-D7 (REQ-MESH-4): the peer's roster status gates the grace —\r\n        // tombstoned ⇒ revoked ⇒ denied; listed ⇒ present; otherwise absent.\r\n        // Re-read per call so a just-propagated tombstone takes effect at once.\r\n        member_status: Arc::new(move |subnet: &str, peer_hex: &str| {\r\n            let store = RosterStore::load();\r\n            if store.is_tombstoned(subnet, peer_hex) {\r\n                MemberStatus::Tombstoned\r\n            } else if store.find(subnet, peer_hex).is_some() {\r\n                MemberStatus::Present\r\n            } else {\r","truncated":true,"truncatedBy":"lines","totalLines":297,"totalBytes":4038,"outputLines":85,"outputBytes":4038,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"/// absent** — a locally-observed address (written by the pump after a real dial)\r\n/// is fresher and more reachable, so it is never clobbered. Self entries are\r\n/// skipped. Returns whether anything changed (callers skip the disk write on a\r\n/// no-op). This is what lets a node that learned C's entry from B's roster later\r\n/// dial C directly — the Mesh-D6 reach precondition.\r\n// [impl->REQ-MESH-2]\r\npub fn gapfill_peeraddrs(pa: &mut PeerAddrStore, self_hex: &str, entries: &[RosterEntry]) -> bool {\r\n    let mut changed = false;\r\n    for e in entries {\r\n        if e.pubkey_hex == self_hex {\r\n            continue;\r\n        }\r\n        if let Some(addr) = &e.address {\r\n            if pa.get(&e.pubkey_hex).is_none() {\r\n                changed |= pa.put(&e.pubkey_hex, addr.clone());\r\n            }\r\n        }\r\n    }\r\n    changed\r\n}\r\n\r\n/// The production roster exchange: file-backed `RosterStore` + `PeerAddrStore`,\r\n/// re-read per connect (rare; honors a concurrent pairing/revoke without a\r\n/// restart). Wired onto the live host by the daemon after `NetHost::start`. The\r\n/// provider stamps the node's live address onto its self-entry so peers learn\r\n/// how to reach it; the sink merges the peer's slice and gap-fills the dial\r\n/// cache. Used by the real daemon only — tests inject their own exchange.\r\n// [impl->REQ-MESH-2]\r\npub fn production_roster_exchange() -> RosterExchange {\r\n    let self_hex = spt_store::nodeid::load_or_create()\r\n        .map(|id| id.public_key().to_hex())\r\n        .unwrap_or_default();\r\n    let provider_hex = self_hex.clone();\r\n    RosterExchange {\r\n        provider: Arc::new(move |proven: &HashSet<String>, self_addr: &serde_json::Value| {\r\n            let mut store = RosterStore::load();\r\n            let label = spt_store::hostlabel::os_hostname().unwrap_or_default();\r\n            let machine_id = crate::machineid::machine_id_hash().unwrap_or_default();\r\n            // Peek, never consume: roster propagation must not disturb the\r\n            // registry lease counter (the D3 rule).\r\n            let lease = spt_store::epoch::EpochSource::load().current();\r\n            let now = now_secs().to_string();\r\n            let addr = if self_addr.is_null() {\r\n                None\r\n            } else {\r\n                Some(self_addr.clone())\r\n            };\r\n            for s in proven {\r\n                store.upsert_self(s, &provider_hex, &label, &machine_id, addr.clone(), &now, lease);\r\n            }\r\n            let _ = store.save();\r\n            let mut entries = Vec::new();\r\n            let mut tombstones = Vec::new();\r\n            for s in proven {\r\n                let (m, t) = store.roster_for(s);\r\n                entries.extend(m);\r\n                tombstones.extend(t);\r\n            }\r\n            (entries, tombstones)\r\n        }),\r\n        sink: Arc::new(move |entries: Vec<RosterEntry>, tombstones: Vec<Tombstone>| {\r\n            let mut store = RosterStore::load();\r\n            for e in &entries {\r\n                store.merge_entry(e.clone());\r\n            }\r\n            for t in &tombstones {\r\n                store.tombstone(&t.subnet, &t.pubkey_hex, &t.stamp);\r\n            }\r\n            let _ = store.save();\r\n            let path = spt_store::peeraddrs::peer_addrs_file();\r\n            let mut pa = PeerAddrStore::load_from(&path);\r\n            if gapfill_peeraddrs(&mut pa, &self_hex, &entries) {\r\n                let _ = pa.save_to(&path);\r\n            }\r\n        }),\r\n        // Mesh-D7 (REQ-MESH-4): the peer's roster status gates the grace —\r\n        // tombstoned ⇒ revoked ⇒ denied; listed ⇒ present; otherwise absent.\r\n        // Re-read per call so a just-propagated tombstone takes effect at once.\r\n        member_status: Arc::new(move |subnet: &str, peer_hex: &str| {\r\n            let store = RosterStore::load();\r\n            if store.is_tombstoned(subnet, peer_hex) {\r\n                MemberStatus::Tombstoned\r\n            } else if store.find(subnet, peer_hex).is_some() {\r\n                MemberStatus::Present\r\n            } else {\r\n…\n            }\n        }),\n…\n    }\n}","startLine":864,"lineNumbers":[864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,null,950,951,null,965,966]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":1160,"totalBytes":4038,"outputLines":85,"outputBytes":4038,"shownRange":{"start":864,"end":948},"nextOffset":949}}},"isError":false,"timestamp":1784069496904}}
{"type":"message","id":"cb5a0bb0","parentId":"89ddefde","timestamp":"2026-07-14T22:51:36.905Z","message":{"role":"toolResult","toolCallId":"call_lqBm7oBD6v4IsyycIg7kf5r7|fc_0cb567042bb57cd4016a56bd7708988196b9e152a0137c9e75","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/spt-net/src/net/\n## endpoint.rs\n 537|// [impl->REQ-NET-1]\n*538|pub fn addr_for_node_hex(hex: &str) -> Option<EndpointAddr> {\n 539|    let pk = spt_proto::identity::PublicKey::from_hex(hex).ok()?;\n 540|    let id = EndpointId::from_bytes(&pk.to_bytes()).ok()?;\n 541|    Some(EndpointAddr::new(id))"}],"details":{"scopePath":"spt-core/crates","searchPath":"C:/Users/decid/Documents/projects/spt-core/crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":1,"fileCount":1,"files":["spt-core/crates/spt-net/src/net/endpoint.rs"],"fileMatches":[{"path":"spt-core/crates/spt-net/src/net/endpoint.rs","count":1}],"truncated":false,"displayContent":"# spt-core/crates/spt-net/src/net/\n## endpoint.rs\n 537│// [impl->REQ-NET-1]\n*538│pub fn addr_for_node_hex(hex: &str) -> Option<EndpointAddr> {\n 539│    let pk = spt_proto::identity::PublicKey::from_hex(hex).ok()?;\n 540│    let id = EndpointId::from_bytes(&pk.to_bytes()).ok()?;\n 541│    Some(EndpointAddr::new(id))"},"isError":false,"timestamp":1784069496905}}
{"type":"message","id":"374f9616","parentId":"cb5a0bb0","timestamp":"2026-07-14T22:51:36.915Z","message":{"role":"toolResult","toolCallId":"call_cODTtGqA1mgtjb222rIEAJpy|fc_0cb567042bb57cd4016a56bd7708d081969748033a1962f355","toolName":"read","content":[{"type":"text","text":"fn presence_state_effect(\n    ev: &NetPresenceEvent,\n    conns: &mut HashMap<String, u64>,\n    sched: &mut HashMap<String, PeerSched>,\n    pending: &mut HashSet<String>,\n    peer_addrs: &std::path::Path,\n    is_target: bool,\n    now: Instant,\n) -> bool {\n    match ev.kind.as_str() {\n        PRESENCE_CONNECTED => {\n            conns.insert(ev.remote_id_hex.clone(), ev.conn_id);\n            sched.remove(&ev.remote_id_hex); // live peer → reset backoff\n            pending.remove(&ev.remote_id_hex);\n            // REQ-CONV-1 write-back: seed the OBSERVED addr from the async connect.\n            if !ev.remote_addr.is_null() {\n                let _ =\n                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\n            }\n            is_target\n        }\n        PRESENCE_DIAL_FAILED => {\n            eprintln!(\n                \"PUMP_PEER_FAIL:{}:{}\",\n                ev.remote_id_hex,\n                ev.reason.as_deref().unwrap_or(\"dial failed\")\n            );\n            pending.remove(&ev.remote_id_hex);\n            let prev = sched.get(&ev.remote_id_hex).copied();\n            sched.insert(ev.remote_id_hex.clone(), next_peer_backoff(prev, now));\n            // Stale-seed self-heal (REQ-CONV-1): forget the seed so the next\n            // eligible round re-resolves via id-only discovery.\n            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\n            false\n        }\n        PRESENCE_DISCONNECTED => {\n            // Drop the cached conn — redial-eligible immediately, NO backoff (Q3).\n            conns.retain(|_, cid| *cid != ev.conn_id);\n            false\n        }\n        _ => false, // a future presence kind an older pump tolerates\n    }\n}\n\n/// Mark every due worker ran (ADR-0018 §V4: a POST-round `now`, ran =\n/// ATTEMPTED not succeeded). Non-due slots are untouched, so the stagger holds.\nfn mark_ran(last: &mut [Option<Instant>], due_flags: &[bool], now: Instant) {\n    for i in 0..last.len() {\n        if due_flags[i] {\n            last[i] = Some(now);\n        }\n    }\n}\n\n/// The round's fan-out targets: every `(subnet, peer)` this node pushes to —\n/// every member subnet that is NOT detached (REQ-SUBNET-5), crossed with that\n/// subnet's full roster minus self (REQ-MESH-3). One owned list so the order\n/// and the detached-skip are pure unit facts.\n// [impl->REQ-SUBNET-5]\nfn fan_targets(ctx: &RoundCtx, self_hex: &str) -> Vec<(String, String)> {\n    let mut out = Vec::new();\n    for sub in &ctx.subnets.subnets {\n        if ctx.attachment.is_detached(&sub.name) {\n            continue; // detached: neither advertise into nor connect to\n        }\n        for peer in push_targets(&ctx.policy.roster, &sub.name, self_hex) {\n            out.push((sub.name.clone(), peer));\n        }\n    }\n    out\n}\n\n/// The widened push target (Mesh-D6, REQ-MESH-3): every roster member of\n/// `subnet` except this node itself. Tombstoned members are already excluded by\n/// [`RosterStore::members_in`]. This is THE fan-out change — the push target is\n/// the full roster, not the directly-paired set — kept a pure function so the\n/// \"rows reach all members, never relayed\" widen is a unit fact, not just an\n/// integration property.\n// [impl->REQ-MESH-3]\nfn push_targets(\n    roster: &spt_store::roster::RosterStore,\n    subnet: &str,\n    self_hex: &str,\n) -> Vec<String> {\n    roster\n        .members_in(subnet)\n        .filter(|m| m.pubkey_hex != self_hex)\n        .map(|m| m.pubkey_hex.clone())\n        .collect()\n}\n\n/// Resolve the ONE address to submit a non-blocking dial to (M8 decisions 14/20,\n/// REQ-CONV-1 seeded order): the durable last-known address (`peer-addrs.json`)\n/// FIRST — the cold-start fast path that skips the id-only discovery round-trip —\n/// else the injected resolver (production: id-only discovery). A stale seed costs\n/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\n/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\n/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\n/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\n/// ([`handle_presence_event`]). `None` = unresolvable right now — the peer\n/// reschedules on its own cadence, never a round failure.\n// [impl->REQ-CONV-1]\nfn resolve_submit_addr(\n    resolver: &PeerResolver,\n    peer_hex: &str,\n    peer_addrs: &std::path::Path,\n) -> Option<serde_json::Value> {\n    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\n        return Some(seeded); // seeded FIRST (cold-start fast path)\n    }\n    resolver(peer_hex) // miss → id-only discovery\n}\n\n/// Open a fresh stream on `conn_id`, write one whole feed fire-and-forget,\n/// and finish it (the receiver's dispatcher classifies + applies). One\n/// stream per feed: streams are single-purpose by the demux contract.\nfn push_feed(brain: &mut Brain, conn_id: u64, feed: &[u8]) -> io::Result<()> {\n    let opened = brain.net_open_stream(conn_id, None)?;\n    brain.net_stream_send(opened.stream_id, feed, None, true)?;\n    Ok(())\n}\n\n[Showing lines 849-968 of 1717. Use :969 to continue]"}],"details":{"truncation":{"content":"    ev: &NetPresenceEvent,\r\n    conns: &mut HashMap<String, u64>,\r\n    sched: &mut HashMap<String, PeerSched>,\r\n    pending: &mut HashSet<String>,\r\n    peer_addrs: &std::path::Path,\r\n    is_target: bool,\r\n    now: Instant,\r\n) -> bool {\r\n    match ev.kind.as_str() {\r\n        PRESENCE_CONNECTED => {\r\n            conns.insert(ev.remote_id_hex.clone(), ev.conn_id);\r\n            sched.remove(&ev.remote_id_hex); // live peer → reset backoff\r\n            pending.remove(&ev.remote_id_hex);\r\n            // REQ-CONV-1 write-back: seed the OBSERVED addr from the async connect.\r\n            if !ev.remote_addr.is_null() {\r\n                let _ =\r\n                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\r\n            }\r\n            is_target\r\n        }\r\n        PRESENCE_DIAL_FAILED => {\r\n            eprintln!(\r\n                \"PUMP_PEER_FAIL:{}:{}\",\r\n                ev.remote_id_hex,\r\n                ev.reason.as_deref().unwrap_or(\"dial failed\")\r\n            );\r\n            pending.remove(&ev.remote_id_hex);\r\n            let prev = sched.get(&ev.remote_id_hex).copied();\r\n            sched.insert(ev.remote_id_hex.clone(), next_peer_backoff(prev, now));\r\n            // Stale-seed self-heal (REQ-CONV-1): forget the seed so the next\r\n            // eligible round re-resolves via id-only discovery.\r\n            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\r\n            false\r\n        }\r\n        PRESENCE_DISCONNECTED => {\r\n            // Drop the cached conn — redial-eligible immediately, NO backoff (Q3).\r\n            conns.retain(|_, cid| *cid != ev.conn_id);\r\n            false\r\n        }\r\n        _ => false, // a future presence kind an older pump tolerates\r\n    }\r\n}\r\n\r\n/// Mark every due worker ran (ADR-0018 §V4: a POST-round `now`, ran =\r\n/// ATTEMPTED not succeeded). Non-due slots are untouched, so the stagger holds.\r\nfn mark_ran(last: &mut [Option<Instant>], due_flags: &[bool], now: Instant) {\r\n    for i in 0..last.len() {\r\n        if due_flags[i] {\r\n            last[i] = Some(now);\r\n        }\r\n    }\r\n}\r\n\r\n/// The round's fan-out targets: every `(subnet, peer)` this node pushes to —\r\n/// every member subnet that is NOT detached (REQ-SUBNET-5), crossed with that\r\n/// subnet's full roster minus self (REQ-MESH-3). One owned list so the order\r\n/// and the detached-skip are pure unit facts.\r\n// [impl->REQ-SUBNET-5]\r\nfn fan_targets(ctx: &RoundCtx, self_hex: &str) -> Vec<(String, String)> {\r\n    let mut out = Vec::new();\r\n    for sub in &ctx.subnets.subnets {\r\n        if ctx.attachment.is_detached(&sub.name) {\r\n            continue; // detached: neither advertise into nor connect to\r\n        }\r\n        for peer in push_targets(&ctx.policy.roster, &sub.name, self_hex) {\r\n            out.push((sub.name.clone(), peer));\r\n        }\r\n    }\r\n    out\r\n}\r\n\r\n/// The widened push target (Mesh-D6, REQ-MESH-3): every roster member of\r\n/// `subnet` except this node itself. Tombstoned members are already excluded by\r\n/// [`RosterStore::members_in`]. This is THE fan-out change — the push target is\r\n/// the full roster, not the directly-paired set — kept a pure function so the\r\n/// \"rows reach all members, never relayed\" widen is a unit fact, not just an\r\n/// integration property.\r\n// [impl->REQ-MESH-3]\r\nfn push_targets(\r\n    roster: &spt_store::roster::RosterStore,\r\n    subnet: &str,\r\n    self_hex: &str,\r\n) -> Vec<String> {\r\n    roster\r\n        .members_in(subnet)\r\n        .filter(|m| m.pubkey_hex != self_hex)\r\n        .map(|m| m.pubkey_hex.clone())\r\n        .collect()\r\n}\r\n\r\n/// Resolve the ONE address to submit a non-blocking dial to (M8 decisions 14/20,\r\n/// REQ-CONV-1 seeded order): the durable last-known address (`peer-addrs.json`)\r\n/// FIRST — the cold-start fast path that skips the id-only discovery round-trip —\r\n/// else the injected resolver (production: id-only discovery). A stale seed costs\r\n/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\r\n/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\r\n/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\r\n/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\r\n/// ([`handle_presence_event`]). `None` = unresolvable right now — the peer\r\n/// reschedules on its own cadence, never a round failure.\r\n// [impl->REQ-CONV-1]\r\nfn resolve_submit_addr(\r\n    resolver: &PeerResolver,\r\n    peer_hex: &str,\r\n    peer_addrs: &std::path::Path,\r\n) -> Option<serde_json::Value> {\r\n    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\r\n        return Some(seeded); // seeded FIRST (cold-start fast path)\r\n    }\r\n    resolver(peer_hex) // miss → id-only discovery\r\n}\r\n\r\n/// Open a fresh stream on `conn_id`, write one whole feed fire-and-forget,\r\n/// and finish it (the receiver's dispatcher classifies + applies). One\r\n/// stream per feed: streams are single-purpose by the demux contract.\r\nfn push_feed(brain: &mut Brain, conn_id: u64, feed: &[u8]) -> io::Result<()> {\r\n    let opened = brain.net_open_stream(conn_id, None)?;\r\n    brain.net_stream_send(opened.stream_id, feed, None, true)?;\r\n    Ok(())\r\n}\r","truncated":true,"truncatedBy":"lines","totalLines":869,"totalBytes":5187,"outputLines":120,"outputBytes":5187,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"fn presence_state_effect(\n    ev: &NetPresenceEvent,\r\n    conns: &mut HashMap<String, u64>,\r\n    sched: &mut HashMap<String, PeerSched>,\r\n    pending: &mut HashSet<String>,\r\n    peer_addrs: &std::path::Path,\r\n    is_target: bool,\r\n    now: Instant,\r\n) -> bool {\r\n    match ev.kind.as_str() {\r\n        PRESENCE_CONNECTED => {\r\n            conns.insert(ev.remote_id_hex.clone(), ev.conn_id);\r\n            sched.remove(&ev.remote_id_hex); // live peer → reset backoff\r\n            pending.remove(&ev.remote_id_hex);\r\n            // REQ-CONV-1 write-back: seed the OBSERVED addr from the async connect.\r\n            if !ev.remote_addr.is_null() {\r\n                let _ =\r\n                    PeerAddrStore::record(peer_addrs, &ev.remote_id_hex, ev.remote_addr.clone());\r\n            }\r\n            is_target\r\n        }\r\n        PRESENCE_DIAL_FAILED => {\r\n            eprintln!(\r\n                \"PUMP_PEER_FAIL:{}:{}\",\r\n                ev.remote_id_hex,\r\n                ev.reason.as_deref().unwrap_or(\"dial failed\")\r\n            );\r\n            pending.remove(&ev.remote_id_hex);\r\n            let prev = sched.get(&ev.remote_id_hex).copied();\r\n            sched.insert(ev.remote_id_hex.clone(), next_peer_backoff(prev, now));\r\n            // Stale-seed self-heal (REQ-CONV-1): forget the seed so the next\r\n            // eligible round re-resolves via id-only discovery.\r\n            let _ = PeerAddrStore::drop_seed(peer_addrs, &ev.remote_id_hex);\r\n            false\r\n        }\r\n        PRESENCE_DISCONNECTED => {\r\n            // Drop the cached conn — redial-eligible immediately, NO backoff (Q3).\r\n            conns.retain(|_, cid| *cid != ev.conn_id);\r\n            false\r\n        }\r\n        _ => false, // a future presence kind an older pump tolerates\r\n    }\r\n}\r\n\r\n/// Mark every due worker ran (ADR-0018 §V4: a POST-round `now`, ran =\r\n/// ATTEMPTED not succeeded). Non-due slots are untouched, so the stagger holds.\r\nfn mark_ran(last: &mut [Option<Instant>], due_flags: &[bool], now: Instant) {\r\n    for i in 0..last.len() {\r\n        if due_flags[i] {\r\n            last[i] = Some(now);\r\n        }\r\n    }\r\n}\r\n\r\n/// The round's fan-out targets: every `(subnet, peer)` this node pushes to —\r\n/// every member subnet that is NOT detached (REQ-SUBNET-5), crossed with that\r\n/// subnet's full roster minus self (REQ-MESH-3). One owned list so the order\r\n/// and the detached-skip are pure unit facts.\r\n// [impl->REQ-SUBNET-5]\r\nfn fan_targets(ctx: &RoundCtx, self_hex: &str) -> Vec<(String, String)> {\r\n    let mut out = Vec::new();\r\n    for sub in &ctx.subnets.subnets {\r\n        if ctx.attachment.is_detached(&sub.name) {\r\n            continue; // detached: neither advertise into nor connect to\r\n        }\r\n        for peer in push_targets(&ctx.policy.roster, &sub.name, self_hex) {\r\n            out.push((sub.name.clone(), peer));\r\n        }\r\n    }\r\n    out\r\n}\r\n\r\n/// The widened push target (Mesh-D6, REQ-MESH-3): every roster member of\r\n/// `subnet` except this node itself. Tombstoned members are already excluded by\r\n/// [`RosterStore::members_in`]. This is THE fan-out change — the push target is\r\n/// the full roster, not the directly-paired set — kept a pure function so the\r\n/// \"rows reach all members, never relayed\" widen is a unit fact, not just an\r\n/// integration property.\r\n// [impl->REQ-MESH-3]\r\nfn push_targets(\r\n    roster: &spt_store::roster::RosterStore,\r\n    subnet: &str,\r\n    self_hex: &str,\r\n) -> Vec<String> {\r\n    roster\r\n        .members_in(subnet)\r\n        .filter(|m| m.pubkey_hex != self_hex)\r\n        .map(|m| m.pubkey_hex.clone())\r\n        .collect()\r\n}\r\n\r\n/// Resolve the ONE address to submit a non-blocking dial to (M8 decisions 14/20,\r\n/// REQ-CONV-1 seeded order): the durable last-known address (`peer-addrs.json`)\r\n/// FIRST — the cold-start fast path that skips the id-only discovery round-trip —\r\n/// else the injected resolver (production: id-only discovery). A stale seed costs\r\n/// one failed dial and is then dropped (`PeerAddrStore::drop_seed` on the\r\n/// resulting `DIAL_FAILED`) so the next eligible round re-resolves via discovery:\r\n/// a stale addr never strands a peer. The OBSERVED-addr write-back the old\r\n/// blocking dial carried now rides the `PRESENCE_CONNECTED` event\r\n/// ([`handle_presence_event`]). `None` = unresolvable right now — the peer\r\n/// reschedules on its own cadence, never a round failure.\r\n// [impl->REQ-CONV-1]\r\nfn resolve_submit_addr(\r\n    resolver: &PeerResolver,\r\n    peer_hex: &str,\r\n    peer_addrs: &std::path::Path,\r\n) -> Option<serde_json::Value> {\r\n    if let Some(seeded) = PeerAddrStore::load_from(peer_addrs).get(peer_hex).cloned() {\r\n        return Some(seeded); // seeded FIRST (cold-start fast path)\r\n    }\r\n    resolver(peer_hex) // miss → id-only discovery\r\n}\r\n\r\n/// Open a fresh stream on `conn_id`, write one whole feed fire-and-forget,\r\n/// and finish it (the receiver's dispatcher classifies + applies). One\r\n/// stream per feed: streams are single-purpose by the demux contract.\r\nfn push_feed(brain: &mut Brain, conn_id: u64, feed: &[u8]) -> io::Result<()> {\r\n    let opened = brain.net_open_stream(conn_id, None)?;\r\n    brain.net_stream_send(opened.stream_id, feed, None, true)?;\r\n    Ok(())\r\n}\r","startLine":848,"lineNumbers":[848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":1717,"totalBytes":5187,"outputLines":120,"outputBytes":5187,"shownRange":{"start":849,"end":968},"nextOffset":969}}},"isError":false,"timestamp":1784069496914}}
{"type":"message","id":"70bedd57","parentId":"374f9616","timestamp":"2026-07-14T22:52:02.968Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Diagnosing key mismatch and connectivity timeout**\n\n**Analyzing relay disable and firewall blocking impact**\n\n**Examining stale direct routes and roster discrepancies**"},{"type":"thinking","thinking":"**Identifying potential broker connection attribution bug**\n\n**Analyzing broker routing bug and version regression**"},{"type":"toolCall","id":"call_NbUed9t5HifzcQn0DuDIsYzb|fc_0cb567042bb57cd4016a56bd8e4d8c81969a31d0ef84224a05","name":"irc","arguments":{"i":"Sharing key mismatch finding","op":"send","to":"IsolationCodeRCA","message":"HF peer-addrs.json lines 31-38 has key 5ff50e75... (SCELTOUIN per roster lines 119+) but value.id=ecb39e40... (ENLYZEAM), while no ecb-key exists. Pump resolve uses map key first then id-only; current daemon config relay=no. Could this mismatch arise only PRESENCE_CONNECTED remote_id vs remote_addr mismatch? See pump 852-881 and seedproof gapfill 870-936 (gapfill can't create mismatch if roster addr IDs consistent). Any broker 0.31 conn attribution bug/protocol clue?","replyTo":null,"await":false,"from":null,"timeoutMs":null,"peek":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":9120,"output":984,"cacheRead":60928,"cacheWrite":0,"totalTokens":71032,"reasoningTokens":800,"cost":{"input":0.0456,"output":0.02952,"cacheRead":0.030463999999999998,"cacheWrite":0,"total":0.10558400000000001}},"stopReason":"toolUse","timestamp":1784069496922,"responseId":"resp_0cb567042bb57cd4016a56bd791fa881968cc77329b1ae7608","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bd7bf8008196a0f40e39fef136a5","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr2I5IjAcigWBtpAjnckARkr9KLL58RRAdLss_MIA9fVjHLK0kttiZynGhMPv92XfRTLGjZ18_RnyTKZ0iqBWDOnueOSC92pB65EZCqaGwpmNMFmJWVRd-yv2PpAr-lnkCMrTqAXT-r3uY0SOJgR_d5Pd8jV4zemI93Kjx1OHUc1DYSYgwvSMOaRdaEGyxyl5s794eJJUK8xinanurY4qv56kjsivS8zRiYL3wfh8PJPtJZ_UOTBkGjoo9ALFx9WBWf9tK3icVJ2Ib1avgZbLvBneGIJg0DDxr-Fs3nV6YCkcpyXBYw5q7KeaiqU-Q0bPfYTLiTl3qAReprjSegxdy28qiUeI53flf0UdySPj6BN0hFEx8BvHy0ZHbl_grYpWQG0W8MoN-6L31it_VoKc_Bq62UhwKzayrIerxhiqY-G-8g1P46QxiPx8d9jLWWMaG8mqr5aTi1pYbccCU1JFw_Qx5TGvwbapn5VouHCAK0whbW6h9906Wda5f9cCRsJ9IPAxI9rIOpxCap_nW3pda0t6CUabEO3Z3QEHJ1meg_LLhgljWVmAxm6WAyWoFVY-Np3ilaclaQE9nEPoADlWCoKfW14qQo6HnM9l6HOzDcaxyEVKZgL-YzZc6AczGjQCAWKn2yG_PfCsFNrUHlG8M35IuZNGh1PP4JCO96VdvrxG0Al-kFg11yLIyQSx642gW82ky1suB09CrZ7TmjNnMQGktiBSINMXm8luNptMQUUK-_jKfnjqes-ATCpgAbR9NygKXo0JTiuDbImMA_AXNPQ8w1anvLu63uwlzrPG2EfNmQ5IiZ3h3zpCRL9vBlnW1bWI70hqJiH2OR0j08ZA89MQ_rjupFbtg_r1yObAB4O4OCKO6a2CvdRX4Nk1p6N8K9rhrtdY98-k0xHSEH59kqlF05_ZHH7zOpd_UD_5t1T7amEwJEXmfEQr0HVm_WGZ44KWu66ziNFDSBVPiSrePack2zpxL-yec1KhK2pSSTmW78agyypbVfVg_CGa_EWAA3s8WwN9QQUjJTHavFsnDMhqdSxsJo_gaQPPt8rAvWG_IlmGIhatLjUTwbpAJqHvtfLEm5ZFo9TU4j8wXUUPyxFu5-22M7et0fljobkGk6YzYydCrxIQNnO6B4b9TtA4XdiW2p3MpDwNqIVNqxQmTHqcarHsuKkPxQams8VnUDOI6We-54daZHAOhTjc1Mmhjibs9cW14DH3Agn-7wzQ791oDoHhShS-tes4VpRBMNHSJ17BZeUGCZJ6lso01RfAfepa8Nq8CcEXM2ZKfQGlavFRcv1J4Xb6DVnPLgOolSxpvRPykKEEAa7CCiwTco_4WMhTfmsLCi6sO40nWoSzyyltyMeepBXDF_oUp9asZGVJjvrlGcgCX4ZtCigt2uwxpMMfp8WbBgruQRzo7Hunj4dNeQlRqMIhNxN6YHTreqRyiHtLN_atECdpJZNgGU82SQdIOZlWS_pZiF_j0l5LMVgMEKGmxaxebwGnQT-F3gOtPaWtjIGXEVTf1LHmQQfu4bij2H_snQ8vmDmZ5MOUp6QE-uja7ggi0ZHYpk3c9ivse6YoiaI3iwbjW32-ElOB7tPzR0zEa0GReoRnJmCviHPuID4G3TCaVlaDjTwmyaN81XENpK4HfZ-R9qr1tGN-cMVbsdFN93L_otirjJeUxRgSdVAS4GzGU8C-tTtrpUfy6T3LmHPzhY5xxSSWUNS6kNTvqlWemCStPmrVAzIgfBTNbxkP5q79EVftEinb74F3anW8y_cGLkvxmYdZlFKf3CvtoxENLB5L2Bc3WG8KQW7wUEsAcUv_74mokrfM8TVFYBO-KivLZAmoh9z6JXJdVdQJFu0fNL0wdwjIoHaGvqFZFCQdaImyY1GUnJRGyfr96gaNNiwz9bSNtGnIe-El7kyXKURCaOgdCJOOb1nBTw9PGzfug-KgV28L5pyrco1-Pk0EAn_Zsd4TRx5rw5i-mRmWGL4XCkOq8rdP5gRsJzjjXCd0sP318dm_L5JK8wn8yuO4phVs8hdYotnKIWbRetm2_dqaBOqv_HeytgZJd3rUgTt3OlN89U60QPD8-4Z-57yW_BYt4DDtMqKnrNO77kHoR_GRMJ0a4IP3LdkN1QV0EisMdHe9t67An5KbgJwoQag-xzRF5M_FqVyg9d1Xe38RJ9gUHuieYBsgJfwewDtBge4xXrPaOfF9U091agCTkJ78tgmLlxK4NxJWGLHVR5sr8dOSesezoBLN3jKQqJSKbwofUo3aVk5H95TEQlTlFF0KmsjT76HTFB6fC14AkBkRWLoH4kRxIIhHq0UXrAPmcQ0mRCBruIvDIUh2mX23YSUAARC51C2mvi1AwRe4XBJwWSqnoe_Wn-LkPocP-LpLI_ZWebZHGmF6ypLzIuKQLcBBRoIfRdiuJn5mhS5zcbRN5tYgfVfTsrX_Ghdn9CzZhuYHMco-KMlqHWlLp4XBm3-c1QIvj5sdyz7TealwjIGDQCL0unOCO_zY5cq-I1iheoi6804JcACg-5LouCuUlxIJoXfA2M3do1zzFks2XyPSemG0rpLUjrhWCeYwUsKsEkjmYV9tmbn3Owgpb_5PR9gsY_cjrvBVXdVSsLT5WObaBLXTR3oXlmWIMsFfNG_v7hQxbALxFRNoAdO1PEV_WPehOXuHTtATpdxE9UnCVyZHzppx2Bm0IZYYT6psx1YkQJZy59XzPVKr-9EJm6D5i9m6tqtunDtfMH14EettlFbAbF52NGNrK5z-GJ2BmadxcCuTtrcoDk1PDxxhNvp5LlFjrCndraSeNiCkWp9dAgtGiIgctydp3M_OiMfxIhCZJQBySMRCgYFr7oOdabTKZ1PeJowNMpsryOnfNmzp1QunLf3a43iGUPBmFt5prcWFv0kghZimQDNWO8LIY4_WkvroVQGMHkqWGmZanKtZr1f_arkVfrPtUn7pbdZ0xTRXn8ptCuhFa0Vc2njampmUZLSHBnbVHDfQpzzTTa1tODICDPskYUDI62F5rBiZ1T97qJ9oMsU1hrzQtOmtJu2QDw_EKFEZq7TwCOUdASPq5RbPTrkT5HD4nioEmX0LBfqqHeUfsRV8MBr6uHAJWl-Zn6klvAp6TE1nftjPS1VZGtZ-4462DSU1VQ1VKuuMgv9Iy3T0ctrB1jeSFLp9rh3VVJVSCdeBSuFyRgr1tfM1ePhA3Xz6CVFl28jaRUS9wfC90_A4HxaFWy-5r1IQzecj3c1kR-PPc2nJ4GU8iqxOTzIz0IJ57GdoOraVbEed1yR9AScftAWm4RJsuBT2_gd2fDdDwjv6LbscsuKdbae38Mpt6ogaHqXGZ4i9jNvdS5cmiEE-tHa3M-Cms8zMVHR_IcshPt7mQBHCb8jszCTKvgCZus9plw3mxpbCpm9TcD4I_haBIFbGzayOodXRrsueNq2lPN3pQamYwqyLar9vB0CQhk0W4ApI885_Zz9hqrQbSc1ZwBagm48UI6qDqZVJgh43DeREIwf6lNrakfJ3b6rbxnw6jmnEzTBxC_nTsJaek5BmLm8KhyIHGTv9-4Fr_Z0ThHEFwUlYEhuH5AWtfz1UaxZMw6VGFWO48JS-tAfUGzMCLTnAjdhnVYTrvYkUmumPYy6ObTRWMRd9N_beZKMRDLqC2Gihp_zwQ64-GsY-kVANX_kT88dBP52HRGOMQ6izg3x6wQA8zeYzoHGaHKjEBkHunHTjyDqG2kKryEy4AWYxEWWzAvkeEKjbvs3169gMUl30qxkQNfXgsM671-UbYzWHFusQDhcRNhhdk3EIiRIrTOfFXYHgwhS_o2F7GXHmZIappP6U_hvZQE8fdEt0bOaRXDSNKrx5a_76NQKX3jvmCurvb8fqKZ60uQXfi2geYXIFdrCZ-j54JEY4XcjC9uF7ObXWPp1bbDhPtC9vMN2pP1UbZ1nhJpBHL2XDdXqYU_VsPg6WQvnjGC2eNufSxAMp7-owH4TawWtY4hT3rCYlMFIkBN9mDPuAGirKO1RBWudYbvPK4zpwkcXMsETV8OYknydqtncpzJCMh9nmOdIfemh1BylzmBJsf-b1_CGa8ZQSTJZeq3dsCIv5Q-c","summary":[{"type":"summary_text","text":"**Diagnosing key mismatch and connectivity timeout**"},{"type":"summary_text","text":"**Analyzing relay disable and firewall blocking impact**"},{"type":"summary_text","text":"**Examining stale direct routes and roster discrepancies**"}]},{"id":"rs_0cb567042bb57cd4016a56bd8823888196828b0030a3de3cc7","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr2OTxs51dc33M__9fAiZb95G98HDs3C8IOQWfLxZOD4EvmzqsVeCkdfZ7LG5usmEOBBxBnltVUyUL7hHBT18sqkPvTZ0S4OckHxO2LWSF3lFYR1BwuiN44g46o5OWgTy_RpQH_kQlCOCwThlAbRZW6gBDZTHR5mPqJpTGamiItYkanHcmyafeSQl_JSp7x9Ox8okWtdPRJjseNADSFn5h7vN4Uzn7fIzDOuYeXRE_jQNGRq4HayoxAOaM9qHPixFi___Yz8iZ8yLBSXKYEk_QR5J4qwaNXjBFk0OgdWJVJCVDF8taJVZi_jkdUC4cyICOvCcJLu_LbE2bjVfhu5p_2QWdekt-Nw3S9hgmYdMjHDKYOXjkh_CHbAaVqILUABTG7wsyPJClNrv19tmFzdvUfn0MlSygulTPyj5ji9KEZm9VPvE8B8dzkpcm2QjgOfUs8ijW9utikSk3YtFpvZoMvZ0EbXL36T8XVzacemNyEJQqc4q1-ccdDD-AgmmlNhVy3EDwSyui1saQSSphbLDOqhX4O5K3WTNgmOjC-C3XLjUKKqQo0ywe0ZnN6AlfQyIpY3aCrjJf-ae9gtNiVkJ3jru4b4dkv8dNk6zXUDx49H1BX3h_5qjLpEkvAeJKLIw7zhl8yjEV-R568Bt6vEMy-wabB78cGAf_FgIWdLpkNbf8Ub2qgGtq6TY18rlJOwTgd9HfEYaXkg6PENkpZYKlYgryDhWgmoU1s2wBaAla3sC71L0oPDFQomZ-1usL_QVCVUCqkGK5ICdhiz5ii-QVZ9MJljOQEKFILjT581_SkSdm5T7mt8vT4Xg3aJuvfcXYtGqrff1aS7Y_HkHiQz3VdQ2_DbxwuPPfk0EG1hKAc6-5GztRl97_UhKK0VdDwpiB04hGs9XQOTNRQAMybv-hPQ8DRW3xEVVOLwPPw1GuRIfSu1SSKwj38PKML1r3_Ny5ZIz0iXqnDPAB6bfVEEIH0fbSfzYJyY8Yhhz_ofa-lOHPAxfCJHdPF2WJkTE0a5OR7TLXG9qAUuGI5MGzm6DW3wo0lGcfwppu8bBE745wWhx-a47eIq7Ki5XBWSPHVU7CRTt56oIpJKUY2_lCj9g7F8qx6ll4CjNKhfDG_Eu4FSrNryTj29W9y52_aBlhKpSqVgS8D57GoqgndC4E89qnf5Cbdepp67DEt_7U2326NB4AQTSnw5clinpRJTEVTqHj-sSPzrRVHOhiTlt9ZUg8Xz07gyXRG4f3ClxZeluNBa4RRRrsw3YwUHmnW5mt41cxkmZczs3rEte4hYSKhYuL3DHolJRxEcbHYfFBlnP_KKCTTnSHgqdyK63W-m4tfH58tPsLYypzjfQ6il9xAc3cS4PGr5wTJkR2kJxiM_v9OyiOUaIH1z7jVk3cnNnlAgVFYsAUvYRBCPx7SRGjWMKl02zcKG3sm5ILL-gKV0H40WXINKmYqw_zccge9P7-YFKd_73HIued1ICSqQuhEmxVhaMsu3skT5AXDPVk2p4QLZxrMafxDiDJiFNcbOXIw7rh9QfzJIfajUoqTHb7E9V_Ga29ySEKmMUOsnmuQ5Yb6qwKRPrVrnUrGBk6jFtwHmaOjrJJh-IdIIS6nDt-x3j8Ra46FGQBBT1RTyq7gbRNAKVTyrqXvrfGvF70pqvnafxvtt6Jw2buuiv_9GkToRS1BhK2cI0hKmGzVZpB7s7Y8FYCLCL7wtR-DdRFu92grK0Ic-RIETd2DFTGm0EdF19y2_mwJLBwtHZMFxYQuDewWtHfzZpfAfQeOvs7zyBSzWYSDiyFbcWu9dg6T9-iH6cVfw_loP5ib5Gatu2OiO9piqOeP2wHx6uRG1F4mo0Mj3UbEn1puN7hgxzagkhVpR-a6SBOCzvmw-TVIh5FGvLpIAmb_jtHF3qFcImCZZek6upUjILfvGbjXuJlxm7ziZfaJCfdFwA7fljD3c0RCGSwcUz_cTAA-djlf6eonyxvLj8TVjsdFunG-ArSIWEmDJjUEKcGTYgw9d3vBUEpuM29KzQO8CV0HMl55u1CzquSf-8m5gTBTrICNgpoNkXGXcyKXAzhWTIlSH2BMvEZRjbsbjLkiUJmKzbqQOJY1OsCTEIgODAui_gUF_WHFl3ievPb-qZ-rGrVkgLfETFEiKvVEeWB3j5xoEC-mlsNTd1h0PImBV6HkbEBkXtlRncToM0rn5nPwxzQb1NgJLKR2x4fu3iOJ_eXjAsnEcG1He-Iem-QltFLvakSwLjmP2pSVe6OgJ6bhqTbhv8y5kPW5vE6BkzTneZm5Q8qaUIDbe_xOp7gT0TDCweNld0OQ3Mn0pJmIuD5Es8x0L7qtVo-v4Z-vR1in5-GpqHUOKH-Qh65T817efkVbNQZM-9SL0xuOr2e2QR3jMV59paLZ7gKNipu_mFPd434SrL9My9ETlXPhkmlDR92JgDU5XjRGnGstCCE-_zSJ85I8VW-EJF4pxGFzBtlDGBqm1NDxzJ1rwbpkQbBP8aXXsk-r9tCuZ9CzeRl-q6_Zd4jBbFgxcqGGAAtiTyVosOOg0o7vDWYrBKg2lrV2LkDEuZsnjoRRQMHS4RZ9QtPT-7GExMTgKaxqvZfpFpegL2vJTAFM1KmooY56rIr9bXDmkm_HiAj876lSZC2AHQrEH79krPqD9EPi7apSgwOnJlwibqjb6wGOH0djF328wvNH85f7ycx9l5FIXpRCDyg446ZGcR2mBFueMlznuvD0rfbgK5Qg9xpCRxXNaR3D0","summary":[{"type":"summary_text","text":"**Identifying potential broker connection attribution bug**"},{"type":"summary_text","text":"**Analyzing broker routing bug and version regression**"}]},{"id":"fc_0cb567042bb57cd4016a56bd8e4d8c81969a31d0ef84224a05","type":"function_call","status":"completed","arguments":"{\"i\":\"Sharing key mismatch finding\",\"op\":\"send\",\"to\":\"IsolationCodeRCA\",\"message\":\"HF peer-addrs.json lines 31-38 has key 5ff50e75... (SCELTOUIN per roster lines 119+) but value.id=ecb39e40... (ENLYZEAM), while no ecb-key exists. Pump resolve uses map key first then id-only; current daemon config relay=no. Could this mismatch arise only PRESENCE_CONNECTED remote_id vs remote_addr mismatch? See pump 852-881 and seedproof gapfill 870-936 (gapfill can't create mismatch if roster addr IDs consistent). Any broker 0.31 conn attribution bug/protocol clue?\" ,\"replyTo\":null,\"await\":false,\"from\":null,\"timeoutMs\":null,\"peek\":null}","call_id":"call_NbUed9t5HifzcQn0DuDIsYzb","name":"irc"}]},"duration":26045.041199982166,"ttft":3072.5917000174522,"contextSnapshot":{"promptTokens":70048,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_NbUed9t5HifzcQn0DuDIsYzb|fc_0cb567042bb57cd4016a56bd8e4d8c81969a31d0ef84224a05","toolName":"irc","startedAt":"2026-07-14T22:52:02.969Z","intent":"Sharing key mismatch finding"},"id":"f507bd54","parentId":"70bedd57","timestamp":"2026-07-14T22:52:02.969Z"}
{"type":"message","id":"fe03c7d5","parentId":"f507bd54","timestamp":"2026-07-14T22:52:02.969Z","message":{"role":"toolResult","toolCallId":"call_NbUed9t5HifzcQn0DuDIsYzb|fc_0cb567042bb57cd4016a56bd8e4d8c81969a31d0ef84224a05","toolName":"irc","content":[{"type":"text","text":"Delivered to 1 peer(s):\n- IsolationCodeRCA: injected"}],"details":{"op":"send","from":"IsolationLogRCA","to":"IsolationCodeRCA","receipts":[{"to":"IsolationCodeRCA","outcome":"injected"}]},"isError":false,"timestamp":1784069522969}}
{"type":"message","id":"7c146157","parentId":"fe03c7d5","timestamp":"2026-07-14T22:52:03.157Z","message":{"role":"user","content":"Your current interruptible wait was interrupted because an IRC message arrived from your parent agent `Main`.\n\nParent IRC message:\n\nPlease finalize now. Frame pinned steady-state mechanism separately from unproven initial transient. Include exact code/state/log anchors, falsified hypotheses, and remediation/test shape without mutating live daemons.","attribution":"agent","timestamp":1784069503827,"steering":true}}
{"type":"message","id":"5ae2495c","parentId":"7c146157","timestamp":"2026-07-14T22:52:25.752Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning precise log anchoring**\n\n**Analyzing peer isolation cause chain**\n\n**Verifying node status discrepancy**"},{"type":"toolCall","id":"call_us7XEsmUnLIraJbOig2lgt8I|fc_0cb567042bb57cd4016a56bda662d48196be9373150bc2eccc","name":"read","arguments":{"i":"Anchoring daemon network config","path":"C:/Users/decid/AppData/Local/spt-core/daemon.json","selector":"1-20"}},{"type":"toolCall","id":"call_Wn2XOjOdccXc6i3Uovvai9Uz|fc_0cb567042bb57cd4016a56bda662e88196aebd8ec1031698f6","name":"read","arguments":{"i":"Anchoring current peer seeds","path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","selector":"1-94"}},{"type":"toolCall","id":"call_kyGFhiDFTOgnmuiZdnvh781S|fc_0cb567042bb57cd4016a56bda662f08196ba88923f418bed92","name":"read","arguments":{"i":"Anchoring last-heard watermarks","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","selector":"1-2"}},{"type":"toolCall","id":"call_dqcXy20quRL3gqjnOJkZ6WRX|fc_0cb567042bb57cd4016a56bda6635c81969b63a3982f7c2267","name":"read","arguments":{"i":"Anchoring latest failures","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"643400-643517"}},{"type":"toolCall","id":"call_MXFP0gRvN9iWv2HRW6DOpOWr|fc_0cb567042bb57cd4016a56bda663648196aa04fe700ab90d7e","name":"read","arguments":{"i":"Anchoring generation startup","path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","selector":"1-36"}},{"type":"toolCall","id":"call_6Fng8WgJzhQck4Mv7aOjcEo6|fc_0cb567042bb57cd4016a56bda6636c8196b2f8f99611cf2daa","name":"read","arguments":{"i":"Anchoring status code","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","selector":"4110-4198"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":6156,"output":810,"cacheRead":65024,"cacheWrite":0,"totalTokens":71990,"reasoningTokens":516,"cost":{"input":0.030780000000000002,"output":0.024300000000000002,"cacheRead":0.032512,"cacheWrite":0,"total":0.087592}},"stopReason":"toolUse","timestamp":1784069523171,"responseId":"resp_0cb567042bb57cd4016a56bd93ccc48196b69d5259da611e20","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bd97bd808196a460edb78303ead9","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr2mhoEaEammSj0vv9-BQzbvxsuZb-xwiabiA1bNCKMYZfaGNy2K-hivw1bdzGXhlDTiKa5TMS69ldZiAVoEoLXdjajIl0E4iseaceVMV6_9G2ykTEq_MCPPKD7pXKC7_yc3zZXYUV6YBIM9Xlycu6-btvz7TVK0qsJfdv7pWmXRrjFFOKxtuLoB6Blj189jx0oPxeB5nKnoxbwo84ivu6IXY_vuRL3XqSBn37TOl__jaPRptPo68xvhEwi6dxMHYell2tFqilz9R8SS0SCgCauOc2Ol_SDuL8ipc7ArGeHHizYce3biuDsS3KUXiW7c7DvBpHOUKBqapUxIDejQKaG1rkYks58RG1OrccI1KSoNXu9Z7mDh4HTzL3gB8cBml3r9BYGoLZd_UAV_yEPuB3trAYjQTorReOU-KIJBY47_AbRH344r-SRMAaId3ggJ6sRHKh-TLjoClPl2hIqg6F-WSfanwEN_9aK3Of7x-eLemndCSZ1yamFEBWw72uex_sTJSFen3h3eCw6ulM1vIzjKyN8fDTES-ASPDgr4lsVMEER1i6FD5Tard7i1fV8gRV491w-dnF1h_MdH4DCDI8Lps-Q451BFNXhCF5iBV6CByBf3n5jV429evFckisFpc0bD4g8nDz6fGvzCI6DjYJPMmPwa1zBnF5UzEM7OCCcEtbgbSrBGeEy_8eo16Fl5ZzuIbBMxe8T5A43FoXAcMA2NNDFLE0V9_aXnqCa5zd-cz9g-9nLkkHDN5W1Fy6mrt6y8ZdIqZBBHNTTS5eFiT2IWJXDMo9houNKbF3mNzjeHcJy-w-mnNSeV4stTpdrqGpnf86UmDgbxRYhNfDjXSBjb8PPyPAmwAFucVCx_GsKWtSW_95EkA2apq5_HNW164vk9ozE7weLHd_sPQEIqCOZHXoTI2hAQtOAm_5c_jpb59FucTUJQ-Vdj5HVmALB09EyAEi3j-yiNUC4awdLh5yzfyE_-AZ-p9z-fUCuY5wMOdvx9dVQIY1_cz-Y63e9K0dVC9zuiQU8qErXkw0H5472kD9cEjeCOvOs7BtIp5bvA50Qjvw3J4FA3bvZXy6_P7mCe9ZkWCIIo-2ok0nd73PTKiMRrT8LS4PTPh9IRGE9ezsXR9EVcvYNzAXLL-rP1J333_xmZ33izjLVv6o-iYJobNioYjQd21qndaB_gJZAykTSg1662H_E3xP_NcK_jJ_K_Fz7OB1MeJ7sICcdU4sBE8UOygWgSwG2y3E0WYJTpqn3Kx-T4Lh0V04L4vhwrxRJNKQnMhXpHlpdis_qDJJHMT4FlVRPodyiWWN6mVHKwnohcMeM3NVj6FttRWwFF8zoWL-hlpj2Do9IIBsvNTaam5PLSOoXwvvKokkJx2vDoeAIWzOkaXamSptVO97hfIRlZpn0DV8GWylZy0LdhalI-tqUN-er37yBbDpa8zY579cIn5RrSwPSzKwJCeaBSwKfiBH1_hwdyDx9tZAiqNeFA1VwNxbnwLZAzDN9VkjsZ2HBhmgRUsfmIhmaHriL8Ru47BQgMVi7-L_rbZSBqunIORqGHeskkITr-7Wjyx5M9WVNVkrTP6ZArTPMNVc_XBDXbXGgEIYqttrFpG10Q0MYSlqZJdVGnlyzUUA9cak6GSWLNOqREkqG_G3B_8772x8IX6iKmvlrtUSD6yZncrYT3XO3D0137FiCj1a1u6YQCR8UO5zg8LNbLrNA-sMWIxTMUnIY5AxDSsF23HoStNXsV0-o9WIeiBHMpMp8qKOQ_k6x7xQt-X7stPWbYszcfoLj4nfrKNgW6o_qXGarlyYZFC0LGAJVzC-ELov5cMTsacX9a6S-670cqMDSMf4rk3aOUhM36w6zjZGty_Y2iYoaTdY5ajMZ-Af_th1Z_xYUvik_wZ7m8yGnpSRbbOat0tw8SkeBxf82A_vFIjUF41c2VlskGwBMfr9DBp6B2hbIFq99NcnEIv2Z_XeRScvEc_dZfGdGB_U2dO-ln0dGPDk6PC_QzEP_k8JgfNxaG1klxh3TRZKsTJaFpaIs_zpCDc_u9v--W5btWp00VSHR2dTea5pCE5e3Ix3LgL1y-3yMXtLHZV0HHbw0Hqv9fC57x0P_Rz1fBenS2f-mUVG0srNFTPG6xBwR-5K7xz_8Ucx3AprM5u4XYhafjcFEEH5V7bsOBijNtrcx9n0KDY64zBsJ9evSg65QOBK2Q9_H5N3QhfHF9hiqcs6HiPD6yk_eAvb83kB583-3Rjcw3AmEAHx4qfRqWKf5TVFszglDI6rW4ACjd3WaGRbzDleWwVQ2cvY-3Us4LcTEHL-4jq68q2se9G3lG11cam_dfaM8Cn6HRYMfE8iaLv4tojzn8206VVSF4kHZeY6-qk5pjNnff1oXZhKTnhflH-Bybl2tE3ffco6EobEIhl6U082-IKknW8wO42IPRDAFAPWejxse8cWv5_jU1-ZSlRY8lfwz9HUU9UQKMgEvav53dfpMLALL4WRbICbHURtMpqZv2js3pe3lTuT97UgQhrbD3xuWyJiIqC346PqPngmHZbEXXmzRpfU9UKXroHZh6k6b1xnSBDnr_5UpDKxDpPbIFXUF09B3l5bboxFlZHDTiFTlWYc9LBqeGR3Wy_innKv_25lZ_2n75C3hms6cfzS29aHpGscf0WJwA2MDFC5vfwoIrERv-ZXDODvxUUd105XB82xcOhBrIoc96UXoLC-wBT0GkpvOFi0woQpRgmNXx_HM2ORzMyGw4TiK09TM4V4juMvOQzOwNZf3ok5DIImggWTntb2OWUgtgpAeTBNiHasj-9mwVwDY6Yw_86hTjxqOXoFNQiWQEPup1YGhYvrLpgOqzw4_fwaW6xyjhlf0GKG7V27ikgmmqvsO_C1ukq3-zKhF5LSbgPMQ6rp5zx-zG6xAsBoU-py9Ek9y6zH3WxoHBubKu-35eIzKKsMsyUgP6EdAYC7VNE38eI-ZjI1EUisxbm67HMGF7cbb-yvJM68-fin_KviXF1kHpYK4Obe-GoVkbNI-_zvujJTB3NvGdq26gTasIu1PjId-N9UzXAQ72bg8s0SqXwOD6qDe8kGYWd2t439BSll7brzyowsek8IpKKqR3Dl3Of8TAO0W8Ffwm7qhzEaFHzOT3XhsftjDL-UWdRdJtdas_YAvAVwAyU0NBIx6HAnIUvoTq3K-IueaVcZruMz54nZJqpyHslZzb_m9rbo4_ENidQjuGWg5SRijBCDtCd8ckJJmy9hyPwSujPT1sZZIi1HQUMNByzm9LqSPcjB8koCJiXzhnEU2RGjwCHXuiHJq9uvVyFllzxEIJeyEu8KBiEClZ4VkOuSxlR5-eH6oBUu0T-cB9aZ95M45kiGZ9LzyoVPYF6WWdzDNE-I31ODfPRgkTgfpwt2s7Sc0sipuYN0xi-MAW45lmReQBtkFHuxO3VOJn7eLg0LjXUTxbp1_PxInMMNgpB3bbF0hp8jHLtgoJwlafN-iK_PBSWxDsswvUpT5fd6f5jQkMGz9s1Q-KIgS9cUUk-AQ_Qf7CfmLbb0Cjw7RTJ20LulkWMHVhddbfcomNaAM_ZDDlpYh2nHLQAYcMuaSe-CJmBFxpx924mgHJ4YFdP1uuGNS9SUCUeF-K0AOoYWhKWaIzKStEv5dDf0Avlbq65M_llqnXItiMgautBjeP9O7eM_O4_cdASXd_m81e79UaFsDmGOjz_RiTkO879TNGCB_y1cqSPI74Lkz6uNM6stg1JdM1ss639F7j-SCwL-MqfWaWVq9HCOcEJDHutqip_fOl7caAbmF-1Erat0FsKHWd9S5rX-2omTEzlSodoiIkWaTJzz_x1vnKyNQ9UA7bY1S2kqPGHU1keG8rA9IdIfhaLcUd6BbL2WtniMTbEefBRTbw9NI6Nn7zMCEjmhlyN-xXTUwrDsAwUjBctBUJaFyQP73uGRca-QdJ-jpHTGLUqT0nJB1dVNdIJblh0-kxJKJHbfP44POaMJ44Sg3oMDn_g8_SujEqKDKcfuI1dkA_siitBFFGxhQ7mwQCL9us69ljghdC9ZgN8pBxQGwSQxRKbiwnh4GXCborp6XRC0moU6h0CjHm6qBSv1cExcqQhmcV7VC7cmo9PjlT84itvQkHK4_Wl3LYFIVWebG6v4a43zD5YsPw3uQCnn8PkWJ210vfgO5WksVQ0AB8Wk5HHompfj2rsjkOIzg=","summary":[{"type":"summary_text","text":"**Planning precise log anchoring**"},{"type":"summary_text","text":"**Analyzing peer isolation cause chain**"},{"type":"summary_text","text":"**Verifying node status discrepancy**"}]},{"id":"fc_0cb567042bb57cd4016a56bda662d48196be9373150bc2eccc","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring daemon network config\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/daemon.json\",\"selector\":\"1-20\"}","call_id":"call_us7XEsmUnLIraJbOig2lgt8I","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bda662e88196aebd8ec1031698f6","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring current peer seeds\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\",\"selector\":\"1-94\"}","call_id":"call_Wn2XOjOdccXc6i3Uovvai9Uz","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bda662f08196ba88923f418bed92","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring last-heard watermarks\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta\",\"selector\":\"1-2\"}","call_id":"call_kyGFhiDFTOgnmuiZdnvh781S","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bda6635c81969b63a3982f7c2267","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring latest failures\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"643400-643517\"}","call_id":"call_dqcXy20quRL3gqjnOJkZ6WRX","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bda663648196aa04fe700ab90d7e","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring generation startup\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"selector\":\"1-36\"}","call_id":"call_MXFP0gRvN9iWv2HRW6DOpOWr","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bda6636c8196b2f8f99611cf2daa","type":"function_call","status":"completed","arguments":"{\"i\":\"Anchoring status code\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"selector\":\"4110-4198\"}","call_id":"call_6Fng8WgJzhQck4Mv7aOjcEo6","name":"read"}]},"duration":22578.91519999504,"ttft":4594.4520000219345,"contextSnapshot":{"promptTokens":71180,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_us7XEsmUnLIraJbOig2lgt8I|fc_0cb567042bb57cd4016a56bda662d48196be9373150bc2eccc","toolName":"read","startedAt":"2026-07-14T22:52:25.752Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/daemon.json"},"intent":"Anchoring daemon network config"},"id":"abac618a","parentId":"5ae2495c","timestamp":"2026-07-14T22:52:25.752Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_Wn2XOjOdccXc6i3Uovvai9Uz|fc_0cb567042bb57cd4016a56bda662e88196aebd8ec1031698f6","toolName":"read","startedAt":"2026-07-14T22:52:25.752Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"},"intent":"Anchoring current peer seeds"},"id":"f965c65b","parentId":"abac618a","timestamp":"2026-07-14T22:52:25.752Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_kyGFhiDFTOgnmuiZdnvh781S|fc_0cb567042bb57cd4016a56bda662f08196ba88923f418bed92","toolName":"read","startedAt":"2026-07-14T22:52:25.752Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta"},"intent":"Anchoring last-heard watermarks"},"id":"c61634ee","parentId":"f965c65b","timestamp":"2026-07-14T22:52:25.752Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_dqcXy20quRL3gqjnOJkZ6WRX|fc_0cb567042bb57cd4016a56bda6635c81969b63a3982f7c2267","toolName":"read","startedAt":"2026-07-14T22:52:25.752Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Anchoring latest failures"},"id":"1d7a8535","parentId":"c61634ee","timestamp":"2026-07-14T22:52:25.752Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_MXFP0gRvN9iWv2HRW6DOpOWr|fc_0cb567042bb57cd4016a56bda663648196aa04fe700ab90d7e","toolName":"read","startedAt":"2026-07-14T22:52:25.752Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"intent":"Anchoring generation startup"},"id":"73312453","parentId":"1d7a8535","timestamp":"2026-07-14T22:52:25.752Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_6Fng8WgJzhQck4Mv7aOjcEo6|fc_0cb567042bb57cd4016a56bda6636c8196b2f8f99611cf2daa","toolName":"read","startedAt":"2026-07-14T22:52:25.752Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"intent":"Anchoring status code"},"id":"0fbcb90c","parentId":"73312453","timestamp":"2026-07-14T22:52:25.752Z"}
{"type":"message","id":"28dbf883","parentId":"0fbcb90c","timestamp":"2026-07-14T22:52:25.758Z","message":{"role":"toolResult","toolCallId":"call_us7XEsmUnLIraJbOig2lgt8I|fc_0cb567042bb57cd4016a56bda662d48196be9373150bc2eccc","toolName":"read","content":[{"type":"text","text":"{\n  \"pulse_period_ms\": 5000,\n  \"protection_window_ms\": 2000,\n  \"crash_grace_ms\": 2000,\n  \"full_auto_update\": false,\n  \"relay\": \"n0\",\n  \"peer_pump\": true,\n  \"registry_pump_period_ms\": 30000,\n  \"registry_evict_after_ms\": 300000,\n  \"notif_pump_period_ms\": 15000,\n  \"sync_pull_period_ms\": 60000,\n  \"update_check_period_ms\": 3600000,\n  \"detached_subnets\": [],\n  \"worker_reap_ttl_secs\": 86400,\n  \"startup_endpoints\": [\n    {\n      \"id\": \"mobile-gw\",\n      \"adapter\": \"mobile\",\n      \"cwd\": \"C:\\\\Users\\\\decid\\\\Documents\\\\projects\"\n    }\n  ]\n}"}],"details":{"displayContent":{"text":"{\n  \"pulse_period_ms\": 5000,\n  \"protection_window_ms\": 2000,\n  \"crash_grace_ms\": 2000,\n  \"full_auto_update\": false,\n  \"relay\": \"n0\",\n  \"peer_pump\": true,\n  \"registry_pump_period_ms\": 30000,\n  \"registry_evict_after_ms\": 300000,\n  \"notif_pump_period_ms\": 15000,\n  \"sync_pull_period_ms\": 60000,\n  \"update_check_period_ms\": 3600000,\n  \"detached_subnets\": [],\n  \"worker_reap_ttl_secs\": 86400,\n  \"startup_endpoints\": [\n    {\n      \"id\": \"mobile-gw\",\n      \"adapter\": \"mobile\",\n      \"cwd\": \"C:\\\\Users\\\\decid\\\\Documents\\\\projects\"\n    }\n  ]\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/daemon.json"}}},"isError":false,"timestamp":1784069545758}}
{"type":"message","id":"af2b9439","parentId":"28dbf883","timestamp":"2026-07-14T22:52:25.759Z","message":{"role":"toolResult","toolCallId":"call_kyGFhiDFTOgnmuiZdnvh781S|fc_0cb567042bb57cd4016a56bda662f08196ba88923f418bed92","toolName":"read","content":[{"type":"text","text":"{\n  \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,\n  \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,\n  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n…\n}\n\n[Showing lines 1-5 of 7. Use :6 to continue]"}],"details":{"truncation":{"content":"{\n  \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,\n  \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,\n  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,","truncated":true,"truncatedBy":"lines","totalLines":7,"totalBytes":341,"outputLines":5,"outputBytes":341,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"{\n  \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,\n  \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,\n  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n…\n}","startLine":1,"lineNumbers":[1,2,3,4,5,null,7]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":7,"totalBytes":341,"outputLines":5,"outputBytes":341,"shownRange":{"start":1,"end":5},"nextOffset":6}}},"isError":false,"timestamp":1784069545758}}
{"type":"message","id":"d0bcf602","parentId":"af2b9439","timestamp":"2026-07-14T22:52:25.759Z","message":{"role":"toolResult","toolCallId":"call_Wn2XOjOdccXc6i3Uovvai9Uz|fc_0cb567042bb57cd4016a56bda662e88196aebd8ec1031698f6","toolName":"read","content":[{"type":"text","text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"76.80.65.5:57900\"\n        },\n        {\n          \"Ip\": \"100.125.242.88:57900\"\n        },\n        {\n          \"Ip\": \"172.28.240.1:57900\"\n        },\n        {\n          \"Ip\": \"192.168.1.12:57900\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n        }\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n        {\n          \"Ip\": \"172.21.0.1:59864\"\n        },\n        {\n          \"Ip\": \"192.168.1.11:59864\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"\n        }\n      ]\n    },\n    \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {\n      \"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {\n      \"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",\n      \"addrs\": [\n        {\n          \"Ip\": \"64.227.107.3:42537\"\n        }\n      ]\n    }\n  }\n}"}],"details":{"displayContent":{"text":"{\n  \"addrs\": {\n    \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\": {\n      \"id\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"76.80.65.5:57900\"\n        },\n        {\n          \"Ip\": \"100.125.242.88:57900\"\n        },\n        {\n          \"Ip\": \"172.28.240.1:57900\"\n        },\n        {\n          \"Ip\": \"192.168.1.12:57900\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::6df]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:21fa:537d:863e:9b16]:57902\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:57902\"\n        }\n      ]\n    },\n    \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\": {\n      \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": {\n      \"id\": \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\",\n      \"addrs\": [\n        {\n          \"Ip\": \"100.122.242.42:63291\"\n        }\n      ]\n    },\n    \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\": {\n      \"id\": \"aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        },\n        {\n          \"Ip\": \"100.66.129.111:59864\"\n        },\n        {\n          \"Ip\": \"107.131.129.74:59864\"\n        },\n        {\n          \"Ip\": \"172.21.0.1:59864\"\n        },\n        {\n          \"Ip\": \"192.168.1.11:59864\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857::cc7]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:c80:5a8f:33a8:8487]:59866\"\n        },\n        {\n          \"Ip\": \"[2603:8000:a800:7857:4513:51da:3853:f41]:59866\"\n        }\n      ]\n    },\n    \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": {\n      \"id\": \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\",\n      \"addrs\": [\n        {\n          \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n        }\n      ]\n    },\n    \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": {\n      \"id\": \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\",\n      \"addrs\": [\n        {\n          \"Ip\": \"64.227.107.3:42537\"\n        }\n      ]\n    }\n  }\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json"}}},"isError":false,"timestamp":1784069545759}}
{"type":"message","id":"2eeac6f0","parentId":"d0bcf602","timestamp":"2026-07-14T22:52:25.884Z","message":{"role":"toolResult","toolCallId":"call_6Fng8WgJzhQck4Mv7aOjcEo6|fc_0cb567042bb57cd4016a56bda6636c8196b2f8f99611cf2daa","toolName":"read","content":[{"type":"text","text":"    // human render below derives, then emit the DTO and return.\n    if json {\n        let pid = running\n            .then(|| {\n                std::fs::read_to_string(spt_daemon::daemon_pid_path())\n                    .ok()\n                    .map(|s| s.trim().to_string())\n                    .filter(|p| !p.is_empty())\n            })\n            .flatten();\n        // One broker handle answers net-status, the F-025 image query, and the W2\n        // stall-evict tally.\n        let (net_up, broker_image, broker_queried, stall_stats) = if running {\n            match spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms()) {\n                Ok(mut b) => {\n                    let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);\n                    let stall = b.stall_evicts().ok().flatten();\n                    // Ok(Some)=version / Ok(None)=old broker (both a successful\n                    // query) vs Err=couldn't query — keep them distinct so a\n                    // transient IPC failure does not read as a definite stale.\n                    match b.broker_image_version() {\n                        Ok(v) => (Some(n), v, true, stall),\n                        Err(_) => (Some(n), None, false, stall),\n                    }\n                }\n                Err(_) => (Some(true), None, false, None),\n            }\n        } else {\n            (None, None, false, None)\n        };\n        let (stall_evict_count, stall_evict_last_ms) = match stall_stats {\n            Some((c, l)) => (Some(c), Some(l)),\n            None => (None, None),\n        };\n        // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE] stale is only DEFINITE after a\n        // successful query: None when the daemon is down OR the broker could not be\n        // queried (no false-positive true on a transient failure — doyle F-025 nit).\n        let broker_stale = (running && broker_queried)\n            .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));\n        let pump_heartbeat_ms = if running {\n            spt_daemon::read_pump_heartbeat()\n        } else {\n            None\n        };\n        let svc = spt_daemon::service::platform_service();\n        let (managed_by, managed_active) = if svc.detected() {\n            (Some(svc.label().to_string()), Some(svc.is_active()))\n        } else {\n            (None, None)\n        };\n        let store = SubnetStore::load();\n        let mut subnets = Vec::new();\n        if !store.subnets.is_empty() {\n            let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\n            let roster = spt_store::roster::RosterStore::load();\n            let own_hex = spt_store::nodeid::load_or_create()\n                .map(|i| i.public_key().to_hex())\n                .unwrap_or_default();\n            for row in subnet_status_rows(\n                &store,\n                &regs,\n                &roster,\n                Some(&own_hex).filter(|h| !h.is_empty()).map(|h| h.as_str()),\n                None,\n            ) {\n                subnets.push(DaemonSubnetJson {\n                    name: row.name,\n                    nodes: row.nodes,\n                    endpoints: row.endpoints,\n                });\n            }\n        }\n        let local_endpoints = roster::enumerate()\n            .into_iter()\n            .map(|p| LocalPerchJson {\n                id: p.id,\n                state: p.state,\n                address: p.address,\n                ready: p.ready,\n                alive: p.alive,\n                unbound: p.unbound,\n                // The project column is an `endpoint list` concern (#8); daemon-status\n                // does not derive it (avoids per-perch git cost here) — skip-if-none.\n                project: None,\n            })\n            .collect();\n        return print_json(&DaemonStatusJson {\n            running,\n            pid,\n            net_up,\n            pump_heartbeat_ms,\n            managed_by,\n            managed_active,\n…\n        });\n    }\n\n[Showing lines 4109-4201 of 17537. Use :4202 to continue]"}],"details":{"truncation":{"content":"    // human render below derives, then emit the DTO and return.\r\n    if json {\r\n        let pid = running\r\n            .then(|| {\r\n                std::fs::read_to_string(spt_daemon::daemon_pid_path())\r\n                    .ok()\r\n                    .map(|s| s.trim().to_string())\r\n                    .filter(|p| !p.is_empty())\r\n            })\r\n            .flatten();\r\n        // One broker handle answers net-status, the F-025 image query, and the W2\r\n        // stall-evict tally.\r\n        let (net_up, broker_image, broker_queried, stall_stats) = if running {\r\n            match spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms()) {\r\n                Ok(mut b) => {\r\n                    let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);\r\n                    let stall = b.stall_evicts().ok().flatten();\r\n                    // Ok(Some)=version / Ok(None)=old broker (both a successful\r\n                    // query) vs Err=couldn't query — keep them distinct so a\r\n                    // transient IPC failure does not read as a definite stale.\r\n                    match b.broker_image_version() {\r\n                        Ok(v) => (Some(n), v, true, stall),\r\n                        Err(_) => (Some(n), None, false, stall),\r\n                    }\r\n                }\r\n                Err(_) => (Some(true), None, false, None),\r\n            }\r\n        } else {\r\n            (None, None, false, None)\r\n        };\r\n        let (stall_evict_count, stall_evict_last_ms) = match stall_stats {\r\n            Some((c, l)) => (Some(c), Some(l)),\r\n            None => (None, None),\r\n        };\r\n        // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE] stale is only DEFINITE after a\r\n        // successful query: None when the daemon is down OR the broker could not be\r\n        // queried (no false-positive true on a transient failure — doyle F-025 nit).\r\n        let broker_stale = (running && broker_queried)\r\n            .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));\r\n        let pump_heartbeat_ms = if running {\r\n            spt_daemon::read_pump_heartbeat()\r\n        } else {\r\n            None\r\n        };\r\n        let svc = spt_daemon::service::platform_service();\r\n        let (managed_by, managed_active) = if svc.detected() {\r\n            (Some(svc.label().to_string()), Some(svc.is_active()))\r\n        } else {\r\n            (None, None)\r\n        };\r\n        let store = SubnetStore::load();\r\n        let mut subnets = Vec::new();\r\n        if !store.subnets.is_empty() {\r\n            let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\r\n            let roster = spt_store::roster::RosterStore::load();\r\n            let own_hex = spt_store::nodeid::load_or_create()\r\n                .map(|i| i.public_key().to_hex())\r\n                .unwrap_or_default();\r\n            for row in subnet_status_rows(\r\n                &store,\r\n                &regs,\r\n                &roster,\r\n                Some(&own_hex).filter(|h| !h.is_empty()).map(|h| h.as_str()),\r\n                None,\r\n            ) {\r\n                subnets.push(DaemonSubnetJson {\r\n                    name: row.name,\r\n                    nodes: row.nodes,\r\n                    endpoints: row.endpoints,\r\n                });\r\n            }\r\n        }\r\n        let local_endpoints = roster::enumerate()\r\n            .into_iter()\r\n            .map(|p| LocalPerchJson {\r\n                id: p.id,\r\n                state: p.state,\r\n                address: p.address,\r\n                ready: p.ready,\r\n                alive: p.alive,\r\n                unbound: p.unbound,\r\n                // The project column is an `endpoint list` concern (#8); daemon-status\r\n                // does not derive it (avoids per-perch git cost here) — skip-if-none.\r\n                project: None,\r\n            })\r\n            .collect();\r\n        return print_json(&DaemonStatusJson {\r\n            running,\r\n            pid,\r\n            net_up,\r\n            pump_heartbeat_ms,\r\n            managed_by,\r\n            managed_active,\r","truncated":true,"truncatedBy":"lines","totalLines":13429,"totalBytes":4078,"outputLines":93,"outputBytes":4078,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"    // human render below derives, then emit the DTO and return.\r\n    if json {\r\n        let pid = running\r\n            .then(|| {\r\n                std::fs::read_to_string(spt_daemon::daemon_pid_path())\r\n                    .ok()\r\n                    .map(|s| s.trim().to_string())\r\n                    .filter(|p| !p.is_empty())\r\n            })\r\n            .flatten();\r\n        // One broker handle answers net-status, the F-025 image query, and the W2\r\n        // stall-evict tally.\r\n        let (net_up, broker_image, broker_queried, stall_stats) = if running {\r\n            match spt_daemon::brain::Brain::cold_start(&spt_daemon::broker_socket_name(), now_ms()) {\r\n                Ok(mut b) => {\r\n                    let n = b.net_status().ok().map(|s| s.enabled).unwrap_or(true);\r\n                    let stall = b.stall_evicts().ok().flatten();\r\n                    // Ok(Some)=version / Ok(None)=old broker (both a successful\r\n                    // query) vs Err=couldn't query — keep them distinct so a\r\n                    // transient IPC failure does not read as a definite stale.\r\n                    match b.broker_image_version() {\r\n                        Ok(v) => (Some(n), v, true, stall),\r\n                        Err(_) => (Some(n), None, false, stall),\r\n                    }\r\n                }\r\n                Err(_) => (Some(true), None, false, None),\r\n            }\r\n        } else {\r\n            (None, None, false, None)\r\n        };\r\n        let (stall_evict_count, stall_evict_last_ms) = match stall_stats {\r\n            Some((c, l)) => (Some(c), Some(l)),\r\n            None => (None, None),\r\n        };\r\n        // [impl->REQ-UPDATE-RUNNING-IMAGE-SURFACE] stale is only DEFINITE after a\r\n        // successful query: None when the daemon is down OR the broker could not be\r\n        // queried (no false-positive true on a transient failure — doyle F-025 nit).\r\n        let broker_stale = (running && broker_queried)\r\n            .then(|| broker_image.as_deref() != Some(env!(\"CARGO_PKG_VERSION\")));\r\n        let pump_heartbeat_ms = if running {\r\n            spt_daemon::read_pump_heartbeat()\r\n        } else {\r\n            None\r\n        };\r\n        let svc = spt_daemon::service::platform_service();\r\n        let (managed_by, managed_active) = if svc.detected() {\r\n            (Some(svc.label().to_string()), Some(svc.is_active()))\r\n        } else {\r\n            (None, None)\r\n        };\r\n        let store = SubnetStore::load();\r\n        let mut subnets = Vec::new();\r\n        if !store.subnets.is_empty() {\r\n            let regs = crate::wansend::load_snapshots(&perch::identity_dir().join(\"registry\"));\r\n            let roster = spt_store::roster::RosterStore::load();\r\n            let own_hex = spt_store::nodeid::load_or_create()\r\n                .map(|i| i.public_key().to_hex())\r\n                .unwrap_or_default();\r\n            for row in subnet_status_rows(\r\n                &store,\r\n                &regs,\r\n                &roster,\r\n                Some(&own_hex).filter(|h| !h.is_empty()).map(|h| h.as_str()),\r\n                None,\r\n            ) {\r\n                subnets.push(DaemonSubnetJson {\r\n                    name: row.name,\r\n                    nodes: row.nodes,\r\n                    endpoints: row.endpoints,\r\n                });\r\n            }\r\n        }\r\n        let local_endpoints = roster::enumerate()\r\n            .into_iter()\r\n            .map(|p| LocalPerchJson {\r\n                id: p.id,\r\n                state: p.state,\r\n                address: p.address,\r\n                ready: p.ready,\r\n                alive: p.alive,\r\n                unbound: p.unbound,\r\n                // The project column is an `endpoint list` concern (#8); daemon-status\r\n                // does not derive it (avoids per-perch git cost here) — skip-if-none.\r\n                project: None,\r\n            })\r\n            .collect();\r\n        return print_json(&DaemonStatusJson {\r\n            running,\r\n            pid,\r\n            net_up,\r\n            pump_heartbeat_ms,\r\n            managed_by,\r\n            managed_active,\r\n…\n        });\n    }","startLine":4109,"lineNumbers":[4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,null,4208,4209]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":17537,"totalBytes":4078,"outputLines":93,"outputBytes":4078,"shownRange":{"start":4109,"end":4201},"nextOffset":4202}}},"isError":false,"timestamp":1784069545884}}
{"type":"message","id":"97467685","parentId":"2eeac6f0","timestamp":"2026-07-14T22:52:25.889Z","message":{"role":"toolResult","toolCallId":"call_MXFP0gRvN9iWv2HRW6DOpOWr|fc_0cb567042bb57cd4016a56bda663648196aa04fe700ab90d7e","toolName":"read","content":[{"type":"text","text":"=== spt brain stderr — generation 1 — pid 37736 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\nBRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nDISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\nDISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\nDISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4526:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4177:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4035:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5120:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1520:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3724:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4438:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3866:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3539:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5145:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1126:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:545:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:901:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\n\n[Showing lines 1-39 of 68. Use :40 to continue]"}],"details":{"truncation":{"content":"=== spt brain stderr — generation 1 — pid 37736 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\nBRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nDISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\nDISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\nDISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4526:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4177:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4035:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5120:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1520:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3724:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4438:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3866:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3539:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5145:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1126:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:545:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:901:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")","truncated":true,"truncatedBy":"lines","totalLines":68,"totalBytes":4511,"outputLines":39,"outputBytes":4511,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"=== spt brain stderr — generation 1 — pid 37736 ===\nBRAIN_UP: connected to broker spt-daemon-broker-78bf18a9fd96fdc6.sock (pid 37736, generation 1, start-reason update)\nBRAIN_RESUMED: re-established 7 session cursor(s): [7, 1, 6, 3, 8, 5, 4]\nBRAIN_NET_CONSUMERS_UP: net enabled (node 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d) — dispatcher + peer pump started\nPUMP_IPC_READER: spawned\nPUMP_IPC_READER: spawned\nPUMP_PEER_FAIL:aea099f8f77ca00351d3809638b95f63d23464f500f6611ca104c780fe634138:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nDISPATCH:2110:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3885:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:595:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9179: database is locked\")\nDISPATCH:3268:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3967:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:9772: database is locked\")\nDISPATCH:5927:Failed(\"notif join 14efb80cb72297a1068c87a4aa45f30547c4474b60d1284b122bdc1a91c85f2d:372698: database is locked\")\nDISPATCH:3579:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:17148: database is locked\")\nDISPATCH:3443:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:76:Failed(\"No process is on the other end of the pipe. (os error 233)\")\nDISPATCH:4195:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5004:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:2072:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5859:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5305:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4526:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4177:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:508: database is locked\")\nDISPATCH:4035:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5120:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1520:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3724:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:861:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:4438:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3866:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:3539:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:5145:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:1126:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:545:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")\nDISPATCH:901:Failed(\"notif join 678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba:201: database is locked\")","startLine":1,"lineNumbers":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":68,"totalBytes":4511,"outputLines":39,"outputBytes":4511,"shownRange":{"start":1,"end":39},"nextOffset":40}}},"isError":false,"timestamp":1784069545889}}
{"type":"message","id":"b3fbe9cf","parentId":"97467685","timestamp":"2026-07-14T22:52:26.383Z","message":{"role":"toolResult","toolCallId":"call_dqcXy20quRL3gqjnOJkZ6WRX|fc_0cb567042bb57cd4016a56bda6635c81969b63a3982f7c2267","toolName":"read","content":[{"type":"text","text":"CONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468976 id=573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72 addr=EndpointAddr { id: PublicKey(573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72), addrs: {Ip(100.68.35.65:49427), Ip(192.168.1.81:49427)} }\nPAIR_MEET_UP:BIGNET step=59468976 id=dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d addr=EndpointAddr { id: PublicKey(dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d), addrs: {Ip(100.68.35.65:49425), Ip(192.168.1.81:49425)} }\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290334 mono_ms=323619598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290335 mono_ms=323619598 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468977 id=2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d addr=EndpointAddr { id: PublicKey(2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d), addrs: {Ip(100.68.35.65:50594), Ip(192.168.1.81:50594)} }\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310494 mono_ms=323639758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310495 mono_ms=323639758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPAIR_MEET_UP:SPT_DEV step=59468977 id=063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d addr=EndpointAddr { id: PublicKey(063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d), addrs: {Ip(100.68.35.65:50598), Ip(192.168.1.81:50598)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330652 mono_ms=323659916 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330653 mono_ms=323659916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468978 id=7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df addr=EndpointAddr { id: PublicKey(7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df), addrs: {Ip(100.68.35.65:64979), Ip(192.168.1.81:64979)} }\nPAIR_MEET_UP:BIGNET step=59468978 id=a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3 addr=EndpointAddr { id: PublicKey(a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3), addrs: {Ip(100.68.35.65:64983), Ip(192.168.1.81:64983)} }\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468979 id=6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34 addr=EndpointAddr { id: PublicKey(6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34), addrs: {Ip(100.68.35.65:52959), Ip(192.168.1.81:52959)} }\nPAIR_MEET_UP:SPT_DEV step=59468979 id=f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734 addr=EndpointAddr { id: PublicKey(f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734), addrs: {Ip(100.68.35.65:52956), Ip(192.168.1.81:52956)} }\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468980 id=5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f addr=EndpointAddr { id: PublicKey(5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f), addrs: {Ip(100.68.35.65:60565), Ip(192.168.1.81:60565)} }\nPAIR_MEET_UP:BIGNET step=59468980 id=321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2 addr=EndpointAddr { id: PublicKey(321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2), addrs: {Ip(100.68.35.65:60569), Ip(192.168.1.81:60569)} }\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406226 mono_ms=323735490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406227 mono_ms=323735490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }\nPAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }\nCONN_LIFECYCLE: conn=195987 role=brain wall_ms=1784069431414 mono_ms=323760678 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195987 role=brain wall_ms=1784069431414 mono_ms=323760678 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195988 role=brain wall_ms=1784069436453 mono_ms=323765717 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195988 role=brain wall_ms=1784069436453 mono_ms=323765717 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195989 role=brain wall_ms=1784069441492 mono_ms=323770755 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195989 role=brain wall_ms=1784069441492 mono_ms=323770756 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195990 role=brain wall_ms=1784069446530 mono_ms=323775793 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\n\n[Showing lines 643399-643520 of 131. Use :643521 to continue]"}],"details":{"truncation":{"content":"CONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468976 id=573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72 addr=EndpointAddr { id: PublicKey(573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72), addrs: {Ip(100.68.35.65:49427), Ip(192.168.1.81:49427)} }\nPAIR_MEET_UP:BIGNET step=59468976 id=dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d addr=EndpointAddr { id: PublicKey(dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d), addrs: {Ip(100.68.35.65:49425), Ip(192.168.1.81:49425)} }\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290334 mono_ms=323619598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290335 mono_ms=323619598 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468977 id=2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d addr=EndpointAddr { id: PublicKey(2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d), addrs: {Ip(100.68.35.65:50594), Ip(192.168.1.81:50594)} }\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310494 mono_ms=323639758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310495 mono_ms=323639758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPAIR_MEET_UP:SPT_DEV step=59468977 id=063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d addr=EndpointAddr { id: PublicKey(063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d), addrs: {Ip(100.68.35.65:50598), Ip(192.168.1.81:50598)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330652 mono_ms=323659916 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330653 mono_ms=323659916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468978 id=7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df addr=EndpointAddr { id: PublicKey(7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df), addrs: {Ip(100.68.35.65:64979), Ip(192.168.1.81:64979)} }\nPAIR_MEET_UP:BIGNET step=59468978 id=a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3 addr=EndpointAddr { id: PublicKey(a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3), addrs: {Ip(100.68.35.65:64983), Ip(192.168.1.81:64983)} }\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468979 id=6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34 addr=EndpointAddr { id: PublicKey(6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34), addrs: {Ip(100.68.35.65:52959), Ip(192.168.1.81:52959)} }\nPAIR_MEET_UP:SPT_DEV step=59468979 id=f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734 addr=EndpointAddr { id: PublicKey(f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734), addrs: {Ip(100.68.35.65:52956), Ip(192.168.1.81:52956)} }\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468980 id=5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f addr=EndpointAddr { id: PublicKey(5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f), addrs: {Ip(100.68.35.65:60565), Ip(192.168.1.81:60565)} }\nPAIR_MEET_UP:BIGNET step=59468980 id=321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2 addr=EndpointAddr { id: PublicKey(321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2), addrs: {Ip(100.68.35.65:60569), Ip(192.168.1.81:60569)} }\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406226 mono_ms=323735490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406227 mono_ms=323735490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }\nPAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }\nCONN_LIFECYCLE: conn=195987 role=brain wall_ms=1784069431414 mono_ms=323760678 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195987 role=brain wall_ms=1784069431414 mono_ms=323760678 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195988 role=brain wall_ms=1784069436453 mono_ms=323765717 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195988 role=brain wall_ms=1784069436453 mono_ms=323765717 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195989 role=brain wall_ms=1784069441492 mono_ms=323770755 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195989 role=brain wall_ms=1784069441492 mono_ms=323770756 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195990 role=brain wall_ms=1784069446530 mono_ms=323775793 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","truncated":true,"truncatedBy":"lines","totalLines":131,"totalBytes":18867,"outputLines":122,"outputBytes":18867,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"CONN_LIFECYCLE: conn=195948 role=brain wall_ms=1784069260078 mono_ms=323589342 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195949 role=brain wall_ms=1784069265119 mono_ms=323594382 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195950 role=brain wall_ms=1784069270161 mono_ms=323599425 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195951 role=brain wall_ms=1784069275203 mono_ms=323604466 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f:submit-dial exceeded the 10s bound (peer unresponsive)\nPUMP_PEER_FAIL:c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195952 role=brain wall_ms=1784069280249 mono_ms=323609513 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468976 id=573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72 addr=EndpointAddr { id: PublicKey(573713da7419df0fe376f94aba9b876030bb26f60617a9a82d57f2e620412f72), addrs: {Ip(100.68.35.65:49427), Ip(192.168.1.81:49427)} }\nPAIR_MEET_UP:BIGNET step=59468976 id=dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d addr=EndpointAddr { id: PublicKey(dc01afbb2924c8ffce210431f2ea23ebf3ccdb65a7a8cf03ac014524827a618d), addrs: {Ip(100.68.35.65:49425), Ip(192.168.1.81:49425)} }\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195953 role=brain wall_ms=1784069285290 mono_ms=323614554 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290334 mono_ms=323619598 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195954 role=brain wall_ms=1784069290335 mono_ms=323619598 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195955 role=brain wall_ms=1784069295373 mono_ms=323624637 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195956 role=brain wall_ms=1784069300416 mono_ms=323629679 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195957 role=brain wall_ms=1784069305454 mono_ms=323634718 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468977 id=2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d addr=EndpointAddr { id: PublicKey(2e6c3de821db58d57d5993e797dca23a3e7ac2aa9d41461b735adb099bc5fa8d), addrs: {Ip(100.68.35.65:50594), Ip(192.168.1.81:50594)} }\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310494 mono_ms=323639758 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195958 role=brain wall_ms=1784069310495 mono_ms=323639758 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPAIR_MEET_UP:SPT_DEV step=59468977 id=063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d addr=EndpointAddr { id: PublicKey(063b142a6d1d3f5b3388ef54ccefce8ed1e9f3fd4f31c9dd9635303d6bb1582d), addrs: {Ip(100.68.35.65:50598), Ip(192.168.1.81:50598)} }\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195959 role=brain wall_ms=1784069315535 mono_ms=323644799 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195960 role=brain wall_ms=1784069320575 mono_ms=323649838 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195961 role=brain wall_ms=1784069325613 mono_ms=323654877 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330652 mono_ms=323659916 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195962 role=brain wall_ms=1784069330653 mono_ms=323659916 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195963 role=brain wall_ms=1784069335691 mono_ms=323664955 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468978 id=7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df addr=EndpointAddr { id: PublicKey(7607d1fcc7409e4d38e4ed885e3dabb401e312964f2cd0027f97a5031be953df), addrs: {Ip(100.68.35.65:64979), Ip(192.168.1.81:64979)} }\nPAIR_MEET_UP:BIGNET step=59468978 id=a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3 addr=EndpointAddr { id: PublicKey(a31ce171a054afddd6124bf5684e01325a3843c5dbb4ed993dc382cb09cd6fc3), addrs: {Ip(100.68.35.65:64983), Ip(192.168.1.81:64983)} }\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195964 role=brain wall_ms=1784069340732 mono_ms=323669995 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195965 role=brain wall_ms=1784069345769 mono_ms=323675033 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195966 role=brain wall_ms=1784069350810 mono_ms=323680074 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195967 role=brain wall_ms=1784069355848 mono_ms=323685112 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195968 role=brain wall_ms=1784069360887 mono_ms=323690151 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195969 role=brain wall_ms=1784069365925 mono_ms=323695189 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:BIGNET step=59468979 id=6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34 addr=EndpointAddr { id: PublicKey(6b5cf7f320a58508a8e824709803168d48929a96616b2670b53bc915f06cae34), addrs: {Ip(100.68.35.65:52959), Ip(192.168.1.81:52959)} }\nPAIR_MEET_UP:SPT_DEV step=59468979 id=f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734 addr=EndpointAddr { id: PublicKey(f884124264807c585bdcc4bb4afec92aa58528d4aa9a421fbc43338a51754734), addrs: {Ip(100.68.35.65:52956), Ip(192.168.1.81:52956)} }\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195970 role=brain wall_ms=1784069370961 mono_ms=323700225 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195971 role=brain wall_ms=1784069375996 mono_ms=323705260 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195972 role=brain wall_ms=1784069381038 mono_ms=323710302 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195973 role=brain wall_ms=1784069386077 mono_ms=323715340 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195974 role=brain wall_ms=1784069391115 mono_ms=323720378 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195975 role=brain wall_ms=1784069396152 mono_ms=323725416 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468980 id=5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f addr=EndpointAddr { id: PublicKey(5fccaf63e3e0f68117125bfcf099a81b2c3683f71967d2acd5c5fa2f4123e72f), addrs: {Ip(100.68.35.65:60565), Ip(192.168.1.81:60565)} }\nPAIR_MEET_UP:BIGNET step=59468980 id=321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2 addr=EndpointAddr { id: PublicKey(321ecebf91ffe97faabdc31210ef28dea076276693da1bb090df5add490bfac2), addrs: {Ip(100.68.35.65:60569), Ip(192.168.1.81:60569)} }\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195981 role=brain wall_ms=1784069401189 mono_ms=323730453 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406226 mono_ms=323735490 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195982 role=brain wall_ms=1784069406227 mono_ms=323735490 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407726 mono_ms=323736990 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_WRITE_RETIRED: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_WRITE_RETIRED: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 — organic write failure (BrokenPipe: The pipe is being closed. (os error 232)); physical broker conn poisoned + retired, never reused (same retire behavior as POISONED — only the failure class differs) [REQ-CONN-POISON-DIAL-SCOPE]\nCONN_LIFECYCLE: conn=195976 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195977 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195978 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195980 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195979 role=brain wall_ms=1784069407727 mono_ms=323736990 event=transport-close poisoned=true timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740526 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195983 role=brain wall_ms=1784069411263 mono_ms=323740527 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195984 role=brain wall_ms=1784069416302 mono_ms=323745566 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195985 role=brain wall_ms=1784069421338 mono_ms=323750602 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195986 role=brain wall_ms=1784069426375 mono_ms=323755639 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nNET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\nPAIR_MEET_UP:SPT_DEV step=59468981 id=147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80 addr=EndpointAddr { id: PublicKey(147ca277311b905177cddd47d80f9302b334e69bd2dd8ddddb1a0d63d0635d80), addrs: {Ip(100.68.35.65:61387), Ip(192.168.1.81:61387)} }\nPAIR_MEET_UP:BIGNET step=59468981 id=c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff addr=EndpointAddr { id: PublicKey(c3dca29aa7256b23d6ba2beca6d67f7a3f4783ca6f960a30a0115ef85110e5ff), addrs: {Ip(100.68.35.65:61391), Ip(192.168.1.81:61391)} }\nCONN_LIFECYCLE: conn=195987 role=brain wall_ms=1784069431414 mono_ms=323760678 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195987 role=brain wall_ms=1784069431414 mono_ms=323760678 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195988 role=brain wall_ms=1784069436453 mono_ms=323765717 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195988 role=brain wall_ms=1784069436453 mono_ms=323765717 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195989 role=brain wall_ms=1784069441492 mono_ms=323770755 event=write-start [REQ-CONN-POISON-ATTRIBUTION]\nCONN_LIFECYCLE: conn=195989 role=brain wall_ms=1784069441492 mono_ms=323770756 event=transport-close poisoned=false timed_out=false [REQ-CONN-POISON-ATTRIBUTION]\nPUMP_PEER_FAIL:ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657:submit-dial exceeded the 10s bound (peer unresponsive)\nCONN_LIFECYCLE: conn=195990 role=brain wall_ms=1784069446530 mono_ms=323775793 event=write-start [REQ-CONN-POISON-ATTRIBUTION]","startLine":643399,"lineNumbers":[643399,643400,643401,643402,643403,643404,643405,643406,643407,643408,643409,643410,643411,643412,643413,643414,643415,643416,643417,643418,643419,643420,643421,643422,643423,643424,643425,643426,643427,643428,643429,643430,643431,643432,643433,643434,643435,643436,643437,643438,643439,643440,643441,643442,643443,643444,643445,643446,643447,643448,643449,643450,643451,643452,643453,643454,643455,643456,643457,643458,643459,643460,643461,643462,643463,643464,643465,643466,643467,643468,643469,643470,643471,643472,643473,643474,643475,643476,643477,643478,643479,643480,643481,643482,643483,643484,643485,643486,643487,643488,643489,643490,643491,643492,643493,643494,643495,643496,643497,643498,643499,643500,643501,643502,643503,643504,643505,643506,643507,643508,643509,643510,643511,643512,643513,643514,643515,643516,643517,643518,643519,643520]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":131,"totalBytes":18867,"outputLines":122,"outputBytes":18867,"shownRange":{"start":643399,"end":643520},"nextOffset":643521}}},"isError":false,"timestamp":1784069546383}}
{"type":"message","id":"18c53576","parentId":"b3fbe9cf","timestamp":"2026-07-14T22:52:45.743Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Correcting relay mode interpretation**\n\n**Analyzing broker dial stalls and transport issues**"},{"type":"toolCall","id":"call_NvEIEgTDB4oGdAKNKPub7HGw|fc_0cb567042bb57cd4016a56bdbc74348196918c7d86db94c57f","name":"read","arguments":{"i":"Reading all heard watermarks","path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","selector":"1-10"}},{"type":"toolCall","id":"call_ymG2sgebiqee3bNZhoxlvUWS|fc_0cb567042bb57cd4016a56bdbc74a081968fa7f4f4e0d8bc5e","name":"read","arguments":{"i":"Reading dial timeout implementation","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs","selector":"1125-1215"}},{"type":"toolCall","id":"call_i6EK6reeXffurnVSEA7dQr1M|fc_0cb567042bb57cd4016a56bdbc74ac8196a2c001de8bec7ddb","name":"read","arguments":{"i":"Reading endpoint transport setup","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","selector":"284-390"}},{"type":"toolCall","id":"call_WoYDUdlHvRD9bsylcwOEoRCl|fc_0cb567042bb57cd4016a56bdbc74b48196981b3ab1345bac95","name":"read","arguments":{"i":"Reading registry eviction loop","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs","selector":"560-650"}},{"type":"toolCall","id":"call_fk7HhXCgWkrrJHPG5IIkzXAA|fc_0cb567042bb57cd4016a56bdbc74bc81968297aa643effb6f2","name":"read","arguments":{"i":"Reading status health rendering","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","selector":"3960-4040"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":16829,"output":679,"cacheRead":66048,"cacheWrite":0,"totalTokens":83556,"reasoningTokens":423,"cost":{"input":0.08414500000000001,"output":0.02037,"cacheRead":0.033024,"cacheWrite":0,"total":0.13753900000000002}},"stopReason":"toolUse","timestamp":1784069546387,"responseId":"resp_0cb567042bb57cd4016a56bdaa95b081969a6625cd4860a882","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bdad3f548196bca8b3f867b1d869","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr288gk3y-Fn3cv2nqtpZt0N5SCRAhrXXVaWKu2xtBscJdvAT1xr0EM_tIBmFTIfJ2GC7g9LZK-icg32gm8sGQ5mTn5UD8tjjHL1rIuNqG4O4xhxrFbgDIs95NAEtL5H2NevhrkCi4vBf2-EmV8nzN9JCbccp0Sf16-5JSM8VXjdTzEUqS3EDdCrudQgAkAyrcg07q8d-VUKsMSiE4Z02E_PWNF04HuLgYRL37QXdy3EfvKuKwxI0TM9LheEdBYkMYLXhaZK3JgHsSWXnNxtwkydzyOYhBCm_rolXSo0cgb7ChduKfEAqdKPZ_i0CC36D6SDcmTfDW3RyIQ1uTkpQGkgdrAPe7TpzfxlvGpRq0nEMpr_6fB-OaK2kWjV5k5vWxoXnTbiM6TDm3-NjJRbkHDgXAol3a3-eIQ6sPagbYtXvezghA0g8N6lmSBps8uT2q7pn_IU8Nb39PDOUcrla6Ug3JvsZWTNZIW90yhsPCEiU--UzaQeqDzmxwCuftWJ6UtaERIN-MDsvur2mfr6ZRngqDyRi-z_VBK8Mb8r0BIL2TXl3PJ-nxHStf5xpTewvqpyAkhL191C1oy7OlBCeAIEHNr14BLnltlr7nDbl0M0BXqnh3l7svmrWctoK7OsBYDJklB83yx9cldkoL-LMrPv2rvBtLUswQmxf2FcHUxSefAIKmOId-aW8PQBu0eTuCepE53dYtxGvW1Ncxajr0VAto94rdct5Th2z7bj-SYRsU1f_KFmTS8kXxpyYAZ-q2Ln_8BWyyPlyHx3Ewi-yoj4ZtzIvnnqd8pZ3oSN5mlOJ5hFhqpn4cgCNBA--d_Gt-7Fn-dS0wVyMVkja4nEzSzSZYOhiDXW0St0TBw_xC8I9mRuBSm0etU7PeiQacIh533Z3crDr8gp7BGjImBjnRtsqXA_N9R5ApyDvRIljojQNBKdr9jbtaijYqwHcjlZwbYK64nSSPE0CJghFSGxu29EtnIZbMI6tsnRMWdT-5Ut_6VSSiX9nHifR68M0sKHgoCf2QTDGWqjXDG0K17YRha3IgTTeLzIF7KcMzkkOfeFLyeLCo25is6HYHkTUa3y6ptISd-Uy0KY4xWYncB8oa3_K0EaE4gMNw6g6yttnSwqH56GIEYMOrpQE7XFCUTQla2e1DXIYusjaKWZrEYQTZ82qHdUQCOxY1jkXvEWpG9NRnB4O5Gaa8eDXx-F_kIWrR_6y5ZQkTnS73dWSe3ihvIaJPoWpK4Zlx0p53PNX3ub-0C4HyMoqahyKn5qWT_5sSb9UzMbw0hUNSij8U-hxbZcOaxpdQNwR0hmBUxLC6lIGTjOYKWvHzab8XDjeRbHdbFIg_cyoG0tJWWczzgtORM6qg0pSa5z1a4Wmy1UWZaSOgdyt7Bjlcuw5FFSICzDDV083fh2GdbQSUFD-VeYKoeEpQBQetjiLmAuldj60Dc5EQexraQLf0xfx3yYtc2fk3psE5Bc6wr5OqeOfSxZHGmG-uL6g98178MoFb2FZdrNGjcqgFrEV9Gw1sj77FLDIHQ45IhJJT_KBwn2zodtFhk0n55dqTN0Y1xdTQRdr5wspsdZaB1-imfFZrKx719TPbejamSpIarAK6t3If9LFA14KHw0ErXCj5lJ9rbU3D2-oYRvqDT71LheVjiwM0HbxNXP7lNC8NroAqstdqCj12mzaLY7UIL3fUMlVpkwop1hrPyIOXEzeq_ZTDopPMbiKfhKdraal2QkYJhknt0NeM9lxnDw9E8Uwjr8RTA4h2D6OfM5NLsG9WoVV_aeCXrJ96IKIjfUXOYYVrxAlehKHBwal2XS8keBBzIIXYhtMzsHj_PtjJkMw-r6bNebuSZZ7FP48_tj6e__XsxrF5L9usBpUa4b5CNVJ2y4DjrTVvZCs-8YxUGmYeLtqP5HLZliwlNDUzgHIE10dyxDhgN0Ai9KEhG-EbyvRt3Mszk2EBjnJyvvTq_Cdk8yEkFeahBNkQnFY7x62czDvy9HPrZtrHrv7Mw6j_y4D5MAqI8x7_K45mV2ewj5aSKT0ZmyCUYIooi1PXgCjcOozcKCEBoie5f2BzKQasY1mGspYvCvXs-rpZZsY2XbnZkjqGEcDej2hVpqhjWwsUc5lT7067mQfg3r1LZl4PyPmb2wFVB9SZv1CM7PiH09vo9czyayQ0dyCL3s9V0sZPtULB6JtG2JtaUNKXRsp8yRBx-OPuRyybIAm79A-1GNJDqPqHnoZC5l9CrX74CoPtpXdHke5jjGVBUiYCEReEY8Ae2mnkLpiIx9hbMR9y70dPYpqH-M8iHcCMZbfu_tSK_xfDZrvxnQz3zxNlc5EiURbriFgaaeJDRvCompimIBb-lUg-IGlH1VBuA2s-UHPkadHDvfCa2Oq2NJw1vI7OKfa2Xrq2beN6vvIB1ipReU88soGg3B3Nm0XXz_YlARLRwaGgIzILD3wySwGRwxauyyKpFLtcFd1tgMKW3QMgpT1jsbIcI1QTUqS6WFP-UAYTkpaGtpHOGKvafUgerEuGpdUKzsI5No7A7oLX89WjMt5TAb0oUPvZS_hFW81G28Fn8uK5fkqoNZDnLKXSo2d7j_xuJhAmCJ728ZvZwFIjIG6FeWp_9xvLMw_tuQzlYXv8W8FX6HNz8am8kvuJ-g34HN7g7RgAxX6jKuh3inGKxOKJiLy8oXYvXsvOyyV2Hgn-bdxRDr42WUrWMgvEVik897yrl1ShyvUSJ6Rw0qG45LZwNka8jo1suTmYkxGMdF0S4t64wQcsOq1jnB53zECySKi4pu0DWhZX1rnjomTTH4BCehNPfrK0n9PwyA9DaIi6yFji3sU4pb3rwwHuWiaLyQeMUWCP8AxXeSh1MSKB3Tdhi0nawk0ntow-Y_MalMkwU2NaMh3g66hlTL2SBIP51gupWk-Ee8cpXmCNfQ51g9m0xhuZecvjwfLjv8wsENO04qVzXlgI79ZBd6DXiR-lTssqUGPIuE944ZW20oGV9IOH5JUoUcayp5M0QIJBgmbUMMSMTpxq_MgIS5fwQ-YZzlJUhgAIJY_WgxMrx1LbpqTor_uhht9iAVGjspJNLG8DIMA8F0vRPAIJwRWdWtsD0Hf_mU0z3w4NhGb7cRYoLiSrsZbDQHmtcX9vnbsNIZtXMMWExMyzetixWF1Qv8MDIsvz3_WIVKfAXudLcW-ghnv3CsnVl81xoj9lMhMuVCHirvc5DuhoY_wOjzjdZ0TPpZLp-UsQ0nEYBssHdWz6LAN-H3hLi6m54Yx-UH3GEbj6VqoorYVvnMnhjolOGMazTgoMA-cE9Z6ByF9EX8m_9L1W6toXX5PxQCBnv94L01FfQj5_SqGd320E9OocQWPGAh9E7Y3Jfw0yqhehzAdsVodQgDyzfpOKbi1bbnugUrrgBp9YWLWk2lNQ9j76T5QYcIWvHyyrC5a1_1D6dSPiBgHLa804u6dgSW6adCW5zqmmTA9AEUpEfvFY5SwvM_44MYNayJhCs9LAwti3hhvHlPl4-6dAgqHRmTPUtX3S4Qf0U16nDo1WiKVE_VSWkJzTzjPQnl9dd3XIZTNzM=","summary":[{"type":"summary_text","text":"**Correcting relay mode interpretation**"},{"type":"summary_text","text":"**Analyzing broker dial stalls and transport issues**"}]},{"id":"fc_0cb567042bb57cd4016a56bdbc74348196918c7d86db94c57f","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading all heard watermarks\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta\",\"selector\":\"1-10\"}","call_id":"call_NvEIEgTDB4oGdAKNKPub7HGw","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bdbc74a081968fa7f4f4e0d8bc5e","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading dial timeout implementation\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs\",\"selector\":\"1125-1215\"}","call_id":"call_ymG2sgebiqee3bNZhoxlvUWS","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bdbc74ac8196a2c001de8bec7ddb","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading endpoint transport setup\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs\",\"selector\":\"284-390\"}","call_id":"call_i6EK6reeXffurnVSEA7dQr1M","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bdbc74b48196981b3ab1345bac95","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading registry eviction loop\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs\",\"selector\":\"560-650\"}","call_id":"call_WoYDUdlHvRD9bsylcwOEoRCl","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bdbc74bc81968297aa643effb6f2","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading status health rendering\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"selector\":\"3960-4040\"}","call_id":"call_fk7HhXCgWkrrJHPG5IIkzXAA","name":"read"}]},"duration":19330.333199977875,"ttft":2885.815199971199,"contextSnapshot":{"promptTokens":82877,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_NvEIEgTDB4oGdAKNKPub7HGw|fc_0cb567042bb57cd4016a56bdbc74348196918c7d86db94c57f","toolName":"read","startedAt":"2026-07-14T22:52:45.744Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta"},"intent":"Reading all heard watermarks"},"id":"d8998898","parentId":"18c53576","timestamp":"2026-07-14T22:52:45.744Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_ymG2sgebiqee3bNZhoxlvUWS|fc_0cb567042bb57cd4016a56bdbc74a081968fa7f4f4e0d8bc5e","toolName":"read","startedAt":"2026-07-14T22:52:45.744Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs"},"intent":"Reading dial timeout implementation"},"id":"354af1ee","parentId":"d8998898","timestamp":"2026-07-14T22:52:45.744Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_i6EK6reeXffurnVSEA7dQr1M|fc_0cb567042bb57cd4016a56bdbc74ac8196a2c001de8bec7ddb","toolName":"read","startedAt":"2026-07-14T22:52:45.744Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs"},"intent":"Reading endpoint transport setup"},"id":"dc9a21b5","parentId":"354af1ee","timestamp":"2026-07-14T22:52:45.744Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_WoYDUdlHvRD9bsylcwOEoRCl|fc_0cb567042bb57cd4016a56bdbc74b48196981b3ab1345bac95","toolName":"read","startedAt":"2026-07-14T22:52:45.744Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs"},"intent":"Reading registry eviction loop"},"id":"2e7a8cf8","parentId":"dc9a21b5","timestamp":"2026-07-14T22:52:45.744Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_fk7HhXCgWkrrJHPG5IIkzXAA|fc_0cb567042bb57cd4016a56bdbc74bc81968297aa643effb6f2","toolName":"read","startedAt":"2026-07-14T22:52:45.744Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"intent":"Reading status health rendering"},"id":"bfb44bcc","parentId":"2e7a8cf8","timestamp":"2026-07-14T22:52:45.744Z"}
{"type":"message","id":"d2bc3d47","parentId":"bfb44bcc","timestamp":"2026-07-14T22:52:45.749Z","message":{"role":"toolResult","toolCallId":"call_NvEIEgTDB4oGdAKNKPub7HGw|fc_0cb567042bb57cd4016a56bdbc74348196918c7d86db94c57f","toolName":"read","content":[{"type":"text","text":"{\n  \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,\n  \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,\n  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n  \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398\n}"}],"details":{"displayContent":{"text":"{\n  \"678d98fb5912fed3b26f4bf90dabe36f3fbe621cc72ad03ad07fa4755f4958ba\": 1783982614700,\n  \"c675b8980721ba50072009feaf87b3e1db0788669f48ab9141b85ce4ea95f886\": 1783982626855,\n  \"c8939d2f12b7488cf658a694b500f2da3ab32fa478dfe078557a862534baa573\": 1784008286121,\n  \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\": 1784008794517,\n  \"f7afcc8292cbc441e8fe2002299cd37cde2a315e4073b47cee61c66f1473eda4\": 1783982654398\n}","startLine":1,"lineNumbers":[1,2,3,4,5,6,7]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta"}}},"isError":false,"timestamp":1784069565749}}
{"type":"message","id":"484a411d","parentId":"d2bc3d47","timestamp":"2026-07-14T22:52:45.753Z","message":{"role":"toolResult","toolCallId":"call_i6EK6reeXffurnVSEA7dQr1M|fc_0cb567042bb57cd4016a56bdbc74ac8196a2c001de8bec7ddb","toolName":"read","content":[{"type":"text","text":"    pub async fn bind(\n        identity: &Identity,\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n    ) -> Result<NetEndpoint, NetError> {\n        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\n    }\n\n    /// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].\n    ///\n    /// The pairing driver uses this to stand up a **dedicated pre-trust endpoint** bound\n    /// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) — the pre-trust\n    /// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`\n    /// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to\n    /// [`bind`](Self::bind).\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n    pub async fn bind_with_alpns(\n        identity: &Identity,\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n        alpns: Vec<Vec<u8>>,\n    ) -> Result<NetEndpoint, NetError> {\n        Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await\n    }\n\n    /// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an\n    /// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the\n    /// endpoint never listens on a real interface (and never triggers a Windows\n    /// firewall prompt per test binary); everything else delegates here with\n    /// [`BindScope::All`].\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\n    pub async fn bind_scoped(\n        identity: &Identity,\n        relay: RelayPolicy,\n        discovery: LocalDiscovery,\n        alpns: Vec<Vec<u8>>,\n        scope: BindScope,\n    ) -> Result<NetEndpoint, NetError> {\n        // iroh and spt-proto both build the ed25519 keypair from the same 32-byte\n        // seed, so this preserves the node's stable public-key name on the wire.\n        let secret = SecretKey::from_bytes(&identity.seed());\n        let builder = Endpoint::builder(presets::N0)\n            .secret_key(secret)\n            .alpns(alpns)\n            // Keep meshed member connections warm (REQ-MESH-1): seed-proof runs\n            // once at connect, so a quiet connection must not idle out and force\n            // a re-handshake. Transport-only, orthogonal to BindScope.\n            .transport_config(spt_transport_config());\n        // Loopback scope replaces the builder's pre-configured unspecified binds\n        // (0.0.0.0 / [::]) with loopback-only sockets, AND disables iroh's\n        // portmapper (UPnP/PCP/NAT-PMP — on by default), which would otherwise\n        // bind real-interface UDP sockets for its SSDP/NAT-PMP probes: useless\n        // on loopback, and the other source of per-test-binary Windows firewall\n        // prompts.\n        // Per-family bind gate (REQ-NET-FAMILY-GATE): production-scope binds drop a\n        // dead/force-disabled IP family so a half-broken family never silently\n        // burns discovery/connect time. Hermetic scopes (Loopback/Port) keep\n        // dual-stack untouched — they reach no WAN and must stay deterministic\n        // (no probe, no Windows-firewall surprise).\n        let families = match scope {\n            BindScope::All => decide_bind_families(&relay).await?,\n            BindScope::Loopback | BindScope::Port(_) => BindFamilies::Dual,\n        };\n        match families {\n            BindFamilies::Dual => {}\n            BindFamilies::V4Only => {\n                eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")\n            }\n            BindFamilies::V6Only => {\n                eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")\n            }\n        }\n        let builder = match scope {\n            // Dual-stack keeps the iroh default binds; a single-family gate clears\n            // the default IP transports and re-adds only the surviving family's\n            // unspecified socket (same clear+bind_addr mechanism BindScope uses).\n            BindScope::All => match families {\n                BindFamilies::Dual => builder,\n                BindFamilies::V4Only => builder\n                    .clear_ip_transports()\n                    .bind_addr(std::net::SocketAddr::from((\n                        std::net::Ipv4Addr::UNSPECIFIED,\n                        0,\n                    )))\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\n                BindFamilies::V6Only => builder\n                    .clear_ip_transports()\n                    .bind_addr(std::net::SocketAddr::from((\n                        std::net::Ipv6Addr::UNSPECIFIED,\n                        0,\n                    )))\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\n            },\n            BindScope::Loopback => builder\n                .clear_ip_transports()\n                .bind_addr(\"127.0.0.1:0\")\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .bind_addr(\"[::1]:0\")\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .portmapper_config(PortmapperConfig::Disabled),\n            // All-interfaces like the production scope, but on a caller-fixed\n            // port so the node is dialable by a static ip:port ticket.\n            BindScope::Port(p) => builder\n                .clear_ip_transports()\n                .bind_addr(std::net::SocketAddr::from((\n                    std::net::Ipv4Addr::UNSPECIFIED,\n                    p,\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .bind_addr(std::net::SocketAddr::from((\n                    std::net::Ipv6Addr::UNSPECIFIED,\n                    p,\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?,\n        };\n…\n    }\n\n[Showing lines 283-393 of 761. Use :394 to continue]"}],"details":{"truncation":{"content":"        identity: &Identity,\r\n        relay: RelayPolicy,\r\n        discovery: LocalDiscovery,\r\n    ) -> Result<NetEndpoint, NetError> {\r\n        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\r\n    }\r\n\r\n    /// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].\r\n    ///\r\n    /// The pairing driver uses this to stand up a **dedicated pre-trust endpoint** bound\r\n    /// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) — the pre-trust\r\n    /// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`\r\n    /// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to\r\n    /// [`bind`](Self::bind).\r\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\r\n    pub async fn bind_with_alpns(\r\n        identity: &Identity,\r\n        relay: RelayPolicy,\r\n        discovery: LocalDiscovery,\r\n        alpns: Vec<Vec<u8>>,\r\n    ) -> Result<NetEndpoint, NetError> {\r\n        Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await\r\n    }\r\n\r\n    /// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an\r\n    /// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the\r\n    /// endpoint never listens on a real interface (and never triggers a Windows\r\n    /// firewall prompt per test binary); everything else delegates here with\r\n    /// [`BindScope::All`].\r\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\r\n    pub async fn bind_scoped(\r\n        identity: &Identity,\r\n        relay: RelayPolicy,\r\n        discovery: LocalDiscovery,\r\n        alpns: Vec<Vec<u8>>,\r\n        scope: BindScope,\r\n    ) -> Result<NetEndpoint, NetError> {\r\n        // iroh and spt-proto both build the ed25519 keypair from the same 32-byte\r\n        // seed, so this preserves the node's stable public-key name on the wire.\r\n        let secret = SecretKey::from_bytes(&identity.seed());\r\n        let builder = Endpoint::builder(presets::N0)\r\n            .secret_key(secret)\r\n            .alpns(alpns)\r\n            // Keep meshed member connections warm (REQ-MESH-1): seed-proof runs\r\n            // once at connect, so a quiet connection must not idle out and force\r\n            // a re-handshake. Transport-only, orthogonal to BindScope.\r\n            .transport_config(spt_transport_config());\r\n        // Loopback scope replaces the builder's pre-configured unspecified binds\r\n        // (0.0.0.0 / [::]) with loopback-only sockets, AND disables iroh's\r\n        // portmapper (UPnP/PCP/NAT-PMP — on by default), which would otherwise\r\n        // bind real-interface UDP sockets for its SSDP/NAT-PMP probes: useless\r\n        // on loopback, and the other source of per-test-binary Windows firewall\r\n        // prompts.\r\n        // Per-family bind gate (REQ-NET-FAMILY-GATE): production-scope binds drop a\r\n        // dead/force-disabled IP family so a half-broken family never silently\r\n        // burns discovery/connect time. Hermetic scopes (Loopback/Port) keep\r\n        // dual-stack untouched — they reach no WAN and must stay deterministic\r\n        // (no probe, no Windows-firewall surprise).\r\n        let families = match scope {\r\n            BindScope::All => decide_bind_families(&relay).await?,\r\n            BindScope::Loopback | BindScope::Port(_) => BindFamilies::Dual,\r\n        };\r\n        match families {\r\n            BindFamilies::Dual => {}\r\n            BindFamilies::V4Only => {\r\n                eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")\r\n            }\r\n            BindFamilies::V6Only => {\r\n                eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")\r\n            }\r\n        }\r\n        let builder = match scope {\r\n            // Dual-stack keeps the iroh default binds; a single-family gate clears\r\n            // the default IP transports and re-adds only the surviving family's\r\n            // unspecified socket (same clear+bind_addr mechanism BindScope uses).\r\n            BindScope::All => match families {\r\n                BindFamilies::Dual => builder,\r\n                BindFamilies::V4Only => builder\r\n                    .clear_ip_transports()\r\n                    .bind_addr(std::net::SocketAddr::from((\r\n                        std::net::Ipv4Addr::UNSPECIFIED,\r\n                        0,\r\n                    )))\r\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\r\n                BindFamilies::V6Only => builder\r\n                    .clear_ip_transports()\r\n                    .bind_addr(std::net::SocketAddr::from((\r\n                        std::net::Ipv6Addr::UNSPECIFIED,\r\n                        0,\r\n                    )))\r\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\r\n            },\r\n            BindScope::Loopback => builder\r\n                .clear_ip_transports()\r\n                .bind_addr(\"127.0.0.1:0\")\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .bind_addr(\"[::1]:0\")\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .portmapper_config(PortmapperConfig::Disabled),\r\n            // All-interfaces like the production scope, but on a caller-fixed\r\n            // port so the node is dialable by a static ip:port ticket.\r\n            BindScope::Port(p) => builder\r\n                .clear_ip_transports()\r\n                .bind_addr(std::net::SocketAddr::from((\r\n                    std::net::Ipv4Addr::UNSPECIFIED,\r\n                    p,\r\n                )))\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .bind_addr(std::net::SocketAddr::from((\r\n                    std::net::Ipv6Addr::UNSPECIFIED,\r\n                    p,\r","truncated":true,"truncatedBy":"lines","totalLines":479,"totalBytes":5714,"outputLines":111,"outputBytes":5714,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"    pub async fn bind(\n        identity: &Identity,\r\n        relay: RelayPolicy,\r\n        discovery: LocalDiscovery,\r\n    ) -> Result<NetEndpoint, NetError> {\r\n        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\r\n    }\r\n\r\n    /// Bind on an explicit ALPN set instead of the default trusted [`SPT_NET_ALPN`].\r\n    ///\r\n    /// The pairing driver uses this to stand up a **dedicated pre-trust endpoint** bound\r\n    /// only to the pairing ALPN (`super::pairing::wire::SPT_PAIR_ALPN`) — the pre-trust\r\n    /// accept loop must not share the trusted message surface (ADR-0005; `pairing.rs`\r\n    /// \"Why a dedicated pre-trust ALPN\"). All relay/discovery handling is identical to\r\n    /// [`bind`](Self::bind).\r\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\r\n    pub async fn bind_with_alpns(\r\n        identity: &Identity,\r\n        relay: RelayPolicy,\r\n        discovery: LocalDiscovery,\r\n        alpns: Vec<Vec<u8>>,\r\n    ) -> Result<NetEndpoint, NetError> {\r\n        Self::bind_scoped(identity, relay, discovery, alpns, BindScope::All).await\r\n    }\r\n\r\n    /// The full bind form: [`bind_with_alpns`](Self::bind_with_alpns) plus an\r\n    /// explicit [`BindScope`]. Hermetic tests pass [`BindScope::Loopback`] so the\r\n    /// endpoint never listens on a real interface (and never triggers a Windows\r\n    /// firewall prompt per test binary); everything else delegates here with\r\n    /// [`BindScope::All`].\r\n    // [impl->REQ-NET-1] [impl->REQ-NET-2]\r\n    pub async fn bind_scoped(\r\n        identity: &Identity,\r\n        relay: RelayPolicy,\r\n        discovery: LocalDiscovery,\r\n        alpns: Vec<Vec<u8>>,\r\n        scope: BindScope,\r\n    ) -> Result<NetEndpoint, NetError> {\r\n        // iroh and spt-proto both build the ed25519 keypair from the same 32-byte\r\n        // seed, so this preserves the node's stable public-key name on the wire.\r\n        let secret = SecretKey::from_bytes(&identity.seed());\r\n        let builder = Endpoint::builder(presets::N0)\r\n            .secret_key(secret)\r\n            .alpns(alpns)\r\n            // Keep meshed member connections warm (REQ-MESH-1): seed-proof runs\r\n            // once at connect, so a quiet connection must not idle out and force\r\n            // a re-handshake. Transport-only, orthogonal to BindScope.\r\n            .transport_config(spt_transport_config());\r\n        // Loopback scope replaces the builder's pre-configured unspecified binds\r\n        // (0.0.0.0 / [::]) with loopback-only sockets, AND disables iroh's\r\n        // portmapper (UPnP/PCP/NAT-PMP — on by default), which would otherwise\r\n        // bind real-interface UDP sockets for its SSDP/NAT-PMP probes: useless\r\n        // on loopback, and the other source of per-test-binary Windows firewall\r\n        // prompts.\r\n        // Per-family bind gate (REQ-NET-FAMILY-GATE): production-scope binds drop a\r\n        // dead/force-disabled IP family so a half-broken family never silently\r\n        // burns discovery/connect time. Hermetic scopes (Loopback/Port) keep\r\n        // dual-stack untouched — they reach no WAN and must stay deterministic\r\n        // (no probe, no Windows-firewall surprise).\r\n        let families = match scope {\r\n            BindScope::All => decide_bind_families(&relay).await?,\r\n            BindScope::Loopback | BindScope::Port(_) => BindFamilies::Dual,\r\n        };\r\n        match families {\r\n            BindFamilies::Dual => {}\r\n            BindFamilies::V4Only => {\r\n                eprintln!(\"NET_FAMILY_GATE: binding IPv4-only (IPv6 unreachable or disabled)\")\r\n            }\r\n            BindFamilies::V6Only => {\r\n                eprintln!(\"NET_FAMILY_GATE: binding IPv6-only (IPv4 unreachable or disabled)\")\r\n            }\r\n        }\r\n        let builder = match scope {\r\n            // Dual-stack keeps the iroh default binds; a single-family gate clears\r\n            // the default IP transports and re-adds only the surviving family's\r\n            // unspecified socket (same clear+bind_addr mechanism BindScope uses).\r\n            BindScope::All => match families {\r\n                BindFamilies::Dual => builder,\r\n                BindFamilies::V4Only => builder\r\n                    .clear_ip_transports()\r\n                    .bind_addr(std::net::SocketAddr::from((\r\n                        std::net::Ipv4Addr::UNSPECIFIED,\r\n                        0,\r\n                    )))\r\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\r\n                BindFamilies::V6Only => builder\r\n                    .clear_ip_transports()\r\n                    .bind_addr(std::net::SocketAddr::from((\r\n                        std::net::Ipv6Addr::UNSPECIFIED,\r\n                        0,\r\n                    )))\r\n                    .map_err(|e| NetError::Bind(e.to_string()))?,\r\n            },\r\n            BindScope::Loopback => builder\r\n                .clear_ip_transports()\r\n                .bind_addr(\"127.0.0.1:0\")\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .bind_addr(\"[::1]:0\")\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .portmapper_config(PortmapperConfig::Disabled),\r\n            // All-interfaces like the production scope, but on a caller-fixed\r\n            // port so the node is dialable by a static ip:port ticket.\r\n            BindScope::Port(p) => builder\r\n                .clear_ip_transports()\r\n                .bind_addr(std::net::SocketAddr::from((\r\n                    std::net::Ipv4Addr::UNSPECIFIED,\r\n                    p,\r\n                )))\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .bind_addr(std::net::SocketAddr::from((\r\n                    std::net::Ipv6Addr::UNSPECIFIED,\r\n                    p,\r\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?,\n        };\n…\n    }","startLine":282,"lineNumbers":[282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,null,417]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":761,"totalBytes":5714,"outputLines":111,"outputBytes":5714,"shownRange":{"start":283,"end":393},"nextOffset":394}}},"isError":false,"timestamp":1784069565753}}
{"type":"message","id":"3a901470","parentId":"484a411d","timestamp":"2026-07-14T22:52:45.765Z","message":{"role":"toolResult","toolCallId":"call_ymG2sgebiqee3bNZhoxlvUWS|fc_0cb567042bb57cd4016a56bdbc74a081968fa7f4f4e0d8bc5e","toolName":"read","content":[{"type":"text","text":"    pub fn submit_dial(&self, addr: EndpointAddr, remote_id_hex: String) {\n…\n        // DIAGNOSTIC (round-3): mark this dial in-flight for the whole task, so\n        // the starvation rig can read how many dead-peer connects are occupying\n        // the 2-worker runtime at once. RAII decrement (panic/cancel-safe).\n        let gauge = Arc::clone(&self.active_dial_tasks);\n        self.runtime.spawn(async move {\n            gauge.fetch_add(1, Ordering::Relaxed);\n            let _dial_guard = DialGauge(gauge);\n            let outcome = async {\n                let _permit = sem\n                    .acquire_owned()\n                    .await\n                    .map_err(|e| io::Error::other(e.to_string()))?;\n                match tokio::time::timeout(dur, plan.connect(addr)).await {\n                    Ok(inner) => inner,\n                    Err(_elapsed) => Err(io::Error::other(format!(\n                        \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"\n                    ))),\n                }\n            }\n            .await;\n            if let Err(e) = outcome {\n                // Ordinary per-peer failure rides the presence stream — the pump\n                // backs THIS peer off and moves on; the round is never poisoned.\n                shared\n                    .presence\n                    .lock()\n                    .unwrap()\n                    .append_dial_failed(&remote_id_hex, e.to_string());\n            }\n        });\n    }\n\n    /// Snapshot the per-dial state (endpoint, shared table, identity, membership,\n    /// the opt-in roster exchange, our live address) into a `Send + 'static`\n    /// [`DialPlan`] both the blocking [`Self::dial`] and the spawned\n    /// [`Self::submit_dial`] connect through — the ONE connect+prove+register\n    /// path, so W1's bound and the seed-proof stay single-sourced.\n    fn dial_plan(&self) -> DialPlan {\n        DialPlan {\n            endpoint: Arc::clone(&self.endpoint),\n            shared: Arc::clone(&self.shared),\n            local_id: self.local_id,\n            membership: self.membership.clone(),\n            roster_rx: self.roster.lock().unwrap().clone(),\n            self_addr: serde_json::to_value(self.endpoint.addr())\n                .unwrap_or(serde_json::Value::Null),\n        }\n    }\n\n    /// Record that journaled dial `(minter, op_id)` opened `conn_id` (called inside\n    /// the `apply_once` closure, so a concurrent deduped replay always finds it).\n    /// The `minter` matches the journal key the broker built (ADR-0034 namespacing).\n    pub fn record_dial_op(&self, minter: Minter, op_id: u64, conn_id: u64) {\n        self.dial_ops.lock().unwrap().insert((minter, op_id), conn_id);\n    }\n\n    /// The connection a journaled dial `(minter, op_id)` opened, if this broker\n    /// process still holds it (a broker restart drops connections; the journal\n    /// alone survives — see `Broker::dispatch_net_dial`).\n    pub fn dial_op_conn(&self, minter: Minter, op_id: u64) -> Option<u64> {\n        self.dial_ops.lock().unwrap().get(&(minter, op_id)).copied()\n    }\n\n    /// The remote node id (hex) of a held connection.\n    pub fn conn_remote_hex(&self, conn_id: u64) -> Option<String> {\n        self.shared\n            .conns\n            .lock()\n            .unwrap()\n            .get(&conn_id)\n            .map(|e| e.remote_id_hex.clone())\n    }\n\n    /// The subnets the peer of `conn_id` proved current-epoch seed-knowledge of\n    /// at connect (Mesh-D2, REQ-MESH-1). Empty when seed-proof was disabled or\n    /// the conn is gone. The seam the D5 gate swap reads in place of\n    /// `is_trusted(subnet, origin)`; unused by any gate at D2.\n    // [impl->REQ-MESH-1]\n    pub fn conn_proven_subnets(&self, conn_id: u64) -> HashSet<String> {\n        self.shared\n            .conns\n            .lock()\n            .unwrap()\n            .get(&conn_id)\n            .map(|e| e.proven_subnets.clone())\n            .unwrap_or_default()\n    }\n\n    /// The OBSERVED peer address of a held connection (remote id + the\n    /// connection's current path addresses) as opaque JSON — the address-\n    /// seeding write-back the `net-dialed` reply carries (M8 decision 20,\n    /// REQ-CONV-1). `null` when the conn is gone, path-less, or fails to\n    /// serialize: the seed is an optimization, never an error path.\n    // [impl->REQ-CONV-1]\n    pub fn conn_remote_addr_json(&self, conn_id: u64) -> serde_json::Value {\n…\n    }\n\n[Showing lines 1124-1218 of 1881. Use :1219 to continue]"}],"details":{"truncation":{"content":"        // DIAGNOSTIC (round-3): mark this dial in-flight for the whole task, so\r\n        // the starvation rig can read how many dead-peer connects are occupying\r\n        // the 2-worker runtime at once. RAII decrement (panic/cancel-safe).\r\n        let gauge = Arc::clone(&self.active_dial_tasks);\r\n        self.runtime.spawn(async move {\r\n            gauge.fetch_add(1, Ordering::Relaxed);\r\n            let _dial_guard = DialGauge(gauge);\r\n            let outcome = async {\r\n                let _permit = sem\r\n                    .acquire_owned()\r\n                    .await\r\n                    .map_err(|e| io::Error::other(e.to_string()))?;\r\n                match tokio::time::timeout(dur, plan.connect(addr)).await {\r\n                    Ok(inner) => inner,\r\n                    Err(_elapsed) => Err(io::Error::other(format!(\r\n                        \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"\r\n                    ))),\r\n                }\r\n            }\r\n            .await;\r\n            if let Err(e) = outcome {\r\n                // Ordinary per-peer failure rides the presence stream — the pump\r\n                // backs THIS peer off and moves on; the round is never poisoned.\r\n                shared\r\n                    .presence\r\n                    .lock()\r\n                    .unwrap()\r\n                    .append_dial_failed(&remote_id_hex, e.to_string());\r\n            }\r\n        });\r\n    }\r\n\r\n    /// Snapshot the per-dial state (endpoint, shared table, identity, membership,\r\n    /// the opt-in roster exchange, our live address) into a `Send + 'static`\r\n    /// [`DialPlan`] both the blocking [`Self::dial`] and the spawned\r\n    /// [`Self::submit_dial`] connect through — the ONE connect+prove+register\r\n    /// path, so W1's bound and the seed-proof stay single-sourced.\r\n    fn dial_plan(&self) -> DialPlan {\r\n        DialPlan {\r\n            endpoint: Arc::clone(&self.endpoint),\r\n            shared: Arc::clone(&self.shared),\r\n            local_id: self.local_id,\r\n            membership: self.membership.clone(),\r\n            roster_rx: self.roster.lock().unwrap().clone(),\r\n            self_addr: serde_json::to_value(self.endpoint.addr())\r\n                .unwrap_or(serde_json::Value::Null),\r\n        }\r\n    }\r\n\r\n    /// Record that journaled dial `(minter, op_id)` opened `conn_id` (called inside\r\n    /// the `apply_once` closure, so a concurrent deduped replay always finds it).\r\n    /// The `minter` matches the journal key the broker built (ADR-0034 namespacing).\r\n    pub fn record_dial_op(&self, minter: Minter, op_id: u64, conn_id: u64) {\r\n        self.dial_ops.lock().unwrap().insert((minter, op_id), conn_id);\r\n    }\r\n\r\n    /// The connection a journaled dial `(minter, op_id)` opened, if this broker\r\n    /// process still holds it (a broker restart drops connections; the journal\r\n    /// alone survives — see `Broker::dispatch_net_dial`).\r\n    pub fn dial_op_conn(&self, minter: Minter, op_id: u64) -> Option<u64> {\r\n        self.dial_ops.lock().unwrap().get(&(minter, op_id)).copied()\r\n    }\r\n\r\n    /// The remote node id (hex) of a held connection.\r\n    pub fn conn_remote_hex(&self, conn_id: u64) -> Option<String> {\r\n        self.shared\r\n            .conns\r\n            .lock()\r\n            .unwrap()\r\n            .get(&conn_id)\r\n            .map(|e| e.remote_id_hex.clone())\r\n    }\r\n\r\n    /// The subnets the peer of `conn_id` proved current-epoch seed-knowledge of\r\n    /// at connect (Mesh-D2, REQ-MESH-1). Empty when seed-proof was disabled or\r\n    /// the conn is gone. The seam the D5 gate swap reads in place of\r\n    /// `is_trusted(subnet, origin)`; unused by any gate at D2.\r\n    // [impl->REQ-MESH-1]\r\n    pub fn conn_proven_subnets(&self, conn_id: u64) -> HashSet<String> {\r\n        self.shared\r\n            .conns\r\n            .lock()\r\n            .unwrap()\r\n            .get(&conn_id)\r\n            .map(|e| e.proven_subnets.clone())\r\n            .unwrap_or_default()\r\n    }\r\n\r\n    /// The OBSERVED peer address of a held connection (remote id + the\r\n    /// connection's current path addresses) as opaque JSON — the address-\r\n    /// seeding write-back the `net-dialed` reply carries (M8 decision 20,\r\n    /// REQ-CONV-1). `null` when the conn is gone, path-less, or fails to\r\n    /// serialize: the seed is an optimization, never an error path.\r\n    // [impl->REQ-CONV-1]\r\n    pub fn conn_remote_addr_json(&self, conn_id: u64) -> serde_json::Value {\r","truncated":true,"truncatedBy":"lines","totalLines":758,"totalBytes":4436,"outputLines":95,"outputBytes":4436,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"    pub fn submit_dial(&self, addr: EndpointAddr, remote_id_hex: String) {\n…\n        // DIAGNOSTIC (round-3): mark this dial in-flight for the whole task, so\r\n        // the starvation rig can read how many dead-peer connects are occupying\r\n        // the 2-worker runtime at once. RAII decrement (panic/cancel-safe).\r\n        let gauge = Arc::clone(&self.active_dial_tasks);\r\n        self.runtime.spawn(async move {\r\n            gauge.fetch_add(1, Ordering::Relaxed);\r\n            let _dial_guard = DialGauge(gauge);\r\n            let outcome = async {\r\n                let _permit = sem\r\n                    .acquire_owned()\r\n                    .await\r\n                    .map_err(|e| io::Error::other(e.to_string()))?;\r\n                match tokio::time::timeout(dur, plan.connect(addr)).await {\r\n                    Ok(inner) => inner,\r\n                    Err(_elapsed) => Err(io::Error::other(format!(\r\n                        \"submit-dial exceeded the {dur:?} bound (peer unresponsive)\"\r\n                    ))),\r\n                }\r\n            }\r\n            .await;\r\n            if let Err(e) = outcome {\r\n                // Ordinary per-peer failure rides the presence stream — the pump\r\n                // backs THIS peer off and moves on; the round is never poisoned.\r\n                shared\r\n                    .presence\r\n                    .lock()\r\n                    .unwrap()\r\n                    .append_dial_failed(&remote_id_hex, e.to_string());\r\n            }\r\n        });\r\n    }\r\n\r\n    /// Snapshot the per-dial state (endpoint, shared table, identity, membership,\r\n    /// the opt-in roster exchange, our live address) into a `Send + 'static`\r\n    /// [`DialPlan`] both the blocking [`Self::dial`] and the spawned\r\n    /// [`Self::submit_dial`] connect through — the ONE connect+prove+register\r\n    /// path, so W1's bound and the seed-proof stay single-sourced.\r\n    fn dial_plan(&self) -> DialPlan {\r\n        DialPlan {\r\n            endpoint: Arc::clone(&self.endpoint),\r\n            shared: Arc::clone(&self.shared),\r\n            local_id: self.local_id,\r\n            membership: self.membership.clone(),\r\n            roster_rx: self.roster.lock().unwrap().clone(),\r\n            self_addr: serde_json::to_value(self.endpoint.addr())\r\n                .unwrap_or(serde_json::Value::Null),\r\n        }\r\n    }\r\n\r\n    /// Record that journaled dial `(minter, op_id)` opened `conn_id` (called inside\r\n    /// the `apply_once` closure, so a concurrent deduped replay always finds it).\r\n    /// The `minter` matches the journal key the broker built (ADR-0034 namespacing).\r\n    pub fn record_dial_op(&self, minter: Minter, op_id: u64, conn_id: u64) {\r\n        self.dial_ops.lock().unwrap().insert((minter, op_id), conn_id);\r\n    }\r\n\r\n    /// The connection a journaled dial `(minter, op_id)` opened, if this broker\r\n    /// process still holds it (a broker restart drops connections; the journal\r\n    /// alone survives — see `Broker::dispatch_net_dial`).\r\n    pub fn dial_op_conn(&self, minter: Minter, op_id: u64) -> Option<u64> {\r\n        self.dial_ops.lock().unwrap().get(&(minter, op_id)).copied()\r\n    }\r\n\r\n    /// The remote node id (hex) of a held connection.\r\n    pub fn conn_remote_hex(&self, conn_id: u64) -> Option<String> {\r\n        self.shared\r\n            .conns\r\n            .lock()\r\n            .unwrap()\r\n            .get(&conn_id)\r\n            .map(|e| e.remote_id_hex.clone())\r\n    }\r\n\r\n    /// The subnets the peer of `conn_id` proved current-epoch seed-knowledge of\r\n    /// at connect (Mesh-D2, REQ-MESH-1). Empty when seed-proof was disabled or\r\n    /// the conn is gone. The seam the D5 gate swap reads in place of\r\n    /// `is_trusted(subnet, origin)`; unused by any gate at D2.\r\n    // [impl->REQ-MESH-1]\r\n    pub fn conn_proven_subnets(&self, conn_id: u64) -> HashSet<String> {\r\n        self.shared\r\n            .conns\r\n            .lock()\r\n            .unwrap()\r\n            .get(&conn_id)\r\n            .map(|e| e.proven_subnets.clone())\r\n            .unwrap_or_default()\r\n    }\r\n\r\n    /// The OBSERVED peer address of a held connection (remote id + the\r\n    /// connection's current path addresses) as opaque JSON — the address-\r\n    /// seeding write-back the `net-dialed` reply carries (M8 decision 20,\r\n    /// REQ-CONV-1). `null` when the conn is gone, path-less, or fails to\r\n    /// serialize: the seed is an optimization, never an error path.\r\n    // [impl->REQ-CONV-1]\r\n    pub fn conn_remote_addr_json(&self, conn_id: u64) -> serde_json::Value {\r\n…\n    }","startLine":1119,"lineNumbers":[1119,null,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,null,1231]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":1881,"totalBytes":4436,"outputLines":95,"outputBytes":4436,"shownRange":{"start":1124,"end":1218},"nextOffset":1219}}},"isError":false,"timestamp":1784069565765}}
{"type":"message","id":"9a017b23","parentId":"3a901470","timestamp":"2026-07-14T22:52:45.782Z","message":{"role":"toolResult","toolCallId":"call_WoYDUdlHvRD9bsylcwOEoRCl|fc_0cb567042bb57cd4016a56bdbc74b48196981b3ab1345bac95","toolName":"read","content":[{"type":"text","text":"    pub fn advertise_local(&self, owlery: &Path) -> Vec<RegistryFeedRecord> {\n…\n        for sub in &subnets.subnets {\n…\n            for id in ghosts {\n…\n                let instance = Instance {\n…\n                    // An erased ghost is gone — unbound, no controller, not a\n                    // harness seat (REQ-SUBNET-DISPLAY-PARITY); Offline is skipped\n                    // by the projection anyway, so these only round-trip the wire.\n                    // [impl->REQ-SUBNET-DISPLAY-PARITY]\n                    bound: false,\n                    controller_node: None,\n                    harness_only: false,\n                    adapter: None,\n                    recent_projects: Vec::new(),\n                    controlled: false,\n                };\n                reg.merge_instance(&id, instance.clone());\n                out.push(RegistryFeedRecord::Instance(RegistryUpdate {\n                    subnet: sub.name.clone(),\n                    endpoint_id: id,\n                    instance,\n                }));\n                eprintln!(\"ROSTER_GHOST_HEAL:{}: erased perch advertised offline\", sub.name);\n            }\n        }\n\n        // Node-level label (REQ-SUBNET-3): advertise this node's hostname per\n        // served subnet INDEPENDENT of endpoint rows, so an endpoint-less node\n        // (zero Self perches, or all hidden) still names itself to peers rather\n        // than rendering a bare key-prefix. Rides the same epoch lease; merged\n        // into our own registry too so the snapshot carries it. Emitted every\n        // round regardless of endpoint count — redundant-but-robust when rows\n        // exist (the render prefers a trust/instance label anyway), the SOLE\n        // carrier when they don't.\n        // [impl->REQ-SUBNET-3]\n        if let Some(label) = self.node_label.clone() {\n            for sub in &subnets.subnets {\n                let Ok(ep) = epoch.next_epoch() else { continue };\n                let reg = regs.entry(sub.name.clone()).or_default();\n                reg.merge_node_label(&self.node_hex, label.clone(), ep);\n                out.push(RegistryFeedRecord::NodeLabel(NodeLabelUpdate {\n                    subnet: sub.name.clone(),\n                    node: self.node_hex.clone(),\n                    label: label.clone(),\n                    epoch: ep,\n                }));\n            }\n        }\n        drop(epoch);\n        drop(regs);\n        self.write_snapshots();\n        out\n    }\n\n    /// Evict every registry row authored by a **silent** peer node\n    /// (KNOWN-HAZARDS 4.10): a node not heard — no admitted inbound feed —\n    /// within `ttl` has its rows removed from every subnet registry and the\n    /// snapshots rewritten, so a dead node identity can no longer poison\n    /// bare-id resolution with phantom ambiguity. Own rows never decay (this\n    /// node authors them fresh each pump tick and is never in its own heard\n    /// map). A row whose author has NO heard stamp is treated as silent —\n    /// rows only enter via admitted feeds (which stamp) or `advertise_local`\n    /// (own rows, excluded), so an unstamped foreign row is already an\n    /// anomaly and fails toward eviction. A merely-offline peer reconverges\n    /// within one pump cadence of its return (re-advertisement from its\n    /// durable epoch). Returns the number of rows evicted.\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n    pub fn evict_silent_peers(&self, ttl: std::time::Duration) -> usize {\n        self.evict_silent_peers_at(ttl, wall_ms())\n    }\n\n    /// [`evict_silent_peers`](Self::evict_silent_peers) with an explicit\n    /// clock (the testable seam).\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\n    pub fn evict_silent_peers_at(&self, ttl: std::time::Duration, now_ms: u64) -> usize {\n        let ttl_ms = ttl.as_millis() as u64;\n        let heard = self.heard.lock().unwrap();\n        let silent = |node: &str| {\n            node != self.node_hex\n                && heard\n                    .get(node)\n                    .is_none_or(|&t| now_ms.saturating_sub(t) > ttl_ms)\n        };\n        let mut regs = self.regs.lock().unwrap();\n        let mut evicted = 0usize;\n        for (subnet, reg) in regs.iter_mut() {\n            let n = reg.evict_nodes(silent);\n            if n > 0 {\n                eprintln!(\"REGISTRY_EVICT:{subnet}: {n} row(s) from silent node(s)\");\n            }\n            evicted += n;\n        }\n        drop(regs);\n        drop(heard);\n        if evicted > 0 {\n            self.write_snapshots();\n        }\n        evicted\n    }\n\n\n[Showing lines 559-653 of 2210. Use :654 to continue]"}],"details":{"truncation":{"content":"                    // An erased ghost is gone — unbound, no controller, not a\r\n                    // harness seat (REQ-SUBNET-DISPLAY-PARITY); Offline is skipped\r\n                    // by the projection anyway, so these only round-trip the wire.\r\n                    // [impl->REQ-SUBNET-DISPLAY-PARITY]\r\n                    bound: false,\r\n                    controller_node: None,\r\n                    harness_only: false,\r\n                    adapter: None,\r\n                    recent_projects: Vec::new(),\r\n                    controlled: false,\r\n                };\r\n                reg.merge_instance(&id, instance.clone());\r\n                out.push(RegistryFeedRecord::Instance(RegistryUpdate {\r\n                    subnet: sub.name.clone(),\r\n                    endpoint_id: id,\r\n                    instance,\r\n                }));\r\n                eprintln!(\"ROSTER_GHOST_HEAL:{}: erased perch advertised offline\", sub.name);\r\n            }\r\n        }\r\n\r\n        // Node-level label (REQ-SUBNET-3): advertise this node's hostname per\r\n        // served subnet INDEPENDENT of endpoint rows, so an endpoint-less node\r\n        // (zero Self perches, or all hidden) still names itself to peers rather\r\n        // than rendering a bare key-prefix. Rides the same epoch lease; merged\r\n        // into our own registry too so the snapshot carries it. Emitted every\r\n        // round regardless of endpoint count — redundant-but-robust when rows\r\n        // exist (the render prefers a trust/instance label anyway), the SOLE\r\n        // carrier when they don't.\r\n        // [impl->REQ-SUBNET-3]\r\n        if let Some(label) = self.node_label.clone() {\r\n            for sub in &subnets.subnets {\r\n                let Ok(ep) = epoch.next_epoch() else { continue };\r\n                let reg = regs.entry(sub.name.clone()).or_default();\r\n                reg.merge_node_label(&self.node_hex, label.clone(), ep);\r\n                out.push(RegistryFeedRecord::NodeLabel(NodeLabelUpdate {\r\n                    subnet: sub.name.clone(),\r\n                    node: self.node_hex.clone(),\r\n                    label: label.clone(),\r\n                    epoch: ep,\r\n                }));\r\n            }\r\n        }\r\n        drop(epoch);\r\n        drop(regs);\r\n        self.write_snapshots();\r\n        out\r\n    }\r\n\r\n    /// Evict every registry row authored by a **silent** peer node\r\n    /// (KNOWN-HAZARDS 4.10): a node not heard — no admitted inbound feed —\r\n    /// within `ttl` has its rows removed from every subnet registry and the\r\n    /// snapshots rewritten, so a dead node identity can no longer poison\r\n    /// bare-id resolution with phantom ambiguity. Own rows never decay (this\r\n    /// node authors them fresh each pump tick and is never in its own heard\r\n    /// map). A row whose author has NO heard stamp is treated as silent —\r\n    /// rows only enter via admitted feeds (which stamp) or `advertise_local`\r\n    /// (own rows, excluded), so an unstamped foreign row is already an\r\n    /// anomaly and fails toward eviction. A merely-offline peer reconverges\r\n    /// within one pump cadence of its return (re-advertisement from its\r\n    /// durable epoch). Returns the number of rows evicted.\r\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\r\n    pub fn evict_silent_peers(&self, ttl: std::time::Duration) -> usize {\r\n        self.evict_silent_peers_at(ttl, wall_ms())\r\n    }\r\n\r\n    /// [`evict_silent_peers`](Self::evict_silent_peers) with an explicit\r\n    /// clock (the testable seam).\r\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\r\n    pub fn evict_silent_peers_at(&self, ttl: std::time::Duration, now_ms: u64) -> usize {\r\n        let ttl_ms = ttl.as_millis() as u64;\r\n        let heard = self.heard.lock().unwrap();\r\n        let silent = |node: &str| {\r\n            node != self.node_hex\r\n                && heard\r\n                    .get(node)\r\n                    .is_none_or(|&t| now_ms.saturating_sub(t) > ttl_ms)\r\n        };\r\n        let mut regs = self.regs.lock().unwrap();\r\n        let mut evicted = 0usize;\r\n        for (subnet, reg) in regs.iter_mut() {\r\n            let n = reg.evict_nodes(silent);\r\n            if n > 0 {\r\n                eprintln!(\"REGISTRY_EVICT:{subnet}: {n} row(s) from silent node(s)\");\r\n            }\r\n            evicted += n;\r\n        }\r\n        drop(regs);\r\n        drop(heard);\r\n        if evicted > 0 {\r\n            self.write_snapshots();\r\n        }\r\n        evicted\r\n    }\r\n\r","truncated":true,"truncatedBy":"lines","totalLines":1652,"totalBytes":4439,"outputLines":95,"outputBytes":4439,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"    pub fn advertise_local(&self, owlery: &Path) -> Vec<RegistryFeedRecord> {\n…\n        for sub in &subnets.subnets {\n…\n            for id in ghosts {\n…\n                let instance = Instance {\n…\n                    // An erased ghost is gone — unbound, no controller, not a\r\n                    // harness seat (REQ-SUBNET-DISPLAY-PARITY); Offline is skipped\r\n                    // by the projection anyway, so these only round-trip the wire.\r\n                    // [impl->REQ-SUBNET-DISPLAY-PARITY]\r\n                    bound: false,\r\n                    controller_node: None,\r\n                    harness_only: false,\r\n                    adapter: None,\r\n                    recent_projects: Vec::new(),\r\n                    controlled: false,\r\n                };\r\n                reg.merge_instance(&id, instance.clone());\r\n                out.push(RegistryFeedRecord::Instance(RegistryUpdate {\r\n                    subnet: sub.name.clone(),\r\n                    endpoint_id: id,\r\n                    instance,\r\n                }));\r\n                eprintln!(\"ROSTER_GHOST_HEAL:{}: erased perch advertised offline\", sub.name);\r\n            }\r\n        }\r\n\r\n        // Node-level label (REQ-SUBNET-3): advertise this node's hostname per\r\n        // served subnet INDEPENDENT of endpoint rows, so an endpoint-less node\r\n        // (zero Self perches, or all hidden) still names itself to peers rather\r\n        // than rendering a bare key-prefix. Rides the same epoch lease; merged\r\n        // into our own registry too so the snapshot carries it. Emitted every\r\n        // round regardless of endpoint count — redundant-but-robust when rows\r\n        // exist (the render prefers a trust/instance label anyway), the SOLE\r\n        // carrier when they don't.\r\n        // [impl->REQ-SUBNET-3]\r\n        if let Some(label) = self.node_label.clone() {\r\n            for sub in &subnets.subnets {\r\n                let Ok(ep) = epoch.next_epoch() else { continue };\r\n                let reg = regs.entry(sub.name.clone()).or_default();\r\n                reg.merge_node_label(&self.node_hex, label.clone(), ep);\r\n                out.push(RegistryFeedRecord::NodeLabel(NodeLabelUpdate {\r\n                    subnet: sub.name.clone(),\r\n                    node: self.node_hex.clone(),\r\n                    label: label.clone(),\r\n                    epoch: ep,\r\n                }));\r\n            }\r\n        }\r\n        drop(epoch);\r\n        drop(regs);\r\n        self.write_snapshots();\r\n        out\r\n    }\r\n\r\n    /// Evict every registry row authored by a **silent** peer node\r\n    /// (KNOWN-HAZARDS 4.10): a node not heard — no admitted inbound feed —\r\n    /// within `ttl` has its rows removed from every subnet registry and the\r\n    /// snapshots rewritten, so a dead node identity can no longer poison\r\n    /// bare-id resolution with phantom ambiguity. Own rows never decay (this\r\n    /// node authors them fresh each pump tick and is never in its own heard\r\n    /// map). A row whose author has NO heard stamp is treated as silent —\r\n    /// rows only enter via admitted feeds (which stamp) or `advertise_local`\r\n    /// (own rows, excluded), so an unstamped foreign row is already an\r\n    /// anomaly and fails toward eviction. A merely-offline peer reconverges\r\n    /// within one pump cadence of its return (re-advertisement from its\r\n    /// durable epoch). Returns the number of rows evicted.\r\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\r\n    pub fn evict_silent_peers(&self, ttl: std::time::Duration) -> usize {\r\n        self.evict_silent_peers_at(ttl, wall_ms())\r\n    }\r\n\r\n    /// [`evict_silent_peers`](Self::evict_silent_peers) with an explicit\r\n    /// clock (the testable seam).\r\n    // [impl->REQ-HAZARD-REGISTRY-GHOST-ROWS]\r\n    pub fn evict_silent_peers_at(&self, ttl: std::time::Duration, now_ms: u64) -> usize {\r\n        let ttl_ms = ttl.as_millis() as u64;\r\n        let heard = self.heard.lock().unwrap();\r\n        let silent = |node: &str| {\r\n            node != self.node_hex\r\n                && heard\r\n                    .get(node)\r\n                    .is_none_or(|&t| now_ms.saturating_sub(t) > ttl_ms)\r\n        };\r\n        let mut regs = self.regs.lock().unwrap();\r\n        let mut evicted = 0usize;\r\n        for (subnet, reg) in regs.iter_mut() {\r\n            let n = reg.evict_nodes(silent);\r\n            if n > 0 {\r\n                eprintln!(\"REGISTRY_EVICT:{subnet}: {n} row(s) from silent node(s)\");\r\n            }\r\n            evicted += n;\r\n        }\r\n        drop(regs);\r\n        drop(heard);\r\n        if evicted > 0 {\r\n            self.write_snapshots();\r\n        }\r\n        evicted\r\n    }\r\n\r","startLine":345,"lineNumbers":[345,null,535,null,547,null,549,null,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":2210,"totalBytes":4439,"outputLines":95,"outputBytes":4439,"shownRange":{"start":559,"end":653},"nextOffset":654}}},"isError":false,"timestamp":1784069565782}}
{"type":"message","id":"b27eee99","parentId":"9a017b23","timestamp":"2026-07-14T22:52:45.912Z","message":{"role":"toolResult","toolCallId":"call_fk7HhXCgWkrrJHPG5IIkzXAA|fc_0cb567042bb57cd4016a56bdbc74bc81968297aa643effb6f2","toolName":"read","content":[{"type":"text","text":"fn cmd_daemon_stop(force: bool) -> i32 {\n…\n    match spt_daemon::stop_daemon() {\n…\n        Ok(spt_daemon::StopOutcome::IpcStopped) => {\n…\n        }\n        Err(e) => {\n            eprintln!(\"DAEMON_STOP_FAIL: {e}\");\n            1\n        }\n    }\n}\n\n/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.\n/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +\n/// a pump waiting on the network — NOT a STALLED alarm read off a stale\n/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the\n/// heartbeat age exceeded uptime). With net up, the heartbeat drives\n/// live/stalled as before (a genuine wedge still reads STALLED honestly).\n// [impl->REQ-DAEMON-9]\nfn render_connection_lines(\n    net_up: bool,\n    heartbeat: Option<u64>,\n    now: u64,\n    stale_after: u64,\n) -> String {\n    if !net_up {\n        return \"connection: no connection — net endpoint not bound (retrying in background)\\n\\\n                peer pump: waiting on network\\n\"\n            .to_string();\n    }\n    match heartbeat {\n        Some(at) => {\n            let age = now.saturating_sub(at);\n            if age <= stale_after {\n                format!(\"peer pump: live (last tick {}s ago)\\n\", age / 1000)\n            } else {\n                format!(\n                    \"peer pump: STALLED (last tick {}s ago — advertising/connecting \\\n                     is not running; restart the daemon)\\n\",\n                    age / 1000\n                )\n            }\n        }\n        None => \"peer pump: no heartbeat recorded\\n\".to_string(),\n    }\n}\n\n/// `spt daemon [status]` — the node status view (M8 decisions 23 + 25b,\n/// REQ-CLI-2): daemon state (running/stopped + the peer-pump heartbeat —\n/// a stalled pump renders honestly, never implied-healthy), the member\n/// subnets, and this node's local endpoints. Read-only and ungated.\n// [impl->REQ-CLI-2]\n/// `spt daemon status` --json: the same facts the human view renders — daemon\n/// running + pid, network/pump liveness, the managing service, member subnet\n/// rows, and this node's local perches — copied into committed fields.\n// [impl->REQ-CLI-JSON]\n#[derive(serde::Serialize)]\nstruct DaemonStatusJson {\n    running: bool,\n    pid: Option<String>,\n    /// Net endpoint bound (the pump has a network to gossip on). `None` when\n    /// the daemon is down (not queried).\n    net_up: Option<bool>,\n    /// Peer-pump last-tick wall-clock ms (`None` = no heartbeat recorded).\n    pump_heartbeat_ms: Option<u64>,\n    /// The managing service label, if a registered service owns this daemon.\n    managed_by: Option<String>,\n    managed_active: Option<bool>,\n    subnets: Vec<DaemonSubnetJson>,\n    local_endpoints: Vec<LocalPerchJson>,\n    /// F-025: the version the RUNNING broker reports it was compiled at (its own\n    /// image), or `None` when the daemon is down / the broker predates the\n    /// self-report. Distinct from the installed CLI version.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    broker_image: Option<String>,\n    /// F-025: whether the running broker is on a DIFFERENT image than the\n    /// installed CLI (a `spt update apply` landed but the surviving daemon still\n    /// runs the previous version). `None` when the daemon is down.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    broker_stale: Option<bool>,\n    /// LIFECYCLE-TRUTH W2 observability rider: brain-subscriber stall-evicts since\n    /// broker boot (a controller detached for a suspended/black-holed brain conn).\n    /// `None` when the daemon is down or the broker is too old to report; `Some(0)`\n    /// = healthy, none evicted.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    stall_evict_count: Option<u64>,\n    /// Wall-ms of the most recent stall-evict (0 = none). Omitted when count is None.\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    stall_evict_last_ms: Option<u64>,\n}\n\n[Showing lines 3959-4043 of 17537. Use :4044 to continue]"}],"details":{"truncation":{"content":"        }\r\n        Err(e) => {\r\n            eprintln!(\"DAEMON_STOP_FAIL: {e}\");\r\n            1\r\n        }\r\n    }\r\n}\r\n\r\n/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.\r\n/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +\r\n/// a pump waiting on the network — NOT a STALLED alarm read off a stale\r\n/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the\r\n/// heartbeat age exceeded uptime). With net up, the heartbeat drives\r\n/// live/stalled as before (a genuine wedge still reads STALLED honestly).\r\n// [impl->REQ-DAEMON-9]\r\nfn render_connection_lines(\r\n    net_up: bool,\r\n    heartbeat: Option<u64>,\r\n    now: u64,\r\n    stale_after: u64,\r\n) -> String {\r\n    if !net_up {\r\n        return \"connection: no connection — net endpoint not bound (retrying in background)\\n\\\r\n                peer pump: waiting on network\\n\"\r\n            .to_string();\r\n    }\r\n    match heartbeat {\r\n        Some(at) => {\r\n            let age = now.saturating_sub(at);\r\n            if age <= stale_after {\r\n                format!(\"peer pump: live (last tick {}s ago)\\n\", age / 1000)\r\n            } else {\r\n                format!(\r\n                    \"peer pump: STALLED (last tick {}s ago — advertising/connecting \\\r\n                     is not running; restart the daemon)\\n\",\r\n                    age / 1000\r\n                )\r\n            }\r\n        }\r\n        None => \"peer pump: no heartbeat recorded\\n\".to_string(),\r\n    }\r\n}\r\n\r\n/// `spt daemon [status]` — the node status view (M8 decisions 23 + 25b,\r\n/// REQ-CLI-2): daemon state (running/stopped + the peer-pump heartbeat —\r\n/// a stalled pump renders honestly, never implied-healthy), the member\r\n/// subnets, and this node's local endpoints. Read-only and ungated.\r\n// [impl->REQ-CLI-2]\r\n/// `spt daemon status` --json: the same facts the human view renders — daemon\r\n/// running + pid, network/pump liveness, the managing service, member subnet\r\n/// rows, and this node's local perches — copied into committed fields.\r\n// [impl->REQ-CLI-JSON]\r\n#[derive(serde::Serialize)]\r\nstruct DaemonStatusJson {\r\n    running: bool,\r\n    pid: Option<String>,\r\n    /// Net endpoint bound (the pump has a network to gossip on). `None` when\r\n    /// the daemon is down (not queried).\r\n    net_up: Option<bool>,\r\n    /// Peer-pump last-tick wall-clock ms (`None` = no heartbeat recorded).\r\n    pump_heartbeat_ms: Option<u64>,\r\n    /// The managing service label, if a registered service owns this daemon.\r\n    managed_by: Option<String>,\r\n    managed_active: Option<bool>,\r\n    subnets: Vec<DaemonSubnetJson>,\r\n    local_endpoints: Vec<LocalPerchJson>,\r\n    /// F-025: the version the RUNNING broker reports it was compiled at (its own\r\n    /// image), or `None` when the daemon is down / the broker predates the\r\n    /// self-report. Distinct from the installed CLI version.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    broker_image: Option<String>,\r\n    /// F-025: whether the running broker is on a DIFFERENT image than the\r\n    /// installed CLI (a `spt update apply` landed but the surviving daemon still\r\n    /// runs the previous version). `None` when the daemon is down.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    broker_stale: Option<bool>,\r\n    /// LIFECYCLE-TRUTH W2 observability rider: brain-subscriber stall-evicts since\r\n    /// broker boot (a controller detached for a suspended/black-holed brain conn).\r\n    /// `None` when the daemon is down or the broker is too old to report; `Some(0)`\r\n    /// = healthy, none evicted.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    stall_evict_count: Option<u64>,\r\n    /// Wall-ms of the most recent stall-evict (0 = none). Omitted when count is None.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    stall_evict_last_ms: Option<u64>,\r","truncated":true,"truncatedBy":"lines","totalLines":13579,"totalBytes":3901,"outputLines":85,"outputBytes":3901,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"fn cmd_daemon_stop(force: bool) -> i32 {\n…\n    match spt_daemon::stop_daemon() {\n…\n        Ok(spt_daemon::StopOutcome::IpcStopped) => {\n…\n        }\r\n        Err(e) => {\r\n            eprintln!(\"DAEMON_STOP_FAIL: {e}\");\r\n            1\r\n        }\r\n    }\r\n}\r\n\r\n/// The connection + peer-pump status lines (REQ-DAEMON-5/-9). Pure for tests.\r\n/// A net-LESS broker (`net_up == false`) surfaces \"no connection (retrying)\" +\r\n/// a pump waiting on the network — NOT a STALLED alarm read off a stale\r\n/// pre-boot heartbeat (the kitsubito 2026-06-08 boot-race misreport, where the\r\n/// heartbeat age exceeded uptime). With net up, the heartbeat drives\r\n/// live/stalled as before (a genuine wedge still reads STALLED honestly).\r\n// [impl->REQ-DAEMON-9]\r\nfn render_connection_lines(\r\n    net_up: bool,\r\n    heartbeat: Option<u64>,\r\n    now: u64,\r\n    stale_after: u64,\r\n) -> String {\r\n    if !net_up {\r\n        return \"connection: no connection — net endpoint not bound (retrying in background)\\n\\\r\n                peer pump: waiting on network\\n\"\r\n            .to_string();\r\n    }\r\n    match heartbeat {\r\n        Some(at) => {\r\n            let age = now.saturating_sub(at);\r\n            if age <= stale_after {\r\n                format!(\"peer pump: live (last tick {}s ago)\\n\", age / 1000)\r\n            } else {\r\n                format!(\r\n                    \"peer pump: STALLED (last tick {}s ago — advertising/connecting \\\r\n                     is not running; restart the daemon)\\n\",\r\n                    age / 1000\r\n                )\r\n            }\r\n        }\r\n        None => \"peer pump: no heartbeat recorded\\n\".to_string(),\r\n    }\r\n}\r\n\r\n/// `spt daemon [status]` — the node status view (M8 decisions 23 + 25b,\r\n/// REQ-CLI-2): daemon state (running/stopped + the peer-pump heartbeat —\r\n/// a stalled pump renders honestly, never implied-healthy), the member\r\n/// subnets, and this node's local endpoints. Read-only and ungated.\r\n// [impl->REQ-CLI-2]\r\n/// `spt daemon status` --json: the same facts the human view renders — daemon\r\n/// running + pid, network/pump liveness, the managing service, member subnet\r\n/// rows, and this node's local perches — copied into committed fields.\r\n// [impl->REQ-CLI-JSON]\r\n#[derive(serde::Serialize)]\r\nstruct DaemonStatusJson {\r\n    running: bool,\r\n    pid: Option<String>,\r\n    /// Net endpoint bound (the pump has a network to gossip on). `None` when\r\n    /// the daemon is down (not queried).\r\n    net_up: Option<bool>,\r\n    /// Peer-pump last-tick wall-clock ms (`None` = no heartbeat recorded).\r\n    pump_heartbeat_ms: Option<u64>,\r\n    /// The managing service label, if a registered service owns this daemon.\r\n    managed_by: Option<String>,\r\n    managed_active: Option<bool>,\r\n    subnets: Vec<DaemonSubnetJson>,\r\n    local_endpoints: Vec<LocalPerchJson>,\r\n    /// F-025: the version the RUNNING broker reports it was compiled at (its own\r\n    /// image), or `None` when the daemon is down / the broker predates the\r\n    /// self-report. Distinct from the installed CLI version.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    broker_image: Option<String>,\r\n    /// F-025: whether the running broker is on a DIFFERENT image than the\r\n    /// installed CLI (a `spt update apply` landed but the surviving daemon still\r\n    /// runs the previous version). `None` when the daemon is down.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    broker_stale: Option<bool>,\r\n    /// LIFECYCLE-TRUTH W2 observability rider: brain-subscriber stall-evicts since\r\n    /// broker boot (a controller detached for a suspended/black-holed brain conn).\r\n    /// `None` when the daemon is down or the broker is too old to report; `Some(0)`\r\n    /// = healthy, none evicted.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    stall_evict_count: Option<u64>,\r\n    /// Wall-ms of the most recent stall-evict (0 = none). Omitted when count is None.\r\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\r\n    stall_evict_last_ms: Option<u64>,\r\n}","startLine":3939,"lineNumbers":[3939,null,3947,null,3956,null,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3992,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038,4039,4040,4041,4042,4043,4044]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":17537,"totalBytes":3901,"outputLines":85,"outputBytes":3901,"shownRange":{"start":3959,"end":4043},"nextOffset":4044}}},"isError":false,"timestamp":1784069565912}}
{"type":"message","id":"4e8e1719","parentId":"b27eee99","timestamp":"2026-07-14T22:52:54.591Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Locating RelayPolicy configuration**"},{"type":"toolCall","id":"call_ptYRQ9NikGvCaFKSC6R1vxaC|fc_0cb567042bb57cd4016a56bdc591f88196a2299e2137a1c935","name":"grep","arguments":{"i":"Tracing relay configuration","pattern":"RelayPolicy|cfg\\.relay|relay.*n0|RelayMode","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src","selector":null,"case":true,"gitignore":true,"skip":null}},{"type":"toolCall","id":"call_YeMhCcgWpBNu4LLDmXDiT3jr|fc_0cb567042bb57cd4016a56bdc592088196a27d0907143e9c94","name":"read","arguments":{"i":"Reading endpoint builder completion","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","selector":"390-485"}},{"type":"toolCall","id":"call_7hCZ0w26rn5aRIxKUGZzTI6f|fc_0cb567042bb57cd4016a56bdc592108196bb85f805968c5755","name":"read","arguments":{"i":"Reading roster key anchors","path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","selector":"25-70,118-190"}},{"type":"toolCall","id":"call_YxJLXAQSkBACX8MUXuU0ubXo|fc_0cb567042bb57cd4016a56bdc592188196850f8d0208d5c42a","name":"read","arguments":{"i":"Reading registry eviction config use","path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/daemon.rs","selector":"180-230"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":11020,"output":268,"cacheRead":77312,"cacheWrite":0,"totalTokens":88600,"reasoningTokens":16,"cost":{"input":0.0551,"output":0.00804,"cacheRead":0.038655999999999996,"cacheWrite":0,"total":0.101796}},"stopReason":"toolUse","timestamp":1784069565960,"responseId":"resp_0cb567042bb57cd4016a56bdbe54408196a724c4e7e3570f35","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bdc0a4e48196a874f6fbcd444ee5","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr3FpScb5gwiKey9QjnEBu9TwoL3h5EviUIShM_qqZF5ZLSG7pZimTqtXQinwgfCUoMYIuwRYb73L1aaceNy31HueM29o1juPH_9qGqH4rIz9IpCg0uF3KCPpxxDY_hxIds-7VYF8KQQdNJfYK5vAPNZxrCQWP95c87AFAiLsH0QkWYcvE5Wzo17WeMeYDZiwVXWznbY2cg4fcS8ZYHgd2hMsdmz9VO21BNpaB-AdlyPMhq3jlPXkX-Mpg0hrQDZot1FJTNPHQEZFu27gQ-VdyuX_oWyYWWaKabKhQK4kMr7cpKiGmj2IbUHcNfahK7Y5NBfN01WkuKWIQaqZW9LsjO3JLqHjK3nuQQMC_mcJBipV-2GMwXvDoFncN4vC5_cPmRRqbVYz014UO7fNYP7ZxLYHbp5YSLnSP1S4dM-_l-xyozw2fjLFACRCs0t549oxtMb5zCXWy3rA4zCof6RmXQDvL-kjH_8Ah7_1fM8jkjUFQZyLyfzex_Kfp0xyBvUAy6a1RuEanmx5oRf3A7dQE79Ejrb9trNMXjb1MA5z2Wu7C-HBIxKG4uECgUua3CgXl7pSPHyjfXEJ7pnXoMz_5X1pKNvjOZ073gaFc53ivPcudlBKwDElkMnq5gJe7ffaA3euiFSRb8lxMH6KPg9e-S9A8FOqbaRh-CNvuAe8duFKY7iUNx22xn1LHwLj3smFRwze9D3hg2q6gzS3PcU0HgJcSNqPHfkxpIWfxA-S9FB1NLnXBBGSe4gT_PTm9POFwalPkowORl6-O8RSIYqPYnFn1m4lnRhuyn_Vng0MOX1byOvY-zoTdS5yLwvQ4mTaFJfiG1G2_hHbUXyVVIrfn-Kb2bv2qovTA4v4ZNps2WH5G0H9MZ7Xl8XImSPGQwK43CiTEDzQ6qDSig7ukY3cVtk7g0N5rvey2WDeEnqOstdkup5zUsw5pU932f7DCXfUCq5fMUd9B9_MTNsI8QddggrG7mzDkCJc2Xrz0xRVrLFqIHZGVtUibONZHMx33NFQsMX","summary":[{"type":"summary_text","text":"**Locating RelayPolicy configuration**"}]},{"id":"fc_0cb567042bb57cd4016a56bdc591f88196a2299e2137a1c935","type":"function_call","status":"completed","arguments":"{\"i\":\"Tracing relay configuration\",\"pattern\":\"RelayPolicy|cfg\\\\.relay|relay.*n0|RelayMode\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src\",\"selector\":null,\"case\":true,\"gitignore\":true,\"skip\":null}","call_id":"call_ptYRQ9NikGvCaFKSC6R1vxaC","name":"grep"},{"id":"fc_0cb567042bb57cd4016a56bdc592088196a27d0907143e9c94","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading endpoint builder completion\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs\",\"selector\":\"390-485\"}","call_id":"call_YeMhCcgWpBNu4LLDmXDiT3jr","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bdc592108196bb85f805968c5755","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading roster key anchors\",\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\",\"selector\":\"25-70,118-190\"}","call_id":"call_7hCZ0w26rn5aRIxKUGZzTI6f","name":"read"},{"id":"fc_0cb567042bb57cd4016a56bdc592188196850f8d0208d5c42a","type":"function_call","status":"completed","arguments":"{\"i\":\"Reading registry eviction config use\",\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/daemon.rs\",\"selector\":\"180-230\"}","call_id":"call_YxJLXAQSkBACX8MUXuU0ubXo","name":"read"}]},"duration":8628.642400026321,"ttft":2707.68440002203,"contextSnapshot":{"promptTokens":88332,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_ptYRQ9NikGvCaFKSC6R1vxaC|fc_0cb567042bb57cd4016a56bdc591f88196a2299e2137a1c935","toolName":"grep","startedAt":"2026-07-14T22:52:54.592Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src; C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src"},"intent":"Tracing relay configuration"},"id":"d1f85366","parentId":"4e8e1719","timestamp":"2026-07-14T22:52:54.592Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_YeMhCcgWpBNu4LLDmXDiT3jr|fc_0cb567042bb57cd4016a56bdc592088196a27d0907143e9c94","toolName":"read","startedAt":"2026-07-14T22:52:54.592Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs"},"intent":"Reading endpoint builder completion"},"id":"69b22888","parentId":"d1f85366","timestamp":"2026-07-14T22:52:54.592Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_7hCZ0w26rn5aRIxKUGZzTI6f|fc_0cb567042bb57cd4016a56bdc592108196bb85f805968c5755","toolName":"read","startedAt":"2026-07-14T22:52:54.592Z","args":{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"},"intent":"Reading roster key anchors"},"id":"325d54e0","parentId":"69b22888","timestamp":"2026-07-14T22:52:54.592Z"}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_YxJLXAQSkBACX8MUXuU0ubXo|fc_0cb567042bb57cd4016a56bdc592188196850f8d0208d5c42a","toolName":"read","startedAt":"2026-07-14T22:52:54.592Z","args":{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/daemon.rs"},"intent":"Reading registry eviction config use"},"id":"7eb7cf6d","parentId":"325d54e0","timestamp":"2026-07-14T22:52:54.592Z"}
{"type":"message","id":"353cb045","parentId":"7eb7cf6d","timestamp":"2026-07-14T22:52:54.599Z","message":{"role":"toolResult","toolCallId":"call_7hCZ0w26rn5aRIxKUGZzTI6f|fc_0cb567042bb57cd4016a56bdc592108196bb85f805968c5755","toolName":"read","content":[{"type":"text","text":"    {\n…\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n      \"subnet\": \"SPT_DEV\",\n…\n    },\n…\n    {\n      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"SCELTOUIN\",\n      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n      \"address\": {\n        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.105.1.5:61419\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:61419\"\n          },\n          {\n            \"Ip\": \"172.29.112.1:61419\"\n          },\n          {\n            \"Ip\": \"192.168.1.156:61419\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783206905\",\n      \"lease_epoch\": 399\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n…\n    },"}],"details":{"displayContent":{"text":"    {\n…\n      \"last_seen\": \"1784012120\",\n      \"lease_epoch\": 610151\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"cfd9fc552b44f9da7b7146baee3eb18c7b7514e01c5ad06e367d3f15765c3f6f\",\n      \"subnet\": \"SPT_DEV\",\n…\n    },\n…\n    {\n      \"pubkey_hex\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n      \"subnet\": \"SPT_DEV\",\n      \"label\": \"SCELTOUIN\",\n      \"machine_id\": \"4d89a3fef59046c584f9974d658b99c55717980390b9d0c2cbac7f48e453cb39\",\n      \"address\": {\n        \"id\": \"5ff50e75cd91d3b88ae3a0aa863e4371ad810c9747a43ac6242661e8cf8738ce\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"100.105.1.5:61419\"\n          },\n          {\n            \"Ip\": \"107.131.129.74:61419\"\n          },\n          {\n            \"Ip\": \"172.29.112.1:61419\"\n          },\n          {\n            \"Ip\": \"192.168.1.156:61419\"\n          }\n        ]\n      },\n      \"last_seen\": \"1783206905\",\n      \"lease_epoch\": 399\n    },\n    {\n      \"pubkey_hex\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n      \"address\": {\n        \"id\": \"ecb39e40e3400d46ddca73914685fb91b2d82969119e42293408511e27e55657\",\n        \"addrs\": [\n          {\n            \"Relay\": \"https://usw1-1.relay.n0.iroh-canary.iroh.link./\"\n          },\n          {\n            \"Ip\": \"76.80.65.5:61803\"\n          },\n          {\n            \"Ip\": \"100.125.242.88:61803\"\n          },\n          {\n            \"Ip\": \"104.174.122.7:64860\"\n          },\n          {\n            \"Ip\": \"172.28.240.1:61803\"\n          },\n          {\n            \"Ip\": \"192.168.1.12:61803\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857::6df]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:bda6:5412:65fa:1322]:61805\"\n          },\n          {\n            \"Ip\": \"[2603:8000:a800:7857:f862:2f27:bac2:2337]:61805\"\n          }\n        ]\n      },\n      \"last_seen\": \"1784012096\",\n      \"lease_epoch\": 446337\n    },\n    {\n      \"pubkey_hex\": \"39c018a4c8c92c99aaa2b069e7daa8d0188d0db58b1fc57cf34569f88eabeab1\",\n      \"subnet\": \"BIGNET\",\n      \"label\": \"ENLYZEAM\",\n      \"machine_id\": \"7db2d2d30778850d1fbe740d68d1f31d6fec69a11c1c19d47e26742bbce11574\",\n…\n    },","startLine":3,"lineNumbers":[3,null,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,null,92,null,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,null,222]},"meta":{"source":{"type":"path","value":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json"}}},"isError":false,"timestamp":1784069574598}}
{"type":"message","id":"ffb05437","parentId":"353cb045","timestamp":"2026-07-14T22:52:54.605Z","message":{"role":"toolResult","toolCallId":"call_YeMhCcgWpBNu4LLDmXDiT3jr|fc_0cb567042bb57cd4016a56bdc592088196a27d0907143e9c94","toolName":"read","content":[{"type":"text","text":"    pub async fn bind_scoped(\n…\n    ) -> Result<NetEndpoint, NetError> {\n…\n        let builder = match scope {\n…\n            BindScope::Port(p) => builder\n…\n                .bind_addr(std::net::SocketAddr::from((\n…\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?\n                .bind_addr(std::net::SocketAddr::from((\n                    std::net::Ipv6Addr::UNSPECIFIED,\n                    p,\n                )))\n                .map_err(|e| NetError::Bind(e.to_string()))?,\n        };\n        // The N0 preset already wires the n0 relay default; only override it when the\n        // policy asks for self-host or disabled.\n        let builder = match relay {\n            RelayPolicy::N0Default => builder,\n            RelayPolicy::SelfHosted(map) => builder.relay_mode(RelayMode::Custom(map)),\n            RelayPolicy::Disabled => builder.relay_mode(RelayMode::Disabled),\n        };\n        // mDNS rides alongside the preset's n0 DNS discovery as an extra address\n        // lookup, giving LAN-local advertise + resolve-by-id.\n        let builder = match discovery {\n            LocalDiscovery::Mdns => {\n                builder.address_lookup(MdnsAddressLookup::builder().advertise(true))\n            }\n            LocalDiscovery::Off => builder,\n        };\n        let inner = builder\n            .bind()\n            .await\n            .map_err(|e| NetError::Bind(e.to_string()))?;\n        Ok(NetEndpoint { inner })\n    }\n\n    /// A cheap handle clone (iroh endpoints are internally reference-counted):\n    /// the SAME bound endpoint — same sockets, same id — usable from\n    /// concurrent tasks (the meet-probe race spawns one per window token).\n    pub fn clone_handle(&self) -> NetEndpoint {\n        NetEndpoint {\n            inner: self.inner.clone(),\n        }\n    }\n\n    /// This node's public key — its stable subnet name, derived from the live\n    /// endpoint id. Always a valid ed25519 point (iroh guarantees it).\n    // [impl->REQ-NET-1]\n    pub fn node_id(&self) -> PublicKey {\n        PublicKey::from_bytes(self.inner.id().as_bytes())\n            .expect(\"an iroh EndpointId is always a valid ed25519 public key\")\n    }\n\n    /// The node's stable name as lowercase hex (the `CONTEXT.md` SptNode string).\n    pub fn node_id_hex(&self) -> String {\n        self.node_id().to_hex()\n    }\n\n    /// This endpoint's dialable address (id + currently-known direct/relay paths).\n    /// Serialise it (serde) to hand a peer a connect ticket.\n    pub fn addr(&self) -> EndpointAddr {\n        self.inner.addr()\n    }\n\n    /// A human label for the IP families this endpoint actually bound, derived\n    /// from its live socket addresses — the truthful result of the per-family\n    /// bind gate (REQ-NET-FAMILY-GATE). Surfaced in the join discovery trace\n    /// (REQ-JOIN-DIAGNOSTICS) so a failed WAN join names which families it could\n    /// even attempt. `\"none\"` only if no socket is bound (shouldn't happen).\n    // [impl->REQ-JOIN-DIAGNOSTICS]\n    pub fn bound_families(&self) -> &'static str {\n        let mut v4 = false;\n        let mut v6 = false;\n        for s in self.inner.addr().ip_addrs() {\n            if s.is_ipv4() {\n                v4 = true;\n            } else {\n                v6 = true;\n            }\n        }\n        match (v4, v6) {\n            (true, true) => \"IPv4+IPv6\",\n            (true, false) => \"IPv4-only\",\n            (false, true) => \"IPv6-only\",\n            (false, false) => \"none\",\n        }\n    }\n\n    /// Wait until the endpoint has registered with its relays — needed before the\n    /// [`addr`](Self::addr) ticket is dialable from off-LAN. Not required for a\n    /// direct/loopback dial where the peer already has a direct address.\n    pub async fn online(&self) {\n        self.inner.online().await;\n    }\n\n    /// Accept the next inbound connection (already ALPN-filtered to [`SPT_NET_ALPN`]).\n    /// `None` once the endpoint is closed.\n    pub async fn accept(&self) -> Option<Incoming> {\n        self.inner.accept().await\n    }\n\n    /// Gracefully close the endpoint: every held connection sends its QUIC\n    /// CLOSE frame so peers observe the disconnect promptly (a bare drop may\n    /// tear the runtime down before the close ever flushes, leaving peers to\n    /// an idle timeout). The D4c presence seam relies on this for prompt\n    /// disconnected events.\n\n[Showing lines 389-488 of 761. Use :489 to continue]"}],"details":{"truncation":{"content":"                )))\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .bind_addr(std::net::SocketAddr::from((\r\n                    std::net::Ipv6Addr::UNSPECIFIED,\r\n                    p,\r\n                )))\r\n                .map_err(|e| NetError::Bind(e.to_string()))?,\r\n        };\r\n        // The N0 preset already wires the n0 relay default; only override it when the\r\n        // policy asks for self-host or disabled.\r\n        let builder = match relay {\r\n            RelayPolicy::N0Default => builder,\r\n            RelayPolicy::SelfHosted(map) => builder.relay_mode(RelayMode::Custom(map)),\r\n            RelayPolicy::Disabled => builder.relay_mode(RelayMode::Disabled),\r\n        };\r\n        // mDNS rides alongside the preset's n0 DNS discovery as an extra address\r\n        // lookup, giving LAN-local advertise + resolve-by-id.\r\n        let builder = match discovery {\r\n            LocalDiscovery::Mdns => {\r\n                builder.address_lookup(MdnsAddressLookup::builder().advertise(true))\r\n            }\r\n            LocalDiscovery::Off => builder,\r\n        };\r\n        let inner = builder\r\n            .bind()\r\n            .await\r\n            .map_err(|e| NetError::Bind(e.to_string()))?;\r\n        Ok(NetEndpoint { inner })\r\n    }\r\n\r\n    /// A cheap handle clone (iroh endpoints are internally reference-counted):\r\n    /// the SAME bound endpoint — same sockets, same id — usable from\r\n    /// concurrent tasks (the meet-probe race spawns one per window token).\r\n    pub fn clone_handle(&self) -> NetEndpoint {\r\n        NetEndpoint {\r\n            inner: self.inner.clone(),\r\n        }\r\n    }\r\n\r\n    /// This node's public key — its stable subnet name, derived from the live\r\n    /// endpoint id. Always a valid ed25519 point (iroh guarantees it).\r\n    // [impl->REQ-NET-1]\r\n    pub fn node_id(&self) -> PublicKey {\r\n        PublicKey::from_bytes(self.inner.id().as_bytes())\r\n            .expect(\"an iroh EndpointId is always a valid ed25519 public key\")\r\n    }\r\n\r\n    /// The node's stable name as lowercase hex (the `CONTEXT.md` SptNode string).\r\n    pub fn node_id_hex(&self) -> String {\r\n        self.node_id().to_hex()\r\n    }\r\n\r\n    /// This endpoint's dialable address (id + currently-known direct/relay paths).\r\n    /// Serialise it (serde) to hand a peer a connect ticket.\r\n    pub fn addr(&self) -> EndpointAddr {\r\n        self.inner.addr()\r\n    }\r\n\r\n    /// A human label for the IP families this endpoint actually bound, derived\r\n    /// from its live socket addresses — the truthful result of the per-family\r\n    /// bind gate (REQ-NET-FAMILY-GATE). Surfaced in the join discovery trace\r\n    /// (REQ-JOIN-DIAGNOSTICS) so a failed WAN join names which families it could\r\n    /// even attempt. `\"none\"` only if no socket is bound (shouldn't happen).\r\n    // [impl->REQ-JOIN-DIAGNOSTICS]\r\n    pub fn bound_families(&self) -> &'static str {\r\n        let mut v4 = false;\r\n        let mut v6 = false;\r\n        for s in self.inner.addr().ip_addrs() {\r\n            if s.is_ipv4() {\r\n                v4 = true;\r\n            } else {\r\n                v6 = true;\r\n            }\r\n        }\r\n        match (v4, v6) {\r\n            (true, true) => \"IPv4+IPv6\",\r\n            (true, false) => \"IPv4-only\",\r\n            (false, true) => \"IPv6-only\",\r\n            (false, false) => \"none\",\r\n        }\r\n    }\r\n\r\n    /// Wait until the endpoint has registered with its relays — needed before the\r\n    /// [`addr`](Self::addr) ticket is dialable from off-LAN. Not required for a\r\n    /// direct/loopback dial where the peer already has a direct address.\r\n    pub async fn online(&self) {\r\n        self.inner.online().await;\r\n    }\r\n\r\n    /// Accept the next inbound connection (already ALPN-filtered to [`SPT_NET_ALPN`]).\r\n    /// `None` once the endpoint is closed.\r\n    pub async fn accept(&self) -> Option<Incoming> {\r\n        self.inner.accept().await\r\n    }\r\n\r\n    /// Gracefully close the endpoint: every held connection sends its QUIC\r\n    /// CLOSE frame so peers observe the disconnect promptly (a bare drop may\r\n    /// tear the runtime down before the close ever flushes, leaving peers to\r\n    /// an idle timeout). The D4c presence seam relies on this for prompt\r\n    /// disconnected events.\r","truncated":true,"truncatedBy":"lines","totalLines":373,"totalBytes":4247,"outputLines":100,"outputBytes":4247,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"    pub async fn bind_scoped(\n…\n    ) -> Result<NetEndpoint, NetError> {\n…\n        let builder = match scope {\n…\n            BindScope::Port(p) => builder\n…\n                .bind_addr(std::net::SocketAddr::from((\n…\n                )))\r\n                .map_err(|e| NetError::Bind(e.to_string()))?\r\n                .bind_addr(std::net::SocketAddr::from((\r\n                    std::net::Ipv6Addr::UNSPECIFIED,\r\n                    p,\r\n                )))\r\n                .map_err(|e| NetError::Bind(e.to_string()))?,\r\n        };\r\n        // The N0 preset already wires the n0 relay default; only override it when the\r\n        // policy asks for self-host or disabled.\r\n        let builder = match relay {\r\n            RelayPolicy::N0Default => builder,\r\n            RelayPolicy::SelfHosted(map) => builder.relay_mode(RelayMode::Custom(map)),\r\n            RelayPolicy::Disabled => builder.relay_mode(RelayMode::Disabled),\r\n        };\r\n        // mDNS rides alongside the preset's n0 DNS discovery as an extra address\r\n        // lookup, giving LAN-local advertise + resolve-by-id.\r\n        let builder = match discovery {\r\n            LocalDiscovery::Mdns => {\r\n                builder.address_lookup(MdnsAddressLookup::builder().advertise(true))\r\n            }\r\n            LocalDiscovery::Off => builder,\r\n        };\r\n        let inner = builder\r\n            .bind()\r\n            .await\r\n            .map_err(|e| NetError::Bind(e.to_string()))?;\r\n        Ok(NetEndpoint { inner })\r\n    }\r\n\r\n    /// A cheap handle clone (iroh endpoints are internally reference-counted):\r\n    /// the SAME bound endpoint — same sockets, same id — usable from\r\n    /// concurrent tasks (the meet-probe race spawns one per window token).\r\n    pub fn clone_handle(&self) -> NetEndpoint {\r\n        NetEndpoint {\r\n            inner: self.inner.clone(),\r\n        }\r\n    }\r\n\r\n    /// This node's public key — its stable subnet name, derived from the live\r\n    /// endpoint id. Always a valid ed25519 point (iroh guarantees it).\r\n    // [impl->REQ-NET-1]\r\n    pub fn node_id(&self) -> PublicKey {\r\n        PublicKey::from_bytes(self.inner.id().as_bytes())\r\n            .expect(\"an iroh EndpointId is always a valid ed25519 public key\")\r\n    }\r\n\r\n    /// The node's stable name as lowercase hex (the `CONTEXT.md` SptNode string).\r\n    pub fn node_id_hex(&self) -> String {\r\n        self.node_id().to_hex()\r\n    }\r\n\r\n    /// This endpoint's dialable address (id + currently-known direct/relay paths).\r\n    /// Serialise it (serde) to hand a peer a connect ticket.\r\n    pub fn addr(&self) -> EndpointAddr {\r\n        self.inner.addr()\r\n    }\r\n\r\n    /// A human label for the IP families this endpoint actually bound, derived\r\n    /// from its live socket addresses — the truthful result of the per-family\r\n    /// bind gate (REQ-NET-FAMILY-GATE). Surfaced in the join discovery trace\r\n    /// (REQ-JOIN-DIAGNOSTICS) so a failed WAN join names which families it could\r\n    /// even attempt. `\"none\"` only if no socket is bound (shouldn't happen).\r\n    // [impl->REQ-JOIN-DIAGNOSTICS]\r\n    pub fn bound_families(&self) -> &'static str {\r\n        let mut v4 = false;\r\n        let mut v6 = false;\r\n        for s in self.inner.addr().ip_addrs() {\r\n            if s.is_ipv4() {\r\n                v4 = true;\r\n            } else {\r\n                v6 = true;\r\n            }\r\n        }\r\n        match (v4, v6) {\r\n            (true, true) => \"IPv4+IPv6\",\r\n            (true, false) => \"IPv4-only\",\r\n            (false, true) => \"IPv6-only\",\r\n            (false, false) => \"none\",\r\n        }\r\n    }\r\n\r\n    /// Wait until the endpoint has registered with its relays — needed before the\r\n    /// [`addr`](Self::addr) ticket is dialable from off-LAN. Not required for a\r\n    /// direct/loopback dial where the peer already has a direct address.\r\n    pub async fn online(&self) {\r\n        self.inner.online().await;\r\n    }\r\n\r\n    /// Accept the next inbound connection (already ALPN-filtered to [`SPT_NET_ALPN`]).\r\n    /// `None` once the endpoint is closed.\r\n    pub async fn accept(&self) -> Option<Incoming> {\r\n        self.inner.accept().await\r\n    }\r\n\r\n    /// Gracefully close the endpoint: every held connection sends its QUIC\r\n    /// CLOSE frame so peers observe the disconnect promptly (a bare drop may\r\n    /// tear the runtime down before the close ever flushes, leaving peers to\r\n    /// an idle timeout). The D4c presence seam relies on this for prompt\r\n    /// disconnected events.\r","startLine":313,"lineNumbers":[313,null,319,null,354,null,384,null,386,null,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":761,"totalBytes":4247,"outputLines":100,"outputBytes":4247,"shownRange":{"start":389,"end":488},"nextOffset":489}}},"isError":false,"timestamp":1784069574605}}
{"type":"message","id":"52a11eaf","parentId":"ffb05437","timestamp":"2026-07-14T22:52:54.614Z","message":{"role":"toolResult","toolCallId":"call_YxJLXAQSkBACX8MUXuU0ubXo|fc_0cb567042bb57cd4016a56bdc592188196850f8d0208d5c42a","toolName":"read","content":[{"type":"text","text":"        let net = if node_hex.is_some() {\n…\n        } else {\n…\n            None\n        };\n\n        // The broker hosts PTYs (B1/B2) + the net endpoint (D4a). Serve it on a\n        // background thread; a bind failure there must not stop the seed channel\n        // (the B6 surface) — the PTY-hosting consumers arrive in B7/B8.\n        let net_up = net.is_some();\n        // Keep the broker handle alive past the bind so the brain supervisor's\n        // planned-restart signal can be wired into it below (ADR-0018 D3-3): the\n        // `KIND_BRAIN_RESTART` verb the broker serves must reach the supervisor.\n        let broker_handle: Option<Arc<Broker>> =\n            match Broker::bind_in_with_net(&broker_socket_name(), default_journal_path(), net) {\n                Ok(broker) => {\n                    let serve_broker = Arc::clone(&broker);\n                    thread::spawn(move || {\n                        let _ = serve_broker.serve();\n                    });\n                // Inbound net dispatch + outbound peer pump (D9-1) now run in\n                // the BRAIN child (restoration D2-1): they are pure IPC clients,\n                // so they live with the restartable brain and respawn with it.\n                // The broker keeps only the NetHost bring-up and the boot-race\n                // self-heal that binds it; the brain polls `net-status` and\n                // starts the consumers once net reports enabled.\n                // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\n                    if !net_up && node_hex.is_some() {\n                        // Boot-race self-heal (REQ-DAEMON-9): net failed to bind\n                        // but identity is sound — almost always the autostart\n                        // racing the network up at boot. Retry net in the\n                        // background and attach it to the broker when it\n                        // succeeds, so the node becomes reachable WITHOUT a\n                        // manual restart; the brain notices `net-status` flip\n                        // enabled and starts the consumers then.\n                        // [impl->REQ-DAEMON-9]\n                        let broker = Arc::clone(&broker);\n                        thread::spawn(move || net_retry_attach(broker));\n                    }\n                    // Endpoint autostart replay (F-038 W5, REQ-ENDPOINT-AUTOSTART):\n                    // bring saved startup defaults back up against the broker we\n                    // just bound. Background thread — a saved endpoint that fails\n                    // to come up logs loud and never blocks daemon start, the\n                    // seed channel, or the other replays.\n                    // [impl->REQ-ENDPOINT-AUTOSTART]\n                    thread::spawn(|| {\n                        crate::autostart::replay_startup_endpoints(&broker_socket_name());\n                    });\n                    Some(broker)\n                }\n                Err(e) => {\n                    eprintln!(\"BROKER_BIND_FAIL: {e}\");\n                    None\n                }\n            };\n\n        // The digest hub (B8) holds the live per-endpoint PTY-digest projections;\n        // the digest-control channel serves `spt digest <id>` snapshot pulls +\n\n[Showing lines 179-233 of 1703. Use :234 to continue]"}],"details":{"truncation":{"content":"            None\r\n        };\r\n\r\n        // The broker hosts PTYs (B1/B2) + the net endpoint (D4a). Serve it on a\r\n        // background thread; a bind failure there must not stop the seed channel\r\n        // (the B6 surface) — the PTY-hosting consumers arrive in B7/B8.\r\n        let net_up = net.is_some();\r\n        // Keep the broker handle alive past the bind so the brain supervisor's\r\n        // planned-restart signal can be wired into it below (ADR-0018 D3-3): the\r\n        // `KIND_BRAIN_RESTART` verb the broker serves must reach the supervisor.\r\n        let broker_handle: Option<Arc<Broker>> =\r\n            match Broker::bind_in_with_net(&broker_socket_name(), default_journal_path(), net) {\r\n                Ok(broker) => {\r\n                    let serve_broker = Arc::clone(&broker);\r\n                    thread::spawn(move || {\r\n                        let _ = serve_broker.serve();\r\n                    });\r\n                // Inbound net dispatch + outbound peer pump (D9-1) now run in\r\n                // the BRAIN child (restoration D2-1): they are pure IPC clients,\r\n                // so they live with the restartable brain and respawn with it.\r\n                // The broker keeps only the NetHost bring-up and the boot-race\r\n                // self-heal that binds it; the brain polls `net-status` and\r\n                // starts the consumers once net reports enabled.\r\n                // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\r\n                    if !net_up && node_hex.is_some() {\r\n                        // Boot-race self-heal (REQ-DAEMON-9): net failed to bind\r\n                        // but identity is sound — almost always the autostart\r\n                        // racing the network up at boot. Retry net in the\r\n                        // background and attach it to the broker when it\r\n                        // succeeds, so the node becomes reachable WITHOUT a\r\n                        // manual restart; the brain notices `net-status` flip\r\n                        // enabled and starts the consumers then.\r\n                        // [impl->REQ-DAEMON-9]\r\n                        let broker = Arc::clone(&broker);\r\n                        thread::spawn(move || net_retry_attach(broker));\r\n                    }\r\n                    // Endpoint autostart replay (F-038 W5, REQ-ENDPOINT-AUTOSTART):\r\n                    // bring saved startup defaults back up against the broker we\r\n                    // just bound. Background thread — a saved endpoint that fails\r\n                    // to come up logs loud and never blocks daemon start, the\r\n                    // seed channel, or the other replays.\r\n                    // [impl->REQ-ENDPOINT-AUTOSTART]\r\n                    thread::spawn(|| {\r\n                        crate::autostart::replay_startup_endpoints(&broker_socket_name());\r\n                    });\r\n                    Some(broker)\r\n                }\r\n                Err(e) => {\r\n                    eprintln!(\"BROKER_BIND_FAIL: {e}\");\r\n                    None\r\n                }\r\n            };\r\n\r\n        // The digest hub (B8) holds the live per-endpoint PTY-digest projections;\r\n        // the digest-control channel serves `spt digest <id>` snapshot pulls +\r","truncated":true,"truncatedBy":"lines","totalLines":1525,"totalBytes":3233,"outputLines":55,"outputBytes":3233,"lastLinePartial":false,"firstLineExceedsLimit":false},"displayContent":{"text":"        let net = if node_hex.is_some() {\n…\n        } else {\n…\n            None\r\n        };\r\n\r\n        // The broker hosts PTYs (B1/B2) + the net endpoint (D4a). Serve it on a\r\n        // background thread; a bind failure there must not stop the seed channel\r\n        // (the B6 surface) — the PTY-hosting consumers arrive in B7/B8.\r\n        let net_up = net.is_some();\r\n        // Keep the broker handle alive past the bind so the brain supervisor's\r\n        // planned-restart signal can be wired into it below (ADR-0018 D3-3): the\r\n        // `KIND_BRAIN_RESTART` verb the broker serves must reach the supervisor.\r\n        let broker_handle: Option<Arc<Broker>> =\r\n            match Broker::bind_in_with_net(&broker_socket_name(), default_journal_path(), net) {\r\n                Ok(broker) => {\r\n                    let serve_broker = Arc::clone(&broker);\r\n                    thread::spawn(move || {\r\n                        let _ = serve_broker.serve();\r\n                    });\r\n                // Inbound net dispatch + outbound peer pump (D9-1) now run in\r\n                // the BRAIN child (restoration D2-1): they are pure IPC clients,\r\n                // so they live with the restartable brain and respawn with it.\r\n                // The broker keeps only the NetHost bring-up and the boot-race\r\n                // self-heal that binds it; the brain polls `net-status` and\r\n                // starts the consumers once net reports enabled.\r\n                // [impl->REQ-HAZARD-BROKER-PROCESS-ISOLATION]\r\n                    if !net_up && node_hex.is_some() {\r\n                        // Boot-race self-heal (REQ-DAEMON-9): net failed to bind\r\n                        // but identity is sound — almost always the autostart\r\n                        // racing the network up at boot. Retry net in the\r\n                        // background and attach it to the broker when it\r\n                        // succeeds, so the node becomes reachable WITHOUT a\r\n                        // manual restart; the brain notices `net-status` flip\r\n                        // enabled and starts the consumers then.\r\n                        // [impl->REQ-DAEMON-9]\r\n                        let broker = Arc::clone(&broker);\r\n                        thread::spawn(move || net_retry_attach(broker));\r\n                    }\r\n                    // Endpoint autostart replay (F-038 W5, REQ-ENDPOINT-AUTOSTART):\r\n                    // bring saved startup defaults back up against the broker we\r\n                    // just bound. Background thread — a saved endpoint that fails\r\n                    // to come up logs loud and never blocks daemon start, the\r\n                    // seed channel, or the other replays.\r\n                    // [impl->REQ-ENDPOINT-AUTOSTART]\r\n                    thread::spawn(|| {\r\n                        crate::autostart::replay_startup_endpoints(&broker_socket_name());\r\n                    });\r\n                    Some(broker)\r\n                }\r\n                Err(e) => {\r\n                    eprintln!(\"BROKER_BIND_FAIL: {e}\");\r\n                    None\r\n                }\r\n            };\r\n\r\n        // The digest hub (B8) holds the live per-endpoint PTY-digest projections;\r\n        // the digest-control channel serves `spt digest <id>` snapshot pulls +\r","startLine":175,"lineNumbers":[175,null,177,null,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233]},"meta":{"source":{"type":"path","value":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/daemon.rs"},"truncation":{"direction":"head","truncatedBy":"lines","totalLines":1703,"totalBytes":3233,"outputLines":55,"outputBytes":3233,"shownRange":{"start":179,"end":233},"nextOffset":234}}},"isError":false,"timestamp":1784069574614}}
{"type":"message","id":"c7db81be","parentId":"52a11eaf","timestamp":"2026-07-14T22:52:54.625Z","message":{"role":"toolResult","toolCallId":"call_ptYRQ9NikGvCaFKSC6R1vxaC|fc_0cb567042bb57cd4016a56bdc591f88196a2299e2137a1c935","toolName":"grep","content":[{"type":"text","text":"# spt-core/crates/\n\n## spt-daemon/src/\n### config.rs\n 52|/// Which relay stance the broker's net endpoint runs (ADR-0002 / REQ-NET-2) —\n*53|/// the `\"relay\"` knob in `daemon.json`. Maps onto `spt-net`'s `RelayPolicy` in\n 54|/// `Daemon::run`; kept as a local enum so the config layer stays transport-free.\n*55|/// The self-hosted variant (`RelayPolicy::SelfHosted`) needs a relay-map URL\n 56|/// list and gets its config plumbing when a self-host consumer exists.\n 57|// [impl->REQ-NET-2]\n 58|#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n 59|pub enum RelayChoice {\n*60|    /// n0's public relays — the zero-config default (`\"relay\": \"n0\"`).\n 61|    N0,\n 62|    /// No relays: direct/LAN only (`\"relay\": \"disabled\"`).\n 63|    Disabled,\n### daemon.rs\n 22|\n*23|use spt_net::net::endpoint::{BindScope, LocalDiscovery, RelayPolicy};\n 24|\n 25|use crate::broker::{default_journal_path, Broker};\n 26|use crate::config::{DaemonConfig, RelayChoice};\n...\n 382|    let cfg = DaemonConfig::load();\n*383|    let relay = match cfg.relay {\n*384|        RelayChoice::N0 => RelayPolicy::N0Default,\n*385|        RelayChoice::Disabled => RelayPolicy::Disabled,\n 386|    };\n 387|    let identity = spt_store::nodeid::load_or_create().ok()?;\n 388|    let net_cfg = NetConfig {\n### nethost.rs\n 37|use spt_net::net::endpoint::{\n*38|    BindScope, Connection, EndpointAddr, LocalDiscovery, NetEndpoint, RecvStream, RelayPolicy,\n 39|    SendStream, SPT_NET_ALPN,\n 40|};\n 41|use spt_net::net::mesh::seedproof::ProofRole;\n...\n 84|/// (the endpoint *is* the node's name — EndpointId == pubkey), the relay stance\n*85|/// (from `daemon.json` in production; [`RelayPolicy::Disabled`] in hermetic\n 86|/// tests), and whether mDNS LAN discovery rides along.\n 87|pub struct NetConfig {\n 88|    /// The node identity the endpoint binds as (seed → same ed25519 keypair).\n...\n 90|    /// Relay stance (ADR-0002): n0 default / self-host / disabled.\n*91|    pub relay: RelayPolicy,\n 92|    /// mDNS LAN discovery on/off (off in hermetic tests).\n 93|    pub discovery: LocalDiscovery,\n 94|    /// Socket bind scope: [`BindScope::All`] in production;\n...\n 828|                &cfg.identity,\n*829|                cfg.relay.clone(),\n 830|                cfg.discovery,\n 831|                vec![\n 832|                    SPT_NET_ALPN.to_vec(),\n...\n 908|            Arc::clone(&endpoint),\n*909|            cfg.relay,\n 910|            cfg.discovery,\n 911|            cfg.scope,\n 912|        );\n...\n 1565|            identity: Identity::from_seed(&identity.seed()),\n*1566|            relay: RelayPolicy::Disabled,\n 1567|            discovery: LocalDiscovery::Off,\n 1568|            scope: BindScope::Loopback,\n 1569|            membership: None,\n### pairhost.rs\n 30|\n*31|use spt_net::net::endpoint::{BindScope, Connection, LocalDiscovery, NetEndpoint, RelayPolicy};\n 32|use spt_net::net::pairing::meet::{bind_rendezvous, dial_via_rendezvous, meet_via_rendezvous};\n 33|use spt_net::net::pairing::ratelimit::{PairingRateLimiter, RateLimited, CEREMONY_TIMEOUT_SECS};\n 34|use spt_net::net::pairing::totp::{time_step, PERIOD_SECS};\n...\n 171|    endpoint: Arc<NetEndpoint>,\n*172|    relay: RelayPolicy,\n 173|    discovery: LocalDiscovery,\n 174|    scope: BindScope,\n 175|) {\n...\n 592|         \\x20 discovery: ±1 TOTP window = 3 derived rendezvous ids per attempt \\\n*593|         (resolved via relay + n0-DNS / mDNS)\\n\\\n 594|         \\x20 last error: {last_err}\",\n 595|        clock.render()\n 596|    )\n\n## spt-net/src/net/\n### endpoint.rs\n 8|//!\n*9|//! Relay policy ([`RelayPolicy`]) is the ADR-0002 v1 relay stance made concrete:\n 10|//! n0's public relays by default for zero-config onboarding, a self-host escape\n 11|//! hatch, and a disabled mode (LAN/air-gapped + hermetic tests). See\n 12|//! [`RELAY_DISCLOSURE`] for the plain-language disclosure that ships to users.\n...\n 22|use iroh::endpoint::{presets, IdleTimeout, Incoming, PortmapperConfig, QuicTransportConfig};\n*23|use iroh::{Endpoint, EndpointId, RelayMap, RelayMode, SecretKey};\n 24|use spt_proto::identity::{Identity, PublicKey};\n 25|\n 26|// Re-exported for the daemon (D4): the broker holds live QUIC connections +\n...\n 69|/// path; the dependency is operational + metadata-only (traffic is end-to-end\n*70|/// encrypted) and escapable via [`RelayPolicy::SelfHosted`].\n 71|// [impl->REQ-NET-2]\n 72|pub const RELAY_DISCLOSURE: &str = \"\\\n 73|By default spt connects through n0's free public relay servers to find your other \\\n...\n 79|/// Where this endpoint looks for relay assistance (ADR-0002). Maps onto iroh's\n*80|/// [`RelayMode`]; the default ([`RelayPolicy::N0Default`]) is the zero-config path.\n 81|// [impl->REQ-NET-2]\n 82|#[derive(Debug, Clone)]\n*83|pub enum RelayPolicy {\n 84|    /// n0's public production relays — the zero-config \"just works\" default.\n 85|    N0Default,\n*86|    /// Self-hosted relay(s) — the principled escape hatch from the n0 dependency.\n 87|    SelfHosted(RelayMap),\n 88|    /// No relays: direct/LAN connectivity only. Used by air-gapped LANs and the\n 89|    /// hermetic loopback tests (no network reached at all).\n...\n 255|// [impl->REQ-NET-FAMILY-GATE]\n*256|async fn decide_bind_families(relay: &RelayPolicy) -> Result<BindFamilies, NetError> {\n 257|    let disable_v4 = env_flag(\"SPT_DISABLE_IPV4\");\n 258|    let disable_v6 = env_flag(\"SPT_DISABLE_IPV6\");\n 259|    if disable_v4 || disable_v6 {\n...\n 262|    }\n*263|    if matches!(relay, RelayPolicy::Disabled) {\n 264|        return Ok(BindFamilies::Dual);\n 265|    }\n 266|    let (v4, v6) = tokio::join!(probe_family(PROBE_V4), probe_family(PROBE_V6));\n...\n 283|        identity: &Identity,\n*284|        relay: RelayPolicy,\n 285|        discovery: LocalDiscovery,\n 286|    ) -> Result<NetEndpoint, NetError> {\n 287|        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\n...\n 299|        identity: &Identity,\n*300|        relay: RelayPolicy,\n 301|        discovery: LocalDiscovery,\n 302|        alpns: Vec<Vec<u8>>,\n 303|    ) -> Result<NetEndpoint, NetError> {\n...\n 314|        identity: &Identity,\n*315|        relay: RelayPolicy,\n 316|        discovery: LocalDiscovery,\n 317|        alpns: Vec<Vec<u8>>,\n 318|        scope: BindScope,\n...\n 399|        let builder = match relay {\n*400|            RelayPolicy::N0Default => builder,\n*401|            RelayPolicy::SelfHosted(map) => builder.relay_mode(RelayMode::Custom(map)),\n*402|            RelayPolicy::Disabled => builder.relay_mode(RelayMode::Disabled),\n 403|        };\n 404|        // mDNS rides alongside the preset's n0 DNS discovery as an extra address\n 405|        // lookup, giving LAN-local advertise + resolve-by-id.\n...\n 571|            id,\n*572|            RelayPolicy::Disabled,\n 573|            LocalDiscovery::Off,\n 574|            vec![SPT_NET_ALPN.to_vec()],\n 575|            BindScope::Loopback,\n...\n 733|            &Identity::generate(),\n*734|            RelayPolicy::Disabled,\n 735|            LocalDiscovery::Mdns,\n 736|        )\n 737|        .await\n...\n 743|            &Identity::generate(),\n*744|            RelayPolicy::Disabled,\n 745|            LocalDiscovery::Mdns,\n 746|        )\n 747|        .await\n\n### pairing/\n#### meet.rs\n 10|//! its real endpoint ([`bind_rendezvous`]), and the joiner dials the derived\n*11|//! *public* id relay-first ([`dial_via_rendezvous`] — `RelayPolicy::N0Default`\n 12|//! carries traffic for unknown-NAT peers; that is the relay's whole job). The\n 13|//! ±1 TOTP-skew window means the joiner tries all three window tokens; window\n 14|//! rotation = the responder re-binds per step.\n...\n 50|use super::super::endpoint::{\n*51|    BindScope, Connection, LocalDiscovery, NetEndpoint, NetError, RelayPolicy,\n 52|};\n 53|use super::rendezvous::{rendezvous_token, rendezvous_window};\n 54|use super::wire::SPT_PAIR_ALPN;\n...\n 121|/// [`NetEndpoint::bind_scoped`]; production passes the node's configured\n*122|/// [`RelayPolicy`] so the derived id is relay-reachable (and n0-DNS\n 123|/// resolvable) by a joiner that knows nothing but the two user inputs.\n 124|// [impl->REQ-PAIR-5]\n 125|pub async fn bind_rendezvous(\n...\n 127|    totp_step: u64,\n*128|    relay: RelayPolicy,\n 129|    discovery: LocalDiscovery,\n 130|    scope: BindScope,\n 131|) -> Result<RendezvousListener, NetError> {\n...\n 245|/// losers are dropped; racing pre-trust meet ids is harmless, module docs).\n*246|/// Each derived id is dialed by **id alone** (relay + n0 DNS / mDNS resolve\n 247|/// it — no address ticket); the winner's reply is the responder's real\n 248|/// address, dialed over the ceremony ALPN. The returned connection is ready\n 249|/// for [`run_initiator`](super::wire::run_initiator) — the ceremony itself\n...\n 333|            id,\n*334|            RelayPolicy::Disabled,\n 335|            LocalDiscovery::Off,\n 336|            alpns,\n 337|            BindScope::Loopback,\n...\n 382|            step,\n*383|            RelayPolicy::Disabled,\n 384|            LocalDiscovery::Off,\n 385|            BindScope::Loopback,\n 386|        )\n#### wire.rs\n 908|    use super::*;\n*909|    use crate::net::endpoint::{BindScope, LocalDiscovery, NetEndpoint, RelayPolicy};\n 910|    use spt_proto::identity::Identity;\n 911|    use spt_store::roster::RosterStore;\n 912|    use spt_store::subnet::{SubnetRecord, SubnetStore};\n...\n 948|            &resp_id,\n*949|            RelayPolicy::Disabled,\n 950|            LocalDiscovery::Off,\n 951|            vec![SPT_PAIR_ALPN.to_vec()],\n 952|            BindScope::Loopback,\n...\n 957|            &init_id,\n*958|            RelayPolicy::Disabled,\n 959|            LocalDiscovery::Off,\n 960|            vec![SPT_PAIR_ALPN.to_vec()],\n 961|            BindScope::Loopback,"}],"details":{"scopePath":"spt-core/crates/spt-daemon/src, spt-core/crates/spt-net/src","searchPath":"C:\\Users\\decid\\Documents\\projects\\spt-core\\crates","cwd":"C:\\Users\\decid\\Documents\\projects","matchCount":43,"fileCount":7,"files":["spt-core/crates/spt-daemon/src/config.rs","spt-core/crates/spt-daemon/src/daemon.rs","spt-core/crates/spt-daemon/src/nethost.rs","spt-core/crates/spt-daemon/src/pairhost.rs","spt-core/crates/spt-net/src/net/endpoint.rs","spt-core/crates/spt-net/src/net/pairing/meet.rs","spt-core/crates/spt-net/src/net/pairing/wire.rs"],"fileMatches":[{"path":"spt-core/crates/spt-daemon/src/config.rs","count":3},{"path":"spt-core/crates/spt-daemon/src/daemon.rs","count":4},{"path":"spt-core/crates/spt-daemon/src/nethost.rs","count":6},{"path":"spt-core/crates/spt-daemon/src/pairhost.rs","count":3},{"path":"spt-core/crates/spt-net/src/net/endpoint.rs","count":17},{"path":"spt-core/crates/spt-net/src/net/pairing/meet.rs","count":7},{"path":"spt-core/crates/spt-net/src/net/pairing/wire.rs","count":3}],"truncated":false,"displayContent":"# spt-core/crates/\n\n## spt-daemon/src/\n### config.rs\n 52│/// Which relay stance the broker's net endpoint runs (ADR-0002 / REQ-NET-2) —\n*53│/// the `\"relay\"` knob in `daemon.json`. Maps onto `spt-net`'s `RelayPolicy` in\n 54│/// `Daemon::run`; kept as a local enum so the config layer stays transport-free.\n*55│/// The self-hosted variant (`RelayPolicy::SelfHosted`) needs a relay-map URL\n 56│/// list and gets its config plumbing when a self-host consumer exists.\n 57│// [impl->REQ-NET-2]\n 58│#[derive(Debug, Clone, Copy, PartialEq, Eq)]\n 59│pub enum RelayChoice {\n*60│    /// n0's public relays — the zero-config default (`\"relay\": \"n0\"`).\n 61│    N0,\n 62│    /// No relays: direct/LAN only (`\"relay\": \"disabled\"`).\n 63│    Disabled,\n### daemon.rs\n  22│\n *23│use spt_net::net::endpoint::{BindScope, LocalDiscovery, RelayPolicy};\n  24│\n  25│use crate::broker::{default_journal_path, Broker};\n  26│use crate::config::{DaemonConfig, RelayChoice};\n    │...\n 382│    let cfg = DaemonConfig::load();\n*383│    let relay = match cfg.relay {\n*384│        RelayChoice::N0 => RelayPolicy::N0Default,\n*385│        RelayChoice::Disabled => RelayPolicy::Disabled,\n 386│    };\n 387│    let identity = spt_store::nodeid::load_or_create().ok()?;\n 388│    let net_cfg = NetConfig {\n### nethost.rs\n   37│use spt_net::net::endpoint::{\n  *38│    BindScope, Connection, EndpointAddr, LocalDiscovery, NetEndpoint, RecvStream, RelayPolicy,\n   39│    SendStream, SPT_NET_ALPN,\n   40│};\n   41│use spt_net::net::mesh::seedproof::ProofRole;\n     │...\n   84│/// (the endpoint *is* the node's name — EndpointId == pubkey), the relay stance\n  *85│/// (from `daemon.json` in production; [`RelayPolicy::Disabled`] in hermetic\n   86│/// tests), and whether mDNS LAN discovery rides along.\n   87│pub struct NetConfig {\n   88│    /// The node identity the endpoint binds as (seed → same ed25519 keypair).\n     │...\n   90│    /// Relay stance (ADR-0002): n0 default / self-host / disabled.\n  *91│    pub relay: RelayPolicy,\n   92│    /// mDNS LAN discovery on/off (off in hermetic tests).\n   93│    pub discovery: LocalDiscovery,\n   94│    /// Socket bind scope: [`BindScope::All`] in production;\n     │...\n  828│                &cfg.identity,\n *829│                cfg.relay.clone(),\n  830│                cfg.discovery,\n  831│                vec![\n  832│                    SPT_NET_ALPN.to_vec(),\n     │...\n  908│            Arc::clone(&endpoint),\n *909│            cfg.relay,\n  910│            cfg.discovery,\n  911│            cfg.scope,\n  912│        );\n     │...\n 1565│            identity: Identity::from_seed(&identity.seed()),\n*1566│            relay: RelayPolicy::Disabled,\n 1567│            discovery: LocalDiscovery::Off,\n 1568│            scope: BindScope::Loopback,\n 1569│            membership: None,\n### pairhost.rs\n  30│\n *31│use spt_net::net::endpoint::{BindScope, Connection, LocalDiscovery, NetEndpoint, RelayPolicy};\n  32│use spt_net::net::pairing::meet::{bind_rendezvous, dial_via_rendezvous, meet_via_rendezvous};\n  33│use spt_net::net::pairing::ratelimit::{PairingRateLimiter, RateLimited, CEREMONY_TIMEOUT_SECS};\n  34│use spt_net::net::pairing::totp::{time_step, PERIOD_SECS};\n    │...\n 171│    endpoint: Arc<NetEndpoint>,\n*172│    relay: RelayPolicy,\n 173│    discovery: LocalDiscovery,\n 174│    scope: BindScope,\n 175│) {\n    │...\n 592│         \\x20 discovery: ±1 TOTP window = 3 derived rendezvous ids per attempt \\\n*593│         (resolved via relay + n0-DNS / mDNS)\\n\\\n 594│         \\x20 last error: {last_err}\",\n 595│        clock.render()\n 596│    )\n\n## spt-net/src/net/\n### endpoint.rs\n   8│//!\n  *9│//! Relay policy ([`RelayPolicy`]) is the ADR-0002 v1 relay stance made concrete:\n  10│//! n0's public relays by default for zero-config onboarding, a self-host escape\n  11│//! hatch, and a disabled mode (LAN/air-gapped + hermetic tests). See\n  12│//! [`RELAY_DISCLOSURE`] for the plain-language disclosure that ships to users.\n    │...\n  22│use iroh::endpoint::{presets, IdleTimeout, Incoming, PortmapperConfig, QuicTransportConfig};\n *23│use iroh::{Endpoint, EndpointId, RelayMap, RelayMode, SecretKey};\n  24│use spt_proto::identity::{Identity, PublicKey};\n  25│\n  26│// Re-exported for the daemon (D4): the broker holds live QUIC connections +\n    │...\n  69│/// path; the dependency is operational + metadata-only (traffic is end-to-end\n *70│/// encrypted) and escapable via [`RelayPolicy::SelfHosted`].\n  71│// [impl->REQ-NET-2]\n  72│pub const RELAY_DISCLOSURE: &str = \"\\\n  73│By default spt connects through n0's free public relay servers to find your other \\\n    │...\n  79│/// Where this endpoint looks for relay assistance (ADR-0002). Maps onto iroh's\n *80│/// [`RelayMode`]; the default ([`RelayPolicy::N0Default`]) is the zero-config path.\n  81│// [impl->REQ-NET-2]\n  82│#[derive(Debug, Clone)]\n *83│pub enum RelayPolicy {\n  84│    /// n0's public production relays — the zero-config \"just works\" default.\n  85│    N0Default,\n *86│    /// Self-hosted relay(s) — the principled escape hatch from the n0 dependency.\n  87│    SelfHosted(RelayMap),\n  88│    /// No relays: direct/LAN connectivity only. Used by air-gapped LANs and the\n  89│    /// hermetic loopback tests (no network reached at all).\n    │...\n 255│// [impl->REQ-NET-FAMILY-GATE]\n*256│async fn decide_bind_families(relay: &RelayPolicy) -> Result<BindFamilies, NetError> {\n 257│    let disable_v4 = env_flag(\"SPT_DISABLE_IPV4\");\n 258│    let disable_v6 = env_flag(\"SPT_DISABLE_IPV6\");\n 259│    if disable_v4 || disable_v6 {\n    │...\n 262│    }\n*263│    if matches!(relay, RelayPolicy::Disabled) {\n 264│        return Ok(BindFamilies::Dual);\n 265│    }\n 266│    let (v4, v6) = tokio::join!(probe_family(PROBE_V4), probe_family(PROBE_V6));\n    │...\n 283│        identity: &Identity,\n*284│        relay: RelayPolicy,\n 285│        discovery: LocalDiscovery,\n 286│    ) -> Result<NetEndpoint, NetError> {\n 287│        Self::bind_with_alpns(identity, relay, discovery, vec![SPT_NET_ALPN.to_vec()]).await\n    │...\n 299│        identity: &Identity,\n*300│        relay: RelayPolicy,\n 301│        discovery: LocalDiscovery,\n 302│        alpns: Vec<Vec<u8>>,\n 303│    ) -> Result<NetEndpoint, NetError> {\n    │...\n 314│        identity: &Identity,\n*315│        relay: RelayPolicy,\n 316│        discovery: LocalDiscovery,\n 317│        alpns: Vec<Vec<u8>>,\n 318│        scope: BindScope,\n    │...\n 399│        let builder = match relay {\n*400│            RelayPolicy::N0Default => builder,\n*401│            RelayPolicy::SelfHosted(map) => builder.relay_mode(RelayMode::Custom(map)),\n*402│            RelayPolicy::Disabled => builder.relay_mode(RelayMode::Disabled),\n 403│        };\n 404│        // mDNS rides alongside the preset's n0 DNS discovery as an extra address\n 405│        // lookup, giving LAN-local advertise + resolve-by-id.\n    │...\n 571│            id,\n*572│            RelayPolicy::Disabled,\n 573│            LocalDiscovery::Off,\n 574│            vec![SPT_NET_ALPN.to_vec()],\n 575│            BindScope::Loopback,\n    │...\n 733│            &Identity::generate(),\n*734│            RelayPolicy::Disabled,\n 735│            LocalDiscovery::Mdns,\n 736│        )\n 737│        .await\n    │...\n 743│            &Identity::generate(),\n*744│            RelayPolicy::Disabled,\n 745│            LocalDiscovery::Mdns,\n 746│        )\n 747│        .await\n\n### pairing/\n#### meet.rs\n  10│//! its real endpoint ([`bind_rendezvous`]), and the joiner dials the derived\n *11│//! *public* id relay-first ([`dial_via_rendezvous`] — `RelayPolicy::N0Default`\n  12│//! carries traffic for unknown-NAT peers; that is the relay's whole job). The\n  13│//! ±1 TOTP-skew window means the joiner tries all three window tokens; window\n  14│//! rotation = the responder re-binds per step.\n    │...\n  50│use super::super::endpoint::{\n *51│    BindScope, Connection, LocalDiscovery, NetEndpoint, NetError, RelayPolicy,\n  52│};\n  53│use super::rendezvous::{rendezvous_token, rendezvous_window};\n  54│use super::wire::SPT_PAIR_ALPN;\n    │...\n 121│/// [`NetEndpoint::bind_scoped`]; production passes the node's configured\n*122│/// [`RelayPolicy`] so the derived id is relay-reachable (and n0-DNS\n 123│/// resolvable) by a joiner that knows nothing but the two user inputs.\n 124│// [impl->REQ-PAIR-5]\n 125│pub async fn bind_rendezvous(\n    │...\n 127│    totp_step: u64,\n*128│    relay: RelayPolicy,\n 129│    discovery: LocalDiscovery,\n 130│    scope: BindScope,\n 131│) -> Result<RendezvousListener, NetError> {\n    │...\n 245│/// losers are dropped; racing pre-trust meet ids is harmless, module docs).\n*246│/// Each derived id is dialed by **id alone** (relay + n0 DNS / mDNS resolve\n 247│/// it — no address ticket); the winner's reply is the responder's real\n 248│/// address, dialed over the ceremony ALPN. The returned connection is ready\n 249│/// for [`run_initiator`](super::wire::run_initiator) — the ceremony itself\n    │...\n 333│            id,\n*334│            RelayPolicy::Disabled,\n 335│            LocalDiscovery::Off,\n 336│            alpns,\n 337│            BindScope::Loopback,\n    │...\n 382│            step,\n*383│            RelayPolicy::Disabled,\n 384│            LocalDiscovery::Off,\n 385│            BindScope::Loopback,\n 386│        )\n#### wire.rs\n 908│    use super::*;\n*909│    use crate::net::endpoint::{BindScope, LocalDiscovery, NetEndpoint, RelayPolicy};\n 910│    use spt_proto::identity::Identity;\n 911│    use spt_store::roster::RosterStore;\n 912│    use spt_store::subnet::{SubnetRecord, SubnetStore};\n    │...\n 948│            &resp_id,\n*949│            RelayPolicy::Disabled,\n 950│            LocalDiscovery::Off,\n 951│            vec![SPT_PAIR_ALPN.to_vec()],\n 952│            BindScope::Loopback,\n    │...\n 957│            &init_id,\n*958│            RelayPolicy::Disabled,\n 959│            LocalDiscovery::Off,\n 960│            vec![SPT_PAIR_ALPN.to_vec()],\n 961│            BindScope::Loopback,"},"isError":false,"timestamp":1784069574625}}
{"type":"message","id":"626470d5","parentId":"c7db81be","timestamp":"2026-07-14T22:54:19.942Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Summarizing network stability and blackhole cause**\n\n**Analyzing connection timeout and failure timing**\n\n**Noting duplicated targets in cadence**"},{"type":"thinking","thinking":"**Planning DialPlan connect instrumentation**\n\n**Testing UDP port handling and dial stages**"},{"type":"toolCall","id":"call_03Z2EZsJHyJL1Uhek61aPpsO|fc_0cb567042bb57cd4016a56bddda5188196a2e568dbbb1969a0","name":"yield","arguments":{"type":"result","result":{"data":{"summary":"HFENDULEAM RCA — pinned steady-state mechanism vs unproven trigger\n\nPINNED STEADY STATE\n1. The live broker/brain is locally alive but cannot complete an outbound peer dial. `logs/daemon.stderr.log:1-11` shows generation 1 starting normally (`BRAIN_UP`, `BRAIN_NET_CONSUMERS_UP`) and then immediate 10-second whole-operation timeouts for AEA `aea099…`, ENLYZEAM current key `ecb39e…`, ENLYZEAM old key `39c018…`, and KITSUBITO `cfd9fc…`. The same failures remain present near the live tail: `logs/daemon.stderr.log:643399-643520`; at wall_ms 1784069260078–1784069441492 (2026-07-14 22:47:40.078Z–22:50:41.492Z), ENLYZEAM repeatedly times out and cfd9fc/c8939d also time out. EN retries recur roughly every 15–30 seconds because it is a target in both attached subnets and the pump cadence is 15 seconds.\n2. The error is generated around the *entire* `DialPlan::connect`, not a narrow auth check: `crates/spt-daemon/src/nethost.rs:1125-1151` acquires a dial permit then wraps `plan.connect(addr)` in `tokio::time::timeout`; expiration becomes exactly `submit-dial exceeded the 10s bound (peer unresponsive)`. Therefore the current log proves no connect+proof+register completion, but cannot distinguish address resolution/relay, QUIC handshake, ALPN, or seed-proof without stage instrumentation.\n3. Failure is made durable at the registry/control-plane projection. `identity/registry/heard.meta:1-7` records the last admitted ENLYZEAM feed at 1784008794517 = 2026-07-14 05:59:54.517Z and GRAVITY-RUNNER at 1784008286121 = 05:51:26.121Z. `daemon.json:7-10` sets registry eviction after 300000 ms. `crates/spt-daemon/src/registryhost.rs:607-649` defines silence as no admitted inbound feed for >TTL and then evicts every registry row authored by that peer, logging `REGISTRY_EVICT`. Thus, absent another admitted feed, EN’s foreign endpoint rows become eligible just after 06:04:54.517Z and gravity’s just after 05:56:26.121Z. This directly explains `endpoint list` collapsing to HF-only and subnet views losing remote endpoint rows while durable membership can remain.\n4. `daemon status` green is explicitly only local control-plane/process liveness, not peer reachability. `crates/spt/src/cli.rs:3960-4043` renders `net_up=true` as the net endpoint being bound and declares the pump live solely from a fresh heartbeat. `crates/spt/src/cli.rs:4110-4198` obtains `net_up` from broker `net_status`, reads the heartbeat file, and constructs subnet counts from `SubnetStore` + registry + durable roster; it performs no successful remote handshake requirement. Consequently a bound socket, live scheduler, fresh heartbeat, and persisted member counts can all remain healthy while every transport route fails.\n5. Local meet activity is not evidence of cross-node reachability. At `logs/daemon.stderr.log:643412-643415`, `643427-643433`, `643449-643454`, `643468-643473`, `643486-643490`, and `643514-643519`, fresh SPT_DEV/BIGNET rendezvous endpoints continue binding on HF’s local 100.68.35.65/192.168.1.81 addresses with rotating ports. `crates/spt-net/src/net/endpoint.rs:314-404` shows that a successful bind is local endpoint construction; external reachability still depends on relay/DNS/direct paths and remote QUIC completion.\n\nAFFECTED KEYS/SUBNETS\n- HFENDULEAM/self: `14efb80c…c85f2d`, SPT_DEV + BIGNET (`identity/roster.json:2-25`, `:82-116`).\n- ENLYZEAM/current: `ecb39e40…e55657`, SPT_DEV + BIGNET (`identity/roster.json:28-66`, `:151-190`); last admitted feed 2026-07-14 05:59:54.517Z (`identity/registry/heard.meta:5`).\n- ENLYZEAM/retired: `39c018a4…eabeab1`, still represented in roster but tombstoned in both subnets (`identity/roster.json:191-276`); its dial timeout is therefore not evidence that current EN identity is wrong, only that old durable state was also targeted at generation start.\n- Additional independently failing peers: `aea099…`, `cfd9fc…`, `c8939d…`, proving the outage is not confined to the EN key or one subnet.\n\nSTRONGEST ROOT CANDIDATE, WITH CONFIDENCE BOUNDARY\nThe strongest supported *trigger class* is a common transport reachability regression/blackhole at or below the v0.31 broker endpoint (listener/firewall, n0 relay/DNS path, or QUIC connect path), not registry, subnet, or endpoint rendering. Evidence: every unrelated peer route expires at the same whole-dial 10-second boundary; both HF/EN reportedly run broker 0.31.0; local endpoint binds and schedulers continue; no typed auth/key/subnet denial appears. This is a candidate, not a proved initial trigger: the existing timeout collapses all connect stages, and the provided HF logs do not expose relay registration, packet arrival, QUIC establishment, ALPN selection, or seed-proof stage.\n\nA concrete secondary defect exists but cannot explain fleet-wide isolation: `identity/peer-addrs.json:29-38` stores map key `5ff50e75…` (SCELTOUIN per `identity/roster.json:119-150`) whose value has ENLYZEAM id `ecb39e40…`; there is no correctly keyed `ecb39e40…` entry. `crates/spt-daemon/src/pump/mod.rs:942-958` looks up the map by requested peer key first, then falls back to id-only n0 discovery. `crates/spt-daemon/src/pump/mod.rs:852-881` records `remote_id_hex -> remote_addr` on CONNECTED and drops that key after DIAL_FAILED; `crates/spt-daemon/src/seedproofx.rs:870-936` gap-fill keys entries by their own roster pubkey. A normal roster gap-fill cannot create this key/value mismatch. Prediction: an invariant checker over `peer-addrs.json` will flag exactly this record; however removing it would not restore the other failing peers and is not recommended as a live-state experiment.\n\nALTERNATIVES FALSIFIED / DOWNRANKED\n- Pump deadlock/starvation: falsified as the steady-state cause. Fresh heartbeat/status plus ongoing 15–30s failure scheduling and rotating meet binds show active loops.\n- Missing local bind: falsified at the coarse level by `net_up=true`, `BRAIN_NET_CONSUMERS_UP`, and repeated successful rendezvous binds; this does *not* falsify firewall filtering or wrong listener/path externally.\n- Single bad EN key, stale address, or subnet mismatch: falsified as global cause by simultaneous timeouts for aea099, cfd9fc, c8939d, current EN, and old EN across both subnets. The peer-address mismatch is real but only exacerbates EN resolution.\n- Seed/auth rejection as primary: downranked. No `AUTH`, `SEED`, `PROOF`, `MEMBERSHIP`, `UNTRUSTED`, or denial is emitted in the relevant failures; the generic wrapper timeout means a proof-stage hang remains possible but an explicit rejection is unsupported.\n- IPv6-only failure: falsified as sufficient cause. The log repeatedly says `NET_FAMILY_GATE: binding IPv4-only`, while advertised IPv4/Tailscale/LAN and n0 relay paths exist.\n- Clock/TOTP skew: downranked/falsified for steady state by the supplied read-only `w32tm` evidence (HF +0.003s, EN -0.135s) and successful 30-second rendezvous rotation. Normal member traffic is stable-key QUIC rather than TOTP rendezvous anyway.\n- Registry eviction as initial cause: falsified directionally. Code evicts only *after* admitted feeds stop; it explains disappearance from views, not why transport first stopped.\n- `database is locked` dispatcher errors: not a complete explanation. They affect local notification joins (`logs/daemon.stderr.log:12-36`) while unrelated broker peer dials independently hit the network-wide 10-second bound.\n\nNON-MUTATING DISCRIMINATORS / REMEDIATION-TEST SHAPE\n- Add diagnostic stage timestamps (future code/test, not live state): `address selected -> endpoint.connect start -> QUIC connected -> ALPN accepted -> seed-proof sent/received -> roster/register complete`, retaining peer id and route class (direct/relay). The first missing edge will separate relay/listener/firewall from protocol proof.\n- Add a reachability field distinct from health: last successful peer connect/feed per subnet, connected peer count, last dial failure + stage. Keep `net_up` and pump heartbeat explicitly labeled local liveness.\n- Add an invariant at peer-address load/record: map key must equal serialized `EndpointAddr.id`; reject/quarantine mismatches and log both keys.\n- Reproduce hermetically with two v0.31 Windows nodes across separate NATs and an external packet/relay observer. Matrix: id-only n0 resolution, explicit current EndpointAddr, direct Tailscale/LAN address, and relay-only path. Rotate one node’s UDP port and prove rediscovery. Cross-version 0.30.x↔0.31.0 and 0.31.0↔0.31.0 distinguishes wire incompatibility from environment.\n- Falsifiable predictions: (a) listener/firewall blackhole => outbound attempts and/or relay registration exist, but no inbound QUIC completion; packet capture/firewall log shows dropped UDP or no return traffic; (b) n0 DNS/relay failure => id-only fails while an explicit current direct EndpointAddr succeeds; (c) seed-proof regression => QUIC+ALPN succeeds and timeout occurs only after proof start; (d) protocol-version regression => failure tracks version pairing in the matrix; (e) stale-seed-only => explicit current address succeeds and other correctly seeded peers do not all fail (contradicted by present multi-peer evidence). No daemon lifecycle or state-changing operation is needed to collect these observations.","files":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","description":"Generation startup and live-tail evidence: locally healthy broker/brain and meet binds coexist with repeated whole-dial 10-second timeouts for multiple unrelated peer keys."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","description":"Last admitted inbound-feed watermarks; ENLYZEAM current key stops at 2026-07-14 05:59:54.517Z and GRAVITY-RUNNER at 05:51:26.121Z."},{"path":"C:/Users/decid/AppData/Local/spt-core/daemon.json","description":"Live configuration: n0 relay enabled, peer pump enabled, 30s registry pump, 300s silent-peer eviction, 15s notification pump, 60s sync pull."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","description":"Durable cross-subnet membership and addresses for HFENDULEAM, ENLYZEAM current/old keys, KITSUBITO, SCELTOUIN, and GRAVITY-RUNNER; old EN key tombstoned in both subnets."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","description":"Dial seed cache; contains a concrete key/id integrity violation: SCELTOUIN map key 5ff50e75… holds ENLYZEAM EndpointAddr id ecb39e40…, while the current EN key has no own entry."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs","description":"`submit_dial` wraps the entire connect/prove/register plan in one 10-second timeout, explaining why current logs cannot localize the failed transport stage."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","description":"Fan-out, seed-first resolution, id-only fallback, failure logging/backoff, successful-address writeback, and stale-seed deletion paths."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs","description":"Silent-peer eviction implementation: foreign rows are removed after no admitted feed exceeds configured TTL."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","description":"Daemon status semantics: process/broker bind and pump-heartbeat liveness, plus roster/registry-derived counts, with no remote-connectivity criterion."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","description":"Production endpoint binds with N0 preset, IPv4 family gate, n0 relay/DNS and optional mDNS; successful bind is not proof of external route reachability."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs","description":"Roster gap-fill keys peer-address seeds by roster pubkey, showing the observed 5ff→ecb cache mismatch is not a valid normal gap-fill output."}],"architecture":"Observed failure chain:\n\n`broker endpoint locally bound (net_up)` + `brain peer-pump heartbeat fresh`\n  -> fan-out selects every durable roster peer in SPT_DEV/BIGNET\n  -> seed cache or id-only n0 lookup supplies EndpointAddr\n  -> broker `submit_dial` enters one 10s `DialPlan::connect` envelope\n  -> no connect+proof+register completion; generic `PUMP_PEER_FAIL`\n  -> no admitted remote registry feeds\n  -> `heard.meta` watermark freezes\n  -> after daemon-configured 300s, `RegistryHost::evict_silent_peers` removes foreign endpoint rows\n  -> endpoint/subnet projections become local-only or empty\n\nMeanwhile `daemon status` remains green because it independently observes only daemon PID, broker `net_status.enabled`, pump heartbeat freshness, and durable roster/registry counts. This is a textbook separation between local control-plane liveness/fresh cached membership and data-plane transport reachability. The steady-state feedback loop is proved; the initial event that made all dials stop is not stage-localized by existing telemetry."}}}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":11032,"output":4147,"cacheRead":83456,"cacheWrite":0,"totalTokens":98635,"reasoningTokens":863,"cost":{"input":0.05516000000000001,"output":0.12441,"cacheRead":0.041728,"cacheWrite":0,"total":0.221298}},"stopReason":"toolUse","timestamp":1784069574667,"responseId":"resp_0cb567042bb57cd4016a56bdc7626c8196a75b0f21407f13d3","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_0cb567042bb57cd4016a56bdca7f788196ad8a9227d9c5b097","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr3Wuupj6W5_hJM-_qhfCcl0Zxc_HUrmRZxFvi4CcZQuSwPLJSI7vVSvjwb5GyT7hCi_Hv03BogbYKgw_DSJ_So-kFhm9Fjz1pXiVzjft6MdMWrDbOr7xLX-3AoXeUjMk9E9UxdNmM0Saxq26NvPTU2fNHdLLjJQrhX8aFVtLSIQe6XXp6cyFVSdH1fdPuAhd9ooiPV8SJz9cWEaDXqTUCATsNXx8cQyuDWxGxz7glcL-NtV98_SjVVpqlkXFVRyfQmzcyZ3eYTM23QWuxGQv-ajYrq0xbmnZGlCKNh402LJgWOfA5dwWxZfya_ho9bVVh-IbaQdZkhHDA-C40negn1B-5UO-TfNXW_rtJaO9wEaqCK_fyp7hyvM_zWXtGjbE7yffwutbSBXIzziwtb8IgqewyuG8wSqzyoBlIxFiavwDLCXhn2LZYIl7oV32cScVtY0UoowJ6-pfORr7yniU-YROVwNNjHAkzl53O7Uqraz6cWUF4jZ0vqsniy2R94qmAMilSEVKw7K_0BsLr8XSZzgbRde_iFM0cxYZWMuPDrQDQLXVGFryIm-xMZbn0nvWY5N8MUJUayBzeXmAQNoaQxp9lSm8V7AOKKRbWJ1wJ3GHMrbbtMGZUETgY-rGIQgLBnHCWcu6Kp9nZYMhEoMsN95ZLZT56eVZJcu-P8LEsLSZQ7YMoFNVj9j8JgQOLE2Svb6DGHSQXjprZjcszKRF_k7BL4zGlWRE0QWzAOelyVd0tQXAXuPGr_QZbE2coDcMiDtUKRikrm3Bn3QUEFMIFgWm6f3cYOpSR84xjAhg380Wndoixbu0EXV0Twfx5BSooI1lyutXx6F5-bQ_aVssbJVoYWPETPHAL_lDuGfWzjiiGYxi0OXnz75RYrIjK7n17vuB_45ZosbSkNAPpF7tjjVkzlHW4eUkte7CYjVJLx3yx0z3FomxQVfVLVEARrAhpT5YKI7paDP-UPk8li6kAvNULybT9nPtaf9eqMaF5Q02aXs3Rizac77QZGVDX8_Xo6lEq94U0wFvS0Q-biNHSLNCjQxToKv3GeixegJBdpqpM6p4bwS3sWRMIs1ut3GtcDdZc2HDbucBnlSmTqlYcXPgUrMYmI6IbdSutw6ZGTRoslLjX5X19FyhdVotBtZsGR3YhEmLlHPDPPvtXCQlUycsMjV0VT1aDMNJZDMe3QfMuMsFDGxzIUeCsuGC9W1KDSGx0w5zygBnNUaZxQYfTh4YaXvnI_Si2vD3WfMgDmyLYe14ZxLSkh7fpdzjfCLBNeq-2NfH9zur49HTEUAGzMVGSsk4PYmwxzvYPnhMTJ1phfva7kXYe4CHP7vW-feMEfJU47CICDBSSfSCFO-M-22v2m1nK9IRFpCp0-zjuDXUWNHQ7A-FWEt6dnfUVyTYnHx2HPcUl50QTtsOKkYH2P9wmKnr2ArvaYakPyLYmxUZBN54kUTd3Sjj3VZ9VPh9T9ugKgfAU5mErFd8v1KRMZVgsMGxbVuKZYYxw7Xn1kpfD88VAHHNRl0JTpZ9pE0m_uL4-CeganmilcZCwmwi1R5hDvvNai7UPt9KR6ncclOlHsXBGCf_Z5QBZFO0xHFnzVNnjIxozFlfEPXOh6pDBSUXwTAnK2xzRom4ymQF2zgsy-UcdQyX-M068XIQ2qOlwhQRf2eNfV9uFQFqFCa_hrrcXoGdPK9bqFQcC34hJ00tPPIMTcmlNN3-_-sQ5cb-vQnkMHM34Vd1gahwGFY1pIoyvUnEonQOotKtZ9mxNngUj5q1uNihnQ38s23FRr83MTAl1Vj-r8Jqr2ngv8_YfpgxF-YaxG9knH7wlUFkaxeZh7C2Tj2SuHCKSSGGp9X5lJJkZU4e13EmRbEvdCxz2S3V9xPnRua_xkCt-cdIkmFxsHz2axvciGvHoOOiSBaDW3QwX3jiiNye1FDG6ra0VF8CAGBzz3FMK9peeLJEIX4yY9FEe7IssTwJs_he4EdWarETBgllIwignbhwAlbV8cIECvGgVLYYbDNNPqnjpIT-s0EBO3UXL9Rau2tCYbT0Icb2szuMsq9WmB-LUM6K3_6scEt8v7DOpi8KAqe_Df0enzYppz4G-AwXnqRaRBtA53kTz2rsc3bqx_EV5H5BTqsf-V8tplk_x7LTQxeo1-oLBADuKRl_Hw0EGcIZWeP0znCm-BnBkrf5AVnSn1xKhH_Azy47BwvKFKJpx1uWTmXgOuRh-_vR0oGmg7fvJ0CM-2erIvQF7wUGKe0ZQy3nzIZXe6TVpBV6X6Y59ug0ZlP0AMCgqo7hUweyomeRdQA-BgLHZLzuZDBJGCYyeWVhApITfXx8ZDmmgb_S7q5TkDoTy4Iqiw-rdOjwrA1Tt2Y2iB0dECX8fT8Exp4SEq2oM8S_0rNyO7_zCIhjkJ4295PpDg-9jtnL852Kulx25Lb9GS6vjOAlBkbszfWBiyTO9DoetNuthfgbtmE3ceI9AN3vmv9ZPx3YHydJux2QOygfbecIiO28NEBXuNVb-21VTAKDnSZG-lPuChR01KuI1GIeLI_nLLYug3ns-eTc2R1w7-vq3sfgMjMP2GU91yTb3zRCQAiuihS_XWyk5vR7gzqURQHWuk9qrxC93Bjef8ZpIgdMD1jz7Ydv6SnUOddvqZChvT6_EyjBbmv4zM-dEjWGnuvhZbWEm6YKZqDyTAVMnrRkaJqoQdo3jW0dBpbey_FujReITyD3pEZ-oHOtBkWZ7w1Fwc6qS3x-MPtMIxuOWrkYsPZ9XKIQBbxT0iX73MBffAHZLPu_ZFr7wRYVHY6W7t8RtQNl-yrif9o7RF4Gd4cneSZe5L932Xp4XRaQjj1ayKtPW1vfjlvck5GgEuDTnM2QGc3NaHpf1hESoFlAumcoi39-RPFR52J4jqKn4IwkzX15nJQyzcne16hkOP4TndAyVhDqme9vv8de38cv5hgUonQdArM7yS0VsMyuUNNO_kwttoksiLZ1-MojJ0R12vtK9PaOcIRDlGC9xbxJK1WyoZG7TFOC8xjgXO85Ru4vDeOxUTciGIwppcDs0rSPO3MLPcxcjEZQOBHCLUh0m4YInNU-AaJsw2yt012vc60uSVQJ-L5ddQ_CE2VzNY48PFLXPlK8LxRV65mEgK2t5mmVj0elPgBvAuaVww8qnJYBU0qcnw2YGO3FASJmLTe-AWvzRS1vHZnHAaDuUnVWf5f2amunvmmG94pkf51V1Wwb5EaYuo8pR7wwZBczIUWZYwTIKX8IdSYp0vhUrGctFG_Jgl83TkL3uaQ1fTLM9dd_Woh7R6HqTbW3929h7M2Zggv4Rgg9VuX9QxUI_HTKRMBU144Wwq2mr6XEk47vZPxtBOt58hV1Ua5HIPZluuVklptxfPfCybAiwkgN1k6wza-V9rePg4YwuJtwF6oiuz1-tXeNsXig5gdmkJLgYn6q_VVXajcsQTdAHLrbcSAkm_Qs06fKrL_SANkKAGClZTAVlV4wJR1xu-IEJKC1kLGbon2TJ6mfUlmGBfISkD6cmJQ8m5UD2eh71Z2lSH89gtTp-tLw5Fj0sQZW5SVDYs1mMIigV-n5VnosXUqA40W8IbgCQX2o2glRTBz_3aRAcA1Ezz91wx8KgHOKK_enX8FuP9Wphb8etujTQLRP254Gy6dJ75wBOcqIyWjex4tKxVXxfPGLzIbqdMNdWwF9jQpHGCVuFpML5Gpv49-vdU9IHrynKcyWIfXDass_yO2KUayWg==","summary":[{"type":"summary_text","text":"**Summarizing network stability and blackhole cause**"},{"type":"summary_text","text":"**Analyzing connection timeout and failure timing**"},{"type":"summary_text","text":"**Noting duplicated targets in cadence**"}]},{"id":"rs_0cb567042bb57cd4016a56bdd69a248196b201235e92ef87b2","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr3dv2u6Wf7UOYHl1oeeT7B7Wdc1X3_fYQXC3FDsY1Nsvh3GmQuW-r-8gMENDijq2u1hN60kJ1fYHhfVQKyYkyWHMfDd6tZit2IexgXoXlHCAOkLw7cUMCUn3G2e4mxmJQZugkzoml-HbZbO7Iwt3QG-ELu9AN6s3tqgvh3ey1syHcopz4XIeejooAP8J3sBkJwWvuYWiPv6Sqarys-2LvV0DnJMMK90hc85Sw6ie2RSnel29HE81DZuUirDGZIGEvojHGbmy1WnNLBrguZ9wyWhU_7I86N6jZyU4rdk0e1e091SMk3rF5gaTmNFyVAFZOgkuwZOTBLQ_xedFIRDQvhyX-QUk8Tyduikl6FRkAB8yW2bNvfkhizdOluN9yJH84KXHRbkyRGnGuItTX_SnMUQHqzEEyaV3AFtUrCed281q6JknRKPqRcRUXQYoUHibAOYBT-dbKJzVsyadk7-K-ZCGy-NU5tNfGmr92urgUwWZrm-r1ip-Yj-EpL_mXzNSY8GoYvJU8QVMpMTiAwCMAbEmHkQEk0MZ9Si9AZuMTi74_Q2I7Vza9fKZMKB4V16uta4w-C9JLnaEgEpVDu8g9nxP7J9RvjbWCEmNN68Fy8oodHGxCHjuVPkTn6CXMeZVGp8HOzajxUns3NJPGbzuAOGyf8rIllpY95D-B-TquiDnqu93RWhz-4iYLN_c1Uma5WPNB6YOml4BxD5wTDQUBFjizlmzsv3jKAjeZCetd6DBgEv1eV4QNDSSU1WdmDAfTWHPIht_SSgFBRYnCY1co_mu4lyG5jSSBL6pDRVFjR_o-6EXT9SSTMFetSotiyD0VlpY0DoFd_92Cqc7WLmpqflFY7GcrWQyP3GHBVBAOmrpv4GZYP5Vfh8gFTClUOQY9vkA0eOIEvtwZTjAclurXgcVLlLisH98ieKDu4xZXLMfgSWU_T6_wdB7FPmTyAUZxA5xAcn4aI88s-_FfF4WpSq1cWGguvxzSKgxVowi0IE6BWEgVZV8-P5RkIOuGt2CD553Ryq2gyKiBl29h87IU61AxcaGW3usqDafz-muvLVqWIOo2y2Z12wcC0XyAGaFUxFFzG0g3hvcGJhtWj8vSz6skYK-xKHAtd--ywqF9a6VaSkr7-9GS5rGsggWtLpGYpKlYQbg4xr1AfcC1_1cPQ317abR1HnAImOr-2g2JKnG9TfGhjP73nxL6lGNQZqd2WC0eM7Cl5GCZu66_11WVxaEcUXFR725KaP93aqCZzWcK6gg9eQCT7GFZXyKbOSbAiLF1eVGA35wG_XhqB5KmO9L9NnhuSnzsI9Pny43PBwbq4jB4LJY_jfohwWPZU1c2cE_UdiXSUcUn2M0fSnL-NVHX4y3K21aDsCUGcGl-GeJAQ72OJRxEwHNIqBdNlSjIlExZqAOmHqenGKGMuvzeKyZd5XVGYZazjkzhSZZdclsMlcap-3tyz79T5og9x-KDSKQmenwO6AKFccEbfVuPS-6-ztLj1nGEBYnnyEEJCiXNi5QjminJ4N-ZVcknn7UdDiUaqGHsUJYX_NUYZv_0RO-6JExhBDdjwzxP9JtU-5kwZJfeteU2LSAMOjHyucV3Cb2ROalobudF1wjqQHOpkEsMJs95zzA1PEIGZQPBN-_k5XTQDoWNu1l9EPjvRGBKihiE5GVfFJH1Z2El6qMslek59zklmLuBZC-yVv-9rlvXtnoD7HbeAX2EJWgOgRDjqLLzOgfMJCWs4eGq5pfCiS_4kdIQzuFDJSFFj_BuC9T-hlSIv3WbciCcxvP64TviTlw87mbfweX27Wf3xjSkAx3XlC7DiNJgleY1xl1MiGtN7QNCIqoaStLzp6VA-whJgNk4cl3UPvc8DXMt8Nni3JpMbagkjZUc2BT8vpVHyuU8oTcXW8aVcmchlP5NzoOKk9_eQzwlv1gWmAhIwc9b5wnEF84a_gp7SALo5E9hdyy8s89SA3Fo8_o-kLuWc2VZy_nWV3RviSuVGokV6weDXlE4RuWOhGcfHZZLzgmrl_N3VRjhBnho5W2YscmpOLrUgI8HSl2j5LVn-LDd5BsOxUyPHNV6GvfV0Cpl83YSB0tUn-GPhkDzlHlILX0SPcOSWCulgzM7Vd_m0RZf4llmoT8axLmUZB0Ejq_4SX1CeXCObX4pMZICWA1qYn5HkS5J8Dbt9nwkT5bMKsypT5Pn2ToXfnSesb-LVNaulbI2Q44K5JkScghocT3JXHNS1GNgCAMjYIKn7uzw8rMJMVSS2i6CF1quQkGHka333r6_Bi2lAq73yvsI1tM5_9JUN7aoIEI-eT_u81h-HgG2_eC9FaT4-f57FNfLnVi3Cu3rYdyh8zH5O8qp_pRwNwwEso1E4F8mCsa4Af6RCsBqCFpH3-Bb9bSbZMXhvfwSi5jluuhgSSZKo-_SyzT24ShKAOpUHU_rjCGn7GEIJ8b_trJOkShfCRkus3-aNUMAwGr9md3Ol4nJPxb7-4w2hMf1VPl2roUOOREjlUDouHsxMN69YBci81zPTUDArxZVlphZQwd1tt14X9ApqDIY9Q1VCR1bd2c4N7OVrOnEP7T0tPdTApuVeoOXzttyz3QOcR0DIEFuFPry6o1-db_HVNJVYTjzjz9wR42orn39MI_UzujLTMRpjfew25zz9VwNnLCtZXXy3hdcI02ZBt4miPqvh1eBW4NdXa9ubuNL1Pfs_pU7r5AOB93U77S62BNRFwxj-AaBD5JXs4Bkmiv6-jPWfTF15dTTEtVoL2JqBc-Rrl8CAXAnpUPx_yCVcJ40HYIyISEps6YLKSB1kCoin09Cg6auj6tfrb6BJOx5D8s1MocD26uvPWSOdHeKhL-OyFh_C82d7y9R2Br3LiB1pPti2chu_N6LhzE4eSBzbuBhx1D2zPYj36NvxIq9Zh4AMoVeWUxRY=","summary":[{"type":"summary_text","text":"**Planning DialPlan connect instrumentation**"},{"type":"summary_text","text":"**Testing UDP port handling and dial stages**"}]},{"id":"fc_0cb567042bb57cd4016a56bddda5188196a2e568dbbb1969a0","type":"function_call","status":"completed","arguments":"{\"type\":\"result\",\"result\":{\"data\":{\"summary\":\"HFENDULEAM RCA — pinned steady-state mechanism vs unproven trigger\\n\\nPINNED STEADY STATE\\n1. The live broker/brain is locally alive but cannot complete an outbound peer dial. `logs/daemon.stderr.log:1-11` shows generation 1 starting normally (`BRAIN_UP`, `BRAIN_NET_CONSUMERS_UP`) and then immediate 10-second whole-operation timeouts for AEA `aea099…`, ENLYZEAM current key `ecb39e…`, ENLYZEAM old key `39c018…`, and KITSUBITO `cfd9fc…`. The same failures remain present near the live tail: `logs/daemon.stderr.log:643399-643520`; at wall_ms 1784069260078–1784069441492 (2026-07-14 22:47:40.078Z–22:50:41.492Z), ENLYZEAM repeatedly times out and cfd9fc/c8939d also time out. EN retries recur roughly every 15–30 seconds because it is a target in both attached subnets and the pump cadence is 15 seconds.\\n2. The error is generated around the *entire* `DialPlan::connect`, not a narrow auth check: `crates/spt-daemon/src/nethost.rs:1125-1151` acquires a dial permit then wraps `plan.connect(addr)` in `tokio::time::timeout`; expiration becomes exactly `submit-dial exceeded the 10s bound (peer unresponsive)`. Therefore the current log proves no connect+proof+register completion, but cannot distinguish address resolution/relay, QUIC handshake, ALPN, or seed-proof without stage instrumentation.\\n3. Failure is made durable at the registry/control-plane projection. `identity/registry/heard.meta:1-7` records the last admitted ENLYZEAM feed at 1784008794517 = 2026-07-14 05:59:54.517Z and GRAVITY-RUNNER at 1784008286121 = 05:51:26.121Z. `daemon.json:7-10` sets registry eviction after 300000 ms. `crates/spt-daemon/src/registryhost.rs:607-649` defines silence as no admitted inbound feed for >TTL and then evicts every registry row authored by that peer, logging `REGISTRY_EVICT`. Thus, absent another admitted feed, EN’s foreign endpoint rows become eligible just after 06:04:54.517Z and gravity’s just after 05:56:26.121Z. This directly explains `endpoint list` collapsing to HF-only and subnet views losing remote endpoint rows while durable membership can remain.\\n4. `daemon status` green is explicitly only local control-plane/process liveness, not peer reachability. `crates/spt/src/cli.rs:3960-4043` renders `net_up=true` as the net endpoint being bound and declares the pump live solely from a fresh heartbeat. `crates/spt/src/cli.rs:4110-4198` obtains `net_up` from broker `net_status`, reads the heartbeat file, and constructs subnet counts from `SubnetStore` + registry + durable roster; it performs no successful remote handshake requirement. Consequently a bound socket, live scheduler, fresh heartbeat, and persisted member counts can all remain healthy while every transport route fails.\\n5. Local meet activity is not evidence of cross-node reachability. At `logs/daemon.stderr.log:643412-643415`, `643427-643433`, `643449-643454`, `643468-643473`, `643486-643490`, and `643514-643519`, fresh SPT_DEV/BIGNET rendezvous endpoints continue binding on HF’s local 100.68.35.65/192.168.1.81 addresses with rotating ports. `crates/spt-net/src/net/endpoint.rs:314-404` shows that a successful bind is local endpoint construction; external reachability still depends on relay/DNS/direct paths and remote QUIC completion.\\n\\nAFFECTED KEYS/SUBNETS\\n- HFENDULEAM/self: `14efb80c…c85f2d`, SPT_DEV + BIGNET (`identity/roster.json:2-25`, `:82-116`).\\n- ENLYZEAM/current: `ecb39e40…e55657`, SPT_DEV + BIGNET (`identity/roster.json:28-66`, `:151-190`); last admitted feed 2026-07-14 05:59:54.517Z (`identity/registry/heard.meta:5`).\\n- ENLYZEAM/retired: `39c018a4…eabeab1`, still represented in roster but tombstoned in both subnets (`identity/roster.json:191-276`); its dial timeout is therefore not evidence that current EN identity is wrong, only that old durable state was also targeted at generation start.\\n- Additional independently failing peers: `aea099…`, `cfd9fc…`, `c8939d…`, proving the outage is not confined to the EN key or one subnet.\\n\\nSTRONGEST ROOT CANDIDATE, WITH CONFIDENCE BOUNDARY\\nThe strongest supported *trigger class* is a common transport reachability regression/blackhole at or below the v0.31 broker endpoint (listener/firewall, n0 relay/DNS path, or QUIC connect path), not registry, subnet, or endpoint rendering. Evidence: every unrelated peer route expires at the same whole-dial 10-second boundary; both HF/EN reportedly run broker 0.31.0; local endpoint binds and schedulers continue; no typed auth/key/subnet denial appears. This is a candidate, not a proved initial trigger: the existing timeout collapses all connect stages, and the provided HF logs do not expose relay registration, packet arrival, QUIC establishment, ALPN selection, or seed-proof stage.\\n\\nA concrete secondary defect exists but cannot explain fleet-wide isolation: `identity/peer-addrs.json:29-38` stores map key `5ff50e75…` (SCELTOUIN per `identity/roster.json:119-150`) whose value has ENLYZEAM id `ecb39e40…`; there is no correctly keyed `ecb39e40…` entry. `crates/spt-daemon/src/pump/mod.rs:942-958` looks up the map by requested peer key first, then falls back to id-only n0 discovery. `crates/spt-daemon/src/pump/mod.rs:852-881` records `remote_id_hex -> remote_addr` on CONNECTED and drops that key after DIAL_FAILED; `crates/spt-daemon/src/seedproofx.rs:870-936` gap-fill keys entries by their own roster pubkey. A normal roster gap-fill cannot create this key/value mismatch. Prediction: an invariant checker over `peer-addrs.json` will flag exactly this record; however removing it would not restore the other failing peers and is not recommended as a live-state experiment.\\n\\nALTERNATIVES FALSIFIED / DOWNRANKED\\n- Pump deadlock/starvation: falsified as the steady-state cause. Fresh heartbeat/status plus ongoing 15–30s failure scheduling and rotating meet binds show active loops.\\n- Missing local bind: falsified at the coarse level by `net_up=true`, `BRAIN_NET_CONSUMERS_UP`, and repeated successful rendezvous binds; this does *not* falsify firewall filtering or wrong listener/path externally.\\n- Single bad EN key, stale address, or subnet mismatch: falsified as global cause by simultaneous timeouts for aea099, cfd9fc, c8939d, current EN, and old EN across both subnets. The peer-address mismatch is real but only exacerbates EN resolution.\\n- Seed/auth rejection as primary: downranked. No `AUTH`, `SEED`, `PROOF`, `MEMBERSHIP`, `UNTRUSTED`, or denial is emitted in the relevant failures; the generic wrapper timeout means a proof-stage hang remains possible but an explicit rejection is unsupported.\\n- IPv6-only failure: falsified as sufficient cause. The log repeatedly says `NET_FAMILY_GATE: binding IPv4-only`, while advertised IPv4/Tailscale/LAN and n0 relay paths exist.\\n- Clock/TOTP skew: downranked/falsified for steady state by the supplied read-only `w32tm` evidence (HF +0.003s, EN -0.135s) and successful 30-second rendezvous rotation. Normal member traffic is stable-key QUIC rather than TOTP rendezvous anyway.\\n- Registry eviction as initial cause: falsified directionally. Code evicts only *after* admitted feeds stop; it explains disappearance from views, not why transport first stopped.\\n- `database is locked` dispatcher errors: not a complete explanation. They affect local notification joins (`logs/daemon.stderr.log:12-36`) while unrelated broker peer dials independently hit the network-wide 10-second bound.\\n\\nNON-MUTATING DISCRIMINATORS / REMEDIATION-TEST SHAPE\\n- Add diagnostic stage timestamps (future code/test, not live state): `address selected -> endpoint.connect start -> QUIC connected -> ALPN accepted -> seed-proof sent/received -> roster/register complete`, retaining peer id and route class (direct/relay). The first missing edge will separate relay/listener/firewall from protocol proof.\\n- Add a reachability field distinct from health: last successful peer connect/feed per subnet, connected peer count, last dial failure + stage. Keep `net_up` and pump heartbeat explicitly labeled local liveness.\\n- Add an invariant at peer-address load/record: map key must equal serialized `EndpointAddr.id`; reject/quarantine mismatches and log both keys.\\n- Reproduce hermetically with two v0.31 Windows nodes across separate NATs and an external packet/relay observer. Matrix: id-only n0 resolution, explicit current EndpointAddr, direct Tailscale/LAN address, and relay-only path. Rotate one node’s UDP port and prove rediscovery. Cross-version 0.30.x↔0.31.0 and 0.31.0↔0.31.0 distinguishes wire incompatibility from environment.\\n- Falsifiable predictions: (a) listener/firewall blackhole => outbound attempts and/or relay registration exist, but no inbound QUIC completion; packet capture/firewall log shows dropped UDP or no return traffic; (b) n0 DNS/relay failure => id-only fails while an explicit current direct EndpointAddr succeeds; (c) seed-proof regression => QUIC+ALPN succeeds and timeout occurs only after proof start; (d) protocol-version regression => failure tracks version pairing in the matrix; (e) stale-seed-only => explicit current address succeeds and other correctly seeded peers do not all fail (contradicted by present multi-peer evidence). No daemon lifecycle or state-changing operation is needed to collect these observations.\",\"files\":[{\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"description\":\"Generation startup and live-tail evidence: locally healthy broker/brain and meet binds coexist with repeated whole-dial 10-second timeouts for multiple unrelated peer keys.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta\",\"description\":\"Last admitted inbound-feed watermarks; ENLYZEAM current key stops at 2026-07-14 05:59:54.517Z and GRAVITY-RUNNER at 05:51:26.121Z.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/daemon.json\",\"description\":\"Live configuration: n0 relay enabled, peer pump enabled, 30s registry pump, 300s silent-peer eviction, 15s notification pump, 60s sync pull.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\",\"description\":\"Durable cross-subnet membership and addresses for HFENDULEAM, ENLYZEAM current/old keys, KITSUBITO, SCELTOUIN, and GRAVITY-RUNNER; old EN key tombstoned in both subnets.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\",\"description\":\"Dial seed cache; contains a concrete key/id integrity violation: SCELTOUIN map key 5ff50e75… holds ENLYZEAM EndpointAddr id ecb39e40…, while the current EN key has no own entry.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs\",\"description\":\"`submit_dial` wraps the entire connect/prove/register plan in one 10-second timeout, explaining why current logs cannot localize the failed transport stage.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs\",\"description\":\"Fan-out, seed-first resolution, id-only fallback, failure logging/backoff, successful-address writeback, and stale-seed deletion paths.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs\",\"description\":\"Silent-peer eviction implementation: foreign rows are removed after no admitted feed exceeds configured TTL.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"description\":\"Daemon status semantics: process/broker bind and pump-heartbeat liveness, plus roster/registry-derived counts, with no remote-connectivity criterion.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs\",\"description\":\"Production endpoint binds with N0 preset, IPv4 family gate, n0 relay/DNS and optional mDNS; successful bind is not proof of external route reachability.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs\",\"description\":\"Roster gap-fill keys peer-address seeds by roster pubkey, showing the observed 5ff→ecb cache mismatch is not a valid normal gap-fill output.\"}],\"architecture\":\"Observed failure chain:\\n\\n`broker endpoint locally bound (net_up)` + `brain peer-pump heartbeat fresh`\\n  -> fan-out selects every durable roster peer in SPT_DEV/BIGNET\\n  -> seed cache or id-only n0 lookup supplies EndpointAddr\\n  -> broker `submit_dial` enters one 10s `DialPlan::connect` envelope\\n  -> no connect+proof+register completion; generic `PUMP_PEER_FAIL`\\n  -> no admitted remote registry feeds\\n  -> `heard.meta` watermark freezes\\n  -> after daemon-configured 300s, `RegistryHost::evict_silent_peers` removes foreign endpoint rows\\n  -> endpoint/subnet projections become local-only or empty\\n\\nMeanwhile `daemon status` remains green because it independently observes only daemon PID, broker `net_status.enabled`, pump heartbeat freshness, and durable roster/registry counts. This is a textbook separation between local control-plane liveness/fresh cached membership and data-plane transport reachability. The steady-state feedback loop is proved; the initial event that made all dials stop is not stage-localized by existing telemetry.\"}}}","call_id":"call_03Z2EZsJHyJL1Uhek61aPpsO","name":"yield"}]},"duration":85274.22569996119,"ttft":3857.9407999515533,"contextSnapshot":{"promptTokens":94488,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_03Z2EZsJHyJL1Uhek61aPpsO|fc_0cb567042bb57cd4016a56bddda5188196a2e568dbbb1969a0","toolName":"yield","startedAt":"2026-07-14T22:54:19.942Z"},"id":"9b50ab57","parentId":"626470d5","timestamp":"2026-07-14T22:54:19.942Z"}
{"type":"message","id":"9d284385","parentId":"9b50ab57","timestamp":"2026-07-14T22:54:19.943Z","message":{"role":"toolResult","toolCallId":"call_03Z2EZsJHyJL1Uhek61aPpsO|fc_0cb567042bb57cd4016a56bddda5188196a2e568dbbb1969a0","toolName":"yield","content":[{"type":"text","text":"Result submitted."}],"details":{"data":{"summary":"HFENDULEAM RCA — pinned steady-state mechanism vs unproven trigger\n\nPINNED STEADY STATE\n1. The live broker/brain is locally alive but cannot complete an outbound peer dial. `logs/daemon.stderr.log:1-11` shows generation 1 starting normally (`BRAIN_UP`, `BRAIN_NET_CONSUMERS_UP`) and then immediate 10-second whole-operation timeouts for AEA `aea099…`, ENLYZEAM current key `ecb39e…`, ENLYZEAM old key `39c018…`, and KITSUBITO `cfd9fc…`. The same failures remain present near the live tail: `logs/daemon.stderr.log:643399-643520`; at wall_ms 1784069260078–1784069441492 (2026-07-14 22:47:40.078Z–22:50:41.492Z), ENLYZEAM repeatedly times out and cfd9fc/c8939d also time out. EN retries recur roughly every 15–30 seconds because it is a target in both attached subnets and the pump cadence is 15 seconds.\n2. The error is generated around the *entire* `DialPlan::connect`, not a narrow auth check: `crates/spt-daemon/src/nethost.rs:1125-1151` acquires a dial permit then wraps `plan.connect(addr)` in `tokio::time::timeout`; expiration becomes exactly `submit-dial exceeded the 10s bound (peer unresponsive)`. Therefore the current log proves no connect+proof+register completion, but cannot distinguish address resolution/relay, QUIC handshake, ALPN, or seed-proof without stage instrumentation.\n3. Failure is made durable at the registry/control-plane projection. `identity/registry/heard.meta:1-7` records the last admitted ENLYZEAM feed at 1784008794517 = 2026-07-14 05:59:54.517Z and GRAVITY-RUNNER at 1784008286121 = 05:51:26.121Z. `daemon.json:7-10` sets registry eviction after 300000 ms. `crates/spt-daemon/src/registryhost.rs:607-649` defines silence as no admitted inbound feed for >TTL and then evicts every registry row authored by that peer, logging `REGISTRY_EVICT`. Thus, absent another admitted feed, EN’s foreign endpoint rows become eligible just after 06:04:54.517Z and gravity’s just after 05:56:26.121Z. This directly explains `endpoint list` collapsing to HF-only and subnet views losing remote endpoint rows while durable membership can remain.\n4. `daemon status` green is explicitly only local control-plane/process liveness, not peer reachability. `crates/spt/src/cli.rs:3960-4043` renders `net_up=true` as the net endpoint being bound and declares the pump live solely from a fresh heartbeat. `crates/spt/src/cli.rs:4110-4198` obtains `net_up` from broker `net_status`, reads the heartbeat file, and constructs subnet counts from `SubnetStore` + registry + durable roster; it performs no successful remote handshake requirement. Consequently a bound socket, live scheduler, fresh heartbeat, and persisted member counts can all remain healthy while every transport route fails.\n5. Local meet activity is not evidence of cross-node reachability. At `logs/daemon.stderr.log:643412-643415`, `643427-643433`, `643449-643454`, `643468-643473`, `643486-643490`, and `643514-643519`, fresh SPT_DEV/BIGNET rendezvous endpoints continue binding on HF’s local 100.68.35.65/192.168.1.81 addresses with rotating ports. `crates/spt-net/src/net/endpoint.rs:314-404` shows that a successful bind is local endpoint construction; external reachability still depends on relay/DNS/direct paths and remote QUIC completion.\n\nAFFECTED KEYS/SUBNETS\n- HFENDULEAM/self: `14efb80c…c85f2d`, SPT_DEV + BIGNET (`identity/roster.json:2-25`, `:82-116`).\n- ENLYZEAM/current: `ecb39e40…e55657`, SPT_DEV + BIGNET (`identity/roster.json:28-66`, `:151-190`); last admitted feed 2026-07-14 05:59:54.517Z (`identity/registry/heard.meta:5`).\n- ENLYZEAM/retired: `39c018a4…eabeab1`, still represented in roster but tombstoned in both subnets (`identity/roster.json:191-276`); its dial timeout is therefore not evidence that current EN identity is wrong, only that old durable state was also targeted at generation start.\n- Additional independently failing peers: `aea099…`, `cfd9fc…`, `c8939d…`, proving the outage is not confined to the EN key or one subnet.\n\nSTRONGEST ROOT CANDIDATE, WITH CONFIDENCE BOUNDARY\nThe strongest supported *trigger class* is a common transport reachability regression/blackhole at or below the v0.31 broker endpoint (listener/firewall, n0 relay/DNS path, or QUIC connect path), not registry, subnet, or endpoint rendering. Evidence: every unrelated peer route expires at the same whole-dial 10-second boundary; both HF/EN reportedly run broker 0.31.0; local endpoint binds and schedulers continue; no typed auth/key/subnet denial appears. This is a candidate, not a proved initial trigger: the existing timeout collapses all connect stages, and the provided HF logs do not expose relay registration, packet arrival, QUIC establishment, ALPN selection, or seed-proof stage.\n\nA concrete secondary defect exists but cannot explain fleet-wide isolation: `identity/peer-addrs.json:29-38` stores map key `5ff50e75…` (SCELTOUIN per `identity/roster.json:119-150`) whose value has ENLYZEAM id `ecb39e40…`; there is no correctly keyed `ecb39e40…` entry. `crates/spt-daemon/src/pump/mod.rs:942-958` looks up the map by requested peer key first, then falls back to id-only n0 discovery. `crates/spt-daemon/src/pump/mod.rs:852-881` records `remote_id_hex -> remote_addr` on CONNECTED and drops that key after DIAL_FAILED; `crates/spt-daemon/src/seedproofx.rs:870-936` gap-fill keys entries by their own roster pubkey. A normal roster gap-fill cannot create this key/value mismatch. Prediction: an invariant checker over `peer-addrs.json` will flag exactly this record; however removing it would not restore the other failing peers and is not recommended as a live-state experiment.\n\nALTERNATIVES FALSIFIED / DOWNRANKED\n- Pump deadlock/starvation: falsified as the steady-state cause. Fresh heartbeat/status plus ongoing 15–30s failure scheduling and rotating meet binds show active loops.\n- Missing local bind: falsified at the coarse level by `net_up=true`, `BRAIN_NET_CONSUMERS_UP`, and repeated successful rendezvous binds; this does *not* falsify firewall filtering or wrong listener/path externally.\n- Single bad EN key, stale address, or subnet mismatch: falsified as global cause by simultaneous timeouts for aea099, cfd9fc, c8939d, current EN, and old EN across both subnets. The peer-address mismatch is real but only exacerbates EN resolution.\n- Seed/auth rejection as primary: downranked. No `AUTH`, `SEED`, `PROOF`, `MEMBERSHIP`, `UNTRUSTED`, or denial is emitted in the relevant failures; the generic wrapper timeout means a proof-stage hang remains possible but an explicit rejection is unsupported.\n- IPv6-only failure: falsified as sufficient cause. The log repeatedly says `NET_FAMILY_GATE: binding IPv4-only`, while advertised IPv4/Tailscale/LAN and n0 relay paths exist.\n- Clock/TOTP skew: downranked/falsified for steady state by the supplied read-only `w32tm` evidence (HF +0.003s, EN -0.135s) and successful 30-second rendezvous rotation. Normal member traffic is stable-key QUIC rather than TOTP rendezvous anyway.\n- Registry eviction as initial cause: falsified directionally. Code evicts only *after* admitted feeds stop; it explains disappearance from views, not why transport first stopped.\n- `database is locked` dispatcher errors: not a complete explanation. They affect local notification joins (`logs/daemon.stderr.log:12-36`) while unrelated broker peer dials independently hit the network-wide 10-second bound.\n\nNON-MUTATING DISCRIMINATORS / REMEDIATION-TEST SHAPE\n- Add diagnostic stage timestamps (future code/test, not live state): `address selected -> endpoint.connect start -> QUIC connected -> ALPN accepted -> seed-proof sent/received -> roster/register complete`, retaining peer id and route class (direct/relay). The first missing edge will separate relay/listener/firewall from protocol proof.\n- Add a reachability field distinct from health: last successful peer connect/feed per subnet, connected peer count, last dial failure + stage. Keep `net_up` and pump heartbeat explicitly labeled local liveness.\n- Add an invariant at peer-address load/record: map key must equal serialized `EndpointAddr.id`; reject/quarantine mismatches and log both keys.\n- Reproduce hermetically with two v0.31 Windows nodes across separate NATs and an external packet/relay observer. Matrix: id-only n0 resolution, explicit current EndpointAddr, direct Tailscale/LAN address, and relay-only path. Rotate one node’s UDP port and prove rediscovery. Cross-version 0.30.x↔0.31.0 and 0.31.0↔0.31.0 distinguishes wire incompatibility from environment.\n- Falsifiable predictions: (a) listener/firewall blackhole => outbound attempts and/or relay registration exist, but no inbound QUIC completion; packet capture/firewall log shows dropped UDP or no return traffic; (b) n0 DNS/relay failure => id-only fails while an explicit current direct EndpointAddr succeeds; (c) seed-proof regression => QUIC+ALPN succeeds and timeout occurs only after proof start; (d) protocol-version regression => failure tracks version pairing in the matrix; (e) stale-seed-only => explicit current address succeeds and other correctly seeded peers do not all fail (contradicted by present multi-peer evidence). No daemon lifecycle or state-changing operation is needed to collect these observations.","files":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","description":"Generation startup and live-tail evidence: locally healthy broker/brain and meet binds coexist with repeated whole-dial 10-second timeouts for multiple unrelated peer keys."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","description":"Last admitted inbound-feed watermarks; ENLYZEAM current key stops at 2026-07-14 05:59:54.517Z and GRAVITY-RUNNER at 05:51:26.121Z."},{"path":"C:/Users/decid/AppData/Local/spt-core/daemon.json","description":"Live configuration: n0 relay enabled, peer pump enabled, 30s registry pump, 300s silent-peer eviction, 15s notification pump, 60s sync pull."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","description":"Durable cross-subnet membership and addresses for HFENDULEAM, ENLYZEAM current/old keys, KITSUBITO, SCELTOUIN, and GRAVITY-RUNNER; old EN key tombstoned in both subnets."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","description":"Dial seed cache; contains a concrete key/id integrity violation: SCELTOUIN map key 5ff50e75… holds ENLYZEAM EndpointAddr id ecb39e40…, while the current EN key has no own entry."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs","description":"`submit_dial` wraps the entire connect/prove/register plan in one 10-second timeout, explaining why current logs cannot localize the failed transport stage."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","description":"Fan-out, seed-first resolution, id-only fallback, failure logging/backoff, successful-address writeback, and stale-seed deletion paths."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs","description":"Silent-peer eviction implementation: foreign rows are removed after no admitted feed exceeds configured TTL."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","description":"Daemon status semantics: process/broker bind and pump-heartbeat liveness, plus roster/registry-derived counts, with no remote-connectivity criterion."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","description":"Production endpoint binds with N0 preset, IPv4 family gate, n0 relay/DNS and optional mDNS; successful bind is not proof of external route reachability."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs","description":"Roster gap-fill keys peer-address seeds by roster pubkey, showing the observed 5ff→ecb cache mismatch is not a valid normal gap-fill output."}],"architecture":"Observed failure chain:\n\n`broker endpoint locally bound (net_up)` + `brain peer-pump heartbeat fresh`\n  -> fan-out selects every durable roster peer in SPT_DEV/BIGNET\n  -> seed cache or id-only n0 lookup supplies EndpointAddr\n  -> broker `submit_dial` enters one 10s `DialPlan::connect` envelope\n  -> no connect+proof+register completion; generic `PUMP_PEER_FAIL`\n  -> no admitted remote registry feeds\n  -> `heard.meta` watermark freezes\n  -> after daemon-configured 300s, `RegistryHost::evict_silent_peers` removes foreign endpoint rows\n  -> endpoint/subnet projections become local-only or empty\n\nMeanwhile `daemon status` remains green because it independently observes only daemon PID, broker `net_status.enabled`, pump heartbeat freshness, and durable roster/registry counts. This is a textbook separation between local control-plane liveness/fresh cached membership and data-plane transport reachability. The steady-state feedback loop is proved; the initial event that made all dials stop is not stage-localized by existing telemetry."},"status":"success","type":"result"},"isError":false,"timestamp":1784069659942}}
{"type":"message","id":"0f17869a","parentId":"9d284385","timestamp":"2026-07-14T22:54:19.957Z","message":{"role":"assistant","content":[],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"aborted","errorMessage":"Request was aborted","errorId":134221824,"timestamp":1784069659953}}
{"type":"custom_message","customType":"irc:incoming","content":"<irc>\nIncoming IRC message from agent `IsolationCodeRCA`:\n\nCurrent PRESENCE_CONNECTED path should not transpose: register_conn derives `remote_id_hex` from `conn.remote_id()` and `observed_addr_json` calls `conn_remote_addr(conn)`, whose nested ID is also `conn.remote_id()` (nethost.rs:559-579; endpoint.rs:543-559); pump records those paired fields at 857-866. Pairing writer likewise keys remote_hex and serializes same conn. Gapfill CAN write a mismatch only if the incoming roster row was mismatched at that historical moment. Current-correct rosters do not disprove that: later higher-lease merge corrects roster, while fill-only peer cache preserves bad 5ff forever. No current 0.31 attribution/protocol bug found that generates 5ff→opposite from consistent inputs; exact provenance is unproven without old state/diff history. Treat mismatch as independent persisted invariant defect/amplifier, not root trigger. Pinned global mechanism is exact-key failures delete exact seeds, then pump ignores correct roster addresses and remains id-only.\nIf a response is expected, reply with the `irc` tool (`op: \"send\"`, `to: \"IsolationCodeRCA\"`) — you may finish your current step first. Nobody replies on your behalf.\n</irc>","display":true,"details":{"id":"1530030066ae3667","from":"IsolationCodeRCA","message":"Current PRESENCE_CONNECTED path should not transpose: register_conn derives `remote_id_hex` from `conn.remote_id()` and `observed_addr_json` calls `conn_remote_addr(conn)`, whose nested ID is also `conn.remote_id()` (nethost.rs:559-579; endpoint.rs:543-559); pump records those paired fields at 857-866. Pairing writer likewise keys remote_hex and serializes same conn. Gapfill CAN write a mismatch only if the incoming roster row was mismatched at that historical moment. Current-correct rosters do not disprove that: later higher-lease merge corrects roster, while fill-only peer cache preserves bad 5ff forever. No current 0.31 attribution/protocol bug found that generates 5ff→opposite from consistent inputs; exact provenance is unproven without old state/diff history. Treat mismatch as independent persisted invariant defect/amplifier, not root trigger. Pinned global mechanism is exact-key failures delete exact seeds, then pump ignores correct roster addresses and remains id-only."},"attribution":"agent","id":"b78edc13","parentId":"0f17869a","timestamp":"2026-07-14T22:54:25.180Z"}
{"type":"message","id":"63cf411e","parentId":"b78edc13","timestamp":"2026-07-14T22:54:33.686Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Clarifying mismatch explanation to Main**"},{"type":"toolCall","id":"call_rrL1dreu4ArVFd36X0vvTLmT|fc_022d5721ca67c189016a56be2599088195a7602dc386bbf659","name":"irc","arguments":{"i":"Clarifying mismatch provenance","op":"send","to":"Main","message":"Post-yield clarification from code peer: current connection writer cannot transpose (remote_id and nested addr id both derive conn.remote_id), but historical gapfill could preserve a mismatched incoming roster row; later higher-lease roster correction would not overwrite fill-only peer cache. Thus 5ff→ecb provenance is unproved, independent amplifier/invariant defect, not evidence of current broker conn-attribution bug. Pinned pump mechanism remains exact-key dial failure deletes seed, then correct roster address is ignored and next attempts are id-only.","replyTo":null,"await":false,"from":null,"timeoutMs":null,"peek":null}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":9331,"output":216,"cacheRead":89600,"cacheWrite":0,"totalTokens":99147,"reasoningTokens":55,"cost":{"input":0.046655,"output":0.0064800000000000005,"cacheRead":0.0448,"cacheWrite":0,"total":0.097935}},"stopReason":"toolUse","timestamp":1784069665183,"responseId":"resp_022d5721ca67c189016a56be215a188195b7542a64eaee4ab1","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_022d5721ca67c189016a56be24265c8195bb9e372b38c51b4b","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr4lvOc591RSZcPu7TLGBi8oxta0mCnuOQ3zVNcNq7YsVaoyj2NUEz65GGslHlXjSRliFOM-XjIbZj-GBL-65OZwLQ6FesWFklbhTC1tCqmmT8tHE0GgEXBCeDniKTv8_MiyONwWgbFeCgg6_-B_-qxlMQNln15TWq_f5l-QVZlmhdywnzoySXNPku9aRgXjKy-WvRf8JhAlu9a3XvZuXMgepezqOdSWgEI_JRjS53UuyPdp6ekc09hcJTXZq28mEudxUfL8F04OFJkDDSoTcVeh_sTflHnUAFiiIia0X0RjfQZqJtPRAGr5T9T9-ywuDc4o_0l_emj5GmgjqbQmFfaxQGHjqUoCgSo-9uVvkNCthJ-Fx62KXYHyznF-dgdzNposJaOoq2anRIdObZvv0RAKdse36NmI2LI-vUgxLdNGGPAcKF2mMgznkmm3oUQaQNzwz_Fungb_Z8-DC1a-0BQh_MPoLv-q2wHgZ6hfDLRdDwudC31T4wEepJJntq67HK68-qIEsX8TlgEbGJ7BhZcsmf8YO2eQsG7D0vL0M1IDg94Mx2okl4RX0M99TM9DJIP3sYOHkIZ_V-CL2VrhuN_lcHQVWwzS0Zsl0dX_zV5UE2eD7xYLUVBVZjCqDv9XpBsvRTBlOOX8wAidOGoxECU4UrsFAANiX-JMdLoIP3LXFuuMsydTQUPb-dPVB2iJ0qP6r8IdJyL6KVpjiCz_hDBoHQy4R_NmD2X8265VqotwhXm0o01apDaWWl_AQtEOtWmbKdP-jUfcH1hs3tIKqWvdiTZQxC0lRm_cu7Xsn-ljumlw3-Y4RzfH0XqaRRSrmhAgZoNnAaKfQt-lUlsRtY-CphyrFml7eecCZMAUcS2C3DgtahynzySg0ffTtPH0o9UfMZltd6dToueAMytz1r9V7mF5pLh_t-rivo7l0I4VDR-b9_qjvtFvQFEMKb-OM0JghyTZri34XYnPKJDf4Fi-OJv9L5V9mZTCGQnfemwQzAjopmeDe0J9SUCn5UFG-HyLhrIkHHy--aNJYVu4ffgUKm_8ttgQH4cDTDkB54GOJTZh1W4Hz2KTdh-RBiRcOTpbnRKL0wdAyZcfJMSiRNXY-8lsXkQfbVIvueLo9tQyJREVxqw-XVkKKSjcu0lOMGrNRxKCODx48FJyLnUCO1fTyaRDzbP-d-Ibpe-eaJYpJ_4_OPWAXzmvPKnlxmabmwj-g09FXzm0GeFqxZ9vRuueSPgHQaPPULbq0ZwvvHgOP62lYQMvcliu1z5Q2leQ8_Upq6eenXaHsEQxAv2xfBl3yA==","summary":[{"type":"summary_text","text":"**Clarifying mismatch explanation to Main**"}]},{"id":"fc_022d5721ca67c189016a56be2599088195a7602dc386bbf659","type":"function_call","status":"completed","arguments":"{\"i\":\"Clarifying mismatch provenance\",\"op\":\"send\",\"to\":\"Main\",\"message\":\"Post-yield clarification from code peer: current connection writer cannot transpose (remote_id and nested addr id both derive conn.remote_id), but historical gapfill could preserve a mismatched incoming roster row; later higher-lease roster correction would not overwrite fill-only peer cache. Thus 5ff→ecb provenance is unproved, independent amplifier/invariant defect, not evidence of current broker conn-attribution bug. Pinned pump mechanism remains exact-key dial failure deletes seed, then correct roster address is ignored and next attempts are id-only.\",\"replyTo\":null,\"await\":false,\"from\":null,\"timeoutMs\":null,\"peek\":null}","call_id":"call_rrL1dreu4ArVFd36X0vvTLmT","name":"irc"}]},"duration":8502.223600029945,"ttft":2991.682200014591,"contextSnapshot":{"promptTokens":98931,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_rrL1dreu4ArVFd36X0vvTLmT|fc_022d5721ca67c189016a56be2599088195a7602dc386bbf659","toolName":"irc","startedAt":"2026-07-14T22:54:33.686Z","intent":"Clarifying mismatch provenance"},"id":"e1f04d5b","parentId":"63cf411e","timestamp":"2026-07-14T22:54:33.686Z"}
{"type":"message","id":"99419eda","parentId":"e1f04d5b","timestamp":"2026-07-14T22:54:33.687Z","message":{"role":"toolResult","toolCallId":"call_rrL1dreu4ArVFd36X0vvTLmT|fc_022d5721ca67c189016a56be2599088195a7602dc386bbf659","toolName":"irc","content":[{"type":"text","text":"Delivered to 1 peer(s):\n- Main: injected"}],"details":{"op":"send","from":"IsolationLogRCA","to":"Main","receipts":[{"to":"Main","outcome":"injected"}]},"isError":false,"timestamp":1784069673686}}
{"type":"message","id":"3686c9bc","parentId":"99419eda","timestamp":"2026-07-14T22:54:40.029Z","message":{"role":"assistant","content":[{"type":"text","text":"","textSignature":"{\"v\":1,\"id\":\"msg_022d5721ca67c189016a56be2ebf5c81959dbc9c5fe0372783\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":5473,"output":4,"cacheRead":93696,"cacheWrite":0,"totalTokens":99173,"cost":{"input":0.027365000000000004,"output":0.00012,"cacheRead":0.046848,"cacheWrite":0,"total":0.07433300000000001}},"stopReason":"stop","timestamp":1784069673689,"responseId":"resp_022d5721ca67c189016a56be2a8dd88195be8d9f14d6f0ae38","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"msg_022d5721ca67c189016a56be2ebf5c81959dbc9c5fe0372783","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":""}],"phase":"final_answer","role":"assistant"}]},"duration":6339.171599984169,"ttft":5084.100000023842,"contextSnapshot":{"promptTokens":99169,"nonMessageTokens":17981}}}
{"type":"message","id":"d39fbf9c","parentId":"99419eda","timestamp":"2026-07-14T22:55:20.588Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Preparing corrected structured yield**"},{"type":"toolCall","id":"call_NlnoZifCOGYtbvTcizhS7jZ5|fc_07c438adefed60db016a56be387eb88193b881fac580cb7043","name":"yield","arguments":{"type":"result","result":{"data":{"summary":"FINAL CORRECTION / CLOSURE\n\nThe proved causal loop is unchanged: HF’s locally healthy broker and pump repeatedly fail whole `DialPlan::connect` operations for several unrelated peers at the fixed 10-second bound (`logs/daemon.stderr.log:1-11`, `:643399-643520`; timeout implementation `crates/spt-daemon/src/nethost.rs:1125-1151`). With no admitted feeds, `identity/registry/heard.meta:1-7` freezes—ENLYZEAM `ecb39e…` last at 1784008794517 / 2026-07-14 05:59:54.517Z—and `daemon.json:7-10` plus `registryhost.rs:607-649` evicts foreign registry rows after 300 seconds. Endpoint/subnet projections therefore become local-only/empty. `daemon status` remains green because `cli.rs:3960-4043,4110-4198` tests only local PID/broker bind (`net_up`), pump heartbeat, and persisted roster/registry projections; it never requires a successful peer handshake.\n\nThe initial trigger remains unproved. Strongest trigger class is a common transport reachability blackhole/regression at or below the v0.31 endpoint—n0 relay/DNS, listener/firewall, QUIC, or connect-stage protocol hang—because current logging wraps address-to-register as one timeout. Auth/key/subnet rejection is downranked: no typed denial appears, and unrelated keys `aea099…`, `cfd9fc…`, `c8939d…`, current EN `ecb39e…`, and old EN `39c018…` all fail. Clock skew, pump stall, missing coarse local bind, IPv6-only failure, registry-as-trigger, and a single bad EN identity are falsified or insufficient for the reasons in the prior structured result.\n\nImportant peer-cache provenance correction: `identity/peer-addrs.json:29-38` unquestionably violates the key/id invariant—map key `5ff50e75…` (SCELTOUIN) contains EndpointAddr id `ecb39e40…` (ENLYZEAM), and no correctly keyed current-EN entry exists. Current connection writeback cannot transpose these fields: both `remote_id_hex` and observed EndpointAddr id derive from the same authenticated connection, then pump records them together (`nethost.rs:559-579`; `endpoint.rs:543-559`; `pump/mod.rs:857-866`). However, a historical mismatched incoming roster row could have been fill-cached, then corrected later by a higher-lease roster merge while fill-only peer cache preserved the old bad record. Therefore exact provenance is unproved: treat this as an independent persisted invariant defect/amplifier, not evidence of a current broker connection-attribution bug and not the global root trigger.\n\nPinned cache amplification: pump resolves an exact peer key from `peer-addrs.json` first, then id-only n0 discovery (`pump/mod.rs:942-958`); exact-key `DIAL_FAILED` deletes that seed (`pump/mod.rs:852-881`). The pump does not consult the currently correct roster address on subsequent attempts. Prediction: after a direct seed fails or is absent, routes depend entirely on id-only n0 discovery even when `roster.json` holds a newer full EndpointAddr. This makes a transient path failure self-sustaining if id-only discovery is also unavailable. It still does not establish what caused the first fleet-wide failures.\n\nSafe test/remediation shape: add per-stage timestamps for address selection, DNS/relay lookup, QUIC connect, ALPN, seed-proof, roster/register; surface last successful peer connect/feed separately from `net_up`; validate map key equals EndpointAddr id on load/record; and run a two-Windows-node v0.30.x/v0.31.0 matrix across separate NATs using id-only, explicit current address, direct, and relay-only routes. Falsifiable outcomes: id-only failure plus explicit-address success implicates n0 discovery; packets/relay registration without QUIC completion implicates listener/firewall/QUIC; QUIC+ALPN success followed by proof timeout implicates seed-proof; version-pair correlation implicates wire regression. No live daemon mutation is required for diagnostic packet/firewall/relay observation.","files":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","description":"Immediate and continuing multi-peer 10-second dial failures coexist with active broker/brain and rotating locally bound rendezvous endpoints."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","description":"Exact last admitted remote feed watermarks; establishes disappearance onset plus the 300-second eviction deadline."},{"path":"C:/Users/decid/AppData/Local/spt-core/daemon.json","description":"n0 relay and peer pump enabled; registry eviction TTL 300000ms and pump cadences."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","description":"Durable HF/EN subnet membership and correct current EN EndpointAddr; persists after transport isolation."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","description":"Persisted 5ff50e75→EndpointAddr(ecb39e40) invariant violation and absence of correctly keyed current EN seed."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs","description":"Whole connect/prove/register timeout envelope; current authenticated-connection identity/address derivation."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","description":"Exact-key seed-first resolution, id-only fallback, dial failure logging/backoff, and exact-key seed deletion."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs","description":"Five-minute silence eviction that converts transport loss into missing foreign rows."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","description":"Local-liveness daemon status semantics, explaining green control-plane status during total peer isolation."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","description":"N0 endpoint bind and authenticated remote EndpointAddr construction; local bind is not remote reachability."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs","description":"Fill-only roster-to-peer-cache behavior that can preserve a historical bad row after roster correction."}],"architecture":"`local broker bound + pump heartbeat fresh` → durable roster fans out peers → exact seed if present, otherwise id-only n0 lookup → entire connect/QUIC/ALPN/proof/register operation expires at 10s → failed exact seed is deleted → future attempts remain id-only and ignore newer roster addresses → no admitted feeds → heard watermark stops → after 300s foreign registry rows are evicted → endpoint/subnet views become local-only or empty. Separately, daemon status remains green because its control-plane health inputs are local bind/process/scheduler freshness and durable projections, not transport reachability. The steady-state isolation/eviction feedback loop is proved; the first transport failure’s stage is not observable in present logs."}}}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":5502,"output":1694,"cacheRead":93696,"cacheWrite":0,"totalTokens":100892,"reasoningTokens":106,"cost":{"input":0.027510000000000003,"output":0.050820000000000004,"cacheRead":0.046848,"cacheWrite":0,"total":0.125178}},"stopReason":"toolUse","timestamp":1784069680047,"responseId":"resp_07c438adefed60db016a56be30f5048193b68240b0361da380","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"rs_07c438adefed60db016a56be36179881939d8d1d8af48b1686","type":"reasoning","content":[],"encrypted_content":"gAAAAABqVr44LBOoGUUaY4K_yqamGxhkc_ZnU81fgUsG8DfVXTLbpFZK0w90nZQR0ZlKm3gupFT7TWH9TpQkRnz4F5eakFJ7yNGzq2tsmZS94_ceHhXSaLfGPSFKUIQkG9mH5bmhO8hiq5jJYOYmtUug6ujCy3w5xdaXQGC01g5yioLfLVTIQra3FBH-Mn2CVCxsjWl888zVmk5gofYWKda-0iQCQmzIyCUEQ9SAXOHXEuhMLDtFzhrGtfr-0I-ttGzJcnEePY3n6uyd0iVAHqgS-Kq8wDfGfRrO2V0htbO3C7rnQ2bAC8wwrYZOFeUwQlGXIJJGTh1bQbRyknFRY6CkcwbnIWs9qo54Pp7PgjV7s9P1YytreXSpqqFdPQqNeWDntGa2qw5WnHmqYX-A1VwKaN7aB5ei0oTNAnN74tcJFMTTnuSm0WEsQYHMaI7cgkF69JrkyKjCDlFGXt1MQm8zCctKhGOgu4qhfCC7FSAxFnDdyLyLQ5J7AXHco5dP_vCuP3dhq1byyUObO7CaXSm73oJiehs8tFVjWm5i1o76Jq2VwOh17E7I_3LvGoQfmayva4zTqV_MLo_ISjogTRUo1ujEycS_zxk5YwWvqZuXmkKQqlM9lIRJAkaMeEA_BbkuBcnKf1uDT0OuNii-pDSjGps7DLZ7j_zlcbryW3LUM-7sxZQA55PfpBTo8d24Za1wQnLEIGY6ynU3EtIveSLUyZ8d678Dnv-h8QJKovJUn-QbX-U8kqxfzHRqriAnr1qVsdFaErwBtOJoD96X-ZbX9Lrkto8fG1HRNOal7J3bGVIjRJzrpbXMoAKBuFnYAC8OTcs_WPtJG_J0JalDSMwHMlibSW_wkLh6-puwViuDtHEPYCSl9GBv8BsGHK686pT2c1-0oNpzwPgXfCwm9natTygsiaq60yMdiNZSEx-_pYdgg6w4DBf7r5mRO8SpvgFaVY-c0yS-DN12VsbD7jz3AsrhaQLuKMSZB3nPYM39j0MozO3qkpwAUdjFhyQsuTfqo0LpdfikeMXpgzOGSnDOICW1tF_RFww-ATJYFEk4tpVf7zUcpL86NPTEH6OIms3qqzawYrMk0s5_G-ZiS2-LQfJi5Kdn8h9PLFewDgV8srtmrtUbInEhNKNOombOd9zvUZPioAidHUDTg8HQn2Ag1A15FfjBaigThhC4A7mAyO2ycPS8qyalUm2KG4snu24pmRLtzCMmZt77lcJT9P30eg57uGXVwTn-DE0dXnL_mausC9tnD3dSOY1LJwVMyH6jAy7fXeWgP8mwfbFw3qmQwAJo8AUzJJSMFXPhK_bvbFT8xR1O-yxgAbtTUFpK-gIrZK4Wb2riTuY52IoKRcyjnmQIhdxwosnDToY7GiUtd1wUhESAgQcNDCZNhySRuZYWmAUGM67VWog2DzwRAmWyWg1Qa0aQHo8dAWC05TwyblIwH4LXO62rm_PLk2QqxZFgvKEG_wK9NdsU_xaH-IPgYi285GPG9SGkIVRiOZH9kpDICgtyHA6uHjqNZujLDGjeUXdCVvno-uHrf3nNg1dFU_LaGZthzOWwyVclUyQu260cjthEDK8JBrqTAiHGGLqGgkQvGXoqeuDDRoh9zSGvcul_IuLHa3JOXkEWc2V-QKVxMrYM0CVOpmm6jvP-BxFYMxjoeml96JhoV9Rouw6jFDdqdS90lYAk44EdMw0WRRHQIDLzgwYCG9kkefsMMppVGfmYNyhO","summary":[{"type":"summary_text","text":"**Preparing corrected structured yield**"}]},{"id":"fc_07c438adefed60db016a56be387eb88193b881fac580cb7043","type":"function_call","status":"completed","arguments":"{\"type\":\"result\",\"result\":{\"data\":{\"summary\":\"FINAL CORRECTION / CLOSURE\\n\\nThe proved causal loop is unchanged: HF’s locally healthy broker and pump repeatedly fail whole `DialPlan::connect` operations for several unrelated peers at the fixed 10-second bound (`logs/daemon.stderr.log:1-11`, `:643399-643520`; timeout implementation `crates/spt-daemon/src/nethost.rs:1125-1151`). With no admitted feeds, `identity/registry/heard.meta:1-7` freezes—ENLYZEAM `ecb39e…` last at 1784008794517 / 2026-07-14 05:59:54.517Z—and `daemon.json:7-10` plus `registryhost.rs:607-649` evicts foreign registry rows after 300 seconds. Endpoint/subnet projections therefore become local-only/empty. `daemon status` remains green because `cli.rs:3960-4043,4110-4198` tests only local PID/broker bind (`net_up`), pump heartbeat, and persisted roster/registry projections; it never requires a successful peer handshake.\\n\\nThe initial trigger remains unproved. Strongest trigger class is a common transport reachability blackhole/regression at or below the v0.31 endpoint—n0 relay/DNS, listener/firewall, QUIC, or connect-stage protocol hang—because current logging wraps address-to-register as one timeout. Auth/key/subnet rejection is downranked: no typed denial appears, and unrelated keys `aea099…`, `cfd9fc…`, `c8939d…`, current EN `ecb39e…`, and old EN `39c018…` all fail. Clock skew, pump stall, missing coarse local bind, IPv6-only failure, registry-as-trigger, and a single bad EN identity are falsified or insufficient for the reasons in the prior structured result.\\n\\nImportant peer-cache provenance correction: `identity/peer-addrs.json:29-38` unquestionably violates the key/id invariant—map key `5ff50e75…` (SCELTOUIN) contains EndpointAddr id `ecb39e40…` (ENLYZEAM), and no correctly keyed current-EN entry exists. Current connection writeback cannot transpose these fields: both `remote_id_hex` and observed EndpointAddr id derive from the same authenticated connection, then pump records them together (`nethost.rs:559-579`; `endpoint.rs:543-559`; `pump/mod.rs:857-866`). However, a historical mismatched incoming roster row could have been fill-cached, then corrected later by a higher-lease roster merge while fill-only peer cache preserved the old bad record. Therefore exact provenance is unproved: treat this as an independent persisted invariant defect/amplifier, not evidence of a current broker connection-attribution bug and not the global root trigger.\\n\\nPinned cache amplification: pump resolves an exact peer key from `peer-addrs.json` first, then id-only n0 discovery (`pump/mod.rs:942-958`); exact-key `DIAL_FAILED` deletes that seed (`pump/mod.rs:852-881`). The pump does not consult the currently correct roster address on subsequent attempts. Prediction: after a direct seed fails or is absent, routes depend entirely on id-only n0 discovery even when `roster.json` holds a newer full EndpointAddr. This makes a transient path failure self-sustaining if id-only discovery is also unavailable. It still does not establish what caused the first fleet-wide failures.\\n\\nSafe test/remediation shape: add per-stage timestamps for address selection, DNS/relay lookup, QUIC connect, ALPN, seed-proof, roster/register; surface last successful peer connect/feed separately from `net_up`; validate map key equals EndpointAddr id on load/record; and run a two-Windows-node v0.30.x/v0.31.0 matrix across separate NATs using id-only, explicit current address, direct, and relay-only routes. Falsifiable outcomes: id-only failure plus explicit-address success implicates n0 discovery; packets/relay registration without QUIC completion implicates listener/firewall/QUIC; QUIC+ALPN success followed by proof timeout implicates seed-proof; version-pair correlation implicates wire regression. No live daemon mutation is required for diagnostic packet/firewall/relay observation.\",\"files\":[{\"path\":\"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log\",\"description\":\"Immediate and continuing multi-peer 10-second dial failures coexist with active broker/brain and rotating locally bound rendezvous endpoints.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta\",\"description\":\"Exact last admitted remote feed watermarks; establishes disappearance onset plus the 300-second eviction deadline.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/daemon.json\",\"description\":\"n0 relay and peer pump enabled; registry eviction TTL 300000ms and pump cadences.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/roster.json\",\"description\":\"Durable HF/EN subnet membership and correct current EN EndpointAddr; persists after transport isolation.\"},{\"path\":\"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json\",\"description\":\"Persisted 5ff50e75→EndpointAddr(ecb39e40) invariant violation and absence of correctly keyed current EN seed.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs\",\"description\":\"Whole connect/prove/register timeout envelope; current authenticated-connection identity/address derivation.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs\",\"description\":\"Exact-key seed-first resolution, id-only fallback, dial failure logging/backoff, and exact-key seed deletion.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs\",\"description\":\"Five-minute silence eviction that converts transport loss into missing foreign rows.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs\",\"description\":\"Local-liveness daemon status semantics, explaining green control-plane status during total peer isolation.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs\",\"description\":\"N0 endpoint bind and authenticated remote EndpointAddr construction; local bind is not remote reachability.\"},{\"path\":\"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs\",\"description\":\"Fill-only roster-to-peer-cache behavior that can preserve a historical bad row after roster correction.\"}],\"architecture\":\"`local broker bound + pump heartbeat fresh` → durable roster fans out peers → exact seed if present, otherwise id-only n0 lookup → entire connect/QUIC/ALPN/proof/register operation expires at 10s → failed exact seed is deleted → future attempts remain id-only and ignore newer roster addresses → no admitted feeds → heard watermark stops → after 300s foreign registry rows are evicted → endpoint/subnet views become local-only or empty. Separately, daemon status remains green because its control-plane health inputs are local bind/process/scheduler freshness and durable projections, not transport reachability. The steady-state isolation/eviction feedback loop is proved; the first transport failure’s stage is not observable in present logs.\"}}}","call_id":"call_NlnoZifCOGYtbvTcizhS7jZ5","name":"yield"}]},"duration":40538.482400000095,"ttft":6070.324099957943,"contextSnapshot":{"promptTokens":99198,"nonMessageTokens":17981}}}
{"type":"custom","customType":"tool_execution_start","data":{"toolCallId":"call_NlnoZifCOGYtbvTcizhS7jZ5|fc_07c438adefed60db016a56be387eb88193b881fac580cb7043","toolName":"yield","startedAt":"2026-07-14T22:55:20.588Z"},"id":"930f1759","parentId":"d39fbf9c","timestamp":"2026-07-14T22:55:20.588Z"}
{"type":"message","id":"395a38c4","parentId":"930f1759","timestamp":"2026-07-14T22:55:20.589Z","message":{"role":"toolResult","toolCallId":"call_NlnoZifCOGYtbvTcizhS7jZ5|fc_07c438adefed60db016a56be387eb88193b881fac580cb7043","toolName":"yield","content":[{"type":"text","text":"Result submitted."}],"details":{"data":{"summary":"FINAL CORRECTION / CLOSURE\n\nThe proved causal loop is unchanged: HF’s locally healthy broker and pump repeatedly fail whole `DialPlan::connect` operations for several unrelated peers at the fixed 10-second bound (`logs/daemon.stderr.log:1-11`, `:643399-643520`; timeout implementation `crates/spt-daemon/src/nethost.rs:1125-1151`). With no admitted feeds, `identity/registry/heard.meta:1-7` freezes—ENLYZEAM `ecb39e…` last at 1784008794517 / 2026-07-14 05:59:54.517Z—and `daemon.json:7-10` plus `registryhost.rs:607-649` evicts foreign registry rows after 300 seconds. Endpoint/subnet projections therefore become local-only/empty. `daemon status` remains green because `cli.rs:3960-4043,4110-4198` tests only local PID/broker bind (`net_up`), pump heartbeat, and persisted roster/registry projections; it never requires a successful peer handshake.\n\nThe initial trigger remains unproved. Strongest trigger class is a common transport reachability blackhole/regression at or below the v0.31 endpoint—n0 relay/DNS, listener/firewall, QUIC, or connect-stage protocol hang—because current logging wraps address-to-register as one timeout. Auth/key/subnet rejection is downranked: no typed denial appears, and unrelated keys `aea099…`, `cfd9fc…`, `c8939d…`, current EN `ecb39e…`, and old EN `39c018…` all fail. Clock skew, pump stall, missing coarse local bind, IPv6-only failure, registry-as-trigger, and a single bad EN identity are falsified or insufficient for the reasons in the prior structured result.\n\nImportant peer-cache provenance correction: `identity/peer-addrs.json:29-38` unquestionably violates the key/id invariant—map key `5ff50e75…` (SCELTOUIN) contains EndpointAddr id `ecb39e40…` (ENLYZEAM), and no correctly keyed current-EN entry exists. Current connection writeback cannot transpose these fields: both `remote_id_hex` and observed EndpointAddr id derive from the same authenticated connection, then pump records them together (`nethost.rs:559-579`; `endpoint.rs:543-559`; `pump/mod.rs:857-866`). However, a historical mismatched incoming roster row could have been fill-cached, then corrected later by a higher-lease roster merge while fill-only peer cache preserved the old bad record. Therefore exact provenance is unproved: treat this as an independent persisted invariant defect/amplifier, not evidence of a current broker connection-attribution bug and not the global root trigger.\n\nPinned cache amplification: pump resolves an exact peer key from `peer-addrs.json` first, then id-only n0 discovery (`pump/mod.rs:942-958`); exact-key `DIAL_FAILED` deletes that seed (`pump/mod.rs:852-881`). The pump does not consult the currently correct roster address on subsequent attempts. Prediction: after a direct seed fails or is absent, routes depend entirely on id-only n0 discovery even when `roster.json` holds a newer full EndpointAddr. This makes a transient path failure self-sustaining if id-only discovery is also unavailable. It still does not establish what caused the first fleet-wide failures.\n\nSafe test/remediation shape: add per-stage timestamps for address selection, DNS/relay lookup, QUIC connect, ALPN, seed-proof, roster/register; surface last successful peer connect/feed separately from `net_up`; validate map key equals EndpointAddr id on load/record; and run a two-Windows-node v0.30.x/v0.31.0 matrix across separate NATs using id-only, explicit current address, direct, and relay-only routes. Falsifiable outcomes: id-only failure plus explicit-address success implicates n0 discovery; packets/relay registration without QUIC completion implicates listener/firewall/QUIC; QUIC+ALPN success followed by proof timeout implicates seed-proof; version-pair correlation implicates wire regression. No live daemon mutation is required for diagnostic packet/firewall/relay observation.","files":[{"path":"C:/Users/decid/AppData/Local/spt-core/logs/daemon.stderr.log","description":"Immediate and continuing multi-peer 10-second dial failures coexist with active broker/brain and rotating locally bound rendezvous endpoints."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/registry/heard.meta","description":"Exact last admitted remote feed watermarks; establishes disappearance onset plus the 300-second eviction deadline."},{"path":"C:/Users/decid/AppData/Local/spt-core/daemon.json","description":"n0 relay and peer pump enabled; registry eviction TTL 300000ms and pump cadences."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/roster.json","description":"Durable HF/EN subnet membership and correct current EN EndpointAddr; persists after transport isolation."},{"path":"C:/Users/decid/AppData/Local/spt-core/identity/peer-addrs.json","description":"Persisted 5ff50e75→EndpointAddr(ecb39e40) invariant violation and absence of correctly keyed current EN seed."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/nethost.rs","description":"Whole connect/prove/register timeout envelope; current authenticated-connection identity/address derivation."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/pump/mod.rs","description":"Exact-key seed-first resolution, id-only fallback, dial failure logging/backoff, and exact-key seed deletion."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/registryhost.rs","description":"Five-minute silence eviction that converts transport loss into missing foreign rows."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt/src/cli.rs","description":"Local-liveness daemon status semantics, explaining green control-plane status during total peer isolation."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-net/src/net/endpoint.rs","description":"N0 endpoint bind and authenticated remote EndpointAddr construction; local bind is not remote reachability."},{"path":"C:/Users/decid/Documents/projects/spt-core/crates/spt-daemon/src/seedproofx.rs","description":"Fill-only roster-to-peer-cache behavior that can preserve a historical bad row after roster correction."}],"architecture":"`local broker bound + pump heartbeat fresh` → durable roster fans out peers → exact seed if present, otherwise id-only n0 lookup → entire connect/QUIC/ALPN/proof/register operation expires at 10s → failed exact seed is deleted → future attempts remain id-only and ignore newer roster addresses → no admitted feeds → heard watermark stops → after 300s foreign registry rows are evicted → endpoint/subnet views become local-only or empty. Separately, daemon status remains green because its control-plane health inputs are local bind/process/scheduler freshness and durable projections, not transport reachability. The steady-state isolation/eviction feedback loop is proved; the first transport failure’s stage is not observable in present logs."},"status":"success","type":"result"},"isError":false,"timestamp":1784069720588}}
{"type":"message","id":"2ef86d03","parentId":"395a38c4","timestamp":"2026-07-14T22:55:26.150Z","message":{"role":"assistant","content":[{"type":"text","text":"","textSignature":"{\"v\":1,\"id\":\"msg_07c438adefed60db016a56be5c91988193bac5e3462738069d\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":7210,"output":4,"cacheRead":93696,"cacheWrite":0,"totalTokens":100910,"cost":{"input":0.036050000000000006,"output":0.00012,"cacheRead":0.046848,"cacheWrite":0,"total":0.08301800000000001}},"stopReason":"stop","timestamp":1784069721178,"responseId":"resp_07c438adefed60db016a56be5987ec8193a4263aa181bb2ab1","providerPayload":{"type":"openaiResponsesHistory","provider":"openai-codex","dt":true,"items":[{"id":"msg_07c438adefed60db016a56be5c91988193bac5e3462738069d","type":"message","status":"completed","content":[{"type":"output_text","annotations":[],"logprobs":[],"text":""}],"phase":"final_answer","role":"assistant"}]},"duration":4971.013700008392,"ttft":3482.809599995613,"contextSnapshot":{"promptTokens":100906,"nonMessageTokens":17981}}}
{"type":"custom","customType":"session_exit","data":{"reason":"dispose","kind":"normal","recordedAt":"2026-07-14T23:02:26.164Z"},"id":"0aae82c5","parentId":"2ef86d03","timestamp":"2026-07-14T23:02:26.164Z"}
