{
  "changed": [
    ".worktrees/302-net-worker-stamps/crates/spt-net-diag/src/stacks/windows.rs"
  ],
  "intentionally_unchanged": [
    "crates/spt-net-diag/src/stacks.rs: unsupported backend already preserves input TID order and truthful errors.",
    "lib.rs, nethost, manifests: ownership respected."
  ],
  "edits": [
    "Removed nonexistent REQ-RC-HITCH-BOUNDARY-STAMPS comment.",
    "Registered CBA_READ_MEMORY callback; symbol-handler reads use the copied stack/live-image-only reader. Live-image reads now require committed, non-guard/non-NOACCESS memory and the entire requested range within its queried image region; partial reads fail.",
    "Applied/restored identical restricted DbgHelp options during initialization and capture. Explicit matching-PDB policy rejects unmatched/missing PDB evidence; ignored CodeView paths and disabled symbol-server autodetection avoid inherited build-machine/server searches.",
    "Preserved original aligned CONTEXT while StackWalk64 mutates a copy; emitted original RIP/RSP/RBP alongside real raw PCs.",
    "Restricted idle classification to exact known wait/park symbol names, requiring ntdll at the leaf; added source assertions rejecting application-prefix and fake-native-symbol matches.",
    "Recorded initialization_us, first_capture, symbolization_us, symbol-lock wait, sequential-capture disclosure, resume confirmation and truthful suspend-duration upper-bound applicability. Capture duration includes evidence assembly and rounds milliseconds upward.",
    "Added bounded resume_twice helper: at most two native ResumeThread attempts, preserving both errors. Two failures permanently disarm the backend, stop before another worker or symbolization, emit one static NET_DIAG_RESUME_FAILED line through native WriteFile, and move preallocated fatal JSON without Rust allocation/locks.",
    "Fatal JSON contract: fatal_resume_failure:true, failed_tid, resume_error, resume_retry_error, capture_duration_ms, and both input-ordered workers with unknown activity/errors/no fabricated frames. Later capture calls return Null.",
    "Added forced-failure and successful-retry unit source checks for bounded attempt count and preserved error outcomes. Not executed."
  ],
  "main_integration": "Main informed: on fatal_resume_failure, permanently disarm observer and mem::forget both sampler and fatal Value; do not enrich/log/drop them through Rust while resumption is unconfirmed. Existing sampler Drop takes DBGHELP and normal field destruction can enter the allocator.",
  "initialization_effects": "new() synchronously opens workers, allocates/pre-touches 4 MiB of copy buffers, acquires DBGHELP, eagerly initializes symbols/PDBs, and preallocates fatal evidence. initialization_us is exposed on normal capture, but Main must measure new() independently, including Err paths, without backdating START/heartbeat. Initial/late symbol loading and DbgHelp contention can exceed capture budget; first_capture and symbolization_us expose rather than exclude those costs.",
  "unvalidated_risks": [
    "All source remains uncompiled and unexecuted. No Cargo, builds, tests, formatter, linter, runtime, debugger, resident interaction, commit or lifecycle action occurred.",
    "<=100ms remains an authorized-native-proof obligation, not a claim or enforced OS deadline.",
    "Both ResumeThread attempts can fail on a live worker. Disarm prevents further sampling but cannot guarantee resumption; that safety case still blocks field staging.",
    "Native synchronous WriteFile is allocation/lock-independent from Rust but can block on stderr backpressure, fail, or write partially; exactly one attempt avoids an unbounded emergency retry.",
    "Other in-process DbgHelp users do not share this private mutex automatically. DbgHelp concurrency/global-option interference remains a native integration risk.",
    "Live image/unwind metadata can unload/change after resume. Dynamic code, copied-stack limits, missing matched system/application PDBs and unfamiliar Rust symbol spellings may leave explicit errors/unknown classification."
  ],
  "references": [
    "https://learn.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-stackwalk64",
    "https://learn.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-symsetoptions",
    "https://learn.microsoft.com/en-us/windows/win32/api/dbghelp/nc-dbghelp-psymbol_registered_callback64"
  ]
}