### Extension ID specassay-check ### Extension Name SpecAssay Check ### Version 0.4.12 ### Description Gate 2 refuses silent gaps and emits a trace-manifest (`trace-manifest.json`). ### Author Rik Dryfoos ### Repository URL https://github.com/rdryfoos/specassay ### Download URL https://github.com/rdryfoos/specassay/releases/download/v0.4.12/specassay-check-0.4.12.zip ** ### License MIT ### Homepage (optional) https://www.specassay.com ### Documentation URL (optional) https://github.com/rdryfoos/specassay/blob/main/extensions/specassay-check/README.md ### Changelog URL (optional) https://github.com/rdryfoos/specassay/blob/main/CHANGELOG.md ### Required Spec Kit Version >=0.14.0 ### Required Tools (optional) ```markdown - bash - required - python3 (>=3.8) - required ``` ### Number of Commands 2 ### Number of Hooks (optional) 1 ### Tags traceability, gate, ci, governance, sdd ### Key Features - Refuses silent acceptance-criterion gaps, invented IDs, and registry/specs/tasks drift - Emits trace-manifest.json on every run — including refusals — so the evidence trail survives failure - Honest debt (tracked-debt) and planned work (backlog) pass and stay visible - Thread Report: one CI briefing per PR — what moved on the thread, the touched story end to end, and changed files that sit off the thread - Restated-intent detection with graded re-confirm hints - Optional human-tick gates (offthread_ack / intent_ack) enforced via a specassay/ack commit status - New in 0.4.x: uncovered-proof (Rule 4a) catches a real, passing, named test whose ID never appears in an @covers line — report-only by default, with a documented per-project ratchet to make it blocking; orphan-covers/orphan-test are now domain-scoped so a doc quoting another project's real @covers line as an example doesn't misread as a local orphan; malformed src_globs/test_globs config now refuses loudly instead of silently matching nothing ### Testing Checklist - [x] Extension installs successfully via download URL - [x] All commands execute without errors - [x] Documentation is complete and accurate - [x] No security vulnerabilities identified - [x] Tested on at least one real project ### Submission Requirements - [x] Valid `extension.yml` manifest included - [x] README.md with installation and usage instructions - [x] LICENSE file included - [x] GitHub release created with version tag - [x] All command files exist and are properly formatted - [x] Extension ID follows naming conventions (lowercase-with-hyphens) ### Testing Details **Tested on:** - macOS, Spec Kit CLI `specify 0.15.3.dev0` **Test project:** - A clean `specify init` project (install-path evidence, including a sha256 digest check against the published release asset: https://github.com/rdryfoos/specassay/blob/main/docs/submission/test-evidence.md) - HomesFlow, a real example app (https://github.com/rdryfoos/HomesFlow) — real registry, ~81-row trace-manifest **Test scenarios:** 1. Added the hosted install-allowed catalogs and installed by ID in a clean project; verified the installed extension reports v0.4.12 2. Verified the downloaded release zip's sha256 matches the digest GitHub's API reports for the same release asset 3. Ran /speckit.specassay-check.gate on a green project (passes, emits manifest) 4. Ran it on a broken thread (refuses, still emits manifest) 5. Live CI demos on the repository: PR #1 (green Thread Report), PR #2 (refusal), PR #4 and #5 (restated intent) ### Example Usage ```markdown # Install extension specify extension add specassay-check --from https://github.com/rdryfoos/specassay/releases/download/v0.4.12/specassay-check-0.4.12.zip # Use the command (in your integration, e.g. Claude) /speckit.specassay-check.gate # → refuses silent gaps; writes trace-manifest.json either way ``` ### Proposed Catalog Entry ```json { "specassay-check": { "name": "SpecAssay Check", "id": "specassay-check", "version": "0.4.12", "description": "Gate 2 refuses silent gaps and emits a trace-manifest (`trace-manifest.json`).", "author": "Rik Dryfoos", "download_url": "https://github.com/rdryfoos/specassay/releases/download/v0.4.12/specassay-check-0.4.12.zip", "repository": "https://github.com/rdryfoos/specassay", "homepage": "https://www.specassay.com", "documentation": "https://github.com/rdryfoos/specassay/blob/main/extensions/specassay-check/README.md", "license": "MIT", "category": "visibility", "effect": "read-write", "requires": { "speckit_version": ">=0.14.0", "tools": [ { "name": "bash", "required": true }, { "name": "python3", "version": ">=3.8", "required": true } ] }, "provides": { "commands": 2, "hooks": 1 }, "tags": ["traceability", "gate", "ci", "governance", "sdd"], "verified": false } } ``` ### Additional Context Updates #4057 (closed, merged as #4113 at v0.3.4). The emitted trace-manifest is deliberately vendor-neutral (`format` + `schemaVersion` are the contract); a v5 interop revision is in beta with a second emitter (docs/trace-manifest-schema.md). The walkthrough site (https://www.specassay.com) shows the Gate, the Thread Report, and the intent-PR behavior on live PRs in this repository. Pairs with the `specassay` preset, which installs the durable-ID contract the Gate enforces.