5.6 KiB
Phase 0/1 Execution Checklist
OSS Backend Enablement (MinIO-first)
0. Purpose
This checklist gates work so we do not start infrastructure integration until we can prove:
- spec conformance holds across multiple backends,
- deterministic ordering/replay invariants are testable,
- error-model mappings are pinned down.
Phase 0 — Conformance Harness + Determinism Gates
0.1 Deliverables
- Multi-backend conformance runner (same test vectors, multiple backends)
- Golden dataset generator for ASL + TGK fixtures
- Deterministic equivalence suite:
- ordering checks
- replay equivalence
- cross-backend observational equivalence (surface behavior)
0.2 Required decisions (turn into docs/decision-checklist.md)
- Conformance test scope: which spec assertions are MUST-pass for Tier 0 vs Tier 1
- Equivalence definition: what counts as “same result” for TGK/STORE operations (including ordering)
- Error model mapping policy: canonical internal error types vs adapter-specific errors
0.3 Conformance harness: what to build
A) ASL/1-STORE conformance suite
- Put/get round-trip for a set of canonical Artifacts
- Idempotent
put(Artifact)returns sameReference get(Reference)exact artifact fidelity- NotFound behavior and error codes
- Corruption detection behavior (if defined/expected by your layers)
- Optional: latency-independent invariants (no timing assumptions)
B) TGK/STORE/1 conformance suite
- Required operations per spec and error model
- Deterministic ordering assertions (as spec defines)
- “Same ASL state → same TGK answers” invariants
- Cross-backend equivalence: mem vs fs vs asl_index_fs must match for the same fixture set
C) Replay determinism
- Build a fixture log/index state
- Replay into a fresh store
- Assert equivalent outcomes (references returned, query results, ordering)
0.4 Acceptance criteria (Phase 0 gate)
-
✅ Same fixture set passes on at least two existing backends:
-
asl_store_fsandasl_store_index_fs -
tgk_store_memandtgk_store_fs(ortgk_store_asl_index_fs) -
✅ Deterministic ordering checks are explicit and enforced
-
✅ A “backend contract test” can be run by CI with a single command
0.5 Where this touches the repo (suggested structure)
tests/conformance/asl_store/*.ctests/conformance/tgk_store/*.ctests/fixtures/*.bin|*.json|*.asl(whatever your canonical fixture format is)tools/amduat_conformance_run(small runner, like your other tools)
Phase 1 — ASL MinIO Adapter (Strict ASL/1-STORE)
1.1 Deliverables
src/adapters/asl_store_s3_minio/asl_store_s3_minio.c(name as you prefer)- Config + credentials plumbing for MinIO endpoint
- Full Phase 0 conformance suite passing against MinIO
- CI job (optional initially) that spins MinIO and runs conformance tests
1.2 Required decisions (Phase 1-specific)
- Object key layout: how
Referencemaps to bucket/key (e.g., prefix sharding) - Metadata policy: do we store encoding/profile version as object metadata, tags, or in-band?
- Multipart handling: threshold + exact fidelity guarantees
- Read-after-write expectation: what you assume from MinIO deployment mode; what you test for
1.3 Adapter contract requirements (what must not change)
put(Artifact) -> Referencecomputed by core rules; adapter must not accept a caller-provided referenceget(Reference) -> Artifact | NotFoundmust return exact bytes for canonical decode- Error mapping must be stable (auth errors, NotFound, transient IO)
1.4 Failure modes to explicitly test (Phase 1 gate)
- Bucket missing / permission denied
- NotFound for unknown reference
- Partial upload interruption (must not produce a “phantom success”)
- Corrupt object payload (if detectable at decode step, ensure it surfaces as decode error)
1.5 Acceptance criteria (Phase 1 gate)
- ✅ ASL/1-STORE conformance suite passes on MinIO
- ✅ Cross-backend equivalence: MinIO results identical to index/fs for the same fixture set
- ✅ Determinism: repeated
putgives same reference, independent of environment
Missing interfaces and tests to write (concrete list)
A) Missing test harness capability (Phase 0)
-
A single abstraction that can run the same tests against:
-
asl_store_fs -
asl_store_index_fs -
future
asl_store_minio -
Same for TGK store adapters
-
A “golden fixture set” format (even if it’s just embedded byte arrays initially)
B) Deterministic ordering assertions (Phase 0)
The repo has lots of tests, but not:
- a named suite that asserts ordering exactly as TGK/STORE defines
- cross-backend “same query, same ordering” checks
C) Cross-backend equivalence harness (Phase 0)
You need an explicit mechanism that:
- seeds the same ASL artifact set into multiple ASL backends
- builds the same TGK projection inputs
- runs the same TGK queries and diffs results
D) Adapter error normalization (Phase 0/1)
Define a small internal error taxonomy used by conformance tests so adapters can map:
- NotFound
- InvalidArtifact / decode error
- PermissionDenied
- TransientNetwork
- Internal/Unknown
Without this, MinIO will “pass” but be impossible to reason about operationally.
What I would do next (lowest-risk sequence)
- Add
docs/decision-checklist.mdand fill only Phase 0/1 decisions (don’t boil the ocean). - Implement conformance runner that can already test FS vs index/log backends (prove the harness works).
- Add deterministic ordering + replay equivalence tests.
- Only then implement
asl_store_minio, using the harness as your guardrail.