Daftar Periksa Verifikasi Sinkronisasi Antar-Mesin
Prosedur verifikasi untuk memastikan adapter Claude Code terpasang, tervalidasi, dan terhapus dengan benar pada host baru, dengan pemeriksaan portabilitas yang lengkap.
Cakupan. Daftar periksa ini memverifikasi lapisan portabilitas instalasi / penghapusan adapter Claude Code pada host kedua yang baru. Harness lain memiliki resep verifikasi per-host tersendiri yang didokumentasikan di
site/content/docs/harnesses/<harness>.mdx.
Dua jalur, dua peran. Pisahkan keduanya saat membaca daftar periksa ini.
$HOME/.apothemadalah engine home — tempat pohon sumber dikloning dan tempat pemasang membaca, dapat ditimpa denganAPOTHEM_HOME.~/.claude/adalah akar konfigurasi Claude Code — permukaan keluaran adapter, tempatsettings.jsonyang dimaterialisasi dan pohon pendukung ditempatkan. Mesin tidak pernah dipasang ke dalam~/.claude/; ganti dengan path keluaran native adapter saat memvalidasi harness yang berbeda.
Verifikasi yang digerakkan operator atas lapisan portabilitas instalasi / penghapusan pada host kedua yang baru. Tingkat publikasi (
vX.Y.Z) disusun pada satu host Windows; klaim portabilitas (CLAUDE.mdportability: universal) memerlukan latihan ujung-ke-ujung pada host kedua sebelum invarian multi-host memiliki bobot. Daftar periksa ini adalah resep verifikasi host kedua yang kanonis (adapter Claude Code).
1. Prasyarat pada Host Kedua
Jalankan pada host kedua sebelum memulai verifikasi:
| Item | Perintah | Diharapkan |
|---|---|---|
| Git terinstal | git --version | Git 2.40+ |
| Python 3.10+ tersedia | python3 --version (POSIX) atau py -3 --version (Windows) | 3.10 / 3.11 / 3.12 / 3.13 |
| Autentikasi GitHub (opsional, untuk klon / pemeriksaan API terautentikasi) | gh auth status | Masuk dengan akun yang diotorisasi untuk repo saat menggunakan alur kerja terautentikasi |
| Shell tersedia | bash --version (POSIX) atau pwsh --version (Windows) | Bash 4+ atau PowerShell 7+ |
| Tidak ada engine home sebelumnya | ls "$HOME/.apothem" 2>&1 | "No such file or directory" — jika ada, cadangkan sebelum melanjutkan |
2. Verifikasi Klon-dan-Instal
Jalankan pada host kedua:
# Clone the published repo to the engine home. This is NOT ~/.claude — that
# is the Claude Code configuration root the adapter writes into, and cloning
# a source tree on top of it would bury the harness's own config.
git clone https://github.com/ahmed-g-gad/apothem.git "$HOME/.apothem"
cd "$HOME/.apothem"
# (POSIX path) Run scripts/installer/install.sh dry-run first
bash scripts/installer/install.sh --dry-run # exit 0; prints Dry-run complete — no changes were made.
# (POSIX path) Run scripts/installer/install.sh for real
bash scripts/installer/install.sh # exit 0; idempotent
# (Windows path) PowerShell parallel
pwsh -File scripts/installer/install.ps1 -DryRun # exit 0; prints Dry-run complete - no changes were made.
pwsh -File scripts/installer/install.ps1 # exit 0Tangkap kode keluar dan banner stdout setiap perintah. Catat di <second-host>/.audit/cross-machine-clone-install.md.
3. Disiplin Empat Elemen (sesuai src/apothem/rules/production-ready-prs.md)
Verifikasi masing-masing dari empat invarian pada host kedua:
3.1 Keamanan Tujuan yang Sudah Ada
# Re-run installer at the same destination.
bash scripts/installer/install.sh # POSIX
pwsh -File scripts/installer/install.ps1 # WindowsDiharapkan: Pemasang mendeteksi engine home yang sudah ada, melakukan checkout tag rilis di dalamnya alih-alih menginstal ulang atau menduplikasi; kode keluar 0.
3.2 Prasyarat Diperiksa
# Run from a copy outside any checkout, with git not on PATH.
d="$(mktemp -d)" && cp scripts/installer/install.sh "$d/" && PATH=<directory holding python3, click, rich and coreutils, but no git> /bin/sh "$d/install.sh" # POSIX (no git)Diharapkan: Pemasang menolak berjalan; mengeluarkan diagnostik "git not found" yang eksplisit; kode keluar bukan nol.
3.3 Jalan Ulang Idempoten
# Run installer N times back-to-back.
for i in 1 2 3 4 5; do bash scripts/installer/install.sh; done # POSIX
1..5 | ForEach-Object { pwsh -File scripts/installer/install.ps1 } # WindowsDiharapkan: Setiap pemanggilan keluar dengan 0; tidak ada efek samping setelah pemanggilan pertama; tidak ada berkas duplikat; tidak ada duplikasi RC shell-profile.
3.4 Dapat Dikonfigurasi lewat Variabel Lingkungan
# Install to a non-default engine home. APOTHEM_HOME is the destination
# override the installers actually read; see the installer-environment-variables
# reference for the full set.
APOTHEM_HOME=/tmp/alt-apothem bash scripts/installer/install.sh # POSIX
$env:APOTHEM_HOME='C:\tmp\alt-apothem'; pwsh -File scripts/installer/install.ps1 # WindowsDiharapkan: Pemasang menghormati variabel lingkungan; $HOME/.apothem default TIDAK dibuat; tujuan alternatif berisi tata letak yang diharapkan.
4. Verifikasi Suite Validator (Pasca-Instal)
cd "$HOME/.apothem"
make validate # conformity gate --all --strict; exit 0
make headers-doctor # file-header-grep → passed:true
make ai-surfaces-doctor # multi-surface-coherence → passed:true
make plans-doctor # no-global-plans + plans-discipline-language
make lint # ruff check + ruff format --check + mypy
make test # exit 0, no failuresDiharapkan: Setiap gerbang hijau. Tangkap kode keluar dan baris ringkasan.
5. Verifikasi Penghapusan
# POSIX path — interactive uninstall
bash scripts/installer/uninstall.sh # answers: "y" to confirm
PYTHONPATH="$HOME/.apothem/src/apothem/_vendor:$HOME/.apothem/src" python3 -m apothem verify --harness claude-code # reports the harness as not installed
# Re-install from the kept checkout, then uninstall non-interactively
bash scripts/installer/install.sh
bash scripts/installer/uninstall.sh --yes
PYTHONPATH="$HOME/.apothem/src/apothem/_vendor:$HOME/.apothem/src" python3 -m apothem verify --harness claude-code # reports the harness as not installedDiharapkan: Alur interaktif menampilkan prompt; --yes melewati prompt untuk jalan batch; kedua alur membiarkan akar konfigurasi Claude Code bebas dari berkas yang dimaterialisasi Apothem; shim apothem dihapus (~/.local/bin/apothem; shim apothem.cmd di %LOCALAPPDATA%\Microsoft\WindowsApps hanya dihapus oleh uninstall.ps1).
6. Verifikasi Pengaman Keselamatan
Pengaman penghapus adalah pemeriksaan bentuk pohon sumber, bukan berkas sentinel: ia hanya berjalan ketika target memuat src/apothem/ bersama salah satu dari pyproject.toml atau .claude-plugin/. Jalankan probe ini dengan APOTHEM_HOME, variabel yang dibaca skrip — probe yang ditulis terhadap variabel yang diabaikan skrip tidak menguji pengaman, melainkan menjalankan penghapus terhadap instalasi nyata Anda.
# Run uninstall against a directory that is not an apothem source tree.
mkdir -p /tmp/not-an-apothem-install
APOTHEM_HOME=/tmp/not-an-apothem-install bash scripts/installer/uninstall.sh --yesDiharapkan: Penghapus menolak; mengeluarkan No apothem source found at /tmp/not-an-apothem-install — nothing to uninstall; kode keluar bukan nol. Path TIDAK disentuh.
# Run uninstall against $HOME and /.
APOTHEM_HOME=$HOME bash scripts/installer/uninstall.sh --yes 2>&1 | tail -3
APOTHEM_HOME=/ bash scripts/installer/uninstall.sh --yes 2>&1 | tail -3Diharapkan: APOTHEM_HOME=$HOME dan APOTHEM_HOME=/ masing-masing menolak dengan diagnostik No apothem source found at …, dan tidak satu pun menyentuh sistem berkas. APOTHEM_HOME kosong sengaja dikecualikan: ia jatuh kembali ke ~/.apothem, tempat instalasi asli dapat berada.
# An explicit APOTHEM_SOURCE that is not a source tree is rejected separately.
APOTHEM_SOURCE=/tmp/not-an-apothem-install bash scripts/installer/uninstall.sh --yesDiharapkan: Menolak dengan APOTHEM_SOURCE is not an apothem source tree: /tmp/not-an-apothem-install; kode keluar bukan nol.
7. Pelaporan
Setelah jalan pada host kedua, tangkap hasil di:
<second-host>/.audit/cross-machine-clone-install.md(hasil perintah klon + instal)<second-host>/.audit/cross-machine-validators.md(hasil validator Bagian 4)<second-host>/.audit/cross-machine-uninstall.md(hasil penghapusan dan pengaman keselamatan Bagian 5–6)
Sampaikan temuan kepada pemelihara:
- ✅ semua invarian disiplin empat elemen berlaku + semua gerbang validator hijau + semua pengaman keselamatan penghapusan menolak target yang tidak aman → klaim
portability: universaldari publikasi terverifikasi secara ujung-ke-ujung - ❌ kegagalan apa pun → ajukan isu di
https://github.com/ahmed-g-gad/apothem/issues/newdengan bagian yang gagal dan output yang ditangkap; pemelihara melakukan triase
8. Kriteria Penerimaan
- §1 prasyarat terpenuhi
- §2 klon-dan-instal berhasil pada shell POSIX maupun Windows
- §3 disiplin empat elemen berlaku (keamanan tujuan yang sudah ada; prasyarat diperiksa; idempoten; dapat dikonfigurasi lewat variabel lingkungan)
- §4 setiap gerbang validator hijau
- §5 penghapusan interaktif berhasil;
--yesberhasil tanpa prompt - §6 setiap penolakan pengaman keselamatan terpicu
- §7 hasil ditangkap pada path audit yang didokumentasikan
Ketika setiap kotak centang di atas dicentang pada host kedua yang baru, verifikasi sinkronisasi lintas-mesin selesai dan klaim portability: universal terverifikasi secara ujung-ke-ujung.
Membuat adapter harness baru
Runbook untuk membuat dan menerbitkan adapter harness Apothem baru.
Seremoni Merge PR untuk Pemelihara Tunggal
Kapan pemelihara dapat men-merge pull request miliknya sendiri secara langsung, dan seremoni untuk proteksi branch yang mensyaratkan persetujuan dan memberlakukannya bagi admin.