diag(quic-interop): boot log + build-id verify deployed image is fresh

The [batch]/[interop] traces aren't appearing in the user's runs
even after rebuild. To distinguish 'env var not set' from 'binary
doesn't have the code', emit a [boot] line at startup that:

  1. Reports the QUIC_INTEROP_DEBUG env var value
  2. Reports whether writerDebugEnabled was flipped on
  3. Includes a build-id constant from WriterDebug.kt

If the user's run shows '[boot] DEBUG=1; ... build_id=2026-05-07-
batch-log-v1', we know the latest debug code IS deployed. If the
boot line is missing OR shows an older build_id, the docker image
served stale bytecode (gradle/docker layer caching) and a clean
rebuild is needed.

Inspect script now greps [boot] and surfaces it BEFORE the rest of
the writer-side debug section.
This commit is contained in:
Claude
2026-05-07 14:02:16 +00:00
parent db6e7d7d11
commit f13d1ae1eb
3 changed files with 22 additions and 2 deletions
@@ -85,8 +85,15 @@ private const val MULTIPLEX_PARALLELISM = 64
fun main() {
// Single env-var check, propagated to library code that opts into
// verbose tracing only when this is set.
if (System.getenv("QUIC_INTEROP_DEBUG") == "1") {
val debugEnv = System.getenv("QUIC_INTEROP_DEBUG")
if (debugEnv == "1") {
com.vitorpamplona.quic.connection.writerDebugEnabled = true
System.err.println(
"[boot] DEBUG=1; writerDebugEnabled=true; build_id=" +
"${com.vitorpamplona.quic.connection.WRITER_DEBUG_BUILD_ID}",
)
} else {
System.err.println("[boot] DEBUG=${debugEnv ?: "(unset)"} writerDebugEnabled=false")
}
val role = System.getenv("ROLE") ?: "client"