- Add Versioning section to README with version format table and
cross-SDK alignment note (Python PEP 440 vs JS semver)
- Add Versioning section to integration guide with install commands
for stable and dev builds, pinning examples, and SDK format comparison
- Update API reference header to reflect dev version format
Refs #1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch dev version suffix from pipeline number to UTC timestamp
(YYYYMMDDHHmmss) for cross-SDK consistency:
Python: 0.1.0.dev20260215045901 (PEP 440)
JS: 0.1.0-dev.20260215045901 (semver)
Refs #1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- main/tags: publish release version as-is from pyproject.toml (e.g. 0.1.0),
with simple index check to skip already-published versions
- develop: publish PEP 440 dev version using pipeline number suffix
(e.g. 0.1.0.dev42), patching pyproject.toml before build. Every
develop push produces a unique version, always uploaded.
Consumers install stable releases by default. To install dev builds:
pip install mosaicstack-telemetry --pre --index-url ...
Refs #1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gitea PyPI registry does not support twine --skip-existing. Instead,
curl the simple index page and grep for the version in filenames before
attempting upload. Uses underscore naming (mosaicstack_telemetry) to
match actual sdist/wheel filenames.
Refs #1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
twine is installed into the venv via uv pip install, so it must be
invoked with `uv run twine` to find it on PATH. Also simplify version
check by using twine's --skip-existing flag instead of pip index lookup.
Refs #1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add publish step to .woodpecker.yml that builds wheel/sdist and uploads
to git.mosaicstack.dev PyPI registry via twine (gated on all quality
checks, only on main/develop/tags)
- Add link-package step to associate PyPI package with the repository
- Update README and integration guide with Gitea registry install
instructions (pip --index-url, uv --index-url, pyproject.toml config)
- Version check prevents re-publishing existing versions
Refs #1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rewrite README with quick start, FastAPI snippet, async/sync patterns,
config reference with env vars, and API version targeting (v1, schema 1.0)
- Add docs/integration-guide.md with full FastAPI and generic Python
integration examples, environment-specific config, prediction queries,
error handling, and dry-run mode documentation
- Add docs/api-reference.md covering all exported classes, methods, Pydantic
models, enums (TaskType, Complexity, Harness, Provider, QualityGate,
Outcome, RepoSizeCategory), and internal components
- Add Woodpecker CI pipeline (.woodpecker.yml) with quality gates: lint,
format check, typecheck, bandit security scan, pip-audit, and pytest
with 85% coverage gate
- Add bandit and pip-audit to dev dependencies
Fixes#1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Standalone Python package (mosaicstack-telemetry) for reporting
task-completion telemetry and querying predictions from the Mosaic
Stack Telemetry server.
- Sync/async TelemetryClient with context manager support
- Thread-safe EventQueue with bounded deque
- BatchSubmitter with httpx, exponential backoff, Retry-After
- PredictionCache with TTL
- EventBuilder convenience class
- All types standalone (no server dependency)
- 55 tests, 90% coverage, mypy strict clean
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>