empirical-sdd 0.24.1 → 0.26.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,68 @@ under the alpha rules in [docs/versioning.md](docs/versioning.md).
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.26.0] - 2026-08-20
12
+
13
+ ### Added
14
+
15
+ - Added selectable `concise` or `detailed` interaction questions across project
16
+ configuration, CLI, MCP, action packets, status rendering, and generated
17
+ agent guidance. New recommended setup is concise; existing missing fields
18
+ remain detailed.
19
+ - Added strict optional Tracker Policy v2 ticket-rule matrices, including the
20
+ `features+large-fixes` preset and resolved change-type/requirement status.
21
+ - Added a packaged provider-independent no-ticket feature demo that proves one
22
+ guarded create, one durable binding, and zero live-network calls.
23
+
24
+ ### Changed
25
+
26
+ - Optional ticket work with no explicit reference now remains local before
27
+ authentication or provider access and no longer causes a redundant ticket
28
+ question; required work retains attach, marker reconciliation, and
29
+ exactly-once guarded creation.
30
+
31
+ ### Migration
32
+
33
+ - Existing Schema 5 and Tracker Policy v1/v2 repositories require no state
34
+ migration. Repositories without an explicit question mode retain detailed
35
+ questions until configured otherwise; new setup recommends concise mode.
36
+
37
+ ## [0.25.0] - 2026-08-19
38
+
39
+ ### Added
40
+
41
+ - Added a trusted-host OAuth resolver contract for Linear, GitHub, and Jira,
42
+ with provider tokens kept ephemeral and outside Tracker Policy, MCP tool
43
+ input/output, chat, logs, and repository state.
44
+ - Added explicit MCP URL-mode capability negotiation for out-of-band OAuth;
45
+ form-only, legacy-empty, absent, declined, and cancelled clients fail closed
46
+ to the host fallback without receiving a credential form.
47
+ - Added a guarded read-only user secrets file fallback at
48
+ `${XDG_CONFIG_HOME:-$HOME/.config}/empirical/secrets.env` on POSIX or
49
+ `%APPDATA%\Empirical\secrets.env` on Windows, including containment, link,
50
+ size, syntax, completeness, and POSIX permission checks.
51
+
52
+ ### Changed
53
+
54
+ - Made new Linear setup default to `LINEAR_SECRET_KEY`, while preserving every
55
+ existing Tracker Policy v1/v2 name—including `LINEAR_API_KEY` and custom
56
+ valid names—without migration or repair rewrites.
57
+ - Made Jira OAuth use Atlassian's Cloud API base with Bearer authorization while
58
+ retaining tenant-origin Basic authentication for email/API-token fallback.
59
+ - Made Linear OAuth use its required Bearer authorization while preserving the
60
+ raw `Authorization` value required by existing personal API-key fallbacks.
61
+ - Aligned CLI, MCP, generated `empirical-init` guidance, Doctor, README, and
62
+ protocol/security documentation around OAuth-first setup, the exact host
63
+ fallback path, and the rule: `Never paste credentials into chat`.
64
+
65
+ ### Fixed
66
+
67
+ - Made tracker secret-file path construction honor explicit POSIX and Windows
68
+ semantics, with platform-correct permission fixtures and recovery-path tests.
69
+ - Serialized the process-heavy release test suite so temporary Git worktree
70
+ tests cannot exhaust their timeout and race cleanup under parallel load, and
71
+ removed a redundant non-coverage pass from local CI to match the GitHub gate.
72
+
11
73
  ## [0.24.1] - 2026-08-19
12
74
 
13
75
  ### Fixed
@@ -121,7 +183,9 @@ Published through GitHub Actions trusted publishing with npm provenance.
121
183
 
122
184
  - Prepared and released package version `0.20.2`.
123
185
 
124
- [Unreleased]: https://github.com/goempirical/empirical-sdd/compare/v0.24.1...HEAD
186
+ [Unreleased]: https://github.com/goempirical/empirical-sdd/compare/v0.26.0...HEAD
187
+ [0.26.0]: https://github.com/goempirical/empirical-sdd/compare/v0.25.0...v0.26.0
188
+ [0.25.0]: https://github.com/goempirical/empirical-sdd/compare/v0.24.1...v0.25.0
125
189
  [0.24.1]: https://github.com/goempirical/empirical-sdd/compare/v0.24.0...v0.24.1
126
190
  [0.24.0]: https://github.com/goempirical/empirical-sdd/compare/v0.23.0...v0.24.0
127
191
  [0.23.0]: https://github.com/goempirical/empirical-sdd/compare/v0.22.0...v0.23.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.26 is alpha software. It requires Node.js 22 or newer.
8
8
 
9
9
  ## Install
10
10
 
@@ -35,6 +35,7 @@ artifacts; unmanaged or unsafe conflicts are preserved and remain visible.
35
35
  - Isolated parallel work through linked Git worktrees.
36
36
  - Guided Linear, GitHub Issues + Projects, or Jira ticket mirrors with automatic
37
37
  binding, milestone comments, and safe evidence projection.
38
+ - Selectable concise or detailed agent questions and runtime summaries.
38
39
  - Explicit, guarded delivery and npm publication boundaries.
39
40
 
40
41
  Completion is reported only at the highest proven level: implemented,
@@ -42,17 +43,45 @@ verified, integrated, delivered, or published.
42
43
 
43
44
  ## Tracker setup
44
45
 
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
- Empirical reads
50
- credential values only from the environment-variable names you provide,
51
- discovers accessible targets and workflow states, proposes all seven semantic
52
- mappings, and shows the complete secret-free policy before saving. Ambiguous
53
- state suggestions require an explicit choice; simple boards may intentionally
54
- reuse one provider state for several phases. Repair preserves an existing
55
- tracker policy or explicit No tracking choice unless you change it.
46
+ `empirical-init` always shows Interaction and Tracker sections. New recommended
47
+ setup selects **concise** questions: agents ask only when an answer changes
48
+ scope, architecture, authorization, or a safety gate. **Detailed** preserves
49
+ the expanded guidance used by existing Schema-5 repositories. Automation can
50
+ set the same value with `--questions concise|detailed` or the MCP `questions`
51
+ field.
52
+
53
+ When no tracker choice exists, Init recommends **Track work by type** and
54
+ requires choosing that or **No tracking** before setup can be saved. Track work
55
+ selects Linear, GitHub Projects, or Jira; No tracking persists a provider-free
56
+ choice and makes no provider requests.
57
+
58
+ Authentication starts with OAuth when a trusted host supplies a connection.
59
+ MCP clients may open that connection only through explicitly negotiated
60
+ URL-mode elicitation; Empirical never requests a credential through a form,
61
+ tool argument, tool result, assistant message, or repository file. The default
62
+ standalone CLI has no hosted OAuth broker and truthfully proceeds to the
63
+ host-only fallback.
64
+
65
+ > **Never paste credentials into chat.** If OAuth is unavailable, edit the
66
+ > secrets file directly on the host: `${XDG_CONFIG_HOME:-$HOME/.config}/empirical/secrets.env`
67
+ > on POSIX or `%APPDATA%\Empirical\secrets.env` on Windows. Do not put a
68
+ > credential value in a shell command, process argument, tool call, or
69
+ > repository `.env` file.
70
+
71
+ New setup uses `LINEAR_SECRET_KEY` for Linear, `GITHUB_TOKEN` for GitHub, and
72
+ both `JIRA_EMAIL` and `JIRA_API_TOKEN` for Jira. The file must be a regular,
73
+ non-symbolic-link file outside the repository and, on POSIX, owner-only (for
74
+ example mode `0600`). Runtime precedence is connected host OAuth, then a
75
+ complete injected environment set, then the checked host file. Existing
76
+ Tracker Policy v1/v2 names—including `LINEAR_API_KEY` and custom names—remain
77
+ valid and are never rewritten automatically.
78
+
79
+ After authentication, Empirical discovers accessible targets and workflow
80
+ states, proposes all seven semantic mappings, and shows the complete
81
+ secret-free policy before saving. Ambiguous state suggestions require an
82
+ explicit choice; simple boards may intentionally reuse one provider state for
83
+ several phases. Repair preserves an existing tracker policy or explicit No
84
+ tracking choice unless you change it.
56
85
 
57
86
  Tracker Policy v2 supports `off`, `manual`, and `ensure` ticket behavior plus
58
87
  blockers/final, phase-milestone, or every-revision progress comments. `ensure`
@@ -64,6 +93,21 @@ or linked only after repository containment, media, size, and digest checks.
64
93
  Existing Tracker Policy v1 files remain valid with manual binding and legacy
65
94
  projection until deliberately upgraded.
66
95
 
96
+ An optional strict `ticketRules` matrix refines `ensure` by change type and
97
+ workflow size. The recommended `features+large-fixes` preset is:
98
+
99
+ | Work | Fast | Quick | Complex |
100
+ | --- | --- | --- | --- |
101
+ | Feature | required | required | required |
102
+ | Fix | optional | required | required |
103
+ | Chore | optional | optional | optional |
104
+
105
+ Optional work with no referenced ticket stays local without OAuth, provider
106
+ access, ticket creation, or a redundant question. One explicit reference is
107
+ attached; multiple references fail closed. See the [demo](docs/demo.md) for a
108
+ provider-independent new-feature run and [MCP documentation](docs/mcp.md) for
109
+ the complete custom JSON form.
110
+
67
111
  ## CLI
68
112
 
69
113
  | Command | Purpose |