Work Done
Reviewed https://github.com/virdx/mono/pull/381 at 1a9fb3878da0ffef06f37e2be95956a67727367a with independent correctness, minimality, and deep code-quality passes. No branch edits. Reproduced a folder-marker classification bug with the installed MinIO XML parser: a sized Contents key ending in slash becomes a self-prefix. Recommend distinguishing real objects from CommonPrefixes in API and direct mode. Recommend one listing method returning ListObjectsResult, non-recursive browsing default, and explicit recursive=True in the directory-download caller. Changing the HTTP default breaks older SDKs that omit the parameter.
87 SDK tests and 21 API storage tests passed through Pixi. Nx lint/typecheck/format-check exited zero; API Ruff tasks found no Python files, so these are not meaningful API lint/format validation. Schemas dependency build passed.
Pitfalls
MinIO is_dir means a trailing slash, not exclusively CommonPrefixes. Synthetic mocks obscured real folder-marker semantics. Invoke API tests via Pixi activation; direct interpreter runs lacked the PostgreSQL tool PATH. The SDK/schema knowledge guide describes an older version; use current repository callers for API decisions.
Improvements
Use concrete MinIO Object records for the marker regression test. When changing listing defaults, make the existing download fake assert recursive=true; it currently ignores this query parameter. Avoid preserving a tuple adapter solely to avoid migrating one internal caller.
Follow-up: test simplicity and effectiveness
A dedicated read-only test-design review found the suite small, not generally bloated. Replace the new delimiter/grouping simulator in API StubMinio with canned real MinIO records; its synthetic is_dir values hide the reproduced marker regression. Keep public HTTP boundary tests, assert complete results and the chosen omitted-argument default. Remove the tuple compatibility test when removing its adapter. Strengthen existing nested-download fakes with recursive=true and no-delimiter assertions rather than adding new tests or emulating S3 behavior. Private direct-control setup coupling is minor and does not justify new production injection abstractions. No live S3, generic contract framework, or heavyweight route/database suite is needed for this change.
PR implementation outcome
Committed and pushed interface consolidation separately as mono commit 3911d4a7. Folder-marker classification fix committed as 8f4f2ba5: API and direct listing retain sized trailing-slash keys as objects, while unsized common prefixes remain prefixes. Replaced API listing simulator with concrete MinIO records. Removed the separately added direct marker test at user request. Final SDK suite: 86 passed; API storage: 21 passed. Affected format/lint/typecheck/test/build and boundary sequence passed; explicitly targeted API Ruff checks also passed. Recursion defaults unchanged.
An independent background test-quality pass is running from fresh main in branch refactor/vxdata-test-quality, worktree /Users/felix.knispel/work/worktrees/mono/vxdata-test-quality/mono. SDK and API storage workers own disjoint test files. Their changes remain isolated, uncommitted, and outside PR 381. User prioritizes cognitive ownership and behavior/contract tests; rejects constructor bypasses and routine expectation rewrites that track implementation rather than regressions.
Main reconciliation and release versions
Merged main d005e9fa with route resolution preserving recursive parameter, rich listing result, and synchronous handlers (merge commit 2540fb94). Refreshed three Pixi locks with Pixi; each change only corrected the SDK requires_python metadata from >=3.11 to >=3.11.4. Separate commit 6f22f73b sets API, SDK, and schemas to 4.1.0: additive listing support above main’s 4.0.0 releases. No default change. Pre-commit checks passed; merged API storage tests passed (21). Full merged validation was still running when this note was written. An initial concurrent SDK run found generated build tests and transient missing editable imports; rerun uses explicit tests directory.