{"_id":"claude-sprint-gate","_rev":"196-e12facd77e2b82f68f0229b1c7b511f9","name":"claude-sprint-gate","dist-tags":{"latest":"9.10.1"},"versions":{"7.9.2":{"name":"claude-sprint-gate","version":"7.9.2","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@7.9.2","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"cd4495e7f5b8d2ca03b905416611b5d0dd757c89","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-7.9.2.tgz","fileCount":53,"integrity":"sha512-KGHz5D4Egdem3hLXxgJyzplvV12XS7Ztw8WxeIcjO6Qo+Go5y/EPlbIQU9Ag1p2/NyRBMnM6qOM4FxoGORgDqw==","signatures":[{"sig":"MEYCIQCUGuAM+6Sr0et8F8SameN+aAJD1TNizTU19sMtCMUoQQIhAJp7uv7e5dHwmWKFOlakarAA/gc0UUO7tStEK7Vy8fsH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":823760},"gitHead":"81fc713a544c22ae2c65cc871b9b064f32b74d2b","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"deprecated":"Package hidden; repository private; do not use.","repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v7.9.2 refinement: (1) two-axis variant model — business-operational variants (monday-routine / quarter-close / new-tenant-first-week / delegate-handoff / audit-prep)","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_7.9.2_1776979925063_0.3446438271332244","host":"s3://npm-registry-packages-npm-production"}},"8.2.1":{"name":"claude-sprint-gate","version":"8.2.1","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.2.1","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"c76458b311db142e5388eb0976d6fd7206cfef6d","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.2.1.tgz","fileCount":50,"integrity":"sha512-xxrVevdKx4/R4e+KOtbMfyArG1My9cGTkV9VLq4IaLzb17DtYde3VhfsP/zCbB3Jqu55ZNaP/xFEiOAKt6EWfg==","signatures":[{"sig":"MEQCIBPrl7ArucwGzYH+d0oI5ax4nU5saVQ1jQ/XHKMxmw4LAiA8qj/6oyXVG8XNU87boPm6S9D/dXyYEttLKu3ZO6O8vQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":666347},"gitHead":"1691e402190dc21354faeeb2faae9a443d365ce8","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.2 adds CUSTOM mode — third operating mode alongside MATURITY and USECASE for bounded arcs against an explicit roadmap (corrections runs, refactors, migrations, har","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.2.1_1777594124662_0.9379215108379733","host":"s3://npm-registry-packages-npm-production"}},"8.2.2":{"name":"claude-sprint-gate","version":"8.2.2","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.2.2","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"dca4b6b0172db4515fc6a0478040a5fbf130149a","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.2.2.tgz","fileCount":50,"integrity":"sha512-Lxa2DyYdm1FSwpc4o9Dtf9FycyN78lfkAa2B2Cfmk61MmFAgyqXNxcNPg9iYFeZ917mobiGn7NXw947+II/2/A==","signatures":[{"sig":"MEUCICFhxLe6dRCg0wTRxaVGU2oSi6/7r1hC5iLRxuVz/oGeAiEAoSkaLYlpwludNxyV+eupmGjlYOy7kJk3lVp45bQeDWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676465},"gitHead":"493315ef8dd2ea6bc1bdc935986d1033bae65f0c","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.2 adds CUSTOM mode — third operating mode alongside MATURITY and USECASE for bounded arcs against an explicit roadmap (corrections runs, refactors, migrations, har","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.2.2_1777597603164_0.4280640081781555","host":"s3://npm-registry-packages-npm-production"}},"8.2.3":{"name":"claude-sprint-gate","version":"8.2.3","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.2.3","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"41c8183912fac14432bc5608dbbf2c6b4e9aec0e","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.2.3.tgz","fileCount":50,"integrity":"sha512-1FNT8NGTOxmvI/k3zrTePt94ReGZjtIt4wi0w0wdwHm7743mqGrbhn/AxBu3jVx1yTHjgDxA3mHQgkgdTjAd9Q==","signatures":[{"sig":"MEYCIQDcEgH0NNpuexp4ORm35WKlrXNNH1IxyUmRT3hTLYH2CgIhAIaU9wa6Yd9zVlcJ0peMnQ3S6fJXH8DGK2AAG3hTcEQt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":683276},"gitHead":"58cd24506dc0538d26a987c45a403873ba86b515","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.2 adds CUSTOM mode — third operating mode alongside MATURITY and USECASE for bounded arcs against an explicit roadmap (corrections runs, refactors, migrations, har","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.2.3_1777599724043_0.5771087361000902","host":"s3://npm-registry-packages-npm-production"}},"8.2.4":{"name":"claude-sprint-gate","version":"8.2.4","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.2.4","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"2a589d1f848a57f3374efadf7c237d644d1d6b30","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.2.4.tgz","fileCount":50,"integrity":"sha512-9dNdKGYGALgboxa9HNdqTw0bVIO0WiCPCwO5atd/9dfLj1iwKRvjdx0k79eP/WNy4xnVLy4luzWcz7Jyyrt2Iw==","signatures":[{"sig":"MEQCIFzl23swydfDcgbSNk4zJI54uOBHRdQYXvT/UrKdYmzfAiAKNNnvQqEkLP1aH+32l4WxfiJThjDShmpaQf5nE7b+ng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":684978},"gitHead":"f68eb0685ae36080e52b5bc38adc5fdfb7f1ff33","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.2 adds CUSTOM mode — third operating mode alongside MATURITY and USECASE for bounded arcs against an explicit roadmap (corrections runs, refactors, migrations, har","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.2.4_1777601966138_0.6120268173169718","host":"s3://npm-registry-packages-npm-production"}},"8.3.1":{"name":"claude-sprint-gate","version":"8.3.1","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.3.1","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"354aea3b2282b70aad594aa4d962055bc7b45fe9","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.3.1.tgz","fileCount":52,"integrity":"sha512-iHdiUOV4k8uMdITfX788wUbugc6SLks27hfnaDjxUkAYMa4t/LHRKKpXBD2gFbi4XJ/T4Sgfu/N5nG4p2x78mw==","signatures":[{"sig":"MEQCIBUoJIIbGff7bNgZdb7GDAcaOh5R8BYHXGr6P8XvOzwDAiAipfjRp1CwQ6RQekoZNU6Fn+TAVqfnm9/9viL83vE2qA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":713812},"gitHead":"504f2cc349bfdcc202fe04d4dd9a27d9c719b540","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.3.1_1777640501520_0.9108423477420589","host":"s3://npm-registry-packages-npm-production"}},"8.4.0":{"name":"claude-sprint-gate","version":"8.4.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"3ff658393ce303e9b5b48a8b036b39de22e83aad","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.0.tgz","fileCount":53,"integrity":"sha512-KFU6SMJAdBf7KswiHl9efZJYMOINmspZnBogvu53NMM+I/JQeA6vQBOIJ0rbqATYOFYgjyaipw1CKdeIMARdAg==","signatures":[{"sig":"MEYCIQC3RHuOv91zDCl30TyeLvCISxv4Glz/bXIfdFLxdVnjTAIhAJ4nl1HfUFXsKhKAsZc2rmYf6kHXs/D3uZP7bVd4crB0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":731494},"gitHead":"12d5a50720007c2032763e7f64fa160eddf845c9","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.0_1777641441662_0.05466632122714654","host":"s3://npm-registry-packages-npm-production"}},"8.4.1":{"name":"claude-sprint-gate","version":"8.4.1","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.1","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"c34c7ae24af3cddf4ee0b6197b8200d32c8f7c90","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.1.tgz","fileCount":53,"integrity":"sha512-e0j7jECBfDCMExDwO56xbnwJ6pcA0683fjTDUNCtsp6dL+2UIVUk6qXbOk9dsogoHHSw8c5vh4sqfPZ6CaErRg==","signatures":[{"sig":"MEUCIQDUljNiVYkoniTMMdLj370QXxJM85ITs6CgBaEgQiO5FAIgUj1qRDUfBTe457cNzH/Nn8jGi+yy5zeP9cKFOBufrTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":750613},"gitHead":"2adb51f834804771c75bcb034f7caea491d560ac","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.1_1777660836414_0.35405231728364606","host":"s3://npm-registry-packages-npm-production"}},"8.4.2":{"name":"claude-sprint-gate","version":"8.4.2","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.2","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"bc78bf8d745996e13563b73f4196ea313015c66e","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.2.tgz","fileCount":53,"integrity":"sha512-p6EbMze1greJ+YRt+jw7ci4xI6lXlBi0zWEA2T9g364nXKhIDeKNm+yyE8lq+/oJbw6mQ3NjkzmA0Y6DFE4yaw==","signatures":[{"sig":"MEQCIHNAVpke7aaVKPxSKWTWE4O08vuPr3ys9FmBrdm24dRDAiBmyqm7vvNnKsvJ/cJJrmhF07M8A8kfReBSONabFUD72Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":753796},"gitHead":"d7d5bd12347ba92afc6f71acc8cfe8e74d7af714","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.2_1777661503674_0.9168798716831599","host":"s3://npm-registry-packages-npm-production"}},"8.4.3":{"name":"claude-sprint-gate","version":"8.4.3","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.3","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"ed0879daa9334020c63543970bd30e1df664ac9b","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.3.tgz","fileCount":53,"integrity":"sha512-Pl5TK7P6Y5RHVbwUdHiBcBjz4ZwWDvri4tMR79Z2/UcVGv4P45dPUCho2qG1N/5Avm9tKznVn7GMts00aH2yVQ==","signatures":[{"sig":"MEUCIQCKIGWMixop/G70SAMppyLKVO4SrtOxN4+prohtMA2J7gIgBYaVF3o0BxJ01FCLYZGIJ/NOQlOEv5cGzN1C2R+C8D8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":763806},"gitHead":"d9f381912d561e3425456e032e879dae6432c13b","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.3_1777662008734_0.5232410669918397","host":"s3://npm-registry-packages-npm-production"}},"8.4.4":{"name":"claude-sprint-gate","version":"8.4.4","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.4","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"cc703c5acdf9525a8a7e28acc948a8754b34ec1e","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.4.tgz","fileCount":53,"integrity":"sha512-C3CSXSPqQZZhoO7xIbsTOEYYXL2fR6hrNxn3defGhOX9GPvYeD8klMiU17SXt3mqhsEHT9wkqi6+3QpZFeYtYw==","signatures":[{"sig":"MEYCIQD52vQvIskmI3A+TxoSIjYPiTsRGAlm8ibBgozGVu5nMwIhAPQSifuZVcdwLkP215CaYoyNf8y+/d4BdNELUFERX41/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":774569},"gitHead":"a1c399eebbd546407abcaf8844564032a767ba44","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.4_1777665072560_0.7801439615769201","host":"s3://npm-registry-packages-npm-production"}},"8.4.5":{"name":"claude-sprint-gate","version":"8.4.5","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.5","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"341243b2c6834deb2aaa8861d824fa214afa3e5d","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.5.tgz","fileCount":53,"integrity":"sha512-jwm6JYWJvSe7urhcYSMP5v0cDqeFpdj1ZFqrZtGbaS2+IDpA4LBgYo1BBHeZz9R9aRGy6c1csCpdbwqGHuTaFw==","signatures":[{"sig":"MEQCIA0RZMuhig+CzHL0xq3Pl4psPoxtmGc82cZZ+yZtca+VAiBlQsEMb8E/4bVucFr581w3S0OBQTJp60AGJwOZlOGe8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":788530},"gitHead":"5afeb0ef4702d0f1b735b965f5a17792579e4bf8","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.5_1777666568148_0.6566897127641034","host":"s3://npm-registry-packages-npm-production"}},"8.4.6":{"name":"claude-sprint-gate","version":"8.4.6","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.6","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"6ba3a23dc3527b1c393ae1da6a2cc86dc2ca75e3","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.6.tgz","fileCount":54,"integrity":"sha512-kU4RnIJ4PWB4Jhn96a4gV0WopLawTT9sttQBlL5vmpimjqypJUA2emOzM6LuI1ROMe0DkFgZz1qP8noz5fJCqQ==","signatures":[{"sig":"MEUCIBdLXS1X1Fn+vDat6Yk2zlNv0Y7vd9y9CLoaDDbR+SvyAiEA41NR/WDOU1FQcqEZguZUlQIVfPi/2MGkZc8OkhqZgdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":799832},"gitHead":"49b49daaee3862592a3009d18f958bf94f46294e","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.6_1777672241925_0.030077410312929986","host":"s3://npm-registry-packages-npm-production"}},"8.4.7":{"name":"claude-sprint-gate","version":"8.4.7","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.7","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"8e9bf62505664b5716dfbaee620e435ae7efffbf","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.7.tgz","fileCount":54,"integrity":"sha512-DdA8jQFO2FoIV6aVIzq4g0L4Fb74mmAD5rZsoc65sfYDC6POYVy253zy9QIAhbB+rneB35m3njim5HjaxIHCMA==","signatures":[{"sig":"MEQCIHHcXQeAkRM4FivUS7RaOGbKAeCNked8sxA370H9l2s3AiAE0l5Aga1FvToKc6peiJQUPWs9O9OZWDU7/uDV6fuB0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":800151},"gitHead":"9e61cf40a8e8078472c41ad57ab3dc51ca8e65b3","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.7_1777673042710_0.21193075308784692","host":"s3://npm-registry-packages-npm-production"}},"8.4.8":{"name":"claude-sprint-gate","version":"8.4.8","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.8","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"a567e8337cbaa04ea830609da82ed3af2d00f451","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.8.tgz","fileCount":54,"integrity":"sha512-epwXXAYzIqPA2ldKGKxMZUQnIzYE3NLoCTd0KJn/4N++bLHcNXlaV2QE0d34tmZKML3EkLx/eLwqRvehlbN0mQ==","signatures":[{"sig":"MEQCIHiQzD3Z5lgeXzb82UwuzXg9BnaVgaEIOHOF/boDnkrxAiAb7YJgv1Zkzg4VKsyKylkCqOrFeh8ZnuOnXnlLHmiONQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":805599},"gitHead":"9e14f54c9ea05e63758972c68b548e855fa5ef7c","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.8_1777674840227_0.3104905858598568","host":"s3://npm-registry-packages-npm-production"}},"8.4.9":{"name":"claude-sprint-gate","version":"8.4.9","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.9","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"757146423fd0758be818a9d3db811a6721c62253","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.9.tgz","fileCount":54,"integrity":"sha512-ywj0l7mxfMkq1ffEWpmRSwLZkTS2jQJh7c83nWnaSDQdQ5dW6wPrPJGMRZbiQAknMG5+zm+fnXeN6Y345Vf8PA==","signatures":[{"sig":"MEYCIQDOye3R1pESOiP3U4RCLR6l4othsGMa+yAP7h5psfw0kAIhAK6E5En36/PZx/UcTcz6O8rgN26//sBQBcTY9N8ClySW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":808107},"gitHead":"31ee288db1b5f028a4c064bbc64f0aca465d17c4","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.9_1777675725496_0.5299188481207888","host":"s3://npm-registry-packages-npm-production"}},"8.4.10":{"name":"claude-sprint-gate","version":"8.4.10","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.10","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"f4750ed94cfc6c0cc249dacd9a7d324c8a0242bb","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.10.tgz","fileCount":54,"integrity":"sha512-gm5YElyGZTVofqJobcOssQxTnq2iySeMtCdCjELv2/3mwCacd+HZHQBj6q4/yUH0B2PqzshzVS/z42eS1pN9rQ==","signatures":[{"sig":"MEQCIEfOm6VdKg8l+eKQYKLEfTG1UtYTMnZxMjvIvS2MXZrrAiBSerw42tHdt/wwb0evU1UOfU5wUSAZcM3oFQu25TxIlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":811841},"gitHead":"f6aecb73f3f6e97194a8d9f92db5d7ab4aa2ef83","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.10_1777676661092_0.8569974191747514","host":"s3://npm-registry-packages-npm-production"}},"8.4.12":{"name":"claude-sprint-gate","version":"8.4.12","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.4.12","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"4313ba7dba54b8146c5619742e9bb946a838af61","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.4.12.tgz","fileCount":54,"integrity":"sha512-nXIfdtNefIC1s4JxQ5HAb0XsLxCDSU2CCEI23x+igSI+Ub+ok/UssOCCcATIqllfVsRsWtkVNFfckxHZHVNDGA==","signatures":[{"sig":"MEUCIAa+xl46Qk3cOkaB5C01UPgGswLk0TcRidWCPo3YrvhAAiEAv/InYZWneaIyyzG3YGB7MhuqJ6yE+M7Bagu3oqWYC3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":819186},"gitHead":"4adfca6fe3a28627049faf108a33800f9bc91339","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.4.12_1777680308984_0.35980883466055347","host":"s3://npm-registry-packages-npm-production"}},"8.5.0":{"name":"claude-sprint-gate","version":"8.5.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.5.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"7706e924e5eb5338b0f43140dbb88e78f8af62a1","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.5.0.tgz","fileCount":60,"integrity":"sha512-Tb0YzLZ05sV0Pq6PJokP+e1EZpNc+P/p8hlOVGX0+ESA+c1En6Xlc609DbwC5tlcKgXR9WnfZ3RBKvWsmaISdw==","signatures":[{"sig":"MEUCIECQgEyXj/YKfgz7+aFrrioivnhaZVCmwE4KrkqnzsaJAiEA8KnIrPG/RQiBGWPMlwAiJ2JtrSsEepmGEva6TqtQLFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889523},"gitHead":"d8e19ac3fcbb7d533ce4b872171cf127296f16dc","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.5.0_1777686798670_0.5382393220587942","host":"s3://npm-registry-packages-npm-production"}},"8.5.1":{"name":"claude-sprint-gate","version":"8.5.1","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.5.1","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"39220e5b26f78be4757d5e75f9f0779d20347b26","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.5.1.tgz","fileCount":60,"integrity":"sha512-oO51ViWuHZzUm24GPVpWCJ489Ni1RLAzNT+0N3p5WVZFag3FJGOWe3UMJprx9/ETNe0WJK3icXbJwRvmkEVKIw==","signatures":[{"sig":"MEQCIFe3UyKxnVlMEcSNWpkyYfoV+sYJ8D9z/8HGZt9rKtM9AiBZBXhuhKit3mW9VSPocd8b4GwxcKPBukI3CZo2+xoW5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":898867},"gitHead":"791786f49afa2c6d1ff04f4914ad453ecd897c0a","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.5.1_1777712919355_0.5204254878758823","host":"s3://npm-registry-packages-npm-production"}},"8.5.2":{"name":"claude-sprint-gate","version":"8.5.2","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.5.2","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"37357ddbddccd756b32ab3c2ec1917ca69828ca0","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.5.2.tgz","fileCount":60,"integrity":"sha512-mL2j+8xIeypP9UNGryiBiEidjs6ntw8MAje7Fcz2wROJEJb1dcCxE9ctvjgifGUcXDTsdZ6xw/vuQKi/IDEroA==","signatures":[{"sig":"MEUCIQCI/5rctadqoDYaUM4JMt4V9lSgvDoDMvOMKUfLT5UM/AIgeAzTSej0ARxTy2fZVox8Eqi5PMh9iLzeqWOIYjfpOw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":903192},"gitHead":"abe4aeb3114dc270b38923444dcafbf1194cb86a","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.5.2_1777713931052_0.8429090365096938","host":"s3://npm-registry-packages-npm-production"}},"8.5.3":{"name":"claude-sprint-gate","version":"8.5.3","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.5.3","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"1f324a7afca2121b0a2fb0413f91f18c68a52e92","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.5.3.tgz","fileCount":60,"integrity":"sha512-NwPO2HElAHyd/9VVCIoF/44adlDPbNC7O+0jli1JhM+NLXQC/f2K/8EXtaTMhVqNRrhG5xJR8zk7WPb3+pevfQ==","signatures":[{"sig":"MEYCIQCU25TubuM2qnE0FAtKrTPtLoAdY8/iBerLjSwEnIN/rAIhAJg40xaKXiulY0Tgg0BbGgkxCvbbwhmKcIumjTSHOsay","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":903455},"gitHead":"b8ec03c9e516da7fdce206ee8b50f08d17db3619","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.5.3_1777714614539_0.4366587760026408","host":"s3://npm-registry-packages-npm-production"}},"8.6.0":{"name":"claude-sprint-gate","version":"8.6.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.6.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"0b67fb564843081ab04df10ec5a34b0ec593f874","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.6.0.tgz","fileCount":62,"integrity":"sha512-tcYHJb64DSE8lqRFVuOD9Thf5QM4JojoOQJA8f1oWeekMaf06KqemQmycFJGQbjoT0mlDz3YnygSR8vQv2JZWQ==","signatures":[{"sig":"MEUCIF8AKbCL75TqU6Pk5zVZQBMnT9MxvinjhLb/dQfMgq8zAiEAi0OXuXD6aTYecXma3fIDSefyq1g6X6U1t1ZWh6EuyVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":950401},"gitHead":"ad7c676d79d8b5e75d1151250a15c401a843a907","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.6.0_1777726321169_0.1016798819671969","host":"s3://npm-registry-packages-npm-production"}},"8.6.1":{"name":"claude-sprint-gate","version":"8.6.1","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.6.1","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"d3b449d7207a4225f5deb5f3835aa93559cde1bd","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.6.1.tgz","fileCount":62,"integrity":"sha512-bqWZ149ZJhTQVkDJddTTGWykbpSqhrUyVU4kSD1wAAW2mY00Dz1vTJHUf0A5CHKJugOHdtysTbjM8ajp5pwOYQ==","signatures":[{"sig":"MEMCIC/9gLfLDVNkCdAErY6xtnvObZxayo/EqLEA2PBLPpMKAh9YnOR2UWSL0loapiuVg+P5OftR0srQ43m6qPY6KXx3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":952046},"gitHead":"e594fde920084bccf49166463c605df75d6fb0a8","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.6.1_1777727257106_0.6028270193290335","host":"s3://npm-registry-packages-npm-production"}},"8.6.2":{"name":"claude-sprint-gate","version":"8.6.2","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@8.6.2","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"2074c1a2baacaa080095a811922a97d7dc84f91c","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-8.6.2.tgz","fileCount":62,"integrity":"sha512-TYu3ph+To3PDWLAx14g8FwATMA4Lk9gey0t+ZBH1nQebJeYmiFjtHPbG2qBRa1jHIGlO5dLHeTLmC5i8DYqJXw==","signatures":[{"sig":"MEUCIEW7O6ckxI74d+UbZfv4m/lt8x1vddU/tCj5MttxWV96AiEAwX6gL+itfGDvt6Jf54SlAuMs/jHJ92lnOa1y4oQ4+jY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":952312},"gitHead":"fe85d2f7b0f82db5c6c66aa5b2fcaef180f6f4df","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_8.6.2_1777732309297_0.6879772888865283","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"claude-sprint-gate","version":"9.0.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.0.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"826fdff9d03bac30d54f38a8b137a466fd91e0ff","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.0.0.tgz","fileCount":62,"integrity":"sha512-AcqXCMn/XuinTSbFOTHt4EC6pWesB8SVGnMKov+z/LCCl5mz+7HMk0URJHy+l3SLAC2ojwvRuBct3ruDMNfoJQ==","signatures":[{"sig":"MEQCIC+DJwgQVdtKmmItDswUyHuzafQEsvej5tcQQn3xwpU3AiAT6UwR/jVqWvJdNpCPCZ0J3SzUblaqMg3X2oX+OHXCzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":956136},"gitHead":"49ab6246505338578435648de884ebd454bb9a77","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.0.0_1777734446937_0.4920678898982116","host":"s3://npm-registry-packages-npm-production"}},"9.1.0":{"name":"claude-sprint-gate","version":"9.1.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.1.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"6192461908452a6af8be1603aa3f4cc0a51fb77d","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.1.0.tgz","fileCount":62,"integrity":"sha512-YZ0UxPZD1lH4z2UX+lKsoQ+W0yICELCIwJShUTIhZJ3AGrHSjZJ339uE1Y4xku72za7PkJUOmUydvlFD7aZv7A==","signatures":[{"sig":"MEUCIQDX7E/uO/R1hAQJJ51TS8qj+1O4KBvfO/hCaz85uMp9gQIgEfUnS8uLr64rZ1s0LwuBbUhXVJgCuyal9yhRldyfWfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":963258},"gitHead":"17feda27c6445896d4e3f062e57964d030794c7f","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.1.0_1777739384230_0.8015595300967402","host":"s3://npm-registry-packages-npm-production"}},"9.2.0":{"name":"claude-sprint-gate","version":"9.2.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.2.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"7064abec8266bbc16ca9f5a343e43e0d93ec90a1","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.2.0.tgz","fileCount":62,"integrity":"sha512-W0wsRzO5zfyNDLaLCoEs2RltqcKhoqUmovvl6GtFxRop8aW2O451I0XMygGUBQ4Rdiv5dffkqmeGt0FEE5yaoQ==","signatures":[{"sig":"MEYCIQCKAEgnT7Ak8MsgaFBOdBF2lwxfy4ZbZi4j4XFTFFk3nQIhAP/53O87ILd8blZdRFSrczo6/2oQgOqDz7LATZJz1GAB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":973775},"gitHead":"0ecf0d04a85996b30a6bb0042de0f5448f10eed2","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.2.0_1777743089114_0.9215667159115699","host":"s3://npm-registry-packages-npm-production"}},"9.3.0":{"name":"claude-sprint-gate","version":"9.3.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.3.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"8b86b97758992dfbae9af3ee0cd5373d6024013c","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.3.0.tgz","fileCount":62,"integrity":"sha512-EyX9RAYwlU63TiSORlDhVR0JtNNoc/Ng4eNuO9Y0khfCoeBBoMGBed1P12igmSQ9Wm4BS5jqg2ObO8/XASznow==","signatures":[{"sig":"MEUCIQD4P7UbbjwZ2bCq9glQTvV2dvuwsAD8lBBHhDUr7w8GigIgcaDZm7VMdHsL8OoliiPuZWiH4aZQ4avYmCr0ouGTRUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":980973},"gitHead":"2061d7277881c0792f176ba59e084d1eac864205","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.3.0_1777748146859_0.8765733328097103","host":"s3://npm-registry-packages-npm-production"}},"9.4.0":{"name":"claude-sprint-gate","version":"9.4.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.4.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"75d4f331c75c5f10e464dd064dde02a35470365e","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.4.0.tgz","fileCount":63,"integrity":"sha512-+60v3tiunNnypw5cZiSytUcdzPjtiQtlavKDJsO/YT01MiWVUXm7cnlgJhLrEuDy8AmgzVyjChg4WOGQEALYdQ==","signatures":[{"sig":"MEQCIHWDayEharBniK1eI6rupWOQRZBqdfEg3TQTjFp4VifzAiAMCsz+Z/1pVkFuD2awUEzu6Z8d2kvq7GKiIALNS3S2SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":992143},"gitHead":"07fb88a4ffe70294205ea17b3a4b516a4079516b","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.4.0_1777751420249_0.9617198421589934","host":"s3://npm-registry-packages-npm-production"}},"9.5.0":{"name":"claude-sprint-gate","version":"9.5.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.5.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"419457f8d0341c2cd418a3364f872f9ee5b8dae9","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.5.0.tgz","fileCount":65,"integrity":"sha512-UAq0juNLH3Ej7KyIPGVIQfL2yYksaKa46ex17/wIOpDwlIxjT66K4WE5wO7scudAMWsXg3k2zeZtJNtGh8zyIA==","signatures":[{"sig":"MEQCIACeA58eSnkb/m+P8J8ZEHlPd8HAfCeHhGVeIBcw00bMAiAFYtgBYpqKDQ325noU9wTZGoHM3Cc7pkFyIjbBg3ivSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1012318},"gitHead":"517572c58bf90adc6b02b64e9cdb1413e898ff0a","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.5.0_1777752857120_0.6606889560952192","host":"s3://npm-registry-packages-npm-production"}},"9.6.0":{"name":"claude-sprint-gate","version":"9.6.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.6.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"9ff1abfe20bdaa783bc2b191c645b614de8afb63","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.6.0.tgz","fileCount":66,"integrity":"sha512-1TcKUfXJ5vKdz79A63ygBB3pXzXwW7iLnkRONILrI3JXkR9lvaP8zMUKo8+cFTX1AyuBpNHzjN3P+fQSK5ZACw==","signatures":[{"sig":"MEUCIETn6vxxfYcaXmmQ4DcEO6TnHN5IlNY6vfIcSVktfaeBAiEAvPsYkpkzkenJtmHz75LxBl2PEcKRbCyckRqAzk+Ivlo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1032285},"gitHead":"5ba3eb08ab69616f8ba77ef678769cc112fea200","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.6.0_1777760262288_0.05454711705614068","host":"s3://npm-registry-packages-npm-production"}},"9.7.0":{"name":"claude-sprint-gate","version":"9.7.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.7.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"559396978ea846a67ac3fdc29dc1d73cf68e5313","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.7.0.tgz","fileCount":66,"integrity":"sha512-eGJYmqi/7OeLUeZmOqCBHyzVeTiODTfrFiNz0xKXjpAEmW6/asg4y1srESFRnEXVN/TPiYQ3sLjScUz+9B9Z4g==","signatures":[{"sig":"MEUCIQDxtaJcG+ju50bqeDscfcfpVyAIt9YQHRbHFpVm7s5s+gIgUm39l05/pQGhBiYEk3QLYd8+22ITEYcqqpZifTbQ/qA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1034631},"gitHead":"74957b643c3aa73cbe0262da87e77ecf90963b01","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.7.0_1777764967809_0.8320096419543292","host":"s3://npm-registry-packages-npm-production"}},"9.8.0":{"name":"claude-sprint-gate","version":"9.8.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.8.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"653c44dab668058e2074ab1ec57cc6a4f4ab82e5","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.8.0.tgz","fileCount":66,"integrity":"sha512-K2wPxTCeGFUYy/WgbVLxig6/Y57Ehi2T/rWz/yiBYEta1Yn2UszDxuV0YIxZvQP6PEdlyZGmie9qftXM4pMTvg==","signatures":[{"sig":"MEUCIHt++FzvcajQ8vDogZkW6TW7taPeuUcLOOk90+OPcNazAiEAs1Qal5dJ5MlkGY8WMn/hPTQGgWCxxq4yKBIw0QTX3a8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1027122},"gitHead":"7242df596a99d7d6e6d22095c778598cd52ee536","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.8.0_1777766136457_0.5933327710675722","host":"s3://npm-registry-packages-npm-production"}},"9.8.1":{"name":"claude-sprint-gate","version":"9.8.1","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.8.1","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"d3dcbbb308a11fb7e579b3e36e04047c4f89dcd8","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.8.1.tgz","fileCount":66,"integrity":"sha512-M1d6lbQLE2jtSpspdguhUud+S0oQS3BFzPE5x+LkpsQoATQOYKxvxfwJRkJ8uJi//wktMVO2O5Z/L1uY62V8Kg==","signatures":[{"sig":"MEQCIB/+ykAvu+dcPJedM0a4zWmwr6/QOEw7L/vn8EP6X99vAiAyKONYRpPyF6JJHPA4I18QxilIyuCHvyz/k7E4POJgpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1025868},"gitHead":"4500353b2c80928086de06fc755913ea4441462f","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.8.1_1777769235497_0.11647741446985549","host":"s3://npm-registry-packages-npm-production"}},"9.9.0":{"name":"claude-sprint-gate","version":"9.9.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.9.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"82f432d6f0cb1a855b51c35cb35fb2807c59b367","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.9.0.tgz","fileCount":75,"integrity":"sha512-g/FxLVJ2Fofyi8ZstfCsv8jwunYbfM1WFVomOpJsunyt4O1pkOVyebHtgL5kVh/TrLbtb+5fsCAC8igDW8r+Cw==","signatures":[{"sig":"MEUCIG2ZQWOg+46Ye8F6ZNZOqNvcHVquMDToP4G0u5vcRZeDAiEAi9z4CeQRFn0XCV4XsMgJPenYsGq60QzMbHe7VP9APW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1063702},"gitHead":"bced0413e8268beb1c76c233260119e28c91a0be","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.9.0_1777879700375_0.9848486674113162","host":"s3://npm-registry-packages-npm-production"}},"9.9.1":{"name":"claude-sprint-gate","version":"9.9.1","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.9.1","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"7e3b4abefa7a3c645bcc3464a0904c81373fb98c","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.9.1.tgz","fileCount":79,"integrity":"sha512-7k6uchxiD0QkMKdHDCjuBtw3jmEgE6fJPVqcGtdpcXiqjUmd/o5QwUxbIUnjCZi8DumNmpNKKRCM1pno6SuyWw==","signatures":[{"sig":"MEYCIQCEzXIFhXIGqJmaggpeG3zsso9jdvLHhp/kKoGohnJdtAIhAO/UoMrrlQR2sKdj2OgUoCe8uEv6hId6ImPQ94t4chy+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1072889},"gitHead":"e1de158d690c2eb5e97f4ccf910c5148882b9079","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.9.1_1778005695513_0.17169700308249225","host":"s3://npm-registry-packages-npm-production"}},"9.9.2":{"name":"claude-sprint-gate","version":"9.9.2","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.9.2","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"1007da68209c1e9b60e54fb047629b2554f94880","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.9.2.tgz","fileCount":83,"integrity":"sha512-pdbzoMrTk/a3YqN0b92UmbSzRPtqmZfL/JerfHaSi7iKuMlEl7OwYDKiuHEfOOeM+JDqb2H7Ujh0uHNLbVVwLA==","signatures":[{"sig":"MEUCIHeVAZQA2EpUzLVbdCSdqPJ2hTdzoj57FVyi6vI+w5kCAiEAnfJJncf04OO1MmZnHebZa0tCmrVyh6WsNiAeuZR3L1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1087558},"gitHead":"5a14eadbc4fe4049ea9c7d67d4004040c73829b4","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.9.2_1778059604536_0.17871506858799924","host":"s3://npm-registry-packages-npm-production"}},"9.10.0":{"name":"claude-sprint-gate","version":"9.10.0","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"author":{"name":"panbergco"},"license":"MIT","_id":"claude-sprint-gate@9.10.0","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"bin":{"ccsg":"bin/ccsg.js"},"dist":{"shasum":"c72fcd7657ed4704cf3cb21c3520d3c72471d1df","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.10.0.tgz","fileCount":88,"integrity":"sha512-+paagtf7bQzuTcpA/hjxOYk+wclhoZe1bKLOsioi5quM8rC+c1ujc20bkUB1JhP+gOPArL2UoDfi+7x6c7fwgg==","signatures":[{"sig":"MEQCIEYXwCmNLZdinsSUPYXQKzNp8Y/8I2XyxubXE9Izfi5mAiAiDCtITcQpnP++BefARunV47+MscKw22f3UPqNwnYrbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1160864},"gitHead":"afc8961358f30f94094f2289348e24e283037b39","_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"repository":{"url":"git+https://github.com/panbergco/claude-code-sprint-gate.git","type":"git"},"_npmVersion":"11.6.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-sprint-gate_9.10.0_1778139157817_0.770873841544357","host":"s3://npm-registry-packages-npm-production"}},"9.10.1":{"name":"claude-sprint-gate","version":"9.10.1","description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","bin":{"ccsg":"bin/ccsg.js"},"keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"repository":{"type":"git","url":"git+https://github.com/panbergco/claude-code-sprint-gate.git"},"license":"MIT","author":{"name":"panbergco"},"gitHead":"67c2c9891bc253a430b0c9a7f00ecf3878939282","_id":"claude-sprint-gate@9.10.1","bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","_nodeVersion":"22.20.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-kd3c2L2+k89ZiSNWIj0hgogFcEqFSi4FwdnhH3DD1COqGM2hpQxftQgYUzXqOQ2FISP491rOiIXLdQ8juc3MLg==","shasum":"00ecaad1db16bb96d02aba541df30f4683b67669","tarball":"https://registry.npmjs.org/claude-sprint-gate/-/claude-sprint-gate-9.10.1.tgz","fileCount":88,"unpackedSize":1162685,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDR9fgLCl7X3o4JBr/cX3EhOt2O56HKlKbDzNA+HEZkbAiEA6uA1aoyMH8gP6zdNhS8McDFAGNmSLx2kv7qZRSQuaYc="}]},"_npmUser":{"name":"panbergco","email":"dm@panbergco.com"},"directories":{},"maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-sprint-gate_9.10.1_1778139985210_0.7973663715177604"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-15T20:56:14.198Z","modified":"2026-05-07T07:46:25.885Z","1.0.0":"2026-04-15T20:56:14.504Z","1.1.0":"2026-04-15T21:02:31.225Z","1.2.0":"2026-04-15T21:32:55.792Z","1.3.0":"2026-04-15T21:47:24.404Z","1.4.0":"2026-04-15T22:05:36.645Z","1.5.0":"2026-04-15T22:17:33.554Z","2.0.0":"2026-04-15T22:39:39.957Z","2.1.0":"2026-04-16T17:06:59.849Z","2.2.0":"2026-04-16T17:10:57.284Z","2.3.0":"2026-04-16T17:14:05.514Z","2.4.0":"2026-04-16T17:33:53.119Z","2.5.0":"2026-04-16T23:31:27.026Z","2.6.0":"2026-04-16T23:43:36.326Z","2.7.0":"2026-04-16T23:53:52.983Z","3.0.0":"2026-04-17T00:00:06.714Z","3.1.0":"2026-04-17T00:09:07.187Z","3.2.0":"2026-04-17T00:16:33.486Z","3.3.0":"2026-04-17T00:23:56.378Z","3.4.0":"2026-04-17T02:24:29.944Z","4.0.0":"2026-04-17T02:54:55.932Z","4.1.0":"2026-04-17T06:00:39.369Z","4.2.0":"2026-04-17T10:43:08.213Z","4.3.0":"2026-04-17T11:08:08.149Z","4.4.0":"2026-04-18T09:41:40.053Z","4.5.0":"2026-04-18T11:00:09.053Z","5.0.0":"2026-04-18T12:33:58.350Z","5.1.0":"2026-04-18T12:52:26.870Z","5.2.0":"2026-04-18T13:00:36.040Z","6.0.0":"2026-04-18T14:04:09.038Z","6.0.1":"2026-04-18T14:09:40.064Z","6.0.2":"2026-04-18T15:08:53.959Z","6.0.3":"2026-04-18T16:00:33.776Z","6.0.4":"2026-04-18T16:07:09.163Z","6.0.5":"2026-04-18T16:16:27.833Z","6.1.0":"2026-04-18T16:36:51.209Z","6.2.0":"2026-04-18T17:00:32.849Z","6.2.1":"2026-04-18T17:35:42.007Z","6.3.0":"2026-04-18T17:51:19.268Z","6.4.0":"2026-04-18T22:11:53.567Z","6.5.0":"2026-04-18T22:33:13.522Z","6.9.0":"2026-04-19T10:02:38.223Z","7.0.0":"2026-04-19T10:31:50.216Z","7.1.0":"2026-04-19T10:48:50.864Z","7.2.0":"2026-04-19T11:06:27.635Z","7.2.1":"2026-04-19T13:15:30.592Z","7.2.2":"2026-04-19T13:59:32.781Z","7.2.3":"2026-04-19T14:06:28.051Z","7.2.4":"2026-04-19T14:37:57.353Z","7.2.5":"2026-04-19T15:04:01.114Z","7.3.0":"2026-04-20T00:49:36.557Z","7.3.1":"2026-04-20T01:15:18.992Z","7.3.2":"2026-04-20T01:25:06.939Z","7.3.3":"2026-04-20T16:16:26.943Z","7.4.0":"2026-04-20T17:10:18.850Z","7.4.1":"2026-04-20T17:17:47.994Z","7.5.0":"2026-04-20T17:49:50.371Z","7.5.1":"2026-04-20T18:00:32.858Z","7.5.2":"2026-04-20T18:13:31.096Z","7.6.0":"2026-04-20T18:47:14.296Z","7.6.1":"2026-04-20T20:23:38.353Z","7.7.0":"2026-04-20T22:17:37.176Z","7.7.1":"2026-04-20T22:27:41.000Z","7.7.2":"2026-04-20T22:35:40.137Z","7.7.3":"2026-04-20T23:14:40.918Z","7.7.4":"2026-04-20T23:31:56.706Z","7.7.5":"2026-04-21T04:52:56.604Z","7.8.0":"2026-04-21T21:41:32.710Z","7.8.1":"2026-04-21T21:48:25.214Z","7.8.2":"2026-04-21T21:52:57.606Z","7.8.3":"2026-04-22T19:12:03.867Z","7.8.4":"2026-04-22T21:27:47.145Z","7.8.5":"2026-04-22T21:31:20.796Z","7.8.6":"2026-04-22T22:01:55.661Z","7.8.7":"2026-04-22T23:31:54.388Z","7.9.0":"2026-04-23T00:00:08.529Z","7.9.1":"2026-04-23T11:17:22.567Z","7.9.2":"2026-04-23T21:32:05.229Z","7.9.3":"2026-04-23T21:55:07.980Z","8.2.1":"2026-05-01T00:08:44.858Z","8.2.2":"2026-05-01T01:06:43.435Z","8.2.3":"2026-05-01T01:42:04.264Z","8.2.4":"2026-05-01T02:19:26.351Z","8.3.1":"2026-05-01T13:01:41.767Z","8.4.0":"2026-05-01T13:17:21.817Z","8.4.1":"2026-05-01T18:40:36.612Z","8.4.2":"2026-05-01T18:51:43.867Z","8.4.3":"2026-05-01T19:00:08.930Z","8.4.4":"2026-05-01T19:51:12.733Z","8.4.5":"2026-05-01T20:16:08.382Z","8.4.6":"2026-05-01T21:50:42.106Z","8.4.7":"2026-05-01T22:04:02.900Z","8.4.8":"2026-05-01T22:34:00.472Z","8.4.9":"2026-05-01T22:48:45.687Z","8.4.10":"2026-05-01T23:04:21.556Z","8.4.12":"2026-05-02T00:05:09.213Z","8.5.0":"2026-05-02T01:53:18.869Z","8.5.1":"2026-05-02T09:08:39.535Z","8.5.2":"2026-05-02T09:25:31.252Z","8.5.3":"2026-05-02T09:36:54.732Z","8.6.0":"2026-05-02T12:52:01.375Z","8.6.1":"2026-05-02T13:07:37.270Z","8.6.2":"2026-05-02T14:31:49.514Z","9.0.0":"2026-05-02T15:07:27.151Z","9.1.0":"2026-05-02T16:29:44.464Z","9.2.0":"2026-05-02T17:31:29.310Z","9.3.0":"2026-05-02T18:55:47.067Z","9.4.0":"2026-05-02T19:50:20.443Z","9.5.0":"2026-05-02T20:14:17.318Z","9.6.0":"2026-05-02T22:17:42.537Z","9.7.0":"2026-05-02T23:36:07.994Z","9.8.0":"2026-05-02T23:55:36.625Z","9.8.1":"2026-05-03T00:47:15.712Z","9.9.0":"2026-05-04T07:28:20.576Z","9.9.1":"2026-05-05T18:28:15.721Z","9.9.2":"2026-05-06T09:26:44.803Z","9.10.0":"2026-05-07T07:32:37.988Z","9.10.1":"2026-05-07T07:46:25.387Z"},"bugs":{"url":"https://github.com/panbergco/claude-code-sprint-gate/issues"},"author":{"name":"panbergco"},"license":"MIT","homepage":"https://github.com/panbergco/claude-code-sprint-gate#readme","keywords":["claude","claude-code","sprint","hook","agent","ai","verification"],"repository":{"type":"git","url":"git+https://github.com/panbergco/claude-code-sprint-gate.git"},"description":"Claude Code Sprint Gate — autonomous sprint lifecycle manager with pluggable scorecards. v8.3 introduces multi-agent mode foundation — master is the default role; /sprint-role slash command + role file mechanism + per-session NATO nickname auto-assignment","maintainers":[{"name":"panbergco","email":"dm@panbergco.com"}],"readme":"# CCSG — Claude Code Sprint Gate\r\n\r\n**Current version: 9.10.1** · [npm](https://npmjs.com/package/claude-sprint-gate) · [GitHub](https://github.com/panbergco/claude-code-sprint-gate)\r\n\r\n## What's new — v9.10.1: review-sprint detection regex tighten (hotfix)\r\n\r\nDogfood-surfaced false-positive in the v9.10.0 review-sprint detection. The fallback filename heuristic at `plugin/hooks/ccsg.sh:311` matched any sprint slug containing the word \"review\" (case-insensitive) — including v9.10.0's own ship sprint about the reviewer feature. The Stop hook then demanded a `review_status` on what was actually a normal feature-ship sprint.\r\n\r\n**Fix.** Tightened the filename fallback regex from `grep -qi 'review'` to `grep -qE 'review-correction-for'` — the canonical infix produced by ccsg.sh's review-sprint generator (`sprint-S<N>-review-correction-for-S<SOURCE>-<slug>.md`). The `type: review` frontmatter check remains the primary signal and is unchanged; hand-authored review sprints with non-canonical filenames should declare it explicitly.\r\n\r\n**Impact.**\r\n\r\n- Generator-produced review sprints: identical detection (still match by canonical filename + frontmatter).\r\n- Hand-authored review sprints: identical if frontmatter set; over-broad slug matching no longer trips false-positives.\r\n- Non-review sprints with \"review\" in the slug: bug → fixed.\r\n\r\nNo new features, no test surface changes, no behavior change for any other code path. 59/59 integration tests still GREEN.\r\n\r\n## What's new — v9.10.0: reviewer-role parity with CSG (Claude/Codex cross-tool collaboration)\r\n\r\nCCSG and Codex Sprint Gate (CSG) now share a common reviewer-role contract over the same `sprint-docs/.ccsg/` runtime state. The goal: a Claude session executes a sprint, a Codex session reviews it (or vice versa), with hard-gated separation between execution and audit even across tool boundaries. Existing CCSG functionality preserved bit-for-bit; reviewer mechanics are additive and signal-gated.\r\n\r\n**Reviewer role — first-class third role alongside master/worker:**\r\n\r\n- Audit context, not development context. Cannot create execution claims, write product code, or modify development sprint files.\r\n- Uses separate claim namespace `sprint-docs/.ccsg/review-claims/` (NOT `sprint-docs/.ccsg/claims/`). Hard-gated by `claim-guard.sh` reviewer-lane gates.\r\n- Source sprint creator/executor blocked from reviewing that source. Feedback author blocked from fixing the resulting correction sprint. Both gates enforced by `claim-guard.sh`.\r\n- Reviewer write-lane: only to `sprint-docs/.ccsg/review-claims/*.lock` and claimed `sprint-open/*review*.md`. Enforced by `sprint-ownership-guard.sh` reviewer recognition.\r\n- New scheduler token `CCSG_ARM_REVIEWER` joins the v9.9.2 four-token model (sentinel-only, no master claim). `prompt-guard.sh` also accepts `CSG_*` token prefixes for cross-tool compatibility in mixed CCSG/CSG projects.\r\n- New slash command `/sprint-review` for the reviewer claim + feedback workflow. `/sprint-role` accepts `reviewer`. `/sprint-start --role=reviewer` arms reviewer-flavored loop with `CCSG_ARM_REVIEWER` token.\r\n\r\n**Review sprint lifecycle in `ccsg.sh` (signal-gated, opt-in):**\r\n\r\nWhen a verification sprint completes, CCSG checks for ANY reviewer signal:\r\n1. `sprint-docs/.ccsg/reviewer-required` flag file exists\r\n2. Registered `agents/*.json` with `role: reviewer`\r\n3. Source sprint frontmatter `review_required: true`\r\n\r\nIf ANY signal: CCSG generates a pending review sprint at `sprint-open/sprint-S<NEW>-review-correction-for-S<SOURCE>-<slug>.md` with full frontmatter (`type: review`, `review_status: pending`, source creator/executor session_ids). Stop is blocked until a reviewer claims and resolves. **No signal → no review sprint created** — solo and master/worker projects with no reviewer signal see ZERO behavior change from v9.9.x.\r\n\r\nState machine: `pending` → `pass` (archive + release reviewer claim) | `findings` (handoff to master/worker for correction; reviewer can stop with findings even if review-checklist incomplete — findings IS the handoff signal) → `correction-ready` (re-review required by separate reviewer session).\r\n\r\n**Hook coverage drift remedy:**\r\n\r\nCCSG hook files `sprint-ownership-guard.sh`, `feature-charter-guard.sh`, `evidence-resolver.sh`, `scenario-witness-guard.sh` existed but were missing from PreToolUse matcher registrations. v9.10 closes the drift:\r\n\r\n- `Edit` / `Write` / `MultiEdit` matchers now also fire `sprint-ownership-guard.sh` + `feature-charter-guard.sh`\r\n- `Bash` matcher now also fires `evidence-resolver.sh` + `scenario-witness-guard.sh`\r\n- (`scenario-witness-runner.sh` stays as command-style runner for `/sprint-witness`, NOT registered as PreToolUse hook)\r\n\r\n`deploy.sh`, `bin/ccsg.js`, `plugin/scripts/install-hooks.py`, and `plugin/hooks/hooks.json` all updated to register these in the canonical matchers.\r\n\r\n**Library additions (`plugin/lib/ccsg_agents.py`):**\r\n\r\n- `_review_claims_dir(root)` — helper for `.ccsg/review-claims/` path resolution\r\n- `_read_front_matter(path)` — minimal YAML frontmatter reader for review-sprint type/status detection\r\n- `find_claimable_review_sprint(root, session_id)` — reviewer scan with source/feedback-author exclusion\r\n- `try_atomic_review_claim(root, review_sprint_n, source_sprint_ref, session_id, nickname)` — atomic claim with `O_EXCL`\r\n- `release_review_claim(root, review_sprint_n, session_id)` — release owned-by-session\r\n- CLI dispatches: `find-review-claimable`, `review-claim`, `release-review`\r\n\r\n**Cross-tool collaboration substrate:**\r\n\r\nCCSG and CSG share `sprint-docs/.ccsg/` runtime state. Reviewer-role mechanics enforce separation-of-concerns regardless of which tool armed which role. A typical cross-tool workflow:\r\n\r\n1. Claude (CCSG) session armed as master → executes sprint S<N>\r\n2. Reviewer signal active (`reviewer-required` file or registered Codex reviewer agent)\r\n3. CCSG `ccsg.sh` creates pending review sprint when verify archives\r\n4. Codex (CSG) session armed as reviewer → claims review, audits source/proof/verify, writes pass/findings\r\n5. If findings: master (Claude or Codex) corrects, sets `correction-ready`, separate reviewer re-reviews\r\n\r\nToken compatibility: `prompt-guard.sh` accepts both `CCSG_*` and `CSG_*` token prefixes. CCSG-generated prompts always use `CCSG_*`; CSG-generated prompts use `CSG_*`; both sides recognize both for cross-tool tick continuity.\r\n\r\n**Preservation guarantees (production-critical):**\r\n\r\n- All v9.9.2 token-arm semantics preserved: `CCSG_ARM_SESSION` (master claim), `CCSG_ARM_WORKER` / `CCSG_TICK_SESSION` (sentinel-only). New `CCSG_ARM_REVIEWER` joins as fourth sentinel-only token.\r\n- All v9.9.2 ownership-verification semantics preserved on `/sprint-stop`.\r\n- All v9.9.0 anti-deflection / operator-input-as-directive doctrine preserved.\r\n- Master/worker workflows are bit-for-bit identical to v9.9.2 in all projects without reviewer signals.\r\n- Newly-registered hooks (`sprint-ownership-guard`, `feature-charter-guard`, `evidence-resolver`, `scenario-witness-guard`) ALREADY default to passthrough when their preconditions don't apply — silent no-ops for non-reviewer workflows.\r\n\r\n## What's new — v9.9.2: hotfix — master-claim session-binding + tick self-recognition\r\n\r\nEmpirical incident 2026-05-06: a cron-fired loop-tick session hijacked master role from the active master, then a subsequent operator `/sprint-stop` in the tick session cascadingly nuked the prior master's state files (cron cancelled, `.ccsg-active-session` deleted, role file deleted, agent file deleted). Root cause: the v9.7 loop-prompt template carried the `CCSG_ARM_SESSION` token (the same token `/sprint-start` uses for master claim), so every cron-fired tick session triggered `loop-detect.sh`'s master-claim logic and overwrote `.ccsg-active-session` with its own session_id. Combined with `/sprint-stop` master-path keying off the role file (not authoritative session), any tick session that briefly held master could nuke the real master's state.\r\n\r\nv9.9.2 fixes the bug at three layers:\r\n\r\n- **New token: `CCSG_TICK_SESSION`** — used by the loop-prompt template (cron + ScheduleWakeup re-fires) instead of `CCSG_ARM_SESSION`. `loop-detect.sh` recognizes the new token as sentinel-only — it does NOT claim `.ccsg-active-session`, does NOT overwrite master ownership. Master role belongs only to whoever last did `/sprint-start`. Three-token model now: `CCSG_ARM_SESSION` (operator-explicit master claim), `CCSG_ARM_WORKER` (worker, sentinel-only), `CCSG_TICK_SESSION` (loop tick, sentinel-only).\r\n- **TICK PRE-FLIGHT in the loop prompt** — the Step 2 loop-prompt template now opens with a probe-and-compare block that probes the tick session's `session_id` (via the v8.4.11 nonce mechanism), reads `sprint-docs/.ccsg-active-session`, and exits cleanly with `STALE_TICK:` if the tick session is NOT the current master. Stale ticks from superseded masters self-disqualify; they don't even attempt sprint planning. No token waste, no accidental work, no opportunity for cascading state damage.\r\n- **`/sprint-stop` master-path ownership verification** — before any destructive op (cron cancel, role file delete, `.ccsg-active-session` removal, per-agent file delete), `/sprint-stop` verifies the calling session_id matches `.ccsg-active-session`. Mismatch → REFUSED with explicit error message naming the actual current master. Prevents the hijack-cascade pattern where a stale role file lets a superseded session nuke the live master's state.\r\n- **`/sprint-start` semantics preserved** — operator's explicit `/sprint-start` invocation still claims master and overwrites any prior claim unconditionally (per operator directive: \"a new agent should claim master by default and overwrite the last master agent-id\"). The fix is targeted at AUTOMATED tick sessions; operator-explicit commands are honored.\r\n- **Backward-compatible** — `prompt-guard.sh` accepts all three tokens; existing in-flight `CronCreate` jobs that still carry `CCSG_ARM_SESSION` (legacy v9.7-v9.9.1 prompt templates) continue to fire without breaking. Their tick sessions will trigger the v8.4.3 master-claim path, but the new ownership-verification in `/sprint-stop` and the existing sprint-ownership-guard prevent damage. Within 7 days (cron auto-expiry) all in-flight legacy crons expire and the new template takes over fully.\r\n- **Version + marker bumped 9.9.1 → 9.9.2.** No new hooks added; no `deploy.sh` changes required. Three files touched in `plugin/`: `loop-detect.sh`, `prompt-guard.sh`, `commands/sprint-start.md` Step 2, `commands/sprint-stop.md` Step 0.5.\r\n\r\nWhy ship this hotfix immediately: the bug actively corrupts master state on every operator's machine that runs a cron-tick + `/sprint-stop` sequence. The empirical incident produced 4+ minutes of degraded enforcement and required manual recovery (clear stop flag + re-arm). Without the fix, every long-running CCSG-armed project is exposed.\r\n\r\n## What's new — v9.9.1: hotfix — `ccsg --repair-hooks` for settings.json restore\r\n\r\nEmpirical incident on 2026-05-05: a third-party agent-harness plugin's `install-hooks` step overwrote the `PreToolUse` `Edit|Write|MultiEdit|Bash` matcher block in `~/.claude/settings.json`, dropping every CCSG hook (claim-guard, sprint-first-guard, spec-guard, loop-detect, prompt-guard, verify-structure-guard, custom-mode-citation-guard, safe-push-guard, storyrun-discipline-guard) silently. Active CCSG-armed sessions kept running but with the entire enforcement layer dead — no sprint-first BLOCK, no claim-ownership BLOCK, no verify-doc structure check, no probe-nonce response. Master sessions could `/sprint-start` and appear to arm but `.ccsg-active-session` would never get written because the hook that responds to the `CCSG_ARM_SESSION` token wasn't registered.\r\n\r\nv9.9.1 ships a recovery path:\r\n\r\n- **New: `plugin/scripts/install-hooks.py`** — idempotent merge installer. Reads existing `~/.claude/settings.json`, adds CCSG's required hook entries to PreToolUse / UserPromptSubmit / Stop, preserves every non-CCSG entry (other harness plugins, custom user hooks). Skips duplicates by hook-filename match. Safe to run repeatedly.\r\n- **New: `ccsg --repair-hooks`** — operator-facing wrapper command. Invokes the merge installer with sane defaults. Optional `--dry-run` flag previews the diff without writing. Run after any time another tool's installer might have stomped on CCSG's hooks.\r\n- **Backup before write** — every merge run creates `<settings>.pre-ccsg-merge-backup` so any operator can roll back.\r\n- **Version + marker bumped 9.9.0 → 9.9.1.** Block-template teaching unchanged from v9.9.0; this is purely a recovery / install-resilience patch.\r\n\r\nWhy ship this: in a multi-tool agent ecosystem (Claude Code + CCSG + goldmem + Cursor + …), `settings.json` is shared state that every tool's installer touches. Tools that overwrite matchers instead of merging will silently disable other tools. CCSG can't prevent third-party tools from doing this, but it CAN provide a one-command recovery path so the operator's reaction is `ccsg --repair-hooks` instead of \"edit the JSON by hand.\"\r\n\r\n## What's new — v9.9.0: operator-weight-inversion strip\r\n\r\nEmpirical evidence from a 2026-05-03/04 cold-start session (Pulscale UI/UX migration arc + goldmem standalone bootstrap, ~13 hours of operator wall-clock) showed CCSG was treating operator-typed slash commands and stated directives as conversation openers rather than as directives. Six instances of the same failure pattern surfaced in one day; the operator had to re-state the same directive multiple times to override it.\r\n\r\nv9.9 strips the deflection across the framework:\r\n\r\n- **`/sprint-start` Scenario B auto-chains `/sprint-setup`** — when CCSG infrastructure is missing, the framework runs setup automatically as the first phase of `/sprint-start` execution, then continues to arming. The \"Path A (full setup) vs Path B (skip CCSG)\" menu is removed; the slash command IS the directive.\r\n- **`/sprint-start` Steps 3 + 4 are now mandatory** — `ScheduleWakeup` + `CronCreate` fire as part of arm completion. Agent must not ask \"should I fire the loop?\" after operator already invoked the command that fires it. If either tool call fails, agent reports the specific error and fails loudly, never offering \"would you like to retry / skip / fire only the cron.\"\r\n- **`/sprint-setup` Phase 0 — Absorb existing requirements doc** — when the project already has `SPEC.md` / `PRD.md` / `ISSUES.md` / `REQUIREMENTS.md` / any `*.md` with `## Requirements` / `## Goals` / `## Mission` / `## User Stories` / `## Out of Scope` / `## Stop Condition` style headings, derive `mission.md` / `strategic-intents.md` / `stop-condition.md` from it with one confirmation prompt — instead of running a from-scratch interview that re-extracts content the operator already wrote down. From-scratch interview is now the fallback only when no absorbable doc exists or operator declines absorption.\r\n- **Past-version banner stamps stripped from user-facing hook output** — `CCSG v7.0 ADVISORY (non-blocking)` → `CCSG ADVISORY (non-blocking)`; `CCSG ARCHIVE-CLEANLINESS (v9.0 ADVISE)` → `CCSG ARCHIVE-CLEANLINESS (advisory)`; etc. The framework is at v9.9 — banners that announce themselves as \"v7.0\" feature versions erode trust by suggesting outdated framework. The live framework version stamp in `claude-md-block-template.md` BEGIN marker stays — that's the anti-stacking marker.\r\n- **Past-version annotations stripped from command-doc headings** — `## Invocation: /sprint-feature --amend FT<NN> (v7.7.0)` → `## Invocation: /sprint-feature --amend FT<NN>`; `(v8.4.1 LOAD-BEARING)` → `(LOAD-BEARING)`; etc. The agent reads command docs as instruction; \"(v7.7.0)\" history annotations contribute nothing to current execution and look like outdated guidance.\r\n- **New CLAUDE.md block teaching: \"Operator input is the highest-priority signal — never re-extract via deflection\"** — explicit doctrine documenting the failure pattern (Path A/B menus, \"would you like\" questions, \"Recommendation:\" blocks re-framing executed directives) and the principle that replaces it (the slash command is the directive; the framework executes; halt only with a single named question, never a menu).\r\n\r\nWhy it matters: the operator is one, finite, irreplaceable. The agent is fungible, scales with compute. Every menu the agent offers extracts operator life-minutes. The framework's job is to convert operator input into agent constraint mechanically, never to ask for the same answer twice.\r\n\r\nNot in this ship (deferred to v9.10): heartbeat side-channel corrupt-file recovery, `.ccsg-active-session` auto-claim leak fix, regression test for v9.8.1 hotfix, per-agent-file `current_phase` updates, `ccsg skills doctor` command. v9.9 is purposely thematic — one root cause, six surface fixes.\r\n\r\n## What's new — v9.8.0: block compaction (version archaeology stripped, duplicates removed)\r\n\r\nUser caught a regression: the deployed CCSG block in CLAUDE.md was 166k chars (4× the Claude Code 40k performance-warning threshold) — and tonight's v9.4-v9.7 ships ADDED ~95 lines without extracting the duplicates the glossary system was supposed to remove. The block grew when it should have shrunk.\r\n\r\nv9.8 does the extraction pass:\r\n\r\n**1. Verbatim duplicate removed.** The Visual Verification Depth Standard section had ~46 lines duplicated VERBATIM (per-work-type minimums + \"no observable surface\" rejection + \"why this exists\" — all appeared twice). One copy retained.\r\n\r\n**2. Version archaeology stripped.** ~72 instances of `(vX.Y — LOAD-BEARING)` style parentheticals in headers, plus inline narrative version mentions (\"v7.8.0 introduced...\", \"v8.6 replaced...\", etc.) — all pure historical reference, useless in the deployed block. Deployed CCSG block only needs to know \"this is v<X>\" via the marker line; in-content version archaeology is dead weight.\r\n\r\n**3. Implementation code blocks elided.** A 22-line React/JSX implementation example for the capture-mode URL banner pattern compacted to a 1-sentence description. Implementation details belong in project skills/docs, not framework block.\r\n\r\n**4. Historical-justification narrative cut.** \"Why this earns a major version\", \"Migration from v7.9.x\", \"Pre-v8.5 sprints produced...\" paragraphs removed — these documented WHEN the rule changed, not WHAT the rule is.\r\n\r\n**Honest framing:** ~10k chars cut (~6% reduction). Far short of the 50% target proposed earlier — the block is mostly LOAD-BEARING teaching that can't safely be removed without architectural redesign (lazy-loadable extension files, auto-skill activation, etc., for v10.0). The 6% cut is the safe extraction; further reduction needs structural change, not just stripping.\r\n\r\n**v9.8 still doesn't get the block under 40k chars.** That's a v10.0 architectural problem, not a v9.x compaction problem. v9.8 makes the block ~6% smaller; v10.0 will require splitting the block into core + lazy-loaded extensions.\r\n\r\n**Tests:** 40/40 GREEN. All 10 spot-checked load-bearing rules confirmed surviving cuts (CCSG_ARM_SESSION, Phase 1, Gate 18, Three-pillar scoring, fanout, honesty drops, post-cleanup, Try harder, byte-identical to goal, etc.).\r\n\r\n## What's new — v9.7.0: minimal loop-tick prompt (fixes the copy-paste flood regression)\r\n\r\nPre-v9.7 `/sprint-start.md` taught master to copy a ~2,000-char multi-paragraph instruction block VERBATIM into every ScheduleWakeup + CronCreate call. The \"COPY VERBATIM\" rule was load-bearing for the `CCSG_ARM_SESSION` token (prompt-guard requires it), but the rest of the block — WHAT-TO-DO-NOW step list, mode-driven planning protocol, intent-filter walk, CUSTOM-mode arc resolution, AT-END-OF-TURN protocol — accumulated over versions because each new teaching seemed safer to embed than to trust to CLAUDE.md being read.\r\n\r\nResult: every wakeup fire echoed ~2,000 chars as `<command-args>` in the user-facing turn. Operator chat steering only added to it (CURRENT STATE / OPEN OPTIONS observed accumulating to ~2,400 chars across this session) — copy-paste flood every 4-5 minutes.\r\n\r\nv9.7 fixes this:\r\n\r\n**1. `/sprint-start.md` Step 2 — minimal loop prompt (~500 chars).** Required content:\r\n- ARM bash block (preserves `CCSG_ARM_SESSION` token; satisfies prompt-guard)\r\n- One-line directive: \"Continue per CCSG block teaching in CLAUDE.md\"\r\n- End-of-turn protocol (stop check + ScheduleWakeup forward)\r\n\r\nEverything else — WHAT-TO-DO-NOW, mode protocol, MATURITY/USECASE/CUSTOM definitions — moved to the CCSG block teaching, which is auto-loaded from CLAUDE.md at every session start.\r\n\r\n**2. CCSG block — new \"Loop-tick discipline (v9.7 — LOAD-BEARING)\" section.** Codifies:\r\n- The wakeup prompt is sacred; never augment with state\r\n- State lives in files (`.active-scorecard`, `chain-queue.json`, `sprint-open/`, `.next-decision`)\r\n- Operator chat steering becomes a memory rule (S1057 template), not prompt augmentation\r\n- Why the runtime `<<autonomous-loop-dynamic>>` sentinel does NOT apply (sentinel expansion would lose `CCSG_ARM_SESSION`; prompt-guard would then block)\r\n- Recovery for bloated prompts mid-session: `/sprint-stop` + `/sprint-start`\r\n\r\n**3. Note on the runtime sentinel.** The Claude Code harness has a `<<autonomous-loop-dynamic>>` sentinel for `/loop` autonomous mode. It does NOT work for CCSG because runtime expansion drops `CCSG_ARM_SESSION` and prompt-guard blocks the call. CCSG's own minimal prompt (with ARM token preserved) is the equivalent solution.\r\n\r\n**Adoption (existing master sessions running on bloated v8.x-v9.6 prompts):**\r\n- Old loops continue with bloated prompts until `/sprint-stop` + `/sprint-start`\r\n- After re-arm, master picks up the v9.7 minimal prompt template\r\n- For Pulscale specifically: `/sprint-stop` (master alpha), then `/sprint-start <roadmap>` to re-arm with v9.7\r\n\r\n**Tests:** 39/39 GREEN (38 prior + 1 new asserting `/sprint-start.md` Step 2 prompt block is < 800 chars and contains `CCSG_ARM_SESSION`).\r\n\r\n## What's new — v9.6.0: proof depth signals (advisory hook + canonical reference)\r\n\r\nEmpirical analysis across the project's sprint-proof history surfaced a real degradation curve:\r\n\r\n```\r\nEra         CCSG ver  PNGs  Total KB   Pattern\r\n─────────────────────────────────────────────────────────────────\r\nApr 21-25   v7.2.3    7-45  2-7 MB    story-UC-<section>-<persona>-<variant>-<element>.png\r\n                                       multi-format (PNG + JSON + DER + TXT + MP4)\r\n                                       single-spec-many-phases\r\nApr 28+     v8.0+      0-1   5-137 KB  collapse — 1 PNG or text-only\r\nMay 2-3     v9.0-9.5   5-7   1.4-1.8MB partial recovery, no naming convention\r\n```\r\n\r\nThe v8.x rollout doubled CCSG block size (multi-agent foundation, claim discipline, archive cleanliness, 18 gates, three modes, glossary system) and the storyrun depth discipline got crowded out. By v9.5 master was capturing PNGs but applying the depth standard loosely — sub-50KB viewports, no light/dark variance, no storyrun naming, captions that didn't match PNG content.\r\n\r\nv9.6 closes the loop with **advisory mechanical signals** that direct the LLM to self-correct:\r\n\r\n**1. `depth-validation.sh` (NEW Stop hook, ADVISORY).** Scans recently-modified `sprint-proof/sprint-N/` directories and surfaces named gaps:\r\n- Light/dark pair file-size similarity > 95% → \"theme may not be implemented for the captured surface\"\r\n- PNG file size < 50KB on UI routes → \"clipped or sparse?\"\r\n- PNG count vs work-type — storyrun rows expect >= 8 PNGs, UX proof >= 5\r\n- Missing `story-<UC>-<section>-...` filenames when storyrun row cited\r\n- SHA-duplicate PNGs → \"padded duplicate; captures must show different DOM state\"\r\n\r\nAlways exits 0. Output is informational. The LLM reads, decides whether to re-shoot, mark partially-met, file a follow-up sprint, or override with reasoning written into the verify doc.\r\n\r\n**2. CCSG block: canonical proof-shape reference.** New section \"Proof depth — canonical reference\" pointing at `sprint-proof/sprint-554/` as the depth target. Codifies:\r\n- Filename convention: `story-<UC>-<section>-<persona>-<variant>-step-NN-<element|full|clip>.png`\r\n- Multi-format expectation (PNG + JSON + DER + TXT + MP4 + webm)\r\n- Single Playwright spec covering all phases\r\n- Inline-transcription rule for verify docs (read PNG before grading; transcribe representative content)\r\n- Honest-failure framing — PNG capturing a known bug = honest evidence, not failure; mark partially-met + file follow-up, don't false-PASS around the bug\r\n\r\n**3. Design rule codified (saved memory).** All quality dimensions are ADVISORY hooks. BLOCKING is reserved for binary-verifiable mandatory things (sprint file on disk, claim ownership). Quality is multi-dimensional and judgment-dependent — mechanical pass/fail kills the LLM's ability to apply context. Pattern matches v9.5 glossary-lint exactly.\r\n\r\n**Adoption:** `npx claude-sprint-gate` installs the new hook + registers it in the Stop chain (after glossary-lint). Existing global installs need a manual settings.json append OR a re-run of `npx claude-sprint-gate`. Pulscale's CLAUDE.md picks up the v9.6 block at next `/sprint-model-rebuild` or via direct block swap.\r\n\r\n**Tests:** 37/37 GREEN (33 prior + 4 new for v9.6).\r\n\r\n## What's new — v9.5.0: glossary system complete (auto-create + auto-grow + lint hook)\r\n\r\nv9.4 introduced the glossary convention. v9.5 closes it out end-to-end:\r\n\r\n**1. Auto-create on setup.** `npx claude-sprint-gate` now caches `glossary-ccsg-template.md` + `glossary-project-template.md` at `sprint-docs/.ccsg/`. The new `/sprint-setup` Phase 6.6 copies both to repo root if missing — `glossary-ccsg.md` (framework vocabulary, ready-to-use) + `glossary-project.md` (scaffold with empty sections + auto-detected project terms stubbed).\r\n\r\n**2. Auto-grow on /sprint-start.** When the operator arms a session via `/sprint-start`, the agent scans the active scorecard / roadmap docs for project-specific vocabulary (bracketed tags, persona names, caveat IDs, repeated product nouns) and adds stub entries to `glossary-project.md` if not yet defined. Stubs are 1-line placeholders the agent expands as planning surfaces more meaning. Marked with `<!-- stub — fill in -->` so future passes can find and complete them.\r\n\r\n**3. Auto-grow during planning.** New CCSG block teaching: when the agent encounters a project term in a roadmap or sprint plan that isn't in the glossary yet, it ADDS THE STUB THEN-AND-THERE rather than inline-defining (which would re-create the drift trap v9.4 was built to prevent).\r\n\r\n**4. Lint hook (ADVISORY).** `glossary-lint.sh` registered as a Stop hook. Scans recently-modified files in `sprint-open/`, `sprint-closed/`, `docs/`, and project root for `<term>` references. Warns when a term lacks a glossary definition. Excludes content inside ` ``` ` fenced code blocks to avoid false positives. Always exits 0 — pure advisory in v9.5; promotion to BLOCKING is queued for v10.0 once the convention proves out in production.\r\n\r\n**5. Block substitutions** continue from v9.4 — additional sections of the CCSG block migrated to `<term>` references (the `<custom>`-mode section, mode comparisons, etc.). Targeted, not exhaustive — full block migration to `<term>`-only is gradual; first-occurrence definitions are preserved everywhere.\r\n\r\n**6. CCSG block teaching update.** The \"Glossary\" section now reflects auto-grow behavior, references both glossary files (project too, not just framework), and points at the lint hook as a drift signal.\r\n\r\n**Adoption:**\r\n- New projects: `npx claude-sprint-gate` + `/sprint-setup` — both glossary files seeded automatically.\r\n- Existing projects: `/sprint-model-rebuild` pulls v9.5 block; manually copy templates from `~/.claude/glossary-ccsg-template.md` and `~/.claude/glossary-project-template.md` to repo root if not yet present (or re-run `/sprint-setup` to trigger Phase 6.6).\r\n- Pulscale (already adopted): no action — v9.5 block teaching activates on next compaction.\r\n\r\n**Tests:** 32/32 GREEN (29 prior + 3 new for v9.5 lint hook + glossary auto-copy paths).\r\n\r\n## What's new — v9.4.0: glossary convention (`<term>` references for shared vocabulary)\r\n\r\nThe CCSG block in CLAUDE.md is loaded every session start + after every compaction. Measured redundancy: 12 inline re-explanations of Class A/B/C, 14 of mode names, 12 of \"claim file\", 7 of \"strategic intent\" — each carrying 3-5 lines of context. The same vocabulary drift hits projects: tonight's [OPERATOR]-tag doctrine got two corrections in 12 hours because the definition lived in three places (memory, roadmap notes, sprint plans).\r\n\r\nv9.4 introduces a single source of truth for vocabulary:\r\n\r\n- **`glossary-ccsg-template.md`** bundled in the npm package. Copy into your repo root as `glossary-ccsg.md` to adopt. ~30 entries: `<sprint>`, `<plan>`, `<verify>`, `<archive>`, `<arc>`, `<capability>`/`<integration>`/`<witness>` for evidence classes, `<usecase>`/`<maturity>`/`<custom>` for modes, `<claim>`, `<liveness>`, `<heartbeat>`, `<intent>`, `<gate>`, `<row>`, etc.\r\n\r\n- **CCSG block teaching update**: a new \"Glossary (v9.4 — LOAD-BEARING — READ FIRST ON SESSION START)\" section instructs the agent to read `glossary-ccsg.md` on session start. Project-specific vocabulary (your personas, product nouns, tags) lives in `glossary-project.md` — same repo root, project-owned. Whenever a `<term>` (in prose) or `[TAG]` (in roadmap rows) appears, it resolves to a glossary entry. **Doctrine corrections become single-file glossary edits — every doc using `<term>` inherits the new definition automatically.**\r\n\r\n- **Targeted block substitutions**: high-frequency inline definitions in the block template now use `<term>` markup. Example: the canonical mode definition section says \"Three modes (full definitions: `<maturity>`, `<usecase>`, `<custom>` in `glossary-ccsg.md`)\" instead of repeating the def at every reference. The Three-class evidence rule uses `<capability>` / `<integration>` / `<witness>` tags. Targeted, not exhaustive — full block migration to `<term>`-only is queued for v9.5.\r\n\r\n**Tokenizer rationale.** Single common-English words inside `<>` (`<operator>`, `<capability>`) tokenize to ~3 BPE tokens — fragmenting a hyphenated key like `<atomic-temp-rename>` would cost ~7. The `<term>` reference cost is constant; savings come from removing inline re-explanations.\r\n\r\n**Adoption (existing projects).** Run `/sprint-model-rebuild` to pull the v9.4 block into your CLAUDE.md, then copy `glossary-ccsg-template.md` from the framework install into your repo root as `glossary-ccsg.md`. Optionally create `glossary-project.md` for your project-specific vocabulary. Pulscale is the reference implementation as of 2026-05-02.\r\n\r\n**Backwards compatible.** Projects without `glossary-ccsg.md` still work — the block teaching degrades gracefully (no crash, just no term-lookup).\r\n\r\n## What's new — v9.3.0: heartbeat side-channel (mechanical liveness)\r\n\r\nMaster demonstrably skipped the per-tick `update_own_agent({'last_heartbeat': ...})` instruction across long-running sessions — observed: zero `agents/<nickname>.json` mtime updates across 9 sprints / 2h+ in a v9.2 production run, while `claim-guard.sh` fired hundreds of times in the same window. Same pattern as the v9.1 → v9.2 depth-standard episode: when teaching does not move behavior, mechanical enforcement does.\r\n\r\nv9.3 moves heartbeat publication out of agent responsibility entirely:\r\n\r\n- `claim-guard.sh` now refreshes `last_heartbeat` on the per-agent file matching the firing session's `session_id`, on every tool call (Bash/Edit/Write/Read/etc.), regardless of TOOL_NAME or sprint-relatedness.\r\n- The update fires BEFORE the v9.0 solo-mode passthrough so it works in both solo and multi-agent (heartbeat is observability, not enforcement).\r\n- Atomic temp+rename; lookup is by session_id match; failures are silent so the hook chain is never broken.\r\n- Per-tick `update_own_agent({'last_heartbeat': ...})` instruction is REMOVED from CLAUDE.md teaching (no longer agent's job). Other fields (`current_sprint`, `current_phase`) remain agent-managed.\r\n\r\n**Net effect:** `agents/<nickname>.json` mtime now tracks actual session liveness with ≤30s freshness during active work. Multi-signal liveness (heartbeat + git-activity + PID) returns alive on signal 1 instead of needing the git-activity fallback. Worker-spawned sessions checking master see fresh state without a roundtrip.\r\n\r\n**Trade-off documented:** crash-recovery delay grows from \"immediate on first wakeup tick\" to \"≤ 30 min (heartbeat threshold) + hourly cron\" worst case. Acceptable: hourly cron always recovers, and the prior fast-reclaim path only mattered in multi-agent traffic that has not yet been observed.\r\n\r\n## What's new — v9.2.0: Depth Standard tightened with mechanical path triggers\r\n\r\nv9.1 restored the depth standard to CLAUDE.md but master continued shipping thin proof for UI-touching sprints (S1024, S1025, S1031, S1033 — 4 of 7 had ≤3 KB total proof, no PNG, despite touching `cloud/src/app/` route components and visible UI surfaces). The \"MANDATORY full-viewport PNG\" language was too soft — interpreted as \"preferred.\"\r\n\r\nv9.2 sharpens to mechanical, path-based triggers:\r\n\r\n**Path-triggered MANDATORY rules — no judgment call**\r\n\r\nIf the impl commit touches ANY file matching the patterns below, a `.png` (or video) under `sprint-proof/sprint-N/` is **MANDATORY** regardless of sprint size or LOC count:\r\n\r\n```\r\ncloud/src/app/**            → full-viewport PNG with browser chrome\r\ncloud/src/components/**     → PNG showing component rendered in context\r\ncloud/src/lib/uc01/**       → if effect renders in UI listing → PNG of that listing\r\nweb/**                      → PNG with browser chrome\r\nsrc/components/**, src/app/**  → PNG required\r\n**/*.tsx, **/*.jsx (route/page/component)  → PNG required\r\n```\r\n\r\n**Effect-aware trigger** — the rule fires not only on direct UI file changes but on backend changes whose effect surfaces in UI. Editing `cloud/src/lib/uc01/registry-backfill.ts` (backend) to fix a UI listing requires a PNG of that listing, even though no `.tsx` was touched.\r\n\r\n**Light AND dark variants required** when change affects appearance. Two PNGs minimum: `01-feature-light.png` + `02-feature-dark.png`.\r\n\r\n**State coverage required**: empty + populated for lists; pristine + invalid + submitted for forms; working + broken for guards.\r\n\r\n**\"No observable surface\" phrase becomes a HARD STOP rejection.** Writing it means the agent didn't look hard enough. Every change has an effect. The standard now lists 9 effect categories with their proof class:\r\n- Test added → `terminal-transcript` of test exit\r\n- Type fix → `terminal-transcript` of `tsc --noEmit` clean\r\n- Log emitted → `log-line-capture` grep\r\n- DB mutated → `db-query-result` SELECT\r\n- HTTP shape → `curl-response`\r\n- IaC → `terminal-transcript` of `helm template` + `kubectl --dry-run=server`\r\n- CI workflow → `terminal-transcript` of `actionlint`\r\n- Doc-only → `terminal-transcript` of link/path-resolution check\r\n- ...\r\n\r\n**Anti-pattern catalog added** — explicit examples of NOT acceptable proof:\r\n- \"I tested locally\" (claim not proof)\r\n- Element-local crops without browser chrome\r\n- Single-theme PNG when colors changed\r\n- Markdown spec-mapping (restates code)\r\n- Source-diff `.txt` (already in git)\r\n- Tiny `.txt` for UI-touching sprint\r\n\r\n**Audit-replay closure test** — before archiving, ask: \"can a stranger reading only `sprint-proof/sprint-N/` (no verify doc, no code) verify the change works?\" If no, re-archive after capturing missing proof.\r\n\r\n**Sprint size does not relax depth requirements.** A 12-line UI bug fix needs the same screenshot a 200-line feature does. Effort scales to the surface, not to the LOC.\r\n\r\nNo hook changes. Pure teaching tightening — the standard is mechanical so master can apply it without judgment calls about \"small fix vs big feature.\"\r\n\r\n## What's new — v9.1.0: Visual Verification Depth Standard restored to teaching block\r\n\r\nA 13-hour Pulscale dev session at v9.0 revealed that proof output regressed dramatically from pre-v8.5 levels: 4.5× fewer PNGs, 19× less proof data per sprint (~258 KB → ~15 KB average). Master shipped MINIMUM viable proof to satisfy the existence-only proof-gate, not BROAD coverage that proves the work.\r\n\r\n**Root cause traced:** the depth standard (light/dark variants, working/broken states, full-viewport PNGs with browser chrome, 6 proof classes per the v6.7.1 catalog) lived inside `verify-structure-guard.sh`'s error messages — fired only when a narrow Bash command pattern matched. When master used PowerShell / glob / two-step archive flows, the hook didn't fire. The standard disappeared from the model's context. v8.6 replaced the hook's depth check with existence-only. v9 made even existence advisory.\r\n\r\n**Meta-lesson:** teaching that lives only in hook error messages is fragile — it reaches the model only when the hook fires. The CLAUDE.md teaching block is read on every tick + every compaction, so durable standards belong there.\r\n\r\n**v9.1 fix:** Visual Verification Depth Standard added directly to the CLAUDE.md teaching block, with explicit per-work-type minimums:\r\n\r\n- **UI surface changes** — MANDATORY full-viewport PNG with browser chrome (URL bar visible). Light AND dark variants when appearance affected. State coverage (empty / loading / populated / error). Sequence proof for flows.\r\n- **Backend / API changes** — before-and-after db-query-result. curl-response for happy + error paths. log-line-capture when feature emits events.\r\n- **Workflow / journey sprints** — continuous capture (.webm trace OR sequenced PNGs). Full-viewport at every navigation. db/log proof of persisted side-effects.\r\n- **Code-only / non-UI** — test-passing transcript + compile-clean transcript + at least one downstream-effect proof.\r\n\r\n**\"No observable surface\"** is explicitly named as a dead escape. Every change has an effect — find it, capture it.\r\n\r\nNo hook changes. Pure teaching restoration. The standard is back where the model reads it every tick. Hooks stay advisory. Master is expected to produce broad proof from the start, not be enforced into it.\r\n\r\n## What's new — v9.0.0: Autonomy Restoration\r\n\r\nA 13-hour Pulscale dev session at v8.6 revealed that v8.4.6→v8.6.2 cumulatively traded autonomy for predictability. Each patch added a hook to defeat one observed failure; cumulative rigidity stopped master from self-healing. ~7 hours of solo-master downtime across hallucinations, dropouts, proof bypass.\r\n\r\nv9.0 keeps mechanisms that solved real corruption classes and removes the rest. Three moves:\r\n\r\n**1. Solo-mode passthroughs.** `claim-guard.sh` + `sprint-ownership-guard.sh` check agent count: if ≤1 agent registered, race protection is moot — passthrough. Restores pre-v8.4.6 solo-master cadence. Multi-agent mode keeps full discipline.\r\n\r\n**2. Advisory conversion.** `proof-gate-stop-hook.sh` + `archive-cleanliness-guard.sh` flipped from `exit 2` (block) to `exit 0` + stderr warning. Master/operator sees the issue, decides whether to address. No more Q&A turns blocked on historical proof gaps.\r\n\r\n**3. chain-queue mechanism removed.** The static parser requiring `## Sprint queue` markdown table format is gone. CUSTOM mode restored to original contract: drop ANY doc with goals into `/sprint-start custom <path>`, master reads it with Read tool at plan-time, master interprets goals into sprints. No intermediate `chain-queue.json`, no symbol substitution at arm time.\r\n\r\n**Closure verification teaching added.** Master explicitly counts `sprint-closed/sprint-N-*-verify.md` files matching the doc's stated scope BEFORE declaring an arc complete. Mechanical count, not prose interpretation. Prevents \"35/35 closed\" hallucination class without static parser.\r\n\r\n**Kept from v8.5/v8.6:**\r\n- `reclaim_ownership()` — closes 5h+ dropout class\r\n- Per-agent files (`agents/<nickname>.json`) — eliminates registry race\r\n- Multi-signal liveness (heartbeat OR git activity OR PID)\r\n- `safe-push-guard.sh` — force-push prevention (still BLOCKS — corruption class)\r\n- `sprint-first-guard.sh` — sprint file before code edit\r\n- All v8.5 Python helpers\r\n\r\n**Removed/relaxed:**\r\n- chain-queue parser requirement at arm time\r\n- `$ROADMAP_PATHS` placeholder substitution\r\n- \"Master MUST read chain-queue.json first\" teaching\r\n- Blocking behavior on proof-gate + archive-cleanliness (now ADVISE)\r\n- Solo-mode multi-agent overhead (claim-guard + ownership-guard skip when ≤1 agent)\r\n\r\n**Migration from v8.6.x:**\r\n- `chain-queue.json` files become orphan but harmless (master no longer reads them)\r\n- Solo-master flows revert to pre-v8.4.6 simplicity\r\n- Multi-agent flows keep all protections\r\n- No breaking changes; drop-in compat\r\n\r\nThe litmus test for every line of v9 code: *\"would removing this break master's ability to ship in a way master couldn't recover from?\"* Most v8.6.x rules failed that test.\r\n\r\n## What's new — v8.6.1: proof-gate activity gate (UX fix)\r\n\r\nv8.6.0 proof-gate Stop hook fired on EVERY Stop, including non-sprint turns. Real example tonight: user asked an interactive question about a UC, hit Stop, got blocked with the historical S999/S1000/S1002 proof-gap message. Gap is real but enforcing it on every conversation turn breaks normal interactive use.\r\n\r\n**Fix:** activity-gate at the top of the hook. Pass through if either:\r\n- `.sprint-stop-requested` flag exists (sprint mode paused), OR\r\n- `git status --porcelain` shows no pending changes under `sprint-open/`, `sprint-closed/`, `sprint-docs/`, `sprint-proof/` (no sprint work this turn)\r\n\r\nResult: proof-gate enforces only when the current turn actually touched sprint state. Q&A, docs reads, framework chats, etc. pass through silently.\r\n\r\n## What's new — v8.6.0: coherent resilience (chain-queue + ownership reclaim + proof-gate)\r\n\r\nA 13-hour Pulscale dev session at v8.5 revealed three structural failures that v8.5 didn't address: ~7 hours of solo-master downtime across two arc-boundary dropouts, one hallucinated arc closure (\"35/35 done\" — actually 0/35), and two zero-proof sprints (S1000, S1002) that shipped clean. v8.6 closes all three.\r\n\r\n**The three structural fixes:**\r\n\r\n1. **`chain-queue.json`** — flat sprint queue across the chain, built at `/sprint-start` time by parsing each roadmap's `## Sprint queue` section. Sprint numbers automatically renumbered to avoid collision with already-archived sprint numbers. Master walks this file mechanically as the next-sprint authority — does NOT re-read prose roadmaps at arc boundaries (which is where the hallucination class lives). Closure check is mechanical: `all entries.status == \"closed\"`. Cannot be hallucinated from prose interpretation.\r\n\r\n2. **Wakeup-tick ownership reclaim (`reclaim_ownership()`)** — when a wakeup-spawned fresh session arrives and finds `.ccsg-active-session` references a session whose per-agent file is stale (>30 min) OR missing, the new session ATOMICALLY takes over. Closes the long-arc-boundary dropout class — wakeups spawned in fresh sessions auto-recover instead of triggering the kill-switch loop and requiring manual `/sprint-start`.\r\n\r\n3. **Proof-gate Stop hook (`proof-gate-stop-hook.sh`)** — universal scan of `sprint-closed/sprint-N-*-verify.md` files at every Stop. Verifies each `## Visual Verification` section cites at least one `sprint-proof/sprint-N/` path AND that path exists on disk. Replaces the v6.x archive-time check, which was Bash-pattern-fragile (bypassed by PowerShell, glob, two-step archive flows). Universal — fires regardless of how the archive happened. Default cutoff: enforce on the last 30 archived sprints; operator-overridable via `proof-gate-config.json`.\r\n\r\n**Adjacent improvements:**\r\n\r\n- `is_synthetic_session()` — heuristic detection of test session_ids (`test-`, `wrong-`, `someone-`, `sid-`, etc.) so synthetic test fires can route to a separate log namespace. Cleans up signal/noise in production log diagnosis.\r\n- `sync_chain_queue_from_filesystem()` — refreshes `chain-queue.json` statuses from filesystem ground truth on every master tick. Catches manual archive operations that bypass the helper.\r\n- New CLI: `ccsg_agents.py {build-chain-queue, next-chain-sprint, update-chain-status, chain-complete, sync-chain-queue, reclaim-ownership, is-synthetic}`.\r\n- All hooks: `proof-gate-scan.py` separated from the Bash hook for testability and clarity.\r\n- `deploy.sh` updated: installs proof-gate Stop hook + lib/proof-gate-scan.py, registers Stop hook in `settings.json` template.\r\n\r\n**Why v8.6 fixes what v8.5 didn't:**\r\n\r\nv8.5 ironed the multi-agent dispatch path (per-agent files, atomic claims, multi-signal liveness, fanout semantics, teaching presentism). All correct work, but gated on \"when a worker arrives.\" v8.6 fixes the **solo-master flow** that was actually pain-shipping every day: arc transitions stay smooth, hallucinations are mechanically prevented, proof can't be silently bypassed. Solo master at v8.6 = pre-v8.5 cadence + v8.5 multi-agent readiness.\r\n\r\n## What's new — v8.5.3: teaching presentism (strip v-comparison narratives from operational sections)\r\n\r\nUser observation: agents reading the CLAUDE.md teaching block reproduced version-comparison summaries (\"v8.5 changes from v8.4.x\", \"v8.4.4 bug: master pre-claimed every authored goal\", \"Solo master is identical to v8.2.4 peak\") and used that vocabulary to misdiagnose their own bugs as framework version mismatches. Cause: the v8.5.0/v8.5.1/v8.5.2 edits to `claude-md-block-template.md` larded operational sections with migration-context — \"v8.5 SSOT replaces v8.4.x\", \"v8.5 removed (auto-migrated by ...)\", \"the v8.4.x bug fix\", \"anti-patterns observed in production\".\r\n\r\n**v8.5.3 strips the version-narrative.** State-files table, Each-tick discipline, Fanout semantics, and Worker tick sections now read as **present-tense operational rules**. Stable LOAD-BEARING version-stamps on long-established rules (v7.9.4, v8.0, v8.1.x) preserved as audit-trail anchors. History/changelog content stays in this README — agents reading the per-tick teaching no longer recite migration scaffolding.\r\n\r\n**Why this matters operationally:** when an agent fails (e.g., used a non-hex probe nonce), version-narrative teaching trains it to frame the failure as *\"this version doesn't fix that issue, must be a different layer's bug\"* instead of *\"I violated R8.0a, retry per spec.\"* Present-tense teaching closes the misdiagnosis loop.\r\n\r\nNo code/helper/hook changes. Pure teaching cleanup.\r\n\r\n## What's new — v8.5.2: probe-nonce teaching fix (literal hex, no shell expansion)\r\n\r\nv8.5.1 R8.0a teaching example used `${NONCE}` shell substitution. This trained agents to use creative non-hex nonces. Master alpha hit it on a real re-arm at 12:00 local: produced `ccsg-probe-test-arm-$(date +%s)`, which the hook regex `[a-f0-9]{8,64}` rejected (because hooks see the literal command BEFORE bash expansion). No sentinel got written; agent's `ls /tmp/...*.id` matched stale test fixtures from earlier framework-session testing; agent concluded \"install is in test-mode\" — wrong diagnosis, master entered the kill-switch loop.\r\n\r\n**v8.5.2 fixes:**\r\n\r\n- **R8.0a teaching rewritten** — strong `⚠️ READ THIS BEFORE WRITING THE PROBE COMMAND` warning at top: hooks fire BEFORE bash expansion; literal hex required; same exact hex string in both echo and cat paths\r\n- **Probe code template uses literal hex** (`a3f7c2b8d1e9` example) — no `${NONCE}` placeholder for agents to mis-substitute\r\n- **Anti-pattern catalog added** — explicit \"do NOT do these\" list: `$(date +%s)`, `${VAR}`, wildcard `*.id`\r\n- **NEW CLI: `python3 ~/.claude/lib/ccsg_agents.py probe-nonce`** — prints a fresh 12-char hex string (Python `secrets.token_hex(6)`). Agents that prefer dynamic nonces can call this in one Bash, capture stdout, then embed THE EXACT value as a literal in the next Bash probe\r\n\r\n**Verification:** the probe mechanism itself was never broken — integration test 7 (in 25/25 suite) confirms it works. v8.5.2 closes the teaching trap that caused agents to misuse it.\r\n\r\nNo code changes to claim-guard.sh, helper internals, or hook chain. Pure teaching + one new CLI helper.\r\n\r\n## What's new — v8.5.1: CLAUDE.md teaching aligned with v8.5 layout\r\n\r\nv8.5.0 shipped helpers + hooks correctly (25/25 integration tests green) but the `claude-md-block-template.md` teaching block still had operational references to the legacy `agents-registry.json` + `sprint-queue-state.json`. The filesystem was v8.5; master's in-memory mental model was v8.4.x. This would have silently re-introduced the shared-file race the moment a worker armed.\r\n\r\nv8.5.1 fixes the teaching:\r\n\r\n- **State files table** — replaced `agents-registry.json` row with per-agent `agents/<nickname>.json` row; removed `sprint-queue-state.json` row; updated claim file schema to v8.5 `intent`/`status` fields\r\n- **Each-tick discipline** — heartbeat via `update_own_agent()` (atomic temp+rename) instead of registry edit; removed `sprint-queue-state.json` rebuild step; explicit \"solo master is identical to v8.2.4 peak\" assertion\r\n- **NEW section: Fanout semantics (v8.5 §4.1)** — the LOAD-BEARING rule: master claims own-next goal atomically; fanout goals are claim-less for atomic worker pickup. Solo master never writes fanout goals (no worker to consume them). Fanout is purely additive.\r\n- **NEW section: Multi-signal liveness** — worker's R8.0 check uses heartbeat OR git activity OR PID; ANY positive = live. Codified in tick code.\r\n- **Stale-sweep** — walks per-agent files instead of registry; uses `list_agents()` helper\r\n- **Worker tick** — `find_claimable_sprint()` + `try_atomic_claim()` patterns documented\r\n- **Worker bounds** — \"NEVER touches other agents' per-agent files\" replaces \"NEVER mutates sprint-queue-state.json\"\r\n- **Master fanout imperative** — explicit Pattern A (own-next + atomic claim) vs Pattern B (fanout, claim-less)\r\n\r\n**Result:** master's in-memory teaching now matches the v8.5 filesystem layout. When a worker arms, master will write fanout goals correctly (claim-less); worker will atomically claim them; productivity flows. Solo master remains identical to peak v8.2.4 behavior.\r\n\r\nPure teaching alignment — no helper or hook changes. Integration tests still 25/25 GREEN.\r\n\r\n## What's new — v8.5.0: Multi-Agent Coherence (the v8.4.x consolidation)\r\n\r\nv8.4.x shipped 12 patches over 2 weeks chasing multi-agent bugs as they surfaced. The 2026-05-02 production run with master alpha + worker bravo proved that even with all 12 patches applied, **multi-agent dispatch never worked in practice** — bravo claimed 0 sprints in 7 consecutive ticks despite Phase 4 fanout being explicitly designed for worker dispatch.\r\n\r\nv8.5 fixes the root cause: **CCSG had multiple sources of truth for the same concern, drifting under multi-agent operation.** v8.5 enforces single source of truth per concern with atomic operations.\r\n\r\n**The big three fixes:**\r\n\r\n1. **Per-agent registry files** (was: shared `agents-registry.json` with multi-writer race). Each agent owns one file at `sprint-docs/.ccsg/agents/<nickname>.json`. Atomic writes via temp+rename. No race possible.\r\n\r\n2. **Multi-signal liveness** (was: single hardcoded 600s heartbeat threshold). Worker checks 3 signals: registry heartbeat fresh OR git activity by master in last 10 min OR process PID still running. ANY positive = live. Master's natural 600-900s tick cadence no longer causes false-stale refusals.\r\n\r\n3. **Claim release semantics** (was: master claimed every authored goal, never released worker_eligible ones). New schema: `{intent, status, claimed_by, claimed_by_nickname, role, claimed_at}`. Master writes claim atomically with goal-file ONLY for own-next sprint. Fanout goals are claim-less for workers to atomically grab via O_EXCL.\r\n\r\n**Solo master at v8.5 = identical to v8.4.x peak.** Authors one goal at a time, claims it, executes, archives. No worker overhead. Master only adjusts behavior (fanout 1-3 extra goals) when a live worker is detected via the per-agent files.\r\n\r\n**Workers dock on additively.** When armed, they scan `sprint-open/` for claim-less worker_eligible goals and atomically claim via O_EXCL. Master is never blocked. Worker idle = harmless (no log noise, no race contribution).\r\n\r\n**Other v8.5 hygiene:**\r\n- Hook author guide (`docs/CCSG-HOOK-AUTHOR-GUIDE.md`) — 7 rules every hook must follow (root via shared helper, no exit 1, atomic writes, PYTHONIOENCODING, etc.)\r\n- Shared `lib/ccsg-find-root.sh` helper — phantom-immune project-root discovery, every hook agrees\r\n- Archive-cleanliness Stop hook (`archive-cleanliness-guard.sh`) — universal stale-claim detection, replaces fragile v8.4.8 PreToolUse pattern\r\n- `/sprint-cleanup-stale-claims` slash command — one-shot orphan removal\r\n- `sprint-queue-state.json` removed entirely (was dead weight, never updated)\r\n- All hooks audited: `grep -rn \"exit 1\" plugin/hooks/*.sh` returns empty\r\n\r\n**Migration from v8.4.x is automatic.** First master tick post-upgrade splits the legacy registry, deletes queue-state, releases author-claims on worker_eligible goals, sweeps stale claims for archived sprints, normalizes remaining claims to v8.5 schema. **Idempotent** — safe to re-run; production-mirror tested against captured Pulscale state (14 stale claims swept, 1 active claim preserved, no data loss).\r\n\r\n**Test suite:** `bash tests/v8-5-integration-test.sh` — 25/25 GREEN covering 7 scenarios (root discovery, registry split, multi-signal liveness, atomic claim race, migration, archive cleanliness, claim-guard probe).\r\n\r\n**Reference docs:**\r\n- `docs/v8-5-design-evidence.md` — 13 empirical observations from the 2026-05-02 multi-agent night that motivated v8.5\r\n- `docs/v8-5-spec.md` — full design spec, 14 sections including SSOT invariant, architecture changes, file format, migration plan, success criteria\r\n\r\n## What's new — v8.4.12: claim-guard project root via git rev-parse (kill phantom shadow)\r\n\r\nMaster alpha hit a wall on Pulscale S1009 within minutes of v8.4.11 shipping. Symptom: claim-guard kept blocking master's writes despite a valid claim file at `/sprint-docs/.ccsg/claims/sprint-S1009.lock`. Diagnosis: master CD'd into `cloud/` subdir, and a phantom `cloud/sprint-docs/` directory (left over from earlier work) shadowed the real one. claim-guard's project-root discovery walked **up** from CWD looking for *any* `sprint-docs/` — found the phantom first, looked for the claim **inside the phantom** at `cloud/sprint-docs/.ccsg/claims/sprint-S1009.lock`, found nothing, blocked.\r\n\r\n**The bug was inconsistency, not the phantom.** `sprint-first-guard.sh` has used `git rev-parse --show-toplevel` since v6 (correct). `claim-guard.sh` (v8.4.6 onward) used the legacy walk-up. Two different project-root algorithms in the same hook chain.\r\n\r\n**v8.4.12 fix:** claim-guard prefers `git rev-parse --show-toplevel` (canonical project root). Falls back to walk-up only if not in a git repo. Aligns with sprint-first-guard.sh. Verified against master's exact failing scenario — PASS.\r\n\r\nThis is the kind of inconsistency the v8.5 consolidation pass will sweep more broadly: **all hooks in the chain should agree on what the project root is.** v8.4.12 fixes the most acute symptom; v8.5 will codify the rule.\r\n\r\n## What's new — v8.4.11: worker session_id probe (closes the v8.4.10 second-order gap)\r\n\r\nAfter v8.4.10 fixed gate-18 to be claim-aware, worker mode was *still* broken on Windows. Root cause: `$CLAUDE_SESSION_ID` is **unset** in current Claude Code agent bash environments. The R8.0a fallback chain (`CLAUDE_SESSION_ID → uuidgen → python uuid`) silently landed on `uuidgen`, generating a **fake** WSID. Hooks see the *real* session_id (via stdin JSON), so claim files keyed to the fake WSID never matched — every worker write blocked at gate-18 + claim-guard regardless of v8.4.10's claim-aware passthrough.\r\n\r\n**v8.4.11 fix: probe-nonce session_id discovery.**\r\n\r\n1. **`claim-guard.sh`** gains a probe responder. When a Bash command literally contains `ccsg-probe-<nonce>`, the hook reads `session_id` from its stdin JSON and writes the full session_id to `${TMPDIR:-/tmp}/ccsg-session-by-nonce-<nonce>.id`. No-op for all other commands. Runs before all other gates (no project / claim-state dependency).\r\n\r\n2. **`sprint-start.md § R8.0a`** rewrite. Worker arm picks a unique 12-16-char hex nonce, runs ONE Bash tool call whose command literally contains `ccsg-probe-<nonce>`, then reads the sentinel. Hook is PreToolUse, so the sentinel exists before the same Bash call's main command runs. No race, no thrash. Falls back loud (with diagnostic instructions) if sentinel doesn't appear.\r\n\r\nThe session_id from the sentinel IS the real Claude Code session_id — the same value gate-18 + claim-guard compare against. Worker claim files now key correctly; gate-18 Gate 5 (v8.4.10 claim-aware passthrough) can finally do its job.\r\n\r\n**No new ownership model, no new hook, no new file.** ~30-line patch across two existing files — fits the v8.4.x discovery cadence rather than waiting for v8.5 consolidation.\r\n\r\n## What's new — v8.4.10: gate-18 (sprint-ownership-guard) is now claim-aware\r\n\r\nThe hook hierarchy gap from the v8.4.6/7/8/9 push: gate-18 (`sprint-ownership-guard.sh`) was at v7.3.3 — pre-multi-agent — and blocked ALL non-owner writes to sprint-state regardless of claim files. Worker bravo claimed S1001 successfully (claim-guard verified), then halted at gate-18 because the worker is not the `.ccsg-active-session` owner. Master holds that ownership; the worker has its own claim file. Two ownership models that didn't talk to each other.\r\n\r\n**v8.4.10 adds Gate 5 to sprint-ownership-guard.sh — claim-aware passthrough:**\r\n\r\n```\r\nFor each Edit/Write/MultiEdit hook fire:\r\n  Gate 1: not a CCSG project → passthrough (existing)\r\n  Gate 2: no armed session → passthrough (existing)\r\n  Gate 3: this session IS .ccsg-active-session owner → passthrough (existing)\r\n  Gate 4: no file path → passthrough (existing)\r\n  Gate 5 (NEW): extract sprint-N from path; if claims/sprint-S<N>.lock owned by THIS session → passthrough\r\n                OR if writing OWN claim file (first-claim attempt, claim file doesn't yet exist) → passthrough\r\n  Gate 6: namespace match (sprint-open/, sprint-closed/, etc.) → BLOCK (existing)\r\n```\r\n\r\nVerified by 4-case test suite: bravo first-claim write → PASS, bravo verify-file write in sibling worktree → PASS, wrong-session write to claimed sprint → BLOCK, master alpha write → PASS.\r\n\r\nThis closes the multi-agent enforcement series. The hook hierarchy now coherent:\r\n- `.ccsg-active-session` = project-level master ownership (gate-18 Gate 3)\r\n- `claims/sprint-S<N>.lock` = sprint-level worker ownership (gate-18 Gate 5 + claim-guard)\r\n- Master always passes Gate 3; worker passes Gate 5 for its own claimed sprints; everyone else blocked\r\n\r\n**v8.5 consolidation planned:** v8.4.x has been a discovery-driven patch series. v8.5 will be a coherent consolidation pass — single filename convention, single ownership-model documentation, hook-hierarchy spec, no more bandaid patches.\r\n\r\n## What's new — v8.4.9: claim-guard regex hotfix (filename convention without `S` prefix)\r\n\r\n**v8.4.6/7/8 had a silent bug.** The claim-guard hook regex looked for `sprint-S<N>` in goal-file paths, but Pulscale's actual filename convention is `sprint-<N>-*.md` (no `S` prefix on file paths; the `S` is only in claim file names like `claims/sprint-S<N>.lock`). Result: **claim-guard never fired on real production sprint files** since v8.4.6.\r\n\r\nDiscovered when master alpha wrote `sprint-open/sprint-1001-maya-uc01-server-state-audit.md` for v8.4.4 look-ahead authoring without first writing a claim file. Hook should have blocked. It didn't. Inspection: `grep -oE 'sprint-S[0-9]+'` against `sprint-1001-...` returns nothing → SPRINT_NUM empty → hook passthrough.\r\n\r\n**The reason discipline still appeared to hold:** master and bravo were following CLAUDE.md teaching (\"write claim file first\") because the teaching DOCUMENTS the hook's existence. Self-fulfilling discipline. But the hook was dead code.\r\n\r\n**v8.4.9 hotfix:** make the `S` optional in all regex patterns:\r\n- `sprint-S[0-9]+` → `sprint-S?[0-9]+`\r\n- Archive case glob `sprint-open/sprint-S*` → `sprint-open/sprint-*`\r\n\r\n5 regex changes per hook file. Verified by 5-case test suite: WRITE without claim → BLOCK ✓, WRITE with own claim → PASS ✓, WRITE with wrong session → BLOCK ✓, ARCHIVE without rm → BLOCK ✓, ARCHIVE with rm → PASS ✓.\r\n\r\n**Hook now actually backs up the discipline.** The race-protection layer that should have been live since v8.4.6 is finally enforcing.\r\n\r\n## Real fix planned for next minor (v8.5)\r\n\r\nThe hotfix preserves both filename conventions (`sprint-<N>` and `sprint-S<N>`). For the next minor, the framework should choose ONE canonical convention and migrate. Options:\r\n\r\n1. **Canonicalize to `sprint-S<N>` everywhere** (filenames + claim files + commit messages). Breaking change for existing CCSG-managed projects; requires migration script.\r\n2. **Canonicalize to `sprint-<N>`** (filenames + claim files + commit messages). Less breaking; aligns with Pulscale's existing convention. Requires updating template + teaching.\r\n3. **Keep both, ship a manifest-based detection** instead of regex. More robust but more complex.\r\n\r\nDecision deferred to v8.5 design pass. v8.4.9 keeps the framework backward-compatible with both.\r\n\r\n## What's new — v8.4.8: claim-file cleanup at archive (closes the last v8.4.x discipline gap)\r\n\r\n`claim-guard.sh` now enforces claim-file deletion at archive time. When archive detected (command contains `sprint-open/sprint-S<N>` AND `sprint-closed/`): if `claims/sprint-S<N>.lock` exists AND command does NOT include `rm <claim>` → BLOCK. Two valid patterns:\r\n\r\n```bash\r\n# Pattern A: separate\r\nrm sprint-docs/.ccsg/claims/sprint-S<N>.lock\r\ngit mv sprint-open/sprint-S<N>-*.md sprint-closed/\r\n\r\n# Pattern B: combined (recommended)\r\nrm sprint-docs/.ccsg/claims/sprint-S<N>.lock && git mv sprint-open/sprint-S<N>-*.md sprint-closed/\r\n```\r\n\r\nImplementation: literal substring matching via bash `case` (the v8.4.6 attempt's regex failed silently inside the hook for environment reasons; v8.4.8 sidesteps via portable substring match).\r\n\r\n`Step M-Archive` teaching added to master tick CLAUDE.md.\r\n\r\n**Multi-agent enforcement series complete** — every isolation invariant now has hook-level mechanical enforcement:\r\n- v8.3.1 `safe-push-guard.sh` (force-push block + pull-rebase)\r\n- v8.4.3 `loop-detect.sh` role-aware (CCSG_ARM_WORKER token)\r\n- v8.4.6/v8.4.7 `claim-guard.sh` ownership + Windows path\r\n- **v8.4.8 `claim-guard.sh` archive cleanup**\r\n\r\n## What's new — v8.4.7: claim-guard.sh Windows-path hotfix\r\n\r\nPure hotfix to v8.4.6. The Python `open(mingw-path)` pattern in `claim-guard.sh` failed silently on Windows git-bash (Python on Windows doesn't resolve `/c/Development/...`-style paths; FileNotFoundError suppressed by `2>/dev/null`; CLAIMED_BY came back empty; hook misreported \"Claim owner: \" on master's retry).\r\n\r\nFix: pipe file content via stdin (`cat $CLAIM_FILE | python3 stdin`) — no path ever passes to Python. Works on both Linux and Windows. Memory note saved for future hook authoring: NEVER use python `open(mingw-path)` in CCSG hooks.\r\n\r\n## What's new — v8.4.6: claim-guard hook (race protection at the file-system level)\r\n\r\n**Race condition observed in production v8.4.5:** master worked solo on S997 from 23:22 to 00:04 without writing `claims/sprint-S997.lock`. User armed bravo at 00:04. Bravo's first tick scanned sprint-open/, saw S997 unclaimed (no claim file), saw master's registry as `current_sprint: None` (stale), correctly claimed via O_EXCL. **Both agents ran Playwright concurrently on S997** — racing test artifacts, port collisions, dual Mongo seeds.\r\n\r\n**Root cause:** v8.3.0+ teaching said master MUST write claim files; nothing enforced it. Master's solo-mode lapse left no claim files for in-flight work. When worker armed, no signal said \"this is mine.\"\r\n\r\n**v8.4.6 fix — `claim-guard.sh` PreToolUse hook (Edit/Write/MultiEdit/Bash matchers):**\r\n\r\nMechanically blocks sprint-S<N> file edits + commits referencing S<N> when:\r\n- No `claims/sprint-S<N>.lock` exists, OR\r\n- Claim file is owned by a different session\r\n\r\n**The corrected gate (NOT \"live workers exist\") is \"v8.3.0+ project signal\":** sprint-docs/.ccsg/ directory exists. In v8.3.0+ projects, claim discipline is mandatory ALWAYS — even in solo mode. Why: solo-mode lapse is the trap that creates the race when transitioning to multi-agent. Solution: claim files always exist for in-flight work; worker arming finds them and skips correctly.\r\n\r\n**Master tick gains Step M-Claim** (CLAUDE.md teaching):\r\n- Before any sprint-S<N> file edit OR commit referencing S<N>: master MUST write `claims/sprint-S<N>.lock` with own session_id + role:master\r\n- Even when no worker is registered. Even in solo mode. Always.\r\n- The hook is the safety net; the discipline is the design.\r\n\r\n**Hook behavior matrix:**\r\n\r\n| Tool | Match | Behavior |\r\n|---|---|---|\r\n| Edit/Write/MultiEdit | path matches `sprint-{open,closed,blocked}/sprint-S<N>-*` | require claim file owned by self; else BLOCK |\r\n| Bash | command contains `sprint-{open,closed,blocked}/sprint-S<N>-*` path | same |\r\n| Bash | command contains `git commit` with `S<N>:` or `Sprint <N>:` in message | same |\r\n| All others | no sprint-S<N> reference | passthrough |\r\n| Pre-v8.3.0 projects | no sprint-docs/.ccsg/ directory | passthrough (legacy compa","readmeFilename":"README.md"}