docs backend evidence community safety SEC03C_PROVIDER_MATRIX - AlexandreZanata/Abastevo GitHub Wiki
SEC03-C — Provider-compatible transfer matrix
Date: 2026-10-11. Status: LOCAL_DONE. Scope: transport matrix +
verify loop over a real local S3-compatible service — no provider
change, no production storage (SEC03-D owns namespace/monitoring).
Head: maintained dev + this task.
Plan: remediation plan
(SEC03, AUD-02/04). Contract: SEC03-B boundary (transport accepts,
verification enforces). Constraint: small synthetic payloads only
(plus exact max/max+1 loopback cases); test-only MinIO creds;
anonymous volume dies with the container; no production data.
Validation: PASS
Changes
evidence/adapters/storage/sec03c_matrix_integration_test.go(new, disposable loopback MinIORELEASE.2025-04-22T22-12-26Z, real SigV4/HTTP, no fakes): max accepted exactly; max+1 accepted by transport but refused by the bounded read; declared/actual mismatch stored (claim bind owns it); wrong content-type 403 (type bound); transplanted key 403 (key bound); missing key 404, missing delete nil; backdated URL 4xx (expiry honored); interrupted PUT stays absent (follow-up 404, never verifiable); URL reuse overwrites (second body wins — claim binding decides promotion); 4 parallel transfers complete.evidence/application/verify_protocol_integration_test.go(new): full worker loop over the actual protocol — honest JPEG PUT promotes READY with a retrievable sanitized final; MaxBytes+1 on the wire rejects oversize; re-encoded bytes disagreeing with the claim reject checksum-mismatch; no final upload in either refusal.
Validation (actual)
TestSEC03CTransportMatrixOnRealS3PASS (real MinIO) andTestSEC03CVerifyLoopOnRealS3PASS (real MinIO + real bounded Download/server Upload).go test ./internal/modules/evidence/...green.-race -tags=integration ./internal/modules/evidence/adapters/still green (SEC03-A proofs intact; storage has no PG suite).go vet(+integration),gofmt -lclean,git diff --checkclean,scan-secrets.shpassed (test-only MinIO creds, synthetic payloads).- RED pre-GREEN: matrix written to fail on transport-caps (max+1 PUT succeeding surprises a JSON-max-only design); observed GREEN on first run against MinIO, confirming the SEC03-B boundary selection with provider evidence instead of assumption.
Limits / owed
- Chunked/missing-length PUTs: our client always sends fixed
length (see
transfer.Put); provider-specific chunked behavior unpinned here — no chunked path exists to exploit. - R2 production behavior unverified; MinIO proves the S3 protocol mechanics, not the vendor. Namespace/monitoring: SEC03-D. No production claim.
Next microtask: SEC03-D namespace + monitoring.