CI: make Common Lisp core tests reproducible from a clean checkout #9

Closed
opened 2026-08-16 05:08:50 +00:00 by lost-rob0t · 0 comments
lost-rob0t commented 2026-08-16 05:08:50 +00:00 (Migrated from github.com)

Problem

Hackmode now has meaningful ASDF regression tests, but the repository does not yet declare/fetch its complete Common Lisp dependency graph from a clean CI checkout. The current monorepo workflow can enforce source/layout contracts and Emacs syntax, but it cannot honestly claim asdf:test-system :hackmode passes in an isolated runner.

Current behavior

  • source/hackmode-core/hackmode-tests.asd exercises operation registry reopen and asset normalize/dedupe/persist/event behavior.
  • Hackmode depends on external systems including Tek9 and the canonical starintel Common Lisp schema runtime, plus existing Hackmode dependencies.
  • the root flake currently provides SBCL/system tools but does not pin the full Lisp source graph.

Desired behavior

A clean GitHub Actions runner can execute the Hackmode ASDF tests without relying on the developer's pre-populated Quicklisp/local-project tree.

Architecture

Prefer one reproducible dependency path shared by local development and CI. Do not vendor StarIntel Server, Quasar, or Tek9 into the Hackmode monorepo merely to make CI work. Pin/source reusable libraries as dependencies (Nix/Quicklisp/Qlot/ASDF source registry as appropriate).

Implementation scope

  • inventory every direct/transitive non-Quicklisp dependency required by :hackmode
  • choose the least-surprising reproducible dependency mechanism compatible with the existing Nix/ASDF setup
  • pin starintel and tek9 as external library dependencies
  • run asdf:test-system :hackmode in CI
  • preserve the lightweight monorepo hygiene job

Dependencies

Depends on #4. Can proceed in parallel with #6, but #6 must not be declared fully verified until these runtime tests execute on a clean runner.

Acceptance criteria

  • clean runner loads :hackmode
  • clean runner executes asdf:test-system :hackmode
  • operation registry reopen test passes
  • asset normalize -> dedupe -> persist -> event test passes
  • no developer-local Quicklisp state is assumed
  • reusable external libraries remain separate repositories

Verification

Delete/ignore all user-local ASDF/Quicklisp state and reproduce the exact CI command from a clean checkout.

## Problem Hackmode now has meaningful ASDF regression tests, but the repository does not yet declare/fetch its complete Common Lisp dependency graph from a clean CI checkout. The current monorepo workflow can enforce source/layout contracts and Emacs syntax, but it cannot honestly claim `asdf:test-system :hackmode` passes in an isolated runner. ## Current behavior - `source/hackmode-core/hackmode-tests.asd` exercises operation registry reopen and asset normalize/dedupe/persist/event behavior. - Hackmode depends on external systems including Tek9 and the canonical `starintel` Common Lisp schema runtime, plus existing Hackmode dependencies. - the root flake currently provides SBCL/system tools but does not pin the full Lisp source graph. ## Desired behavior A clean GitHub Actions runner can execute the Hackmode ASDF tests without relying on the developer's pre-populated Quicklisp/local-project tree. ## Architecture Prefer one reproducible dependency path shared by local development and CI. Do not vendor StarIntel Server, Quasar, or Tek9 into the Hackmode monorepo merely to make CI work. Pin/source reusable libraries as dependencies (Nix/Quicklisp/Qlot/ASDF source registry as appropriate). ## Implementation scope - inventory every direct/transitive non-Quicklisp dependency required by `:hackmode` - choose the least-surprising reproducible dependency mechanism compatible with the existing Nix/ASDF setup - pin `starintel` and `tek9` as external library dependencies - run `asdf:test-system :hackmode` in CI - preserve the lightweight monorepo hygiene job ## Dependencies Depends on #4. Can proceed in parallel with #6, but #6 must not be declared fully verified until these runtime tests execute on a clean runner. ## Acceptance criteria - clean runner loads `:hackmode` - clean runner executes `asdf:test-system :hackmode` - operation registry reopen test passes - asset normalize -> dedupe -> persist -> event test passes - no developer-local Quicklisp state is assumed - reusable external libraries remain separate repositories ## Verification Delete/ignore all user-local ASDF/Quicklisp state and reproduce the exact CI command from a clean checkout.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/hackmode#9
No description provided.