Skip to content

[Extension]: Add SpecAssay Check (update to 0.5.1) #4649

Description

@rdryfoos

Extension ID

specassay-check

Extension Name

SpecAssay Check

Version

0.5.1

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.5.1/specassay-check-0.5.1.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)

- bash - required
- python3 (>=3.8) - required

Number of Commands

5

Number of Hooks (optional)

1

Tags

traceability, gate, ci, governance, sdd

Key Features

  • Gate 2 refuses a silent gap: an acceptance criterion with no test and no open tracked-debt task fails the build rather than passing quietly
  • Emits trace-manifest.json (v4) and trace-manifest.v5beta.json, one row per registry ID with its status and the evidence behind it
  • Five statuses, including retired for an intent withdrawn on purpose, so a withdrawal is never mistaken for a gap
  • Mints durable IDs at intent and refuses an ID the project's own configured grammar would reject
  • Coverage matrix and portfolio snapshot for CI and for cold readers

Testing Checklist

  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project

Submission Requirements

  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)

Testing Details

This updates the existing catalog entry from 0.4.12 to 0.5.1. It supersedes
issue #4252, filed at 0.4.12 and merged as catalog PR #4254. Neither v0.4.13
nor v0.5.0 was ever filed, so this one carries three releases of change.

Tested on: Linux, Spec Kit 1.0.5, Python 3.11.15, on 2026-09-20.
Previously captured on Spec Kit 1.0.4 at release time, 2026-09-17.
The >=0.14.0 floor was exercised at v0.5.1 on 2026-09-17: the bundle installs
and the Gate runs on 0.14.0, though that version does not scaffold the settings
file, so the Gate reports config: MISSING and continues on defaults.

sha256 of the submitted archive, computed from the v0.5.1 tag on 2026-09-20:

$ curl -fsSL -O https://github.com/rdryfoos/specassay/releases/download/v0.5.1/specassay-check-0.5.1.zip
$ sha256sum specassay-check-0.5.1.zip
874728251c850e84d71f7a94dbdc326073703a8b408690d87a62b68d43dc6eff specassay-check-0.5.1.zip

Test scenarios, in a clean project (specify init . --here --force --non-interactive --integration claude):

  1. Installed direct from the download URL:
    $ specify extension add specassay-check --from
    ✓ installed; specify extension list reports SpecAssay Check (v0.5.1)
  2. Ran the Gate on an empty project. It refuses and names the fix:
    FAIL: registry not found: PRD.md
  3. Ran the Gate on an empty-but-present registry. Exit 0, and it prints the
    on-ramp naming both mint routes.
  4. Minted a first ID:
    $ bash .../mint-id.sh AC LOGIN --append "Given a wrong password, ..."
    AC-LOGIN-10
  5. Ran the Gate again. It refuses honestly, which is the intended first red:
    FAIL: registry ID missing from specs: AC-LOGIN-10
    FAIL: registry ID missing from tasks: AC-LOGIN-10
    FAIL: silent gap: AC-LOGIN-10 has no test and no open tracked-debt task
    exit 1
  6. Added a spec line and one open task carrying the ID, the documented way to
    clear it:
    SpecAssay Check (Gate 2): OK (1 registry IDs)
    exit 0, and trace-manifest.json reports AC-LOGIN-10 as tracked-debt.

The extension is also run against its own repository on every pull request,
where it currently reports OK on 71 registry IDs.

Example Usage

# Install from the release archive
specify extension add specassay-check --from https://github.com/rdryfoos/specassay/releases/download/v0.5.1/specassay-check-0.5.1.zip

# Mint a durable ID at intent
/speckit.specassay-check.mint AC LOGIN "Given a wrong password, when the user signs in, then the form shows an error and no session starts."

# Run Gate 2; a silent gap fails the build
/speckit.specassay-check.gate

Proposed Catalog Entry

{
  "specassay-check": {
    "name": "SpecAssay Check",
    "id": "specassay-check",
    "description": "Gate 2 refuses silent gaps and emits a trace-manifest (`trace-manifest.json`).",
    "author": "Rik Dryfoos",
    "version": "0.5.1",
    "download_url": "https://github.com/rdryfoos/specassay/releases/download/v0.5.1/specassay-check-0.5.1.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",
    "changelog": "https://github.com/rdryfoos/specassay/blob/main/CHANGELOG.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": 5,
      "hooks": 1
    },
    "tags": ["traceability", "gate", "ci", "governance", "sdd"],
    "verified": false,
    "downloads": 0,
    "stars": 0,
    "created_at": "2026-08-13T00:00:00Z",
    "updated_at": "2026-09-20T00:00:00Z"
  }
}

Additional Context

Update to an existing entry, not a new extension.

provides.commands moves from 2 to 5. It has been stale since v0.4.13: dig,
matrix and portfolio shipped after the 0.4.12 entry was written. The five
are speckit.specassay-check.gate, .mint, .dig, .matrix and .portfolio.

Companion issues in this submission: the preset (updates #4253) and the bundle
(updates #4255). The bundle pins both component versions, so all three need to
land together or specify bundle install cannot resolve.

Activity

  1. rdryfoos commented on Sep 20, 2026

    @rdryfoos
    Author

    Correction from the submitter: the component manifest inside the zip declares speckit_version ">=0.14.0,<2.0.0". The catalog entry in this issue says ">=0.14.0", which is wider than what ships. Please take the manifest's range as authoritative; the catalog JSON will be aligned in the next release.

  2. added
    triage-can-waitVerdict: valid and in-scope but deprioritized; held behind the evidence gate
    on Sep 21, 2026
  3. github-actions commented on Sep 21, 2026

    @github-actions
    Contributor

    cc @github/spec-kit-maintainers — new catalog submission for review.

  4. github-actions commented on Sep 21, 2026

    @github-actions
    Contributor

    Extension submission validation failed

    The submission passed the format, repository, release, manifest, README, LICENSE, tag-pinning, and checklist checks:

    • Extension ID specassay-check matches the required lowercase-hyphen format.
    • Version 0.5.1 is valid semver.
    • https://github.com/rdryfoos/specassay is publicly accessible and contains extensions/specassay-check/extension.yml, README.md, and the repository LICENSE file.
    • The download URL is repository-owned and pinned to v0.5.1; the v0.5.1 GitHub release exists.
    • All required Testing Checklist and Submission Requirements checkboxes are checked.

    Failed check:

    • Download archive accessibility: fetching https://github.com/rdryfoos/specassay/releases/download/v0.5.1/specassay-check-0.5.1.zip was blocked by the validation environment before an HTTP 200 response could be obtained. Consequently, the archive HTTP check and submitted SHA-256 (874728251c850e84d71f7a94dbdc326073703a8b408690d87a62b68d43dc6eff) could not be verified.

    Please ensure the pinned release asset is publicly downloadable and resubmit the issue once it can be fetched successfully.

    Generated by 🧩 Add Community Extension from Issue Submission for #4649 · copilot · gpt52codex · 1.82 AIC · ⌖ 6.69 AIC · ⊞ 23K · ◷

  5. github-actions commented on Sep 22, 2026

    @github-actions
    Contributor

    Validation failed for this extension submission; no catalog or documentation changes were made.

    Failed check:

    Passed checks:

    • Issue title starts with [Extension]:.
    • Extension ID specassay-check matches ^[a-z][a-z0-9-]*$.
    • Version 0.5.1 matches X.Y.Z semver.
    • Repository https://github.com/rdryfoos/specassay is publicly accessible and contains extension.yml, README.md, and LICENSE.
    • Download URL belongs to the submitted repository, uses a release tag-pinned .zip pattern, and its v0.5.1 tag matches the submitted version.
    • GitHub release v0.5.1 exists.
    • All required Testing Checklist and Submission Requirements checkboxes are checked.

    Please provide a workflow-accessible archive URL or resubmit after the archive can be fetched and its checksum verified.

    Generated by 🧩 Add Community Extension from Issue Submission for #4649 · copilot · gpt52codex · 2.16 AIC · ⌖ 7.36 AIC · ⊞ 23K · ◷

  6. rdryfoos commented on Sep 23, 2026

    @rdryfoos
    Author

    Superseded by #4690, filed as a clean issue after the validator-fetch failures on runs 35620079292 and 35732690224.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions