(system
  (schema "jerboa.system/1")
  (name jerboa)
  (version "0.1.0")
  (kind stack)
  (language jerboa)

  (commands
    (canonical "jerboa")
    (links ("jerbuild" "jmcp" "jlsp"))
    (modes
      (jerboa
        (role runtime)
        (description "REPL, script runner, and explicit mode selector"))
      (jerbuild
        (role build)
        (entry "jerbuild.ss")
        (description "Compiler, package/build driver, and artifact generator"))
      (jmcp
        (role agent-tooling)
        (entry "mcp/server.ss")
        (description "MCP server and Jerboa tooling catalog"))
      (jlsp
        (role editor-tooling)
        (entry "lsp/main-binary.ss")
        (description "LSP server"))))

  (source
    (entries ("jerbuild.ss" "mcp/server.ss" "lsp/main-binary.ss"
              "tools/check-system-manifest.ss" "tools/system-report.ss"
              "tools/system-provenance.ss" "tools/system-diff.ss"
              "tools/check-audit-events.ss"
              "tools/check-generated-policy.ss"
              "tools/check-restrict-closure.ss"
              "support/security-worker-main.ss"
              "tools/workspace-health.ss"
              "tools/capability-plan.ss"
              "tools/check-capability-use.ss"
              "tools/check-native-boundary.ss"
              "tools/ffi-audit-report.ss"
              "tools/check-install-policy.ss"
              "tools/tcb-report.ss"))
    (libraries ("lib/" "src/" "tools/"))
    (tests ("tests/"))
    (docs ("docs/"))
    (examples ("examples/audit-events.sexp"))
    (generated
      ("build/" "dist/" "lsp/analysis/completion-tables.ss"
       "*.sls" "*.so" "*.wpo" "*.boot")))

  (dependencies
    (vendored ("vendor/ChezScheme" "vendor/jsqlite"))
    (native ("jerboa-native-rs" "browser-repl"))
    (external-tools ("cc" "cargo" "make" "tar" "ln" "rm" "mkdir" "find"
                     "shasum|sha256sum")))

  (capabilities
    (filesystem
      (read ".")
      (write "build/" "dist/" ".chez/" ".chez-cross-*/")
      (execute ".chez/bin/scheme" "cc" "cargo" "make" "tar" "ln" "rm" "mkdir"
               "find" "shasum" "sha256sum"))
    (network
      (connect declared)
      (listen none))
    (process
      (spawn ("scheme" "cc" "cargo" "make" "tar" "ln" "rm" "mkdir" "find"
              "shasum" "sha256sum")))
    (environment
      (read "JERBOA_HOME" "SCHEME" "CHEZ_DIR" "CC" "TARGET_MACHINE"
            "JERBOA_CROSS_PREFIX" "JERBOA_XPATCH" "JERBOA_MCP_REPO"
            "JERBOA_MCP_MODE")
      (deny "*"))
    (secrets
      (read none))
    (eval
      (modules declared-by-tooling))
    (native
      (load ("jerboa-native-rs" "browser-repl" "support/*.c")))
    (package
      (install none)
      (build declared)
      (publish planned)
      (sign planned)))

  (build
    (mode multicall)
    (primary-target "jerboa")
    (test-targets ("system-check" "system-strict" "system-report"
                   "system-provenance" "system-diff" "audit-event-check"
                   "generated-policy-check" "unification-check"
                   "restrict-closure-check" "test-worker"
                   "workspace-health" "capability-plan"
                   "capability-use-check" "native-boundary-check"
                   "ffi-audit-report" "install-policy-check" "tcb-report"
                   "unification-release-check" "jerboa-smoke" "mcp-test-binary"
                   "jlsp"))
    (outputs ("dist/jerboa" "dist/jerbuild" "dist/jmcp" "dist/jlsp"))
    (reproducible partial)
    (install-code none)
    (native rust-plus-audited-c-shims))

  (provenance
    (content-addressed planned)
    (lock-file planned)
    (signing planned)
    (sbom planned)
    (tcb ("Chez Scheme" "Jerboa stdlib" "jerboa-native-rs" "browser-repl"
          "vendor/jsqlite"
          "support/multicall-main.c" "support/jerboa-embed.c"
          "support/jerboa-embed.h"
          "support/hardening-report.h"
          "support/landlock-shim.c")))

  (native-boundary
    (rust ("jerboa-native-rs" "browser-repl"))
    (c-shims ("support/multicall-main.c" "support/jerboa-embed.c"
              "support/jerboa-embed.h" "support/hardening-report.h"
              "support/landlock-shim.c"))
    (ffi-wrapper-policy explicit-safe-wrapper)
    (fuzz planned))

  (audit
    (schema "jerboa.audit/1")
    (required-events
      (capability/check package/resolve build/start build/finish
                        provenance/sign native/load eval/run))))
