Repository navigation
feat: add canonical Experiment foundation - #1512
Draft
Cedric Vidal (cedricvidal) wants to merge 25 commits into
Draft
Cedric Vidal (cedricvidal) wants to merge 25 commits into
Cedric Vidal (cedricvidal) wants to merge 25 commits into
Conversation
Introduce stable submission identities, deterministic request/run vectors, resumable CAS rollover with immutable history, named-handler dependency evaluation, Cosmos-safe indexes, and attempt-scoped worker claim/completion helpers. Align the observation handler identity with the pp-observations dependency contract. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 99f84f04-d3b0-40f1-a254-4dfbd21e4d87
Finalize every native submit as an exact submission vector, recover interrupted final writes, reconcile and archive vector drift, dispatch only current attempts, and expose project-scoped submission detail, history, and retry APIs with polling repair. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 99f84f04-d3b0-40f1-a254-4dfbd21e4d87
Navigate successful submits to a Submission Detail shell, link grouped runs and run detail back to their parent submission, surface readiness and blocking pairs, and add CLI list/get/history/retry parity with Storybook coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 99f84f04-d3b0-40f1-a254-4dfbd21e4d87
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 99f84f04-d3b0-40f1-a254-4dfbd21e4d87
Introduce the Experiment aggregate, bounded request payload schemas, deterministic Cosmos-safe chunk routing/layout, persistence CAS and repair primitives, focused tests, and migration indexes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8fe76b9e-1205-4910-b51b-e8fa51538125
Replace imported Submission persistence surfaces with Experiment correlation and handler types. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Replace legacy Submission API and scheduler surfaces with project-scoped Experiment creation, execution history, retry, exact queue claims, recovery, and OpenAPI contracts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b05e74ff-44da-4e78-9f05-0e256009e7ee
Restore submissionId as a request-batch correlation contract while keeping Experiment as the only aggregate. Require project scope for nested Experiment execution reads and publish the shared composition deprecation identifier. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b05e74ff-44da-4e78-9f05-0e256009e7ee
Add representation-preserving request projection updates with root publication claims, versioned bucket CAS, resumable partial-failure outcomes, and inline/chunked concurrency coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8fe76b9e-1205-4910-b51b-e8fa51538125
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4e02b3c3-5ec3-44f8-b88d-642673088e41
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4e02b3c3-5ec3-44f8-b88d-642673088e41
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Unblock the required clean full-stack Docker build by restoring the import for the already-rendered CriteriaBadge component. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Remove the explicit-empty checkbox, progressively disclose run composition from scenario selection, and keep Experiment API creation discriminated. Add component and Storybook interaction coverage and update the creation guides. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Use the Atom icon for Experiment navigation and empty states while preserving the Criteria flask identity. Add focused layout and Storybook assertions for the distinct icons. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Cedric Vidal (cedricvidal)
added this pull request to stack #1518
October 17, 2026 00:58
This was referenced Oct 17, 2026
Test Results (Node.js 22)test: Run #278
❌ Some tests failed!
|
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Test Results (Node.js 22)test: Run #288
❌ Some tests failed!
|
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Test Results (Node.js 22)test: Run #291
❌ Some tests failed!
|
This reverts commit 994d4c0. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 92d03055-789e-48b7-9a44-6de5b357f486
Test Results (Node.js 22)test: Run #295
❌ Some tests failed!
|
This branch has not been deployed
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
Adds the canonical Experiment foundation as the sole experiment aggregate across shared persistence, API coordination, scheduler integration, CLI, Portal, Storybook, OpenAPI, migrations, deployment, tests, and operations.
ListLayout, filter rail,DataTable, column customization, pagination, and action layout while preserving Experiment-specific status and navigation; Experiments now immediately precedes Runs in the primary sidebar.submissionIdcorrelation remains compatibility-only.Demos
Before
N/A — this introduces the canonical Experiment workflow.
After
pr-a-experiment-progressive-actions.mp4
Exhaustive action-driven walkthrough of Experiment composition: empty state → task reveal → prompt helper, codebase, resources, and AGENTS.md → advanced options, iteration policy, and gate configuration → Quick Start profile locking/versioning → variation expansion and profile swap → occurrence multiplication → manual mode → agent/model-dependent reasoning and tool capabilities → exact run-count CTA → task reset and collapse.
Testing
pnpm exec vitest run apps/portal/src/components/Layout.test.tsx apps/portal/src/pages/ExperimentsList.test.tsx apps/portal/src/pages/ExperimentsList.play.test.tsx(17/17).pnpm exec vitest run apps/portal/src/pages/ExperimentDetail.test.tsx apps/portal/src/pages/ExperimentDetail.play.test.tsx(4/4).pnpm exec vitest run apps/api/src/routes/experiments.test.ts apps/api/src/experiment-coordinator.test.ts apps/cli/src/commands/experiment.test.ts(14/14).pnpm vitest run apps/portal/src/pages/SubmitRun.test.tsx apps/portal/src/components/ui/stories.play.test.tsx(34/34).pnpm --filter api build.pnpm --filter cli build:tsc.pnpm --filter portal lint.pnpm --filter portal build.pnpm --dir apps/portal exec storybook build -o /tmp/pr-a-launcher-revert-storybook.cd website && pnpm test && pnpm build(7/7 tests and production build).pwsh, an unchanged prompt fixture omittingsuggestedSubject: "run", and two post-processor tests constructing without the database read by unchanged base code.Documentation and compatibility
docs/architecture/experiments.mdand updated architecture/navigation references.POST /requests,run submit, and/runs/newremain first-class. Only overlapping legacy composition inputs are conditionally deprecated; there is no Sunset date.storageProfileVersion = "cosmos-mongo-2mb-v1".Checklist
up()/down()and keep it CosmosDB-compatible.NOTICE/NOTICE-REVIEW.txtwithpnpm noticeas needed. N/A — no dependencies changed.