WP11 - Safety hardening + closed-loop guidance: clearing-abort law, reachability screen, keep-out 0 of 500 [L0, ds-v1]#19
Merged
Merged
Conversation
…C++ core) - relmotion: bounded_coast_min_range closed form (drift-free coast minimum) - mission: compute_clearing_abort / clearing_abort_for - 3-stage escalation: (1) drift-null baseline accepted only if the analytic ellipse clears keep-out + abort_clear_margin_m; (2) bounded-clearing radial reshape (closed-form u* = x0^2/g - g/4); (3) two-impulse radial retreat hop with an analytic terminal-ellipse guarantee. Pure along-track opening drift evaluated and REJECTED (oscillation ~4dv/n km-scale swamps the geometry; documented negative result). Legacy compute_safe_abort untouched (F1/R15) - campaign: keep-out screen uses the clearing law; schema 1.0 -> 1.1 (additive: dispersion_set_id=ds-v1, worst_abort_clearance_m); RNG draw order byte-identical (bit-exact Python replay verified pre-push) - guidance (new): mode machine (far approach -> hold -> sync-hold -> final approach -> contact -> retreat), two-impulse CW hold transfers, glideslope-with-floor final approach (contact speed produced by guidance, not merely gated), LOS cone, reachability screen at every impulse - main_metrics: WP11 reference rows + generated/wp11_guidance_modes.md - tests: forensic14 (the 14 WP10c-classified states: legacy law reproduces the mechanism analytically, clearing law clears all 14), guidance (closed-form cross-validation, escalation ladder, L0 flight demo) NOTE: committed generated/ + evidence/ artifacts are STALE in this commit (no local C++ toolchain); the reproducibility gate is expected RED here. The re-baselining commit adopts CI's regenerated artifacts under the full R15 protocol (BEFORE/AFTER + evidence changelog) before this PR is merged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…fts) The WP11 Config/header insertions shifted the file:line locations of pre-existing PLACEHOLDER marks; total mark count is unchanged (95) and no quoted number moved. Pure inventory-table renumbering, regenerated by tools/evidence/make_evidence.py against the still-committed (pre-WP11) CSVs so ctest 'evidence' is green and CI reaches the reproducibility gate (whose expected failure uploads the regenerated campaign artifacts for the R15 re-baselining commit). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Campaign artifacts adopted from CI run 28711955570 (Linux regeneration,
independently bit-exact-verified by a stdlib-Python replay of all 1000 runs:
0 mismatches across every replay-reachable column, and an independent
recomputation of every summary rate/interval/percentile):
- keep-out violations: 0.014 [0.007, 0.029] -> 0 of 500 per catalog
[L0: linear CW, dispersion set ds-v1, Wilson 95% upper bound 0.0076]
- the 14 formerly-violating runs continue past their aborts and end
dv_exhausted (215->222 / 222->229); gate_abort events 288->292 / 288->291;
abort stage usage: 562 Clean + 21 BoundedClearing, 0 RetreatHop, 0 Capped;
clearance floor 20.0002 m (= the design margin, by construction)
- legacy GNC pins byte-identical (28 reference_metrics rows unchanged);
7 new wp11_* guidance rows
Tools/docs in the same change (R15 protocol):
- forensics tool v2: WP10c report becomes the legacy-law ARCHIVE (CSV
byte-identical to WP10c, md reframed with the supersession note) +
new generated/wp11_abort_audit.{csv,md} (hard-gated replay, R14-tagged
zero with Wilson UB, stage usage, clearance distribution, abort_dv trade)
- evidence pack: R15 changelog section 11 archiving the superseded rate;
keep-out claim now R14-tagged; WP11 guidance bullet; stale statements
fixed; claims-audit extended (changelog + R14 tag enforced)
- README re-baselined (numbers verbatim from generated artifacts); modest
safety-wording upgrade per spec section 1 (R15-documented): 'passively-
safe approach design with clearing-verified aborts'
- spec v5 touches: section 2 interval rounding aligned to generated values;
WP15 baseline-release line added (owner-requested)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…section names WP10/WP11 per spec v5 section 9) Two of the reviewer's three WARNs fixed here; the third (R14 tag in the generated campaign-summary notes column) is outside R14's literal scope (README/docs/evidence pack all carry the tag) and is deferred to the next WP that touches campaign.cpp - documented in the PR body. 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.
WP11 (adsc-specification-v5.md section 6) - targets the FORENSICALLY CONFIRMED mechanism
WP10c refuted D13's capped-abort hypothesis: all 14 violations were CLEAN aborts whose drift-null (bounded) safety ellipse geometrically intersected the keep-out sphere. WP11 eliminates exactly that mechanism.
Design (named elements per the WP11 completion criteria)
compute_clearing_abort/clearing_abort_for): 3-stage escalation - (1) drift-null baseline accepted only if the ANALYTIC post-burn ellipse (bounded_coast_min_range, closed form from the CW STM) clears keep-out + a 20 m design margin; (2) bounded-clearing radial reshape, closed-formu* = x0^2/g - g/4from the sufficient condition|y_c| - 2*rho >= R_clear; (3) two-impulse radial retreat hop with an analytic terminal-ellipse acceptance (used for inside-sphere retreat); legacyCappedhonesty preserved past the dv budget. Addresses the WP10c mechanism: clearance is now analytic and accepted, never assumed from boundedness.generated/wp11_guidance_modes.md(design note) andgenerated/wp11_abort_audit.mdsection 5 (abort_dv trade table: the cap is not the binding constraint anywhere in 0.5-4.0 m/s).guidancemodule, extends the WP3 phases per R1): far approach -> hold -> sync-hold -> final approach -> contact -> retreat; two-impulse CW hold transfers (exact STM boundary-value solves); glideslope-with-floor profile so the contact speed is PRODUCED by guidance (0.1000 m/s) with the 0.15 m/s gate retained as an independent check - closing the long-standing 'gate, not guidance' known limit at L0; LOS cone; mode machine + per-mode entry/exit/abort conditions emitted from the code itself togenerated/wp11_guidance_modes.md; abort feasibility demonstrated from every mode in the flown profile.Results (all quoted numbers regenerate; CI byte-identity gate green)
tests/test_forensic14.cpp+ the Python replay gates): the legacy law reproduces all 14 WP10c violations analytically from the pinned states; the clearing law clears every one (analytic min > 200 m, |dv| <= 2 m/s); the full campaign path replays all 14 (catalog, run_index) pairs clean.R15 protocol - BEFORE/AFTER (per catalog; BEFORE = v0.10-phase0-baseline tag)
Reason (algorithmic, deliberate): the campaign keep-out screen now runs the clearing-abort law instead of the legacy drift-null law. Dispersions unchanged -
dispersion_set_id = ds-v1now stamped in every runs-CSV row (schema 1.0 -> 1.1, additive, with schema.md + all consumers updated in this PR); seed-for-seed comparison verified: the full 1000-run draw stream (run_seed, solar, closing speeds) is byte-identical to the baseline tag, and EXACTLY the 14 forensic runs changed outcome. Evidence-pack changelog (section 11) archives the superseded value.Verification
Also in this PR (owner-directed)
wp11_abort_audit.{csv,md}audits the committed campaign (hard-gated replay).Spec-vs-repo observations (reported, not improvised around)
🤖 Generated with Claude Code