← back to Ticket System
TK-11372: independent re-verification of the fix by a second agent
92526783f89bd9b4532867672e382bfa30b81996 · 2026-09-11 13:15:47 -0700 · Steve Abrams
Measured before accepting: the ticket description is stale. The listener is
healthy (40/40 healthz 200, p50 1ms) and the daemon identity re-checks out
(pid 60904 = pm2 id 57 ticket-board, one God daemon, process started after
the last server.js write, so it is running the patched code).
Patch reviewed rather than trusted: candidate.patch touches one file in one
hunk, its baseline is byte-identical to the pre-patch git blob, and the
rebuilt file is byte-identical to what was committed - so nothing unrelated
was reverted. The orphan-daemon guard, the TK-10970 serialized pm2 wrapper
and the auth gate all survive.
Root cause corroborated independently by sampling the live process:
SyncProcessRunner is now 0 samples on the main thread, against 2531/3794
before. The execSync-in-timer class is gone.
Checked the false-green this patch could have introduced: serve-last-good
could have frozen /api/running at stale data behind a 200. It has not - the
cache advances every 10-15s and the serialized jlist returns in ~1.5s.
Residual reported plainly: healthz still spikes to 3.7s worst under load.
The stack names a different cause - per-request JSON.parse of the event log
in the request handler - which is the already-filed TK-11506, not this class.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Files touched
A verification/tk11372/independent-verification-vp-eng.json
Diff
commit 92526783f89bd9b4532867672e382bfa30b81996
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri Sep 11 13:15:47 2026 -0700
TK-11372: independent re-verification of the fix by a second agent
Measured before accepting: the ticket description is stale. The listener is
healthy (40/40 healthz 200, p50 1ms) and the daemon identity re-checks out
(pid 60904 = pm2 id 57 ticket-board, one God daemon, process started after
the last server.js write, so it is running the patched code).
Patch reviewed rather than trusted: candidate.patch touches one file in one
hunk, its baseline is byte-identical to the pre-patch git blob, and the
rebuilt file is byte-identical to what was committed - so nothing unrelated
was reverted. The orphan-daemon guard, the TK-10970 serialized pm2 wrapper
and the auth gate all survive.
Root cause corroborated independently by sampling the live process:
SyncProcessRunner is now 0 samples on the main thread, against 2531/3794
before. The execSync-in-timer class is gone.
Checked the false-green this patch could have introduced: serve-last-good
could have frozen /api/running at stale data behind a 200. It has not - the
cache advances every 10-15s and the serialized jlist returns in ~1.5s.
Residual reported plainly: healthz still spikes to 3.7s worst under load.
The stack names a different cause - per-request JSON.parse of the event log
in the request handler - which is the already-filed TK-11506, not this class.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---
.../tk11372/independent-verification-vp-eng.json | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/verification/tk11372/independent-verification-vp-eng.json b/verification/tk11372/independent-verification-vp-eng.json
new file mode 100644
index 00000000..252fe4fd
--- /dev/null
+++ b/verification/tk11372/independent-verification-vp-eng.json
@@ -0,0 +1,67 @@
+{
+ "agent": "vp-eng-11372",
+ "ticket": "TK-11372",
+ "at": "2026-09-11T20:15:00Z",
+ "purpose": "Independent re-verification of the TK-11372 fix by a fresh agent that did not apply it. Measure first, accept nothing on report.",
+ "reproduction_attempt": {
+ "result": "SYMPTOM NOT REPRODUCIBLE - ticket description is STALE",
+ "note": "Fix was applied (661b3c5) and activated 19:21Z before this pass. Verified recovery instead of the outage.",
+ "load_at_measurement": "31.18 -> 25.23 (was 70.74 when wedged)",
+ "healthz_soak": {"probes": 40, "http_200": 40, "failures": 0, "worst_seconds": 5.085611},
+ "healthz_dense": {"probes": 60, "min": 0.000657, "p50": 0.001034, "p90": 0.023419, "max": 3.729265},
+ "harness_negative_control": "dead port 9999 -> code=000, harness proven able to go RED",
+ "harness_defect_found_and_fixed": "first soak used /usr/bin/time -p and misparsed curl output, reporting 30/30 FAIL while the service was healthy; replaced with curl -w timing"
+ },
+ "daemon_identity_reconfirmed": {
+ "listener": "node pid 60904 LISTEN 127.0.0.1:9794",
+ "pm2_id": 57,
+ "pm2_name": "ticket-board",
+ "script": "/Users/macstudio3/Projects/ticket-system/server.js",
+ "god_daemons": 1,
+ "restart_time": 50,
+ "proc_start_local": "2026-09-11 12:16:17",
+ "server_js_mtime_local": "2026-09-11 11:41:59",
+ "conclusion": "process started AFTER the last server.js write, so the running code IS the patched code"
+ },
+ "patch_review": {
+ "verdict": "CLEAN - no unrelated guard reverted",
+ "files_touched": ["server.js"],
+ "hunks": 1,
+ "baseline_sha256_vs_prepatch_git_blob": "IDENTICAL (eaff7476...) - patch was built against the true current base, not a stale one",
+ "rebuilt_vs_committed": "IDENTICAL - nothing extra smuggled into the commit",
+ "disk_vs_committed": "IDENTICAL - no drift since",
+ "guards_preserved": [
+ "socket-less orphan pm2 daemon guard (existsSync rpc + lsof holder + God-daemon regex) intact",
+ "TK-10970 serialized pm2 wrapper (PM2_SERIALIZED_TS) still used, not bypassed",
+ "basic-auth gate intact (unauth /api/tickets -> 401 in 0.001s)"
+ ],
+ "nit": "exec is now an unused import in the child_process destructure (harmless)"
+ },
+ "root_cause_independently_corroborated": {
+ "method": "sample(1) of the LIVE pid 60904 for 10s under concurrent probing",
+ "SyncProcessRunner_samples": 0,
+ "before_per_ticket_evidence": "2531 of 3794 main-thread samples in SyncProcessRunner",
+ "conclusion": "the execSync-in-timer blocking class is GONE from the running process"
+ },
+ "false_green_check_specific_to_this_patch": {
+ "risk": "getRunning now always answers from cache (serve-last-good); if the async refresh never completed the board would show stale pm2 data forever with a 200 and no error",
+ "test": "polled /api/running every 8s for 100s",
+ "result": "NOT FROZEN - at advanced 20:13:08 -> 20:13:19 -> 20:13:33 -> 20:13:51 -> 20:14:01 -> 20:14:16, sessions varied 142/145/146/147",
+ "serialized_jlist_timing": "1482ms and 1787ms, far inside the 22000ms timeout",
+ "note": "at lags real time by 5-15s by design (a request returns the previous refresh); staleness is visible to the client via the at field"
+ },
+ "functional_proof": {
+ "unauth_api_tickets": "401 in 0.001014s",
+ "auth_api_tickets": "200, 15036125 bytes, 1653 tickets parsed, contains TK-11372",
+ "api_running": "200, 145 pm2 entries, live session count",
+ "tk_round_trip": "tk log wrote in 0.42s; readable back via tk show AND via the HTTP API"
+ },
+ "residual_NOT_this_ticket": {
+ "observation": "healthz still stalls to 3.7s worst of 60 probes while p50 is 1ms",
+ "named_cause_from_stack": "Builtins_ArrayMap -> Builtin_JsonParse -> JsonParser::ParseJsonObject inside the HTTP request handler (4253/8139 main-thread samples), plus Scavenge GC churn from the string allocation",
+ "meaning": "per-request re-parse and re-materialization of the 32MB event log - the uncached synchronous ticket reducer",
+ "already_filed_as": "TK-11506 (sibling TK-11499 for the uncached installedSkills scan)",
+ "honest_statement": "the TK-11372 defect class is fixed and proven gone; the service is functional but not yet fast under load, and the remaining stalls belong to a different, already-filed defect"
+ },
+ "cost": "$0 (local)"
+}
← 1ccfb2d0 board: add ⤓/⤒ icon toggle to flip nav bar above/below toolb
·
back to Ticket System
·
auto-data-snapshot: 2026-09-11T13:23:02 (1 data files) — dat cf1f4bfb →