Skip to content

fix(platform): resolve umbrella epic sub-issues (#2671 #2672 #2673)#2674

Merged
yannickmonney merged 3 commits into
mainfrom
fix/epics-sweep
Jul 12, 2026
Merged

fix(platform): resolve umbrella epic sub-issues (#2671 #2672 #2673)#2674
yannickmonney merged 3 commits into
mainfrom
fix/epics-sweep

Conversation

@yannickmonney

@yannickmonney yannickmonney commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

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_gate so 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) or already-fixed (verified correct with evidence; most gained regression tests here).

Issue Status
#2382 fixed — metrics consolidated under Settings → Metrics on shared @tale/ui primitives; port of PR #2561 onto the post-rework tree; old routes redirect (W8)
#2386 fixed — parallel session+token mint, WS pre-auth from validated persisted JWT, member-context shell cache (user/org-validated, fail-closed security gates uncached), cold-load markers test-locked (W8)
#2393 fixed — design/docs + design/sources merge (the issue’s leading naming option — flagged for the team, cheap to rename); full reference sweep, skills:sync/check green (W8)
#2567 fixed — agent tabs (W2) + SettingsPage max-w-3xl default with 4 documented wide-table opt-outs (W3)
#2569 already-fixed
#2570 already-fixed
#2571 already-fixed
#2572 already-fixed
#2573 already-fixed
#2576 fixed
#2577 already-fixed
#2581 fixed — jsdom→linkedom with fixture tests + lodash subpaths + stale externalPackages entry removed; ≤30 MiB AC is a scratch-backend measurement (see Verification)
#2586 fixed
#2598 fixed — skipped-count feedback, terminal unsupported status, single-file parity; AC4 = record the split decision — recorded on the issue as that AC requires
#2603 already-fixed
#2604 already-fixed
#2605 already-fixed
#2606 already-fixed
#2607 already-fixed
#2608 fixed
#2609 already-fixed
#2610 already-fixed
#2611 fixed
#2612 already-fixed
#2613 fixed
#2614 fixed
#2616 fixed
#2617 fixed — dead metadata.apps/catalogSync keys removed + stale nav fixture (W6)
#2618 fixed — merge verified + customerId contract phase shipped with reversible migration (W8)
#2620 fixed — 404 artifact + localized copy verified; container unknown-path→404 probe added (W4)
#2631 fixed — boot probe ships here (repo-side AC); root-cause hypothesis documented for upstream, AC3 is a 20-run CI observation (see Verification)
#2633 already-fixed
#2634 fixed
#2635 fixed
#2636 fixed
#2637 fixed
#2638 fixed
#2639 fixed
#2640 fixed
#2641 fixed
#2642 fixed
#2643 fixed
#2644 fixed
#2645 already-fixed
#2646 fixed
#2647 fixed — project/runtimes/deployment titles + the metrics-tab override that defeated it (W4)
#2648 already-fixed
#2649 fixed
#2650 already-fixed
#2651 already-fixed
#2652 fixed
#2653 fixed
#2654 already-fixed
#2655 fixed
#2656 already-fixed
#2657 already-fixed
#2658 fixed
#2659 fixed — Dry Run soft-disabled with keyboard-reachable tooltip; dead dry-run code removed (W6)
#2660 already-fixed
#2661 already-fixed
#2662 already-fixed
#2663 already-fixed
#2664 already-fixed
#2665 already-fixed
#2666 already-fixed
#2667 fixed
#2668 already-fixed
#2669 already-fixed
#2670 already-fixed

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/rag were deleted from this repo in #1883 (verified checklist commented on the issue). Recommend closing or re-homing it.

Verification

  • format ✅ · platform lint ✅ (0 warnings) · platform typecheck ✅ · migrations:check ✅ (54 migrations, corpus covered) · knip ✅ · skills:check ✅
  • Platform suite: 837 test files — green except 5 machine-load timeout flakes (all pass standalone 42/42; two are the repo's documented flake class)
  • ~80 new/extended test files; critical fixes proven red→green by reverting the fix (documented per package)
  • Adversarial review: 8 findings → 5 confirmed after refutation → all fixed; 3 refuted
  • Docs dev server verified booting locally in 648 ms (the CI docs-Playwright timeout is runner flake, not this branch)

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 upgrade rename 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

@yannickmonney
yannickmonney force-pushed the fix/epics-sweep branch 2 times, most recently from 4a0dcd4 to 52b26d3 Compare July 11, 2026 23:57
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.
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.
@yannickmonney
yannickmonney merged commit 5605bf5 into main Jul 12, 2026
71 checks passed
@yannickmonney
yannickmonney deleted the fix/epics-sweep branch July 12, 2026 01:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment