Doctoral Research · Space Robotics Inspection with a Free-Flying Space Manipulator
A Doctoral Research Journal Aerospace Engineering

Singularities during trajectory tracking — a research study

Date: Jun 12, 2026. Question: what causes the sharp condition-number (κ) peaks during orbit tracking, how do we alleviate them, reduce error, smooth the trajectory, and harden the robot — and are we asking the right questions?

Companions: this study complements (does not repeat) the empirical forensics in generated_reports/GNC/Jun12_26/chain10_kappa_forensics_verdict.md (+ offline tables, codepath audit) and the chain docs tasks/daily_log/Jun12_26/chain10_kappa_forensics_{design,plan}.md. Those documents establish what happens in our data; this one asks what the literature says it is and what to do about it.

Sources: the 14 markdown-converted papers in docs/Most_Relevant/papers/ (citekeys below match folder names and docs/Most_Relevant/references.bib), the CHAIN_10 evidence set, the s_min_G/s_min_J study, the Phase 00 round-1 verdict, generated_reports/math/derivation_7dof.md, and a code audit of the live singularity-handling stack (file:line refs throughout). Method: per-source structured extraction by parallel readers, synthesis by the advisor, then an adversarial verification pass checking every load-bearing citation against its source file.


Legend (decode before reading)

Full vocabulary lives in wiki/terminology.md. The minimum to read this report:

term meaning
κ (kappa, kJ/kG) Condition number σ_max/σ_min of a Jacobian: 1 = motion authority evenly spread, large = lopsided/fragile. We log both kJ (arm map) and kG (full coordinated map). Lower and steadier is better.
σ₆ (sj, s_min_J) Smallest singular value of the arm’s task map — how much camera motion the weakest direction can still produce. Near 0 = near a locked-up (singular) pose. Healthy is comfortably above 0.025.
s_min_G Same idea for the full 12×(6+n) coordinated map Γ. Statistically interchangeable with σ₆ here (Spearman ≥ 0.9969 overall, derate decisions identical on every run — sming_vs_sminj_study.md).
derate Below the σ floor the controller deliberately slows the vehicle (ramp: scale 1.0 at σ ≥ 0.025 down to 0.25 at σ ≤ 0.005). The “derate fraction” headline = share of steps spent throttled.
kernel freeze 7-DOF only: below σ₆ = 0.025 the near-null joint direction is reused from the last healthy step instead of recomputed (it otherwise swings up to 69°/step).
pothole entry / dwell Entry = one crossing into σ₆ < 0.025; dwell = how long a visit lasts. CHAIN_10’s H4: ±2% speed moves the entry count (23/14/2), i.e. a seed effect, not an amplifier effect.
hot band The narrow stretch of orbit phase where one run’s κ peaks cluster. The 7-DOF’s band moves with ±2% schedule speed; the 6-DOF’s bands stay put.
aim clock The schedule deciding where along the inspection path the camera aims right now; driven by achieved orbit progress (progress_sync), not wall time.
run names r0_6dof_path = 6-joint arm on the orbit path (Phase 00 winner); r1_7dof_path = 7-joint redundant arm, same path; ±2% = path-speed variants of the same config.
Cliff’s δ Rank-based effect size between two sample sets (here: a driver’s values inside peak windows vs matched calm windows), running −1…+1: the fraction of peak-window samples larger than control samples minus the fraction smaller. Pre-registered “large” bar: 0.5.
pe_p99 / ze_p99 / nu_jump_p99 The three tracking metrics, all lower-is-better: 99th-percentile EE position error [m] (gate < 0.2 m; round-2 bar 0.1651 m); 99th-percentile pointing-axis error (chord between unit camera axes ≈ angle in rad; stretch < 0.001); 99th-percentile per-step EE twist change (smoothness witness — mixed units, compare across runs only).
L1–L4 The four pre-registered round-2 hardening levers: L1 velocity-lag feedforward, L2 σ-gradient null-space pull (7-DOF only), L3 pointing-smoothing retune, L4 kernel-freeze thaw policy (7-DOF only). Registry: tasks/phase00_protocol.md.

1. What we already know (internal evidence, two paragraphs)

CHAIN_10 (pre-registered, offline, bit-exact replays of 8 runs) killed the numerics hypothesis H1 (the finite-difference path tangent is discarded at its only call site — ee_guidance.py:574 in the current snapshot; the CHAIN_10 docs cite line 620, which predates the CHAIN_11/12 mesh refactor) and the surface-curvature hypothesis H2 (curvature at peaks indistinguishable from calm windows; Cliff’s δ never near the +0.5 bar). It promoted H3 — the schedule walks the arm near its extension limit in schedule-dependent phase bands — on the striking evidence that the 7-DOF’s hot band moves wholesale under ±2% speed (phases 0.29–0.35 at −2%; startup-only at +2%, with zero post-startup peaks), while the registered driver-level test using the crude reach_b proxy stayed honest-inconclusive (δ = +0.82 on the 7-DOF +2% run and +0.60 on the 6-DOF nominal, but −0.42 on the 7-DOF nominal). H4 got the SEED verdict: entries 23/14/2 — the schedule changes how often we fall in, not how long an unchanged set of falls lasts. Pointing error is EVENT-dominant on the 7-DOF (δ up to +0.94 inside peak windows; the 6-DOF anti-correlates because its peaks occur while crawling).

Context from earlier work: the near-singular regime is the arm at full extension — the reach/shoulder factor R(θ) of det(J_arm) = R·sinθ₃·sinθ₅ — not base mass (factorization and the 0.64–0.80 derate residual: mission_1_success.md; the +1.0 s_min_G/extension correlation: the CHAIN_10 design and verdict docs; base mass ruled out by the Jun-8 counterweight sweep recorded in high_level_plans/decisions.md). The 6-DOF lives saturated on that floor (dwell 614–655 s at every speed, derate fraction 0.64–0.80); the 7-DOF lives marginally near it, which is exactly why ±2% swings it by orders of magnitude (phase00_round1_verdict.md). The s-metric question is settled: s_min_G and s_min_J are redundant witnesses here (agreement 1.0000 on derate decisions).


2. What the κ in our logs actually is (code ground truth)

Worth stating precisely once, because the literature’s claims attach to specific matrices:

Layer 2 deserves a flag: between σ = 0.05 and 0.025 the solve is already being damped while the derate has not yet engaged. Damping of this isotropic kind has a known, quantified cost in the literature — tracking error injected into all directions, not just the dying one (see §4.3). That makes layer 2 a prime suspect for the event-dominant pointing error inside peak windows, alongside freeze thaw jumps (measured p99 = 82.9°).


3. What the spikes are — the literature’s answer

3.1 The singular set is fixed in configuration space; the schedule chooses the path through it

[papadopoulos1993dynamic] proves that for a floating-base manipulator, all singularities of the generalized Jacobian are functions of the joint angles q alone — independent of base attitude — and that in the workspace the same end-effector pose can be singular or not depending on the path taken to reach it (the nonholonomy of momentum). The workspace splits into a Path-Independent Workspace (PIW: no path can be singular) and a Path-Dependent Workspace (PDW: singularity is path-conditional). Each singular hypersurface maps to a radial annulus of reach around the system CoM; in their planar worked example the outer annulus extends exactly to the full-extension boundary.

[calzolari2020singularity] sharpens this: the singular surfaces are fixed walls in configuration space — of complex topology (Calzolari’s summary of Rybus et al. 2012, their ref [33]; their own Figs. 2–3 show the planar singular curve “is not a line”) — and sometimes thin enough that a locally-constrained optimizer “can fail to detect an unfeasible step” — i.e. a local manipulability or σ threshold can step straight across a wall undetected. Singularity avoidance done properly is therefore a global, geometric problem (their S-Maps turn it into collision avoidance against precomputed configuration-space boxes), not a local-trigger problem.

The synthesis with CHAIN_10 is one sentence: the walls don’t move; the schedule’s joint-space path does. A ±2% retiming of the aim clock re-routes q(t) relative to immovable singular surfaces, changing the number of close encounters — which is precisely the SEED verdict (entries 23/14/2) and the hot band relocating. The 6-DOF doesn’t show it because its path is pinned against the wall at every speed (saturated floor).

3.2 Which wall: full reach, and why our heavy base makes it “kinematic”

The lineage matters here. [umetani1989resolved] derived the Generalized Jacobian J* = J_M − J_S·I_S⁻¹·I_M (the matrix family our kG instruments) and noted the heavy-base limit: as base inertia grows, the coupling correction vanishes and J* degenerates to the fixed-base arm Jacobian. ([wilde2018equations], the canonical modern construction, never states the limit — but it reads off directly from that paper’s explicit build, eqs. 52 and 110: cite Umetani–Yoshida for the point, Wilde for the machinery.) Consequence for us: with a spacecraft base much heavier than a UR3, the generalized map’s conditioning inherits the arm’s ordinary kinematic singular structure — full extension first. That is the structural reason s_min_G tracks the arm-extension factor at +1.0 and why the s_min_G/s_min_J study found the two interchangeable. The exotic “dynamic singularities” of the free-floating literature (mass-distribution-shifted singular sets, [papadopoulos1993dynamic]; coupling-matrix degeneracies, [nenchev2013reaction], [sone2016reactionless]) are largely suppressed for us — additionally so because our base is actuated: [papadopoulos1993dynamic] §VI shows constant base attitude reduces the singular set to the kinematic one. One sign-caution worth recording: in [sone2016reactionless]’s planar specimen model the coupling-inertia determinant is maximal — farthest from their dynamic singularities — at full arm extension (tied to manipulator-CoM-to-base-CoM distance, with their explicit caveat that spatial joint-axis geometry also matters): the opposite tail from the arm Jacobian’s extension singularity. Citing that paper carelessly could appear to contradict H3; in fact it corroborates that our spikes are arm-kinematic, not coupling-driven. And it closes the PIW/PDW question for our system: in this heavy, attitude-controlled limit the path-dependence subtlety collapses, so “which workspace is the helix in?” reduces to “how close does the demanded standoff reach approach the outer (full-extension) annulus” — precisely the quantity the schedule oracle of §4.1 computes.

3.3 Independent reproduction of H3’s mechanism

Two papers reproduce our promoted mechanism almost verbatim:

And the controller’s own papers concede the gap our derate fills: [giordano2019coordinated] proves stability (for the nonredundant n = 6 case — the 7-DOF extension is our own, derivation_7dof.md) only inside Ω = {σ_min(J⁺) > 0} with zero margin and no enforcement mechanism; [giordano2020coordination] states the practical remedy is “suitably pre-planned trajectories [18,43] … to limit the occurrence of singularities” — its reference [43] being exactly [calzolari2020singularity]. The burden of staying away from singularities is, by the designers’ own admission, on trajectory/schedule design. Our κ bands are what that unfunded mandate looks like in flight.

3.4 Why the error concentrates inside the peaks (event dominance)

Four mutually consistent explanations, all from the fixed-base robustness literature:

There is also a self-inflicted event class the literature warns about: hard thresholds make their own transients. Truncated-SVD inversion “generates discontinuous joint velocities due to the threshold”, and in the same case study a sudden primary-task error jump appears at the exit of an algorithmic singularity — driven by ill-conditioned null-space velocities integrated across the crossing ([chiaverini1997singularity] Fig. 2); a too-small threshold lets the schedule drive through the singularity and chatter ([torres1992minimizing]*, see §7 caveat); [sone2016reactionless] add a quartic term to their damping schedule specifically to keep the entry/exit smooth. Our stack has two hard switches (freeze at 0.025; hold-last-inverse at 0.005) and one measured exit transient (thaw jump p99 = 82.9°). The CHAIN_10 recommendation — audit freeze/derate handling before reconstruction math — is exactly what this literature would order.


4. What to do about it — a layered mitigation taxonomy

Ordered from most upstream (cheapest, most preventive) to most downstream (last-resort robustness). The right posture is layered: plan so entries are rare, spend redundancy to make them rarer, and make the inversion graceful for the residue.

4.1 Schedule layer — make avoidance a planning property (strongest leverage)

The controller-design literature itself sends the problem here: [giordano2020coordination]’s stated practical remedy is pre-planned singularity-aware trajectories; [calzolari2020singularity]’s whole program is planning-side; and flight practice agrees — ETS-VII’s arm trajectories were generated offline and executed feedforward ([nenchev2013reaction]; that was for momentum management rather than singularity avoidance, but it is the operational precedent for offline trajectory certification). The deliberate counterpoint is [bruschi2025singularity], which moves the handling into the control law instead (§4.2’s subject).

4.2 Architecture layer — who carries the task near a wall

4.3 Inversion layer — make the residue graceful (audit before adding)

The published menu maps one-to-one onto layers we already run, which turns this section into an audit rather than a shopping trip:

4.4 Metric layer — are we measuring the right thing? (mostly yes)


5. Direct answers to the prompt

What is causing the spikes? The aim-clock schedule, in specific orbit-phase bands, demands standoff poses that pull the arm toward its full-extension singular surface — a fixed wall in joint space ([papadopoulos1993dynamic], [calzolari2020singularity]). Because our base is heavy and actuated, the generalized map’s conditioning inherits the arm’s kinematic reach factor ([umetani1989resolved] heavy-base limit) — hence s_min_G ≡ arm extension (corr +1.0). A ±2% retiming re-routes the joint-space path relative to the walls, moving the bands and the entry count (SEED). The κ spike is the symptom; the cause is a schedule-feasibility deficit in the sense of [bruschi2025singularity] Defs. 1–2. Numerics (H1) and surface curvature (H2) are exonerated both empirically (CHAIN_10) and structurally (no paper offers a mechanism for either).

How do we alleviate them? In order of leverage: (1) re-time/re-shape the schedule offline against a κ-along-schedule oracle so the helix never demands near-wall reach (§4.1); (2) tighten the standoff/reach corridor — one existing knob (§4.1); (3) spend the 7th joint’s null motion climbing σ₆ (lever L2), with the algorithmic-singularity diagnostic logged (§4.2); (4) keep the derate’s speed-scaling component (the published singularity-consistent design), attribute the in-window pointing cost among the four inversion-layer suspects — including the derate’s own gain-scaling component — smooth the two hard switches (L4), and if damping is implicated, switch it to directional filtering (§4.3).

How do we reduce error and smooth the trajectory? The event-dominant verdict says the error budget is spent at entries/exits, not in cruise — so L1 (velocity-lag feedforward) must be designed and evaluated against the startup/hot-band events (CHAIN_10 follow-up 4), and the smoothing wins are at the σ-boundary transitions (thaw policy, hold-last-inverse), not in the EE path itself. Note the reframe: it is not the end-effector trajectory that needs smoothing — it is the arm’s route through configuration space, which posture/null-space action shapes.

How do we harden the robot? Make schedule sensitivity a designed quantity — with a margin band, not a point. The clean +2% arm sits beside a non-monotone dwell cliff (431/231/3.27 s), so choosing it because it was clean at one setting is exactly what a committee pokes. The oracle should sweep a 2-D neighborhood (speed × standoff) and certify that a whole band around the chosen operating point stays wall-clear; the residual sensitivity then feeds the Phase-A CVaR axis (already pre-registered as a first-class risk source), and the fragility campaign measures noise on top of a system whose deterministic singular encounters are planned out, not accidental.


6. Are we asking the right questions?

Mostly yes — three confirmations and three reframes.

Confirmed right: (1) pre-registered falsification with progress-indexed (not time-indexed) peaks was the correct instrument: the literature’s central fact (fixed walls, moving path) is only visible in phase/configuration coordinates. (2) Preferring σ_min over κ as the control signal matches the entire robustness literature. (3) The event-vs-broadband pointing discriminator was exactly the right question, and its EVENT answer is what [chiaverini1997singularity] predicts for a closed-loop pseudo-inverse kinematic loop — with [giordano2019coordinated] supplying the loss-of-actuation-at-the-event mechanism (stated there for its transpose-type realization).

Reframe 1 — from “why does κ spike” to “where does the demanded path graze the wall.” κ is a consequence. The upstream object is the demanded joint-space path q_des(s) and its clearance from the fixed singular set. That question is answerable offline, deterministically, per schedule candidate — which is a stronger position than diagnosing peaks after flight. H3’s closure (swap reach_b for the true extension margin / strided s_min replay) is this reframe executed on logged data.

Reframe 2 — schedule sensitivity is a design DOF, not just a risk. CHAIN_10 treated ±2% as a perturbation axis; the +2% arm (zero post-startup peaks, dwell 3.27 s) is also an existence proof that a clean schedule exists nearby. The question “how do we harden against ±2%?” should be paired with “which retiming do we deliberately choose?” — gated, as always, on full-helix coverage/tracking validation.

Reframe 3 — the 6-DOF and 7-DOF are different problems wearing the same metric. The 6-DOF sits saturated on the reach floor (64–80% derated; bands immobile): its fix is geometric (standoff/reach corridor — §4.1), and no inversion-layer tuning will move it. The 7-DOF is marginal (entries swing 10× under ±2%): its fixes are schedule re-timing and null-space σ-climbing. One number (derate fraction) headlines both, but the treatments do not transfer across arms — worth keeping separate in round-2 scoring.

One question we were not asking: does our own robustness stack create events? The literature’s threshold-transient warnings (§3.4) plus our measured 82.9° thaw jumps and the σ<0.05 Tikhonov layer suggest an attribution audit within the mitigation stack — which layer owns the in-window pointing error — before any new machinery is added. That is a sharper version of CHAIN_10’s “review freeze/derate handling before the reconstruction math.”


7. Source-hygiene alerts (action needed before thesis citation)

  1. torres1992minimizing is the wrong paper under that citekey. The markdown (and per the sweep, the staged source) is Holt & Desrochers, “Inertial-Space Disturbance Rejection for Space-Based Manipulators” (NASA N94-26281) — the Torres–Dubowsky enhanced-disturbance-map paper appears only as its reference [4]. The Holt content is genuinely useful (the σ_min threshold trade-off and chattering warning cited in §3.4/§4.3 are theirs), but nothing from this folder may be cited as Torres–Dubowsky. Re-fetch the real JGCD 1992 paper; the bib note already says the NTRS report was “staged as source PDF” — that staging grabbed the wrong report.
  2. Bib ↔︎ folder mismatches (the bib header promises citekey == folder name): folders giordano2020wholebody and giordano2021compliant have no bib entries (and no markdown conversions — not swept); bib entries nenchev1999reaction, nakamura1986inverse, yoshikawa1985manipulability, yoshikawa1985dynamic, chiaverini1994review, wampler1986manipulator, vafa1990kinematics, whitney1969resolved have no folders. (Loose PDFs for at least the Nenchev 1999 paper sit in docs/Most_Relevant/ unfoldered.) Additionally, Maciejewski & Klein 1988 — the origin of directional/filtered damping, per [chiaverini1997singularity]’s own attribution — is in neither the bib nor the folders; add it if §4.3’s filtering route is pursued.
  3. Conversion fidelity notes from the sweep: chiaverini1997singularity.md drops scattered inline math symbols (display equations intact); umetani1989resolved.md is OCR of the Japanese JRSJ version (abstract and the load-bearing GJM equations 14, 16–23 readable; eq. 8’s subscripts and the eq. 13 block garbled — re-derive from neither); giordano2019coordinated.md reproduces the two known published typos (eq. 31 sign, eq. 34d block order — already in project memory) and garbles eq. 4 / 34b — do not re-derive from those transcriptions. The two textbooks (siciliano2009robotics, spong2006robot) were deliberately not page-read in this study; cite them only as background.

8. Named follow-ups (smallest convincing test, mapped to existing harness)

# follow-up size harness
1 H3 closure: swap reach_b → strided s_min_J replay (or shoulder-frame reach) as the driver in the committed correlator; re-run on the 8 npz minutes, offline validation/kappa_peak_forensics.py (one driver function)
2 Schedule-κ oracle: σ₆ along q_des(s) over a 2-D (speed × standoff) neighborhood; certify a margin band around the chosen operating point (the clean +2% arm borders the non-monotone 431/231/3.27 s cliff); calibrate predicted vs logged bands offline script replay idiom from r1_kernel_continuity.kappa_series
3 In-window error attribution: within peak windows, attribute pointing error among (a) Tikhonov layer (σ<0.05), (b) freeze/thaw steps, (c) hold-last-inverse steps, (d) derate gain-scaling steps — engagement flags are all reconstructable from logs offline extend the CHAIN_10 window machinery
4 L1 velocity-lag feedforward: design AND evaluate against the startup/hot-band events, not cruise only (the §5 error-reduction answer; CHAIN_10 verdict follow-up 4); both configs per protocol amendment 1 round-2 lever full-helix A/B per tasks/phase00_protocol.md
5 L4 smoothing: thaw-policy + hold-last-inverse transition smoothing, pre-registered against nu_jump_p99 and in-window ze mass round-2 lever existing freeze A/B harness
6 L2 σ-gradient null-space pull with the algorithmic-singularity diagnostic (log σ_min of the projected map; Chiaverini eq.-34 form, not the inverted-projector form) round-2 lever 7-DOF null-space hook (com_controller.py:227-240)
7 6-DOF reach-corridor A/B: sweep radius_scale/standoff on the incumbent — its saturated 64–80% derate is the declared geometric residual that §6 claims no inversion-layer tuning can move; test the claim instead of asserting it full-helix gated knob at parameter_loader.py:183
8 Threshold re-derivation: size 0.025 from the 1/ε joint-rate amplification against UR3 rate/saturation limits; justify or harmonize the 0.005 / 0.02 / 0.025 / 0.05 spread across the four layers small offline calc thesis-defense prep (§4.3)
9 H_norm pilot: compute the Jacobian-spectrum entropy offline on the 8 npz first — verify it actually discriminates single-σ collapse (weak signature, ≈0.92 of max for n=7) before any live logging offline pilot utils/robot.py spectrum already computed
10 Bib repair: re-fetch Torres–Dubowsky 1992; reconcile folder/bib mismatches; add Maciejewski & Klein 1988 if the filtering route is pursued housekeeping docs/Most_Relevant/

Deliberately not recommended now: a full Calzolari S-Map (formal machinery disproportionate to one dominant singular factor — YAGNI), adopting Bruschi’s priority swap outright (fuel/base-pose cost unmodeled for a 30-rev inspection; would need a costed A/B), and any new runtime metric — even H_norm enters as an offline pilot first.


References (citekey → source; all in docs/Most_Relevant/papers/<key>/<key>.md unless noted)

citekey reference role in this study
bruschi2025singularity Bruschi & Invernizzi, ACC 2025 task-priority singularity-free design; feasibility/compatibility framing; H3 mechanism reproduction
calzolari2020singularity Calzolari, Lampariello, Giordano, RSS 2020 singularity maps; fixed C-space walls; local-metric failure; planning-side avoidance
chiaverini1997singularity Chiaverini, IEEE TRA 1997 kinematic vs algorithmic singularities; DLS / variable damping; directional-filtering analysis (origin: Maciejewski & Klein 1988); threshold sizing; closed-loop build-up
das2025understanding Das, Choi, Kim, arXiv 2025 coupling-SVD trajectory re-planning (adjacent precedent for §4.1); H_norm entropy idea (defined on the coupling matrix — the §4.4 Jacobian adaptation is ours)
giordano2018workspace Giordano, Calzolari, Albu-Schäffer, ICRA 2018 workspace-fixation; stretch→manipulability-collapse mechanism
giordano2019coordinated Giordano, Ott, Albu-Schäffer, RA-L 2019 our controller; J⁺ definition; Ω region with zero margin; loss-of-actuation at singularity
giordano2020coordination Giordano, Dietrich, Ott, Albu-Schäffer, RAS 2020 singularity depends on joints only; prescribes pre-planned singularity-aware trajectories
nenchev2013reaction Nenchev, Mech. Sci. 2013 RNS formalism; OSF vicinity-fluctuation contrast; use-the-null-channel guidance (his RNS kernel ≠ our task kernel)
papadopoulos1993dynamic Papadopoulos & Dubowsky, ASME JDSMC 1993 dynamic singularities; q-only dependence; PIW/PDW; reach annuli; redundancy & attitude-control remedies
sone2016reactionless Sone & Nenchev, Acta Astronautica 2016 SC-vs-DLS (derate justification); algorithmic-singularity fingerprint; smooth damping schedules
torres1992minimizing* actually Holt & Desrochers, NASA N94-26281 (see §7) σ_min threshold trade-off; chattering; forbidden-direction error
umetani1989resolved Umetani & Yoshida, IEEE TRA 1989 (JRSJ OCR) Generalized Jacobian origin; heavy-base limit; speed-invariance of path geometry
wilde2018equations Wilde et al., Frontiers Rob. AI 2018 canonical GJM construction + derivatives (oracle machinery); maneuvering-mode taxonomy
ye2019research Ye, Dong, Hong, Electronics 2019 adaptive RNS lineage; contrast citation only (no conditioning content)

Internal evidence: chain10_kappa_forensics_verdict.md, chain10_offline_tables.md, chain10_codepath_audit.md, sming_vs_sminj_study.md, phase00_round1_verdict.md, round_2_questions.md, chain10_kappa_forensics_design.md, generated_reports/math/derivation_7dof.md, generated_reports/GNC/Jun10_26/mission_1_success.md, plus code refs as cited (snapshot of utils/robot.py, GNC/breve_controller.py, GNC/base_guidance.py, GNC/com_guidance.py, GNC/guidance/ee_guidance.py, YAMLs_by_domain/parameters.yaml at Jun 12, 2026).