feat(calibration): per-repo knob overrides — storage scheme, resolution seam, status listing#8259
Merged
Merged
Conversation
…on seam, status listing (#8216) Epic #8211 track B: repos can now carry individually-earned knob values. - Storage: one system_flags key per (knob, repo) — <knob>:repo:<owner/repo> beside the global key; migration-free on the schemaless flag table and enumerable with one LIKE for the status surface. - ONE resolution seam (getKnobOverrideForRepo) with the documented precedence: explicit yml setting > per-repo earned > global earned > shipped. Identical loosening-only validation per scope; the knob's autotune flag gates every scope — off restores shipped everywhere instantly. The gate-policy threading gains the repo dimension at all four call sites; the pure twins are untouched (they still consume one resolved number). - GET /v1/internal/calibration/knobs lists each knob's validated per-repo overrides, sorted, invalid rows excluded — a lingering row is always visible to the operator. - Docs: the precedence table on the backtest-calibration page. Evaluation stays global-only by design — the per-repo LOOP is #8217. Closes #8216
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
loopover-ui | 9d92d3d | Commit Preview URL Branch Preview URL |
Jul 23 2026, 03:47 PM |
Bundle ReportChanges will increase total bundle size by 4.27kB (0.06%) ⬆️. This is within the configured threshold ✅ Detailed changes
Affected Assets, Files, and Routes:view changes for bundle: loopover-uiAssets Changed:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8259 +/- ##
==========================================
- Coverage 92.14% 91.61% -0.53%
==========================================
Files 785 785
Lines 78715 78728 +13
Branches 23759 23759
==========================================
- Hits 72531 72129 -402
- Misses 5062 5524 +462
+ Partials 1122 1075 -47
Flags with carried forward coverage won't be shown. Click here to find out more.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Epic #8211 track B (#8216): repos can carry individually-earned knob values.
system_flagskey per (knob, repo) —<knob>:repo:<owner/repo>beside the global key. Migration-free on the schemaless flag table; enumerable with one LIKE for the status surface.getKnobOverrideForRepo) with the documented precedence: explicit.loopover.ymlsetting > per-repo earned > global earned > shipped. Identical loosening-only validation per scope; the knob's autotune flag gates every scope — off restores shipped everywhere instantly. The gate-policy threading gains the repo dimension at all four call sites; the pure twins are untouched.GET /v1/internal/calibration/knobslists each knob's validated per-repo overrides (sorted, invalid rows excluded) — a lingering row is always visible.Validation
Full
npm run test:cigreen (TEST_CI_EXIT=0, zero failed files); 100% line+branch on the module including the full precedence matrix (repo wins, invalid-repo-row fall-through, flag-off zeroes all scopes).Closes #8216