Sync GitHub mirror to amadan main d2216ee
The forge (amadan.net/carlos/platform) is where main is merged; this mirror is brought up to date from it. Nothing has been merged here directly since the last sync, so this commit's tree is the forge's main exactly, with both tips as parents so nothing is rewritten. Carries 65 commits, including opt-in object-storage virus scanning (worktree-store-virus-scanning), which is inert until an operator wires clamd, a member requests scanning and an operator grants it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ExnZtUYmt2h8QFcymjPaSL
.amadan/ci.d/30-minio-contract+23 −8AGENTS.md+19 −0apimode.go+191 −0cmd/console/main.go+164 −13cmd/console/wiring_test.go+66 −0docs/site/cli.md+106 −0docs/superpowers/plans/2026-09-01-carloku-scanning-rollout.md+249 −0docs/superpowers/plans/2026-09-01-object-storage-virus-scanning.md+1680 −0docs/superpowers/plans/2026-09-02-scan-on-demand.md+558 −0docs/superpowers/plans/2026-09-04-scanning-to-deployable.md+425 −0docs/superpowers/specs/2026-09-01-object-storage-virus-scanning-design.md+696 −0docs/superpowers/specs/2026-09-02-scan-on-demand-design.md+1005 −0internal/clamd/clamd.go+296 −0internal/clamd/clamd_test.go+308 −0internal/console/apiscan.go+623 −0internal/console/apiscan_test.go+549 −0internal/console/apiservices.go+6 −0internal/console/apiservices_test.go+35 −0internal/console/apistore.go+8 −0internal/console/apisystem.go+194 −0internal/console/apisystem_test.go+165 −0internal/console/appsettings.go+11 −1internal/console/authcli.go+16 −0internal/console/deletion_test.go+1 −1internal/console/ownership.go+1 −1internal/console/scanpass.go+290 −0internal/console/scanpass_test.go+508 −0internal/console/server.go+44 −0internal/console/svcpage.go+22 −0internal/console/svcpage_test.go+26 −0internal/console/svcprincipal.go+19 −0internal/console/svcroutes_test.go+8 −2internal/objstore/aws.go+93 −5internal/objstore/aws_test.go+19 −6internal/objstore/clamav.go+568 −0internal/objstore/clamav_test.go+1251 −0internal/objstore/contract_test.go+465 −0internal/objstore/enforce_test.go+237 −0internal/objstore/memprovisioner.go+24 −2internal/objstore/memprovisioner_test.go+1 −1internal/objstore/memscanner.go+252 −0internal/objstore/objstore.go+48 −0internal/objstore/provisioner.go+5 −1internal/objstore/queue.go+550 −0internal/objstore/queue_test.go+897 −0internal/objstore/scanblock_test.go+153 −0internal/objstore/scanner.go+144 −0internal/objstore/scanner_contract_test.go+141 −0internal/objstore/scanresult.go+221 −0internal/objstore/scanresult_test.go+216 −0internal/objstore/scantag.go+163 −0internal/objstore/scantag_test.go+262 −0internal/objstore/sidecar.go+137 −0internal/objstore/sidecar_test.go+125 −0internal/objstore/sweep.go+421 −0internal/objstore/sweep_test.go+568 −0internal/objstore/teardown_scan_test.go+127 −0internal/objstore/walk.go+55 −7internal/objstore/walk_test.go+14 −14internal/release/adopt.go+11 −4internal/release/pagelister_test.go+199 −0internal/release/stage_blocked_test.go+72 −0internal/release/store.go+90 −0internal/release/system.go+95 −0internal/release/system_test.go+100 −0internal/svcrole/service_role_test.go+51 −0internal/svcrole/svcrole.go+13 −2main.go+2 −0scan.go+361 −0scan_test.go+198 −0services.go+3 −3store.go+43 −3store_test.go+1 −1storescan_test.go+94 −0system.go+128 −0system_test.go+100 −0
.amadan/ci.d/30-minio-contractLoading diff…
AGENTS.mdLoading diff…
apimode.goLoading diff…
cmd/console/main.goLoading diff…
cmd/console/wiring_test.goLoading diff…
docs/site/cli.mdLoading diff…
docs/superpowers/plans/2026-09-01-carloku-scanning-rollout.mdLoading diff…
docs/superpowers/plans/2026-09-01-object-storage-virus-scanning.mdLoading diff…
docs/superpowers/plans/2026-09-02-scan-on-demand.mdLoading diff…
docs/superpowers/plans/2026-09-04-scanning-to-deployable.mdLoading diff…
docs/superpowers/specs/2026-09-01-object-storage-virus-scanning-design.mdLoading diff…
docs/superpowers/specs/2026-09-02-scan-on-demand-design.mdLoading diff…
internal/clamd/clamd.goLoading diff…
internal/clamd/clamd_test.goLoading diff…
internal/console/apiscan.goLoading diff…
internal/console/apiscan_test.goLoading diff…
internal/console/apiservices.goLoading diff…
internal/console/apiservices_test.goLoading diff…
internal/console/apistore.goLoading diff…
internal/console/apisystem.goLoading diff…
internal/console/apisystem_test.goLoading diff…
internal/console/appsettings.goLoading diff…
internal/console/authcli.goLoading diff…
internal/console/deletion_test.goLoading diff…
internal/console/ownership.goLoading diff…
internal/console/scanpass.goLoading diff…
internal/console/scanpass_test.goLoading diff…
internal/console/server.goLoading diff…
internal/console/svcpage.goLoading diff…
internal/console/svcpage_test.goLoading diff…
internal/console/svcprincipal.goLoading diff…
internal/console/svcroutes_test.goLoading diff…
internal/objstore/aws.goLoading diff…
internal/objstore/aws_test.goLoading diff…
internal/objstore/clamav.goLoading diff…
internal/objstore/clamav_test.goLoading diff…
internal/objstore/contract_test.goLoading diff…
internal/objstore/enforce_test.goLoading diff…
internal/objstore/memprovisioner.goLoading diff…
internal/objstore/memprovisioner_test.goLoading diff…
internal/objstore/memscanner.goLoading diff…
internal/objstore/objstore.goLoading diff…
internal/objstore/provisioner.goLoading diff…
internal/objstore/queue.goLoading diff…
internal/objstore/queue_test.goLoading diff…
internal/objstore/scanblock_test.goLoading diff…
internal/objstore/scanner.goLoading diff…
internal/objstore/scanner_contract_test.goLoading diff…
internal/objstore/scanresult.goLoading diff…
internal/objstore/scanresult_test.goLoading diff…
internal/objstore/scantag.goLoading diff…
internal/objstore/scantag_test.goLoading diff…
internal/objstore/sidecar.goLoading diff…
internal/objstore/sidecar_test.goLoading diff…
internal/objstore/sweep.goLoading diff…
internal/objstore/sweep_test.goLoading diff…
internal/objstore/teardown_scan_test.goLoading diff…
internal/objstore/walk.goLoading diff…
internal/objstore/walk_test.goLoading diff…
internal/release/adopt.goLoading diff…
internal/release/pagelister_test.goLoading diff…
internal/release/stage_blocked_test.goLoading diff…
internal/release/store.goLoading diff…
internal/release/system.goLoading diff…
internal/release/system_test.goLoading diff…
internal/svcrole/service_role_test.goLoading diff…
internal/svcrole/svcrole.goLoading diff…
main.goLoading diff…
scan.goLoading diff…
scan_test.goLoading diff…
services.goLoading diff…
store.goLoading diff…
store_test.goLoading diff…
storescan_test.goLoading diff…
system.goLoading diff…
system_test.goLoading diff…