worldseq

Counterfactual assessments

Grade declared causal comparisons through independently verified factual branches.

A counterfactual assessment predicts the difference between two registered business choices at a fixed outcome day. Each choice schedules named actions, with the same costs, staffing requirements, prerequisites and delays as a normal plan. The prediction is intervention minus baseline, in the registered metric’s units.

Both branches start after ordinary operations close interveneOnDay, before any player decisions that day. Previously accepted commitments continue. Neither branch accepts later player decisions. Exogenous draws keep the same private seed and semantic addresses, while the two branch episode IDs differ. The submission deadline must be no later than the intervention day; the normal exclusive assessment cutoff applies. Within a choice, actions are scheduled in lexicographic action-ID order, preserving one fixed priority when they compete for capacity. The branch verifier checks this order as well as its registered action terms.

Players submit {kind: "counterfactual", value: ...} through submit_assessment. The dashboard presents named choices, timing and the predicted difference. Public snapshots expose the question contract, never a simulated answer, private seed or branch controls. HTTP, MCP and agent runtimes have no fork, rewind or counterfactual oracle operation. Factual verification leaves the optional answer pending; it does not treat a missing offline grade as a failed business objective. This is distinct from a question with an explicit hard requirement.

Required causal conclusions

A task can declare contract_component for a registered action’s financing_net_assets or irreversible_work, or supported_effects for that action’s declared effect set. The player submits a typed conclusion alongside the prediction. Trusted finalization enforces the required conclusion and branch evidence; an ordinary factual seal alone cannot award that requirement. The numerical forecast remains distinct from the contractual conclusion.

A participant’s selected action can fail a branch precondition even when the factual run is valid. That is a participant outcome; missing artifacts, broken execution or unverifiable branches are infrastructure or integrity failures. Neither is replaced by a fabricated counterfactual value.

Offline inspection

After completing a local development evaluation:

bun run worldseq validation counterfactual --results runs/example --out checks/counterfactual

For a private registered campaign, use its independently stored control file and registered agent ID:

bun run worldseq validation counterfactual runs/campaign \
  --control private/campaign.json --agent agent-id --out checks/counterfactual

The campaign form checks the private registration and execution identity. Omitting the control file cannot substitute public development seeds for that campaign. No seed override is accepted. The evaluator first verifies the factual command journal and seal, executes both choices offline, then independently reconstructs the outcome from each branch ledger. Both branch statuses are retained, including rejected or missing branches. Missing outcomes remain unresolved, without an assumed zero effect.

The proper loss is ((prediction - (intervention - baseline)) / scale)²; score is its negative. The latest eligible submitted answer is used. A skipped question remains unsubmitted. The command exits nonzero when any requested question is invalid, unresolved or unsubmitted, or when the result contains no counterfactual questions. Factual task success remains separate.

The new output directory contains report.json, compressed branch seals and checksums. It binds the registration, factual artifacts, question/choice contracts, execution, company/task identities and seed commitment. It does not change the original result directory. The directory is private because branch seals contain authored world conditions; do not publish it as confidential held-out evaluation material. Questions are executed and retained one pair at a time. An interrupted process or storage failure can leave partial artifacts without report.json; those artifacts are not a completed evaluation. Retry into a new output directory and retain the failed attempt for diagnosis.

These are effects of the registered simulator choices under a paired realization. They are not identified real-world treatment effects, a model identity attestation, or evidence that every possible plan has been explored. Tasks advertising this capability need separate passing offline controls before admission.