Repository navigation
fix(shadow): compare missing-table outcomes - #394
Merged
Merged
Conversation
chubes4
marked this pull request as ready for review
September 9, 2026 14:05
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
Compare missing-table outcomes independently in SQL snapshot mode. Preserve explicit source absence observed through MySQL error1146, execute the native query, and normalize its unsupported-table result only when that source absence is proven. Unknown registry entries and duplicate JOIN aliases remain unsupported.
Compare caller-visible error state (false return, errno, rows, columns, affected rows, sticky insert ID and exception state), excluding server-specific error text. Report compatible reads separately from compatible missing-table errors. Other capture failures remain limitations; observers cannot change authoritative query outcomes.
Verification
Exact candidate
4d8afbd9e589433fe86f2a0605537b0e5bcbebd7includes mainfe664766.Parent independently ran the real DME multisite lifecycle on Linux: WordPress7.1, PHP8.3, PHPUnit9.6.35,4 tests17 assertions passed. Report:1141 observations;398 compatible reads plus1 compatible missing-table error;21 unsupported native observations;0 snapshot limitations;0 mismatches;721 ignored;0 verifier failures/dropped.
Formal artifact SHA-256:
dad7592cd48afedf306ed719440c3f797e95eb0173d2cb72a0c0b19affb91098. Fresh fixture values can change the hash.Parent also passed both snapshot and verifier regressions at exact head, including source recovery after table creation, duplicate-alias rejection, unknown-source rejection and different-native-error mismatch.
Reproduction
Use the pinned DME/Data Machine and managed wp-phpunit fixture configuration documented in #386, then run
php tests/run-mysql-shadow-corpus.php. The runner emits exact source revision, PHPUnit result, normalized report and formal artifact reference.Supports #377; full consumer/SQL parity remains open. No release or deployment.
AI Assistance
OpenAI GPT-5.6 Terra (
openai/gpt-5.6-terra) via OpenCode implemented and tested the error-path contract. GPT-6 Astra (openai/gpt-6-astra) via OpenCode reviewed error classification and state semantics, independently reran the exact Linux corpus and regressions, and finalized evidence under Chris Huber's direction.