Universal tracker interface, connector SDK, and sync engine for Spec Kitty
Project description
spec-kitty-tracker
Shared task-tracker abstraction layer for Spec Kitty CLI and SaaS.
Scope
- Canonical issue model (
CanonicalIssue,ExternalRef,CanonicalLink) - Tracker connector protocol with capability negotiation
- Doctrine-style source-of-truth ownership policies
- Conflict resolution and deterministic sync engine
- Bidirectional mission/issue sync bridge with decision reference traceability
- Connector registry and vendor connector implementations
Included Connectors
SaaS-Backed (via create_hosted_connector)
LinearConnectorJiraConnectorGitHubConnectorGitLabConnector
Out of Scope for Hosted Transport (this release)
AzureDevOpsConnector
Local/Native (direct construction)
BeadsConnector— local-firstbdCLI adapterFPConnector— local-firstfpCLI adapter
Test/Reference
InMemoryConnector— fully functional reference connector
Installation
pip install -e .
For development tools:
pip install -e ".[dev]"
Quick Example
The primary integration path for SaaS-backed providers (Linear, Jira, GitHub, GitLab) uses create_hosted_connector with host-provided transport context. See Local/Native and Test Connectors for direct construction.
import asyncio
from spec_kitty_tracker import (
create_hosted_connector,
HostedConnectorRequest,
LinearHostedParams,
NangoConnectionContext,
InMemoryIssueStore,
OwnershipPolicy,
OwnershipMode,
SyncEngine,
)
async def main() -> None:
# SaaS host provides identity context per operation
nango_ctx = NangoConnectionContext(
connection_id="user-connection-id",
provider_config_key="linear",
nango_secret_key="nango-secret",
)
# Factory constructs a connector routed through SaaS-owned transport
connector = create_hosted_connector(HostedConnectorRequest(
provider="linear",
nango_context=nango_ctx,
params=LinearHostedParams(team_id="TEAM-UUID"),
))
store = InMemoryIssueStore()
policy = OwnershipPolicy(mode=OwnershipMode.EXTERNAL_AUTHORITATIVE)
engine = SyncEngine(connector=connector, store=store, policy=policy)
async with connector:
await engine.pull()
asyncio.run(main())
Local/Native and Test Connectors
For connectors that do not use SaaS-hosted transport, construct them directly.
Local/Native (Beads)
from spec_kitty_tracker import BeadsConnector, BeadsConnectorConfig
config = BeadsConnectorConfig(workspace="my-project", cwd="/path/to/beads")
connector = BeadsConnector(config)
Test/Reference (InMemory)
from spec_kitty_tracker import InMemoryConnector
connector = InMemoryConnector(name="test", workspace="test-ws")
Migration/Advanced (direct SaaS-backed, non-product path)
# For test, migration, or advanced SDK use cases only.
# The Spec Kitty CLI/SaaS product path should use create_hosted_connector().
from spec_kitty_tracker import LinearConnector, LinearConnectorConfig
config = LinearConnectorConfig(api_key="test-key", team_id="TEAM-1")
connector = LinearConnector(config)
Design Notes
- The core contract is intentionally tracker-agnostic.
OwnershipPolicymakes source-of-truth behavior explicit and auditable.SyncEnginesupports pull, push, and bidirectional sync with conflict records.- Capability flags gate optional features (e.g., hierarchy, dependencies, webhooks).
- Mission updates are idempotent and persist decision references back to source issues.
Docs
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spec_kitty_tracker-0.3.0.tar.gz.
File metadata
- Download URL: spec_kitty_tracker-0.3.0.tar.gz
- Upload date:
- Size: 69.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97bebbd8b2e8e07ff77f3bcfebb99bb9b5715720446159aaf79a74a46d2d258f
|
|
| MD5 |
6c127ae4ab1cbbaa18e22187bcbc6edb
|
|
| BLAKE2b-256 |
13c57392af735e3dd28cbe3f27417e4ddb24abfbbd42334db319e0d4732b711b
|
Provenance
The following attestation bundles were made for spec_kitty_tracker-0.3.0.tar.gz:
Publisher:
publish-pypi.yml on Priivacy-ai/spec-kitty-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spec_kitty_tracker-0.3.0.tar.gz -
Subject digest:
97bebbd8b2e8e07ff77f3bcfebb99bb9b5715720446159aaf79a74a46d2d258f - Sigstore transparency entry: 1233949400
- Sigstore integration time:
-
Permalink:
Priivacy-ai/spec-kitty-tracker@d044d6502b0f3507d458da0d858639d39b2f5b6a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Priivacy-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@d044d6502b0f3507d458da0d858639d39b2f5b6a -
Trigger Event:
push
-
Statement type:
File details
Details for the file spec_kitty_tracker-0.3.0-py3-none-any.whl.
File metadata
- Download URL: spec_kitty_tracker-0.3.0-py3-none-any.whl
- Upload date:
- Size: 61.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c89cf4be549b40f8cfee7638f682ded7a2804b367ae853fcb59d9026ccd74fbc
|
|
| MD5 |
21adb83050aad325a116d86d28f97ff7
|
|
| BLAKE2b-256 |
68f80c44da77971b28d9cb500686a8dfb4eb2b20e8804d5279f27bbf9ec55b85
|
Provenance
The following attestation bundles were made for spec_kitty_tracker-0.3.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on Priivacy-ai/spec-kitty-tracker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spec_kitty_tracker-0.3.0-py3-none-any.whl -
Subject digest:
c89cf4be549b40f8cfee7638f682ded7a2804b367ae853fcb59d9026ccd74fbc - Sigstore transparency entry: 1233949420
- Sigstore integration time:
-
Permalink:
Priivacy-ai/spec-kitty-tracker@d044d6502b0f3507d458da0d858639d39b2f5b6a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Priivacy-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@d044d6502b0f3507d458da0d858639d39b2f5b6a -
Trigger Event:
push
-
Statement type: