Branch: base-wobble Date:
2026-06-12 Files audited:
YAMLs_by_domain/parameters.yaml,
YAMLs_by_domain/assets.yaml Method: rg
across GNC/, utils/, validation/, analysis/ with leaf-key patterns
| Class | Count |
|---|---|
| LIVE | 76 |
| VALIDATION-ONLY | 4 |
| DORMANT | 14 |
| DEAD | 18 |
| AMBIGUOUS | 0 |
Keys consumed by utils/orbit.py (the helix/orbit
block):
| dotted key | consumer (file:line) | note |
|---|---|---|
simulation.time.duration |
utils/orbit.py:17 (via
self.time = full_cfg.simulation.time) |
used in N=int(duration/dt) and helix angle |
simulation.time.dt |
utils/orbit.py:20 | self.N = int(duration / dt) |
simulation.EPS |
utils/orbit.py:19 | self.EPS = float(full_cfg.simulation.EPS) |
guidance.com.orbit.clearance |
utils/parameter_loader.py:108 | orbit.radius = target.radius + clearance (derived
before orbit construction) |
guidance.com.orbit.path.psi_deg |
utils/orbit.py:83, 129 | helix tilt angle (radians) |
guidance.com.orbit.path.n_rev |
utils/orbit.py:84, 129 | total helix revolutions |
guidance.com.orbit.path.sample_dt |
NOT consumed in orbit.py | zero consumers found anywhere — DEAD |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
simulation.time.duration |
LIVE | utils/orbit.py:17 | via self.time |
simulation.time.dt |
LIVE | utils/orbit.py:20 | also parameter_loader.py:89 |
simulation.EPS |
LIVE | utils/orbit.py:19 | also target_finder.py:87 |
simulation.target |
LIVE | utils/parameter_loader.py:82 | selects target block from assets |
simulation.robot |
LIVE | utils/parameter_loader.py:81 | selects robot block from assets |
simulation.logging.stride |
DEAD | — | zero consumers; VISIBILITY_MARK_STRIDE=5 hardcoded in guidance_rollout.py |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
constraints.com.v_max |
LIVE | GNC/com_guidance.py:61 | velocity saturation |
constraints.com.F_max |
LIVE | GNC/com_controller.py:170 | force saturation |
constraints.base.torque_max |
LIVE | GNC/breve_controller.py:328 | tau_b saturation; also parameter_loader.py:132 |
constraints.base.omega_max |
DEAD | — | zero consumers in GNC or utils |
constraints.arm.v_max |
DEAD | — | zero consumers in GNC or utils |
constraints.arm.a_max |
LIVE | GNC/breve_controller.py:640 | arm accel saturation |
constraints.arm.joint_limits.enforce |
LIVE | GNC/com_controller.py:46 | CHAIN_5 clipping knob |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
controller.com.use_reference |
DEAD | — | zero consumers |
controller.com.gains.K |
LIVE | utils/parameter_loader.py:139 | packed into gains.K_c |
controller.com.gains.D |
LIVE | utils/parameter_loader.py:139 | packed into gains.D_c |
controller.com.gains.I |
LIVE | utils/parameter_loader.py:139 | packed into gains.I_c |
controller.com.velocity_correction_alpha |
LIVE | GNC/com_controller.py:389 | |
controller.com.integral.enable |
LIVE | GNC/com_controller.py:72 | |
controller.com.integral.limit |
LIVE | GNC/com_controller.py:74 | |
controller.com.integral.disable_error |
LIVE | GNC/com_controller.py:331 | |
controller.com.startup.enable |
LIVE | GNC/com_guidance.py:42 | |
controller.com.startup.time_scale |
LIVE | GNC/com_guidance.py:43 | |
controller.com.feedforward.alpha |
LIVE | GNC/com_controller.py:163 | |
controller.com.feedforward.force_max |
LIVE | GNC/com_controller.py:163 | |
controller.com.feedforward.startup.enable |
LIVE | GNC/com_controller.py:153 | |
controller.com.feedforward.startup.time_scale |
LIVE | GNC/com_controller.py:155 | |
controller.com.speed_derating.enable |
DORMANT | GNC/base_guidance.py:121 (comment) | explicitly noted “inert config” at line 121; active gate moved to
controller.base.conditioning.enable (TASK_2/T4) |
controller.com.terminal_settle_time |
DEAD | — | zero consumers |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
controller.base.enable |
LIVE | utils/parameter_loader.py:140 | |
controller.base.gains.K |
LIVE | utils/parameter_loader.py:142 | packed into gains.K_b |
controller.base.gains.D |
LIVE | utils/parameter_loader.py:142 | packed into gains.D_b |
controller.base.posture.enable |
LIVE | GNC/breve_controller.py:416 | |
controller.base.posture.joint6_only |
LIVE | GNC/breve_controller.py:453 | |
controller.base.posture.initial_full_arm |
LIVE | GNC/breve_controller.py:444 | CHAIN_5 |
controller.base.posture.initial_gain_scale |
LIVE | GNC/breve_controller.py:446 | CHAIN_5 |
controller.base.posture.gains.K |
LIVE | GNC/breve_controller.py:440 | |
controller.base.posture.gains.D |
LIVE | GNC/breve_controller.py:441 | |
controller.base.gamma_regularization.enable |
LIVE | GNC/breve_controller.py:505 | |
controller.base.gamma_regularization.clip_velocity |
LIVE | GNC/breve_controller.py:511 | |
controller.base.gamma_regularization.v_max |
LIVE | GNC/breve_controller.py:512 | |
controller.base.gamma_regularization.damping |
LIVE | GNC/breve_controller.py:506 | |
controller.base.gamma_regularization.floor |
LIVE | GNC/breve_controller.py:508 | |
controller.base.conditioning.enable |
LIVE | GNC/breve_controller.py:314 | |
controller.base.conditioning.sigma.low |
LIVE | GNC/breve_controller.py:309 (via sigma opts) | |
controller.base.conditioning.sigma.high |
LIVE | GNC/breve_controller.py:309 | |
controller.base.conditioning.sigma.floor |
LIVE | GNC/breve_controller.py:309 | |
controller.base.damping |
LIVE | GNC/breve_controller.py (damping mode) | string mode for velocity damping |
controller.base.accel_feedforward.enable |
DORMANT | — | placeholder for cancelled CHAIN_2 base accel FF; explicitly “inert” per decisions.md; gate=false, no code path reads it |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
controller.arm.enable |
LIVE | utils/parameter_loader.py:144 | |
controller.arm.axis_only_attitude |
LIVE | GNC/breve_controller.py:231 | |
controller.arm.roll_damping_scale |
LIVE | GNC/breve_controller.py:290 | |
controller.arm.gains.position.K |
LIVE | utils/parameter_loader.py:148 | packed gains.K_ep |
controller.arm.gains.position.D |
LIVE | utils/parameter_loader.py:148 | packed gains.D_ep |
controller.arm.gains.position.I |
LIVE | utils/parameter_loader.py:148 | packed gains.I_ep; used in integral branch |
controller.arm.gains.orientation.K |
LIVE | utils/parameter_loader.py:150 | packed gains.K_eo |
controller.arm.gains.orientation.D |
LIVE | utils/parameter_loader.py:150 | packed gains.D_eo |
controller.arm.gains.orientation.I |
DORMANT | utils/parameter_loader.py:150 (packed) | packed but only used when
arm.integral.include_attitude=true (currently false) |
controller.arm.gains.posture.K |
DEAD | — | zero consumers; arm posture uses base.posture.gains, not arm.gains.posture |
controller.arm.gains.posture.D |
DEAD | — | same as above |
controller.arm.integral.enable |
LIVE | GNC/breve_controller.py:219 | |
controller.arm.integral.include_attitude |
LIVE | GNC/breve_controller.py:227 | gate for orientation integral |
controller.arm.integral.limit |
LIVE | GNC/breve_controller.py:244 | |
controller.arm.integral.leak |
LIVE | GNC/breve_controller.py:241 | |
controller.arm.integral.scale_gate |
LIVE | GNC/breve_controller.py:235 | |
controller.arm.accel_feedforward.enable |
LIVE | GNC/breve_controller.py:393 | arm FF (different from base) |
controller.arm.desired_twist.enable |
LIVE | GNC/breve_controller.py:124 | |
controller.arm.desired_twist.v_max |
LIVE | GNC/breve_controller.py:596 | |
controller.arm.null_space.enable |
LIVE | GNC/com_controller.py:49 | Stage C 7-DOF |
controller.arm.null_space.damping |
DEAD | — | YAML comment: “not read yet” (reserved for finite-d law P4) |
controller.arm.null_space.freeze_floor |
DEAD | — | zero consumers in GNC or utils |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
config_sampling.seed |
LIVE | utils/sampling.py:20 | RNG seed |
config_sampling.default.step_size |
LIVE | utils/sampling.py:41 | fallback step size |
config_sampling.default.num |
LIVE | utils/sampling.py:43 | fallback sample count |
config_sampling.j_plus.enable |
DEAD | — | zero consumers; j_plus block is reached via
condit.j_plus by name, enable flag not checked |
config_sampling.j_plus.damping |
LIVE | utils/robot.py:208 | Tikhonov regularization lambda |
config_sampling.j_plus.soft_floor |
LIVE | utils/robot.py:188 | J+ conditioning threshold |
config_sampling.j_plus.hard_floor |
LIVE | utils/robot.py:185 | hard abort threshold |
config_sampling.j_plus.inv_norm_max |
LIVE | utils/robot.py:197 | norm guard |
config_sampling.j_plus.step_size |
LIVE | utils/robot.py:378 (via p.step_size) | sampling step |
config_sampling.j_plus.num |
LIVE | utils/robot.py:378 (via p.num) | sample count |
config_sampling.gamma.enable |
DEAD | — | zero consumers; gamma block reached by name, enable flag not checked |
config_sampling.gamma.step_size |
LIVE | utils/robot.py:378 | |
config_sampling.gamma.num |
LIVE | utils/robot.py:378 | |
config_sampling.gamma.floor |
DEAD | — | zero consumers (only j_plus block has floor logic in robot.py) |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
guidance.com.orbit.clearance |
LIVE | utils/parameter_loader.py:108 | builds orbit.radius |
guidance.com.orbit.path.sample_dt |
DEAD | — | zero consumers anywhere |
guidance.com.orbit.path.psi_deg |
LIVE | utils/orbit.py:83 | helix tilt |
guidance.com.orbit.path.n_rev |
LIVE | utils/orbit.py:84 | revolution count |
guidance.com.window_size |
DEAD | — | zero consumers; base_guidance uses
guidance.base.window_size |
guidance.com.tracking.desired_speed |
LIVE | GNC/guidance/ee_guidance.py:89 | also com_guidance.py:123, guidance_rollout.py:123 |
guidance.com.tracking.lookahead_time |
LIVE | GNC/guidance/ee_guidance.py:356 | |
guidance.com.tracking.search_window |
LIVE | GNC/com_guidance.py:198 | |
guidance.com.tracking.smoothing.enable |
LIVE | utils/parameter_loader.py:126 | builds smoothing.alpha |
guidance.com.tracking.smoothing.time_scale |
LIVE | utils/parameter_loader.py:125 | builds smoothing.alpha |
guidance.com.gains.tracking |
LIVE | GNC/com_guidance.py:181 | |
guidance.com.gains.progress |
LIVE | GNC/com_guidance.py:182 | |
guidance.com.gains.feedforward |
LIVE | utils/parameter_loader.py:121 | builds a_ff_max |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
guidance.rollout.stride |
DEAD | — | hardcoded as VISIBILITY_MARK_STRIDE=5 in guidance_rollout.py:17 |
guidance.rollout.store_frames |
DEAD | — | zero consumers |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
guidance.base.window_size |
LIVE | GNC/base_guidance.py:38 | |
guidance.base.axis_threshold |
DEAD | — | zero consumers |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
camera_guidance.targeting.enable |
LIVE | GNC/guidance/ee_guidance.py:649 | |
camera_guidance.targeting.update_period_steps |
LIVE | GNC/guidance/ee_guidance.py:339 | |
camera_guidance.targeting.lookahead.use_com_time |
LIVE | utils/parameter_loader.py:99 | also ee_guidance.py:355 |
camera_guidance.targeting.lookahead.time |
LIVE | utils/parameter_loader.py:102 | also ee_guidance.py:358 |
camera_guidance.targeting.reach.reachable_arm_radius |
LIVE | utils/parameter_loader.py:173 | builds r_reach |
camera_guidance.targeting.reach.reach_ratio |
LIVE | utils/parameter_loader.py:174 | |
camera_guidance.targeting.startup.time |
LIVE | utils/parameter_loader.py:93 | builds steps_effective |
camera_guidance.targeting.startup.steps |
LIVE | utils/parameter_loader.py:94 | |
camera_guidance.targeting.max_step.p |
DEAD | — | zero consumers; old position step cap, superseded by traj_cfg.goal.step_max |
camera_guidance.targeting.max_step.z |
DEAD | — | zero consumers |
camera_guidance.targeting.pointing.reselect_cos |
DEAD | — | zero consumers |
camera_guidance.targeting.reselect.score_margin |
LIVE | GNC/guidance/ee_guidance.py:510 | |
camera_guidance.targeting.reselect.min_hold_steps |
LIVE | GNC/guidance/ee_guidance.py:324 | |
camera_guidance.targeting.camera.angle_max |
LIVE | utils/parameter_loader.py:180 | builds rad_max, cos_max |
camera_guidance.targeting.camera.depth.far |
LIVE | GNC/guidance/target_finder.py:321 | |
camera_guidance.targeting.camera.depth.max |
LIVE | GNC/guidance/target_finder.py:329 | |
camera_guidance.targeting.camera.depth.min |
LIVE | GNC/guidance/target_finder.py:323 | |
camera_guidance.targeting.camera.depth.near |
LIVE | GNC/guidance/target_finder.py:321 | |
camera_guidance.targeting.camera.fov |
LIVE | utils/parameter_loader.py:182 | also target_finder.py:206 |
camera_guidance.targeting.camera.high_res.enable |
LIVE | utils/parameter_loader.py:178 | selects resolution |
camera_guidance.targeting.camera.low_resolution |
LIVE | utils/parameter_loader.py:179 | |
camera_guidance.targeting.camera.tsdf_resolution |
LIVE | utils/parameter_loader.py:178 | |
camera_guidance.targeting.scoring.mode |
LIVE | GNC/guidance/target_finder.py:40 | ScoringMode enum |
camera_guidance.targeting.scoring.sampling.n_rays |
LIVE | GNC/guidance/target_finder.py:129 | |
camera_guidance.targeting.scoring.sampling.n_query |
LIVE | GNC/guidance/target_finder.py:158 | |
camera_guidance.targeting.scoring.sampling.n_targets |
LIVE | GNC/guidance/target_finder.py:95 | |
camera_guidance.targeting.scoring.sampling.radius_scale |
LIVE | utils/parameter_loader.py:187 | builds camera_radius |
camera_guidance.targeting.scoring.sampling.seed |
LIVE | GNC/guidance/target_finder.py:99 | open3d RNG seed |
camera_guidance.targeting.scoring.weights.dist |
LIVE | GNC/guidance/target_finder.py:343 | |
camera_guidance.targeting.scoring.weights.angle |
LIVE | GNC/guidance/target_finder.py:343 | |
camera_guidance.targeting.scoring.weights.off_centre |
LIVE | GNC/guidance/target_finder.py:343 | |
camera_guidance.targeting.scoring.weights.kong |
LIVE | GNC/guidance/target_finder.py:474 | EXPONENTIAL/WEIGHTED weight key |
camera_guidance.targeting.scoring.weights.novelty |
LIVE | GNC/guidance/target_finder.py:474 | |
camera_guidance.targeting.scoring.weights.motion |
LIVE | GNC/guidance/target_finder.py:474 | |
camera_guidance.targeting.scoring.weights.stability |
LIVE | GNC/guidance/target_finder.py:474 | |
camera_guidance.targeting.scoring.weights.area |
LIVE | GNC/guidance/target_finder.py:474 | |
camera_guidance.targeting.scoring.weights.anchor |
LIVE | GNC/guidance/target_finder.py:474 | |
camera_guidance.targeting.scoring.weights.manipulability |
LIVE | GNC/guidance/target_finder.py:474 | |
camera_guidance.targeting.scoring.weights.stability_length |
LIVE | GNC/guidance/target_finder.py:413 | |
camera_guidance.targeting.scoring.weights.anchor_length |
LIVE | GNC/guidance/target_finder.py:432 |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
camera_guidance.trajectory.default_goal_uses_desired_base |
LIVE | GNC/guidance/ee_guidance.py:276 | |
camera_guidance.trajectory.goal.pos.time_scale |
LIVE | utils/parameter_loader.py:161 | builds goal.pos.alpha |
camera_guidance.trajectory.goal.pos.rate_max |
LIVE | GNC/guidance/ee_guidance.py:790 | |
camera_guidance.trajectory.goal.axis.time_scale |
LIVE | utils/parameter_loader.py:162 | builds goal.axis.alpha |
camera_guidance.trajectory.goal.axis.rate_max |
LIVE | GNC/guidance/ee_guidance.py:804 | |
camera_guidance.trajectory.goal.axis.angle_max |
LIVE | utils/parameter_loader.py:163 | builds cos_max, sin_max |
camera_guidance.trajectory.goal.step_max |
LIVE | GNC/guidance/ee_guidance.py:533 | per-step p_ce cap |
camera_guidance.trajectory.goal.quintic.enable |
DORMANT | — | quintic_pose.py exists but is never imported; gate=false |
camera_guidance.trajectory.goal.quintic.v_max |
DORMANT | — | same gate: quintic_pose.py not imported |
camera_guidance.trajectory.goal.quintic.a_max |
DORMANT | — | same gate |
camera_guidance.trajectory.goal.quintic.t_min |
DORMANT | — | same gate |
camera_guidance.trajectory.orbit_path.enable |
LIVE | GNC/guidance/ee_guidance.py:97 | CHAIN_5 |
camera_guidance.trajectory.orbit_path.mode |
LIVE | GNC/guidance/ee_guidance.py:103 | OrbitPathMode enum |
camera_guidance.trajectory.orbit_path.smooth_window |
LIVE | GNC/guidance/ee_guidance.py:95 | savgol smoothing |
camera_guidance.trajectory.orbit_path.max_step |
LIVE | GNC/guidance/ee_guidance.py:95 | per-step surface path cap |
camera_guidance.trajectory.orbit_path.ff_route |
DEAD | — | CHAIN_10 audit: discarded at sole call site; key is read into config but no code branch uses it |
camera_guidance.trajectory.orbit_path.progress_sync |
LIVE | GNC/guidance/ee_guidance.py:101 | CHAIN_5 |
camera_guidance.trajectory.orbit_path.aim_floor_rate |
LIVE | GNC/guidance/ee_guidance.py:105 | CHAIN_6 P3 monotone clock (0.0 = OFF) |
camera_guidance.trajectory.orbit_path.aim_lead_max |
LIVE | GNC/guidance/ee_guidance.py:106 | CHAIN_6 P3 (0.0 = OFF) |
camera_guidance.trajectory.orbit_path.aim_during_initial |
LIVE | GNC/guidance/ee_guidance.py:109 | CHAIN_5 |
camera_guidance.trajectory.orbit_path.detours.enable |
DORMANT | GNC/guidance/detour_planner.py | detour_planner.py imported only in validation/ (d2_full_helix_setdiff, detour_predict_calibration, k1_initial_aim_predict, test_detour_planner); gate=false; no live GNC import path |
camera_guidance.trajectory.orbit_path.detours.predict_stride |
DORMANT | validation only | same gate as detours.enable |
camera_guidance.trajectory.orbit_path.detours.cluster_radius |
DORMANT | validation only | same gate |
camera_guidance.trajectory.orbit_path.detours.min_cluster_tris |
DORMANT | validation only | same gate |
camera_guidance.trajectory.orbit_path.detours.split_extent |
DORMANT | validation only | same gate |
camera_guidance.trajectory.orbit_path.detours.n_waypoints |
DORMANT | validation only | same gate |
camera_guidance.trajectory.orbit_path.detours.ramp_margin |
DORMANT | validation only | same gate |
camera_guidance.trajectory.orbit_path.detours.coverage_target |
DORMANT | validation only | same gate |
camera_guidance.trajectory.orbit_path.detours.max_rounds |
DORMANT | validation only | same gate |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
uncertainty.enable |
LIVE | GNC/uncertainty_model.py:27 | risk phase master switch |
uncertainty.seed |
LIVE | GNC/uncertainty_model.py:28 | |
uncertainty.camera_pose.pos_std |
LIVE | GNC/uncertainty_model.py:33 | |
uncertainty.camera_pose.angle_std |
LIVE | GNC/uncertainty_model.py:33 | |
uncertainty.state.pos_std |
LIVE | GNC/uncertainty_model.py:36 | |
uncertainty.state.vel_std |
LIVE | GNC/uncertainty_model.py:36 | |
uncertainty.actuation.force_std |
LIVE | GNC/uncertainty_model.py:38 |
| dotted key | class | first consumer (file:line) | note |
|---|---|---|---|
robots.UR3.name |
LIVE | utils/robot.py:19 | name check assertion |
robots.UR3.relative_path |
LIVE | utils/parameter_loader.py:71 | builds robot_path |
robots.UR3.I_body |
LIVE | utils/parameter_loader.py:131 | builds omega_dot_max |
robots.UR3.base_frame |
LIVE | utils/robot.py:40 | pinocchio frame ID |
robots.UR3.cam_frame |
LIVE | utils/robot.py:39 | pinocchio frame ID |
robots.UR3.joint_torque_limits |
LIVE | utils/parameter_loader.py:75 | builds constraints.tau_max |
robots.UR3.joint_velocity_limits |
LIVE | utils/parameter_loader.py:75 | builds constraints.theta_dot_max |
robots.UR3.mass |
LIVE | utils/parameter_loader.py:119 | v_dot_max = F_max / mass |
robots.UR3.n_DOF |
LIVE | utils/robot.py:34 | assertion vs pinocchio model |
robots.UR3.joint_limits.lower |
LIVE | GNC/com_controller.py:258 | CHAIN_5 clipping envelope |
robots.UR3.joint_limits.upper |
LIVE | GNC/com_controller.py:258 | |
robots.UR3_7.* |
DORMANT | — | all fields identical in structure to UR3.*; only loaded when
simulation.robot: UR3_7; gate =
simulation.robot config key |
targets.GRO.name |
LIVE | utils/parameter_loader.py:65 | loaded when target=GRO (default) |
targets.GRO.path |
LIVE | utils/parameter_loader.py:171 | builds mesh_path |
targets.GRO.radius |
LIVE | utils/parameter_loader.py:108 | orbit.radius = radius + clearance |
targets.RCM.* |
DORMANT | — | only loaded when simulation.target: RCM |
targets.acrim.* |
DORMANT | — | only loaded when simulation.target: acrim |
| key | justification |
|---|---|
simulation.logging.stride |
Hardcoded as VISIBILITY_MARK_STRIDE = 5 in
guidance_rollout.py:17; config key ignored |
guidance.com.orbit.path.sample_dt |
Zero consumers; orbit sampling is time-driven via
simulation.time.dt, not this key |
guidance.com.window_size |
base_guidance reads guidance.base.window_size; this
sibling under com is never accessed |
guidance.rollout.stride |
See logging.stride above — same constant |
guidance.rollout.store_frames |
Zero consumers |
guidance.base.axis_threshold |
Zero consumers |
controller.com.use_reference |
Zero consumers |
controller.com.terminal_settle_time |
Zero consumers |
constraints.base.omega_max |
Zero consumers; saturation uses omega_dot_max (derived
from I_body/torque_max) |
constraints.arm.v_max |
Zero consumers |
controller.arm.gains.posture.K |
Zero consumers; arm posture code (breve_controller.py:440) reads
base.posture.gains.K, not arm.gains.posture.K
— likely a copy-paste artifact |
controller.arm.gains.posture.D |
Same as above |
controller.arm.null_space.damping |
YAML comment explicitly says “not read yet” |
controller.arm.null_space.freeze_floor |
Zero consumers |
config_sampling.j_plus.enable |
Block is accessed by name (condit.j_plus); flag never
checked |
config_sampling.gamma.enable |
Same as j_plus.enable |
config_sampling.gamma.floor |
Zero consumers; j_plus has soft_floor/hard_floor but
gamma block has no floor logic |
camera_guidance.targeting.max_step.p |
Superseded by camera_guidance.trajectory.goal.step_max;
zero consumers |
camera_guidance.targeting.max_step.z |
Same |
camera_guidance.targeting.pointing.reselect_cos |
Zero consumers |
camera_guidance.trajectory.orbit_path.ff_route |
CHAIN_10 audit confirmed: FD tangent discarded at sole call site (confirmed zero GNC consumers) |
# Legacy / Dormant Annotations| key | annotation suggestion |
|---|---|
controller.com.speed_derating.enable |
Add
# Legacy: gate moved to controller.base.conditioning.enable (TASK_2/T4); this flag is inert |
controller.base.accel_feedforward.enable |
Add
# Dormant: CHAIN_2 cancelled; placeholder in case base accel FF revived |
controller.arm.gains.orientation.I |
Add
# Dormant: only active when arm.integral.include_attitude=true (currently false) |
camera_guidance.trajectory.goal.quintic.* |
Add
# Dormant: quintic_pose.py never imported; enable=false; G1 v3 design put on hold |
camera_guidance.trajectory.orbit_path.detours.* |
Add
# Dormant: CHAIN_3 detour tasks cancelled; detour_planner.py imported in validation/ only; enable=false |
robots.UR3_7.* |
Add
# Dormant: only loaded when simulation.robot: UR3_7 |
targets.RCM.* / targets.acrim.* |
Add
# Dormant: only loaded when simulation.target is overridden |
Every DEAD claim was independently re-checked before the A1 purge. Corrections:
| Key | Audit said | Verified | Evidence |
|---|---|---|---|
| controller.arm.null_space.freeze_floor | DEAD | LIVE | utils/robot.py:314 (R1 kernel freeze) + 12 validation consumers |
| constraints.base.omega_max | DEAD | LIVE | GNC/breve_controller.py:489 (state saturation) |
| constraints.arm.v_max | DEAD | LIVE | GNC/breve_controller.py:492 (state saturation) |
| guidance.rollout.stride | DEAD | VALIDATION-ONLY | analysis/pre_run_loader.py loader_smoke override-test key (6 refs) |
The remaining 15 DEAD verdicts were confirmed (zero consumers via dotted-path AND bare-leaf sweeps, incl. the getattr hazard check: jp/g_reg field enumerations show j_plus.enable / gamma.enable / gamma.floor are never read; g_reg is controller.base.gamma_regularization, NOT config_sampling.gamma).
A1 purge executed on the verified 15 only. Lesson recorded: audit agents’ DEAD verdicts require controller verification before deletion — one wrong verdict (freeze_floor) would have deleted the R1 freeze knob.