Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ee5752f
feat(psych-bench): add SYM-ARCH-001 discrimination campaign
Tristan-Stoltz-ERC Aug 24, 2026
9e8c96e
feat(psych-bench): expose architecture benchmarks
Tristan-Stoltz-ERC Aug 24, 2026
1e976c7
feat(psych-bench): add SYM-ARCH-001 evidence runner
Tristan-Stoltz-ERC Aug 24, 2026
edefc8a
docs(research): preregister SYM-ARCH-001
Tristan-Stoltz-ERC Aug 24, 2026
377dca0
ci(research): run SYM-ARCH-001 on pull requests
Tristan-Stoltz-ERC Aug 24, 2026
e740695
ci(research): keep formatting separate from evidence execution
Tristan-Stoltz-ERC Aug 24, 2026
eb931fb
fix(test): remove stale loop trial fixture field
Tristan-Stoltz-ERC Aug 25, 2026
6a25ea6
Merge pull request #53: SYM-ARCH-001 preregistered architecture discr…
Tristan-Stoltz-ERC Aug 25, 2026
0351cc5
docs(research): freeze SYM-ARCH-001 negative result
Tristan-Stoltz-ERC Aug 25, 2026
161fd01
Merge pull request #63: freeze SYM-ARCH-001 negative result
Tristan-Stoltz-ERC Aug 25, 2026
76a5904
ci(research): add guarded NixOS runner fallback
Tristan-Stoltz-ERC Aug 25, 2026
d66c4ee
ci(research): keep hosted core and supersede stale runs
Tristan-Stoltz-ERC Aug 25, 2026
f86c0c7
chore(research): sync main into SYM-ARCH-002A core
Tristan-Stoltz-ERC Aug 25, 2026
d233161
ci(research): freeze SYM-ARCH-001 post-result execution
Tristan-Stoltz-ERC Aug 25, 2026
05208fb
ci(research): freeze SYM-ARCH-001 post-result execution
Tristan-Stoltz-ERC Aug 25, 2026
be70d4c
chore(research): sync post-result CI hygiene into 002A core
Tristan-Stoltz-ERC Aug 25, 2026
b43ddb1
ci: supersede stale showroom integrity runs
Tristan-Stoltz-ERC Aug 25, 2026
e143c61
ci: supersede stale showroom integrity runs
Tristan-Stoltz-ERC Aug 25, 2026
9087e9a
chore(research): sync showroom queue hygiene into 002A core
Tristan-Stoltz-ERC Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/showroom-integrity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,23 @@ on:
pull_request:
branches: [main]

concurrency:
# Showroom integrity is repo-wide, but only the latest commit for a branch/PR
# needs to consume runner capacity. Supersede stale automatic validations.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
validate-ring0:
name: Ring 0 Buildability Audit
runs-on: ubuntu-latest
if: github.repository == 'Luminous-Dynamics/symthaea'
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Verify Metadata
run: cargo metadata --no-deps --format-version 1

Expand All @@ -27,6 +33,6 @@ jobs:
run: |
# Ensure no forbidden dependencies
! rg -i 'mycelix|prism|holochain|swarm|robotics|symtropy-robotics|zero.?knowledge|zkp|pqc|private monorepo|internal only' .

# Check license
head -n 5 LICENSE | grep "GNU AFFERO GENERAL PUBLIC LICENSE"
120 changes: 120 additions & 0 deletions .github/workflows/sym-arch-001.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# SYM-ARCH-001 concluded on 2026-08-25 with a frozen NEGATIVE verdict.
#
# Ordinary pull requests now perform only implementation regression checks on the
# exact historical experiment surface. The full campaign is intentionally manual:
# a later reproduction must not be mistaken for a second confirmatory sample or
# overwrite the durable result in docs/research/SYM_ARCH_001_RESULT_2026-08-25.md.
name: SYM-ARCH-001 Architecture Discrimination

on:
pull_request:
branches: [main]
paths:
- '.github/workflows/sym-arch-001.yml'
- 'crates/domains/symthaea-psych-bench/src/benchmarks/architecture.rs'
- 'crates/domains/symthaea-psych-bench/src/benchmarks/mod.rs'
- 'crates/domains/symthaea-psych-bench/src/bin/sym_arch_001.rs'
- 'crates/domains/symthaea-psych-bench/Cargo.toml'
- 'docs/research/SYM_ARCH_001_PREREGISTRATION_2026-08-24.md'
workflow_dispatch:

concurrency:
# Automatic branch runs supersede stale queued/running checks. Manual historical
# reproductions are deliberate evidence requests and therefore never cancel one
# another or get cancelled by a subsequent push.
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'workflow_dispatch' && github.run_id || 'auto' }}
cancel-in-progress: true

permissions:
contents: read

env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1

jobs:
sym-arch-001:
name: Historical experiment regression / reproduction
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- uses: actions/checkout@v4

- name: Setup Rust
uses: dtolnay/rust-toolchain@1.96.0

- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-sym-arch-001-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-sym-arch-001-

- name: Compile and run experiment unit tests
run: |
cargo test -p symthaea-psych-bench --lib benchmarks::architecture -- --nocapture
cargo check -p symthaea-psych-bench --bin sym_arch_001

- name: Run historical SYM-ARCH-001 reproduction
if: github.event_name == 'workflow_dispatch'
run: |
cargo run -p symthaea-psych-bench --bin sym_arch_001 --release -- \
--output artifacts/sym-arch-001-reproduction/report.json

- name: Validate and summarize reproduction evidence
if: github.event_name == 'workflow_dispatch'
run: |
python3 - <<'PY'
import json
from pathlib import Path

path = Path('artifacts/sym-arch-001-reproduction/report.json')
report = json.loads(path.read_text())
assert report['schema'] == 'symthaea.sym-arch-001.v1'
assert report['decision']['verdict'] in {'PASS', 'MIXED', 'NULL', 'NEGATIVE'}
assert len(report['agents']) == 5
assert all(len(a['per_seed']) == 16 for a in report['agents'])

print('=== SYM-ARCH-001 historical reproduction ===')
print('reproduction verdict:', report['decision']['verdict'])
print('frozen scientific verdict remains: NEGATIVE (2026-08-25)')
for a in report['agents']:
print(
f"{a['agent']:20s} "
f"retention={a['retention']['mean']:.3f} "
f"composition={a['compositional']['mean']:.3f} "
f"forgetting={a['forgetting']['mean']:.3f} "
f"reversal={a['reversal_final']['mean']:.3f} "
f"latency={a['reversal_latency']['mean']:.1f}"
)

summary = Path(__import__('os').environ['GITHUB_STEP_SUMMARY'])
with summary.open('a') as f:
f.write('## SYM-ARCH-001 historical reproduction\n\n')
f.write('This run is a **reproducibility/regression check**, not a new confirmatory sample.\n\n')
f.write('The frozen scientific verdict remains **`NEGATIVE` (2026-08-25)** and is recorded in `docs/research/SYM_ARCH_001_RESULT_2026-08-25.md`.\n\n')
f.write(f"**Reproduction verdict:** `{report['decision']['verdict']}`\n\n")
f.write('| agent | retention | composition | forgetting ↓ | reversal | latency ↓ |\n')
f.write('|---|---:|---:|---:|---:|---:|\n')
for a in report['agents']:
f.write(
f"| `{a['agent']}` | {a['retention']['mean']:.3f} | "
f"{a['compositional']['mean']:.3f} | {a['forgetting']['mean']:.3f} | "
f"{a['reversal_final']['mean']:.3f} | {a['reversal_latency']['mean']:.1f} |\n"
)
PY
sha256sum artifacts/sym-arch-001-reproduction/report.json \
| tee artifacts/sym-arch-001-reproduction/SHA256SUMS

- name: Upload historical reproduction artifact
if: github.event_name == 'workflow_dispatch'
uses: actions/upload-artifact@v4
with:
name: sym-arch-001-reproduction-${{ github.sha }}
path: artifacts/sym-arch-001-reproduction/
retention-days: 90
6 changes: 6 additions & 0 deletions .github/workflows/sym-arch-002a-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ on:
- 'Cargo.lock'
workflow_dispatch:

concurrency:
# Keep only the latest automatic run for a branch. Manual dispatch remains
# non-cancellable because it is a deliberate request for a definitive run.
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'workflow_dispatch' && github.run_id || 'auto' }}
cancel-in-progress: true

permissions:
contents: read

Expand Down
Loading
Loading