test: add the toolkit join parity harness - #1113
Draft
teallarson wants to merge 1 commit into
Draft
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Aug 5, 2026
teallarson
marked this pull request as ready for review
August 6, 2026 21:22
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit e9a38de. Configure here.
teallarson
marked this pull request as draft
August 11, 2026 16:29
teallarson
force-pushed
the
chore/join-parity-harness
branch
from
August 11, 2026 17:35
f18ce96 to
ead048a
Compare
Deterministic gate answering one question: does joining the catalog snapshot with the enrichment and curation layers through the real merger still reproduce the toolkit JSON we ship? Rebased onto main after #1112 squash-merged, and re-verified against it: - `curationSourceHash` joins `generatedAt` as ignored. It records which curation produced a file, not anything a reader sees, and no committed artifact carries it until the next nightly writes one. - `customImports` is no longer exempt. Curation now compiles `imports/*.mdx`, so all 119 toolkits reproduce their imports and the exemption would hide a real parity dimension. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
teallarson
force-pushed
the
chore/join-parity-harness
branch
from
August 12, 2026 19:13
ead048a to
b4e6704
Compare
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.

Why
The generator is being split into upstream data, enrichment, and curation layers. This adds a deterministic parity gate that answers one question: does joining those layers still reproduce the toolkit JSON we ship today?
It turns output preservation from a manual review task into a mechanical check, protecting the pipeline as its sources are extracted and reorganized.
How it fits
The harness sits alongside generation rather than replacing it: it uses the production merger, reports the first structural difference by JSON path, and makes future pipeline slices independently verifiable.
Changes
total_countand rejects truncated fetches.Verification
generatedAtare handled structurally to avoid false positives.Independent of #1112 at merge time, but intended to validate it and the subsequent enrichment/source-extraction slices.
Note
Low Risk
New scripts and tests only; no changes to the production generator merge or shipped data paths.
Overview
Adds a join parity gate for the upcoming catalog / enrichment / curation split: mechanically check that those layers still produce the same shipped toolkit JSON.
capture-catalog-snapshot.tspaginates Engine/v1/tool_metadata(aligned withEngineApiSource), recordstotal_count, and refuses to write truncated snapshots..gitignorekeeps the ~10 MB local snapshot out of git.verify-toolkit-join.tsloads a snapshot throughparseToolMetadataResponse, runs the realmergeToolkitpath (design-system metadata + provider resolver), overlays frozen enrichment (codeExample,secretsInfo,summary), and compares todata/toolkitswith a structural diff (ignoresgeneratedAt, treats optional null/absent keys as equivalent). Non-zero exit on mismatch or missing catalog tools. Until separate layer dirs exist, enrichment/curation default to the committed toolkit files.verify-toolkit-join.test.tscovers the diff helpers, catalog reshape, full round-trip over all committed toolkits, and failure cases (enrichment drift, missing catalog entries).Reviewed by Cursor Bugbot for commit f18ce96. Bugbot is set up for automated code reviews on this repo. Configure here.