Problem
The catwalk uses an opacity sine-wave pulse (0.7–1.0 at 1.5 Hz) to indicate agents in the working state. This reads poorly — it looks like a rendering glitch. The problem is compounded because opacity is already used for state differentiation:
- idle: 0.3 / resting: 0.6 / deactivated: 0.15 / active: 1.0
- working pulse minimum: 0.7 (barely distinguishable from resting at 0.6)
- orchestrator pulse minimum: 0.6 (identical to resting)
Opacity is doing double duty: state identity and activity signaling. These are orthogonal concerns that shouldn't share the same visual channel.
Context
Solution
Replace the opacity pulse with a scale pulse — a subtle "breathing" effect (1.0→~1.08 at 1.5 Hz) that signals activity without conflicting with opacity-based state differentiation.
- Working agents render at full opacity (1.0) with a gentle scale oscillation
- Both
StationAgentActor and OrchestratorActor share the same scale pulse range (unlike opacity, scale is purely an activity signal and doesn't need per-actor tuning)
- Scale resets to 1.0 when leaving the working state
- Opacity-based state differentiation (idle 0.3, resting 0.6, deactivated 0.15) remains unchanged
Acceptance criteria
Problem
The catwalk uses an opacity sine-wave pulse (0.7–1.0 at 1.5 Hz) to indicate agents in the
workingstate. This reads poorly — it looks like a rendering glitch. The problem is compounded because opacity is already used for state differentiation:Opacity is doing double duty: state identity and activity signaling. These are orthogonal concerns that shouldn't share the same visual channel.
Context
Solution
Replace the opacity pulse with a scale pulse — a subtle "breathing" effect (1.0→~1.08 at 1.5 Hz) that signals activity without conflicting with opacity-based state differentiation.
StationAgentActorandOrchestratorActorshare the same scale pulse range (unlike opacity, scale is purely an activity signal and doesn't need per-actor tuning)Acceptance criteria
StationAgentActorandOrchestratorActorduring working statevec(1, 1)when leaving working stateanimation.ts