Commit graph

24 commits

Author SHA1 Message Date
aebc225ddc skill(freebsd): add boot environment rollback + cross-release override
Two improvements from the live OSA upgrade run:

1. Boot environment rollback: step 2 (before any base changes) now creates
   a BE with naming convention MAJOR.MINOR-upgrade-DD.mon.YY. pkgbase does
   NOT auto-snapshot ZFS — this must be done manually. If the upgrade
   misbehaves after reboot, bectl activate + reboot = instant rollback.

2. Cross-release override: pkgbase refuses to fetch 15.1 packages while
   running 15.0 userland. Document the env OSVERSION=1501000 override
   needed to cross the boundary.

Renumbered subsequent steps 2→3, 3→4, ..., 7→8.
2026-06-25 11:23:36 +02:00
00cc28e39e skill(freebsd): freebsd-os-upgrade — minor point-release runbook (#19)
Co-authored-by: Sam & Claude <hello@clawdie.si>
Co-committed-by: Sam & Claude <hello@clawdie.si>
2026-06-25 11:05:27 +02:00
9872e1d4cf skill(zfs): add snapshot vacuum workflow for disk pressure after large deletions
Covers the case where df unchanged after rm -rf or cargo clean because
sanoid snapshots captured the deleted files. Documents the vacuum
procedure: identify holding snapshots, destroy them to reclaim space
immediately, or use sanoid --prune-snapshots for the gentler path.

Updates Pitfalls to acknowledge this as the exception to "never touch
sanoid-managed snaps."

Discovered 2026-06-24: cargo clean freed 5.5G but df showed 16G unchanged.
usedbysnapshots = 26.6G across 9 sanoid snapshots. Full vacuum freed 13G
(16G → 29G free, pool 80% → 72%).
2026-06-24 20:24:40 +02:00
19375ef0d7 skill: add clawdie-iso-build — operational surface of build.sh
Covers: canonical command with FEATURE_COLIBRI=YES, flag matrix with
cache dependencies, pre-flight checklist, build steps overview, tmux
usage for long builds, --live-default-password, and common pitfalls.
Distilled from 2026-06-22 build session on OSA.
2026-06-22 07:23:52 +02:00
e013f32145 skill: add zfs-snapshot-audit — detect orphaned ZFS snapshots and sanoid config gaps
Discovered 2026-06-22: zroot/home/clawdie was missing from sanoid config,
allowing 10 autosnaps from April to accumulate 23.6G of dead weight.
Skill covers: pool/dataset audit, sanoid coverage check, safe destroy
of orphaned snapshots, template reference, and pitfall avoidance.
2026-06-22 06:59:42 +02:00
c3056ac489 fix(docs): mask Tailscale IPs with placeholder variables
Replace live 100.x IPs with ,
per SOUL.md convention. Removed stale device IP from
network-ssh-wifi-diagnostics reference.
2026-06-21 20:12:58 +02:00
d3361691b6 feat(skills): add bitwarden-cli-vault — bw CLI read/write/update/delete
Session-based operations with no interactive prompts. Covers:
- Session setup from provider.env
- Read (list, get by name, get by ID)
- Create (base64-encoded JSON, with collection)
- Update (get → modify → pipe to edit)
- Delete
- Upsert pattern (create if absent, update if exists)
- Rebuild authorized_keys from vault items

Proven working: full round-trip of key creation → vault
publish → read back → delete on OSA 2026-06-21.
2026-06-21 19:59:48 +02:00
7888132d4a feat(skills): add freebsd-truss-debug — syscall tracing for daemon failures
truss traces every kernel call a process makes. Quick reference,
full walkthrough (start daemon→trigger→stop→analyze), common
daemon pitfalls and their truss signatures, ktrace alternative.

Proven debugging colibri-daemon jail-spawn Permission Denied:
found bare command names unresolved under daemon(8) PATH and
staging directory ownership issues.
2026-06-21 17:38:44 +02:00
d73cd403c3 docs: convert negative patterns to positive actionable instructions
Applied positive-language documentation rewrites across key docs and skills:
- AGENTS.md: converted must-not/never/cannot to positive guidance
- docs/HOST-MATRIX.md: converted never/do-not patterns; preserved probe discipline
- docs/HIVE-ONBOARDING.md: converted cannot/never/avoid to actionable instructions
- skills/systematic-debugging/SKILL.md: converted non-safety negatives; preserved core debugging rules (NO FIXES WITHOUT ROOT CAUSE)
- skills/bootable-usb-images/SKILL.md: converted non-safety negatives; preserved safety-critical rules (never a partition, never silently skip target identification)

Changed negative patterns: never→stay/reference/always, do not→use/prefer/send only, cannot→lacks/leaves intact/requires
2026-06-21 13:57:11 +02:00
Sam & Claude
5a0a00ff66 fix(iso-visuals): wallpaper-on-join honors tmp policy + applies on real hardware
Follow-up to #74. Two concrete fixes to the "identity wallpaper on join" step:

1. tmp policy: the join script hardcoded WP=/tmp/clawdie-wallpaper.png, passing
   it to clawdie-wallpaper-gen and overriding the safe SCRATCH_DIR default that
   9ae8d25 had just introduced (project-local tmp/ or app-owned cache). The
   generator now prints its chosen path on stdout (human note → stderr) and the
   join script captures it: WP=$(clawdie-wallpaper-gen). No host-global /tmp.

2. wallpaper actually applies: replaced the hardcoded
   /backdrop/screen0/monitor0/workspace0/last-image with an enumeration over
   every existing */last-image property (XFCE keys backdrops by connector name,
   e.g. monitorHDMI-1, not monitor0), falling back to creating the default
   property on first boot/headless, then xfdesktop --reload.

SKILL.md updated to document the stdout contract and multi-monitor wiring.

Validation: sh -n on both scripts; prettier@3 --check SKILL.md;
python3 scripts/layered_soul.py validate . — all pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:26:20 +02:00
43c65c8632 fix(iso-visuals): harden panel indicator + auto-apply wallpaper on join
- Panel indicator: add have() checks for nc/python3, warn on missing
  deps instead of failing silently, distinct states for socket-down
  vs no-response with actionable tooltip text
- Join Hive: generate and apply identity wallpaper on success as
  visual 'you're in' confirmation via xfconf-query
- SKILL.md: document new behaviors
2026-06-20 12:16:02 +02:00
9ae8d250a7 fix(iso-visuals): avoid host-global tmp in wallpaper helper (Sam & Pi)
Sync the wallpaper helper and iso-visuals guidance with the project-local tmp policy, falling back to app-owned live cache paths when no project root exists.\n\nValidation: sh -n skills/iso-visuals/scripts/clawdie-wallpaper-gen.sh skills/iso-visuals/scripts/clawdie-join-hive.sh; npx --yes prettier@3 --check skills/iso-visuals/SKILL.md; python3 scripts/layered_soul.py validate .
2026-06-20 12:10:35 +02:00
eddea0b4e9 fix(iso-visuals): sync hardened helpers and guidance (Sam & Pi)
Mirror the Clawdie ISO Join Hive and wallpaper helper hardening in the iso-visuals skill, fix the desktop Exec path, and clarify staged-helper versus wired-default behavior.\n\nValidation: sh -n skills/iso-visuals/scripts/clawdie-join-hive.sh skills/iso-visuals/scripts/clawdie-wallpaper-gen.sh; npx --yes prettier@3 --check skills/iso-visuals/SKILL.md; python3 scripts/layered_soul.py validate .
2026-06-20 12:05:08 +02:00
fe328efb84 feat(iso-visuals): out-of-box desktop experience — panel, wallpaper, join-hive
Three improvements for the Clawdie ISO first-boot desktop:

1. Panel health indicator (xfce4-genmon)
   - polls colibri socket every 30s
   - green/red dot + agent count + task count
   - click to open colibri status in terminal

2. Identity wallpaper generator
   - overlays hostname, Tailscale IP, Colibri port, FreeBSD release
   - runs on first boot, caches result
   - requires ImageMagick (add to ISO pkg list)

3. Join Hive launcher
   - one-click agent registration in visible terminal
   - checks daemon → vault creds → detect capabilities → register
   - idempotent, safe to re-run
   - pauses on result so operator reads before closing

All three scripts + skill.md + desktop entry in skills/iso-visuals/.
2026-06-20 10:56:54 +02:00
c62bbd3d7e feat(mother): draft genesis skill — join-the-hive sequence
- Resolve identity: hostname, OS, capability probe
- Verify vault: .env exists + contains API key
- Register agent: idempotent, safe to re-run
- Heartbeat + poll loop: stay alive on the board

Platform-specific paths for FreeBSD jail vs Linux
container, security invariant documented, cross-linked
with HIVE-ONBOARDING and CAPABILITY-ROUTING.
2026-06-19 21:48:48 +02:00
a5139b5f7f security(docs): mask Tailscale IPs + bot handles behind fleet.env
Real tailnet IPs and Telegram bot handles were being committed in docs/
memories/skills. Scrubbed all tracked markdown to ${VAR} placeholders; real
values now live in fleet.env (gitignored) and stay live via 'tailscale status'.

- add fleet.env.example (committed) + fleet.env (gitignored); .gitignore *.env
- AGENTS.md + HOST-MATRIX: masking convention so it can't recur
- also: domedog registered as Colibri agent (image-render/ffmpeg/build lane);
  correct CAPABILITY-ROUTING example to real registered caps (domedog headless)

Past commits not rewritten (history moves to Codeberg at v1.0); this fixes HEAD.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 18:19:32 +02:00
04c65e73bc docs(toolchain): record clean Python 3.12 FreeBSD baseline (Sam & Pi) 2026-06-17 14:57:36 +02:00
Sam & Claude
a8926d47ba docs(polish): prettier formatting, add missing skill to index, fix broken doc reference 2026-06-14 14:19:45 +02:00
61a2b9393e fix(skills): make freebsd-cost-optimization a SKILL.md skill dir
Move skills/freebsd/freebsd-cost-optimization.md to
skills/freebsd-cost-optimization/SKILL.md so the Colibri importer (skills/**/SKILL.md)
picks it up. Import smoke now loads 10 skills.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 02:26:36 +02:00
4d8ce07fa7 docs: apply Prettier to current markdown (Sam & Codex)
Normalize markdown formatting after the latest main updates.\n\nChecks: python3 scripts/layered_soul.py validate .; npx --yes prettier@3 --check '**/*.md'; git diff --check.
2026-06-14 01:48:32 +02:00
5c5df32101 Populate layered-soul: identity, memories, skills, plan (Hermes & Sam)
- SOUL.md: full agent identity, operating principles, voice
- IDENTITY.md: runtime identity, hosts, boundaries
- USER.md: operator context imported from hermes-soul
- AGENTS.md: actual operating rules, infrastructure, quick reference
- memories/curated/: 5 topics (tailscale, forgejo, agents, projects, vaultwarden)
- skills/: 9 cross-harness skills imported from hermes-soul after review
- docs/PLAN-CONFIGURE-PRIVATE-REPO.md: configuration plan
- Validate: passes clean
2026-06-14 00:21:26 +02:00
062f13a393 docs: correct FreeBSD cost mode skill details (Sam & Codex)
Align the Layered Soul FreeBSD cost optimization skill with Colibri's implemented byte/turn thresholds and current runtime control surfaces.\n\nChecks: python3 scripts/layered_soul.py validate .; prettier --check docs/skills/adapters; json.tool manifest examples; git diff --check; Colibri import-layered-soul smoke
2026-06-13 23:41:33 +02:00
e5397b7122 feat: add freebsd-cost-optimization skill (Sam & Claude) 2026-06-13 23:38:06 +02:00
8f975da8c3 Initial Layered Soul contract (Sam & Codex)
Creates the cross-harness Layered Soul repository skeleton while keeping hermes-soul as the Hermes-native Debby Linux backup.\n\nChecks: npx --yes prettier@3 --write touched docs/manifests
2026-06-13 14:50:54 +02:00