Commit A only deletes a developer notes/TODO file and does not change project functionality or infrastructure. Commit B performs a substantial repository reorganization: it adds GitHub Actions CI and deployment workflows, introduces workspace and server crate structure, adds build and configuration files, creates a new application scaffold with routing, state, event log, UI, tests, static assets, ignores, and project organization while moving legacy code aside and updating deployment configuration. Despite including many moved/generated files, it represents a major structural contribution compared with a simple cleanup.
constitution · epochs · watch · epoch 3
c_0307a4ccb911ca894b
tommy-mor · sha1:3908604c917f96a07b322fbb0d7021f53c71792b
message
reshuffle
comparisons involving this commit
Commit B is a substantial, working scaffold for a new Rust/Axum service (sorter2) with CI/deploy workflows, a real Cargo workspace, ranking/reducer/event-log modules, tests, and a functioning demo UI wired end-to-end—clear lasting infrastructure. Commit A merely deletes a personal scratch notes file (notes.tdsl) with no functional impact on the codebase.
Commit A only deletes a scratch notes.tdsl file of personal TODOs—a trivial cleanup with no design or product impact. Commit B is a full project reshuffle: renames the app to sorter2, introduces a proper Cargo workspace and server crate, adds CI/deploy workflows, .dockerignore/.gitignore, a minimal working axum scaffold with tests, moves old slug code into legacy/, and updates Dockerfile/fly.toml for the new deploy target—lasting structural value far beyond A.
Side B introduces lasting project infrastructure: GitHub Actions CI and deployment workflows, workspace/Cargo configuration, a new `server` crate scaffold, static assets, integration tests, and repository hygiene files like `.gitignore` and `.dockerignore`. Although much of the diff is generated (`Cargo.lock`) or code relocation into `legacy/`, it still adds durable build and deployment capability, whereas Side A only deletes a developer notes file with no functional impact.
Side B is a small, surgical commit: it adds a real bugfix (room garden pages no longer silently fall back to the public scope when a private room has no content, preventing content leakage), factors out a well-documented `thread_post_index_chronological` helper to eliminate duplicated fragile lookup logic across rpc.rs/garden.rs/ingest.rs, and backs the fix with new integration and browser regression tests. Side A is a sprawling 'reshuffle' commit that mostly moves large chunks of working code into a `legacy/` directory, checks in a huge generated Cargo.lock, and stands up a mostly-empty demo scaffold (health check, counter bump) — it's a project reset with high line count but little durable engineering value per line, and it discards more functionality than it adds.
Side B fixes real behavior bugs (empty private-room gardens no longer fall through to public content; thread_post_index is centralized as stable 0-based chrono indices with redact-safe rebuild semantics) and adds focused integration/browser regression tests. Side A is mostly reshuffle noise—renames, legacy moves, Cargo.lock, and scaffolding—with far less net correctness per line despite its size.
Side B introduces lasting abstractions by centralizing thread post index lookup into `ReducerState::{try_thread_post_index_chronological, thread_post_index_chronological}`, replacing duplicated indexing logic across RPC and HTML code, and adds regression tests ensuring redacted posts preserve stable chronological indices. Side A is dominated by a large project reshuffle (moving files into `legacy/`, renames, workspace/bootstrap, generated `Cargo.lock`, CI, and scaffolding) with relatively little new enduring behavior compared to the amount of churn.
The full patch is loaded only by the download route: download patch