diff --git a/docs/architecture-diagram.mmd b/docs/architecture-diagram.mmd new file mode 100644 index 0000000..0f986c6 --- /dev/null +++ b/docs/architecture-diagram.mmd @@ -0,0 +1,67 @@ +flowchart LR + subgraph trigger["Trigger"] + direction TB + manual["Manual CLI"] + maestro_trigger["Maestro\nRegression"] + kcidev["kci-dev\nbisect"] + end + + subgraph core["Bisection Core"] + direction TB + loop["Orchestrator"] + selector["Commit Selector\nmidpoint / n-bisect"] + statestore[("State Store\nCampaign / Step")] + loop <--> selector + loop <--> statestore + end + + subgraph buildtest["Build & Test Pipeline"] + direction TB + build_cache{"Build Cache"} + build_step["Build Step"] + test_step["Test Step"] + build_cache -->|miss| build_step --> test_step + build_cache -->|hit| test_step + end + + subgraph backends["Pluggable Backends"] + direction TB + subgraph bb["Build"] + tuxmake["TuxMake"] + maestro_build["Maestro"] + k8s["Kubernetes"] + end + subgraph tb["Test"] + tuxrun["TuxRun\nQEMU"] + lava["LAVA"] + fvp["FVP / AVH"] + end + end + + subgraph analysis["Analysis"] + direction TB + parser["Result Parser\nlogspec"] + decision["Decision Engine"] + parser --> decision + binary["Binary\npass/fail"] + statistical["Statistical\nmetrics"] + decision --> binary + decision --> statistical + end + + subgraph post["Post-Bisection"] + direction TB + verify["Verify\nrevert + retest"] + report["Report Generator"] + recipients["Recipient Finder\nget_maintainers.pl"] + sender["Report Sender\nemail / API"] + verify --> report --> recipients --> sender + end + + trigger --> loop + loop --> build_cache + build_step -.-> bb + test_step -.-> tb + test_step --> parser + analysis -->|"good / bad\nskip / weak"| loop + loop -->|"culprit found"| verify diff --git a/docs/architecture-diagram.png b/docs/architecture-diagram.png new file mode 100644 index 0000000..2c799cc Binary files /dev/null and b/docs/architecture-diagram.png differ