Document static binary architecture decision
ober
0f69e08bd17a6c404423842793d24c1a326e8c42
--- a/GAPS.md +++ b/GAPS.md @@ -479,6 +479,13 @@ Acceptance criteria: - Keep module boundaries aligned to Git, signals, aggregation, reports, config, and providers. +Status: explicitly rejected for this parity milestone; see +`docs/architecture.md`. The static binary pipeline is verified against +`main-binary.ss`, and a source split would be a build-system refactor rather +than detector/reference parity behavior. The intended module boundaries are +documented for a future refactor that must first prove `make verify` and +`make binary` do not regress. + ### G-051: No golden JSON snapshots Current shell tests grep output. They do not preserve full stable report new file mode 100644 --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,39 @@ +# Architecture decision: static-binary-first layout + +`jerboa-aigit` currently keeps the scanner implementation in `main-binary.ss`. +This is intentional for the current parity milestone. + +The original plan proposed module boundaries for Git access, signals, +aggregation, reports, config, and providers. Those boundaries are visible in +the code organization and JSON/report contracts, but they are not split into +separate Jerboa source modules yet. + +Reason: + +- The parity work now depends on a verified static binary pipeline. +- `make binary` builds `main-binary.ss` directly with `jerbuild binary`. +- Splitting Jerboa source files would be a packaging/build-system refactor, not + a detector parity feature. +- The repository rule for G-050 says to split modules only when doing so does + not regress static binary builds. That condition has not been proven for this + project. + +Decision: + +Keep the single Jerboa entry file for this parity milestone. Treat a future +module split as a separate build-system refactor that must preserve: + +- `bin/jerboa-aigit` CLI compatibility; +- `make verify`; +- `make binary`; +- static binary behavior on macOS and the Linux release pipeline; +- the current JSON output contract and golden snapshots. + +The intended future module boundaries remain: + +- Git/process/path handling; +- note/provenance parsing; +- signals and strategy catalog; +- scoring/aggregation; +- reports/JSON/markdown/stats; +- config/provider adapters.