Data warehouse / ETL — ClickHouse + Dagster + Python. Closest of the four to Step 2 thanks to nested agent docs. Cherny harness audit — 2026-08-04.
Strong nested AGENTS.md and copyable ETL/schema patterns make
assisted pairing excellent. Still not Step 2 ready: fragmented
local verify, no CI/lint/types, shared Docker volumes, sparse asset checks,
no auto-review.
| Layer | Reality | Evidence |
|---|---|---|
| Warehouse | ClickHouse single-node | config/docker-compose.yml · clickhouse-server:26.2.3 |
| Orchestration | Dagster · 19 workflows · UI :3366 | etl/definitions.py |
| Python | 3.14 + uv | service/etl_agent/ · service/migrations/ |
| Schema | CH 19 migrations · PG 11 (runner TBD) | schema/clickhouse/ · schema/postgres/ |
| ETL shape | raw → dim / fact / snap / agg + ML | etl/workflows/ |
| Ops | EC2-oriented · Alloy→Loki · Caddy | config/ · bin/ |
| Gate | Status | Evidence |
|---|---|---|
| Agent docs | Strong | Root + nested: AGENTS.md, schema/AGENTS.md, etl/AGENTS.md, etl/workflows/AGENTS.md + GUIDELINES.md / DEVELOPMENT.md. No CLAUDE.md / .cursor. |
| Copyable patterns | Ready | etl/workflows/AGENTS.md full templates for assets/jobs/SQL; concrete refs (raw_students, dim_students…). |
| Self-verification | Weak | bin/test_etl_agent.sh + testcontainers; migrations/notif tests; smoke curls in DEVELOPMENT.md — fragmented, not in root AGENTS.md, no single verify entrypoint. |
| Lint / types / format | Gap | No ruff/mypy/black/pyright in either package pyproject.toml. |
| CI / auto review | Gap | No .github/ — no Actions, CODEOWNERS, or merge gates. |
| Parallel isolation | Partial | Docker Compose exists; shared host volumes (clickhouse-data/, dagster-data/) and fixed ports 8123/3366. No worktree guidance. |
| ASSET_CHECKS | Sparse | 17/19 workflows empty. Real checks: dim_students, notification_prediction. |
| Secrets hygiene | OK | .env gitignored; .env.example tracked. |
| Migrations | Partial | CH runner via bin/migrate.sh + migrations compose. PG migrations files-only (runner TBD). |
| Nested agent guides | Root → schema → etl → workflows — actionable, not boilerplate |
| Conventions | Naming, migrations, roles encoded in GUIDELINES |
| Local Docker stack | ClickHouse + Dagster + Alloy + Caddy via bin/dev_env.sh |
| Some real tests | etl_agent (~17), migrations, notification_prediction ML checks |
| Metadata / lineage | Rich ClickHouse metadata MD alongside migrations |
bin/test_etl_agent.sh + migrations tests) and a GitHub Actions PR workflow.
AGENTS.md —
How agents self-check; git worktree / compose project-name / port overrides so
parallel agents don’t collide on shared volumes.
taiyou-dw = Step 1 (Assisted): excellent nested agent docs and copyable ETL/schema patterns; blocked from Step 2 by missing CI/lint/types, fragmented self-verify, and no parallel isolation or auto-review gates.