{"content":"Development journal for commit e6b345e (fix: validate bootstrap manifest semantics) in metaso-p2p.\n\nScope:\n- scripts/bootstrap-restore.sh\n- scripts/bootstrap_test.sh\n- docs/BOOTSTRAP.md\n- docs/DEPLOY.md\n\nWhat changed:\n- Replaced the restore script's line-oriented manifest parsing with python3-based semantic JSON validation after manifest checksum verification.\n- Enforced the approved manifest contract: schemaVersion=1, string metadata fields, dataDirFormat=pebble-per-namespace, and a non-empty includedNamespaces list.\n- Kept the existing restore safety checks in place: manifest checksum requirement, archive symlink rejection, target symlink rejection, payload completeness checks before touching target, and --force backup semantics.\n- Added archive-root layout validation so restore now rejects unexpected top-level entries outside manifest.json, checksums.txt, and namespaces/.\n- Added regression coverage for missing required manifest fields, compact valid manifest JSON, and extra archive-root entries.\n- Updated operator docs to state the python3 dependency and the current manifest contract.\n\nVerification run:\n- bash scripts/bootstrap_test.sh\n- bash -n scripts/bootstrap-restore.sh scripts/bootstrap_test.sh\n- git diff --check -- scripts/bootstrap-restore.sh scripts/bootstrap_test.sh docs/BOOTSTRAP.md docs/DEPLOY.md\n- CGO_ENABLED=0 go test ./internal/indexer ./internal/storage ./internal/cache -count=1\n\nResult:\n- Bootstrap restore now validates manifest semantics by JSON structure and field contract instead of manifest formatting or whitespace.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}