{
  "checked_at": "2026-10-15T18:32:03.846071+09:00",
  "title": "Manifest prototype: input validation update",
  "status": "Local documentation sample for an unpublished prototype, not an external release",
  "source_file": "outputs/side-hustle-100/trials/SH007-manifest/manifest_tool.py",
  "source_sha256": "ab9240190b631a4f2a9afa707577a2d03f4fad0d7adc0de8c4f81912c06c6663",
  "changes": [
    {
      "feature": "Invalid input roots are rejected",
      "source_anchor": "if not root.is_dir():",
      "reader_note": "Supply an existing directory. Missing paths and individual files are rejected instead of being treated as empty folders.",
      "source_line": 18
    },
    {
      "feature": "Root symlinks are rejected",
      "source_anchor": "if root.is_symlink():",
      "reader_note": "Choose the actual folder, not a symbolic link. Symlink handling needs separate scope.",
      "source_line": 15
    },
    {
      "feature": "The input folder is read without repairing its files",
      "source_anchor": "with path.open('rb') as stream:",
      "reader_note": "The tool reads regular-file contents to calculate checksums. It does not back up or repair them.",
      "source_line": 25
    },
    {
      "feature": "New manifests do not overwrite existing files",
      "source_anchor": "with args.manifest.open('x') as out:",
      "reader_note": "Choose a new output filename for each manifest.",
      "source_line": 52
    }
  ],
  "usage": [
    "Requires Python3.11 or later. Supply a regular existing directory and a manifest path outside it.",
    "Create a manifest with: python manifest_tool.py make INPUT_DIRECTORY NEW_MANIFEST_PATH",
    "Verify with: python manifest_tool.py verify INPUT_DIRECTORY EXISTING_MANIFEST_PATH",
    "Verification exits0 for a match and1 for recorded differences. Input errors fail separately; do not interpret every nonzero exit as file corruption."
  ],
  "limits": [
    "No backup, security attestation, cloud-drive integration, change monitoring or search ranking result is provided.",
    "No claim that another person tested this documentation."
  ],
  "verification_record": "SH007-manifest/root-validation-regression.json"
}
