Repository navigation
feat(benchsdk-runner): reliability config block + --scheduled-for - #562
Merged
Merged
Conversation
- defineBenchmarkConfig accepts type: 'reliability' with a strict reliability block (interval, graceMs, degradedWhen, target, layout, sections, feedCard). Pairing enforced both ways; unknown section types/options rejected at definition time; a metric section must name a display.metrics key or the built-in 'latency' metric. Mirrors the platform's config.reliability schema. - The materialize upsert sends config.reliability alongside index/display/scoring so a reliability-typed bench file passes the platform's type-vs-config check on first run. - New --scheduled-for <ISO-8601> flag stamps config.trigger.scheduledFor so a late-reporting scheduled run fills its real reliability slot instead of the nearest by creation time. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
…t test export * picks up the new runner constant exports (layouts, section types, latency metric key, stats, windows, outcomes); they are arrays/ strings like BENCHMARK_INDEX_LAYOUTS, not functions. Also adds the reliability types to the _PublicTypeSurface proof list. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
dtice25
marked this pull request as ready for review
October 28, 2026 18:17
Contributor License AgreementAll contributors are covered by a CLA. |
Contributor
There was a problem hiding this comment.
✅ Devin resolved the finding on 988b973
Fixed by Devin (1)
- Ambiguous timestamps misassign reliability slots
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
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.
Summary
Lands rollout step 2 of the reliability benchmark design (
docs/2026-09-29-benchmark-types.mdin benchmarks-platform): the runner side oftype: 'reliability'.reliabilityconfig block —defineBenchmarkConfignow acceptstype: 'reliability'with a strictreliabilityblock mirroring the platform'sconfig.reliabilityzod schema:Pairing is enforced both ways (block requires the type, type requires the block). Unlike the platform — which skips unknown section types at render time — the runner is the strict check: unknown section types, windows, stats, and outcomes throw at definition time. A
metricsection must name a key indisplay.metricsor the built-in'latency'(RELIABILITY_LATENCY_METRIC).Upsert — the materialize path sends
config.reliabilityalongsideindex/display/scoring, so a reliability-typed bench file passes the platform's type-vs-config check on first run.--scheduled-for <ISO-8601>— new flag stamped intoconfig.trigger.scheduledForon the run (read byreliability-slots.ts'sassignedAt). A scheduled run that reports late fills its real slot instead of whichever slot it landed in by creation time; without the flag the platform falls back to nearest-slot. Exposed onCliArgs/ResolvedRunConfig/runConfigToJson.Testing
27 new
bench-config.test.tscases cover the full block: type/block pairing, interval parsing + 30s minimum,target.uptimerange, unknown keys, each section type's options, unknown section types, and themetric-vs-display.metricsrule including thelatencyexemption.runner.test.tsadds--scheduled-forparse/reject cases, trigger JSON stamping, and aconfig.reliabilityupsert assertion. 221 tests pass; rootpnpm typecheckclean.Link to Devin session: https://app.devin.ai/sessions/fdf951a9b9184f11a6d65e3c5056e907
Open in Devin Desktop: https://app.devin.ai/desktop/session/fdf951a9b9184f11a6d65e3c5056e907?variant=devin
Requested by: @dtice25