diff --git a/crates/misaligned-core/src/plot.rs b/crates/misaligned-core/src/plot.rs index b0a98ac1..3a65a9a1 100644 --- a/crates/misaligned-core/src/plot.rs +++ b/crates/misaligned-core/src/plot.rs @@ -851,10 +851,6 @@ mod tests { // Correspondence to the build-time discovered manifest — not a frozen // magic count. assert_eq!(catalog.plots().len(), BUILTINS.len()); - assert!( - !BUILTINS.is_empty(), - "build-time discovery found no plot TOML under assets/plots/" - ); let catalog_ids: BTreeSet<&str> = catalog.plots().iter().map(|p| p.id.as_str()).collect(); let discovered_ids: BTreeSet<&str> = BUILTINS.iter().map(|(stem, _)| *stem).collect(); diff --git a/wiki/log/2026-07-12-ci-clippy-version.md b/wiki/log/2026-07-12-ci-clippy-version.md new file mode 100644 index 00000000..9df1be51 --- /dev/null +++ b/wiki/log/2026-07-12-ci-clippy-version.md @@ -0,0 +1,35 @@ +# CI Clippy version compatibility + +``` +Type: log +``` + +## Intent + +Follow the repaired Tangled Rust wall through its first real execution and +repair any failure proven by the hosted environment rather than inferred from +local green checks. + +## Finding + +For source revision `735df436`, Tangled reported `corpus.yml`, `site.yml`, and +`spec-check.yml` green. The native path filter correctly dispatched +`check.yml`; its workspace test passed after the repaired `pkg-config` setup, +then the hosted Clippy rejected `!BUILTINS.is_empty()` in the built-in plot +catalog test under `clippy::const_is_empty`. The generated `BUILTINS` slice has +a compile-time-known nonzero length, so the assertion is a tautology to the +newer hosted toolchain. The local Clippy 1.96 did not yet report that lint. + +## Repair + +Remove only the redundant constant assertion. The same test already proves a +stronger live invariant before it: the parsed catalog contains at least nine +Act One definitions, and its length exactly equals the generated discovery +table. Exact discovered ids are then compared and individually retrievable. +No catalog, schema, or runtime behavior changes. + +**Defense:** [plots.md](../mechanics/plots.md) requires build-time discovery and +an executable catalog gate. Keeping the live minimum, exact cardinality, exact +id-set, and lookup checks preserves that defense while allowing the repository +to remain warning-clean when hosted Clippy learns to evaluate the generated +constant. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index b9e22738..5e9de2b8 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -31,6 +31,11 @@ add or amend a session log, then re-run the generator. - Intent: Audit every Tangled workflow as an executable system: trigger semantics, changed-file coverage, package availability, step ordering, and whether the advertised gates actually execute the behavior they claim to protect. - Log: [wiki/log/2026-07-12-ci-correctness-audit.md](2026-07-12-ci-correctness-audit.md) +## 2026-07-12 - CI Clippy version compatibility + +- Intent: Follow the repaired Tangled Rust wall through its first real execution and repair any failure proven by the hosted environment rather than inferred from local green checks. +- Log: [wiki/log/2026-07-12-ci-clippy-version.md](2026-07-12-ci-clippy-version.md) + ## 2026-07-11 - Whole-frame visual composition pass - Intent: The machine chassis had become strong while the complete frame still read as one hero object beside a dense rail. This pass composes the whole material view: world-first disclosure, camera behavior that changes with scale, recognizable Foundation infrastructure, physical peopl... diff --git a/wiki/mechanics/plots.md b/wiki/mechanics/plots.md index 34bb9c5c..8838547b 100644 --- a/wiki/mechanics/plots.md +++ b/wiki/mechanics/plots.md @@ -167,7 +167,10 @@ agents and the community can contribute libraries of them. and Tangled's native Rust-wall push path filter (`assets/plots/**`) so catalog validation always runs, including nested additions, renames, and deletions across a multi-commit push. An invalid plot fails the repository - check gate with a named reason. + check gate with a named reason. The executable catalog defense asserts both + the Act One minimum and exact equality with the generated discovery table; + it must not duplicate those checks with a compile-time-known emptiness + assertion that newer Clippy versions correctly reject as tautological. - **Playout begins as a Thought reservoir.** Choosing a plot opens its declared Thought threshold on the real message-channel or egress carrier. When the reservoir fires, the executor performs beats in order. Message acts enter