Skip to content

Back-merge master into dev (conflicts resolved) - #5252

Open
QuiltSimon wants to merge 16 commits into
devfrom
wip/backmerge-5242
Open

Back-merge master into dev (conflicts resolved)#5252
QuiltSimon wants to merge 16 commits into
devfrom
wip/backmerge-5242

Conversation

@QuiltSimon

@QuiltSimon QuiltSimon commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Resolves the conflicts blocking #5242 (and #5213 before it). Supersedes #5242 — that PR is the workflow's automated attempt with the conflicts unresolved.

dev was 15 commits behind master with master no longer an ancestor of it, so every later devmaster merge would conflict on every file both branches touched. This restores the ancestry.

The five conflicts and how each was resolved

App.jsx — took master. It renames DataProductsRouteDataProductsGate and wraps it in a Suspense boundary (#5209's fix); a strict superset of dev's version.

PackageFilters.tsx, model.ts, model.spec.ts — took master. This is the metadata-ordering feature that existed on both sides:

So master's version contains and supersedes dev's — 54 lines vs dev's 56 from the same base. @fiskus confirmed this read.

Why this does not discard @kevinemoore's Wave 2 work, which was the open question: his ee84a1e53 ("adopt PackageOrdering unified-ordering contract") and 739560dd0 ("decouple sort-eligibility from facet render type") rewrite model.ts heavily but touch zero FACET_ORDER* lines. Inside the four conflict hunks, the only mentions of Wave 2 identifiers are two prose comments referencing PRESET_ORDERINGS. The conflict is entirely the FACET_ORDER* UI question; Wave 2 sits outside every hunk and is intact in the merged tree (orderingToResultOrder ×4, the Ordering type, PRESET_ORDERINGS).

Why not resolve by hand: git's auto-merge of PackageFilters.tsx produced a file that would have compiled and passed tests while rendering duplicate sort controls — two ordering.offered blocks and two FacetsFilteringState.match blocks, with master's single "Sort by" reduced to dead code and its constants unused. That is why this needed a deliberate resolution rather than accepting the merge.

CHANGELOG.md — both sides' entries kept, master's above dev's, per merge-time ordering.

Verification

  • TZ=UTC npx tsc --noEmit -p . — clean
  • TZ=UTC npx vitest run (full catalog suite) — 174 files, 1637 passed, 1 skipped
  • npx oxfmt --check on the changed dirs — clean
  • npm run gql:generate — runs successfully, so every query validates against the merged schema

Ancestry checks: origin/master is now an ancestor of this merge; both Wave 2 commits remain ancestors; Alexei's theme/NavBar work and the data-products commits are all preserved.

⚠️ One thing deliberately left undone

gql:generate regenerates app/model/graphql/{schema,types}.generated.ts with 1566 deletions — it wants to strip the entire data-products GraphQL contract, because master's #5223 removed that contract from the schema while dev still carries the generated artifacts.

I reverted that output rather than commit it here. It is a real inconsistency in dev (generated files disagreeing with their own schema), but deleting a contract hinges on whether enterprise #1125 — the registry half of data-products — targets this release or the next. @kevinemoore, that question is still open. Nothing here depends on the answer: the tree builds and all tests pass either way, and the generated files are not hand-edited.

Worth doing as its own change once #1125's target is known.

🤖 Generated with Claude Code

Greptile Summary

This back-merge combines master’s recent Python SDK, Catalog UI, search, preview, volume-list, workflow, and GraphQL-contract changes into dev. The merge preserves the newer unified metadata-ordering UI and route loading boundary, but leaves generated Catalog GraphQL artifacts inconsistent with the changed shared schema.

  • Removes the experimental Python agent-context API and its tests.
  • Refines Catalog search ordering, error boundaries, Perspective cleanup, volume rendering, admin bucket controls, and front-door examples.
  • Removes the unserved data-products GraphQL schema while retaining the fixture-backed preview UI.
  • Updates the automatic master-to-dev back-merge workflow with drift escalation.

Confidence Score: 4/5

The pull request should not merge until the generated Catalog GraphQL artifacts are reconciled with the removed schema so the required validation job can pass.

Removing the data-products schema while retaining generated types and introspection guarantees that Catalog code generation changes the working tree, and the required CI job rejects that state.

Files Needing Attention: shared/graphql/schema.graphql, catalog/app/model/graphql/schema.generated.ts, catalog/app/model/graphql/types.generated.ts

Important Files Changed

Filename Overview
shared/graphql/schema.graphql Removes the complete data-products service contract without updating generated Catalog artifacts, causing the codegen clean-tree gate to fail.
catalog/app/model/graphql/types.generated.ts Remains unchanged and still contains types for the removed data-products schema.
catalog/app/model/graphql/schema.generated.ts Remains unchanged and still exposes removed data-products fields through generated introspection.
catalog/app/containers/Search/model.ts Adds the combined facet-ordering contract and safer malformed-filter parsing with corresponding tests.
catalog/app/utils/perspective.ts Strengthens asynchronous Perspective resource cleanup and routes load failures through React error boundaries.
.github/workflows/back-merge-dev.yaml Adds bounded drift escalation when an existing conflict-resolution pull request remains open.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Schema[shared GraphQL schema] --> Generate[npm run gql:generate]
  Generate --> Types[Catalog generated types]
  Generate --> Introspection[Catalog generated introspection]
  Types --> Clean{Git tree clean?}
  Introspection --> Clean
  Clean -->|Yes| RemainingCI[Lint, typecheck, tests, build]
  Clean -->|No| Failure[Catalog CI fails]
Loading

Reviews (1): Last reviewed commit: "Merge remote-tracking branch 'origin/mas..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

Context used (5)

fiskus and others added 16 commits August 25, 2026 14:46
…ordering (#5216)

Co-authored-by: Alexei Mochalov <alexei.a.mochalov@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Kevin Moore <kevinemoore@gmail.com>
Co-authored-by: Simon Kohnstamm <kohnsts@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…5223)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Simon Kohnstamm <kohnsts@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
# Conflicts:
#	catalog/CHANGELOG.md
#	catalog/app/containers/App/App.jsx
#	catalog/app/containers/Search/Layout/PackageFilters.tsx
#	catalog/app/containers/Search/model.spec.ts
#	catalog/app/containers/Search/model.ts
@codecov

codecov Bot commented Aug 28, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.09%. Comparing base (28dbd70) to head (4467e5b).
⚠️ Report is 11 commits behind head on dev.

Additional details and impacted files
@@             Coverage Diff             @@
##              dev    #5252       +/-   ##
===========================================
+ Coverage   54.39%   92.09%   +37.70%     
===========================================
  Files         871      129      -742     
  Lines       36406    12351    -24055     
  Branches     6420        0     -6420     
===========================================
- Hits        19804    11375     -8429     
+ Misses      14841      976    -13865     
+ Partials     1761        0     -1761     
Flag Coverage Δ
api-python 93.64% <100.00%> (-0.19%) ⬇️
catalog ?
lambda 85.37% <ø> (ø)
py-shared 98.02% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@@ -700,365 +700,6 @@ type Me {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Generated GraphQL contract is stale

When Catalog CI runs, gql:generate removes the data-product declarations that remain in the checked-in generated types and introspection, causing the required git diff --exit-code check to fail.

Knowledge Base Used:

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants