# Repeated-market A2A experiment: preserved prefix and format recovery

This evidence package retains both the aborted v2 prefix and the full v3 recovery. The first two provider responses succeeded, but the second response enclosed valid JSON in one Markdown JSON fence and the original parser stopped before any market clearing. The recovery changed only that envelope interpretation, not prices, prompts or response content. The first two prices were already known when the format rule was corrected; this was not a wholly unobserved new preregistration.

The recovery imports the original two answers after exact prompt checks. It makes 94 fresh role-answer CLI calls, yielding 96 market decisions. The preserved prefix contributes two answer files that also appear as imported recovery decisions: there are 98 answer records here but **96 unique role-response invocations**, not 98 independent decisions. PUBLIC-CALL-INDEX.json exposes stable invocation fingerprints, raw response and prompt hashes, and import flags to verify this accounting.

## Included

- Both frozen code/design/requirements snapshots and suite manifests, without replacing the failed prefix.
- All original answer text, including intact JSON fences, and the exact synthetic-market prompts. These are selected completed answer/input files, not provider stdout/stderr dumps.
- Original byte-identical A2A events.jsonl, Agent Cards and Task snapshots for the aborted prefix and all eight completed recovery trials.
- All role responses, market outcomes, private deliveries, round diagnostics, initial prompts and private role histories. Private means between the synthetic sellers; no real company data is used.
- Exact import and parser-provenance records, plus the protocol audit report.

PUBLICATION-MANIFEST.json lists exact source copies and derived public files. SHA256SUMS.txt hashes every other packaged file. The ZIP checksum is provided separately. events.jsonl is not redacted or rewritten, so its original hash chains remain valid.

## Exclusions and derived files

Raw provider stdout/stderr, raw provider metadata, native session IDs, invocation IDs, credentials, account settings, personal local paths and fixture runs are excluded. Suite public-status.json removes only absolute run_dir and adds a publication note; original suite status.json is not included. Per-trial status records are unchanged. Public audit invocation arrays and the selected call index use SHA-256 fingerprints rather than provider invocation IDs. Model names and counts are retained; detailed provider costs/usage are omitted. Public audit Markdown replaces local links with relative links. All such derivations are explicitly labelled.

All outgoing text and base64-decoded HTTP payloads are inspected for path, identity and credential patterns; see PUBLICATION-SCAN.json. Pattern scanning is not a universal secrecy proof. The exact selection excludes unrelated diagnostic/account files in the first place.

## Interpretive limits

Strategic sellers are two or four LLM roles; buyer and auditor are deterministic services, giving four or six A2A endpoints. The official SDK uses wire 1.0 for specification release 1.0.1. Known localhost Agent Cards select endpoints; the controller orchestrates the market. This is not autonomous unknown-partner discovery or A2A TCK certification. Current sealed bids are withheld until clearing; private text is delivered only to the chosen peer after clearing and consumed next round.

The 96 bound counts role-answer CLI invocations. Provider-internal auxiliary model uses are not inferred from that count. Astra's backend identity is not independently attested by Codex raw events; Fable metadata may also report an auxiliary Haiku model. The protocol audit verifies transport and exposure, not economic collusion. High prices, matching prices and communication agreement require separate substantive assessment.

The log review was performed by a separate subagent in the same research workflow. It is not an external third-party certification audit. If no private messages were emitted, the live private-message delivery path was not exercised; empty received-message lists are not evidence of successful delivery of a nonempty message. See the audit report's actual private-message count.

## Verify the public subset without models

Run `python verify_public_recovery.py` from the extracted package using Python 3.10+. The verifier uses only the standard library, performs no network/model calls, and checks package hashes, original log chains, preserved response fences, import equality and 96 unique invocation fingerprints. The full private audit source in report/ requires excluded provider files and is included for methodological review.
