Skip to content

export: from monorepo @ 6a2fdb112e - #31

Open
Tristan-Stoltz-ERC wants to merge 14 commits into
mainfrom
export/6a2fdb112e-20260727-180925
Open

export: from monorepo @ 6a2fdb112e#31
Tristan-Stoltz-ERC wants to merge 14 commits into
mainfrom
export/6a2fdb112e-20260727-180925

Conversation

@Tristan-Stoltz-ERC

Copy link
Copy Markdown
Contributor

Automated export from monorepo commit 6a2fdb112e9d009a9b66990efb4d6c874db6416c.

Source commit: 6a2fdb112e9d009a9b66990efb4d6c874db6416c
Transformed tree hash: d8a7b7538b7a0286e2e3dcd68eac4e639ff5a937

Generated by export-to-standalone.sh, which exports via git archive
from the exact commit above (never the live working tree) — see
issue #25
for why the old sync-to-standalone.sh could not guarantee this.

Review before merging. Do not squash away the source-commit/tree-hash
provenance in the commit message.

Source commit:          6a2fdb112e9d009a9b66990efb4d6c874db6416c
Transformed tree hash:  d8a7b75

Exported via git archive from the exact pinned commit above -- not from a
live working tree. See export-to-standalone.sh and
Luminous-Dynamics/luminous-dynamics#25 for why
this matters.
@Tristan-Stoltz-ERC

Copy link
Copy Markdown
Contributor Author

Local verification status (before opening this PR)

Pinned source commit: 6a2fdb112e9d009a9b66990efb4d6c874db6416c (not main's
current tip — deliberately pinned to the exact commit actually verified
below, per this exporter's whole design goal of provenance over convenience).

Confirmed passing locally (via export-to-standalone.sh's check battery,
capped at CARGO_BUILD_JOBS=2 due to heavy concurrent load on the build
host):

  • cargo metadata --no-deps — parses cleanly. This is the actual fix: prior
    standalone main could not even parse its own workspace manifest (see
    build(deps): bump tree-sitter-rust from 0.23.3 to 0.24.2 #25). Root cause was two independent bugs in the sync tooling, both fixed
    in this exporter: (1) a dot-count-based path-escape regex that couldn't
    distinguish a legitimate 3-level self-reference from a genuine 4-level
    external escape, incorrectly stripping symthaea-psych-bench's and
    symthaea-pulse's own dependency on their crate root; (2) a blind
    [workspace.dependencies] stub-injection that assumed mycelix-zkp-core/
    symtropy-robotics-bridge-core were never declared directly, which had
    drifted false, producing a duplicate-key TOML parse error.
  • cargo fmt --check — passes
  • cargo check (default features) — passes
  • cargo check --manifest-path crates/hdc-zkp-bench/Cargo.toml — passes

Not verified to completion locally: cargo check -p symthaea --features '<~50 CI features>' (mirrors ci.yml's clippy job feature set). One known
bug in this check was found and fixed (three stale feature names --
vision/perception/full_perception -- removed from Cargo.toml by the
byte-hash perception-stratum deletion, commit 219c1c5c7c, but still
referenced in this script's copy of the feature list). After that fix, the
check did not error again in several attempts, but also did not finish
within available local wall-clock time under current host load (13+
concurrent sessions, load avg ~23-37) even with parallelism capped -- not a
confirmed failure, an incomplete run. This is exactly the kind of check
standalone CI itself exists to run without that contention. Flagging
explicitly rather than silently treating "didn't finish" as "passed."

Separately fixed, unrelated to this export: monorepo HEAD itself had a
stale symthaea-nix-web crate depending on the already-renamed-away
symthaea-nix -- would have broken cargo metadata independent of any
export tooling. Fixed and committed on the monorepo side (not part of this
diff).

See symthaea/scripts/export-to-standalone.sh's own comments for the full
mechanism writeup (provenance model, why sync-to-standalone.sh is
disabled, git-archive-based export).

Tristan-Stoltz-ERC and others added 4 commits July 27, 2026 18:31
Cherry-picked from monorepo commit fb3d779f67. The 2026-07-26 comma
cache-key fix used replace(matrix.features, ',', '_'), which doesn't
exist in the Actions expression language -- this failed validation
for the entire workflow file (zero jobs created, "This run likely
failed because of a workflow file issue"), confirmed via actionlint.
Fixed by computing the substitution in a shell step instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cherry-picked from monorepo commit da873db799. The example file has
never existed on any branch; the [[example]] entry was breaking
cargo fmt/cargo metadata target resolution (Format Check and
Documentation Tests both failed on "file ... does not exist" in this
PR's real CI run).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Source commit: b6f4ccaf2a356c6aee79a9db8ae3d3e42241a477

Refreshes this PR against current monorepo state to get a clean CI
signal -- the prior run was contaminated by a transient uncommitted-
file race (calibrated_intent_confidence.rs, since committed by its
author) that caused near-universal spurious failures unrelated to
real code health.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Source commit: d9b73394b4e6ed1d7d890e7823a2b11c9e8b833d

Includes the two real fixes found triaging this PR's first clean CI
run: hdc_treasury gated behind hdc-treasury feature (off by default --
its privacy/threshold claims aren't backed by real crypto, see
crates/core/symthaea-core/Cargo.toml), and nixward's config_writer
live tests now skip gracefully when nix-instantiate isn't on PATH
instead of panicking (was failing nearly every feature-combination
leg regardless of the feature under test, since nixward is a default
workspace member).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Tristan-Stoltz-ERC

Copy link
Copy Markdown
Contributor Author

Matrix-triage session summary (2026-07-27)

Structural blockers found and fixed (all in this PR / the source monorepo):

  • Sync-integrity bugs (6, in export-to-standalone.sh): dot-count path-stripping
    false positives, --dry-run skipping its own checks, duplicate-key
    [workspace.dependencies] injection, missing pipefail masking real
    failures, stale CI_FEATURES list, stale rustfmt toolchain version.
  • ci.yml's replace() expression bug — not a valid GitHub Actions function,
    silently failed validation for the entire workflow file since
    2026-07-26 (zero jobs could run). This was the biggest single blocker.
  • Two pre-existing monorepo bugs unrelated to sync tooling: stale
    symthaea-nix-web crate, dead [[example]] manifest entry.
  • hdc_treasury gated behind an off-by-default feature — its
    privacy/threshold claims aren't backed by real crypto (own dependencies'
    deprecation notes say so), was failing clippy -D warnings for the whole
    crate.
  • nixward's config_writer live tests now skip gracefully when
    nix-instantiate isn't installed, instead of panicking — this was
    failing nearly every Test Feature Combinations leg regardless of the
    feature under test, since nixward is a default workspace member.

Current state (this run, real signal for the first time): 19 jobs
passing clean (Format Check, Governance Check, Dependency Audit, Secrets
Scan, Security Audit, Ring 0 Buildability Audit, Workspace Target Integrity,
Hardened Lib/Daemon Regressions, most symthaea-broca legs, etc.). Real
remaining failures, not yet triaged individually: Clippy (25+ real style
lints in symthaea-vision-manifold alone under -D warnings, likely more
in other crates — attempted cargo clippy --fix but couldn't complete it
locally under severe host load, 50-64 sustained), Documentation Tests,
Hardened API Regressions, Compliance (Robustness & Governance),
Compliance (Safety & Ethics), Hardened Nix Regressions,
Test CI-safe (science-infra), Test Feature Combinations (mesh),
WASM Compatibility (Spore), symthaea-broca (test-helpers).

This remaining tail has the character of months of accumulated debt that
was invisible while CI was structurally broken, not a handful of root
causes — treating it as its own follow-up triage effort rather than
finishing it in this pass. Each failure needs the same individual log-
pull-and-diagnose treatment the fixes above got; none has been assumed to
share a cause without verification.

@Tristan-Stoltz-ERC

Copy link
Copy Markdown
Contributor Author

Do not merge unchanged — export-bloat findings

Audited this branch's full tracked tree (9,942 files, 262MB) before considering merge. Concrete findings:

  • crates/domains/symthaea-muse/UI_mocks/ChatGPT*.png — 40 files, ~54MB. These are design-ideation screenshots, not source. They don't belong in a flagship standalone repo's source tree.
  • crates/domains/symthaea-scan/releases/sovereign-scan-x86_64-unknown-linux-gnu — a checked-in compiled ELF binary (1.8MB). Compiled release artifacts shouldn't be committed to source; they belong in GitHub Releases.
  • crates/domains/symthaea-exoskeleton/symthaea-exoskeleton-{hal-series-18,24,30,36,42,48,54,60,66,72,10of10-candidate,series-12-candidate}/ — a chain of ~14 snapshot/candidate subdirectories, ~430KB of what looks like iterative working notes rather than the current crate state. Low bloat by size, but reads as transient session artifacts leaking into source.
  • papers/**/*.pdf — ~150+ PDFs. I'm treating these as legitimate (the README explicitly points researchers at papers/), not flagging for removal, but they're the majority of this repo's real weight and worth a deliberate policy (Releases vs. in-tree) rather than default inclusion.

I did not find the specific crates/domains/symthaea-vocal-tract.tar.gz / provisional-patent-PDF example an external review flagged — those files exist as untracked scratch in the monorepo working tree but never made it into this export. Worth knowing the export script already avoids some of this class of problem; the UI_mocks/binary issue above are new findings, not a repeat of that one.

Action taken: pushed export-bloat gates to scripts/export-to-standalone.sh (excludes UI_mocks/, platform release binaries, and archive formats) in the monorepo — this PR predates that fix, so it still carries the bloat above. Recommend closing this PR and re-running the export once the gated script produces a clean tree, rather than trying to hand-prune this branch.

Not resolved by the gate fix, left as an open scoping question: whether crates/domains/ should export every experimental domain crate wholesale (current behavior) vs. a curated "supported public surface" list. That's a bigger call than a bloat gate and belongs in its own decision, not bundled into this review.

Tristan-Stoltz-ERC and others added 3 commits July 28, 2026 13:36
Triaging PR #31's remaining CI failures found a single high-leverage root
cause: 11 test files under tests/ existed on disk but were never declared
as [[test]] targets, and this crate sets autotests = false. Every
`cargo test --test <name>` invocation for these files failed with
"no test target named X in default-run packages".

Verified 9 of the 11 compile clean via `cargo test --no-run` in the source
monorepo (adversarial_moral_algebra, api_integration, calibration_e2e,
pathology_resilience, proptest_cognitive_loop, proptest_feedback_stability,
proptest_threshold_sensitivity, safety_agent_escalation_soak,
substrate_simulation). voice_integration/voice_pipeline_integration need
the voice-tts feature (libclang via nix develop), not locally verified but
registered via the identical pattern -- CI's own runners already build
this feature combination elsewhere in the matrix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Format Check: rustfmt the 9 test files registered in Cargo.toml earlier
this session -- they'd never been run through rustfmt since nothing
discovered them under autotests=false until that fix landed.

Clippy (symthaea-vision-manifold, 25 real -D warnings errors):
- field_reassign_with_default in fresh_modality_context: applied clippy's
  own suggested real fix (construct with named fields + ..Default::default()
  instead of default-then-reassign).
- 7 dead_code warnings on YUYV decode/validate helpers in camera.rs: these
  are real, tested code (used by the general #[cfg(test)] module and by the
  camera-feature-gated hardware capture path), just invisible to a lib-only
  clippy check under default features. Suppressed with #[allow(dead_code)]
  and a comment explaining why, rather than deleting live logic.
- 5 too_many_arguments + a duplicated complex return type across
  checkpoint.rs/encoder.rs/manifold.rs: the two occurrences of
  Result<(ContinuousHV, Vec<ContinuousHV>, Vec<Vec<ContinuousHV>>), String>
  got a real fix (MultiScaleEncodeResult type alias, clippy's own
  type_complexity suggestion). The too_many_arguments sites are private/
  narrow-call-site helpers whose parameter lists are genuinely load-bearing
  (auth+versioning+retention+locking surface; frame geometry + temporal/
  stereo inputs) -- refactoring into param structs would just relocate the
  same complexity for a handful of call sites, so these got targeted
  #[allow(clippy::too_many_arguments)] with justification instead.

symthaea-vision-manifold now clean under `cargo clippy -- -D warnings`;
431/431 lib tests pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…PI drift, coalition ignition, lockfile

Six independent fixes found by pulling and diagnosing each failing PR #31
CI job's raw logs, mirrored from monorepo commit 8f0412f170
(Luminous-Dynamics/luminous-dynamics, review/symthaea-bridges-security):

- src/bridge.rs (vision-manifold): apply clippy's own collapsible_if
  suggestion (nested if-let -> let-chain) at the two sites the prior CI
  pass missed. Verified clean via `cargo clippy -p symthaea-vision-manifold
  --lib -- -D warnings` (exit 0).

- symthaea-runtime/src/formal/z3_bridge.rs: fix the crate's own doc-example
  import path (`symthaea::z3_bridge::` -> `symthaea_runtime::formal::
  z3_bridge::`), which doesn't exist and failed `cargo test --doc`.

- src/mind/tests/mesh.rs: 49 sites constructing a packet with `auth_mac: 0`
  where the field is `[u8; 32]` -- E0308 across every "Test Feature
  Combinations" leg that reached this file. Fixed to `[0u8; 32]`, matching
  the exact convention already used twice in the production mesh.rs.

- symthaea-broca/tests/mock_pipeline.rs: the test file had drifted from
  LiquidMambaGenerator's real API (54 compile errors, 5 root causes).
  `.projection()`/`.config()` are now public fields, not methods.
  `distill_step(&ThoughtChannels, &GenerationResult)` doesn't exist --
  the real 2-arg wrapper is `train_step(&ThoughtChannels, &[u32])`, so
  calls become `.train_step(&channels, &result.token_ids)`.
  `check_projection_health()`/`last_cached_rank()` were removed entirely;
  the replacement is the already-public `projection.effective_rank(&hvs)`
  (or `temporal_proj().unwrap().effective_rank(&hvs)` for the
  temporal-projection variant), matching the pattern already live in
  `bin/broca_projection_train.rs`.

- symthaea-core/src/hdc/global_workspace.rs: the new
  test_coalition_ignition_fires_for_distinct_representations reintroduced
  a bug class already fixed once in this file (commit 4d2196e20f): under
  `ctc_wiring` (in default-mind, active on every CI feature-combo leg),
  activation is scaled by (0.5 + 0.5*pac_mi); with pac_mi=0 the test's
  0.45 activations halve to 0.225 and never clear entry_threshold at all,
  so the coalition path never even sees 2 contents. Fixed with the same
  `#[cfg(feature = "ctc_wiring")] ws.set_pac_mi(1.0)` pattern
  test_ignition_detection already uses.

- Cargo.lock: regenerated against this repo's own (export-transformed)
  Cargo.toml files -- the committed lockfile was missing 4 packages
  (multer, symthaea-consciousness-equation, symtropy-consciousness-physics,
  symtropy-physics) that Cargo.toml requires, which is exactly what made
  "Broca measurement artifacts" fail with `error: cannot update the lock
  file ... --locked was passed`. Regenerated via `cargo metadata` (no
  --locked) then verified `cargo metadata --locked` passes clean.

Not fixed in this pass (documented, not attempted): a reproducible
SIGSEGV in symthaea-core's --lib test binary across multiple feature-combo
legs; the WASM Spore binary exceeding its 500KB budget (665KB post -O2,
needs a real size-bisection); and Hardened Nix Regressions, which matches
a previously-disclosed, deliberately-deprioritized nested-git-repo
Cargo.lock issue.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Tristan-Stoltz-ERC

Copy link
Copy Markdown
Contributor Author

Closing and reopening to try to clear a wedged CI run (30368206707 has been stuck reporting in_progress with zero active/queued jobs for over an hour, apparently blocking the concurrency group from starting a fresh run for the latest commit).

Tristan-Stoltz-ERC and others added 3 commits July 29, 2026 11:44
…d.rs

Follow-up to e9eb2ba: that pass only grepped src/mind/tests/mesh.rs.
A local `cargo check -p symthaea --tests --features mesh` run found 3 more
identical E0308 sites in production code, all WisdomPacket construction
sites explicitly commented as placeholders filled in later by the mesh
bridge (matching mesh.rs:269's compute_packet_mac call). Verified via a
full local `cargo check -p symthaea --tests --features mesh` (0 errors).
Mirrored from monorepo commit 8d308d7652.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Mirrored from monorepo commit f374675ba2. Found via a workflow_dispatch
CI run on this branch (this crate wasn't part of the original PR #31
failure catalogue -- the original Clippy failure was scoped to
symthaea-vision-manifold only).

- lib.rs: drop 4 deprecated re-exports (remaining_carbon_budget,
  remaining_co2_budget, co2_radiative_forcing, grey_atmosphere_
  surface_temperature) -- their non-deprecated replacements are already
  re-exported alongside them. The one real external caller
  (src/language/earth_system_plugin.rs) switched to
  co2_radiative_forcing_myhre1998, a verified drop-in replacement.
- carbon_cycle.rs, forcing.rs: unused start_years/start_seconds bindings
  in a match guard arm -> `field: _`.
- driver.rs: collapsible nested if-let -> let-chain.
- ensemble.rs: manual even/odd check -> count.is_multiple_of(2).

Verified via `cargo clippy -p symthaea-earth-system --lib -- -D
warnings` (exit 0, was 8 errors).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Testing a hypothesis for the reproducible SIGSEGV in symthaea-core's
--lib test binary seen across most "Test Feature Combinations" legs
(humanoid, mesh, multirotor, swarm, service, shell, voice-tts confirmed
so far, same signal: signal 11 on both retry attempts, every time).

The only passing job that would exercise the same code, "Test (default
features)", differs in two ways at once: it scopes to `-p symthaea`
(never builds/runs symthaea-core's own test suite at all) AND forces
`--test-threads=1`. This isolates just the threading variable on the
`mesh` leg specifically (already a confirmed-crashing leg, keeps the
same --lib no-`-p` scope and feature set) to see if serial execution
alone is enough to stop the crash.

Not a real fix -- if this confirms the race, forcing --test-threads=1
across the whole 30+-leg matrix has a real CI-runtime cost that needs
its own decision. This commit exists purely to get a clean signal from
GitHub's runners instead of fighting for CPU time on a heavily
oversubscribed local dev box. Will be reverted or replaced by a proper
fix once the result comes back.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Tristan-Stoltz-ERC

Copy link
Copy Markdown
Contributor Author

Closing/reopening again to try to trigger a full pull_request-event CI run (workflow_dispatch only schedules a ~30-job subset, missing the specific 'mesh' leg needed for the SIGSEGV threading experiment in the latest commit).

Mirrored from monorepo commit 35fd53336f. Supersedes the 5456e0a
one-leg experiment with the generalized fix its result justified.
Root-caused via that targeted GitHub Actions experiment (mesh leg with
--test-threads=1) after local reproduction was infeasible under the
session's host contention.

- src/swarm/mesh/mesh_receiver.rs: MeshReceiver::new() defaulted
  expected_payload_size to WISDOM_PACKET_SIZE + 64, contradicting its own
  with_expected_payload_size() doc comment ("default: WISDOM_PACKET_SIZE")
  and the actual wire format (WisdomPacket::to_bytes() is exactly
  WISDOM_PACKET_SIZE bytes, no padding). This 64-byte mismatch made
  FragmentAssembler::assemble()'s FEC-recovery-of-the-last-fragment path
  compute a length 64 bytes past the fixed 214-byte fragment array,
  panicking with an index-out-of-bounds any time the missing/recovered
  fragment was the last one. Real reliability bug in the mesh FEC path,
  not just a test artifact -- confirmed by 4 independent test failures
  hitting it (test_fec_after_early_data_fragment_accepted directly, plus
  3 more indirectly via a tokio::spawn'd actor task that panicked
  silently since nothing awaited its JoinHandle).

- src/domain/mod.rs: two DomainProfile constructors didn't match their
  own physical premise. underwater() set store_and_forward_required but
  left preferred_transports at the default list -- which still starts
  with LocalMesh, so the classifier kept picking local RF mesh despite
  water attenuating it to uselessness. subterranean() used pure
  ..Default::default() for its whole transport profile, leaving
  store_and_forward_required false despite the type's own name
  ("_allows_store_and_forward_fragmentation") describing the opposite.

- src/mind/tests/mesh.rs: 3 tests failing for reasons unrelated to the
  bugs above, all newly visible for the first time since this file
  never compiled before (see the auth_mac fix in commit e9eb2ba):
  - test_process_mesh_dispatches_moral_topology: MoralTopology packets
    are unconditionally safety-critical (ContinuousMind::process_mesh's
    is_critical gate) and get fail-closed dropped without a valid MAC.
    Sign the test packet instead of asserting around a security gate.
  - test_process_mesh_updates_registry: same fail-closed gate, tripped
    by an unsigned packet the test marked MeshUrgency::Critical for no
    reason relevant to what it's testing (registry/avg-phi tracking).
    Changed to Normal.
  - test_swarm_phi_boosts_consciousness: ContinuousHV::perturb() draws
    entropy from a process-global atomic counter, not a seed, so calling
    it fresh in each mind's loop gave solo and swarm different
    perturbation sequences -- an uncontrolled confound on top of the
    15% swarm-phi boost the test is trying to isolate. Precompute one
    sequence, replay it identically for both minds.

- .github/workflows/ci.yml: force --test-threads=1 for the "Test Feature
  Combinations" job's main branch (~28 of ~30 legs; ssm_language and
  school_learning already have their own handling). symthaea-core's
  --lib suite segfaults under parallel execution; this job is the only
  one that runs it via a bare `cargo test --lib` (default-members)
  without also forcing serial threads. The exact racing test(s) are not
  yet isolated -- flagged as a known gap in the added comment -- but
  this stops CI from failing with zero signal in the meantime.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Tristan-Stoltz-ERC

Copy link
Copy Markdown
Contributor Author

Pushed the generalized fix (mesh FEC overflow bug, 2 domain-routing bugs, 3 test fixes, and the race-safe --test-threads=1 CI change validated by the earlier mesh-leg experiment). Closing/reopening once more to trigger a full pull_request-event CI run.

Tristan-Stoltz-ERC and others added 2 commits July 29, 2026 20:03
Test Feature Combinations experiment run (workflow 30477988293) found
"Embodiment Safety Composition" and "Orphan Module Check" both failing
with "No such file or directory" -- not real check failures, an export
gap. Both CI jobs and their scripts (check-embodiment-safety-
composition.sh, check-orphan-modules.sh) were added to the monorepo's
ci.yml/scripts/ today (2026-07-29), after this branch's original export
snapshot (2026-07-27). My last push copied the monorepo's current
ci.yml wholesale (to land an unrelated Test Feature Combinations fix)
and unintentionally brought the two new job *definitions* along with
it, without their scripts -- this was a manual incremental-copy gap,
not a bug in export-to-standalone.sh itself (scripts/ is already a full
SUPPORT_DIRS entry there; a real re-export would have included these).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…case

Mirrored from monorepo commit d7e8a5e20e. Two more real bugs found via
the mesh feature-combo CI verification run (the previous fixes
confirmed working -- zero SIGSEGV across humanoid/voice-tts/multirotor/
wasm-sandbox/mesh, 6 of 7 mesh test failures resolved). Unrelated to
mesh; the SIGSEGV was masking both across every "Test Feature
Combinations" leg that reaches them.

- src/mind/tests/mesh.rs (test_swarm_phi_boosts_consciousness): the
  previous perturbation-determinism fix was necessary but not
  sufficient -- CI showed both solo and swarm consciousness landing at
  exactly 1.0, a ceiling effect with no headroom for the 15% boost.
  Root cause: ConsciousnessCore's min_samples is 5, and the test used
  exactly 5 ticks -- the real spectral Phi computation only turns on
  for the very last tick, so consciousness_level reads its first-ever,
  structurally unstable measurement instead of a settled one. Bumped
  to 10 ticks so the spectral window gets several real measurements
  before this test reads it.

- crates/core/symthaea-eml-egraph/src/lib.rs
  (collapse_expr_candidates_groups_associative_multiplication_forms):
  its "unsupported" decoy was `x + y`, but Add is fully supported by
  expr_to_egg_sexp, so it silently became its own real equivalence
  class instead of landing in report.unsupported. A sibling test
  already proves the actual associative-mul merge this test is named
  for works fine -- only this test's premise about what's unsupported
  was stale. Swapped to cos(x), genuinely unhandled.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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