Animation System POC — Phase A proof of concept (Issue #208)#248
Draft
Animation System POC — Phase A proof of concept (Issue #208)#248
Conversation
- Add Experimental/AnimationPOC/ with new animation engine interfaces, AutoScanStrategy, AnimationSession, AnimationService, TestScanTimer - Add Experimental/AnimationPOCDemo/ WinForms scanner demo application - Add Experimental/AnimationPOC.Tests/ with 19 unit tests (T01-T15) - Add PERFORMANCE_RESULTS.md and README.md for POC documentation - No existing source files modified (pure addition) Co-authored-by: michaelbeale-IL <63321611+michaelbeale-IL@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Implement proof of concept for new animation system
Animation System POC — Phase A proof of concept (Issue #208)
Feb 21, 2026
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.
Implements the Phase A "Seams" POC from the Animation System Preparation epic. Validates the architecture defined in
docs/ANIMATION_SYSTEM_DESIGN.mdwith runnable code, a WinForms demo, and a full unit-test suite. No existing source files are modified.All files land under
Experimental/AnimationPOC/.New animation engine library (
AnimationPOC/)Interfaces (all additive, no legacy code changed)
IScanTimer— abstractsSystem.Timers.Timer; breaks the non-injectable pain point (P1)IScanModeStrategy+IScanContext+ScanInputAction— strategy plugin contract (§4)IAnimationSession— per-panel lifecycle (Start/Stop/Pause/Resume/Interrupt/Transition)IAnimationService— singleton session factoryIHighlightRenderer— WinForms/WinUI 3/DirectX swap pointIEventBus/IEvent— POC-local pub/sub (mirrors ACATCore contract without depending on it)Config
AnimationConfig/AnimationSequenceConfig/AnimationWidgetConfig— JSON-first POCOs mapping directly toschemas/json/animation-config.schema.json; all five schema migration constraints (C1–C5:@VariableNamerefs, wildcards, PCode strings) handled asstringfields resolved atStart()timeInfrastructure
SystemScanTimer— thinSystem.Timers.Timerwrapper, zero behaviour changeTestScanTimer— synchronousManualTick()for deterministic timer-driven tests (noThread.Sleepanywhere in the test suite)SimpleEventBus— strong-ref pub/sub for POCCore
AnimationSession— lock-protected (_sessionLock) state machine; lock released beforeIEventBus.Publish()andIHighlightRenderercalls to avoid UI-thread deadlocksAnimationService+DefaultScanStrategyFactory— named strategy resolution (keyed-DI fallback pattern for .NET 4.8.1 compatibility)AnimationStateChangedEvent,AnimationTransitionEvent,AnimationHighlightEventAutoScanStrategy— the only strategy in Phase A; stateless sequential advance, exactly matching the §4.2 pseudo-code:WinForms scanner demo (
AnimationPOCDemo/)6-button row scanner (A–F) showing the new engine end-to-end:
WinFormsHighlightRendererhandlesBeginInvokemarshallingUnit tests (
AnimationPOC.Tests/) — 19 tests covering T01–T15AutoScanStrategyTests.csSelectNextboundaries;HandleInputfor auto/paused;NameTestScanTimerTests.csManualTick;AutoReset=false;Start/StopAnimationSessionTests.csAnimationStateChangedEventpublishing, widget order, pause-position preservation,Interrupt, loop, iteration stopPerformanceTests.csPerformance highlights (vs. current system)
BeginInvoke(unbounded queue)Full analysis in
Experimental/AnimationPOC/PERFORMANCE_RESULTS.md.Out of scope (Phase B/C/D)
ManualScanStrategy,BciScanStrategy,IAnimationConfigProvider/XmlAnimationConfigAdapter, JSON schema validation, EventBus cutover forEvtPlayerStateChanged,PanelAnimationManagerwire-up.Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.