The hostd-bridge now routes through the controlplane API instead of direct Unix socket. 6 files updated: - ARCHITECTURE.md: jail isolation section — hostd via API, no socket mount - doc/CONTROLPLANE-ARCHITECTURE.md: hostd tree shows API proxy route - doc/CONTROLPLANE-MESSAGE-CONTRACT.md: add POST /api/controlplane/hostd endpoint with request/response examples - docs/public/operate/security.md: hostd section describes HTTP proxy model with CONTROLPLANE_SHARED_SECRET auth - .env.example: document CONTROLPLANE_HOST_IP (default 10.0.1.1) - doc/HANDOFF-ISO-AGENT.md: add sections 4 (hostd API proxy) and 5 (legacy agent ID removal) to breaking changes Build: pass | Tests: not run (Linux) (Sam & Claude)
4.1 KiB
4.1 KiB
Handoff: FreeBSD → ISO/Linux Agent
Date: 2026-04-18 Commits: dba0b69..7a0d388 (3 commits on main) Branch: main, pushed to codeberg.org:Clawdie/Clawdie-AI.git
Breaking changes to propagate
1. Skill system unified on library.yaml (dba0b69)
What changed:
--skill <path>flag removed from all pi subprocess invocations- Replaced with
--no-skillseverywhere (disables pi's built-in skill discovery) - Skills now loaded via
--append-system-promptfromagent/library.yaml - Full skill content served on-demand through
skills_searchextension tool loadSkillsCatalog()no longer accepts args — reads only from library.yamlskillsDirremoved fromControlplaneHeartbeatConfig,JailPiOptions, runner configs- Dead exports removed:
PI_TUI_PROFILE_LABEL,PI_TUI_SKILLS_PATH,countSkillsInDir() - Net -214 lines
Files changed:
src/controlplane-runner.ts—--no-skillsinstead of--skillsrc/jail-exec-runner.ts—skillsDirremoved from interface + argssrc/controlplane-heartbeat.ts—skillsDirdropped from configsrc/controlplane-telegram.ts—loadSkillsCatalog()called without argssrc/agent-runner.ts—SKILL_AWARE_PROFILESlogic deleted, unconditional--no-skillssrc/config.ts— dead exports removedsrc/index.ts—skillsDirremoved from heartbeat configsrc/skills-discovery.ts— simplified to library.yaml onlysrc/controlplane-db.ts—countSkillsInDir()deleted
Test impact: 7 test files updated. All 1530 tests pass on FreeBSD.
2. PostgreSQL 17 → 18 references (7a0d388)
What changed:
- All
data17paths →data(PG 18 uses/var/db/postgres/data) - All
postgresql17-*package refs →postgresql18-* - 18 files across setup scripts, skills, tests, docs, archived playbooks
Files the ISO build cares about:
setup.sh,setup/environment.ts— package namessrc/hostd/privileged-commands.ts— example package name in commentsrc/jail-schema.test.ts,src/hostd/privileged-commands.test.ts— test fixturesdocs/internal/scripts/setup-db-jail.sh— PGDATA path + packagesdocs/internal/scripts/setup-controlplane-jail.sh— client package
3. run-*.sh removed from git (bb821e0+)
run-clawdie.shandrun-mevy.shsymlink deleted from gitrun-*.shadded to.gitignore— generated bysetup/service.tsat install time- rc.d service uses
run-${AGENT_NAME}.shwritten bygenerateRunScript() - ISO should run
just setup-servicewhich generates the correct script
4. hostd routed through controlplane API (cac8b4a)
- Jail agents no longer connect to hostd Unix socket directly
hostd-bridge.tsrewritten as HTTP client →POST /api/controlplane/hostd- API authenticates via
CONTROLPLANE_SHARED_SECRET, proxies to hostd daemon - No socket mount needed in jails — only network access to host IP
- New config var:
CONTROLPLANE_HOST_IP(default10.0.1.1) — IP jails use to reach the API - Jail env
CONTROLPLANE_API_URLnow useshttp://${CONTROLPLANE_HOST_IP}:${CONTROLPLANE_API_PORT}instead oflocalhost
5. Legacy agent IDs removed (0f7fbc4)
- 8 agents → 5 agents (removed
sysadmin,db-admin,git-adminalias rows) resolveCanonicalAgentId()removed — identity function since legacy IDs goneCANONICAL_AGENT_MAPdeleted,AGENT_JAIL_MAPtrimmed to canonical IDs only- Role constraint in schema updated (removed legacy role values)
What still works unchanged
.pi/extensions/clawdie-harness/skill-tools.ts— self-contained, reads/opt/skillsin jailsagent/library.yaml— source of truth, no changes neededinfra/jails.yaml— still mounts skills to/opt/skills:rovia nullfs- All extension tools — no breaking changes
Pending (not blocking ISO)
- Pi CLI upgrade 0.58→0.67 has breaking API changes (session_start, getApiKeyAndHeaders, sourceInfo, promptSnippet) — not yet applied
- Phase 7 jail isolation validation checklist not yet verified on deploy
- Forgejo DB connection in git jail needs
sslmode=disableor cert config — empty DB, errors intermittent