Repository navigation
feat: manage existing-run experiment membership - #1515
Draft
Cedric Vidal (cedricvidal) wants to merge 22 commits into
Draft
Cedric Vidal (cedricvidal) wants to merge 22 commits into
Cedric Vidal (cedricvidal) wants to merge 22 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0d6d0638-e765-4142-b984-9fa2b494bb7f
Ensure interrupted membership rollovers claim request ownership before publishing the next experiment revision, clean up failed unpublished claims, and include membership repair in coordinator polling.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Create Experiments from existing standalone requests and add or remove multiple members through a single complete-set revision replacement with exact conflict reporting.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Publish one membership revision before deleting selected members, surface the resulting revision identity, and reject bulk deletion across multiple Experiments to avoid partial success.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Support creating Experiments from existing requests and moving or removing multiple requests with expected revision CAS and resulting revision output.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Verify inline-to-inline, inline-to-chunked with immutable archive, chunked growth, and chunked-to-inline shrink while preserving exact vectors and fingerprints.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
…ment-membership-recovery Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a # Conflicts: # docs/architecture/experiments.md
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a # Conflicts: # apps/portal/src/pages/ExperimentDetail.test.tsx # apps/portal/src/pages/ExperimentDetail.tsx # docs/architecture/experiments.md
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d995fd8-10c6-477c-b1d4-27ba9b2d762a
Cedric Vidal (cedricvidal)
added this pull request to stack #1518
October 17, 2026 00:58
Test Results (Node.js 22)test: Run #280
❌ Some tests failed!
|
…into cedricvidal-experiment-membership-recovery
Test Results (Node.js 22)test: Run #290
🎉 All tests passed! |
…into cedricvidal-experiment-membership-recovery
Test Results (Node.js 22)test: Run #297
❌ 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 complete-set membership revisions for creating Experiments from existing runs and atomically adding, moving, removing, or deleting members.
request.experimentIdas denormalized lookup state.Demos
Before
N/A — existing standalone runs could not be managed as Experiment membership.
After
Integrated Scope Portal walkthrough: bulk Create/Move conflict handling, Atom Experiment navigation, compact attempt history, completed/failed report versions, one-revision member removal, interrupted reconciliation, and retry recovery.
experiment-membership.mp4
Testing
pnpm vitest run packages/shared/src/experiments/experiment-store.test.ts apps/api/src/experiment-membership.test.ts apps/api/src/endpoints.test.ts apps/api/src/routes/experiments.test.ts apps/cli/src/commands/experiment.test.ts— passed, 5 files / 210 tests.pnpm --filter portal test -- src/lib/experiment-membership.test.ts src/lib/api-experiment-membership.test.ts src/pages/ExperimentDetail.test.tsx src/pages/ExperimentDetail.play.test.tsx src/pages/ExperimentsList.test.tsx src/pages/ExperimentsList.play.test.tsx src/components/Layout.test.tsx src/components/ExperimentReportCard.test.tsx— passed, 8 files / 39 tests.pnpm --filter portal build— passed.pnpm --filter portal build-storybook— passed.pnpm test -- --testTimeout=15000— passed before the later Portal-only PR B reconciliation, 286 files / 3,473 tests; affected Portal tests and builds were rerun above after the final merge.moovprecedesmdat.ENOSPC; the one permitted targeted retry failed at/var/tmp/libpod_builderwith the same condition. Safe exact cleanup reclaimed 0 bytes because Docker metadata reportedunable to open database file/ retained references. Teardown verified zero project containers, networks, and volumes forscope-mt-app-9-cedricvidal-refactored-meme. No further Docker cleanup was attempted.Documentation and compatibility
Updated
docs/architecture/app-design.md,docs/architecture/experiments.md,apps/cli/README.md, and the generated website OpenAPI artifact.The REST API adds existing-run creation plus bulk membership
POST/DELETEroutes. CLI addsexperiment create --request-id,experiment add/move, andexperiment remove. Existing APIs remain compatible. Request documents gain optional denormalized membership fields; no data migration or dependency change is required.Checklist
up()/down()and keep it CosmosDB-compatible. N/A — only optional schema fields were added.NOTICE/NOTICE-REVIEW.txtwithpnpm noticeas needed. N/A — no dependency changes.