WBML-0005 — Actions / Conditions / Effects Suite
✅ Verified — executed branches WBML-0005 PARTIAL PASS: 90 / 0 / 3
Research question
Section titled “Research question”Can PoliticalWorldAPI 1.14.0’s creator-facing action stack be used coherently from registration through condition evaluation, execution, effects and unregister cleanup?
Environment
Section titled “Environment”WorldBox: 0.51.2 build 719Git: build-719@5decNeoModLoader: 1.2.0.1PoliticalWorldAPI: 1.14.0Lab: 0.0.5-fix4Phase A — registration and metadata
Section titled “Phase A — registration and metadata”The suite verified validation codes PW303/PW304 and warning PW305, registered three Lab-owned actions, queried their metadata, and discovered an important runtime rule:
RegisterAction(same ID) → accepted / replacedThe replacement became visible through GetAction. The Lab immediately re-registered the canonical definition before continuing.
Phase A:
22 PASS / 0 FAIL / 0 SKIPPhase B — conditions
Section titled “Phase B — conditions”Verified combinators included:
AllAnyNotincluding runtime edge semantics Any(empty) == true and Not(null) == true.
The suite also passed live government/ideology/current/system/stability checks, addon-private int/bool/tag checks, dynamic ActionInfo.Enabled, and the executed party conditions.
A correction in this phase stopped treating an earlier PartyInfo.Support value as immutable. The final harness re-read the same party by stable ID before support-boundary assertions.
Phase B ended with no failures.
Phase C — execution and operation results
Section titled “Phase C — execution and operation results”Verified:
disabled action does not execute handleraction-condition-failedsuccessful ExecuteActionsuccessful TryExecuteAction with code okhandler side effectsmissing action → action-not-foundnull kingdom → invalid-kingdomEffects.Sequence integrationPhase C reached 68 cumulative PASS / 0 FAIL / 0 SKIP.
Phase D — effects and unregister
Section titled “Phase D — effects and unregister”Executed effect branches passed for addon int/bool/tags, stability mutation/restoration and party radicalism mutation/restoration.
Unregister semantics also passed.
Party support safety branch
Section titled “Party support safety branch”The target world had only one active party in the selected kingdom.
Earlier experiment history had already shown that the single-active-party support path normalized a requested lower value to 100 and did not restore the lower value through the same setter.
The final harness therefore skipped exact support mutation rather than repeating a destructive test.
Phase D:
PASS=87 FAIL=0 SKIP=2Why fix4 was necessary
Section titled “Why fix4 was necessary”fix3 correctly skipped the dangerous Phase D support mutation, but its old final cleanup still compared live support with a Phase A snapshot and attempted to “restore” the old value.
That cleanup call itself hit the single-party normalization path and produced 100.
The run was rejected as a finalizer/harness bug.
fix4 made the safety rule global:
if Phase D did not mutate support→ FINAL does not call the support setter→ FINAL marks support restoration SKIPFinal result
Section titled “Final result”PASS=90FAIL=0SKIP=3A=PASS B=PASS C=PASS D=PASSSUITE RESULT: PARTIAL PASSAll three SKIPs belong to the exact party-support mutation/restoration branch in the single-party environment.
Additional observation: diagnostics bookkeeping
Section titled “Additional observation: diagnostics bookkeeping”The live action query after unregister returned zero, but the diagnostics report displayed Registered actions: 2 after repeated same-ID replacement history.
This is preserved as Observed, not promoted to a general rule.
Evidence boundary
Section titled “Evidence boundary”Executed action/condition/effect/unregister branches are verified for this stack.
Exact multi-party support mutation/restoration remains open.