{
  "status": "complete",
  "changes": [
    "ci/publish/validate-release-binary.py: PE32+ now requires a complete fixed optional header plus all declared data directories, a bounded complete section table, bounded section raw ranges, IMAGE_FILE_EXECUTABLE_IMAGE without IMAGE_FILE_DLL, and a nonzero AddressOfEntryPoint mapped by an executable section. Virtual RVA overflow is rejected.",
    "ci/publish/validate-release-binary.py: ELF64 now retains e_entry, bounds the complete program-header table and every segment file range, enforces p_filesz <= p_memsz for PT_LOAD, rejects virtual-address overflow, and requires nonzero e_entry inside a PF_X PT_LOAD. Existing x86-64, GNU interpreter, static-musl, and DT_NEEDED rules remain intact.",
    "tests/adapter-archive.sh: success inputs are minimally valid PE/ELF loader images with executable mapped entrypoints. Added packaging rejection coverage for prior zero-entry pseudo-images, unmapped/non-executable entrypoints, DLL PE, incomplete PE optional headers, truncated PE section tables, out-of-file PE raw data, malformed ELF load sizes, and out-of-file ELF loads.",
    "ci/publish/create-adapter-archive.py and ci/publish/package-adapter.sh: removed environment-controlled GNU/musl archive modes, hardcoded both helpers to 0755, and changed self-validation to require exactly -rwxr-xr-x.",
    "ci/publish/package-adapter.sh and tests/adapter-archive.sh: removed OMP_SPT_STRINGS_DIR source selection; shared package metadata, extension, and all lifecycle skills now come only from adapter/strings in the repository. The negative test mutates a copied repository root instead of injecting an external strings tree. Existing byte-identity checks cover package.json, omp-spt.mjs, and every packaged skill.",
    "tests/adapter-archive.sh: verifies stale mode environment variables cannot change canonical archive bytes or produce writable/private Linux helper modes."
  ],
  "verification": {
    "command": "sh tests/adapter-archive.sh",
    "result": "PASS: adapter-archive",
    "duration_seconds": 38.74,
    "observed": "All structural rejection cases, valid three-target packaging, exact payload identity, exact 0755 modes, source-tree failure, deterministic bytes, GNU/static-musl linkage rules, and archive membership checks passed."
  },
  "real_release_compatibility": "The accepted fixture shapes exercise the same PE32+ x86-64 and ELF64 x86-64 loader invariants emitted by conventional release toolchains. Actual production release binaries were not separately executed because the assignment restricted verification to tests/adapter-archive.sh only."
}