Context and Problem Statement
Tracker integration requires local cache and checkpoint persistence. One proposal added durable SQLite stores directly to spec-kitty-tracker core. That approach conflicts with existing SpecKitty architecture where persistence is host-owned and context-specific.
Current patterns in CLI:
- SQLite queue in
sync/queue.py - JSONL state/event store in
status/store.py - Credential storage + locking in
sync/auth.py
Adding core persistence in spec-kitty-tracker would blur boundaries and make connector core responsible for deployment-specific storage concerns.
Decision Drivers
- Keep
spec-kitty-trackerreusable across CLI and SaaS hosts. - Preserve existing host-owned persistence architecture.
- Avoid premature storage coupling in connector core.
- Keep connector testability simple with in-memory stores.
Considered Options
- Add
SqliteIssueStoreandSqliteCheckpointStoretospec-kitty-tracker. - Host-owned durable store implementations (
spec-kittyCLI and future SaaS adapters), with protocol interfaces in core (chosen). - No durable local store in v1.
Decision Outcome
Chosen option: host-owned persistence with protocol-only core.
Required Behavior
spec-kitty-trackerdefines protocols/contracts and connectors.spec-kitty-trackermay include in-memory testing stores only.- Durable SQLite tracker store/checkpoint implementations live in
spec-kittyCLI. - SaaS may implement separate durable projections without changing core contracts.
Consequences
Positive
- Clear architectural boundary and ownership.
- Reusable connector core with minimal runtime assumptions.
- Storage technology remains host-selectable.
Negative
- Host implementations duplicate some store wiring logic.
- Shared migration helpers are deferred.
Neutral
- Core docs must explicitly state persistence responsibility.
Confirmation
This decision is validated when:
- No durable store classes are present in
spec-kitty-trackercore. - CLI durable tracker cache/checkpoint persistence exists in
spec-kitty. - Tracker connector tests run using protocol/in-memory store patterns.
Pros and Cons of the Options
Option 1: Durable SQLite in core
Pros:
- Single implementation point.
Cons:
- Couples connector core to storage/runtime assumptions.
- Conflicts with established host-owned pattern.
Option 2: Host-owned persistence (Chosen)
Pros:
- Architecture consistency with existing SpecKitty patterns.
- Better portability across hosts.
Cons:
- More host-side implementation effort.
Option 3: No durable store
Pros:
- Simplifies short-term implementation.
Cons:
- Fails operational requirements for checkpointed sync.
More Information
- Existing host persistence references:
src/specify_cli/sync/queue.pysrc/specify_cli/status/store.pysrc/specify_cli/sync/auth.py - CLI tracker store implementation:
src/specify_cli/tracker/store.py - Core architecture docs:
<spec-kitty-tracker-repo>/docs/ARCHITECTURE.md