Files
rose-ash/artdag/CLAUDE.md
giles 1a74d811f7
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m33s
Incorporate art-dag-mono repo into artdag/ subfolder
Merges full history from art-dag/mono.git into the monorepo
under the artdag/ directory. Contains: core (DAG engine),
l1 (Celery rendering server), l2 (ActivityPub registry),
common (shared templates/middleware), client (CLI), test (e2e).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

git-subtree-dir: artdag
git-subtree-mainline: 1a179de547
git-subtree-split: 4c2e716558
2026-02-27 09:07:23 +00:00

2.8 KiB

Art DAG Monorepo

Federated content-addressed DAG execution engine for distributed media processing with ActivityPub ownership and provenance tracking.

Project Structure

core/       # DAG engine (artdag package) - nodes, effects, analysis, planning
l1/         # L1 Celery rendering server (FastAPI + Celery + Redis + PostgreSQL)
l2/         # L2 ActivityPub registry (FastAPI + PostgreSQL)
common/     # Shared templates, middleware, models (artdag_common package)
client/     # CLI client
test/       # Integration & e2e tests

Tech Stack

Python 3.11+, FastAPI, Celery, Redis, PostgreSQL (asyncpg for L1), SQLAlchemy, Pydantic, JAX (CPU/GPU), IPFS/Kubo, Docker Swarm, HTMX + Jinja2 for web UI.

Key Commands

Testing

cd l1 && pytest tests/                    # L1 unit tests
cd core && pytest tests/                  # Core unit tests
cd test && python run.py                  # Full integration pipeline
  • pytest uses asyncio_mode = "auto" for async tests
  • Test files: test_*.py, fixtures in conftest.py

Linting & Type Checking (L1)

cd l1 && ruff check .                     # Lint (E, F, I, UP rules)
cd l1 && mypy app/types.py app/routers/recipes.py tests/
  • Line length: 100 chars (E501 ignored)
  • Mypy: strict on app/types.py, app/routers/recipes.py, tests/; gradual elsewhere
  • Mypy ignores imports for: celery, redis, artdag, artdag_common, ipfs_client

Docker

docker build -f l1/Dockerfile -t celery-l1-server:latest .
docker build -f l1/Dockerfile.gpu -t celery-l1-gpu:latest .
docker build -f l2/Dockerfile -t l2-server:latest .
./deploy.sh                               # Build, push, deploy stacks

Architecture Patterns

  • 3-Phase Execution: Analyze -> Plan -> Execute (tasks in l1/tasks/)
  • Content-Addressed: All data identified by SHA3-256 hashes or IPFS CIDs
  • Services Pattern: Business logic in app/services/, API endpoints in app/routers/
  • Types Module: Pydantic models and TypedDicts in app/types.py
  • Celery Tasks: In l1/tasks/, decorated with @app.task
  • S-Expression Effects: Composable effect language in l1/sexp_effects/
  • Storage: Local filesystem, S3, or IPFS backends (storage_providers.py)

Auth

  • L1 <-> L2: scoped JWT tokens (no shared secrets)
  • L2: password + OAuth SSO, token revocation in Redis (30-day expiry)
  • Federation: ActivityPub RSA signatures (core/artdag/activitypub/)

Key Config Files

  • l1/pyproject.toml - mypy, pytest, ruff config for L1
  • l1/celery_app.py - Celery initialization
  • l1/database.py / l2/db.py - SQLAlchemy models
  • l1/docker-compose.yml / l2/docker-compose.yml - Swarm stacks

Tools

  • Use Context7 MCP for up-to-date library documentation
  • Playwright MCP is available for browser automation/testing