fix(server): PR #132 review round 2 — 14 actionable comments addressed
Blockers (4): - Wire cargo deny check into pre-pr-server (was dead config) (#1) - ConfirmBookmark idempotency guard: SimError ProtocolError on retry (#2) - D-080 amendment: transfer_npc_knowledge retained-but-dormant honest doc (#3) - SelectedBookmark v0.2 transient scope; save/load deferred to #863 (#4) Issues (8): - ConfirmBookmark validation tests: unknown id, invalid location, valid path, double-confirm guard (#5) - snapshot_with_bookmark_catalog fixture for client #618 decode tests (#6) - generate_brands: replace 5 raw .unwrap() with eprintln+exit pattern (#7) - npc_knowledge_transfer.rs: stale run_npc_conversations refs cleaned (#8) - monologue.rs: residual D-078 "overheard conversations" doc removed (#9) - 5 test files: orphan blank lines from removed conversation_* fields (#10) - BookmarkCatalog: add PartialEq, Eq derives (matches sibling) (#11) Nits (2): - culture_tag doc: describe BookmarkRegistry::build_catalog behavior, remove "until #679 lands" placeholder (#13) - generate_brands seed=1 canonical comment (#14) Follow-ups filed: - #862 — BookmarkPlugin::new(registry) injection (#12 deferred) - #863 — Wire SelectedBookmark into SaveState (Sprint 37) Pre-pr-server: fmt clean, clippy clean, deny clean, build clean. nextest save_io failures pre-existing parallelism issue (sequential cargo test --lib passes 20/20). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -58,7 +58,9 @@ struct Cli {
|
||||
)]
|
||||
output: PathBuf,
|
||||
|
||||
/// PRNG seed for deterministic generation
|
||||
/// PRNG seed for deterministic generation.
|
||||
/// Seed 1 is canonical — the committed output in db/ was produced at seed=1.
|
||||
/// Use a different seed only for experimentation; committed output must stay seed=1.
|
||||
#[arg(long, default_value = "1")]
|
||||
seed: u64,
|
||||
|
||||
@@ -207,7 +209,10 @@ fn load_corps(conn: &Connection) -> Vec<Corp> {
|
||||
LEFT JOIN star_systems ss ON co.headquarters_system = ss.system_id
|
||||
ORDER BY co.corp_id",
|
||||
)
|
||||
.unwrap();
|
||||
.unwrap_or_else(|e| {
|
||||
eprintln!("error: failed to prepare corps query: {}", e);
|
||||
process::exit(1);
|
||||
});
|
||||
|
||||
stmt.query_map([], |row| {
|
||||
Ok(Corp {
|
||||
@@ -219,7 +224,10 @@ fn load_corps(conn: &Connection) -> Vec<Corp> {
|
||||
shadow_economy_access: row.get::<_, i64>(5).unwrap_or(0) != 0,
|
||||
})
|
||||
})
|
||||
.unwrap()
|
||||
.unwrap_or_else(|e| {
|
||||
eprintln!("error: failed to query corporations: {}", e);
|
||||
process::exit(1);
|
||||
})
|
||||
.filter_map(|r| r.ok())
|
||||
.collect()
|
||||
}
|
||||
@@ -227,9 +235,15 @@ fn load_corps(conn: &Connection) -> Vec<Corp> {
|
||||
fn load_valid_commodity_ids(conn: &Connection) -> BTreeSet<String> {
|
||||
let mut stmt = conn
|
||||
.prepare("SELECT commodity_id FROM commodities")
|
||||
.unwrap();
|
||||
.unwrap_or_else(|e| {
|
||||
eprintln!("error: failed to prepare commodities query: {}", e);
|
||||
process::exit(1);
|
||||
});
|
||||
stmt.query_map([], |row| row.get::<_, String>(0))
|
||||
.unwrap()
|
||||
.unwrap_or_else(|e| {
|
||||
eprintln!("error: failed to query commodities: {}", e);
|
||||
process::exit(1);
|
||||
})
|
||||
.filter_map(|r| r.ok())
|
||||
.collect()
|
||||
}
|
||||
@@ -626,7 +640,10 @@ fn main() {
|
||||
process::exit(1);
|
||||
});
|
||||
conn.execute_batch("PRAGMA journal_mode=WAL; PRAGMA foreign_keys=ON;")
|
||||
.unwrap();
|
||||
.unwrap_or_else(|e| {
|
||||
eprintln!("error: failed to configure DB pragmas: {}", e);
|
||||
process::exit(1);
|
||||
});
|
||||
|
||||
// Load corps and commodity IDs
|
||||
println!(" [2/5] Loading corporations and commodities...");
|
||||
|
||||
Reference in New Issue
Block a user