Repository navigation
[AIGTWY-4881] Add CUJ 6 repeated-config E2E journey - #987
Merged
Merged
Conversation
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
8 times, most recently
from
October 6, 2026 01:36
277e8ee to
ab9b2a1
Compare
david-siqi-liu
marked this pull request as ready for review
October 6, 2026 01:39
david-siqi-liu
requested review from
AarushiShah-db,
lilly-luo and
rohita5l
as code owners
October 6, 2026 01:39
UG reviewThe visible patch adds a cross-workspace, shared-home E2E journey and exposes recorder retargeting, with no production changes shown. The new test file is truncated, so its later phase fixtures and assertions could not be reviewed. No actionable findings.
Automated advisory review of |
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
from
October 6, 2026 01:44
ab9b2a1 to
dd1693e
Compare
Collaborator
Author
|
Re the UG review finding on
|
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
from
October 6, 2026 02:09
dd1693e to
0f80c82
Compare
Collaborator
Author
lilly-luo
reviewed
Oct 6, 2026
lilly-luo
reviewed
Oct 6, 2026
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
3 times, most recently
from
October 6, 2026 18:21
0dde064 to
542df38
Compare
This was referenced Oct 6, 2026
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
from
October 6, 2026 22:47
542df38 to
547d1a1
Compare
sunishsheth2009
pushed a commit
to sunishsheth2009/ucode
that referenced
this pull request
Oct 6, 2026
…atabricks#1010) Standalone extract of the `default_model` part of databricks#921, so CUJ 6 (databricks#987) isn't blocked on the provenance stack. `codex.default_model()` called `clear_model_preferences` when there was no managed default in the state it was given. `ug configure` writes Codex's managed `model`, then `save_state` -> `hydrate_state` (without the managed overlay) -> `default_model_for_tool` -> `codex.default_model()` deleted it again. Codex then started on whatever model the gateway listed first instead of the admin's default. The live CUJ 6 run reproduced this: with a UC-location config, Codex served `codex_extra` instead of the managed default `codex_primary`. Changes: - `src/ucode/agents/codex.py`: `default_model()` no longer calls `clear_model_preferences`, so looking up the default never rewrites config. The launch path still calls it, so a stale model ug pinned is still retired at launch. - `tests/test_agent_codex.py`: the test that asserted the lookup cleared `model` and `model_reasoning_effort` now asserts it leaves the config byte-for-byte unchanged (the same flip databricks#921 makes). databricks#921 still carries the broader provenance-based fix. When it lands, it supersedes this line with no conflict in intent. Validation: `ruff check` and `ruff format --check` pass. Full `pytest`: 3201 passed; the only 2 failures are `test_e2e_user_agent`, which needs a live gateway and also fails locally on main. The updated test fails without the fix. This pull request and its description were written by Isaac. Co-authored-by: Isaac <no-reply@databricks.com>
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
from
October 6, 2026 23:13
547d1a1 to
0a7edee
Compare
lilly-luo
reviewed
Oct 6, 2026
lilly-luo
reviewed
Oct 6, 2026
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
from
October 7, 2026 01:44
0a7edee to
52a78cb
Compare
david-siqi-liu
enabled auto-merge
October 7, 2026 03:02
One shared home moves through three read-only workspaces (A, B, C), each with exactly one published CodingAgentConfig, on main's dedicated-workspace CUJ framework. Gateway requests are asserted through the TUI request recorder. Co-authored-by: Isaac <no-reply@databricks.com>
david-siqi-liu
force-pushed
the
david/integ-test-cuj-6
branch
from
October 7, 2026 03:41
52a78cb to
2911d8c
Compare
tt-le
approved these changes
Oct 7, 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.
CUJ 6 (AIGTWY-4881, epic AIGTWY-4875) checks that a developer who receives successive admin configs ends up with exactly the latest one: no stale ug-managed values, and their own settings untouched. It runs live on main's dedicated-workspace CUJ framework (#1000) with the TUI request recorder (#994), against the CUJ 6 plan in the UG Configure E2E doc.
Workspace configs are read only, because parallel CI jobs share them. Each phase is the single published config of its own pre-provisioned workspace, and one shared home moves through them:
dbc-8c38ce9b-634b, CUJ 1's config plus the named MCPug_e2e.tools.fixture_readerdbc-175bc4a3-a511, Claude on the Bedrock MPSug_e2e.providers.bedrock, Codex on UC discoveryug_e2e.models, Codex as the default agentdbc-998133ab-de86, Codex only, on the static listsystem.ai.gpt-5-6-lunaAll three share one metastore, the
ug_e2efixtures, and one trace table. The test never writes workspace config; it checks each published config against the plan at the start and asserts it is unchanged at teardown. A to B to C also exercises ug's cross-workspace switch.Builds on #1010 (merged), and on #1004 (merged), whose
workspace_originkeeps the TUI request recorder'shttp://127.0.0.1:<port>origin for the workspace API calls CUJ 6 routes through it.Changes:
tests/e2e_cuj/test_cuj_repeated_config.py: one class, phases as ordered class-scoped fixtures (phase_a->phase_b->phase_c) returning frozen evidence, 28 small tests on top.databricks-model-provider-serviceand no Phase A headers; Codex carriesdatabricks-model-service-parent-schemaand only the Phase B header; request and turn models match the sources. Bareugin a real terminal launches Codex and completes a task onug_e2e.models.codex_primary, and writes the Phase B header into/etc/codex/managed_config.toml. Static picker, family defaults, tracing keys, static Codex catalog, and the managed MCP are gone and stay gone after launches. Codex emits a span; Claude emits none./etc. Codex requests carry no Phase B headers, the picker is exactly Luna, Codex and bareugboth run Luna,ug claudeis rejected with no inference request, and no Codex span is emitted while the Phase B span proves the trace query works.tests/e2e_cuj/helpers/constants.py: the CUJ 6 metastore fixtures. The Claude tracing keys come fromucode.agents.claude.CLAUDE_OTEL_TRACE_ENV_KEYS.tests/e2e_cuj/helpers/tui_request_recorder.py:retarget_sessionis public so a terminal configure can be retargeted to the recorder.Known gaps (tracked in AIGTWY-4972):
Validation: ruff check and format pass; related unit tests pass. Live:
E2E CUJson this head passed 48 tests (CUJ 6's 28, plus CUJ 1, 2, 4, and 5) in 11m36s: https://github.com/databricks/unity-gateway/actions/runs/37567899055/job/112619786676This pull request and its description were written by Isaac.