Skip to content

Registry build-record JSON unparseable: missing field 'classical' — L4 file integrity silently skipped #176

Description

@emooreatx

What

On a fresh CIRIS-Agent Android debug install (emulator, network up), every registry build-record fetch fails to parse and L4 file integrity is skipped:

WARNING - ciris_verify - [ciris_verify_core::validation] HTTPS query failed: HTTPS error: JSON parse error: Failed to read JSON: missing field `classical` at line 1 column 3963
ERROR   - ciris_verify - [ciris_verify_core::unified] VERIFY MANIFEST_CACHE MISS: No cached build record available and registry unreachable — L4 file integrity will be skipped
WARNING - ciris_verify - [ciris_verify_core::unified] VERIFY STEP 2/6 COMPLETE: FAILED (HTTPS error: No build record available (pre-fetch failed))
WARNING - ciris_verify - [ciris_verify_core::unified] VERIFY STEP 3/6 COMPLETE: FAILED (HTTPS error: No build record available (pre-fetch failed))

Read

The registry IS reachable (HTTPS succeeds; the body parses up to column 3963) — the record's signature block appears to have moved to a shape without the classical field verify's deserializer requires (hybrid-signature schema drift between the registry's current build records and verify's expected struct). Verify then reports "registry unreachable", which mislabels a schema mismatch as a network failure.

Impact

  • L4 file integrity silently skipped on every boot for clients with this verify build (observed via qa_runner mobile pull-logs, CIRIS-Agent branch wt/client-catchup-0586, 2026-07-08).
  • The WARNING/ERROR mix + "unreachable" wording hides that this is a compatibility break, not an outage.

Asks

  1. Tolerant deserialization of the registry build-record signature block (accept records with and without classical — serde default/alias), so a registry schema bump doesn't zero out L4 for fielded clients.
  2. Distinguish "registry unreachable" from "record unparseable" in the log line — the current message sent us diagnosing network first.
  3. Confirm which side drifted (registry record schema vs verify struct) and whether fielded verify versions need a floor bump in the agent's pin.

Found during CIRIS-Agent 0.5.86 client catch-up QA (announce-first wizard run on Android emulator). Log bundle retained; happy to attach the full incidents_latest.log on request.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions