)]}'
{
  "commit": "ee86a11f1866b596def7304edac9c8ef9fd62fcc",
  "tree": "b792f95d5a14cc8bb321d624c7164cadbd1bd505",
  "parents": [
    "3fe88a7ca09e6c922f797d592292d0dd9e07af56"
  ],
  "author": {
    "name": "Jarek Potiuk",
    "email": "jarek@potiuk.com",
    "time": "Sat Jul 11 23:34:59 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Jul 11 23:34:59 2026 +0200"
  },
  "message": "fix(release): produce a clean source-only tarball and gate it in verify-rc (#829)\n\nThe 0.1.0 rc1 source zip drew a binding -1: it bundled 181 .pyc files in\n61 __pycache__ dirs (zipped from a working tree, not exported from the\ntag) and carried 138 dangling symlinks because .gitattributes\nexport-ignored .agents/ while the committed .claude/skills / .kiro/skills\nrelays and the specs still referenced into it; the same stripping broke\nskill/spec link integrity (.github templates, projects/_template/.gitignore).\n\nPackaging (.gitattributes):\n- Ship .agents/ so every relay symlink resolves to skills/ (0 dangling).\n- Strip only real CI/dev under .github/ (workflows, dependabot.yml); keep\n  ISSUE_TEMPLATE/ and PULL_REQUEST_TEMPLATE.md, which shipped skills link.\n- Anchor root-only dotfiles with `/` so projects/_template/.gitignore ships.\n\nVerification hardening (release-verify-rc):\n- Step 6 always surfaces and hard-fails on .pyc / __pycache__.\n- New Step 7 \"source-tree integrity\": no dangling symlinks, and run\n  symlink-lint + skill-and-tool-validate + spec-validate against the\n  unpacked tarball; hard-fail on broken internal references. Renumber the\n  following steps and add failure-mode rows.\n- Reinforce in release-build.md: always `git archive \u003ctag\u003e`, never `zip -r`.\n\nVerified against a real git archive of the fixed tree: 0 .pyc, 0 dangling\nsymlinks, all three validators exit 0, no VCS metadata.\n\nCo-authored-by: Tester \u003ct@example.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "09a8bf89760eef176a84a0b0f992c39a2d06c53e",
      "old_mode": 33188,
      "old_path": ".gitattributes",
      "new_id": "b03ee42f9e43696b6ff407818ff2505d13d5e86d",
      "new_mode": 33188,
      "new_path": ".gitattributes"
    },
    {
      "type": "modify",
      "old_id": "08a1420b01575f25787a7371d2ede9e4361cbc13",
      "old_mode": 33188,
      "old_path": "projects/magpie/release-build.md",
      "new_id": "9854aea2e15ed006760bd87d4988000d57255af9",
      "new_mode": 33188,
      "new_path": "projects/magpie/release-build.md"
    },
    {
      "type": "modify",
      "old_id": "64d59e8ae0f6abdd01aaadbf8f1008bd2dc655d5",
      "old_mode": 33188,
      "old_path": "skills/release-verify-rc/SKILL.md",
      "new_id": "a1914bbae4ee9cb830b774e9d39004f9124e26ae",
      "new_mode": 33188,
      "new_path": "skills/release-verify-rc/SKILL.md"
    }
  ]
}
