fix(platform): resolve umbrella epic sub-issues (#2671 #2672 #2673)#2674
Merged
Conversation
This was referenced Jul 11, 2026
yannickmonney
force-pushed
the
fix/epics-sweep
branch
2 times, most recently
from
July 11, 2026 23:57
4a0dcd4 to
52b26d3
Compare
This was referenced Jul 11, 2026
71 sub-issues of the Improvements/Bugs/Performance umbrella epics fixed in one sweep: task-assignment liveness, automation install/readiness and schedule validation, contacts-merge fallout incl. the customerId contract phase, governance editors, server-side attachment caps on chat and conversations, SVG/mermaid sanitization, discussion agent mentions, org provisioning recovery, provider/SSO ergonomics, agent-editor validation, metrics consolidation under Settings, cold-load auth-handshake collapse, legacy-volume upgrade recovery, design/ + designs/ directory merge, prompts, docs and guides, crawler linkedom swap, E2E boot probe — plus same-class sweep siblings, absorbed PR #2578, a port of PR #2561, and all adversarial-review findings, incl. a versioned migration upgrading per-org run-assigned-task packs. Squashed by request; per-issue detail in the PR description.
yannickmonney
force-pushed
the
fix/epics-sweep
branch
from
July 12, 2026 00:29
52b26d3 to
e943814
Compare
The #2618 contract phase dropped customerId from the production conversations and supportCases tables while the runnable migration chain still writes it: the world corpus seeds conversations rows carrying it at baseline (Migrations E2E seeds them into the live deployment, where the production schema rejected the insert), and 0.3.4/27+28 down() patch the recovered value back during a full rollback. A real upgrade breaks the same way at push-time schema validation, since the 31/32 teardowns are operator-run destructive migrations. Keep the optional fields until the chain baseline has advanced past the teardowns. With the fields restored, the worldConversationsTable and worldSupportCasesTable chain unions became byte-identical copies of the production tables — map the production defs directly instead. Guard: world_seed now also seeds the baseline corpus under the CURRENT production schema (convex-test mirrors the backend's declared-vs-legacy validation posture), so a premature contract fails in vitest instead of minutes into the container e2e.
Ripple of restoring the transitional customerId schema fields: the supportCaseRowValidator must tolerate the field again (raw docs carry it until the contract-phase clear; Convex return-validation is strict — the Unit gate's coverage test caught this), transformConversation must keep stripping it so it never leaks into the ConversationItem shape, and its regression test returns. Record the restored fields in the schema snapshot baseline so the eventual contract-phase drop registers as a data-unsafe removal instead of a silent no-op.
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
One sweep resolving the three umbrella epics — Improvements #2671, Bugs #2672, Performance #2673 — end to end: 69 sub-issues close on merge, nothing left half-done. The four large epics were folded in by dedicated agents (metrics consolidation #2382 ported from stale PR #2561, cold-load auth-handshake #2386, design-directory merge #2393, contacts contract phase #2618), PR #2578 was absorbed (+ the identical uploaded-bundle bug fixed on the workflows surface it missed), and the #1755 tracker's in-repo items are all landed or verified moot.
Built by ~50 sandboxed agents across 8 waves with disjoint file boundaries, hardened by a 6-lens adversarial review (find → refute; all 5 confirmed findings fixed here, incl. a versioned migration
v0_3_4/30_run_assigned_task_admission_gateso the task-pack choreography fix reaches already-provisioned orgs) and a manual pass that repaired agent-introduced NUL-byte corruption and resolved the #2578 semantic merge. Squashed to one commit by request.Per-issue status — final
Every row is terminal:
fixed(changed in this PR) oralready-fixed(verified correct with evidence; most gained regression tests here).Sweep siblings fixed beyond the filed issues
Conversations-surface server-side attachment caps (#2661 class) · task.mentioned direct-dispatch fallback (#2637 class) · retryRagIndexing terminal-status guard + upload-status 'unsupported' union (#2598 class) · workflows-surface installed-only listing (#2564 class) · triage-roster liveness (#2603 class) · workflow-steps trigger banner readiness (#2605/#2606 class) · workflow-spec editor real validation (#2665 class) · review-request notifications forced on in every dispatch path incl. stale rows (#2651 residual) · prompt size-indicator unit regression in both dialogs · DOMPurify profile keeping legitimate foreignObject/use SVG content while payloads stay dead · mermaid output sanitization · a11y: needs-configuration badge keyboard/SR reachable, unsupported-dialog description, dirty-dot sr-only.
Tracker #1755 (stays open only as a tracker)
P1-8 (legacy-volume detect+rename in
tale upgrade+ runbook en/de/fr + loud warning) lands here; all quick wins verified fixed earlier or fixed here; the remaining items are MOOT —services/crawler/services/ragwere deleted from this repo in #1883 (verified checklist commented on the issue). Recommend closing or re-homing it.Verification
Observations that only CI/operators can make (all code work is in this PR; these are measurements, not remaining work): fresh-backend push size ≤30 MiB (#2581), 20 consecutive clean E2E boots (#2631 AC3), cold-load timing on a live stack (#2386 — hard-refresh a dashboard route, read the
cold-load:*performance marks),tale upgraderename pass against a real ≤0.3.1 volume, new Playwright/container specs on this very CI run.Closing
Closes #2382
Closes #2386
Closes #2393
Closes #2567
Closes #2568
Closes #2569
Closes #2570
Closes #2571
Closes #2572
Closes #2573
Closes #2576
Closes #2577
Closes #2586
Closes #2598
Closes #2602
Closes #2603
Closes #2604
Closes #2605
Closes #2606
Closes #2607
Closes #2608
Closes #2609
Closes #2610
Closes #2611
Closes #2612
Closes #2613
Closes #2614
Closes #2616
Closes #2617
Closes #2618
Closes #2620
Closes #2633
Closes #2634
Closes #2635
Closes #2636
Closes #2637
Closes #2638
Closes #2639
Closes #2640
Closes #2641
Closes #2642
Closes #2643
Closes #2644
Closes #2645
Closes #2646
Closes #2647
Closes #2648
Closes #2649
Closes #2650
Closes #2651
Closes #2652
Closes #2653
Closes #2654
Closes #2655
Closes #2656
Closes #2657
Closes #2658
Closes #2659
Closes #2660
Closes #2661
Closes #2662
Closes #2663
Closes #2664
Closes #2665
Closes #2666
Closes #2667
Closes #2668
Closes #2669
Closes #2670