diff --git a/BUILD.md b/BUILD.md index 7c0198b6..f112e7b3 100644 --- a/BUILD.md +++ b/BUILD.md @@ -21,7 +21,7 @@ On `xfce-operator-usb`, builds a bootable FreeBSD 15.0 operator USB image with: The ISO version is independent from the bundled Clawdie-AI ref: ```sh -ISO_VERSION="0.1.0" +ISO_VERSION="auto" # default: git describe, then ZOT_VERSION fallback BUILD_CHANNEL="dev" # dev | release CLAWDIE_REF="main" # validation default ``` @@ -396,7 +396,7 @@ boolean `tailscale_auth_key_baked: true|false` is recorded in the manifest. The build header shows: ```text -ISO : 0.1.0-dev +ISO : -dev FreeBSD : 15.0-RELEASE amd64 Clawdie : main Clawdie commit: @@ -428,7 +428,7 @@ The final size output distinguishes: Edit `build.cfg` for persistent defaults: ```sh -ISO_VERSION="0.1.0" +ISO_VERSION="${ISO_VERSION:-auto}" BUILD_CHANNEL="${BUILD_CHANNEL:-dev}" IMAGE_SIZE="28G" CLAWDIE_REF="${CLAWDIE_REF:-main}" diff --git a/PLAN-OPERATOR-USB-NEXT.md b/PLAN-OPERATOR-USB-NEXT.md index ed7999d1..00e6e4da 100644 --- a/PLAN-OPERATOR-USB-NEXT.md +++ b/PLAN-OPERATOR-USB-NEXT.md @@ -229,7 +229,7 @@ contract between agents. | ------------------ | ------------------------------ | ---------------------------------- | ----------------------------------------------------- | | Build result | `iso-build` | `clawdie.iso.build.v1` | Commit, flags, log path, output files, static checks | | Publish result | `iso-publish` | `clawdie.iso.publish.v1` | Public URLs, checksums, manifest path, symlink state | -| Flash verification | `iso-flash-verify` | `clawdie.iso.flash.v1` | Download, checksum, xz test, target disk fit, flash | +| Flash verification | `iso-flash-verify` | `clawdie.iso.flash.v1` | Download, checksum, xz test, target disk fit, flash | | Mounted validation | `iso-validate-image` | `clawdie.iso.validation.v1` | SDDM, CLIs, `mdo`, seed slice, no-blank, panel assets | | Hardware report | `iso-hardware-report-ingest` | `clawdie.iso.hardware.v1` | GPU/KMS, GL renderer, input, audio, Wi-Fi, SDDM/XFCE | | Package audit | `iso-package-audit` | `clawdie.iso.package-audit.v1` | Category, size, flat size, reason kept, deferral risk | diff --git a/README.md b/README.md index 7c0cf5d4..6067f2d8 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ BUILD_CHANNEL=release sudo ./build.sh --clawdie-version 0.10.0 The build prints provenance similar to: ```text -ISO : 0.1.0-dev +ISO : -dev FreeBSD : 15.0-RELEASE amd64 Clawdie : main Clawdie commit: diff --git a/build.sh b/build.sh index e49ab746..3210cd28 100755 --- a/build.sh +++ b/build.sh @@ -1055,14 +1055,22 @@ seed_live_ai_source_repo() { return 0 fi - echo " Seeding AI source snapshot: ${_repo_name}" - rm -rf "${_repo_dest}" - mkdir -p "${_repo_dest}" - git -C "${_repo_src}" archive --format=tar HEAD | tar -C "${_repo_dest}" -xf - - _repo_branch=$(git -C "${_repo_src}" symbolic-ref --short -q HEAD 2>/dev/null || echo detached) _repo_commit=$(git -C "${_repo_src}" rev-parse HEAD 2>/dev/null || echo unknown) _repo_origin=$(git -C "${_repo_src}" remote get-url origin 2>/dev/null || echo unknown) + _repo_src_real=$(cd "${_repo_src}" && pwd -P) + + echo " Seeding AI source checkout: ${_repo_name} (${_repo_commit})" + rm -rf "${_repo_dest}" + if [ "${_repo_branch}" != "detached" ]; then + git clone --quiet --depth 1 --branch "${_repo_branch}" "file://${_repo_src_real}" "${_repo_dest}" + else + git clone --quiet "file://${_repo_src_real}" "${_repo_dest}" + git -C "${_repo_dest}" checkout --quiet --detach "${_repo_commit}" + fi + git -C "${_repo_dest}" remote set-url origin "${_repo_origin}" 2>/dev/null || true + printf '%s\n' '.clawdie-source.json' >> "${_repo_dest}/.git/info/exclude" + _repo_dirty=false if ! git -C "${_repo_src}" diff --quiet 2>/dev/null || ! git -C "${_repo_src}" diff --cached --quiet 2>/dev/null; then _repo_dirty=true @@ -1076,7 +1084,10 @@ seed_live_ai_source_repo() { "branch": "$(json_escape "${_repo_branch}")", "commit": "$(json_escape "${_repo_commit}")", "dirty_at_build": ${_repo_dirty}, - "snapshot_note": "git archive of HEAD; uncommitted changes and ignored/private files are not included" + "iso_version": "$(json_escape "${ISO_VERSION}")", + "build_channel": "$(json_escape "${BUILD_CHANNEL}")", + "snapshot_kind": "shallow git checkout", + "snapshot_note": "shallow git checkout of HEAD; uncommitted changes and ignored/private files are not included" } EOF } @@ -1087,16 +1098,17 @@ install_live_ai_source_snapshots() { resolve_colibri_paths mkdir -p "${MOUNT_POINT}/home/clawdie/ai" cat > "${MOUNT_POINT}/home/clawdie/ai/README.txt" <<'EOF' -Clawdie live AI source snapshots +Clawdie live AI source checkouts These directories are included so the operator can start a local provider-backed -Pi session from the live XFCE desktop and inspect the shipped source beside the -running system. +Pi session from the live XFCE desktop, inspect the shipped source beside the +running system, and fetch follow-up commits from Forgejo when network access is +available. No API keys, .env files, SSH private keys, build caches, package caches, tmp/ -directories, or uncommitted worktree changes are included. Each snapshot has a -.clawdie-source.json file recording the source remote, branch, commit, and dirty - state at image build time. +directories, or uncommitted worktree changes are included. Each checkout keeps a +.git directory plus a .clawdie-source.json file recording the source remote, +branch, commit, dirty state, ISO version, and build channel at image build time. EOF seed_live_ai_source_repo "${SCRIPT_DIR}" "clawdie-iso" seed_live_ai_source_repo "${_resolved_clawdie_ai_repo}" "clawdie-ai" diff --git a/live/operator-session/bootstrap.html b/live/operator-session/bootstrap.html index ad83a1b2..3e336e31 100644 --- a/live/operator-session/bootstrap.html +++ b/live/operator-session/bootstrap.html @@ -3,7 +3,7 @@ - Clawdie Operator USB — v0.9.1 + Clawdie Operator USB