Skip to content

methodology: preregistration for corrective Qwen3.6-vs-3.8 study (official-sampler fix, 6-seed crossover, clustered inference) - #47

Draft
Lightheartdevs wants to merge 16 commits into
mainfrom
methodology/qwen-corrective-2026-08
Draft

methodology: preregistration for corrective Qwen3.6-vs-3.8 study (official-sampler fix, 6-seed crossover, clustered inference)#47
Lightheartdevs wants to merge 16 commits into
mainfrom
methodology/qwen-corrective-2026-08

Conversation

@Lightheartdevs

Copy link
Copy Markdown
Contributor

Preregistration boundary - methodology before results

Corrects the defects that put PR #46 on hold. Committed BEFORE any new result ingestion; the 802-cell freeze in #46 is relabelled exploratory (insertion-only notices).

  • Card evidence (protocol/CARD-EVIDENCE.md): both models share the identical official non-thinking sampler T0.7/top_p0.8/top_k20/min_p0/pp1.5/rp1 (Qwen3.6-27B @ 6a9e13bd README L635-637; Qwen3.8-27B @ 1d4bf0f2 L252-253). generation_config.json on both is the thinking profile - the prior V36 vendor-no-think arm ran the thinking sampler no-think and is mislabeled; the prior vendor-vendor contrast is mode/sampler-confounded.
  • PREREGISTRATION.md: arms (official-nothink PRIMARY / official-think with Qwen3.8 xhigh-only + preserve_thinking / diag-t03 exploratory / both-model Q4-Q8 quant pilot), six fixed seeds 101/211/307/401/503/601, Tower1-Tower3 artifact crossover at 500 W, fixed N, automated-only termination, primary loop metric = consecutive exact run >=30 over (tool_name, canonical_json(args)), paired-by-family+seed McNemar + family-cluster randomization as primary inference, cell-level Fisher descriptive-only, TOST +-10pp for any equivalence language, preregistered claim-language contract.
  • Graders v2 (D1 wc-w contract + tolerance band; D2 semantic risk matching; D3 brief-aligned ground truth incl. ticket 029) with unit tests - v1 untouched.
  • Frozen offline p3_market fixture (determinism gate PASSED; unfetchable targets ledgered in index.json).
  • Campaign tooling: automated loop terminator, deterministic delivery validator, row-level evidence manifest + balance checker, crossover runner with 500 W + ODS-drain preflights, per-cell --seed plumbing.

Results will follow in a separate PR that must reproduce via the committed pipeline.

🤖 Generated with Claude Code

User Name and others added 11 commits August 14, 2026 19:17
The p1_testwrite family produced discovery-only loops that shipped no
gradeable artifact. Add a strict system prompt, require CHANGELOG.md /
decisions.md / research.md via --require-files, and tighten the per-cell
stuck threshold to 250 iterations for that family only. Every other family
keeps the historical 500-iteration default and an empty require-files set,
so their behaviour is unchanged.

Ran live in the qwen3.8-27b-q4-t1-t3 campaign: p1_testwrite think-xhigh
went 0/3 to 3/3.
…6T14:23:09Z)

New entry benchmarks/qwen36-vs-qwen38-27b-2026-08: 802 frozen cells across 9
sampler/mode arms plus a 19-cell Q8_0 control, every number derived from the
frozen dataset mmbt-frozen-dataset-v2.csv (sha256 d2ed0bec..., stamped
2026-08-16T14:23:09Z; supersedes the 746-cell freeze #1).

Finding: the one large, robust effect is a no-think delivery regression, not
a capability gap. 3.8's identical-call-loop rate is +28.0 pp at the matched
sampler (Fisher p=4.9e-09) and +29.2 pp at the vendor points (p=1.1e-11),
disappears in think mode, and reproduces at Q8_0 (6/19, Wilson CI excludes
zero). Conditional on delivery and after grader corrections the models are
within noise at the matched sampler (86.0% vs 86.2% no-think); the
vendor-point conditional gap (~15 pp) survives correction and is left
unresolved.

Corrections: three verified MMBT grader defects, corrected in a
non-destructive overlay (165 per-cell records, digest e332cd2c...) - D1
word-gate tokenizer mismatch (62 counter-dependent verdicts invalidated),
D2 p3_pm keyword literalism (36 verdict flips; the repo's own tested fix had
been scoped to gemma4 cell names and never ran on these campaigns), D3
p2_triage brief/ground-truth contradiction (24 flips). grade.json, briefs
and ground truth untouched.

Retractions: five earlier conclusions from this investigation are retracted
in claims.yaml (operator-label abort rate, p3_pm and p2_triage family
results, the 9-3 family win split, the "default vs default" thinking
comparison). Seven new claims added, all provisional or held.
KNOWN-LIMITATIONS gains freeze-extract, replicate-depth, seed-correlation,
missing-think-arm, empty-hand-rating, p3_market, and Q8_0 quantization
caveats.

Also includes the campaign harness fix (bench_autopilot.py: scope sandbox
cleanup to the running arm instead of a global docker wipe) and the campaign
configs this investigation ran on (cfg-offspec.json,
qwen3.8-27b-q4-t03-matched-mmbt.json, fleet ensure-scripts).

Validation: verify_overlay.py green (idempotence, leniency invariant 0
violations over 686 cells, write guard, 853 protected files unmutated,
empty post-freeze-divergence ledger); build_results.sh deterministic
rebuild byte-identical across runs; validate_fixes.py 174 checks, 0
failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…rvives

The repo-wide "*.csv text eol=lf" attribute was normalizing the freeze-2
extract in the object store (python csv.writer emits CRLF terminators), so
the committed blob hashed f28a37b7... instead of the stamped
d2ed0beca5b68e9ca63788e452235f23a299af06639893f558bef19f784cf018 that every
document in the entry cites, and sha256sum on a fresh checkout would fail.
Pin the file binary per the existing policy for SHA-anchored corpus files
and recommit the verbatim bytes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… B1-B11 bias list)

House-convention audit doc for the entry: what is locked across both models, what
varies, what the comparison can and cannot support, and the full bias list -
including the three that cut against the headline (B2 residual quant thinness,
B5 matched-regime asymmetry, B11 unresolved recoverable workspaces). All numbers
at freeze #2 (802 cells, 2026-08-16T14:23:09Z).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ective study

This commit is the preregistration boundary — methodology before results. No
corrective-campaign cell has run; everything here is frozen before any new
result ingestion, per PREREGISTRATION.md (sha256
f5be6189bc3b43409dab3c070a29b43a42bcd2948446e1b1a81c20b87f489a0c).

- benchmarks/qwen36-vs-qwen38-corrective-2026-08/PREREGISTRATION.md: binding
  protocol (arms incl. PRIMARY official-nothink, six fixed seeds 101-601,
  Towers 1/3 host crossover at 500 W, automated loop terminator at exact
  consecutive run >= 30, fixed N, statistical analysis plan, claim-language
  contract).
- benchmarks/qwen36-vs-qwen38-corrective-2026-08/protocol/CARD-EVIDENCE.md:
  firsthand pinned-revision card fetches — both README sha256s (Qwen3.6-27B
  @ 6a9e13bd, Qwen3.8-27B @ 1d4bf0f2), the byte-identical
  generation_config.json bodies, and the exact quoted sampler lines with
  line numbers (3.6 L635-637; 3.8 L252-253, worked example L451-461).
- benchmarks/qwen36-vs-qwen38-27b-2026-08/findings.md, AUDIT.md: prepended
  EXPLORATORY notices per protocol section 9 — the V36 vendor no-think arm
  ran the thinking sampler in non-thinking mode (off-spec), and cell-level
  Fisher there is descriptive only. Notices only; no number altered; the
  802-cell corpus and its receipts remain untouched as exploratory evidence.
- tooling/graders/v2/: D1 wc -w counting contract (+-3% band), D2 p3_pm
  semantic R3, D3 p2_triage brief-aligned ground truth + brief-parsed
  vocabulary, CHANGES.md provenance, tests. v1 graders untouched.
- tooling/tasks/v2/: briefs stating the counting contract and the offline
  p3_market mirror; v1 briefs untouched.
- tooling/fixtures/: frozen offline p3_market corpus (36 snapshot pages +
  hashed manifest + unfetchable ledger), deterministic stdlib mirror, and
  the protocol section 3 determinism gate (passed).
- tooling/corrective/: loop terminator (metric identical to protocol
  section 4), delivery validator, evidence manifest + fixed-N balance
  checker, cell supervisor with quarantine/rerun ledger, crossover runner,
  arm configs, and 32 tests (64 green repo-wide with graders/v2).
  configs/family_artifacts.json corrected at freeze: artifacts the briefs
  explicitly mark optional are no longer delivery-gated (they would have
  misclassified brief-compliant deliveries as non-delivered).
- tooling/harness.py: --sandbox-network (default bridge = zero behavior
  change) + sandbox_runtime.sandbox_network receipt field, for the offline
  p3_market family.
- tooling/scripts/run_microbench.sh: BENCH_SEED -> --seed per-cell seed
  plumbing, BENCH_TASK_ONLY family allowlist, and resume-skip acceptance of
  automated terminal labels (loop-run30/timeout).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Lightheartdevs
Lightheartdevs marked this pull request as draft August 16, 2026 18:49
User Name and others added 5 commits August 16, 2026 15:03
… manifests for the corrective crossover

ensure-q36-tower1-only.sh / ensure-q38-tower3-only.sh mirror the phase_a
lane scripts line for line: identical llama-server flags, only the model
path + alias (and hosting tower) swapped, plus one added guard refusing to
start while the opposite-phase bench container is running (same GPU, same
remote loopback port 11434). Both verified read-only (--check) against the
live fleet: model file sha256s, image digest + revision, llama-server
binary sha256, GPU UUID, 500 W cap, tunnel unit sha256s all match the pins.

phase_a.json / phase_b.json are BENCH_SERVING_MANIFEST payloads
(harness.py record_environment embeds them and resolves the lane by
topology.lanes[].coordinator_port — resolution verified for both ports in
both manifests with the harness function itself). Both towers hold both
GGUFs locally; every model file sha256 was measured on both towers
2026-08-16 (q36 ff6941de…, q38 bee238bb… on tower1 AND tower3), so the
crossover swaps hosts, never artifacts. No model copies were needed.

run_crossover.sh --dry-run preflight against the current phase_a fleet:
power caps + phase_a endpoint aliases PASS; ODS drain FAIL (ods-llama-server
id 834bdb6c901d still serving on tower1, recorded for restoration);
phase_b endpoint checks FAIL until the swap is performed. Campaign not
started.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…l s.7)

BUILD ONLY: nothing here has been executed against the fleet. DSV4 keeps
serving; the window opens only after the orchestrator drains it.

- run_quant_pilot.sh: bounded-window runner. 2 models x {UD-Q4_K_XL, Q8_0}
  x seeds 101/211 x 12 families = 96 cells on Tower2's two RTX PRO 6000s,
  GPU<->model assignment crossed between the seeds; two co-residency waves
  per seed (Q4 then Q8), containers torn down between waves. Fail-closed
  preflight (refuses while deepseek-v4-flash-0731 runs; pinned hostname /
  GPU UUIDs / 500 W caps / drained memory / image Id+revision / free ports
  / model size+sha256), llama-server argv byte-identical to the historical
  ensure-*-only.sh lanes except --model/--alias, per-container pinned
  binary sha proof, per-seed serving manifest via BENCH_SERVING_MANIFEST,
  cells through cell_supervisor.py (loop terminator, 3 h ceiling, rerun
  ledger), window ledger + evidence manifest build/check at close, and the
  orchestrator-owned DSV4 restore reminder printed at window close.
- configs/quant-pilot.json: exploratory arm at the official-nothink
  sampler, thinking off; per-model quant + artifact pins verified today:
  q38 Q4 bee238bb / q38 Q8_0 a680f44a (local file hashed; byte-identical
  to unsloth/Qwen3.8-27B-GGUF Q8_0 at pinned rev fe1e2a23) / q36 Q4
  ff6941de (all three match the HF LFS oids at their pinned revisions).
- download-qwen36-q8_0.sh: written, NOT run. Qwen3.6-27B Q8_0 is absent
  from /mnt/bulk/models; pinned to unsloth/Qwen3.6-27B-GGUF rev 82d411ac,
  Qwen3.6-27B-Q8_0.gguf, 28595763424 bytes, sha256 f93f517f...; resume +
  size + full-sha256 verification before install into
  /mnt/bulk/models/qwen3.6-27b-q8_0/.
- evidence_manifest.py: expected_cells takes model-level quant with
  fallback to arm-level (default-preserving; existing manifest rows are
  byte-identical). Covered by a new test_evidence_manifest.py case; all
  33 corrective tests pass.
- README.md: quant-pilot machinery documented; the "deliberately NOT
  configured" limitation replaced with the runner pointer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ap for the corrective study

Firsthand nvidia-smi collection on tower1/tower3 (RTX 5090, driver 595.84,
cap 500 W of 600 W max) and tower2 (2x RTX PRO 6000, driver 595.58.03,
cap 500 W), plus the live-verified tunnel endpoint map (18101 -> Qwen3.8,
18103 -> Qwen3.6, /v1/models + 1-token completion probes). Part of the
PREREGISTRATION section 5 manifest/ pinning pass; model/image/binary pins
remain in tooling/deployments/qwen-corrective/phase_a.json + phase_b.json.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…configs -> phase_a serving manifest

Closes the campaign-blocking wiring gap recorded at fleet-prep: run_microbench.sh
hard-coded the v1 briefs and never passed --sandbox-network, so p3_market would
have run its live-web brief on the default bridge (PREREGISTRATION section 3
violation) and the six v2 families would have run briefs the v2 graders do not
parse (section 8). Default-preserving env wiring (BENCH_TASK_BRIEFS=v2,
BENCH_SANDBOX_NETWORK), set per cell by cell_supervisor.py (network for
p3_market only, per tooling/fixtures/README.md step 3). Verified by
dryrun_v2_wiring_capture.sh (5 scenarios incl. env-unset byte-identical
historical behavior) + existing dryrun_argv_capture.sh regression. Arm configs
gain the launch-time serving_manifest key (deployments README step 5, phase_a).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds the remaining section 5 pins for the corrective study: harness sha256 (HEAD and on-disk, matching), the full v2 grader set (incl. tests + ground truth), v1 exploratory-reference graders, task briefs (v1 + v2), p3_market fixtures + serve_fixtures.py, pinned card README/generation_config shas (copied from protocol/CARD-EVIDENCE.md), Q8_0 pilot model pins (q38 Q8_0 verified by direct hash on tower2; q36 Q8_0 remote pin from quant-pilot.json, not yet downloaded), llama.cpp image digest + llama-server sha (copied from phase_a.json), and the legacy-harness exclusion sha fdbc1584. Serving manifests, host inventory, and card evidence remain pinned at their already-committed paths, referenced not duplicated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant