Start here (10-minute setup)
- Keep your current model as control.
- Set your fine-tuned model as canary.
- Start at 5% traffic on one repo.
- Watch monitoring metrics for 2-7 days.
- Promote only if quality and stability stay healthy.
Environment settings
Set these on theapps/www runtime host:
How routing works
For each PR event, Dojo computes a stable bucket fromrepo + prNumber.
- If bucket is inside
GITHUB_LABELER_CANARY_PERCENT, route to canary. - Otherwise, route to control.
- If canary is disabled (
CANARY_PERCENT=0), all traffic stays on control.
What gets logged
Each JSONL event stores:- where the decision came from (
source,repoFullName,prNumber) - which model lane handled it (
modelLane,modelName,canaryBucket) - deterministic vs model outputs
- final selected labels and apply changes
- disagreement signal (
modelOverrodeDeterministic)
Analyze data
Promotion and rollback
Default rollout ladder:- 5%
- 15%
- 30%
- 50%
- 100% only after stable outcomes and human review
Data lake note
For training, ship JSONL logs to object storage (S3/R2/GCS), partition by date and repo. The most valuable training signal is human correction history. Related:- Dojo → Label flywheel monitoring