Skip to content

feat(review): add fail-closed local review cascade (clean replacement for #26) - #33

Merged
aurascoper merged 6 commits into
docs/eeg-methods-scopefrom
feat/local-dialectic-review-clean
Jul 27, 2026
Merged

feat(review): add fail-closed local review cascade (clean replacement for #26)#33
aurascoper merged 6 commits into
docs/eeg-methods-scopefrom
feat/local-dialectic-review-clean

Conversation

@aurascoper

@aurascoper aurascoper commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Clean replacement for #26, which had accumulated unrelated EEG research, Android
operations, and infrastructure work and was no longer reviewable as one change.

What this contains

The minimal tested dependency closure for the fail-closed local review cascade —
the first four commits of the original branch, with their identities preserved:

c007c2b  feat(logging): add local dialectic review
6ae9b96  fix(logging): fail closed on review citations
76a90e2  feat(review): add fail-closed local review cascade
2a8869e  docs(review): record local review governance

No cherry-picking or path surgery was needed. On the original branch the seven
unrelated commits were appended after these four rather than interleaved with
them, so the review cascade is a contiguous prefix and this branch is a lossless
extraction of it.

Diff scope (12 files):

Scripts/local_open_weight_review.py
Scripts/local_review_noninterference.py
Scripts/quarantine_dialectic_corpus.py
Scripts/research_decision_register.py
Scripts/review_quarantined_dialectics.py
Tests/eval/test_local_dialectic_review.py
Tests/eval/test_local_open_weight_review.py
configs/local-open-weight-review-v0.json
docs/architecture/dialectic-corpus-quarantine.md
docs/architecture/local-open-weight-review-cascade-gate-report.md
docs/architecture/local-open-weight-review-cascade.md
docs/scoping/research-decision-register.schema.json

Scripts/quarantine_dialectic_corpus.py (landed in #25) is modified by exactly
one line — adding eligible_for_science: False to the DISPOSITION contract,
which the cascade depends on.

Deliberately excluded

Preserved on the original branch, not transferred here:

NeuralComposeEEG/... jepa_synthetic + JEPA/SVD experiment scoping
function-space foundations research package
docs/NeuralCompose-android-client-prompt.md
docs/termux/*  (canonical copies belong in neuralcompose-client)
docs/operations/three-node-workflow.md

Verification

Run against this branch:

py_compile (5 scripts)                        OK
JSON validity (2 config/schema files)         OK
git diff --check                              clean
python3 -m unittest Tests.eval.{test_local_dialectic_review,
  test_local_open_weight_review, test_dialectic_corpus_quarantine}
                                              25 passed / 1 error

Final verification

The structured-state prerequisite landed in #35. The branch was then merged
forward onto the current docs/eeg-methods-scope head without rewriting its
four review-cascade commits.

Focused review-cascade suite:

  • 26 passed
  • 0 failed
  • 0 errors

Full Python CI:

The eval collection is 86 rather than staging's 62 because this PR adds the
review-cascade suites: 62 on the base, plus the 24 new tests in
test_local_dialectic_review.py and test_local_open_weight_review.py
(the focused set is 26, two of which already existed in
test_dialectic_corpus_quarantine.py).

Additional gates:

  • py_compile: pass
  • JSON validation: pass
  • git diff --check: clean
  • Swift build-and-test: pass

The three deselections are pre-existing statistical-contract questions tracked
in #38. No entire module or file is excluded because of them.

One test change was required by the new base

5117a9e repoints the shadow replay test's output under root/shadow/.

It had been writing its state manifest to root/manifest.json — the same path
test_pipeline._manifest writes the source manifest to — so every run
silently clobbered the fixture. #35's immutable-publication guard turns that
into an error rather than a silent overwrite, which is how it was found. The
identical collision existed in #35's own suite and was fixed there the same way.

@aurascoper

Copy link
Copy Markdown
Owner Author

Prerequisite chain for this PR is now open:

Once #35 lands, this branch needs its base advanced so the module is present, after which the full 26-test set should pass. Holding as draft until then.

aurascoper and others added 2 commits July 27, 2026 11:51
Brings in the structured-state module (#35) that
test_synthetic_structured_state_replay_remains_shadow_only imports, plus the
NumPy fix (#36) and the Python contract CI job (#37).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The structured-state replay test wrote its state manifest to root/manifest.json
— the same path test_pipeline._manifest writes the *source* manifest to. That
silently clobbered the fixture until #35 made the shadow bridge refuse to
overwrite an existing artifact that differs.

Same collision, same fix as #35 applied to its own suite: publish under
root/shadow/.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@aurascoper

Copy link
Copy Markdown
Owner Author

Correcting one figure in the description before merge.

CI collected 86 eval tests, not the 62 I originally recorded:

Ran 53 tests in 8.166s ... OK                      NeuralComposeEEG contracts
collected 86 items / 3 deselected / 83 selected
83 passed, 3 deselected in 3.12s                   Tests/eval

62 was the staging baseline. This PR adds test_local_dialectic_review.py and test_local_open_weight_review.py, contributing 24 tests (the focused set is 26, two of which already existed in test_dialectic_corpus_quarantine.py). 62 + 24 = 86. The EEG count of 53 matches the local run exactly.

Description updated. Nothing failed — the number moved because the suite grew with this PR's own tests.

@aurascoper
aurascoper marked this pull request as ready for review July 27, 2026 17:02
@aurascoper
aurascoper merged commit 48652e9 into docs/eeg-methods-scope Jul 27, 2026
2 checks passed
@aurascoper
aurascoper deleted the feat/local-dialectic-review-clean branch July 27, 2026 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant