You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: fold membership is PRIVATE separation; close NOTELEPORT (sink cost ledger EMPTY)
Three Java-cited fixes, sink cost ledger 3 -> 0:
- CustomPower parent folds: drop the ad-hoc 'not is_vpp(parent)' skip and
skip PRIVATE modifiers instead, as engine/cost.py already does. Java's
List.separatePrivateMods (List.java:53-60) removes private modifiers
from getAssignedModifiers() at restore, so no fold ever sees them --
that separation, not any parent-hop difference, is why Ultrasonique's
pool (commons PRIVATE="Yes") folds nothing while Yin Wu's folds.
Proved with a temporary --probe-child oracle mode: HD's pool showed
assignedMods=0 at runtime.
- HDCLoader: absent PRIVATE falls back to the types-based default
(Modifier.java:1136-1147 -- framework-typed means private).
- Modifier.total_value reads the MINVAL-clamped levels property, as
Java getTotalValue() calls getLevels() (GenericObject.java:1996-2002);
and _template_data no longer defaults an absent MINVAL to 1 (_i's
default is 1; MINVAL's is 0) -- the two together close NOTELEPORT
(+1/4 from the level floor; CannotEscapeWithTeleport already zeroes
the stated BASECOST at restore, CannotEscapeWithTeleport.java:127-131).
Suite 1724 passed; corpus parity unchanged; stateful ledger 0, prototype 1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PrVDXgpDfQpzEGErZTLjEs
"_comment": "Shrink-only ledger for tests/test_validation_sink_costs.py. Regenerate the fixture: venv/bin/python -c 'from tests.validation_sink import write; write(\"/tmp/ValidationSink.hdc\")' ; (cd ../kirby-hd-oracle && ./hd6cli.sh /tmp/ValidationSink.hdc) > tests/fixtures/authored/ValidationSink.json. Seeded 2026-08-30: the corpus is HD-written and cannot see these; the hand-written sink can.",
3
-
"_baseline": "23 sink cost values disagree with HD (2026-08-30); option-cost fix 2026-08-30: 13 closed, now 10 remain; 5E-fallback ruling + MULTIPLESFX state 2026-08-30: 5 closed, 5 new, now 10; REQUIRED-adder attach 2026-08-31: 2 closed (DoT), now 8; 2026-08-31 session: Images/DoT/VPP-slot cells closed (option sentinels, REQUIRED adders, shared-path fold); CustomPower fold membership reverted (corpus trade), now 3",
4
-
"gaps": {
5
-
"20260830000060:active_cost": "NakedModifier + NOTELEPORT: the template's MINVAL=1/LVLCOST=.25 now reaches TemplateData (min_val plumbed 2026-08-31) and Modifier.levels clamps on it, but the LOADED modifier still reports value 0 -- the remaining gap is in the naked-advantage path (NakedModifier sums only PRIVATE advantages; check isPrivate classification for a stated modifier) -- HD 15.0 engine 10 (NAKEDMODIFIER 'Naked Advantage')",
6
-
"20260830000060:real_cost": "NakedModifier + NOTELEPORT: the template's MINVAL=1/LVLCOST=.25 now reaches TemplateData (min_val plumbed 2026-08-31) and Modifier.levels clamps on it, but the LOADED modifier still reports value 0 -- the remaining gap is in the naked-advantage path (NakedModifier sums only PRIVATE advantages; check isPrivate classification for a stated modifier) -- HD 15.0 engine 10 (NAKEDMODIFIER 'Naked Advantage')",
7
-
"20260830000061:real_cost": "CustomPower real-cost: the engine's min-1 reads raw _levels (stated 5) where Java's condition sees computed getLevels()==roundUp(baseCost)==0 (CustomPower.java:246-250); the fix rode with the parent-fold membership change that traded ULTRASONIQUE for DOCTOR_YIN_WU and was reverted -- CustomPower.getRealCostPreList folds only the parentID-based getParentList(), never the transient parent CompoundPower sets while summing; needs a membership-based port -- HD 0.0 engine 1.0 (CUSTOMPOWER 'Custom Power With END')"
8
-
}
9
-
}
3
+
"_baseline": "23 sink cost values disagree with HD (2026-08-30); option-cost fix 2026-08-30: 13 closed, now 10 remain; 5E-fallback ruling + MULTIPLESFX state 2026-08-30: 5 closed, 5 new, now 10; REQUIRED-adder attach 2026-08-31: 2 closed (DoT), now 8; 2026-08-31 session: Images/DoT/VPP-slot cells closed (option sentinels, REQUIRED adders, shared-path fold); CustomPower fold membership reverted (corpus trade), now 3; fold-membership port 2026-08-31 (PRIVATE separation is the mechanism -- List.separatePrivateMods -- not a parent-hop difference): CustomPower cell closed, now 2; NOTELEPORT close 2026-08-31 (CannotEscapeWithTeleport zeroes stated BASECOST at restore -- already ported; the real gaps were total_value reading raw _levels where Java getTotalValue calls the MINVAL-clamped getLevels(), and _i defaulting an absent MINVAL to 1 instead of 0): now 0 -- EMPTY, the ledger's job is to stay that way",
0 commit comments