empirical-sdd 0.23.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 CHANGED
@@ -8,14 +8,53 @@ under the alpha rules in [docs/versioning.md](docs/versioning.md).
8
8
 
9
9
  ## [Unreleased]
10
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
+
11
25
  ### Changed
12
26
 
13
- - Nothing yet.
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.
14
54
 
15
55
  ## [0.23.0] - 2026-08-11
16
56
 
17
- This version is prepared in the repository but is not published by the version
18
- change alone.
57
+ Published through GitHub Actions trusted publishing with npm provenance.
19
58
 
20
59
  ### Changed
21
60
 
@@ -70,7 +109,8 @@ change alone.
70
109
 
71
110
  - Prepared and released package version `0.20.2`.
72
111
 
73
- [Unreleased]: https://github.com/goempirical/empirical-sdd/compare/v0.23.0...HEAD
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
74
114
  [0.23.0]: https://github.com/goempirical/empirical-sdd/compare/v0.22.0...v0.23.0
75
115
  [0.22.0]: https://github.com/goempirical/empirical-sdd/compare/v0.20.4...v0.22.0
76
116
  [0.20.4]: https://github.com/goempirical/empirical-sdd/compare/v0.20.3...v0.20.4
package/README.md CHANGED
@@ -1,151 +1,102 @@
1
1
  # Empirical SDD
2
2
 
3
- Agent-neutral, resumable spec-driven development with deterministic routing,
4
- immutable evidence, safe cross-worktree integration, optional external ticket
5
- mirrors, and an explicit bootstrap that makes normal repository work automatic.
6
- Empirical installs across 73 global agent targets and provides verified guidance
7
- 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.
8
6
 
9
- > Empirical 0.23 is alpha software. Schema 5 remains unchanged. One checkout
10
- > selects at most one active feature; linked Git 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
- | `npm install -g empirical-sdd` | Install the CLI. Node.js 22 or newer is required. |
17
- | `empirical install` | Choose coding agents and install the single explicit `empirical-init` skill. |
18
- | `empirical update` | Upgrade Empirical and reconcile installed skills. |
19
- | `empirical uninstall` | Remove managed global skills, owned selection metadata, then the global package. |
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
- Uninstall is fail-closed: interactive use shows the exact scope and defaults to
27
- cancel, while automation must use `empirical uninstall --yes` (optionally with
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
- ### Upgrade from 0.22
33
-
34
- | Previous 0.22 behavior | Updated 0.23 behavior |
35
- | --- | --- |
36
- | A global `empirical` skill watched every prompt. | The global skill is explicit `empirical-init` and is limited to setup or repair. |
37
- | Normal work required naming `empirical`. | Initialized repositories route ordinary change prompts automatically. |
38
- | Project workflow guidance was removed. | Short marker-owned project dispatchers and detailed local skills are restored. |
39
- | Existing repositories needed no integration repair. | Invoke `empirical-init` once per existing checkout; configuration and history are preserved. |
76
+ ## Safety
40
77
 
41
- ## Skills
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.
42
82
 
43
- These are coding-agent skills, not public shell workflow commands.
83
+ ## Documentation
44
84
 
45
- | Entry | Purpose |
46
- | --- | --- |
47
- | `empirical-init` | Explicitly initialize a new repository or repair an existing repository's context and integrations. |
48
- | Ordinary change prompt | Automatically route, optionally interview or mirror, resume, and complete work in a valid initialized repository. |
49
-
50
- Native bootstrap examples include `$empirical-init` in Codex,
51
- `/empirical-init` in Claude Code, and `@empirical-init` in Windsurf. Reload an
52
- agent after installation. Once initialized, ask normally—for example, “fix the
53
- pagination bug.” Read-only questions remain outside Empirical, and a repository
54
- without valid completed `.empirical/config.json` is never enrolled implicitly.
55
-
56
- ## Trust model
57
-
58
- Requests are classified into deterministic risk floors: contract-neutral,
59
- behavioral, sensitive, migration, integration, delivery, or publication. Fast
60
- is available only to contract-neutral work. Every higher floor uses Complex;
61
- wording a risky request as “quick” cannot demote it.
62
-
63
- Normal mode asks only when a material product choice or permission is missing.
64
- YOLO persists bounded standing authorization and asks only for genuine blockers
65
- before its authorized ceiling. It never bypasses host permissions or branch
66
- protection, force-writes Git, extracts credentials, deletes real worktrees or
67
- branches, replaces immutable releases, or infers publication.
68
-
69
- Fast is contract-neutral and ends at verified. Complex records an impact
70
- manifest and proceeds through Specify, Design, Plan, Implement, conditional
71
- Context refinement, Verify, Review, and independent Integrate. An authorized delivery may continue through two
72
- protected GitHub PRs. Publication is always a separate explicit operation bound
73
- to an exact version, commit, tag, and dist-tag.
74
-
75
- Evidence is not a caller-supplied boolean. Empirical either executes a Policy v2
76
- command or collects a content-addressed artifact, then writes an immutable
77
- receipt tied to criteria, source state, and provenance. Completion reports only
78
- the highest proven level: implemented, verified, integrated, delivered, or
79
- published.
80
-
81
- ## External ticket tracking
82
-
83
- External tracking is optional and local-only by default. When enabled through
84
- the repository-local workflow, one selected feature can create or attach one ticket in
85
- Linear, GitHub Issues + Projects v2, or Jira Cloud. Empirical's hash-chained
86
- local journal remains authoritative; the ticket is a one-way projection of the
87
- committed phase, normalized status, revision, completion level, and blocker
88
- summary.
89
-
90
- The provider-neutral Tracker Policy v1 lives at `.empirical/tracker.json`.
91
- It selects exactly one provider, names its board/project and normalized status
92
- IDs, and stores only credential environment-variable names. Credential values
93
- are injected into the Empirical runtime by the host, must carry access to the
94
- configured provider target, and are never written to `.empirical/`. Bindings
95
- pin the exact provider target; changing that target fails closed until explicit
96
- replacement, while a same-target status-map change forces the committed
97
- revision to be projected again. Bindings and durable retry operations live
98
- under each feature's `tracker/` directory.
99
-
100
- After every local journal commit, the skill asks the granular MCP tracker layer
101
- to converge the remote ticket. A provider outage never rolls back or blocks
102
- local SDD progress. Status and action packets expose `local-only`, `synced`,
103
- `pending`, or `failed` tracker health. Ordinary retries resume the exact durable
104
- pending operation. If ticket creation has an ambiguous outcome, Empirical does
105
- not issue another create automatically: it first performs bounded reconciliation
106
- using the persisted marker. If no unique match is found, attachment is required
107
- unless the caller explicitly confirms a new attempt that may create a duplicate.
108
- See [MCP usage](docs/mcp.md#external-ticket-mirror) for the strict provider
109
- schemas, runtime permissions, state mapping, and recovery details.
110
-
111
- ## Repository model
112
-
113
- Schema 5 stores strict Policy v2 configuration, Manifest v2 knowledge
114
- fingerprints, impact manifests, receipts, Git-common-dir capability claims, and
115
- hash-chained per-feature journals. Terminal journals compact transactionally to
116
- a verified snapshot boundary. `empirical_doctor` diagnoses schema, journal,
117
- lock, claim, toolchain, policy, tracker configuration, credential presence,
118
- knowledge, evidence, worktree, and delivery state without mutating the
119
- repository. It still validates dormant feature binding and pending files when
120
- tracking is local-only or disabled.
121
-
122
- Schema 4 repositories migrate atomically on the first mutating Schema-5 operation.
123
- The migration validates a complete candidate tree before promotion and retains
124
- a recovery receipt. Earlier schemas must first be upgraded to Schema 4 with the
125
- 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)
126
89
 
127
90
  ## Development
128
91
 
129
92
  Development requires Node.js 22+ and Bun. CI covers Node 22, 24, and 26.
130
93
 
131
- | Command | Purpose |
132
- | --- | --- |
133
- | `bun install` | Install dependencies. |
134
- | `bun run check` | Type-check the source. |
135
- | `bun run test` | Run the test suite. |
136
- | `bun run test:coverage` | Enforce aggregate and per-module coverage gates. |
137
- | `bun run test:dist` | Build and smoke-test the packaged CLI and MCP server. |
138
- | `bun run test:package` | Install and import the generated npm package. |
139
- | `bun run ci` | Run every required gate. |
140
-
141
- The package exposes only `.`, `./protocol`, `./mcp`, and `./integrations`.
94
+ ```sh
95
+ bun install
96
+ bun run ci
97
+ ```
142
98
 
143
- ## Documentation
144
-
145
- [Protocol](docs/protocol.md) · [Architecture](docs/architecture.md) ·
146
- [MCP](docs/mcp.md) · [Demo](docs/demo.md) · [Security](docs/security.md) ·
147
- [Migration](docs/migration-v1.md) · [Versioning](docs/versioning.md) ·
148
- [Changelog](CHANGELOG.md)
99
+ The package exports `.`, `./protocol`, `./mcp`, and `./integrations`.
149
100
 
150
101
  ## License
151
102