SID

Reference

DIS V18 — The Constitutional Compiler

DIS compiles an .adl schema into a complete, buildable application. No runtime, no server, no database connection: it reads files and writes files.

Backend-only services

Every organ or service can be emitted without a frontend. Declare topology frontend: { kind: "none" } and DIS honors it: no React/Next/Vue tree, no frontend Dockerfile, no frontend service in docker-compose or k8s.

meta:
  domain: "my_backend_service"
topology database: { kind: "sqlite", port: 5432 }
topology frontend: { kind: "none" }   # backend-only: no frontend emitted
service Api:
  backend: "axum"
  database: "sqlite"
  • The historical default is unchanged: no frontend declared means a React frontend is emitted.
  • Only an explicit "none" (also "false", "null", "disabled") produces a backend-only service.
  • docker-compose.yml and k8s/deployment.yaml then contain only database + backend services.

Zero-warning generated backends

The axum emitter gates boilerplate on the feature manifest, so a cargo check on a generated backend compiles with 0 warnings:

  • scheduler.rs is emitted only when a @cron annotation exists; its imports and the state param are emitted only when the emitted job bodies use them.
  • authority.rs emits can_veto only when veto relationships exist, authority_chain only when graduated levels are used, and dead fields carry #[allow(dead_code)].

Cron expressions execute real operations

@cron: "*/60 * * * * *" and other cron expressions now emit an actual per-tick execute body in scheduler.rs, calling the generated operations::execute_<op> with a zero-valued payload — not just a log line.

operation ReportMetrics:
  input: "count:u64"
  output: "ok"
  handler: rust
    Ok(serde_json::json!({"count": req.count}))
  @cron: "*/60 * * * * *"

MCP tool surface

External agents drive DIS through the SID MCP server:

  • compile_adl / validate_adl /estimate_adl — compile, validate, and size an ADL schema.
  • get_dis_docs(audience=...) — the live docs: adl_quickref, full_manual, error_recovery, external_mcp.
  • get_workspace / get_file /put_file + promote_workspace_file — browse, edit, and preserve files across regeneration.
  • task_get / task_result /task_cancel — mission lifecycle; run_workspace_step — allowlisted verification (cargo check etc.).

Acceptance gate: dis_status = 0 only means the compiler accepted the ADL. The real gate is the generated build — cargo check must be 0 warnings, 0 errors.