empirical-sdd 0.24.0 → 0.25.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,6 +8,54 @@ under the alpha rules in [docs/versioning.md](docs/versioning.md).
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.25.0] - 2026-08-19
12
+
13
+ ### Added
14
+
15
+ - Added a trusted-host OAuth resolver contract for Linear, GitHub, and Jira,
16
+ with provider tokens kept ephemeral and outside Tracker Policy, MCP tool
17
+ input/output, chat, logs, and repository state.
18
+ - Added explicit MCP URL-mode capability negotiation for out-of-band OAuth;
19
+ form-only, legacy-empty, absent, declined, and cancelled clients fail closed
20
+ to the host fallback without receiving a credential form.
21
+ - Added a guarded read-only user secrets file fallback at
22
+ `${XDG_CONFIG_HOME:-$HOME/.config}/empirical/secrets.env` on POSIX or
23
+ `%APPDATA%\Empirical\secrets.env` on Windows, including containment, link,
24
+ size, syntax, completeness, and POSIX permission checks.
25
+
26
+ ### Changed
27
+
28
+ - Made new Linear setup default to `LINEAR_SECRET_KEY`, while preserving every
29
+ existing Tracker Policy v1/v2 name—including `LINEAR_API_KEY` and custom
30
+ valid names—without migration or repair rewrites.
31
+ - Made Jira OAuth use Atlassian's Cloud API base with Bearer authorization while
32
+ retaining tenant-origin Basic authentication for email/API-token fallback.
33
+ - Made Linear OAuth use its required Bearer authorization while preserving the
34
+ raw `Authorization` value required by existing personal API-key fallbacks.
35
+ - Aligned CLI, MCP, generated `empirical-init` guidance, Doctor, README, and
36
+ protocol/security documentation around OAuth-first setup, the exact host
37
+ fallback path, and the rule: `Never paste credentials into chat`.
38
+
39
+ ### Fixed
40
+
41
+ - Made tracker secret-file path construction honor explicit POSIX and Windows
42
+ semantics, with platform-correct permission fixtures and recovery-path tests.
43
+ - Serialized the process-heavy release test suite so temporary Git worktree
44
+ tests cannot exhaust their timeout and race cleanup under parallel load, and
45
+ removed a redundant non-coverage pass from local CI to match the GitHub gate.
46
+
47
+ ## [0.24.1] - 2026-08-19
48
+
49
+ ### Fixed
50
+
51
+ - Made first-run Init and repairs with no prior tracker decision require an
52
+ explicit choice between the recommended `Track all work` flow and `No
53
+ tracking` before setup can be saved.
54
+ - Persisted `No tracking` as a strict provider-free setup record so later
55
+ repairs preserve the confirmed choice without provider or ticket requests.
56
+ - Bounded release-test file parallelism so process-heavy CLI coverage remains
57
+ deterministic on high-core hosts while retaining per-test hang detection.
58
+
11
59
  ## [0.24.0] - 2026-08-18
12
60
 
13
61
  ### Added
@@ -109,7 +157,9 @@ Published through GitHub Actions trusted publishing with npm provenance.
109
157
 
110
158
  - Prepared and released package version `0.20.2`.
111
159
 
112
- [Unreleased]: https://github.com/goempirical/empirical-sdd/compare/v0.24.0...HEAD
160
+ [Unreleased]: https://github.com/goempirical/empirical-sdd/compare/v0.25.0...HEAD
161
+ [0.25.0]: https://github.com/goempirical/empirical-sdd/compare/v0.24.1...v0.25.0
162
+ [0.24.1]: https://github.com/goempirical/empirical-sdd/compare/v0.24.0...v0.24.1
113
163
  [0.24.0]: https://github.com/goempirical/empirical-sdd/compare/v0.23.0...v0.24.0
114
164
  [0.23.0]: https://github.com/goempirical/empirical-sdd/compare/v0.22.0...v0.23.0
115
165
  [0.22.0]: https://github.com/goempirical/empirical-sdd/compare/v0.20.4...v0.22.0
package/README.md CHANGED
@@ -4,7 +4,7 @@ Agent-neutral, resumable spec-driven development for coding agents. Empirical
4
4
  turns an ordinary change request into a deterministic workflow with durable
5
5
  state, reviewable evidence, and safe Git integration.
6
6
 
7
- > Empirical 0.24 is alpha software. It requires Node.js 22 or newer.
7
+ > Empirical 0.25 is alpha software. It requires Node.js 22 or newer.
8
8
 
9
9
  ## Install
10
10
 
@@ -42,14 +42,38 @@ verified, integrated, delivered, or published.
42
42
 
43
43
  ## Tracker setup
44
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.
45
+ `empirical-init` always shows a Tracker section. When no prior choice exists,
46
+ it recommends **Track all work** and requires choosing that or **No tracking**
47
+ before setup can be saved. Track all selects Linear, GitHub Projects, or Jira;
48
+ No tracking persists a provider-free choice and makes no provider requests.
49
+
50
+ Authentication starts with OAuth when a trusted host supplies a connection.
51
+ MCP clients may open that connection only through explicitly negotiated
52
+ URL-mode elicitation; Empirical never requests a credential through a form,
53
+ tool argument, tool result, assistant message, or repository file. The default
54
+ standalone CLI has no hosted OAuth broker and truthfully proceeds to the
55
+ host-only fallback.
56
+
57
+ > **Never paste credentials into chat.** If OAuth is unavailable, edit the
58
+ > secrets file directly on the host: `${XDG_CONFIG_HOME:-$HOME/.config}/empirical/secrets.env`
59
+ > on POSIX or `%APPDATA%\Empirical\secrets.env` on Windows. Do not put a
60
+ > credential value in a shell command, process argument, tool call, or
61
+ > repository `.env` file.
62
+
63
+ New setup uses `LINEAR_SECRET_KEY` for Linear, `GITHUB_TOKEN` for GitHub, and
64
+ both `JIRA_EMAIL` and `JIRA_API_TOKEN` for Jira. The file must be a regular,
65
+ non-symbolic-link file outside the repository and, on POSIX, owner-only (for
66
+ example mode `0600`). Runtime precedence is connected host OAuth, then a
67
+ complete injected environment set, then the checked host file. Existing
68
+ Tracker Policy v1/v2 names—including `LINEAR_API_KEY` and custom names—remain
69
+ valid and are never rewritten automatically.
70
+
71
+ After authentication, Empirical discovers accessible targets and workflow
72
+ states, proposes all seven semantic mappings, and shows the complete
73
+ secret-free policy before saving. Ambiguous state suggestions require an
74
+ explicit choice; simple boards may intentionally reuse one provider state for
75
+ several phases. Repair preserves an existing tracker policy or explicit No
76
+ tracking choice unless you change it.
53
77
 
54
78
  Tracker Policy v2 supports `off`, `manual`, and `ensure` ticket behavior plus
55
79
  blockers/final, phase-milestone, or every-revision progress comments. `ensure`