AgentDock

Documentation

v1 release checklist

Pass/fail evidence for every release criterion as of 22 October 2026, the owner-only actions, and the go/no-go recommendation.

Evidence is from automated tests (npm test: 208 tests, also green on a hosted GitHub runner), recorded live checks, or named scripts. FAIL and BLOCKED are not hidden.

Recommendation: NO-GO for a public "v1", GO for a Linux-first controlled beta once three owner actions are done#

Arcotheon's core is sound and verified: packaging, signing, resolution, installation, rollback, sandboxed execution on Linux, the registry, the directory, and a working AgentDock integration. What blocks a v1 label is not code:

  1. No production trust root exists. The registry still trusts a development key held on one machine.
  2. Tools cannot run on Windows or macOS (no validated native sandbox), so a v1 for those users means "install and verify only".
  3. Entitled and Pro-only distribution has no server, and R2 is not enabled.

Everything else below passes or is a documented limitation.

Checklist#

#CriterionResultEvidence
1.adcap format specified, schema published, existing packages still installPASSspec/adcap-1.md; a store written by the first deployed SDK (113a98f) installs from today's live registry and is then listed, doctored, updated, rolled back, run and uninstalled by the current SDK
2Reproducible buildsPASSidentical archive bytes across builds (tests); two clean builds of the npm tarballs hash identically (scripts/pack-check.mjs)
3Integrity and signature verification, hostile archivesPASStamper/add/remove/swap tests; fuzzing of the tar/gzip readers, signed-package mutation, manifest validator and catalogue parser (found and fixed a resolver self-dependency bug and non-deliberate errors on malformed catalogues)
4Dependency resolution correctPASSproperty test: any returned solution satisfies every constraint, and "no solution" is returned only when brute force finds none
5Install atomicity and crash recoveryPASS11 SIGKILLs at different points during real installs: the store stays consistent and a retry succeeds; leftovers, orphans, damaged state and stale/empty locks are repaired (found and fixed an empty-lock hang)
6Permission consent on install, update, dependency update, rollbackPASStests; AgentDock approval dialogs exercised in Electron
7Sandbox: filesystem, process, network, syscalls, limits (Linux)PASS, with limits40+ adversarial tests: direct IPv4/IPv6/private/metadata/DNS blocked, rebinding refused, exec isolation, seccomp denylist, optional strict allowlist, cgroup and rlimit limits tested separately, cleanup after timeouts
8Sandbox on Windows / macOSFAIL (by design: refuses)no Windows backend; macOS Seatbelt written but never run on a Mac, off by default. Nothing runs unsandboxed
9Registry: signed catalogue, rollback and freeze protection, revocation, suspensionPASStests incl. forged and rolled-back catalogues
10Root key rotation and recovery procedurePASS (rehearsed), NOT EXECUTEDtests/rotation-rehearsal.test.ts runs the whole procedure with throwaway keys and an external signer on a copy of the real registry; no production key was created
11Public access needs no GitHub credentialsPASSinstall from a clean environment contacted only agdc.dev; the private GitHub release returns 404 anonymously
12Release assets and hashesPASSscripts/verify-releases.mjs: all 6 versions: GitHub release asset, Git mirror and public mirror hash to the registry entry
13npm packages publishablePASS (not published)tarballs contain only dist, schemas, readme, licence; no sources, maps or key material; installed into an empty project the CLI and SDK work
14Publishing workflow and automated reviewPASSregistry check-changes tests on real git repos (a change cannot vouch for its own key); registry-review workflow ran green on a hosted runner
15Branch protectionPASS (admin bypass on)PR + 1 review + registry-review check, no force-push or deletion; enforce_admins is off because there is one maintainer
16CI on a hosted runnerPASS208/208 at the time of the run, including the bubblewrap/seccomp tests (2 runs, a few cents)
17AgentDock integrationPASS, unmergedPR #87 (draft): packaged Linux build with the bundled, checksum-verified Node; 30 packaged e2e checks and a hostile-capability probe; Pro gating tested through the registered IPC handlers (found and fixed a rollback-onto-Pro bypass)
18AgentDock full suitePASSintegration branch 0 failures in 300 files. The 34 failures seen earlier were an environment problem (vitest 5 / vite 7 / Electron 44 installed instead of the lockfile's 2.1.9 / 5.4.21 / 33.4.11), plus one stale fixture fixed on fix/test-baseline-failures. None came from Arcotheon
19Packaging overheadPASS+120.7 MiB unpacked (120 MiB is the Node binary; the SDK is 516 KiB); startup difference about 50 ms, within noise; idle CPU about 1%; the host process is not running until Capabilities opens
20Native Windows/macOS AgentDock buildsNOT VERIFIEDpinned Node checksums for all six platform builds match nodejs.org's SHASUMS256.txt; nothing was built or run there
21Website: GPU, Chrome, Firefox, WebKit, fallbacks, accessibilityPASS, with limitsreal RTX 3060 at 60 fps; Firefox 158, Playwright WebKit (not Safari); WebGL-off fallback, reduced motion, no-JS, measured contrast; 3 defects found and fixed
22Real Safari / iOS, other GPUsNOT VERIFIEDnot available here
23Storage ready for R2BLOCKED (account)S3/R2 client with SigV4 (matches AWS vector), resumable multipart uploads tested against a local S3 server; R2 returns error 10042
24Entitlement serviceBLOCKED (does not exist)reference gateway and client seam only; deny-everyone adapter
25Production signing keysBLOCKED (owner)procedure in production signing

Owner-only actions, in order#

  1. Decide key custody and run the root ceremony (production signing): create the production root and a recovery root (hardware token or KMS), add them to registry/root-keys.json, rotate, and release an SDK pinning them. Then re-vendor that SDK into AgentDock. Until then the registry's trust anchor is a development key.
  2. Enable R2 (Cloudflare dashboard, needs billing information). Then create a bucket, a scoped API token, and arcotheon storage push the first dataset. Nothing else in Arcotheon changes.
  3. Build the entitlement provider against Sarja accounts, then deploy services/entitlement-gateway with R2, a KV namespace and the grant signing key as a secret.
  4. Publish to npm: create the @arcotheon organisation and a granular token as the NPM_TOKEN secret, then dispatch release.yml (it runs the tests and pack-check first and publishes with provenance).
  5. Merge decisions: website PR #9 (supersedes #7 and #8), AgentDock PR #87 and fix/test-baseline-failures. None were merged. Make the repository public when you want outside publishers.
  6. Windows/macOS: either accept "install and verify only" for v1, or fund a native Windows helper and validate the Seatbelt backend on a real Mac.

Known security limitations (unchanged by this sprint)#

Denylist seccomp by default (the strict allowlist is opt-in, x86_64, and may break unusual tools); a kernel or bubblewrap vulnerability could still allow escape; net:connect filters by host and port, not content; no GPU for tools; memory limits fall back to a 1 GiB RLIMIT_DATA floor where cgroup v2 delegation is unavailable.