Add CLIENT_CORE.md, and run event-model and client-core in run-tests.sh

CLIENT_CORE.md is the map for the crate: what holds what against the
Kotlin it replaces, how many tests were ported per file (85 total,
test-for-test where the Kotlin had JVM tests), what api.rs and
transcript_fold.rs cover versus don't yet, and the two things left
deliberately undone with reasons (TranscriptUnits.kt's Compose-specific
flatten, and event_model::Event's missing Unknown catch-all).

run-tests.sh now loops event-model, client-core and server rather than
only server, so the new crates' tests run from the same one command
AGENTS.md already points at.

Note for whoever merges this into rustify: this worktree branched
before RUST.md existed there, so I could not apply the requested edit
to its "Where things stand" bullet without an add/add conflict against
concurrent work on that file. Suggested wording is in this commit's
message on the orchestrator side -- apply directly to rustify's
RUST.md: mark item 1 of the Recommendation and the "Not started:
client-core" bullet as done, pointing at client-core/ and
CLIENT_CORE.md, dated 2026-09-04.

Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
This commit is contained in:
irisandClaude Sonnet committed 2026-09-04 23:02:58 -04:00
1 parent 237886c11e
commit 0a2f4fa1fe
2 files changed
+145 -8

No files matched your search

+15 -8
View File
@@ -1,11 +1,18 @@
#!/bin/sh
# Runs this repo's tests. Extra arguments are forwarded to `cargo test`,
# e.g. `./run-tests.sh transcript` to run just the transcript tests.
# Runs this repo's tests. Extra arguments are forwarded to each `cargo test`,
# e.g. `./run-tests.sh transcript` to run just the transcript tests in all
# three crates.
#
# Only `server/` has tests: it holds all the logic worth testing (event
# normalization, transcript cursors, config persistence, token auth), while
# the Android app is UI over its HTTP API. Verifying the app means running
# it -- see AGENTS.md.
# server/ holds the backend's own logic (event normalization, transcript
# cursors, config persistence, token auth); event-model is the wire shape
# server/ and client-core share; client-core is the app's pure logic held
# once instead of twice (see CLIENT_CORE.md) -- the syntax highlighter, the
# ANSI parser, the transcript cache and fold, the REST and SSE clients. It
# is not wired into the Android app yet (RUST.md), which still carries its
# own Kotlin copies and has no tests of its own to run here; verifying it
# means running it -- see AGENTS.md.
set -eu
cd "$(dirname "$0")/server"
exec cargo test "$@"
cd "$(dirname "$0")"
for crate in event-model client-core server; do
(cd "$crate" && cargo test "$@")
done