Prepare v1.11.3 integration testing - #789
Merged
Merged
Conversation
Group workspace files now share the ordinary file-tool surface through an explicit workspace scope, while the four group business tools remain unchanged. Legacy group workspace names stay execution-compatible for in-flight checkpoints but are removed from new model contracts. Document reads reuse the existing binary parser and mutations retain durable fencing and reconciliation. Constraint: Group storage authorization and mutation receipts remain separate from private Agent Workspace storage. Rejected: Expose a second generation of group-specific file tools | it repeats the namespace-selection failure and still leaves write/edit parity unresolved. Confidence: high Scope-risk: moderate Reversibility: clean Directive: Do not add Group Workspace move_file until source deletion and target creation can be reconciled as one durable operation. Tested: 2057 backend tests; focused group runtime, model step, tool step, reconciler, builtin contract tests; Ruff; py_compile; diff check. Not-tested: Live 3010 group chat flow before deployment; real S3/Cloudflare document parsing path.
The agent chat view derived its "before" pagination cursor from `messages[0].created_at` alone, dropping the `|id` component. The backend's `before` contract is `<created_at>|<id>`, and it already returns a ready-to-use `cursor` field per message. When a single turn persists a batch of messages that share one `created_at` (e.g. a burst of tool_call rows) and that batch is larger than HISTORY_PAGE_SIZE, the timestamp-only cursor never advances: the backend's legacy-cursor fallback pins the id to the max UUID, so every page re-returns the same equal-timestamp rows. Pagination loops, inflating the tool count on each scroll, and any message older than the batch (including the user's first message) can never be loaded. Round-trip the backend `cursor` field at all four cursor-set sites, falling back to `created_at` only when absent. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Slides collection treats slice objects as one slide identifier, which makes ordinary read_document fail with a list/rId exception. Iterate slides normally and stop after the existing 50-slide safety limit. Constraint: Preserve the existing text-only PPTX extraction contract and 50-slide bound. Rejected: Add OCR for picture-only decks | outside this parser bug fix and materially expands runtime cost. Confidence: high Scope-risk: narrow Reversibility: clean Tested: Reproduced the list/rId failure; added a generated two-slide PPTX regression; parsed the reported 1.99MB file without exception; 2071 backend tests passed. Not-tested: OCR for image-only slides; authenticated browser retry after deployment.
The max_tool_rounds control limits model-result steps rather than tool calls, so its previous wording caused operators to compare an unrelated tool count with the Runtime ceiling. Align the Chinese, English, and fallback copy with the enforced semantics, including wait and error results. Constraint: Preserve the existing setting key, numeric range, default, and Runtime behavior Confidence: high Scope-risk: narrow Directive: Keep this copy aligned with node_executor model_step_count semantics Tested: Frontend node tests (85 passed); npm production build; i18n JSON parsing; git diff check Not-tested: Browser screenshot on a deployed server
Integrate PR dataelement#785 so the test branch round-trips the backend compound cursor instead of repeating equal-timestamp pages. Constraint: Preserve the PR head unchanged for integration testing Confidence: high Scope-risk: narrow Tested: Merge completed without conflicts Not-tested: Regression suite pending combined-branch validation
Integrate the shared PR dataelement#786/dataelement#787 head once so ordinary workspace tools can be exercised against group scope without duplicating identical history. Constraint: PR dataelement#786 and dataelement#787 resolve to the same head commit 6c6c637 Rejected: Create two merge commits for one commit | duplicate ancestry would add no product change Confidence: high Scope-risk: moderate Tested: Merge completed without conflicts Not-tested: Combined backend regression suite pending
Integrate PR dataelement#788 so testers evaluate the Runtime model-step ceiling with accurate Chinese and English copy. Constraint: Keep this integration copy-only Confidence: high Scope-risk: narrow Tested: Merge completed without conflicts Not-tested: Combined frontend suite and visual confirmation pending
Waiting-to-cancel transitions can emit distinct delivery receipts from one preserved checkpoint, while legacy group members may no longer resolve an Agent model. Narrow checkpoint uniqueness only for delivery receipts and let shared compaction fall back to the configured Group Compact model when no active Agent model remains. Constraint: Control-plane cancel must preserve the last authoritative Graph checkpoint Rejected: Fabricate a cancel checkpoint | violates the existing Runtime checkpoint contract Confidence: high Scope-risk: narrow Reversibility: clean before distinct same-checkpoint delivery rows are written Directive: Keep delivery idempotency keyed by run_id and idempotency_key Tested: 110 targeted backend tests, Alembic head validation, Python compileall, scoped Ruff Not-tested: Live 3010 migration and reconciliation before commit Related: dataelement#785 dataelement#786 dataelement#787 dataelement#788
The deployed alembic_version.version_num column is VARCHAR(32), so the original 36-character revision identifier allowed transactional DDL to run but failed when Alembic recorded the new head. Shorten only the revision identifier before retrying the untouched migration. Constraint: Existing installations store Alembic revisions in VARCHAR(32) Confidence: high Scope-risk: narrow Reversibility: clean Tested: 51 migration and schema tests, Alembic head resolution, Ruff, live transactional rollback verification Not-tested: Successful live migration before this commit
Y1fe1Zh0u
marked this pull request as ready for review
July 24, 2026 11:13
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
Why
The v1.11.3 test branch combines the pending integration work for 3010 regression testing. During live inspection, a waiting-to-cancel transition was permanently retrying product synchronization because delivery receipts used a checkpoint-level uniqueness rule that was broader than their idempotency identity. Historical Group Sessions were also unable to compact when inactive model references remained on otherwise active Group Agents, even though Group Compact runs with its own configured model.
Impact
Validation
110 passedacross Runtime delivery, checkpoint side effects, product reconciliation, Session Compact, schema, and unified migration testsallow_checkpoint_deliveriesas the single headDeployment
clawith_a2a_phase1environment on port 3010allow_checkpoint_deliveries; all four containers report zero restarts and the health endpoint is OKKnown issue found during E2E
delete_filewas confirmed to execute in Group Workspace despitedelete_files = L3, without creating an approval request.