FreeData

Every ReadyStack image ships with everything — the full build database, runnable test scripts, production seed data, and a human-readable manifest. Download our image. Audit our work. Run our tests. Data is free.

Every other Docker distribution asks you to trust them. We give you the tools to verify us.

The AssetChain is ReadyAssets' core technology — an unbreakable chain of accountability that runs through every build. Three independent chains verify every product: Package Creation (the image builds clean), Seed Data (data imports correctly), and Use Case Validation (all tests pass). The manifest, the tests, and the reports are all generated from it.

1 Define expected behaviors

"PostgreSQL must accept connections. Login page must render. Seed data must contain 3 courses."

2 Build and record every action

Every dependency pulled, every config written, every file changed — logged with full context: why, what problem, what error avoided.

3 Test everything

Health checks run against every expected behavior. PASS or FAIL. No "looks good to me."

4 Clean rebuild

docker build --no-cache from scratch. If it only worked because of cached layers, we catch it here.

5 Ship with proof

Generate all FreeData deliverables from the ContractChain database. Package inside the image. No data = no release.

Every ReadyStack image contains a /readystack/ directory with four deliverables. All four ship together or nothing ships.

/readystack/
├── MANIFEST.md — human-readable proof of what we built and tested
├── contractchain.json — full build report (JSON) — every action, decision, fix across all 3 chains
├── data/
│ └── seed-data.sql — importable production data we validated against
└── tests/
    ├── run-all.sh — run every health check we ran
    ├── boot.sh — container + process manager checks
    ├── services.sh — database, cache, web server, workers
    ├── application.sh — login, API, assets
    ├── data.sh — seed data verification
    └── integration.sh — OAuth, email, external connectivity

// The Manifest

A marketing-focused, human-readable summary. What we built, what we tested, what passed. The brochure with receipts.

# MANIFEST.md

Product: Install Canvas
Version: 2026.02.15.1
Upstream: Canvas LMS prod @ abc123
Certified by: Tombomadil
Built: 2026-02-15T03:00:00Z (22m 14s)

## What We Tested (14/14 passed)
Container starts (3.2s)
PostgreSQL accepts connections (4.1s)
Redis responds (0.3s)
Login page renders (1.1s)
API returns valid JSON (0.8s)
Seed data: 3 courses, 10 students (1.5s)
...

## What Broke and How We Fixed It
VERIFIED IC-001: nokogiri compile → added libxml2-dev
VERIFIED IC-002: Asset OOM → NODE_OPTIONS heap 4096MB

## Verify It Yourself
docker exec <container> /readystack/tests/run-all.sh

// The ContractChain Database

The full build database ships as a SQLite file. Import it into any SQLite client and query every action, every decision, every fix, every lesson. No other Docker distribution gives you their build database.

-- "What did they change and why?"
SELECT a.name, c.reason, c.file_changed
FROM actions a JOIN contract_chain_attributes c ON c.action_id = a.id
WHERE c.file_changed != 'N/A';

-- "What bugs did they hit?"
SELECT defect_code, category, error_output, fix_applied
FROM defects;

-- "What did they learn?"
SELECT category, error_pattern, root_cause, fix
FROM lessons;

Users can diff contractchain.json across versions to see exactly what changed week to week.

// Production Data

The exact seed data we validated against, exported as an importable SQL file. Reset to a known good state anytime. The data matches what our health checks verified — no guessing.

Canvas Example

1 school · 3 courses · 3 teachers · 10 students · 3 parents · 30+ assignments · grades · announcements · Developer Key · API token

// Test Automation

Run the same health checks we ran. One command. Same expectations, same checks, independently verifiable.

$ docker exec my-canvas /readystack/tests/run-all.sh

=== Boot ===
  ✅ Container running
  ✅ Supervisord healthy
=== Services ===
  ✅ PostgreSQL
  ✅ Redis
  ✅ Apache/Passenger
  ✅ Delayed job
=== Application ===
  ✅ Login page
  ✅ API responds
  ✅ Assets served
=== Data ===
  ✅ Seed data present
  ✅ Grades populated
  ✅ Announcements exist
=== Integration ===
  ✅ OAuth endpoint
  ✅ Email config

=== RESULTS ===
PASS: 14   FAIL: 0
✅ All checks passed
The image is the artifact. The FreeData is the proof.
No FreeData = no release. Ever.

Data is free.