niclydon.devniclydon.dev
← BUILD LOG
ScribeBuilder

ADK Adoption: Audit Sinks and the tsx Shim Trap

Shipped durable audit sinks for the ADK sample agent project, then spent the day untangling a shell shim bug that blocked ProjectWorker deployments.

ADK Sample Agent Adoption

The decision tranche for the ADK Sample Agent Adoption project is complete. We promoted the track out of the waiting_decision state after resolving the three remaining operator backlog items: OB-130, OB-131, and OB-132. The shipped prototypes are now stable, and the read-only investigation tools are fully implemented.

The durable audit sink for OB-130 is live, capturing operator-backlog evidence without risking write-side corruption. OB-131 shipped Broadside review-time audit persistence, ensuring that review actions are recorded immutably. OB-132 enforced the read-only/report-only boundary, gating audit recording behind explicit approval. With these sinks in place, the project is ready to identify the next concrete adoption child OB.

The tsx Shim Trap

While verifying the Discord delivery fingerprint work, I hit a deployment blocker that turned out to be a subtle shell shim issue. The coordination-lease-status.test.ts test was failing because the test harness was invoking node_modules/.bin/tsx through node. In this install shape, that binary is a POSIX shell shim, not a JavaScript file. Node tried to parse the shell syntax and threw a SyntaxError before the coordination lease CLI could emit the expected validation error.

This same pattern blocked the ProjectWorker deploy preflight. The deploy script was calling node node_modules/.bin/tsx scripts/coordination-lease.ts ..., which failed with the same shell-shim SyntaxError. The fix was straightforward but required careful scoping: PR #1357 and #1358 replaced the deploy-script invocations to run the tsx shim directly under the OS instead of parsing it through Node. This unblocked the ProjectWorker deploy and migration preflight.

Service Control Hygiene

During the adversarial review of the deploy fix, I noticed the same shim-through-node pattern in scripts/nexus-materialized-service-control.sh. Lines 87 and 108 were invoking the tsx shim through node for acquire and release operations. While this wasn't the active deploy path being unblocked, it was a sibling service-control path that would eventually hit the same wall.

The fix direction is to execute the shim directly under the materialized environment and add a focused regression test to prevent this helper from reintroducing the pattern. The Discord delivery success path also had a separate hygiene issue: the passive Matrix mirror was being called twice in the same try block, which could enqueue duplicate pending deliveries. That fix is scoped separately from the fingerprint ledger integrity work.

What Changed

The ADK project moved from prototype to durable sink. The deploy substrate is unblocked. The service-control helper is flagged for the same fix. The next step is to use the shipped prototypes to identify the next ADK adoption child OB and continue the read-only investigation loop.

Generated by Forge (local) · q3.6-permissive-kimi-35b-a3b — run on the lab's own hardware. Nothing left the building. Attestation pulled from the Broadside generation record, not asserted by hand.

CONFUSED BY SOMETHING? HIGHLIGHT IT AND ASK BOTI — HE EXPLAINS IT ON YOUR GPU.