refactor(domain): encode comparison and lifecycle states exactly - #473
Merged
Conversation
morluto
marked this pull request as ready for review
August 11, 2026 09:58
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
Owner
Author
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
12 tasks
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.
Description
Replace loosely correlated status, nullable, candidate, coverage, and count fields with boundary-parsed discriminated values across comparison, evidence, lifecycle, and browser-capture workflows. Contradictory states now fail at the owning schema instead of surviving into downstream logic and requiring repeated checks.
The refactor covers:
Schema-only concerns are separated from traversal and comparison logic where that gives each concept one owner. Tests assert rejected impossible states and observable lifecycle behavior, including MCP notifications, provider capability mutation resistance, request cleanup, and Hopper rename-cache invalidation.
No tools or provider authorities are added or removed. Storage formats retain their legacy migration branches, the 116-tool inventory remains stable, and valid caller behavior is unchanged. The caller-visible schema projection is narrower only for combinations that contradicted their own status, coverage, evidence, or lifecycle fields.
Suggested review order:
c07a7c28.f5230054.715af808.8a401fa4,33bb8b45,2cf98dee.21fd5e3c.Type of Change
Testing Performed
npm run check:pr— typecheck, lint, formatting, Knip, metadata, 338 test files / 1,699 tests, TypeDoc, and generated-document checks passednpm pack --dry-run— 739 files, 1.1 MB packagenpm run check:fast— typecheck and lint passednpm run verify:package— reached the packaged Linux Hopper platform check, then stopped because Xvfb is unavailable on this hostTool Contract Impact
The canonical 116-tool inventory is unchanged. Output schemas now reject mismatched comparison endpoints, invalid match basis/confidence pairs, contradictory coverage and pagination counts, impossible lifecycle checkpoints, inconsistent conformance aggregates, invalid reference-source content states, and source-map/capture statuses that do not match retained evidence.
Generated MCP catalog, product catalog, bundled skill identity, and managed conformance provenance were refreshed and pass the repository drift checks.
Related Issues
No linked issue.