format_snapshot_text(&ObserverSnapshot) -> String pub-exported from
server crate. Entity labels as kind:entity_id sorted by distance,
room name stubbed as (unknown) until Gauntlet constants land.
10 unit tests. Consumed by tooling/test-client for --text mode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Separate workspace crate at tooling/test-client/ importing bridge
types from server crate. CLI: --connect, --replay, --text, --json,
--quiet, --golden, --ticks. Exit codes: 0=success, 1=golden mismatch,
2=connection error. Golden file comparison with recursive JSON diff.
JSONL replay loader for tick-scheduled input sending.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reviewers: Hoshe (code quality), Tyre (architecture)
Hoshe (Code Quality): APPROVE
Solid infrastructure work with thorough test coverage.
#
File
Severity
Issue
1
test-client/src/main.rs:69-74
warning
--text flag silently redundant — never read in OutputMode selection. --text --json gives Json with no warning. Fix: clap ArgGroup or --format text|json|quiet.
2
test-client/src/main.rs:~131
suggestion
serde_json::to_string_pretty().unwrap() breaks consistent error-handling pattern. Replace with unwrap_or_else.
3
text_renderer.rs
suggestion
Entity distance (Manhattan) vs NearbyInteraction.distance may use different metrics — clarifying comment worthwhile.
4
golden.rs
suggestion
Root JSON path starts with . (.tick not tick) — looks like typo in CI output.
5
replay.rs
suggestion
Document tick offset: "line 0 = inputs sent in response to snapshot 1."
Tyre (Architecture): APPROVE
Disciplined test infrastructure consistent with D-020 and D-030. Text renderer has excellent coverage (10 tests). Golden diff is clean.
#
File
Severity
Issue
1
text_renderer.rs
warning
Lives in bridge/ but never used by server binary. Better home: dev_support/ or behind feature flag. Track for relocation.
2
test-client/Cargo.toml
warning
Path dependency exposes entire server crate. Long-term: extract settled-reach-bridge sub-crate. Track it.
3
text_renderer.rs:8
suggestion
Redundant use crate::knowledge::types::{...} — already re-exported through bridge::types::* glob.
4
main.rs:~130
suggestion
Golden comparison only checks final snapshot. Per-tick golden files needed for Gauntlet wow-moment testing.
5
main.rs:~130
suggestion
tick_count variable name ambiguous — a replay_index alias with comment would clarify.
6
Cargo.toml
suggestion
Standalone Cargo.lock intentional. Confirm CI/Makefile builds with explicit --manifest-path.
Verdict: APPROVED
## Review: server → main (PR #28, type: code)
Reviewers: Hoshe (code quality), Tyre (architecture)
### Hoshe (Code Quality): APPROVE
Solid infrastructure work with thorough test coverage.
| # | File | Severity | Issue |
|---|------|----------|-------|
| 1 | test-client/src/main.rs:69-74 | warning | `--text` flag silently redundant — never read in OutputMode selection. `--text --json` gives Json with no warning. Fix: clap ArgGroup or `--format text\|json\|quiet`. |
| 2 | test-client/src/main.rs:~131 | suggestion | `serde_json::to_string_pretty().unwrap()` breaks consistent error-handling pattern. Replace with `unwrap_or_else`. |
| 3 | text_renderer.rs | suggestion | Entity distance (Manhattan) vs NearbyInteraction.distance may use different metrics — clarifying comment worthwhile. |
| 4 | golden.rs | suggestion | Root JSON path starts with `.` (`.tick` not `tick`) — looks like typo in CI output. |
| 5 | replay.rs | suggestion | Document tick offset: "line 0 = inputs sent in response to snapshot 1." |
### Tyre (Architecture): APPROVE
Disciplined test infrastructure consistent with D-020 and D-030. Text renderer has excellent coverage (10 tests). Golden diff is clean.
| # | File | Severity | Issue |
|---|------|----------|-------|
| 1 | text_renderer.rs | warning | Lives in `bridge/` but never used by server binary. Better home: `dev_support/` or behind feature flag. Track for relocation. |
| 2 | test-client/Cargo.toml | warning | Path dependency exposes entire server crate. Long-term: extract `settled-reach-bridge` sub-crate. Track it. |
| 3 | text_renderer.rs:8 | suggestion | Redundant `use crate::knowledge::types::{...}` — already re-exported through `bridge::types::*` glob. |
| 4 | main.rs:~130 | suggestion | Golden comparison only checks final snapshot. Per-tick golden files needed for Gauntlet wow-moment testing. |
| 5 | main.rs:~130 | suggestion | `tick_count` variable name ambiguous — a `replay_index` alias with comment would clarify. |
| 6 | Cargo.toml | suggestion | Standalone Cargo.lock intentional. Confirm CI/Makefile builds with explicit `--manifest-path`. |
### Verdict: APPROVED
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
server/src/bridge/text_renderer.rs) —format_snapshot_text(&ObserverSnapshot) -> Stringpub-exported, entity labels as kind:entity_id sorted by distance, 10 unit teststooling/test-client/) — standalone crate with CLI (--connect, --replay, --text, --json, --quiet, --golden, --ticks), exit codes 0/1/2, golden file JSON diff, JSONL replay loaderCompletes Sprint 8 server work (22/22 tickets done).
Test plan
settled-reach-test-clientin Cargo.tomlrmp_serde::to_vec(notto_vec_named) in main.rs line 155🤖 Generated with Claude Code
Review: server → main (PR #28, type: code)
Reviewers: Hoshe (code quality), Tyre (architecture)
Hoshe (Code Quality): APPROVE
Solid infrastructure work with thorough test coverage.
--textflag silently redundant — never read in OutputMode selection.--text --jsongives Json with no warning. Fix: clap ArgGroup or--format text|json|quiet.serde_json::to_string_pretty().unwrap()breaks consistent error-handling pattern. Replace withunwrap_or_else..(.ticknottick) — looks like typo in CI output.Tyre (Architecture): APPROVE
Disciplined test infrastructure consistent with D-020 and D-030. Text renderer has excellent coverage (10 tests). Golden diff is clean.
bridge/but never used by server binary. Better home:dev_support/or behind feature flag. Track for relocation.settled-reach-bridgesub-crate. Track it.use crate::knowledge::types::{...}— already re-exported throughbridge::types::*glob.tick_countvariable name ambiguous — areplay_indexalias with comment would clarify.--manifest-path.Verdict: APPROVED
Pull request closed