Skip to content

ci: run A2 app and session suites - #42

Merged
aurascoper merged 1 commit into
docs/eeg-methods-scopefrom
ci/a2-app-session-suites
Jul 27, 2026
Merged

ci: run A2 app and session suites#42
aurascoper merged 1 commit into
docs/eeg-methods-scopefrom
ci/a2-app-session-suites

Conversation

@aurascoper

Copy link
Copy Markdown
Owner

Prerequisite for #32's operator matrix. Owned by the D0/CI lane, so ci.yml stays with its named owner rather than growing #32 by a twenty-second unrelated file.

CI runs 5 of 9 declared test targets

Package.swift declares nine test targets. The deterministic step names five. Two of the omitted ones carry #32's load-bearing regressions:

Target Discovered In CI before this PR
NeuralComposeAppTests 116 no
DialecticSessionTests 5 no

That is 121 tests CI has never executed, including the app-level fail-closed runtime, runtime-presentation, cancellation, and headless runtime-factory behaviour #32 depends on. Both targets pass on this base with 0 failures.

This also accounts for most of the 417-vs-616 gap. swift test list discovers 580 tests on this base; CI's filtered subset executes 417.

BCILLMTests and WorldModelDemoTests stay unselected deliberately — MLX .eval() faults on a GPU-less runner, and the WorldModel demo needs exported CoreML artifacts.

The guard is the point

A --filter that matches nothing exits 0. Adding the targets without a guard would risk exactly the failure mode this repository keeps finding: a green step that ran nothing.

Two layers:

  1. Sentinel classes, one per target — AppViewModelRuntimeFailClosedTests, RuntimeFactoryClaudeResolutionTests.
  2. Discovered-count floors per target, because sentinels alone would still pass if the rest of a target vanished. Floors are 100 and 5, below the current 116 and 5, so ordinary test additions never trip them.

One correction to the proposed guard

The directive specified a third sentinel, RuntimeIdentityPresentationTests. It does not exist on this base — it is one of #32's own 21 files, and swift test list | grep -c returns 0 for it here.

Including it would have failed this PR's CI on the first run. It is omitted with a comment telling #32 to add it as a third sentinel when that file lands, so the guard stays true at every revision rather than being aspirational at this one.

Verification

Rehearsed locally against this exact base:

swift test list                                  580 discovered
  AppViewModelRuntimeFailClosedTests               3
  RuntimeFactoryClaudeResolutionTests              5
  RuntimeIdentityPresentationTests                 0   <- arrives with #32
  NeuralComposeAppTests                          116
  DialecticSessionTests                            5

swift test --filter NeuralComposeAppTests \
           --filter DialecticSessionTests       121 executed, 0 failures

yaml parse                                       OK
git diff --check                                 clean

After this merges

Merge-forward docs/eeg-methods-scope into #32 again, confirm A–G plus 9eabad6 plus the new merge-forward all remain ancestors, confirm the #32 diff is still the same 21 application files, and confirm all three surfaces green — deterministic subset, the new A2 app/session step, and Python 53 + 89/89. Only then start the packaged operator matrix.

The deterministic Swift step names five targets. Package.swift declares nine,
and two of the omitted ones carry PR #32's load-bearing regressions:

    NeuralComposeAppTests    116 tests   fail-closed runtime, presentation
    DialecticSessionTests      5 tests   headless runtime factory

121 tests that CI has never executed, which is most of the gap between the
417 CI reports and the 616 in the historical acceptance record. Both pass on
this base with 0 failures.

A `--filter` matching nothing exits 0, so adding the targets alone would risk
another green step that ran nothing. The guard asserts one sentinel class per
target and floors each target's discovered count, since sentinels alone would
still pass if the rest of a target vanished. Floors sit below the current
116/5 so ordinary additions never trip them.

RuntimeIdentityPresentationTests is deliberately not asserted: it arrives with
#32 and does not exist on this base. Grepping for it here would fail CI
immediately. #32 adds it as a third sentinel when that file lands.

BCILLMTests and WorldModelDemoTests remain unselected — MLX .eval() faults on a
GPU-less runner, and the WorldModel demo needs exported CoreML artifacts.

ci.yml stays under its named D0/CI lane owner rather than growing #32 by a
twenty-second unrelated file.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@aurascoper
aurascoper merged commit 9548da4 into docs/eeg-methods-scope Jul 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant