Consolidate zero-match recovery to one floored ladder (ADR 0010) + default auto-exposure#474
Merged
Merged
Conversation
Execute ADR 0010: keep the Sweep ladder as the only zero-match recovery behavior and remove the rest. Delete the ZeroStarHandler ABC and the Exponential/Reset/Histogram strategies, the set_ae_handler command, the Experimental "AE Algo" menu, and the auto_exposure_zero_star_handler config key (stale values are ignored). Floor the recovery ladder at 200 ms -> [400, 800, 1000, 200] ms; the match-count controller's feedback clamp still reaches 25 ms. Rename the surviving recovery to the Camera glossary: ZeroMatchRecovery, _zero_match_count, _handle_zero_match, _recovery. The two controllers and the pid/snr wire protocol are left unchanged (out of ADR 0010's scope). Flip the shipped default to camera_exp: "auto" so solver-driven auto-exposure runs out of the box; the ladder starts at 400 ms so the first frame is unchanged, and all camera backends already handle "auto". Existing users keep their saved camera_exp. Update docs (camera.md, camera/CONTEXT.md, ADR 0010, menu_map.rst, troubleshooting.rst) and re-extract/compile translations. Co-Authored-By: Claude Opus 4.8 (1M context) <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.
Summary
Executes ADR 0010 (created docs-only in #467): consolidates zero-match recovery to a single fixed-ladder strategy, and resolves the deferred default-regime question by shipping solver-driven auto-exposure as the default.
Recovery consolidation (ADR 0010)
ZeroMatchRecoveryclass. Deleted theZeroStarHandlerABC and the Exponential / Reset / Histogram strategies, theset_ae_handlercommand, the Experimental "AE Algo" menu, and theauto_exposure_zero_star_handlerconfig key (stale config values are ignored).[400, 800, 1000, 200] ms(was 7 rungs down to 25 ms). The floor bounds recovery's blind search only — the match-count controller's feedback clamp still reaches 25 ms.ZeroMatchRecovery,_zero_match_count,_handle_zero_match,_recovery. The two controllers (ExposurePIDController/ExposureSNRController) and theset_ae_mode:pid/snrwire protocol are intentionally left alone (out of ADR 0010's scope).generate_exposure_sweepkept (the diagnostic exposure sweep capture still uses it); docstring updated.Default exposure regime →
"auto"default_config.json:camera_exp: 400000→"auto". Solver-driven auto-exposure now runs out of the box. The ladder starts at 400 ms (the previous fixed default), so the first frame is unchanged. All camera backends + the display callback + daytime-align already handle"auto"; existing users keep their savedcamera_exp.docs/ax/camera.md§7 now cross-reference the resolution.Docs & i18n
docs/ax/camera.md,docs/ax/camera/CONTEXT.md,docs/adr/0010-*— removed the "until the consolidation lands" hedges, applied the rename, recorded the default-regime resolution.docs/source/menu_map.rst(removed AE Algo, noted Auto is the default),docs/source/troubleshooting.rst(AUTO-first exposure guidance).#~obsolete entries).Testing
pytest -m unit→ 453 passed;pytest -m smoke→ 5 passed; rewrittentest_auto_exposure.py→ 22 passedruff check/ruff format --checkclean;mypyclean onauto_exposure.py+camera_interface.pysphinx-build -n→ 0 warnings;pybabel compileclean for all 4 languagesNote
Removed 3 pre-existing tests in the old
TestPIDIntegrationthat referenced agains=constructor arg the controller never had — they were unmarked (never collected bypytest -m unit) and would error if run. Can be rewritten against the realgains_increase/gains_decreaseAPI as separate work.🤖 Generated with Claude Code