Skip to content

Commit ee000c8

Browse files
authored
fix(#96): apply changelog 0.9.1, bump npm to 0.9.1, archive linker-cleanup (#98)
- Apply CHANGELOG.md via `specsync changelog -version 0.9.1 -apply` - Bump npm package version to 0.9.1 - Archive linker-cleanup OpenSpec change
1 parent 079b913 commit ee000c8

4 files changed

Lines changed: 86 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,37 @@ All notable changes to this project are documented here. One entry per shipped
44
OpenSpec change — see the linked issues for the full spec and discussion.
55
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

7+
## [0.9.1] - 2026-07-28
8+
9+
### Added
10+
11+
- Change status CLI: query and mutate workflow state locally (#43)
12+
- Emergent work spin-off (#9)
13+
- **Repo resolution is now explicit.** specsync resolves the target repository deterministically and always passes `--repo` to every `gh` invocation. Resolution order: `-repo` flag → `gh repo set-default``origin`. Fork-parent writes are refused by default; use `-repo` to override. Board resolution also gained a repository-local declaration: `openspec/specsync.yml` with `board: owner/number`. The `-project` flag and this config file are the only ways to set a board; the `SPECSYNC_PROJECT` env var is no longer used. (#76)
14+
- Added `specsync audit-tasks` to detect unchecked tasks where code exists, enforced via CI. Reconciled 47 changes — checked off done tasks, spun off follow-ups, fixed design docs that didn't match code. (#60)
15+
- Multi-provider sync (fan-out) (#24)
16+
- Auto-detect Beads provider (#62)
17+
- Claim work in flight so concurrent agents don't collide (#78)
18+
- Link existing issues by reference, without scaffolding specs (#18)
19+
- convergence check for 3-way board merge (#42) (#74) (04ea25a6)
20+
- linker cleanup — LinkerResult, slug-matching, dead code removal (#97) (079b9132)
21+
- add --worktree flag to pull — create or reuse worktree (#51) (#72) (18c09518)
22+
- add specsync validate command for change structure (#64) (#67) (22cfa581)
23+
- spec-issue-linker — pull integration, Linker context resolution, skill doc (#95) (47cedb84)
24+
- spec-issue-linker — Linker interface, resolvers, sync integration (8b752045)
25+
- stable task ID — position-based mapping for rewritten task detection (#65) (#73) (b542d927)
26+
- slug validation, archived priority support (#43) (#75) (f0d8d40e)
27+
28+
### Changed
29+
30+
- Work graph (#19)
31+
32+
### Fixed
33+
34+
- Add `specsync audit` — a read-only command that cross-references archived OpenSpec changes against GitHub PRs to find archived changes whose PR was never merged. Also add a new `shipped` stage that represents the final step in the lifecycle: the PR has landed. (#59)
35+
36+
<!-- 19 internal commit(s) omitted (chore/docs/ci/...) -->
37+
738
## [0.9.0] - 2026-07-17
839

940
### Added

npm/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@androidand/specsync",
3-
"version": "0.10.0",
3+
"version": "0.9.1",
44
"description": "Sync OpenSpec changes with work-tracker issues — standalone CLI",
55
"keywords": [
66
"openspec",
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Linker cleanup: LinkerResult, slug-matching, dead code removal
2+
3+
## Why
4+
5+
The linker from the spec-issue-linker change needed hardening and cleanup after
6+
the initial merge. The branch resolver resolved all changes to the same issue
7+
when syncing multiple changes, MarkerResolver was too expensive, and
8+
ExternalResolver was dead placeholder code.
9+
10+
## What
11+
12+
- Add `LinkerResult` struct with `Source` field (e.g. "branch", "cache") for
13+
dry-run visibility.
14+
- Fix BranchResolver slug-matching: `feat/42-my-change` only resolves when
15+
syncing `my-change`, preventing all-changes-to-same-issue.
16+
- Remove MarkerResolver (API call per change, never needed in practice).
17+
- Remove ExternalResolver (dead placeholder code).
18+
- Simplify Pull to use BranchResolver directly instead of the full Linker chain.
19+
20+
## Release note
21+
22+
Linker resolves issue refs with source visibility (branch, cache) and slug-aware
23+
branch matching to prevent cross-change resolution.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Tasks: Linker cleanup
2+
3+
## 1. LinkerResult with Source
4+
5+
- [x] 1.1 Add `LinkerResult` struct with `Ref` and `Source` fields
6+
- [x] 1.2 Update `Linker` interface to return `*LinkerResult`
7+
8+
## 2. BranchResolver slug-matching
9+
10+
- [x] 2.1 Capture slug from branch name (`feat/42-slug` → slug = "slug")
11+
- [x] 2.2 Verify slug matches `changeDir` when resolving for a specific change
12+
13+
## 3. Dead code removal
14+
15+
- [x] 3.1 Remove MarkerResolver
16+
- [x] 3.2 Remove ExternalResolver
17+
- [x] 3.3 Update tests to remove dead resolver tests
18+
19+
## 4. Pull simplification
20+
21+
- [x] 4.1 Pull uses BranchResolver directly (no Linker chain)
22+
- [x] 4.2 Remove Linker field from PullOptions
23+
24+
## 5. BuildSyncLinker
25+
26+
- [x] 5.1 Only BranchResolver in sync linker (cache handled per-provider)
27+
28+
## 6. Tests
29+
30+
- [x] 6.1 All linker tests use `*LinkerResult`
31+
- [x] 6.2 Full test suite passes

0 commit comments

Comments
 (0)