Releases: LangeVC/ops-engine
Releases · LangeVC/ops-engine
ops-engine v2.1.3
Release v2.1.3
ops-engine v2.1.2
Fixed
- HealthMonitor: actually declare
pyyaml>=6.0as a runtime dependency.
v2.1.1 claimed to fix this in the CHANGELOG but the corresponding edit to
pyproject.tomlnever landed (silent Edit-call failure during release).
This release is the real fix. Symptom on consumers without transitive
pyyaml:ModuleNotFoundError: No module named 'yaml'at first module run.
ops-engine v2.1.1
Fixed
- HealthMonitor: declare
pyyaml>=6.0as a runtime dependency. The
module importsyamlto parse the consumer'sconfig.ymlbut the
package only listedpydantic+httpxindependencies. Triggered
ModuleNotFoundError: No module named 'yaml'on first run for any
consumer that didn't already have pyyaml installed transitively.
ops-engine v2.1.0
Added
- HealthMonitor (CORE-006): Scheduled HTTP probes with pluggable sinks
- Probe targets defined in consumer's
config.yml(URL, expected status, optional JSON-field assertion) - Sinks:
stdout(CI log),file(per-run log file),webhook(POST JSON),github_issue(label-targeted) - Replaces the anti-pattern of writing health-check log entries back to the source repo via auto-commit
- Module entry point:
python -m ops_engine.modules.health_monitor --config <cfg> --org <name> - Consumer:
Capacium/capacium-ops(PR #4 — replaces inline shell + commit-back)
- Probe targets defined in consumer's
- MigrationRunner (CORE-007): Forward-only SQL migration runner
- Discovers
*.sqlfiles in a directory, ordered lexicographically - Tracks applied migrations + checksums in
schema_migrationstable - Detects checksum drift (file edited after apply) → hard fail
- Safely handles
CREATE INDEX CONCURRENTLY(each statement outside the migration transaction) - Pluggable adapter (
[postgres]extra ships psycopg2 fakeable adapter; SQLite trivially addable) - Test suite: apply-pending, checksum-mismatch, concurrent-index, idempotent, lock-timeout
- Consumer:
Capacium/capacium-opsPR #5 wires this forcapacium-exchange
- Discovers
- Module-side config loader (
ops_engine.config_loader): validates per-module section in consumer'sconfig.yml
Changed
README.md: lists both new modules in the Modules table
ops-engine v2.0.0
What's New
New Modules
- ReleaseHandler — Automated release creation on tag push with CHANGELOG.md parsing, tag pattern matching, and idempotency
- MergeHandler — Auto-merge PRs when CI passes and trigger label is present
- MirrorHandler — Cross-forge mirror drift verification (Forgejo ↔ GitHub)
- NotificationHandler — Multi-channel dispatch (webhook, Slack, Discord) with event filtering
Infrastructure
- QueueManager v2 — Bounded async queue with backpressure, retry, dead letter queue, metrics, graceful shutdown
- EventDeduplicator — In-memory webhook dedup for GitHub, Forgejo, and Gitea delivery headers
- ChangelogParser — Version-specific release notes extraction from CHANGELOG.md
ForgeAdapter
- Complete rewrite with real httpx async HTTP (was mock-only)
- Exponential backoff retry on 429/502/503
- HMAC-SHA256 webhook signature verification
- 10 new abstract methods including create_pull_request and list_pull_requests
Config
- 5 new Pydantic models: ReleaseConfig, MergeConfig, MirrorConfig, NotificationConfig, NotificationChannel
- Org-level inheritance (mirror is repo-specific only)
- Backward compatible with v1 configs
Testing
- 51 tests covering all modules, adapters, queue, dedup, config, and changelog parser
Breaking Changes
- QueueManager constructor signature changed (new max_queue_size, max_retries params)
- ForgeAdapter ABC has 10 new abstract methods — existing subclasses must implement them
Full Changelog
See CHANGELOG.md
Ops Engine v0.1.0
Initial Release: Ops Engine v0.1.0
We are proud to announce the initial open-source release of the LangeVC Ops Engine – a generic, rate-limited async webhook queue and orchestration framework for GitHub and Forgejo.
This release establishes the foundation for scalable organizational Git automation without the risk of API rate-limiting or CI/CD runner starvation (The Thundering Herd problem).
🚀 Core Architecture
- Engine/Layover Pattern: Complete separation of infrastructure logic (the Engine) and organization-specific business rules (the Layover).
- Config-Driven Design: All rules, thresholds, and target repositories are purely controlled via YAML/Pydantic, requiring zero hardcoded business logic.
- Asynchronous Processing: Built on
FastAPIandasyncio, the engine captures incoming webhooks instantly, preventing forge timeouts viaHTTP 202 Acceptedresponses.
✨ Key Features
- Rate Limit Queue (
QueueManager): Processes all GitHub/Forgejo API interactions sequentially (e.g., 1 request/second) to guarantee strict adherence to API quotas. - Triage & Auto-Labeling (
TriageHandler): Inspects newly opened PRs and Issues, applying appropriate labels based on title keywords (e.g.,bug,feat) instantly. - Stale Cleanup (
StaleManager): Centralized, cron-driven scanning across multiple repositories to mark and manage stale issues. - Cross-Repo Triggers (
DependencyTriggerHandler): Automatically dispatchesrepository_dispatchevents to downstream repositories whenever an upstream repository publishes a new release. - Centralized Dispatching (
CronDispatcher): Replaces decentralized.github/workflows/cron jobs, orchestrating heavy loads (like CodeQL) centrally and sequentially.
🛠️ Installation
pip install git+https://github.com/LangeVC/ops-engine.git@v0.1.0