Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Test both Signal Race routes

Lab 2 has two reproducible source states and therefore needs two separately identified runtime candidates. This protocol prevents a mode-1 failure run from being mistaken for evidence about the canonical mode-2 archive.

RecordValue
Structural validation date2026-08-09
Runtime test dateNot yet recorded

This guide tests both the canonical checkpoint and the deliberately edited timing variant. Keep their installed files, starting saves, and results separate so you can tell whether a failure belongs to the graph or to the changed delay.

Required environment

ComponentExact version
Cyberpunk 2077 for Windows (GOG)2.31a
WolvenKit8.19.0
ArchiveXL1.27.0
RED4ext1.30.0
redscript0.5.31

Record the observed values separately in each run. A required version printed in the template is not evidence that the machine actually used it.

Prepare two untouched saves

Before installing any Lab 2 checkpoint:

  1. choose two manual saves that have never loaded a build registering cqa002;
  2. copy each whole save-slot directory to retained evidence storage;
  3. label one for canonical-clean and the other for source-edit-failure;
  4. record the slot-directory name;
  5. confirm neither save has loaded Lab 2 before; note that history with the save.

A console reset of cqa002_* facts does not create a clean save. Neither does removing the archive after an earlier load: journal, fact, and active-node state may already be serialized.

Build and bind the canonical candidate

Use the unmodified completed checkpoint:

candidate id:       canonical-mode-2
node:               11
fact:               cqa002_test_mode
set exact value:    2
canonical:          true
  1. Close the game.

  2. Build and install the completed project with WolvenKit.

  3. Verify that only these candidate files are installed:

    archive\pc\mod\CQA_Lab02_SignalRace.archive
    archive\pc\mod\CQA_Lab02_SignalRace.archive.xl
    
  4. Confirm that all three registered depot paths in the .archive.xl match the project.

Run the canonical cases

Load only the save assigned to canonical-clean.

Stable first run

Observe and record:

  1. Signal Race activates once;
  2. both objectives activate once;
  3. the optional objective remains active before the roughly 120-second result;
  4. it succeeds after roughly 120 seconds of unpaused observation;
  5. the required objective and quest then succeed once;
  6. waiting at least 30 additional seconds creates no second journal notification or visible reactivation.

This execution supplies clean-save-stable-route, immediate-selector-versus-pause, and logical-and-fulfilment. The canonical source configures the positive case in which both AND comparisons can be fulfilled; the run records only its corresponding visible outcome. It does not hold signal_stop > 0 while mode is not 2, so it cannot prove a one-child negative control. Time observations should be measured and described; do not infer the selector/monitor distinction only from the final journal screen.

Mid-flow reload

Restore the untouched canonical save, start a separate execution, and save after both objectives activate but while the optional objective is still active before its roughly 120-second outcome. Reload that derived save. Record this as canonical-mid-flow-reload. Label the save and keep fresh logs. Note whether the remaining delay resumes, restarts, or behaves another way.

The required correctness result is eventual single completion without a duplicate journal activation. The timing result is an observation, not a preselected expectation.

Completed reload and reinstall

Use another execution from the original canonical save. After completion:

  1. make and retain a completed save;
  2. use it for canonical-completed-reload;
  3. reload it without changing the installed files and confirm there is no quest/objective reactivation or delayed visible journal update;
  4. retain this execution’s fresh logs;
  5. close the game, remove and reinstall the same candidate;
  6. use the same completed save for a new canonical-reinstall execution;
  7. confirm there is still no reactivation and retain a new log set.

Use the preserved installed files for reinstallation and load the same completed save for both completed-state tests.

Clean replay

Restore the original untouched save directory and repeat the stable route as canonical-clean-replay. Leave the same build installed and retain fresh logs.

Build and bind the source-edited candidate

Now close the game and remove the canonical archive and registration file. Create the controlled edit described in the authoring chapter:

candidate id:       source-edit-mode-1
node:               11
fact:               cqa002_test_mode
set exact value:    1
canonical:          false

Change no other property or resource. Build and install this mode-1 version separately from mode 2, and use its assigned untouched starting save.

Load only the second untouched save assigned to source-edit-failure. Give it a distinct save label and retained slot directory from the canonical original; its bytes may legitimately be identical if both slots were copied from the same clean baseline. Confirm:

  1. both objectives activate once;
  2. the optional objective remains active before the 30-second result;
  3. the optional objective then fails once;
  4. the required objective and quest still succeed once;
  5. waiting at least 30 additional seconds produces no unexpected duplicate completion in this controlled variant.

This supplies source-edit-failure-route and, together with the canonical run, xor-route-convergence. The exact graph maps the two authored routes to In1 and In2; the player-visible runs show that both outcomes reach the common completion sequence. They do not deliver both inputs during one execution, so they do not prove winner, cancellation, repeat-emission, or simultaneous-arrival policy.

Retain logs per run

For each of the six executions, close the game after the required observations and retain fresh copies of:

red4ext\plugins\ArchiveXL\ArchiveXL.log
red4ext\logs\red4ext.log
red4ext\logs\game.log
r6\logs\redscript_rCURRENT.log

Hash all four files under that run. Search for the candidate registration file, cqa002, and errors naming any registered depot path, journal lookup, localization lookup, or condition resource. Clean logs establish that those systems did not report an error; they do not replace the in-game route observations.

Restore canonical source

After the edited run:

  1. close the game and remove the mode-1 installed files;
  2. restore node 11 to exact value 2 or discard the edited working copy;
  3. reopen the unmodified completed checkpoint;
  4. restore either no Lab 2 installation or the unchanged canonical candidate;
  5. keep both candidates and all six execution/evidence bundles labelled separately.

The downloadable completed checkpoint always remains mode 2. The mode-1 archive is a test artifact, not a second shipped example.

Common test failures

SymptomCheck
Quest is already active or complete on the first runStop and replace the save with a whole slot captured before any cqa002 candidate was installed; fact resets do not clean journal or active-node state
Optional objective changes too early to observeConfirm the installed installed files and raw node 18 = 30 seconds / node 20 = 120 seconds; remove stale archives before reinstalling
Canonical and edited results cannot be attributedKeep installed files, untouched-save labels, slot-directory identities, executions, and logs separate; identical clean-save bytes are allowed
Reload result is ambiguousRecord whether the timer resumed or restarted, but require only eventual single completion without duplicate activation
One evidence note is reused for every executionKeep separate observations and a fresh four-log set for each run in your test folder
Internal node or socket behavior is claimed from the journal UIRecord only visible states and timing; use the exact graph for structural route mapping and leave winner/cancellation/tie policy Experimental

Lab sequence: All labs · Previous: Author Signal Race in WolvenKit · Next lab: Lab 3: Boundary Check.