Drop the temporary cleanup helper and all remaining clawdie-site references now that the docs project path is clawdie-docs.
---
Build: pass | Tests: pass — 2372 passed (704 files)
setup/cms.ts: removeLegacyDocsBootstrapMount() now strips any fstab
entry whose source path ends with bootstrap/cms/clawdie-site and
best-effort umounts the stale target before adding the new
clawdie-docs mount. Without this, existing installs would carry a
broken fstab line pointing at a renamed directory; the mount works
in-memory until the next bastille restart, then fails confusingly.
.agent/skills/{ansible-freebsd,astro,strapi}: replace clawdie-site
with clawdie-docs in skill text so agents are pointed at the new
project path.
NOTE: bootstrap/skills-memory/artifact.sql still needs to be
regenerated on the host via `just refresh-skills-artifact` once
OPENROUTER_API_KEY is set there — embedding regen cannot run from
this Linux side.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Make the docs renderer name match its purpose, add CMS_DOCS_SITE_PATH with ASTRO_SITE_PATH compatibility, and update docs publishing paths.
---
Build: pass | Tests: pass — 2372 passed (704 files)
Autogenerate the docs sidebar from the public content tree, sync Slovenian docs into the Starlight content copy, remove stale Astro-only English and guide duplicates, use honest 404s for missing docs pages, and repair stale Codeberg links.
---
Build: pass
Tests: pass — 2221 passed (166 files)
---
Build: pass | Tests: pass — 2221 passed (656 files)
Mount and deploy the platform landing Astro site from the CMS setup step, add the cms jail nginx server block for clawdie.si/www.clawdie.si, and surface platform landing/docs availability in /publishreport.
---
Build: pass
Tests: pass — 2221 passed (166 files)
---
Build: pass | Tests: pass — 2221 passed (656 files)
Step 5 of system-namespace cutover: complete the env-var removal that
step 4 set up. All consumers now import SERVICE_NAME from
src/platform-identity.ts directly; the deprecated PLATFORM_*
re-exports in src/config.ts are gone.
src/config.ts:
- PLATFORM_ID, PLATFORM_SERVICE_NAME, PLATFORM_RUNTIME_USER exports
removed.
- PLATFORM_RUNTIME_HOME stays (derived from SERVICE_NAME, used by
~10 consumers for path construction).
- Env-var allowlist drops PLATFORM_ID / PLATFORM_SERVICE_NAME /
PLATFORM_RUNTIME_USER / PLATFORM_RUNTIME_HOME entries.
- CONTROLPLANE_AIDER_TMUX_SESSION uses SERVICE_NAME directly.
setup/onboarding.ts:
- writeIdentity() simplified to write only ASSISTANT_NAME (display).
PLATFORM_ID / PLATFORM_SERVICE_NAME / PLATFORM_RUNTIME_USER are no
longer written to .env. Fresh installs have no PLATFORM_* keys.
- Status emission switched from PLATFORM_ID to SERVICE_NAME.
setup/env-audit.ts:
- Audit lists SERVICE_NAME instead of PLATFORM_ID; the env-file
PLATFORM_ID read is gone.
24 source files (src/*.ts, setup/*.ts, scripts/dashboard.ts):
- Bare PLATFORM_ID / PLATFORM_SERVICE_NAME / PLATFORM_RUNTIME_USER
references replaced with SERVICE_NAME.
- Imports rewired: SERVICE_NAME comes from
../{src/}platform-identity.js, not from config.js.
- Imports deduped where the sed sweep produced collisions.
Shell scripts (scripts/bhyve-evidence.sh, glass.sh, inspect-system.sh):
- Hardcoded SERVICE_NAME='clawdie' and SERVICE_USER='clawdie'.
No more grep-the-.env fallbacks; the constants are the source.
Tests (middle path):
- Mechanical fixes (import path, renamed assertion text):
src/hostd/privileged-commands.test.ts, src/startup-report.test.ts,
setup/env-audit.test.ts, setup/install-mode.test.ts.
- Skipped with `// system-namespace:` markers (pinned removed
env-driven override behavior; Codex rewrites once the bootstrap-
config service-user override path lands):
setup/verify.test.ts > 'uses the platform service name for PID candidates'
setup/service.test.ts > 'resolves a platform runtime separately from the tenant'
Test files still containing PLATFORM_* strings in vi.mock contents,
ENV_KEYS arrays, or comments are left untouched — they are test
artifacts that don't affect runtime; mock contents resolve to
'clawdie' which still equals SERVICE_NAME.
tsc clean. 2095 tests pass, 4 skipped, 0 fail.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---
Build: pass | Tests: pass — Tests 2095 passed | 4 skipped (2099)
Fix the remaining operator-surface drift after the naming cutover. This aligns controlplane defaults around ai.<base>, makes the dashboard use the shared display-date helper and approved controlplane host, reuses the derived code-service hostname in Forgejo config, and fixes local-host syncing so underscore-form tenant jails are no longer skipped.
---
Build: pass | Tests: pass — 67 passed (5 files)
Replace ambiguous AGENT_NAME usage across runtime, setup, and helper scripts with explicit TENANT_ID or platform runtime identity where appropriate. Keep AGENT_NAME as a compatibility boundary instead of the primary source for shared runtime naming.
---
Build: pass | Tests: pass — 138 passed (10 files)
src/ and scripts/ were symlinked into the Astro project root pointing
into the nullfs-mounted bootstrap dir. Vite resolves symlink targets and
then can't find node_modules at the mount path, breaking builds. Switch
to rsync -a --delete so the working copy is always a real directory.
Remove the zod 3.25.76 override from package.json and setup/cms.ts —
it was a v3/v4 conflict workaround that no longer applies and was
breaking fresh npm installs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All hardcoded 'clawdie' references in production code now derive from
AGENT_NAME (default: 'clawdie'). This makes the mevy canary strategy
reliable — changing AGENT_NAME is all that's needed.
Changes:
- Hardcoded paths: CMS_WEBROOT, ASTRO_SITE_PATH, verify checks,
controlplane dashboard dir, sessions dir, output dir, chown user
- Prometheus metrics: prefixed with AGENT_NAME for multi-install dashboards
- hostd log strings: use AGENT_NAME instead of 'clawdie-hostd'
- MCP server name: derived from AGENT_NAME
- Skill modify patches: container image and mount allowlist use AGENT_NAME
- SQL migration file renamed: clawdie-brain-hybrid-upgrade → brain-hybrid-upgrade
- Temp dir prefixes: all use AGENT_NAME
Kept as-is (correct pattern):
- 'clawdie' as default fallback when AGENT_NAME is unset
- .pi/extensions/clawdie-harness/ directory (pi package identity)
- html/docs-clawdie-si/ (public docs site URL)
---
Build: pass | Tests: pass — 1527 passed, 3 failed (2 files, pre-existing)
Introduces infra/jails.yaml as single source of truth for jail definitions,
src/jail-schema.ts with Zod validation, src/jail-registry.ts for runtime,
setup/bastille-helpers.ts as shared module replacing 7 copy-pasted
bastille()/jailExists()/detectFreeBSDRelease() wrappers.
Refactors setup/{db,cms,git,forgejo,jails,llama-cpp,ollama,skills-memory}.ts
to import from bastille-helpers. Archives infra/ansible/ to .archive/.
Net reduction: ~300 lines of duplicated code. All IPs now derive
from jails.yaml with env var overrides preserved.
Build: pass | Tests: not run (Linux)
Add a setup helper to enable tailscale inside jails when FEATURE_TAILSCALE
and an auth key are present, prefetch tailscale packages, and document
the installer shortcut.
---
Build: FAIL — not run
Tests: FAIL — not run
Adds setup/cms.ts that bootstraps the CMS jail: installs packages,
scaffolds Astro project from templates, builds static site, deploys
to /srv/www, and configures nginx. Also adds CMS config exports
(CMS_JAIL_IP, CMS_WEBROOT, ASTRO_SITE_PATH) and fixes
loadAllPackageLists to include forgejo-jail.txt and cnc-jail.txt.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---
Build: pass | Tests: pass — Tests 605 passed (605)
- packages: add mountPkgCacheInJail() — idempotent bastille mount of
/var/cache/pkg (ro) into a jail; checks fstab before adding; skips
silently if cache dataset absent
- db, jails, cms, git: import mountPkgCacheInJail and call it after
bastille restart and before bastille pkg install in each step
Jails now read packages from the shared ZFS dataset populated by the
environment prefetch step. No per-jail network downloads.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---
Build: pass | Tests: pass — Tests 414 passed | 10 skipped (424)