empirical-sdd 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +118 -0
- package/README.md +80 -98
- package/dist/agent-catalog.d.ts +3 -3
- package/dist/cli.js +4886 -599
- package/dist/coordination.d.ts +15 -0
- package/dist/core.d.ts +9 -1
- package/dist/delivery.d.ts +12 -0
- package/dist/demo-integration-repair.d.ts +1 -0
- package/dist/demo-integration-repair.js +28097 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4344 -512
- package/dist/integrations.d.ts +11 -0
- package/dist/integrations.js +444 -323
- package/dist/knowledge-templates.d.ts +2 -0
- package/dist/knowledge.d.ts +1 -0
- package/dist/mcp.js +4450 -539
- package/dist/protocol.d.ts +3 -1
- package/dist/protocol.js +2 -1
- package/dist/setup.d.ts +2 -1
- package/dist/storage.d.ts +1 -0
- package/dist/tracking.d.ts +410 -0
- package/dist/types.d.ts +314 -1
- package/docs/versioning.md +64 -0
- package/package.json +8 -5
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Empirical SDD are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
|
|
7
|
+
under the alpha rules in [docs/versioning.md](docs/versioning.md).
|
|
8
|
+
|
|
9
|
+
## [Unreleased]
|
|
10
|
+
|
|
11
|
+
## [0.24.0] - 2026-08-18
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Added guided Linear, GitHub Projects, and Jira discovery/preview during Init,
|
|
16
|
+
provider-neutral semantic state suggestions, and strict equivalent MCP and
|
|
17
|
+
non-interactive setup surfaces.
|
|
18
|
+
- Added Tracker Policy v2 ticket behavior (`off`, `manual`, `ensure`), progress
|
|
19
|
+
visibility, automatic one-ticket reconciliation, idempotent milestone
|
|
20
|
+
comments, and receipt-approved evidence uploads or commit-pinned links.
|
|
21
|
+
- Added a packaged, runnable integration-repair demo that reproduces a
|
|
22
|
+
completed repository with missing activation artifacts and proves the
|
|
23
|
+
before, repair, and verified-after states without touching user data.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- Tracker synchronization now commits local state first, preserves user-authored
|
|
28
|
+
Linear descriptions, and resumes transition/comment/artifact effects from a
|
|
29
|
+
durable acknowledgement ledger.
|
|
30
|
+
- Existing Tracker Policy v1 repositories remain manual/legacy compatible and
|
|
31
|
+
repair preserves tracker bytes unless explicitly changed or disabled.
|
|
32
|
+
- Simplified the README around installation, everyday use, safety, and links to
|
|
33
|
+
the detailed project documentation.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Made Doctor validate both behavioral and non-behavioral integration receipts
|
|
38
|
+
without falsely treating a valid null capability claim as corruption.
|
|
39
|
+
- Made the shell-free GitHub delivery and publication runner reuse the host's
|
|
40
|
+
existing `gh` configuration locator without persisting credentials or secret
|
|
41
|
+
values in policy or runtime receipts.
|
|
42
|
+
- Made sanitized HTTPS pushes use the host's authenticated `gh` store through
|
|
43
|
+
an ephemeral, push-only Git helper configuration without inheriting `HOME`,
|
|
44
|
+
exporting tokens, or changing persistent Git configuration.
|
|
45
|
+
- Made Doctor report missing, drifted, or unsafe required project integrations
|
|
46
|
+
whenever Schema 5 setup is complete, instead of incorrectly reporting the
|
|
47
|
+
repository as activation-ready.
|
|
48
|
+
- Kept Doctor read-only and made its remediation point to explicit
|
|
49
|
+
`empirical-init`; repair recreates missing artifacts and updates
|
|
50
|
+
Empirical-owned content while preserving unmanaged conflicts for manual
|
|
51
|
+
resolution.
|
|
52
|
+
- Completed the lower stem of the terminal brand mark so its outline renders as
|
|
53
|
+
a closed cross.
|
|
54
|
+
|
|
55
|
+
## [0.23.0] - 2026-08-11
|
|
56
|
+
|
|
57
|
+
Published through GitHub Actions trusted publishing with npm provenance.
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
|
|
61
|
+
- Replaced the globally automatic `empirical` skill with the explicit,
|
|
62
|
+
setup-only `empirical-init` bootstrap.
|
|
63
|
+
- Made initialized repositories route ordinary change prompts automatically
|
|
64
|
+
through marker-owned local instructions and skills; read-only prompts remain
|
|
65
|
+
outside the workflow.
|
|
66
|
+
- Added explicit-only invocation metadata where supported and retained all
|
|
67
|
+
existing workflow, evidence, tracker, integration, and publication gates.
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
|
|
71
|
+
- Added this changelog and a documented alpha Semantic Versioning and release
|
|
72
|
+
policy.
|
|
73
|
+
|
|
74
|
+
### Migration
|
|
75
|
+
|
|
76
|
+
- After upgrading from `0.22.x`, invoke `empirical-init` once in each existing
|
|
77
|
+
repository to install local automatic activation. Repair preserves Schema 5
|
|
78
|
+
configuration, context, feature history, and evidence unless setup values are
|
|
79
|
+
explicitly changed.
|
|
80
|
+
|
|
81
|
+
## [0.22.0] - 2026-08-03
|
|
82
|
+
|
|
83
|
+
### Added
|
|
84
|
+
|
|
85
|
+
- Introduced the Schema 5 protocol, strict Policy v2 evidence, resumable
|
|
86
|
+
journals, capability claims, independent integration, protected delivery,
|
|
87
|
+
explicit publication, and a single consolidated global workflow skill.
|
|
88
|
+
|
|
89
|
+
## [0.20.4] - 2026-07-31
|
|
90
|
+
|
|
91
|
+
### Fixed
|
|
92
|
+
|
|
93
|
+
- Completed the `0.20.4` release and its recorded release evidence.
|
|
94
|
+
|
|
95
|
+
## [0.20.3] - 2026-07-31
|
|
96
|
+
|
|
97
|
+
### Fixed
|
|
98
|
+
|
|
99
|
+
- Made CI and release fixtures portable across supported operating systems,
|
|
100
|
+
including Windows executable-extension casing.
|
|
101
|
+
|
|
102
|
+
### Changed
|
|
103
|
+
|
|
104
|
+
- Simplified installation guidance and clarified README commands.
|
|
105
|
+
|
|
106
|
+
## [0.20.2] - 2026-07-30
|
|
107
|
+
|
|
108
|
+
### Changed
|
|
109
|
+
|
|
110
|
+
- Prepared and released package version `0.20.2`.
|
|
111
|
+
|
|
112
|
+
[Unreleased]: https://github.com/goempirical/empirical-sdd/compare/v0.24.0...HEAD
|
|
113
|
+
[0.24.0]: https://github.com/goempirical/empirical-sdd/compare/v0.23.0...v0.24.0
|
|
114
|
+
[0.23.0]: https://github.com/goempirical/empirical-sdd/compare/v0.22.0...v0.23.0
|
|
115
|
+
[0.22.0]: https://github.com/goempirical/empirical-sdd/compare/v0.20.4...v0.22.0
|
|
116
|
+
[0.20.4]: https://github.com/goempirical/empirical-sdd/compare/v0.20.3...v0.20.4
|
|
117
|
+
[0.20.3]: https://github.com/goempirical/empirical-sdd/compare/v0.20.2...v0.20.3
|
|
118
|
+
[0.20.2]: https://github.com/goempirical/empirical-sdd/releases/tag/v0.20.2
|
package/README.md
CHANGED
|
@@ -1,120 +1,102 @@
|
|
|
1
1
|
# Empirical SDD
|
|
2
2
|
|
|
3
|
-
Agent-neutral, resumable spec-driven development
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
guidance for Codex, Claude Code, Cursor, Gemini CLI, Windsurf, and MCP clients.
|
|
3
|
+
Agent-neutral, resumable spec-driven development for coding agents. Empirical
|
|
4
|
+
turns an ordinary change request into a deterministic workflow with durable
|
|
5
|
+
state, reviewable evidence, and safe Git integration.
|
|
7
6
|
|
|
8
|
-
> Empirical 0.
|
|
9
|
-
> Schema 5 protocol. One checkout selects at most one active feature; linked Git
|
|
10
|
-
> worktrees isolate parallel work.
|
|
7
|
+
> Empirical 0.24 is alpha software. It requires Node.js 22 or newer.
|
|
11
8
|
|
|
12
9
|
## Install
|
|
13
10
|
|
|
11
|
+
```sh
|
|
12
|
+
npm install -g empirical-sdd
|
|
13
|
+
empirical install
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Choose the agents you use, reload them, then run `empirical-init` once in each
|
|
17
|
+
repository. After initialization, ask for work normally—for example, “fix the
|
|
18
|
+
pagination bug.” Empirical activates automatically for change requests while
|
|
19
|
+
read-only questions stay outside the workflow.
|
|
20
|
+
|
|
21
|
+
Codex uses `$empirical-init`, Claude Code uses `/empirical-init`, and Windsurf
|
|
22
|
+
uses `@empirical-init`. Existing 0.22 repositories should invoke it once after
|
|
23
|
+
upgrading; configuration, history, and evidence are preserved.
|
|
24
|
+
|
|
25
|
+
Doctor verifies that completed repositories still have every required local
|
|
26
|
+
instruction, skill, and MCP bridge. If it reports missing or drifted project
|
|
27
|
+
integrations, invoke `empirical-init` explicitly to reconcile Empirical-owned
|
|
28
|
+
artifacts; unmanaged or unsafe conflicts are preserved and remain visible.
|
|
29
|
+
|
|
30
|
+
## What it provides
|
|
31
|
+
|
|
32
|
+
- Deterministic Fast or Complex routing based on the request's risk.
|
|
33
|
+
- Resumable Specify, Design, Plan, Implement, Verify, Review, and Integrate phases.
|
|
34
|
+
- Immutable evidence tied to criteria, source state, and provenance.
|
|
35
|
+
- Isolated parallel work through linked Git worktrees.
|
|
36
|
+
- Guided Linear, GitHub Issues + Projects, or Jira ticket mirrors with automatic
|
|
37
|
+
binding, milestone comments, and safe evidence projection.
|
|
38
|
+
- Explicit, guarded delivery and npm publication boundaries.
|
|
39
|
+
|
|
40
|
+
Completion is reported only at the highest proven level: implemented,
|
|
41
|
+
verified, integrated, delivered, or published.
|
|
42
|
+
|
|
43
|
+
## Tracker setup
|
|
44
|
+
|
|
45
|
+
`empirical-init` always shows a Tracker section. Keep Local-only to make no
|
|
46
|
+
provider requests, or select Linear, GitHub Projects, or Jira. Empirical reads
|
|
47
|
+
credential values only from the environment-variable names you provide,
|
|
48
|
+
discovers accessible targets and workflow states, proposes all seven semantic
|
|
49
|
+
mappings, and shows the complete secret-free policy before saving. Ambiguous
|
|
50
|
+
state suggestions require an explicit choice; simple boards may intentionally
|
|
51
|
+
reuse one provider state for several phases. Repair preserves an existing
|
|
52
|
+
tracker policy unless you explicitly change or disable it.
|
|
53
|
+
|
|
54
|
+
Tracker Policy v2 supports `off`, `manual`, and `ensure` ticket behavior plus
|
|
55
|
+
blockers/final, phase-milestone, or every-revision progress comments. `ensure`
|
|
56
|
+
validates a referenced ticket, reconciles the feature marker, and creates only
|
|
57
|
+
when neither identifies one unique ticket. Local workflow state commits first;
|
|
58
|
+
provider outages leave exact retry state and never rewind local work. Comments
|
|
59
|
+
preserve user-authored descriptions, and receipt-approved evidence is uploaded
|
|
60
|
+
or linked only after repository containment, media, size, and digest checks.
|
|
61
|
+
Existing Tracker Policy v1 files remain valid with manual binding and legacy
|
|
62
|
+
projection until deliberately upgraded.
|
|
63
|
+
|
|
64
|
+
## CLI
|
|
65
|
+
|
|
14
66
|
| Command | Purpose |
|
|
15
67
|
| --- | --- |
|
|
16
|
-
| `
|
|
17
|
-
| `empirical
|
|
18
|
-
| `empirical
|
|
19
|
-
| `empirical
|
|
20
|
-
|
|
21
|
-
The installer uses a pinned local catalog. It remembers exact target IDs,
|
|
22
|
-
deduplicates shared skill roots, and performs no runtime network fetch or `npx`
|
|
23
|
-
execution. Automation can use repeatable `--agent`/`-a`, `--all`, `--yes`, and
|
|
24
|
-
`--json` options.
|
|
68
|
+
| `empirical install` | Select agents and install or repair Empirical integrations. |
|
|
69
|
+
| `empirical update` | Upgrade the package and refresh installed integrations. |
|
|
70
|
+
| `empirical uninstall` | Remove Empirical-managed global files and the package. |
|
|
71
|
+
| `empirical --help` | Show commands and automation options. |
|
|
25
72
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
`--json`). It removes only marker-owned global artifacts. Project `.empirical`
|
|
29
|
-
history, evidence, and repository MCP/agent configuration are always preserved;
|
|
30
|
-
unmanaged or unsafe global paths are also preserved and reported.
|
|
73
|
+
`empirical uninstall` preserves project `.empirical` history, evidence, and
|
|
74
|
+
repository configuration. Automation must confirm removal with `--yes`.
|
|
31
75
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
| Previous 0.21 behavior | Updated behavior |
|
|
35
|
-
| --- | --- |
|
|
36
|
-
| Public lifecycle exposed Install and Update only. | Public lifecycle also exposes `empirical uninstall`. |
|
|
37
|
-
| Removing six agent skills required manual per-agent cleanup. | One command scans every unique catalog root and removes only marker-owned skills. |
|
|
38
|
-
| Selection metadata had to be found manually. | Valid Empirical-owned metadata is removed; invalid or user-owned metadata is preserved. |
|
|
39
|
-
| Package removal was a separate manual npm command. | Confirmed uninstall runs exact `npm uninstall -g empirical-sdd` last. |
|
|
40
|
-
| Project preservation was implicit. | Help, confirmation, human output, and JSON explicitly report preserved project state. |
|
|
76
|
+
## Safety
|
|
41
77
|
|
|
42
|
-
|
|
78
|
+
Empirical asks when a material product choice or permission is missing. It does
|
|
79
|
+
not bypass host permissions or branch protection, extract credentials,
|
|
80
|
+
force-write Git history, delete real worktrees, or infer publication. Releases
|
|
81
|
+
remain bound to an exact version, commit, tag, and npm dist-tag.
|
|
43
82
|
|
|
44
|
-
|
|
83
|
+
## Documentation
|
|
45
84
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
| `empirical-spec <request>` | Draft a concrete Complex contract and stop for approval. |
|
|
51
|
-
| `empirical-socratic <idea>` | Run the durable five-pass interview, then draft the contract. |
|
|
52
|
-
| `empirical-loop` | Resume the selected feature from its exact current revision. |
|
|
53
|
-
| `empirical-yolo <request>` | Run autonomously to an explicit safe completion ceiling. |
|
|
54
|
-
|
|
55
|
-
Native invocation examples include `$empirical` in Codex, `/empirical` in
|
|
56
|
-
Claude Code, and `@empirical` in Windsurf. Reload an agent after installation.
|
|
57
|
-
|
|
58
|
-
## Trust model
|
|
59
|
-
|
|
60
|
-
Requests are classified into deterministic risk floors: contract-neutral,
|
|
61
|
-
behavioral, sensitive, migration, integration, delivery, or publication. Fast
|
|
62
|
-
is available only to contract-neutral work. Every higher floor uses Complex;
|
|
63
|
-
wording a risky request as “quick” cannot demote it.
|
|
64
|
-
|
|
65
|
-
Normal mode asks only when a material product choice or permission is missing.
|
|
66
|
-
YOLO persists bounded standing authorization and asks only for genuine blockers
|
|
67
|
-
before its authorized ceiling. It never bypasses host permissions or branch
|
|
68
|
-
protection, force-writes Git, extracts credentials, deletes real worktrees or
|
|
69
|
-
branches, replaces immutable releases, or infers publication.
|
|
70
|
-
|
|
71
|
-
Fast is contract-neutral and ends at verified. Complex records an impact
|
|
72
|
-
manifest and proceeds through Specify, Design, Plan, Implement, Verify, Review,
|
|
73
|
-
and independent Integrate. An authorized delivery may continue through two
|
|
74
|
-
protected GitHub PRs. Publication is always a separate explicit operation bound
|
|
75
|
-
to an exact version, commit, tag, and dist-tag.
|
|
76
|
-
|
|
77
|
-
Evidence is not a caller-supplied boolean. Empirical either executes a Policy v2
|
|
78
|
-
command or collects a content-addressed artifact, then writes an immutable
|
|
79
|
-
receipt tied to criteria, source state, and provenance. Completion reports only
|
|
80
|
-
the highest proven level: implemented, verified, integrated, delivered, or
|
|
81
|
-
published.
|
|
82
|
-
|
|
83
|
-
## Repository model
|
|
84
|
-
|
|
85
|
-
Schema 5 stores strict Policy v2 configuration, Manifest v2 knowledge
|
|
86
|
-
fingerprints, impact manifests, receipts, Git-common-dir capability claims, and
|
|
87
|
-
hash-chained per-feature journals. Terminal journals compact transactionally to
|
|
88
|
-
a verified snapshot boundary. `empirical_doctor` diagnoses schema, journal,
|
|
89
|
-
lock, claim, toolchain, policy, knowledge, evidence, worktree, and delivery
|
|
90
|
-
state without mutating the repository.
|
|
91
|
-
|
|
92
|
-
Schema 4 repositories migrate atomically on the first mutating 0.22 operation.
|
|
93
|
-
The migration validates a complete candidate tree before promotion and retains
|
|
94
|
-
a recovery receipt. Earlier schemas must first be upgraded to Schema 4 with the
|
|
95
|
-
version that created them.
|
|
85
|
+
[Protocol](docs/protocol.md) · [Architecture](docs/architecture.md) ·
|
|
86
|
+
[MCP and tracking](docs/mcp.md) · [Demo](docs/demo.md) ·
|
|
87
|
+
[Security](docs/security.md) · [Migration](docs/migration-v1.md) ·
|
|
88
|
+
[Versioning](docs/versioning.md) · [Changelog](CHANGELOG.md)
|
|
96
89
|
|
|
97
90
|
## Development
|
|
98
91
|
|
|
99
92
|
Development requires Node.js 22+ and Bun. CI covers Node 22, 24, and 26.
|
|
100
93
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
| `bun run test` | Run the test suite. |
|
|
106
|
-
| `bun run test:coverage` | Enforce aggregate and per-module coverage gates. |
|
|
107
|
-
| `bun run test:dist` | Build and smoke-test the packaged CLI and MCP server. |
|
|
108
|
-
| `bun run test:package` | Install and import the generated npm package. |
|
|
109
|
-
| `bun run ci` | Run every required gate. |
|
|
110
|
-
|
|
111
|
-
The package exposes only `.`, `./protocol`, `./mcp`, and `./integrations`.
|
|
94
|
+
```sh
|
|
95
|
+
bun install
|
|
96
|
+
bun run ci
|
|
97
|
+
```
|
|
112
98
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
[Protocol](docs/protocol.md) · [Architecture](docs/architecture.md) ·
|
|
116
|
-
[MCP](docs/mcp.md) · [Demo](docs/demo.md) · [Security](docs/security.md) ·
|
|
117
|
-
[Migration](docs/migration-v1.md)
|
|
99
|
+
The package exports `.`, `./protocol`, `./mcp`, and `./integrations`.
|
|
118
100
|
|
|
119
101
|
## License
|
|
120
102
|
|
package/dist/agent-catalog.d.ts
CHANGED
|
@@ -64,7 +64,7 @@ export declare const AGENT_SKILL_TARGETS: readonly [{
|
|
|
64
64
|
readonly aliases: readonly ["claude"];
|
|
65
65
|
readonly executables: readonly ["claude"];
|
|
66
66
|
readonly invocation: "/empirical";
|
|
67
|
-
readonly reload: "Restart Claude Code so it reloads the global Empirical
|
|
67
|
+
readonly reload: "Restart Claude Code so it reloads the global Empirical Init skill, then invoke /empirical-init for repository setup or repair.";
|
|
68
68
|
readonly projectMcp: true;
|
|
69
69
|
readonly handoff: true;
|
|
70
70
|
}, {
|
|
@@ -104,7 +104,7 @@ export declare const AGENT_SKILL_TARGETS: readonly [{
|
|
|
104
104
|
readonly detectPaths: readonly [".codex"];
|
|
105
105
|
readonly executables: readonly ["codex"];
|
|
106
106
|
readonly invocation: "$empirical";
|
|
107
|
-
readonly reload: "Restart or reopen Codex so it rescans user skills, then invoke
|
|
107
|
+
readonly reload: "Restart or reopen Codex so it rescans user skills, then invoke $empirical-init for repository setup or repair.";
|
|
108
108
|
readonly projectMcp: true;
|
|
109
109
|
readonly handoff: true;
|
|
110
110
|
}, {
|
|
@@ -371,7 +371,7 @@ export declare const AGENT_SKILL_TARGETS: readonly [{
|
|
|
371
371
|
readonly detectPaths: readonly [".codeium/windsurf"];
|
|
372
372
|
readonly executables: readonly ["windsurf"];
|
|
373
373
|
readonly invocation: "@empirical";
|
|
374
|
-
readonly reload: "Reload Windsurf or start a new Cascade session, then invoke
|
|
374
|
+
readonly reload: "Reload Windsurf or start a new Cascade session, then invoke @empirical-init for repository setup or repair.";
|
|
375
375
|
readonly projectMcp: true;
|
|
376
376
|
readonly handoff: true;
|
|
377
377
|
}, {
|