A fraud detection pipeline demonstrating model promotion across branches.
| Feature | Where | What it does |
|---|---|---|
@project_schedule |
TrainFlow | Cron schedule on main only; other branches deploy without a schedule |
@project_trigger |
EvaluateFlow | Automatically runs when TrainFlow publishes training_complete |
promote_assets |
CI workflow | Promotes assets from feature branch to main on PR merge |
Feature branch:
TrainFlow (manual trigger) → EvaluateFlow (pass/fail gate) → ReportFlow
On PR merge:
CI promotes assets to main with @candidate → teardown feature branch
Main branch:
TrainFlow (weekday 8 AM ET cron) → EvaluateFlow → ReportFlow
On a feature branch:
- TrainFlow deploys but has no cron (triggered manually)
- EvaluateFlow auto-triggers after training, reports pass/fail
- Models stay on the feature branch until PR merge
On PR merge:
- CI runs
promote_assets()to copy assets to main with@candidatealias - CI tears down the feature branch (flows, assets, metadata)
On main:
- TrainFlow runs on a cron (
0 8 * * 1-5ET) - EvaluateFlow auto-triggers after training
- ReportFlow prints the latest model
# Train
python flows/train/flow.py run
# Evaluate (requires a registered model from TrainFlow)
python flows/evaluate/flow.py run
# Report
python flows/report/flow.py runPush to GitHub. The CI pipeline handles three lifecycle events:
- Push — deploys flows to the platform (main gets cron, feature branches don't)
- PR merge — promotes assets to main with
@candidate, then tears down the feature branch - Branch delete — tears down branch resources