McRogueFace/tools
John McCardle 2f937dba91 feat(docs): animation target-time capture — Phase 2 (#381)
_screenshot.py now decides capture time in three tiers: an explicit
MCRF_SHOT_AT wins; else if mcrfpy.animations reports active .animate()
animations, capture at 60% of the longest one's duration (fully automatic
via the engine's animation introspection); else fall back to the static
setup-steps path. So the ~50 .animate()-driven snippets land mid-effect
with zero per-snippet tuning.

The orchestrator's OVERRIDES table gains shot_at entries for the effects
the animation list can't see -- timer-driven pulses/flashes (Timers, not
animations) and a fade-to-invisible caption whose 60% frame is nearly blank.

Steady-state stable: 272 captured, byte-identical across repeated full runs.
A rare first-fire flake in two timer-driven snippets (048, 191) traced to a
genuine headless-clock bug, filed as #383 (Timer epoch reads wall clock, not
simulation_time); not a screenshot-tooling defect.

Addresses #381.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LTh2ZW7bd3XSd9qK86Z2CE
2026-07-15 21:09:16 -04:00
..
hooks Untrack generated docs; add API manifest infra and pre-commit hook 2026-07-11 20:57:31 -04:00
api_delta.py build(docs): chain the release documentation pipeline into make release-docs 2026-07-14 18:33:31 -04:00
audit_pymethoddef.py Add tools/audit_pymethoddef.py - MCRF_METHOD/MCRF_PROPERTY compliance auditor 2026-04-18 12:30:25 -04:00
build_debug_libs.sh Fix build_debug_libs.sh flag quoting so --asan/--tsan can rebuild 2026-06-21 16:44:33 -04:00
capture_audio_synth_header.py Fix capture_audio_synth_header.py for headless --exec mode 2026-04-18 23:25:17 -04:00
check_frozen_docstrings.sh Add docstring-macro validation scripts for #314 F15 2026-06-21 00:11:15 -04:00
generate_all_docs.sh Wire strict frozen-docstring gate into the doc pipeline (#314 F15) 2026-06-21 06:45:11 -04:00
generate_api_manifest.py fix(bindings): make dynamic module attributes dir()-discoverable 2026-07-13 23:47:04 -04:00
generate_color_table.py Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
generate_dynamic_docs.py fix(engine): headless step() is a full simulation frame; --exec can no longer hang 2026-07-14 06:37:52 -04:00
generate_man_page.sh docs: Complete Phase 7 documentation system with parser fixes and man pages 2025-10-30 21:20:50 -04:00
generate_snippet_shots.py feat(docs): animation target-time capture — Phase 2 (#381) 2026-07-15 21:09:16 -04:00
generate_stubs.py Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
generate_stubs_v2.py fix(stubs): emit a parseable .pyi when a return type is authored as prose 2026-07-14 07:29:56 -04:00
package.sh Untrack generated docs; add API manifest infra and pre-commit hook 2026-07-11 20:57:31 -04:00
package_stdlib.py distribution packaging 2026-01-09 12:00:59 -05:00
stamp_snippets.py fix(snippets): drop the commit hash from verified -- it churned all 130 every commit 2026-07-14 19:14:49 -04:00
stdlib_modules.yaml distribution packaging 2026-01-09 12:00:59 -05:00
test_link_transform.py feat: add link transformation to documentation generator 2025-10-30 11:39:54 -04:00
test_vector_docs.py feat: convert PyVector properties to use macros 2025-10-30 11:33:49 -04:00
ui_methods_documentation.py Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
untrack_generated_docs.sh Untrack generated docs; add API manifest infra and pre-commit hook 2026-07-11 20:57:31 -04:00
validate_file_docstrings.sh Add docstring-macro validation scripts for #314 F15 2026-06-21 00:11:15 -04:00
wf_docs_rewrite.js test(snippets): promote 152 hand-written docs examples into the gated suite 2026-07-15 00:26:38 -04:00