Artifact of the Intent Solutions testing SOP (
/audit-tests). Diagnostic only — this audit modifies nothing and recommends only additive, fork-owned changes. Fork context:intent-solutions-io/buzzis a fork ofblock/buzz; the test suite mapped below is upstream's own work and is documented here to baseline the fork lane, not to grade or change it. Upstream-owned files (Justfile, TESTING.md, lefthook.yml,.github/workflows/*, all code) are out of remediation scope perFORK.md.Date: 2026-07-28 · Branch:
feat/is-fork-infrastructure· HEAD ==upstream/main(no committed divergence) · Bead:buzz-4ei.3
| Facet | Value |
|---|---|
| Type | Service + desktop-app monorepo (relay server, Tauri desktop, admin/web frontends, mobile) |
| Primary language | Rust — 26-crate workspace (crates/), incl. buzz-relay, buzz-core, buzz-db, buzz-conformance, buzz-test-client |
| Secondary | TypeScript (desktop UI, admin-web/, web/), Rust-in-Tauri (desktop/src-tauri/), Dart/Flutter (mobile/) |
| Build tooling | cargo (hermit-pinned toolchain in bin/) + just (Justfile task runner) + pnpm workspace |
| Test runners | cargo test / cargo-nextest, node:test (desktop TS), vitest (admin-web), Playwright (desktop, web, admin-web), flutter test |
| CI | GitHub Actions — 12 workflow files; ci.yml alone has ~20 jobs (path-filtered via dorny/paths-filter) |
| Infra for tests | Postgres + Redis via docker compose (scripts/run-tests.sh auto-starts) |
| Deploy surface | Dockerfiles, docker-compose, Helm charts (deploy/) — fork deploys from upstream published images per FORK.md |
Counts are ripgrep/find approximations against the working tree.
| Layer | Upstream | Fork additions | Evidence |
|---|---|---|---|
| L1 — Git hooks | PRESENT | ABSENT | lefthook.yml: parallel pre-commit (rust-fmt, desktop/web/mobile fix, glob-scoped to mirror CI path filters), commit-msg (DCO sign-off trailer), pre-push (branch-skew check, just test-unit, desktop-check/-test, desktop-tauri-test, mobile-test). Installed via just setup-hooks. |
| L2 — Static analysis | PRESENT | ABSENT | rustfmt + clippy -D warnings (CI rust-lint), biome (desktop/web/admin-web + root biome.json), tsc --noEmit, cargo-deny (deny.toml, CI security job), dead-token-reference grep gate, file-size ratchet, SHA-pinned actions, renovate. |
| L3 — Unit | PRESENT | ABSENT | Rust: ~5,700 #[test]/#[tokio::test] fns across ~359 files; just test-unit runs cargo-nextest on buzz-core, buzz-auth, buzz-db (--lib, infra-free SQL-lint set), buzz-conformance, buzz-push-gateway. Desktop TS: ~340 *.test.mjs (node:test). Mobile: ~85 Dart test files (flutter test). admin-web: vitest configured but 0 unit test files (--passWithNoTests) — thin, and upstream's call. |
| L4 — Integration | PRESENT | ABSENT | just test / scripts/run-tests.sh integration against Postgres + Redis (auto-started); ~33 crates/*/tests/*.rs integration files across 9 crates; Postgres-backed buzz-db tests (#[ignore]d out of the unit set); CI backend-integration job. |
| L5 — System | PRESENT | ABSENT | CI desktop-e2e-relay builds real relay artifacts consumed by desktop-e2e-integration (2-shard, real services); multi-tenant conformance replay w/ golden fixtures (buzz-conformance); cross-compile + Windows + macOS build jobs; benchmarks (benchmarks/harbor-buzz-orchestra, perf/). |
| L6 — E2E | PRESENT | ABSENT | buzz-test-client crate: 17 test files, ~230 test fns, majority #[ignore]d — require a live relay (cargo test -p buzz-test-client -- --ignored, per TESTING.md). Desktop Playwright: ~124 *.spec.ts in smoke + integration projects, sharded in CI. Web + admin-web Playwright smoke specs. Mesh hardware suites (just mesh-e2e-*) run locally, deliberately not in CI. |
| L7 — Acceptance | PARTIAL | ABSENT | No Gherkin/BDD, RTM, or persona/journey traceability. Acceptance is implicit: conformance golden fixtures, canary workflows (linux/windows/signed-macos), release-contract checks in CI. Normal for upstream; not a fork remediation target. |
Honest read: upstream ships a serious, layered suite — real hooks, real static gates,
thousands of unit tests, infra-backed integration, sharded Playwright E2E, a dedicated E2E
client crate, and canary/release verification. There is no upstream gap the fork should
"fix"; anything upstream-shaped goes upstream via the contribution path in FORK.md.
Fork additions to date are governance/planning files only — untested by definition:
| Fork file | State |
|---|---|
FORK.md (fork contract) |
untracked, uncommitted |
000-docs/ (4 planning artifacts) |
untracked, uncommitted |
.beads/ (task tracking, prefix buzz) |
local |
TEST_AUDIT.md (this file) |
new |
The fork's own risk surface is fork-infrastructure drift, not application defects:
- Additive-only invariant (
FORK.md):git diff upstream/main --statmust show only fork-added paths from the must-survive table. This is the fork's single most important testable property and currently has no automated check. - Rebase survival: after any rebase onto upstream, the must-survive set must still exist.
- No estate leakage: fork is public; staged diffs must never carry deployment secrets, keys, or private operational detail.
git status shows upstream-owned .gitignore (+6 lines of beads ignores) and AGENTS.md
(+80-line managed "Beads Issue Tracker" block) modified in the working tree — side
effects of bd init. FORK.md explicitly lists both files as never-modify. HEAD is clean
(== upstream/main), so nothing is committed yet, but committing the tree as-is would break
the fork contract on day one. Resolution options (decision for the owner, not this audit):
(a) revert both files to upstream and move the beads guidance into a fork-owned file
(e.g. a FORK.md section or 000-docs/ note), or (b) amend FORK.md to carve out an
explicit exception for the bd-managed block. Either way, the additive-only gate below would
have caught this — which is the point.
Constraint: new files only. Never touch Justfile, TESTING.md, lefthook.yml,
.github/workflows/* (all upstream-owned). No mutation/coverage work on upstream code.
| # | Gap | Layer | Additive remedy |
|---|---|---|---|
| G1 | No additive-only invariant check | L1/L2 (fork) | New scripts/fork-gates/check-additive-only.sh: diff upstream/main, fail on any path outside the FORK.md must-survive table (+ deliberately carried patches). Run pre-push and post-rebase. |
| G2 | No in-repo enforcement harness | L1 (fork) | In-repo audit-harness: cargo install intent-audit-harness or vendored scripts/audit-harness/ (curl install.sh). Referenced in-repo only — never ~/.claude/ paths. |
| G3 | No escape-scan on staged diffs | L1 (fork) | Harness escape-scan over staged diffs (public fork — REFUSE-pattern + secret-shaped content gate before anything is committed). |
| G4 | No hash-pinning of fork-owned files | L2 (fork) | audit-harness init manifest scoped to FORK.md + 000-docs/ + fork gate scripts; verify detects silent drift/rebase loss. |
| G5 | No must-survive rebase check | L5 (fork) | Same scripts/fork-gates/ script family: assert every must-survive path exists after rebase (existence check is cheap; pairs with G1). |
| G6 | Hook wiring without touching lefthook.yml |
L1 (fork) | Decision needed: a new tracked lefthook-local.yml (upstream has none — additive) or documented manual invocation (just is upstream-owned too, so no new recipes). A new fork-owned workflow file (.github/workflows/fork-gates.yml) is technically additive but sits in a directory FORK.md treats as upstream turf — owner call before adding. |
Additive-only; every item is a new file; stage for review, never auto-commit.
- Resolve F1 first (owner decision): revert
.gitignore+AGENTS.mdto upstream, or ratify a documented exception inFORK.md. The gate in item 3 is meaningless while the tree violates the contract. - Install the harness in-repo:
cargo install intent-audit-harness(or vendorscripts/audit-harness/via install.sh). - Write
scripts/fork-gates/check-additive-only.sh— allowlist sourced from theFORK.mdmust-survive table; exit non-zero on any other path ingit diff upstream/main --stat. - Write
scripts/fork-gates/check-must-survive.sh(or fold into item 3) — post-rebase existence check for the must-survive set. - Wire escape-scan against staged diffs via the installed harness.
audit-harness init— hash-pin manifest covering fork-owned files.- Decide + implement hook wiring (G6): tracked
lefthook-local.ymlvs documented manual run vs fork-owned workflow file; record the decision in000-docs/. - Update the
FORK.mdmust-survive table to includescripts/fork-gates/(this file is already listed there).