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.
| Record | Value |
|---|---|
| Structural validation date | 2026-08-09 |
| Runtime test date | Not 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
| Component | Exact version |
|---|---|
| Cyberpunk 2077 for Windows (GOG) | 2.31a |
| WolvenKit | 8.19.0 |
| ArchiveXL | 1.27.0 |
| RED4ext | 1.30.0 |
| redscript | 0.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:
- choose two manual saves that have never loaded a build registering
cqa002; - copy each whole save-slot directory to retained evidence storage;
- label one for
canonical-cleanand the other forsource-edit-failure; - record the slot-directory name;
- 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
-
Close the game.
-
Build and install the completed project with WolvenKit.
-
Verify that only these candidate files are installed:
archive\pc\mod\CQA_Lab02_SignalRace.archive archive\pc\mod\CQA_Lab02_SignalRace.archive.xl -
Confirm that all three registered depot paths in the
.archive.xlmatch the project.
Run the canonical cases
Load only the save assigned to canonical-clean.
Stable first run
Observe and record:
- Signal Race activates once;
- both objectives activate once;
- the optional objective remains active before the roughly 120-second result;
- it succeeds after roughly 120 seconds of unpaused observation;
- the required objective and quest then succeed once;
- 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:
- make and retain a completed save;
- use it for
canonical-completed-reload; - reload it without changing the installed files and confirm there is no quest/objective reactivation or delayed visible journal update;
- retain this execution’s fresh logs;
- close the game, remove and reinstall the same candidate;
- use the same completed save for a new
canonical-reinstallexecution; - 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:
- both objectives activate once;
- the optional objective remains active before the 30-second result;
- the optional objective then fails once;
- the required objective and quest still succeed once;
- 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:
- close the game and remove the mode-1 installed files;
- restore node
11to exact value2or discard the edited working copy; - reopen the unmodified completed checkpoint;
- restore either no Lab 2 installation or the unchanged canonical candidate;
- 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
| Symptom | Check |
|---|---|
| Quest is already active or complete on the first run | Stop 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 observe | Confirm 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 attributed | Keep installed files, untouched-save labels, slot-directory identities, executions, and logs separate; identical clean-save bytes are allowed |
| Reload result is ambiguous | Record whether the timer resumed or restarted, but require only eventual single completion without duplicate activation |
| One evidence note is reused for every execution | Keep 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 UI | Record 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.