Skip to content
fitme·story
Case studies
v7.8.3 · 6 min read · 2026-05-27

HADF Phase 2-bis — Cross-Sub-Exp Synthesis (3 Sub-Experiments)

Successor to HADF Phase 2 (slot 22b). Three pre-registered sub-experiments test orthogonal aspects of the HADF dispatch claim: Sub-exp 1 (cloud generalization, silhouette ≥ 0.5), Sub-exp 2 (cloud-vs-local separability, KS p < 0.01), Sub-exp 3 (Bedrock vs Anthropic-direct same-model routing, signature delta > 2.0). Sub-exp 3 is the falsification test for the central HADF claim. Skeleton authored 2026-05-27 as Block C pre-work; verdicts populate as each sub-exp closes (Sub-exp 1 ~2026-05-28, Sub-exp 2 ~2026-05-31, Sub-exp 3 ~2026-06-05). **CLOSED 2026-06-05 — all four sub-experiments PASS: Sub-exp 1 (silhouette 0.70), Sub-exp 2 (KS p≪0.01), Sub-exp 3 (signature_delta_ratio 2.89 > 2.0 — the falsification test SURVIVES), Sub-exp 1B (silhouette 0.98, anchor drift 0.19σ). Synthesis verdict: HADF dispatch claim CONFIRMED — streaming signatures distinguish substrate, provider, and routing layer. Scope honesty: this confirms the SENSING layer; the dispatch ACTING layer (does routing on signatures improve outcomes?) is unproven and gated on RQ4 (Phase 3B).**

cloud silhouette (k=5)
0.5566
n=700, 2 endpoints. The original cloud-generalization signal.
cloud silhouette (k=5)
0.7003
n=2,600, 4 endpoints / 2 providers. One of 4 orthogonal sub-experiments — all PASS.
What do T1 / T2 / T3 mean?
T1Instrumented — from a ledger/commit
T2Declared — stated, not measured
T3Narrative — estimate from memory

TLDR

Successor to HADF Phase 2 (cloud fingerprinting measurement, silhouette 0.5566 at k=5 over n=700, shipped 2026-05-01). Phase 2-bis tests three orthogonal aspects of the HADF dispatch claim via independent pre-registered sub-experiments:

  1. Sub-exp 1 — Cloud generalization: Does the Phase 2 single-endpoint signature reproduce across multiple cloud providers? (silhouette ≥ 0.5 with cluster count ≥ 3 across 9 endpoints, narrowed to 4 at smoke-fire)
  2. Sub-exp 2 — Cloud-vs-local separability: Can we distinguish Ollama-on-M2 from cloud endpoints by signature alone? (KS-distinguishability p < 0.01)
  3. Sub-exp 3 — Same-model routing (FALSIFICATION TEST): Does AWS Bedrock haiku-4-5 fingerprint differently from Anthropic-direct haiku-4-5? (signature_delta_ratio > 2.0; the central HADF dispatch claim stands or falls here)

Each sub-exp ships an independent verdict. Sub-exp 2 launches only if Sub-exp 1 passes; Sub-exp 3 only if Sub-exp 2 passes. The synthesis (this case study) combines all three verdicts into a confirmed / partially-supported / refuted disposition.

Status

COMPLETE — all four sub-experiments closed 2026-06-05, all PASS, HADF dispatch claim CONFIRMED. The skeleton (authored 2026-05-27, Phase E Day 6, before any data) was filled in mechanically at closure, exactly as designed — no after-the-fact narrative drift.

Sub-expVerdictMetric
1 — cloud generalization✅ PASSsilhouette 0.70
2 — cloud-vs-local✅ PASSKS p ≪ 0.01
3 — routing falsificationPASSsignature_delta_ratio 2.89 (> 2.0)
1B — cross-window drift✅ PASSsilhouette 0.98, anchor drift 0.19σ

The keystone result: the same model (claude-haiku-4-5) behind two routing layers — Anthropic-direct vs AWS Bedrock — yields distinguishable streaming signatures (Bedrock TTFT 1.468 s vs Anthropic-direct 0.868 s). The central HADF falsification test survives.

Scope honesty: this confirms the sensing layer — signatures are detectable and discriminative. It does not establish the acting layer (that routing on signatures improves a real dispatch outcome). Distinguishability ≠ actionability; that question is RQ4 (HADF Phase 3B), pre-registered separately. HADF Phase 3A (sensing/observability) is greenlit for activation; routing logic stays gated until RQ4.

Reference

Verdict logic preview (populated at synthesis time)

Sub-exp 1Sub-exp 2Sub-exp 3Synthesis disposition
PASSPASSPASS (delta > 2.0)HADF dispatch claim CONFIRMED
PASSPASSINCONCLUSIVE (1.0 ≤ delta ≤ 2.0)HADF dispatch claim PARTIALLY SUPPORTED
PASSPASSREFUTED (delta < 1.0)HADF dispatch claim REFUTED on routing axis
PASSFAILn/aHADF dispatch claim PARTIALLY SUPPORTED (cloud generalization only)
FAILn/an/aHADF dispatch claim CANNOT be confirmed by this measurement

Observed combination so far: Sub-exp 1 PASS / Sub-exp 2 PASS / Sub-exp 3 pending (gated on AWS Bedrock access). Synthesis disposition is held until Sub-exp 3 closes.

Sub-exp 2 — Results (closed 2026-06-02): PASS

Research question: Can we distinguish Ollama-on-M2 from cloud endpoints by signature alone? Verdict: PASS — local execution is distinguishable from both cloud anchors at p ≪ 0.01 on both streaming metrics. Hypothesis (RQ2) confirmed.

Collection ran 2026-05-30T04:50Z → 2026-06-02T02:00Z (18 fires, 1 endpoint llama3.2:3b on M2, 50 calls/fire), cost $0 (local inference). Verdict computed against the lock-intact pre-registration (sha256 d4ec4680…, lock sidecar verified) — pass criteria fixed before data landed: KS p ≤ 0.01, yield ≥ 250 (kill floor 200).

Pass criteria vs observed (all T1 — instrumented from raw .jsonl):

MetricThresholdObservedPass
n_valid (Ollama)≥ 250 (kill floor 200)800 / 900 dispatched (88.9% valid)
KS p — TTFT vs openai/gpt-4o-mini≤ 0.01KS 0.9362, p ≈ 0 (< 1e-300)
KS p — TTFT vs anthropic/claude-haiku-4-5≤ 0.01KS 0.9812, p ≈ 0 (< 1e-300)
KS p — TPS vs openai/gpt-4o-mini≤ 0.01KS 0.7492, p = 7.39e-273
KS p — TPS vs anthropic/claude-haiku-4-5≤ 0.01KS 0.9100, p = 9.88e-324

Full distribution summary (Ollama n=800; each cloud anchor n=1300) [T1]:

EndpointTTFT_s (min / p25 / med / p75 / max)TPS (min / p25 / med / p75 / max)TPS std
Ollama llama3.2:3b (M2, local)0.140 / 0.147 / 0.179 / 0.227 / 5.00523.1 / 32.8 / 43.8 / 45.1 / 46.26.9
openai/gpt-4o-mini (cloud)0.000 / 0.001 / 0.021 / 0.055 / 32.20.3 / 46.2 / 65.4 / 102.1 / 3984.2277.2
anthropic/claude-haiku-4-5 (cloud)0.594 / 0.909 / 1.099 / 1.417 / 34.76.3 / 66.4 / 83.3 / 152.9 / 27638.2951.2

What the numbers say. Two structural features carry the separation:

  1. Time-to-first-token. Ollama's 0.179 s median sits cleanly between openai's near-instant 0.021 s (edge-served, no model-load latency) and anthropic's 1.099 s. The local 3B model has no network round-trip but a real prompt-eval step — landing it in its own latency band.
  2. Throughput variance. Ollama's tok/s is tightly clustered (std 6.9, almost the entire mass in 32–45 tok/s), while both cloud endpoints show extreme variance (openai std 277, anthropic std 951) from short-output tok/s inflation and multi-tenant scheduling jitter. A local M2 inference loop is consistent in a way cloud serving is not — and that consistency is itself a fingerprint.

Cloud-vs-local separability confirmed. Sub-exp 3 (the same-model routing falsification test) is unblocked on this axis; its launch is gated separately on AWS Bedrock access.

Source: verdict artifact phase2bis-subexp2-verdict.json · locked prereg preregistration-phase2bis-subexp2.json. Independent re-check of the raw .jsonl + verdict math is in scope for External Audit #2 (2026-06-12).

Honest disclosures
  • Skeleton authored 2026-05-27 (Phase E Day 6) as Block C task C16 pre-work; verdict cells populate as each sub-exp closes. The skeleton exists to ensure the synthesis is mechanical-not-creative at closure — every analytical section is pre-structured before data lands, eliminating after-the-fact narrative drift.
  • Sub-exp 1 launched 2026-05-25 with a narrowed 4-endpoint matrix (openai gpt-4o-mini + gpt-4o + anthropic claude-haiku-4-5 + claude-sonnet-4-6) instead of the originally-specified 9 endpoints. Operator decision 2026-05-25 per smoke-fire findings (Gemini reasoning-model TTFT distortion; placeholder API keys not minted for Vercel AI Gateway + Mistral + xAI). Sub-exp 1B queued for full 9-endpoint follow-up after key acquisition + reasoning-model investigation.
  • Sub-exp 2 and Sub-exp 3 prereg verdict_thresholds carry suggested values (KS p < 0.01 / delta_ratio > 2.0) — operator finalizes at each go/no-go ceremony. The TBD fields in §3.B and §3.C of this case study mirror those pending decisions.
  • Sub-exp 3 is structurally different from Sub-exps 1+2: it is a FALSIFICATION test for the central HADF dispatch claim. Same model id (anthropic.claude-haiku-4-5) served by Anthropic-direct + AWS Bedrock; if signatures differ enough to clear within-provider noise floor → HADF dispatch premise holds; if indistinguishable → HADF refuted on this metric. The verdict_thresholds.fail_if_signature_delta_ratio_lt is the pre-registered binary against which the central HADF claim stands or falls.
  • External Audit #2 is scheduled 2026-06-12 and covers raw .jsonl data integrity + verdict scripts + this case study + anchor-drift check output. No independent reassessment has occurred yet.
Kill criterion · not fired
  • Any sub-exp tripped per-sub-exp kill criteria (n_valid floor, rate-limit cascade, mid-collection protocol change, wrapper preflight failures) — see per-sub-exp prereg JSONs
  • Sub-exp 3 anchor drift > 2σ from Sub-exp 1 — invalidates routing-test comparison (halt + investigate before drawing routing conclusions)
  • Sub-exp 3 signature_delta_ratio < 1.0 — HADF dispatch premise REFUTED on this metric (operator decides claim revision)
Deferred items
Sub-exp 1 verdict-script run + case studyledger: gated on 3-day collection window close ~2026-05-28Block B task B13.5 — verdict-script run executes silhouette + cluster count + threshold check
Sub-exp 2 launch + verdictledger: CLOSED 2026-06-02 — verdict PASS (n_valid 800; KS p ≪ 0.01 vs both cloud anchors)Block B task B14 done — Ollama local fingerprinting; §3.B + this showcase populated
Sub-exp 3 launch + verdictledger: gated on Sub-exp 2 verdict = PASSBlock B task B15 — Bedrock vs Anthropic-direct routing test; prereg fill-in ready at #507
Cross-sub-exp synthesis (this case study) finalizationledger: gated on Sub-exp 3 closure ~2026-06-04Block C — populates §3.A, §3.B, §3.C verdicts + §4 anchor-drift + §5 overall HADF claim status
External Audit #2ledger: scheduled 2026-06-12 per audit substrateIndependent operator reviews raw .jsonl + verdict scripts + this case study