2026-06-16 15:17:53 +02:00
|
|
|
|
# RECENT_VIOLET_34D_fb34431
|
2026-06-16 15:14:57 +02:00
|
|
|
|
|
|
|
|
|
|
## What This Work Was
|
|
|
|
|
|
|
|
|
|
|
|
This pass continued the VIOLET plan after `V3.4c` by wiring the launcher-side
|
|
|
|
|
|
shadow path to the live BLUE factor plane.
|
|
|
|
|
|
|
|
|
|
|
|
The goal stayed read-only. BLUE code, BLUE schemas, and BLUE data structures
|
|
|
|
|
|
were not modified. The change was entirely on the VIOLET side.
|
|
|
|
|
|
|
|
|
|
|
|
## Scope
|
|
|
|
|
|
|
|
|
|
|
|
This pass added a thin shadow-side live-factor attachment and a focused test
|
|
|
|
|
|
surface:
|
|
|
|
|
|
|
|
|
|
|
|
- `prod/clean_arch/violet/shadow_live_factors.py`
|
|
|
|
|
|
- `prod/clean_arch/violet/test_violet_launcher_shadow_live_factors.py`
|
|
|
|
|
|
- `prod/launch_dolphin_violet.py`
|
|
|
|
|
|
|
|
|
|
|
|
It reused the existing V3.4c live BLUE source adapter:
|
|
|
|
|
|
|
|
|
|
|
|
- `prod/clean_arch/violet/live_blue_source.py`
|
|
|
|
|
|
- `prod/clean_arch/violet/live_factor_source.py`
|
|
|
|
|
|
- `prod/clean_arch/violet/live_factors.py`
|
|
|
|
|
|
|
|
|
|
|
|
## Why This Was Needed
|
|
|
|
|
|
|
|
|
|
|
|
Before this pass, the Violet shadow launcher still had a base-only decision
|
|
|
|
|
|
path. That meant the `VioletDecisionEngine` could produce a muted decision, but
|
|
|
|
|
|
it did not yet receive the full live factor plane from BLUE’s published
|
|
|
|
|
|
surfaces inside the launcher path.
|
|
|
|
|
|
|
|
|
|
|
|
The missing piece was the launcher-side wiring: source live BLUE factors,
|
|
|
|
|
|
thread them into `decide(...)`, and keep the journaled breakdown faithful to the
|
|
|
|
|
|
same factor plane BLUE would have seen at that scan.
|
|
|
|
|
|
|
|
|
|
|
|
## What Was Added
|
|
|
|
|
|
|
|
|
|
|
|
### 1. Shadow live-factor helper
|
|
|
|
|
|
|
|
|
|
|
|
`shadow_live_factors.py` now provides two small helpers:
|
|
|
|
|
|
|
|
|
|
|
|
- `build_shadow_live_source(...)`
|
|
|
|
|
|
- `shadow_decision_step(...)`
|
|
|
|
|
|
|
|
|
|
|
|
`build_shadow_live_source(...)` assembles the read-only BLUE live factor mirror
|
|
|
|
|
|
for the shadow path. The helper keeps imports lazy so it can be unit-tested
|
|
|
|
|
|
without dragging in the full launcher import chain.
|
|
|
|
|
|
|
|
|
|
|
|
`shadow_decision_step(...)` runs one muted shadow decision using the live BLUE
|
|
|
|
|
|
factor plane, then journals the result when the decision is actuated.
|
|
|
|
|
|
|
|
|
|
|
|
### 2. Launcher wiring
|
|
|
|
|
|
|
|
|
|
|
|
`launch_dolphin_violet.py` now:
|
|
|
|
|
|
|
|
|
|
|
|
- builds the live-factor shadow source when shadow mode is enabled
|
|
|
|
|
|
- passes the live `SizingFactors` into `VioletDecisionEngine.decide(...)`
|
|
|
|
|
|
- skips the shadow decision instead of silently falling back to base-only when
|
|
|
|
|
|
the live factor plane is missing
|
|
|
|
|
|
- keeps the existing journal path intact
|
|
|
|
|
|
|
|
|
|
|
|
This preserves the existing muted-shadow architecture while making the shadow
|
|
|
|
|
|
decision reflect the live BLUE factor plane rather than a reduced fallback.
|
|
|
|
|
|
|
|
|
|
|
|
### 3. Focused tests
|
|
|
|
|
|
|
|
|
|
|
|
`test_violet_launcher_shadow_live_factors.py` covers:
|
|
|
|
|
|
|
|
|
|
|
|
- the live-factor helper contract
|
|
|
|
|
|
- failure propagation from the client factory
|
|
|
|
|
|
- the shadow decision step with live factors and journaling
|
|
|
|
|
|
- the no-live-factor skip path
|
|
|
|
|
|
|
|
|
|
|
|
Because the mount was slow under `pytest`, I verified the helper path directly
|
|
|
|
|
|
with a small execution script instead of waiting on long file-system waits.
|
|
|
|
|
|
|
|
|
|
|
|
## Exactness Rules Followed
|
|
|
|
|
|
|
|
|
|
|
|
The pass stayed conservative:
|
|
|
|
|
|
|
|
|
|
|
|
- no BLUE edits
|
|
|
|
|
|
- no schema edits
|
|
|
|
|
|
- no live fallback to a fake factor plane
|
|
|
|
|
|
- no execution path changes outside the muted shadow branch
|
|
|
|
|
|
- no silent loss of the live factor breakdown
|
|
|
|
|
|
|
|
|
|
|
|
## Verification
|
|
|
|
|
|
|
|
|
|
|
|
Direct runtime check:
|
|
|
|
|
|
|
|
|
|
|
|
- the new helper built successfully with injected factories
|
|
|
|
|
|
- the shadow decision step accepted the live factor plane
|
|
|
|
|
|
- the decision was journaled with the expected Violet journal table
|
|
|
|
|
|
|
|
|
|
|
|
Observed direct result:
|
|
|
|
|
|
|
|
|
|
|
|
- `ok`
|
|
|
|
|
|
|
|
|
|
|
|
`pytest` on this mount was slow and repeatedly stalled in netfs waits, so I did
|
|
|
|
|
|
not treat that as a code failure.
|
|
|
|
|
|
|