Skip to main content

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

  1. Canonical issue model (CanonicalIssue, ExternalRef, CanonicalLink)
  2. Tracker connector protocol with capability negotiation
  3. Doctrine-style source-of-truth ownership policies
  4. Conflict resolution and deterministic sync engine
  5. Bidirectional mission/issue sync bridge with decision reference traceability
  6. Connector registry and vendor connector implementations

Included Connectors

SaaS-Backed (via create_hosted_connector)

  1. LinearConnector
  2. JiraConnector
  3. GitHubConnector
  4. GitLabConnector

Out of Scope for Hosted Transport (this release)

  1. AzureDevOpsConnector

Local/Native (direct construction)

  1. BeadsConnector — local-first bd CLI adapter
  2. FPConnector — local-first fp CLI adapter

Test/Reference

  1. 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

  1. The core contract is intentionally tracker-agnostic.
  2. OwnershipPolicy makes source-of-truth behavior explicit and auditable.
  3. SyncEngine supports pull, push, and bidirectional sync with conflict records.
  4. Capability flags gate optional features (e.g., hierarchy, dependencies, webhooks).
  5. Mission updates are idempotent and persist decision references back to source issues.

Docs

  1. Architecture
  2. Connector Contract
  3. Doctrine Policy Modes
  4. P0 Provider Matrix
  5. WP04 Contract Alignment Notes
  6. WP11 Sync Core Notes

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

spec_kitty_tracker-0.3.0.tar.gz (69.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spec_kitty_tracker-0.3.0-py3-none-any.whl (61.2 kB view details)

Uploaded Python 3

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

Hashes for spec_kitty_tracker-0.3.0.tar.gz
Algorithm Hash digest
SHA256 97bebbd8b2e8e07ff77f3bcfebb99bb9b5715720446159aaf79a74a46d2d258f
MD5 6c127ae4ab1cbbaa18e22187bcbc6edb
BLAKE2b-256 13c57392af735e3dd28cbe3f27417e4ddb24abfbbd42334db319e0d4732b711b

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spec_kitty_tracker-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for spec_kitty_tracker-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c89cf4be549b40f8cfee7638f682ded7a2804b367ae853fcb59d9026ccd74fbc
MD5 21adb83050aad325a116d86d28f97ff7
BLAKE2b-256 68f80c44da77971b28d9cb500686a8dfb4eb2b20e8804d5279f27bbf9ec55b85

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page