Files
ThothII/docs/testing/chinook-installation-smoke.md
T

5.4 KiB

First installation acceptance fixture: Chinook without Evidence

Decision agreed on 2026-09-28: the first installer acceptance may use one ad hoc workspace and a downloadable local database without Evidence. The three curated example databases remain a separate deferred subproject.

Use Chinook v1.4.5, the sample digital music store. The upstream PostgreSQL SQL asset contains both schema and data: 11 related tables for artists, albums, tracks, customers, employees, invoices and playlists. The source is licensed under MIT. This fixture does not supply Evidence or claim that SQL schema information is Evidence. It uses native PostgreSQL DDL/data, so SQLite type conversion is not involved.

Prepare the independent test database

Run in Ubuntu WSL2 with Docker Desktop integration, or in a Linux/macOS Bash terminal for a preliminary check. Docker, curl and OpenSSL must be available. The first formal host acceptance remains Windows/WSL2.

The helper below is in the ThothII repository for maintainers/testers; it is not yet included in the downloadable operator bundle. It provisions only the test DWH, which is a separate container from the installation's PostgreSQL Metadata Catalog.

cd /path/to/ThothII
bash scripts/prepare-chinook-test.sh "$HOME/thothii-chinook-test"

Use a new directory outside any workspace repository. The helper pins the upstream SQL version and checksum, creates private random passwords, starts PostgreSQL, imports schema/data, and creates thoth_reader with SELECT privileges. Passwords remain in the private directory, not in a workspace YAML or this repository. An existing directory or container is refused; the helper never resets it. An interrupted preparation leaves its private logs/container available for diagnosis. Do not rerun the upstream import manually against another database: its opening statements drop and recreate chinook.

Default container: thothii-test-chinook. Host endpoint: 127.0.0.1:55432. Override names/port before the command if needed:

CHINOOK_TEST_CONTAINER=my-chinook CHINOOK_TEST_PORT=55433 \
  bash scripts/prepare-chinook-test.sh "$HOME/my-chinook-test"

Expected import counts: 11 tables, 3,503 tracks, 412 invoices and 2,240 invoice lines. The SQL download is 600,200 bytes. Its SHA-256 is e3fde5c1a5b51a2a91429a702c9ca6e69ba56e6c7f5e112724d70c3d03db695e.

Stop/start retains the database:

docker stop thothii-test-chinook
docker start thothii-test-chinook

Only when deliberately discarding this test database, docker rm -f -v thothii-test-chinook removes the container and its anonymous data volume. Private files in the preparation directory are separate and remain until removed explicitly.

Prepare the workspace documents

Using the native bundle, keep tht beside tht-workspace-documents and run:

/path/to/bundle/bin/tht workspace prepare \
  --directory "$HOME/thothii-workspaces-test" \
  --id chinook-test --name "Chinook installation test" --language it
/path/to/bundle/bin/tht workspace validate \
  --directory "$HOME/thothii-workspaces-test"

The generated workspace has Evidence absent. Keep that configuration; no fake Evidence document or credential should be added merely to satisfy installation.

The later installation-local binding must select PostgreSQL, database chinook, schema public, user thoth_reader, and reference the private reader-password file. Do not use the PostgreSQL administrator as the ThothII data source account. The host endpoint above is for host-side tools: 127.0.0.1 inside ThothII core would refer to core itself. At integration, configure and verify connectivity from both the preflight process and the core container; do not copy the host endpoint unchanged into a runtime binding. That integration belongs to the remaining installer/binding tickets and is not established by successful import here.

Acceptance scope

After the remaining installer increments are available, verify prepared documents, non-interactive setup using published images, database connection, schema sync, required preprocessing/readiness and a real human-reviewed question. Then verify stop/start preserves application state. These checks do not validate Evidence ingestion, retrieval or interpretation; record those as not exercised for this fixture.

Suggested practice questions, without target SQL:

  • Which five artists have the most tracks in the catalogue?
  • Which countries have the largest total invoice amounts?
  • Which customers bought tracks from more than three genres?

These are practice prompts, not benchmark scores or a substitute for human review. Windows/WSL2 acceptance is followed by Omarchy and macOS in separate steps.

Preliminary verification, 2026-09-28

The helper imported the pinned SQL into a fresh Linux amd64 PostgreSQL container on the macOS development host. Counts matched the values above. A real TCP connection using the generated thoth_reader password read the data; default_transaction_read_only was on, and an UPDATE without matching rows was still rejected with SQLSTATE 42501 even inside BEGIN READ WRITE. Native workspace preparation and JSON validation reported ok: true and evidence: absent, explicitly deferring Catalog binding, connectivity and runtime preprocessing. These are fixture checks, not Windows or full-installer acceptance.