Repository navigation
feat(engine): capture per-control execution duration [SAO-18023] - #283
Merged
Merged
Conversation
josjeon
marked this pull request as ready for review
October 5, 2026 23:57
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
jasmine-ab-tea
approved these changes
Oct 7, 2026
Contributor
|
Regenerate the UI OpenAPI types — controls.py (line 960) adds execution_duration_ms to the public ControlMatch response, but the checked-in UI type at api-types.ts (line 1649) still omits it. |
namrataghadi-galileo
requested changes
Oct 8, 2026
namrataghadi-galileo
left a comment
Contributor
There was a problem hiding this comment.
Lets also make sure the ts-sdk is also updated.
Collaborator
Author
|
Fixed in |
josjeon
enabled auto-merge (squash)
October 8, 2026 22:11
namrataghadi-galileo
approved these changes
Oct 8, 2026
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
Scope
ControlMatch.execution_duration_msinmatches,non_matches, anderrors; TypeScript clients exposeexecutionDurationMs.null; cancelled evaluations without results stay omitted. Older responses without the field remain valid, and measured zero stays distinct from unknown timing.Risk and Rollout
agent_control.execution_duration_msattribute. Its passthrough needs a separate change for that AO path. This PR does not establish end-to-end AO UI behavior.Testing
make prepushgate locally and fullmake checkin Python CI; both passed. Local focused HTTP tests require no database; CI also exercised the full database-backed suite with Postgres.make sdk-ts-lint sdk-ts-typecheck sdk-ts-test sdk-ts-buildpassed; 15 tests passed.git diff --checkpassed.make sdk-ts-generate-checkand naming checks, passed.DevStack validation — 2026-10-05
josjeon-sao18023-pr283, UUIDc94170b6-7a6b-4f7e-945c-8351693d41bc, standard / capacity_s.3690373c3c6a182a2647bd3b894a648bb6fc66bd; all six Agent Control package refs in the Orbit integration branch pin this immutable commit.6b8b3a8aa98b96386a7738f06b0ded75093e4b31.gcr.io/rungalileo-dev/agent-control:codex-sao-18023-devstack-pr283; pushed manifest digest:sha256:8974bf0f30e206b547e824731d3995b5d311233a8d3c2a3d39283dd9d125ece2.running, the custom Agent Control version, and zero failed/pending pods. The digest is build/push evidence; an in-pod digest/source-hash inspection was not performed.Authorization; Bearer runtime-token exchange and evaluation succeeded.execution_duration_ms(six completed entries total).Observed functional samples (separate requests, milliseconds):
The probe completed with exit 0 and
status=passed. Successful SDK responses were counted; total HTTP attempts were not counted because its authentication path can retry. This is bounded functional validation, not a load test or latency/capacity acceptance result. Deployed TypeScript/FE, Luna/external evaluators, and AO ingestion remain outside this validation. Timeout/precheck/cancellation coverage is automated, not live here.The first signup attempt rejected a
+email alias before creating an account. Correcting only the probe's address format allowed bootstrap and validation to pass. The probe received successful deletion acknowledgements for its own bindings/controls, project and temporary API key; no absence GET readback was performed.The dedicated stack was destroyed after testing with
retain_data=false. Final Aegis readback isdestroyed, with no last error; teardown workflow.Checklist