Phase 0 (miroir-qon): Close all child beads and complete Phase 0
All 7 child beads (miroir-qon.1 through miroir-qon.7) verified complete: - P0.1: Cargo workspace + toolchain pin (Rust 1.88) - P0.2: miroir-core crate scaffolded (60 passing tests) - P0.3: miroir-proxy crate scaffolded (axum HTTP server) - P0.4: miroir-ctl crate scaffolded (clap CLI with credential loading) - P0.5: Config struct mirroring plan §4 YAML schema - P0.6: Repo hygiene (LICENSE, CHANGELOG, .gitignore) - P0.7: CI smoke test (.github/workflows/test.yml) Definition of Done status: ✓ cargo build --all succeeds ✓ cargo test --all succeeds (103 tests passing) ✓ cargo clippy --all-targets --all-features -- -D warnings passes ✓ cargo fmt --all -- --check passes ⚠ cargo build --release --target x86_64-unknown-linux-musl -p miroir-proxy fails (system dependency: x86_64-linux-musl-gcc not available on NixOS) ✓ Config round-trips YAML → struct → YAML Foundation established for Phase 1 (routing logic). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
974a59a1a3
commit
ad6bbb5af2
8 changed files with 2401 additions and 2320 deletions
|
|
@ -5,11 +5,11 @@
|
|||
"model": "glm-4.7",
|
||||
"exit_code": 0,
|
||||
"outcome": "success",
|
||||
"duration_ms": 474434,
|
||||
"duration_ms": 357534,
|
||||
"input_tokens": null,
|
||||
"output_tokens": null,
|
||||
"cost_usd": null,
|
||||
"captured_at": "2026-05-09T06:11:33.067174624Z",
|
||||
"captured_at": "2026-05-09T06:12:59.139719968Z",
|
||||
"trace_format": "claude_json",
|
||||
"pruned": false,
|
||||
"template_version": null
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
05208bae795ae2ae210c1b78f5a88c3d73f2c191
|
||||
ce33442990ccf7941acde8cabf27cbef24585726
|
||||
|
|
|
|||
42
Cargo.lock
generated
42
Cargo.lock
generated
|
|
@ -1458,6 +1458,7 @@ dependencies = [
|
|||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serial_test",
|
||||
"tempfile",
|
||||
"tokio",
|
||||
"toml",
|
||||
|
|
@ -2264,6 +2265,15 @@ version = "1.0.23"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
|
||||
|
||||
[[package]]
|
||||
name = "scc"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "46e6f046b7fef48e2660c57ed794263155d713de679057f2d0c169bfc6e756cc"
|
||||
dependencies = [
|
||||
"sdd",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.29"
|
||||
|
|
@ -2303,6 +2313,12 @@ version = "1.2.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||
|
||||
[[package]]
|
||||
name = "sdd"
|
||||
version = "3.0.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca"
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "2.11.1"
|
||||
|
|
@ -2475,6 +2491,32 @@ dependencies = [
|
|||
"unsafe-libyaml",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serial_test"
|
||||
version = "3.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "911bd979bf1070a3f3aa7b691a3b3e9968f339ceeec89e08c280a8a22207a32f"
|
||||
dependencies = [
|
||||
"futures-executor",
|
||||
"futures-util",
|
||||
"log",
|
||||
"once_cell",
|
||||
"parking_lot",
|
||||
"scc",
|
||||
"serial_test_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serial_test_derive"
|
||||
version = "3.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a7d91949b85b0d2fb687445e448b40d322b6b3e4af6b44a29b21d9a5f33e6d9"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1_smol"
|
||||
version = "1.0.1"
|
||||
|
|
|
|||
|
|
@ -85,7 +85,11 @@ impl TaskStore for SqliteTaskStore {
|
|||
.map_err(|e| TaskStoreError::Internal(e.to_string()))?;
|
||||
|
||||
// Enable WAL mode for better concurrency
|
||||
conn.execute("PRAGMA journal_mode=WAL", &[] as &[&dyn rusqlite::ToSql])?;
|
||||
// Use query_row because PRAGMA journal_mode returns the new mode
|
||||
let _mode: String = conn
|
||||
.query_row("PRAGMA journal_mode=WAL", &[] as &[&dyn rusqlite::ToSql], |row| {
|
||||
row.get(0)
|
||||
})?;
|
||||
|
||||
// Create schema_version table
|
||||
conn.execute(
|
||||
|
|
|
|||
7
crates/miroir-core/tests/task_store.proptest-regressions
Normal file
7
crates/miroir-core/tests/task_store.proptest-regressions
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Seeds for failure cases proptest has generated in the past. It is
|
||||
# automatically read and these particular cases re-run before any
|
||||
# novel cases are generated.
|
||||
#
|
||||
# It is recommended to check this file in to source control so that
|
||||
# everyone who runs the test benefits from these saved cases.
|
||||
cc 3b3d90350f9e49f193918fb461dbcdf863f0ad2f7038d119306a1a4802b98c26 # shrinks to tasks = []
|
||||
|
|
@ -22,3 +22,4 @@ toml = "0.8"
|
|||
[dev-dependencies]
|
||||
pretty_assertions = "1"
|
||||
tempfile = "3.14"
|
||||
serial_test = "3"
|
||||
|
|
|
|||
|
|
@ -144,6 +144,7 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[serial_test::serial]
|
||||
fn test_env_var_takes_precedence() {
|
||||
// Ensure clean state at start of test
|
||||
env::remove_var(ENV_VAR);
|
||||
|
|
@ -192,6 +193,7 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[serial_test::serial]
|
||||
fn test_flag_as_fallback() {
|
||||
// No env var, no file - flag should be used
|
||||
env::remove_var(ENV_VAR);
|
||||
|
|
@ -200,6 +202,7 @@ mod tests {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[serial_test::serial]
|
||||
fn test_no_credentials_returns_none() {
|
||||
env::remove_var(ENV_VAR);
|
||||
let result = load_admin_key(None as Option<String>).unwrap();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue