Commit e91e88a
authored
release: SpecBridge v1.0.0 (#12)
* feat(core): add unified state-migration framework and hash-bound recovery engine
Generic, schema-agnostic plan/apply/report/verify migration engine plus a
recovery engine restricted to safe action kinds inside .specbridge/. Plans
are hash-bound to exact file bytes; applies are atomic with backups and
rollback; recovery preserves originals in quarantine and appends to an
append-only log. Nothing runs automatically; CLI wiring follows.
* chore(release): bump every package and manifest to 1.0.0
Root, all workspace packages, CLI/MCP/extension-SDK/Action version
constants, plugin and marketplace manifests. Template and extension
compatibility ranges widen from <1.0.0 to <2.0.0 (scaffolds now emit
>=1.0.0 <2.0.0); built-in packs, registry index/entries, and galleries
regenerated; version-sensitive tests updated. Plugin and Action dist
rebuilds follow once the new CLI commands land.
* docs: add v1.0.0 stability contracts, threat model, and community files
docs/stability/{public-contracts,versioning-policy}.md inventory every
public contract with per-area stability promises. docs/security/
threat-model.md consolidates the per-subsystem threat models (29 threats
with mitigations verified against source) and states explicit non-claims.
Adds SECURITY/SUPPORT/CONTRIBUTING/CODE_OF_CONDUCT, issue forms, PR
template, release checklist, and the temporary v1.0.0 resume document.
* feat(release): add public-contract snapshots, MCP doc generation, and security scan
Machine-readable contract snapshots under contracts/ (CLI tree, exit codes,
report IDs, schema versions, verification rules, runner/template/extension
contracts, MCP names, Skill names, Action interface) enforced by
pnpm check:public-contracts. Adds pnpm generate/check:mcp-docs (tool-reference
generated from the authoritative registry) and pnpm check:security
(deterministic scan for credentials, bypass strings, and bundle paths).
Wires the new checks plus example validation into CI and adds a tag-driven,
draft-first release workflow with a workflow_dispatch dry-run mode.
* feat(cli): add migrate, state validate/recover, and setup commands
Wires the migration framework and recovery engine into the CLI:
specbridge migrate status|plan|apply|verify (--dry-run/--json/--backup-directory/--target)
specbridge state validate (read-only; per-family diagnosis)
specbridge state recover --plan|--apply <id> (acknowledgement-token gated)
specbridge doctor --repair-plan (read-only recovery preview)
specbridge setup (preview-first initialization)
config migrate becomes a deprecated alias (stderr notice; removal >= v2.0.0).
Adds the state-family registry, corruption fixtures, and 66 tests covering
migration idempotency/atomicity/rollback, read-only validation, hash-bound
recovery, quarantine preservation, and the never-invent-approvals guarantees.
* test(perf): add large-repository performance suite and budgets
500-spec / 10,000-task deterministic fixtures plus 12 gated measurements
(workspace detection, spec discovery, drift verification, template/extension/
registry search, affected-spec detection, MCP pagination, report generation,
peak memory) with generous CI budgets and stable 'perf:' benchmark logs.
docs/performance.md records methodology, indicative numbers, and two honest
findings (single-spec read does full discovery; MCP spec_list analyzes all
specs per page). Also pins the MCP stdio version assertions to the constant.
* docs(examples): add maintained example projects and offline demo scripts
Three new offline, deterministic examples validated in CI: claude-code-workflow
(plugin flow + committed approvals), ci-drift-gate (verification policy +
GitHub Action + trusted commands), and template-and-extension (template
search/preview + safe analyzer flow). Adds scripts/validate-examples.mjs
(26 checks over temp copies), scripts/demo.{sh,ps1} (offline drift demo,
both run green), and docs/launch/demo-recording.md.
* docs: reorganize documentation around a hub, rewrite README, add 1.0.0 CHANGELOG
Additive documentation architecture: docs/README.md hub over the existing
flat pages plus new getting-started/ (installation, quickstart, existing-kiro
-project, claude-code-plugin), migrations hub, and dependency inventory.
README first screen follows the launch layout (positioning, workflow,
30-second quickstart, honest maturity/security note). CHANGELOG gains the
1.0.0 entry; roadmap marks v0.7.1 and v1.0.0 shipped; verification-rules
documents SBV026.
* chore(release): publish CLI as specbridge-cli and rebuild bundled artifacts
The bare npm name 'specbridge' is taken by an unrelated project, so the
package is named specbridge-cli; the bin and command stay 'specbridge'. tsup
bundles the @specbridge/* workspace packages into the published dist so the
package installs standalone, with an explicit files allowlist (no source
maps, tests, or fixtures) and committed LICENSE/NOTICE/README. Rebuilds the
plugin and GitHub Action bundles at 1.0.0 and adds the release QUICKSTART.
* feat(release): add cross-platform packaging, checksums, and release notes
scripts/package-standalone.mjs builds portable-node and per-platform archives
(windows-x64/linux-x64/macos-x64/macos-arm64) with a pinned, hash-verified
Node 20.20.2 runtime, a per-archive release manifest (schema/contract
versions, SHA-256 file list, no absolute paths), and on-platform smoke tests.
scripts/validate-npm-package.mjs enforces the files allowlist and proves the
packed specbridge-cli tarball installs and runs in isolation.
scripts/assemble-release.mjs emits SHA256SUMS.txt/json and a combined release
manifest, failing on any missing expected asset. Adds the v1.0.0 migration
guide and release notes, fixes the plugin-ZIP path in release.yml, ignores
dist-release/, and widens the doc example compatibility ranges to <2.0.0.
* release: prepare SpecBridge v1.0.0
Removes the temporary release working document. All local release gates pass:
lint, typecheck, 1266 tests, build, public-contract snapshots, security scan,
MCP-doc drift, plugin validation + isolated bundle, template/extension
galleries and registries, CLI smoke (47), example validation (26), npm
package validation (14, isolated install), and standalone packaging
(portable-node + windows-x64 smoke, linux archive, checksummed release
manifest). Versions are consistently 1.0.0.
No remote operation performed; publication awaits explicit authorization.
* fix(ci): rebuild plugin bundle and isolate the performance suite
Two CI failures on the v1.0.0 PR:
The committed Claude Code plugin bundle predated the `setup` command, so
CI's reproducibility check (git diff over the bundled dist) failed on Linux.
Rebuilt from current source; a second build is now byte-identical.
The large-repository performance suite builds ~9,000-file fixtures and real
git history inside the main worker pool, which starved vitest's worker RPC on
loaded runners: every test passed but the run still failed with an unhandled
"Timeout calling onTaskUpdate" error (seen on windows/node-20). The suite now
runs separately via `pnpm test:perf` (vitest.perf.config.ts, serial, generous
timeouts) and CI runs it as its own step on one matrix combination, matching
the policy of treating performance numbers as informational benchmarks.
Main suite: 92 files / 1254 tests. Perf suite: 12 tests. Both green, with no
unhandled errors.
* ci: pin the skill-verification template to v0.2.0
SpecBridge 1.0.0 widens built-in template and reference-extension
compatibility ranges to '<2.0.0' (the old '<1.0.0' bound excluded 1.0.0
itself, failing every built-in template with SBT006). That is a real change
in grounded CLI output, so the pinned fixture in
agent-skill-verification-template was regenerated and tagged v0.2.0; this
pins the new ref. The verifier release pin (ASV_VERSION/ASV_SHA256) is
unchanged.1 parent bbfe36c commit e91e88a
179 files changed
Lines changed: 44046 additions & 28276 deletions
File tree
- .claude-plugin
- .github
- ISSUE_TEMPLATE
- workflows
- contracts
- docs
- development
- extensions
- getting-started
- launch
- mcp
- migrations
- releases
- security
- stability
- examples
- bugfix-spec-project
- ci-drift-gate
- .github/workflows
- .kiro/specs/audit-log-export
- .specbridge
- policies
- state/specs
- db/migrations
- src/audit
- tests/audit
- claude-code-workflow
- .kiro
- specs/notification-digest
- steering
- .specbridge/state/specs
- design-first-project
- existing-kiro-project
- extensions
- example-analyzer
- example-exporter
- example-runner
- example-template-provider
- templates/example-template-provider-starter
- example-verifier
- quick-spec-project
- requirements-first-project
- template-and-extension
- .kiro
- specs/webhook-retry
- steering
- integrations
- claude-code-plugin
- specbridge
- .claude-plugin
- dist
- github-action
- dist
- src
- packages
- cli
- src
- commands
- state
- compat-kiro
- core
- src
- drift
- evidence
- execution
- extension-sdk
- src
- extensions
- src
- mcp-server
- src
- registry
- src
- reporting
- runners
- templates
- builtins
- authentication
- background-job
- bugfix-regression
- cli-tool
- database-migration
- event-driven-service
- performance-optimization
- refactoring
- rest-api
- security-hardening
- src
- workflow
- registry
- entries
- scripts
- release-assets
- tests
- cli
- contracts
- extensions
- fixtures/corruption
- mcp
- performance
- plugin
- templates
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
48 | 54 | | |
49 | 55 | | |
50 | 56 | | |
| |||
54 | 60 | | |
55 | 61 | | |
56 | 62 | | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
57 | 82 | | |
58 | 83 | | |
59 | 84 | | |
| |||
0 commit comments