- Concurrency soak (exit criterion): 12 concurrent gated runs, every decision attempted twice concurrently, explicit resumes racing the durable sweeper — exactly one execution per approval, grants consumed at most once, every decision audited, zero stuck runs, zero unaudited executions. (Testkit pool raised to 20 connections; the 5-connection pool starved the storm.) - axe a11y sweep (exit criterion): serious+critical violations fail CI on login, shell, chat, computer home, settings app, all global pages, and the wizard. Two real violations found and fixed: aria-label on a plain div (wizard progress -> role=group) and a button directly inside a <dl> (settings -> plain bordered list). - tools/bundler (exit criterion): keygen / assemble / verify CLI — copies artifacts, writes manifest.json + sha256 checksums.txt + a detached ed25519 signature; verification is fully offline (keyless signing is internet-dependent and disqualified). Tests: round trip, tampered artifact caught by hash, tampered checksum list caught by signature, wrong key refused, missing artifact reported. 147 Rust + 63 frontend tests + 27 Playwright journeys (incl. 4 a11y). Co-Authored-By: Claude Fable 5 <[email protected]>
59 lines
1.4 KiB
TOML
59 lines
1.4 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/tc-domain",
|
|
"crates/tc-config",
|
|
"crates/tc-db",
|
|
"crates/tc-llm",
|
|
"crates/tc-runtime",
|
|
"crates/tc-tools",
|
|
"crates/tc-safety",
|
|
"crates/tc-sandbox",
|
|
"crates/tc-secrets",
|
|
"crates/tc-files",
|
|
"crates/tc-scheduler",
|
|
"crates/tc-billing",
|
|
"crates/tc-testkit",
|
|
"crates/tc-auth",
|
|
"crates/tc-api",
|
|
"crates/bins/teamclaw-server",
|
|
"crates/bins/teamclaw-broker",
|
|
"tools/bundler",
|
|
]
|
|
|
|
[workspace.package]
|
|
edition = "2021"
|
|
rust-version = "1.96"
|
|
license = "UNLICENSED"
|
|
publish = false
|
|
|
|
[workspace.dependencies]
|
|
# Shared dependency versions; crates opt in via { workspace = true }.
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
uuid = { version = "1", features = ["v7", "serde"] }
|
|
proptest = "1"
|
|
time = { version = "0.3", features = ["serde", "serde-well-known"] }
|
|
tokio = { version = "1", features = ["macros", "rt-multi-thread", "fs", "net", "time", "sync", "io-util"] }
|
|
sqlx = { version = "0.8", default-features = false, features = [
|
|
"runtime-tokio",
|
|
"tls-rustls",
|
|
"postgres",
|
|
"uuid",
|
|
"time",
|
|
"json",
|
|
"migrate",
|
|
"macros",
|
|
"bigdecimal",
|
|
] }
|
|
testcontainers-modules = { version = "0.13", features = ["postgres"] }
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "deny"
|
|
|
|
[workspace.lints.clippy]
|
|
todo = "deny"
|
|
unimplemented = "deny"
|
|
dbg_macro = "deny"
|