WP10c - Keep-out violation forensics: read-only replay; D13 hypothesis REFUTED (clean-abort ellipse mechanism)#17
Merged
Merged
Conversation
… refuted)
- tools/forensics/make_forensics.py: Python-3-stdlib exact replay of the
committed WP5 campaign (mt19937_64 + Box-Muller + SplitMix64/FNV-1a draw
stream, CW abort-coast physics with the campaign's coarsened screen);
hard-gates itself on a 1000/1000-run cross-validation against every
replay-reachable column of wp5_campaign_runs.csv before classifying
- generated/wp10_violation_forensics.{csv,md}: forensic classification of
all 14 violating runs. Finding: D13's capped-abort-residual-drift
hypothesis is REFUTED - all 14 violations are CLEAN aborts (max impulse
0.306 m/s vs the 2.0 m/s cap, zero residual drift); actual mechanism is
the drift-nulled safety ellipse through a dispersed initial state
(|x0| 62.6-142.4 m) intersecting the 200 m keep-out sphere. Near-miss
margins are continuous down to 10.8 m (WP11 input)
- tools/forensics/test_forensics.py registered as ctest 'forensics':
determinism, committed == regenerated, taxonomy, claim discipline
- regenerate_all.sh: forensics inserted as step [6/9]; outputs go through
the normal SHA reproducibility gate
- no control-law or campaign code changes (WP10 is behavior-change-free);
no quoted number changed; adversarial-verifier: SHIP (9/9 + independent
1000-seed recomputation)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WP10c (Phase 0) - keep-out violation forensics per adsc-specification-v5.md section 6
Read-only analysis tool + committed artifacts, through the normal regeneration pipeline. No control-law or campaign code changes (WP10 is behavior-change-free by definition).
What it does
tools/forensics/make_forensics.py(Python 3 stdlib, R9) replays the committed campaign exactly: per-run seeds (SplitMix64(master_seed XOR FNV1a64(catalog), run_index)), thestd::mt19937_64+ Box-Muller draw stream inrun_one_mission's exact draw order, the deterministic Delta-v/kit bookkeeping, and thecompute_safe_abortCW coast under the campaign's coarsened screen (1 period at dt = 8 s).generated/wp10_violation_forensics.csv(one forensic row per violating run: dispersed initial state, commanded impulse, capped flag, post-burn drift, coast minimum + time, analytic ellipse cross-check, classification) and.md(replay recipe, cross-validation, findings, near-miss context, honest limits). Registered as ctestforensicsand as regenerate_all step [6/9], so the artifacts sit behind the same SHA reproducibility gate as everything else.Finding: the D13 working hypothesis is REFUTED
D13 hypothesized the primary violation mechanism as capped-abort residual drift. The data says otherwise:
x = x0 cos nt, y = y0 - 2 x0 sin nt, z = z0 cos ntthrough the dispersed abort-start state; every violator has |x0| = 62.6-142.4 m (1.6-3.6 sigma of the 40 m dispersion), swinging the coast to within 53-200 m of the target at a quarter or three-quarter orbit (sign of x0 predicts which - confirmed for all 14).abort_dvauthority alone addresses zero of the observed violations.Per v5 D13, this hypothesis-vs-data outcome is exactly what WP10 forensics was for; WP11's completion criterion ("every WP10-classified violation mechanism addressed by a named design element") now targets the REAL mechanism. Negative results are first-class deliverables (v5 section 10).
Verification
dv_used = 8a + 4g + 3(a-g) + 5r + 15(a-1)exact on all 14 rows, and constant-mirror audit against campaign.hpp/mission.hpp/decay.cpp.Spec-vs-repo observations (reported, not improvised around)
dispersion_set_idstamping into campaign CSVs as a future protocol element; it does not exist in the committed schema and adding it is a code/schema change outside WP10's no-behavior-change scope. The forensics md therefore scope-tags its statements as "[L0: ... WP5 committed dispersion set as configured in CampaignConfig]" rather than by a set id.Completion criteria (v5 section 6, WP10): forensic classification of ALL violating runs (14/14) - met; replay recipe (seed + config) documented (md section 1) - met; citation-fill merged (PR #16) - met.
🤖 Generated with Claude Code