Skip to main content

Deployment and Operations

Overview​

How DevWorkWire is built, verified, published, and diagnosed.

Documents​

DocumentDescription
deployment-architecture.mdDistribution model and channels, supported platforms, version adoption and rollback, data durability, environment strategy
ci-cd-pipeline.mdBranching and PR conventions, GitHub Actions pipeline stages, the test matrix, security-critical tests, the publish flow, hotfixes, state-store migration
monitoring-observability.mdLocal logging and run_id correlation, failure surfacing, why there is no telemetry, privacy in observability

The Constraint That Shapes This Domain​

A published release cannot be recalled. Yanking a version blocks new installs; every already-installed copy keeps running, on a machine holding a live Jira token. There is no control plane, no rollout, no canary, and — by deliberate choice — no telemetry to detect a bad release.

Three consequences run through all three documents:

  1. Verification is front-loaded. The publish pipeline gates PyPI behind a TestPyPI clean-install smoke test, which is what actually enforces NFR-009-01 rather than hoping for it.
  2. Supply-chain controls are weighted heavily. Trusted Publishing (no long-lived token to steal) plus PEP 740 attestations — see Security Architecture.
  3. Detection depends on users reporting. So run_id correlation, an accurate version string, redacted-by-default output, and easy-to-find issue reporting are the monitoring strategy, not a substitute for one.

Key Decisions​

DecisionValue
CI/CDGitHub Actions — required for the OIDC identity behind Trusted Publishing
Test matrixLinux + macOS × Python 3.11 / 3.12 / 3.13 (6 jobs)
WindowsNot supported, stated explicitly rather than left ambiguous
Branch protectionPRs required, force pushes blocked, CI must pass; 0 approvals while single-maintainer, rising to 1/2 when a second joins
Release triggerTag vX.Y.Z on main → TestPyPI → clean-install smoke test → PyPI → Homebrew tap
VersioningManual SemVer bump and hand-written changelog, verified by CI (FR-009-04)
TelemetryNone, and none planned
  • ADR-007 — build backend, distribution, and release integrity
  • ADR-008 — CI platform, quality gates, and security tests
  • ADR-009 — no telemetry; local diagnosability only
  • ADR-010 — two-branch fork-based workflow, CI as the merge gate
  • ADR-002 — Python floor and supported platforms

Requirements Coverage​

RequirementWhere addressed
FR-009-01PyPI publish pipeline; dwire console script verified by the smoke test
FR-009-02pipx documented as the recommended channel
FR-009-03Homebrew tap updated from the publish pipeline with a pinned sdist hash
FR-009-04SemVer rules tied to the tool/CLI surface; CI fails the release without a matching version and changelog entry
NFR-009-01TestPyPI clean-install smoke test gates the PyPI publish
NFR-X01pip-audit blocking on Critical/High; CodeQL; Dependabot; Trusted Publishing
NFR-X03Coverage gate (≥80% on WorkItemService and provider adapters) enforced in CI
NFR-X06Text-prefixed errors and warnings; verified by review and non-TTY output checks
NFR-X04 / NFR-X05Still TBD. No deployment-side constraint exists; targets remain unset in requirements