spec/ now contains only the language definition (5 files): evaluator.sx, parser.sx, primitives.sx, render.sx, special-forms.sx lib/ contains code written IN the language (8 files): stdlib.sx, types.sx, freeze.sx, content.sx, bytecode.sx, compiler.sx, vm.sx, callcc.sx Test files follow source: spec/tests/ for core language tests, lib/tests/ for library tests (continuations, freeze, types, vm). Updated all consumers: - JS/Python/OCaml bootstrappers: added lib/ to source search paths - OCaml bridge: spec_dir for parser/render, lib_dir for compiler/freeze - JS test runner: scans spec/tests/ (always) + lib/tests/ (--full) - OCaml test runner: scans spec/tests/, lib tests via explicit request - Docker dev mounts: added ./lib:/app/lib:ro Tests: 1041 JS standard, 1322 JS full, 1101 OCaml — all pass Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
2.5 KiB
YAML
72 lines
2.5 KiB
YAML
# Standalone dev mode for sx_docs only
|
|
# Replaces ~/sx-web production stack with bind-mounted source + auto-reload
|
|
# Accessible at sx.rose-ash.com via Caddy on externalnet
|
|
|
|
services:
|
|
sx_docs:
|
|
image: registry.rose-ash.com:5000/sx_docs:latest
|
|
environment:
|
|
SX_STANDALONE: "true"
|
|
SECRET_KEY: "${SECRET_KEY:-sx-dev-secret}"
|
|
REDIS_URL: redis://redis:6379/0
|
|
WORKERS: "1"
|
|
ENVIRONMENT: development
|
|
RELOAD: "true"
|
|
SX_USE_REF: "1"
|
|
SX_USE_OCAML: "1"
|
|
SX_OCAML_BIN: "/app/bin/sx_server"
|
|
SX_BOUNDARY_STRICT: "1"
|
|
SX_DEV: "1"
|
|
OCAMLRUNPARAM: "b"
|
|
ports:
|
|
- "8013:8000"
|
|
volumes:
|
|
- /root/rose-ash/_config/dev-sh-config.yaml:/app/config/app-config.yaml:ro
|
|
- ./shared:/app/shared
|
|
- ./sx/app.py:/app/app.py
|
|
- ./sx/sxc:/app/sxc
|
|
- ./sx/bp:/app/bp
|
|
- ./sx/services:/app/services
|
|
- ./sx/content:/app/content
|
|
- ./sx/sx:/app/sx
|
|
- ./sx/path_setup.py:/app/path_setup.py
|
|
- ./sx/entrypoint.sh:/usr/local/bin/entrypoint.sh
|
|
# Spec + lib + web SX files (loaded by OCaml kernel)
|
|
- ./spec:/app/spec:ro
|
|
- ./lib:/app/lib:ro
|
|
- ./web:/app/web:ro
|
|
# OCaml SX kernel binary (built with: cd hosts/ocaml && eval $(opam env) && dune build)
|
|
- ./hosts/ocaml/_build/default/bin/sx_server.exe:/app/bin/sx_server:ro
|
|
- ./sx/__init__.py:/app/__init__.py:ro
|
|
# sibling models for cross-domain SQLAlchemy imports
|
|
- ./blog/__init__.py:/app/blog/__init__.py:ro
|
|
- ./blog/models:/app/blog/models:ro
|
|
- ./market/__init__.py:/app/market/__init__.py:ro
|
|
- ./market/models:/app/market/models:ro
|
|
- ./cart/__init__.py:/app/cart/__init__.py:ro
|
|
- ./cart/models:/app/cart/models:ro
|
|
- ./events/__init__.py:/app/events/__init__.py:ro
|
|
- ./events/models:/app/events/models:ro
|
|
- ./federation/__init__.py:/app/federation/__init__.py:ro
|
|
- ./federation/models:/app/federation/models:ro
|
|
- ./account/__init__.py:/app/account/__init__.py:ro
|
|
- ./account/models:/app/account/models:ro
|
|
- ./relations/__init__.py:/app/relations/__init__.py:ro
|
|
- ./relations/models:/app/relations/models:ro
|
|
- ./likes/__init__.py:/app/likes/__init__.py:ro
|
|
- ./likes/models:/app/likes/models:ro
|
|
- ./orders/__init__.py:/app/orders/__init__.py:ro
|
|
- ./orders/models:/app/orders/models:ro
|
|
networks:
|
|
- externalnet
|
|
- default
|
|
restart: unless-stopped
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
|
|
networks:
|
|
externalnet:
|
|
external: true
|