carlos / platform Public

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
Paul Campbell pushed by paul@keymail.dev f42bf58336c4ccc73e463f9fab05415d31c1ec7c parent 52b398aparent d2216ee
76 files changed, +17030 −75
  • .amadan/ci.d/30-minio-contract +23 −8
  • AGENTS.md +19 −0
  • apimode.go +191 −0
  • cmd/console/main.go +164 −13
  • cmd/console/wiring_test.go +66 −0
  • docs/site/cli.md +106 −0
  • docs/superpowers/plans/2026-09-01-carloku-scanning-rollout.md +249 −0
  • docs/superpowers/plans/2026-09-01-object-storage-virus-scanning.md +1680 −0
  • docs/superpowers/plans/2026-09-02-scan-on-demand.md +558 −0
  • docs/superpowers/plans/2026-09-04-scanning-to-deployable.md +425 −0
  • docs/superpowers/specs/2026-09-01-object-storage-virus-scanning-design.md +696 −0
  • docs/superpowers/specs/2026-09-02-scan-on-demand-design.md +1005 −0
  • internal/clamd/clamd.go +296 −0
  • internal/clamd/clamd_test.go +308 −0
  • internal/console/apiscan.go +623 −0
  • internal/console/apiscan_test.go +549 −0
  • internal/console/apiservices.go +6 −0
  • internal/console/apiservices_test.go +35 −0
  • internal/console/apistore.go +8 −0
  • internal/console/apisystem.go +194 −0
  • internal/console/apisystem_test.go +165 −0
  • internal/console/appsettings.go +11 −1
  • internal/console/authcli.go +16 −0
  • internal/console/deletion_test.go +1 −1
  • internal/console/ownership.go +1 −1
  • internal/console/scanpass.go +290 −0
  • internal/console/scanpass_test.go +508 −0
  • internal/console/server.go +44 −0
  • internal/console/svcpage.go +22 −0
  • internal/console/svcpage_test.go +26 −0
  • internal/console/svcprincipal.go +19 −0
  • internal/console/svcroutes_test.go +8 −2
  • internal/objstore/aws.go +93 −5
  • internal/objstore/aws_test.go +19 −6
  • internal/objstore/clamav.go +568 −0
  • internal/objstore/clamav_test.go +1251 −0
  • internal/objstore/contract_test.go +465 −0
  • internal/objstore/enforce_test.go +237 −0
  • internal/objstore/memprovisioner.go +24 −2
  • internal/objstore/memprovisioner_test.go +1 −1
  • internal/objstore/memscanner.go +252 −0
  • internal/objstore/objstore.go +48 −0
  • internal/objstore/provisioner.go +5 −1
  • internal/objstore/queue.go +550 −0
  • internal/objstore/queue_test.go +897 −0
  • internal/objstore/scanblock_test.go +153 −0
  • internal/objstore/scanner.go +144 −0
  • internal/objstore/scanner_contract_test.go +141 −0
  • internal/objstore/scanresult.go +221 −0
  • internal/objstore/scanresult_test.go +216 −0
  • internal/objstore/scantag.go +163 −0
  • internal/objstore/scantag_test.go +262 −0
  • internal/objstore/sidecar.go +137 −0
  • internal/objstore/sidecar_test.go +125 −0
  • internal/objstore/sweep.go +421 −0
  • internal/objstore/sweep_test.go +568 −0
  • internal/objstore/teardown_scan_test.go +127 −0
  • internal/objstore/walk.go +55 −7
  • internal/objstore/walk_test.go +14 −14
  • internal/release/adopt.go +11 −4
  • internal/release/pagelister_test.go +199 −0
  • internal/release/stage_blocked_test.go +72 −0
  • internal/release/store.go +90 −0
  • internal/release/system.go +95 −0
  • internal/release/system_test.go +100 −0
  • internal/svcrole/service_role_test.go +51 −0
  • internal/svcrole/svcrole.go +13 −2
  • main.go +2 −0
  • scan.go +361 −0
  • scan_test.go +198 −0
  • services.go +3 −3
  • store.go +43 −3
  • store_test.go +1 −1
  • storescan_test.go +94 −0
  • system.go +128 −0
  • system_test.go +100 −0
.amadan/ci.d/30-minio-contract

Loading diff…

AGENTS.md

Loading diff…

apimode.go

Loading diff…

cmd/console/main.go

Loading diff…

cmd/console/wiring_test.go

Loading diff…

docs/site/cli.md

Loading diff…

docs/superpowers/plans/2026-09-01-carloku-scanning-rollout.md

Loading diff…

docs/superpowers/plans/2026-09-01-object-storage-virus-scanning.md

Loading diff…

docs/superpowers/plans/2026-09-02-scan-on-demand.md

Loading diff…

docs/superpowers/plans/2026-09-04-scanning-to-deployable.md

Loading diff…

docs/superpowers/specs/2026-09-01-object-storage-virus-scanning-design.md

Loading diff…

docs/superpowers/specs/2026-09-02-scan-on-demand-design.md

Loading diff…

internal/clamd/clamd.go

Loading diff…

internal/clamd/clamd_test.go

Loading diff…

internal/console/apiscan.go

Loading diff…

internal/console/apiscan_test.go

Loading diff…

internal/console/apiservices.go

Loading diff…

internal/console/apiservices_test.go

Loading diff…

internal/console/apistore.go

Loading diff…

internal/console/apisystem.go

Loading diff…

internal/console/apisystem_test.go

Loading diff…

internal/console/appsettings.go

Loading diff…

internal/console/authcli.go

Loading diff…

internal/console/deletion_test.go

Loading diff…

internal/console/ownership.go

Loading diff…

internal/console/scanpass.go

Loading diff…

internal/console/scanpass_test.go

Loading diff…

internal/console/server.go

Loading diff…

internal/console/svcpage.go

Loading diff…

internal/console/svcpage_test.go

Loading diff…

internal/console/svcprincipal.go

Loading diff…

internal/console/svcroutes_test.go

Loading diff…

internal/objstore/aws.go

Loading diff…

internal/objstore/aws_test.go

Loading diff…

internal/objstore/clamav.go

Loading diff…

internal/objstore/clamav_test.go

Loading diff…

internal/objstore/contract_test.go

Loading diff…

internal/objstore/enforce_test.go

Loading diff…

internal/objstore/memprovisioner.go

Loading diff…

internal/objstore/memprovisioner_test.go

Loading diff…

internal/objstore/memscanner.go

Loading diff…

internal/objstore/objstore.go

Loading diff…

internal/objstore/provisioner.go

Loading diff…

internal/objstore/queue.go

Loading diff…

internal/objstore/queue_test.go

Loading diff…

internal/objstore/scanblock_test.go

Loading diff…

internal/objstore/scanner.go

Loading diff…

internal/objstore/scanner_contract_test.go

Loading diff…

internal/objstore/scanresult.go

Loading diff…

internal/objstore/scanresult_test.go

Loading diff…

internal/objstore/scantag.go

Loading diff…

internal/objstore/scantag_test.go

Loading diff…

internal/objstore/sidecar.go

Loading diff…

internal/objstore/sidecar_test.go

Loading diff…

internal/objstore/sweep.go

Loading diff…

internal/objstore/sweep_test.go

Loading diff…

internal/objstore/teardown_scan_test.go

Loading diff…

internal/objstore/walk.go

Loading diff…

internal/objstore/walk_test.go

Loading diff…

internal/release/adopt.go

Loading diff…

internal/release/pagelister_test.go

Loading diff…

internal/release/stage_blocked_test.go

Loading diff…

internal/release/store.go

Loading diff…

internal/release/system.go

Loading diff…

internal/release/system_test.go

Loading diff…

internal/svcrole/service_role_test.go

Loading diff…

internal/svcrole/svcrole.go

Loading diff…

main.go

Loading diff…

scan.go

Loading diff…

scan_test.go

Loading diff…

services.go

Loading diff…

store.go

Loading diff…

store_test.go

Loading diff…

storescan_test.go

Loading diff…

system.go

Loading diff…

system_test.go

Loading diff…