Repository navigation
feat(drips): flag-gated slices for spikes 655/656/657/660 (#517 #518 #520 #523) - #573
Merged
Darkvader-ship-it merged 1 commit intoOct 17, 2026
Conversation
|
@dimka90 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
ExcelDsigN-tech
added a commit
to ExcelDsigN-tech/Phase
that referenced
this pull request
Oct 18, 2026
Resolve lib/feature-flags.ts: keep the restored phase-146..153, editions and timed-drops members alongside upstream phase-158..161. The spike flags move to their own branches.
ExcelDsigN-tech
added a commit
to ExcelDsigN-tech/Phase
that referenced
this pull request
Oct 18, 2026
…api-versioning-deprecation Keep both flag rows in the docs and re-add phase-163 to lib/feature-flags.ts.
ExcelDsigN-tech
added a commit
to ExcelDsigN-tech/Phase
that referenced
this pull request
Oct 18, 2026
…to feat/docs-api-playground Keep both flag rows in the docs and re-add phase-162/phase-163 to lib/feature-flags.ts.
ExcelDsigN-tech
added a commit
to ExcelDsigN-tech/Phase
that referenced
this pull request
Oct 18, 2026
Upstream PHASE-STELLAR#573 assigned phase-159 to the batched owner-key loader.
ExcelDsigN-tech
added a commit
to ExcelDsigN-tech/Phase
that referenced
this pull request
Oct 18, 2026
…animation-scroll-jank-purge Keep both flag rows in the docs; feature-flags.ts takes the baseline and adds phase-164.
ExcelDsigN-tech
added a commit
to ExcelDsigN-tech/Phase
that referenced
this pull request
Oct 18, 2026
Upstream PHASE-STELLAR#573 assigned phase-161 to the typed contract-error taxonomy.
ExcelDsigN-tech
added a commit
to ExcelDsigN-tech/Phase
that referenced
this pull request
Oct 18, 2026
…creator-cli Keep both flag rows in the docs; feature-flags.ts takes the baseline and adds phase-165.
This was referenced Oct 18, 2026
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
Four flag-gated partial slices for the assigned extreme spikes, following the existing
phase-154convention (documented inPROJECT_ARCHITECTURE.md§10). Each slice is self-containedlib/logic with unit tests, a new feature flag (default off), and a rollback row. No production route wiring is added, so behavior is unchanged until a flag is enabled.lib/soroban-read-coalescer.ts+ flagphase-158lib/owner-batch-loader.ts+ flagphase-159lib/web-vitals-budgets.ts+ flagphase-160lib/phase-error-taxonomy.ts+ flagphase-161Issues
Issue 517: Spike 655 — Soroban RPC request batching plus dedupe for simulation storms
Problem: Repeated/identical simulations (same
get_config/balance/owner_ofwithin a request) each hitsimulateTransaction, so duplicate reads and 429/5xx retry storms multiply RPC load.Resolution:
lib/soroban-read-coalescer.ts— process-local coalescer that shares one in-flight promise for identical(contractId, method, args)reads and memoizes results for a short TTL, with optional stale-on-error fallback and closed-label metrics (lib/__tests__/soroban-read-coalescer.test.ts). Flagphase-158. Follow-ups: JSON-RPC array batching / cross-process cache.Closes #517
Issue 518: Spike 656 — N+1 elimination in explore, world and profile reads with DataLoader batching
Problem: Explore/world/profile issue one
owner_of(id)simulation per token (N+1), multiplying round-trips on every listing page.Resolution:
lib/owner-batch-loader.ts— a DataLoader-style per-tick coalescing loader with key dedupe,maxBatchSizechunking, cross-tick memoization, and per-key error results (lib/__tests__/owner-batch-loader.test.ts). Flagphase-159. Follow-ups: route wiring, index pushdown, sidecarmget.Closes #518
Issue 520: Spike 657 — Web Vitals budgets with CI gates plus RUM pipeline
Problem: No per-route performance budget exists, so route regressions go unnoticed; the app only ships a page-view beacon.
Resolution:
lib/web-vitals-budgets.ts— per-route LCP/INP/CLS budget table with dynamic-segment matching,evaluateVitalgood/needs-improvement/poor rating, andsummarizeVitalsworst-per-vital pass/fail summary (lib/__tests__/web-vitals-budgets.test.ts). Flagphase-160. Follow-ups: live collector, RUM transport, PR-blocking gate.Closes #520
Issue 523: Spike 660 — Public TypeScript SDK for the PHASE protocol with error taxonomy
Problem: The SDK-facing error surface is free-form strings (
parsePhaseContractErrorCode+humanizePhaseHostErrorMessage), so consumers cannot branch on a stable enum.Resolution:
lib/phase-error-taxonomy.ts— a code-stablePhaseErrortaxonomy mirroring contract discriminants 1..39 withretryablehints anduserMessageKeys, plusmapPhaseContractErrorthat converts a raw host error into a typed descriptor (lib/__tests__/phase-error-taxonomy.test.ts). Flagphase-161. Follow-ups: Horizon/RPC transport taxonomy, retry/circuit policy, dual CJS/ESM packaging.Closes #523
Verification
npx vitest run lib/__tests__/{soroban-read-coalescer,owner-batch-loader,web-vitals-budgets,phase-error-taxonomy}.test.ts→ 26 passed / 26.npx tsc --noEmit→ no errors in touched files (pre-existing errors elsewhere onmain).npx vitest runstill has unrelated pre-existing failures (phase-142/143/146/147 AI suites,artist-profile-clientimport); none touch this change.Flags / rollback
All four flags default off. Rollback = unset
NEXT_PUBLIC_FEATURE_PHASE_158..161/FEATURE_PHASE_158..161(or set0) and restart; no persisted state. Documented inPROJECT_ARCHITECTURE.md§10 anddocs/TECHNICAL.md§9.1.