Skip to content

chore: verify spike 005 locking-interop findings on Linux #42

Description

@iheitlager

Description

Spike #8 (tests/spike/005_locking_interop, PR #41) validated SQLite's fcntl-based locking protocol — journal-mode lock ladder, PENDING anti-starvation semantics, the WAL -shm reader-mark protocol, and the POSIX close()-drops-all-locks trap + fd-cache workaround shape — against a live stock sqlite3 CLI process. All 5 experiments pass.

The spike's own exit criteria (and this repo's sandbox) only exercised macOS. The issue explicitly asked for "macOS and Linux both exercised (POSIX lock behavior differs)" — findings.md flags Linux as an open item rather than silently dropping it. CI (.github/workflows/ci.yml) already runs on ubuntu-latest for make test/make lint, but no workflow currently runs any spike target — spikes are exempt/manual by design (tests/spike/** is excluded from the mvl-limit gate and from make test).

Steps to verify

Run make spike-005 (from repo root) or cd tests/spike/005_locking_interop && make run on a Linux box or CI runner with a stock sqlite3 binary on PATH (apt-get install -y sqlite3 on Debian/Ubuntu runners if not preinstalled). All 5 experiments should PASS with output matching the same semantics documented in findings.md.

Suggested approach

  • Lightest touch: a one-off workflow_dispatch GitHub Actions job (ubuntu-latest) that runs make spike-005 — since this is throwaway spike code, not a permanent CI gate, it doesn't need to be wired into the default test/lint jobs.
  • Alternative: run manually on any Linux machine and record the output.

Acceptance criteria

  • make spike-005 run on Linux, all 5 experiments PASS (or a real divergence from macOS is documented as a new finding — POSIX lock semantics can differ across kernels)
  • findings.md's "Linux — not exercised" line updated with the result
  • .openspec/plan.md's Concurrency Contract "macOS and Linux both exercised" language can be closed out (or a divergence finding is folded in)

Complexity

Estimate: trivial
Reasoning: no new design or code — same experiments, same harness, a different OS to run it on. The only real work is finding/using a Linux runner and reading the output.

Context

Follow-up from #8 / PR #41.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions