Skip to content

fix(catalog): repoint speckit-inventory and inventory-alignment at live release artifacts - #4449

Open
Yash-Chindam wants to merge 1 commit into
github:mainfrom
Yash-Chindam:fix/restore-inventory-catalog-artifacts
Open

fix(catalog): repoint speckit-inventory and inventory-alignment at live release artifacts#4449
Yash-Chindam wants to merge 1 commit into
github:mainfrom
Yash-Chindam:fix/restore-inventory-catalog-artifacts

Conversation

@Yash-Chindam

Copy link
Copy Markdown
Contributor

Problem

Both community entries I submitted in #4226 and #4227 point at release assets under a repository that no longer exists:

"download_url": "https://github.com/Yash-Chindam/spec-kit-inventory-alignment/releases/download/v0.1.0/speckit-inventory.zip"

repository, homepage, documentation, changelog, and download_url all 404. Installation fails at the download, before verify_archive_sha256 is ever reached:

specify extension add speckit-inventory
specify preset add inventory-alignment

This is my fault, and I'm sorry it reached the catalog in that state.

Fix

I've restored the source in a standalone repository and cut v0.1.1. The v0.1.0 archives are unrecoverable — nothing reproduces their pinned digests — so v0.1.1 supersedes them and the pinned SHA-256 values change with it.

Entry Was Now
speckit-inventory v0.1.0, 9ebf004e… v0.1.1, df735fe7…
inventory-alignment v0.1.0, 8ea62813… v0.1.1, 227db99a…

Release artifacts are built with sorted members, a fixed timestamp, and two canonical permission modes — mirroring bundler/services/packager.py — and .gitattributes pins eol=lf so a Windows checkout cannot yield a different digest. A clean clone reproduces both digests byte for byte.

One correctness fix beyond the URLs

The preset entry declares requires.extensions, but claimed speckit_version: ">=0.9.0". That floor is wrong: requires.extensions first shipped in v1.0.4 (#4250) — v1.0.3 has no _validate_requires_extensions, v1.0.4 does. A v0.9 CLI would install the preset and ignore the dependency it declares, which is the exact silent-no-op failure #4250 set out to prevent. Raised to >=1.0.4.

Verification

  • Both download_urls return HTTP 200, and the downloaded bytes hash to the pinned sha256 (checked against the live URLs, not local files).
  • CatalogEntry.from_dict() parses both entries.
  • tests/contract/test_catalog_schema.py45 passed.
  • Both bundle manifests validate against PresetManifest / ExtensionManifest, and the extension's own suite passes (9 tests).

Diff is 9 lines across the two catalogs; no other entry is touched.

🤖 Generated with Claude Code

…ve artifacts

Both entries pointed at release assets under a repository that no longer
existed, so `specify extension add speckit-inventory` and
`specify preset add inventory-alignment` failed for everyone: the download
404s before sha256 verification is ever reached.

The v0.1.0 archives are unrecoverable, so they are superseded by v0.1.1 from
a restored source repository and the pinned digests change with them.

Also raises the preset's speckit_version floor from >=0.9.0 to >=1.0.4. The
old floor was wrong once the entry declared requires.extensions: that field
first shipped in v1.0.4 (github#4250), so a v0.9 CLI would install the preset while
silently ignoring the dependency it declares.

Verified: both download_urls return 200 and their SHA-256 matches the pinned
value, CatalogEntry parses both entries, and tests/contract/test_catalog_schema.py
passes (45 tests).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Yash-Chindam
Yash-Chindam requested a review from mnriem as a code owner September 5, 2026 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant