Repository navigation
fix(syntax): resolve topology providers in benchmark - #179
Merged
Merged
Conversation
zoeyrose
marked this pull request as ready for review
August 12, 2026 16:23
This was referenced Aug 12, 2026
|
🎉 This PR is included in version 1.8.16 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
zoeyrose
added a commit
that referenced
this pull request
Aug 12, 2026
## Summary - resolve logical benchmark dependency roles through either legacy role-keyed components or the wrapper's current provider-keyed topology - fail closed on incomplete, non-string, unresolved, malformed, or conflicting role/provider mappings while preserving exact resolved head, dirty state, and path - cover both accepted shapes, current mixed identity/renamed providers, and the complete invalid/ambiguous matrix with focused tests Canonical `main` companion for #138 after the independently validated `1.x` companion merged as [#179](#179). Under the master #154 closure constraint, this pull request intentionally has no closing keyword; #138 remains open for the terminal exact-tip audit and human closure. ## Exact coordinates and release-line relationship - Base: `main@dc37068` - Head: `ac8db6af7bb801472ab84cb1f63e1ecc52ba620e` - Tree: `9e510692a1ed698cc8c0f221e926ecfef3bb5b24` - Merged `1.x` squash: `07f9bd418926066503d569b8457175191176434d` - Shape: one commit, four modified paths, no additions/deletions/renames/mode or binary changes The decision document, measurement baseline, and benchmark implementation are byte-identical to the merged companion. The test result differs only by retaining `main`'s existing three-line comment that historical measurements keep their captured grammar lock rather than being relabelled by later grammar evolution. ## Behavior and compatibility The extracted resolver returns the existing logical-role-keyed report shape. When `providers` is absent, every dependency must exist directly in `components`. When it is present, every dependency must have a non-empty string provider resolving to a component. A logical role also present as a component key may map only to itself, so partial hybrid collisions fail rather than silently selecting another record. Component metadata must contain non-empty string head/path values and a Boolean dirty flag; the existing dirty-input refusal is retained. The live wrapper's current eight-role Classic topology mixes identity providers such as `resources -> resources` with renamed providers such as `content -> content-1x` and `server -> classic-server`; a read-only probe confirmed all eight resolve to the exact provider head, clean state, and path. Legacy role-keyed fixtures produce the same logical input schema. Raw timing observations remain immutable. Only the syntax implementation digest changes to `66ee02231579189622dc74d23117fee42be4969a922eba7b2d9e540d89dc49af`, and the decision document records the accepted topology shapes and fail-closed contract. ## Validation and review - `python3 -m unittest -v tools.tests.test_syntax_evaluation` — 16 tests passed - current mixed provider topology probe — eight logical inputs resolved exactly - `python3 tools/validate.py` — 132 tests passed; 1,355 archetypes/3,651 maps, 11,682 light instances with zero unreviewed, schema/catalog/contracts/syntax, and isolated collection passed - implementation digest, exact cross-line blob comparison, and `git diff --check` — passed - primary cumulative review and independent exact-head review — zero actionable findings The earlier `1.x` independent review found a partial-hybrid ambiguity in the first candidate. The corrected implementation checks conflicts per role; both line reviews directly verified the former collision now raises `PrototypeError`, while the current mixed provider shape succeeds. No authored maps, light ledgers, retired renderer evidence/capture surfaces, generated runtime output, or runtime state are touched. Runtime/gameplay verification is not applicable to this pure read-only benchmark metadata resolver.
8 tasks done
zoeyrose
added a commit
that referenced
this pull request
Aug 23, 2026
## Summary - resolve logical benchmark dependency roles through either legacy role-keyed components or the wrapper's current provider-keyed topology - fail closed on incomplete, non-string, unresolved, malformed, or conflicting role/provider mappings while preserving exact resolved head, dirty state, and path - cover both accepted shapes, current mixed identity/renamed providers, and the complete invalid/ambiguous matrix with focused tests Canonical `main` companion for #138 after the independently validated `1.x` companion merged as [#179](#179). Under the master #154 closure constraint, this pull request intentionally has no closing keyword; #138 remains open for the terminal exact-tip audit and human closure. ## Exact coordinates and release-line relationship - Base: `main@fd58ac463aa8a8a8a3d2b04e9507c314c6c41bd1` - Head: `0070853ee0d743abd5f226bc8a11b544bcbb7ea5` - Tree: `9e510692a1ed698cc8c0f221e926ecfef3bb5b24` - Merged `1.x` squash: `7a4966330474b387f517463d4bf56daae6523f6a` - Shape: one commit, four modified paths, no additions/deletions/renames/mode or binary changes The decision document, measurement baseline, and benchmark implementation are byte-identical to the merged companion. The test result differs only by retaining `main`'s existing three-line comment that historical measurements keep their captured grammar lock rather than being relabelled by later grammar evolution. ## Behavior and compatibility The extracted resolver returns the existing logical-role-keyed report shape. When `providers` is absent, every dependency must exist directly in `components`. When it is present, every dependency must have a non-empty string provider resolving to a component. A logical role also present as a component key may map only to itself, so partial hybrid collisions fail rather than silently selecting another record. Component metadata must contain non-empty string head/path values and a Boolean dirty flag; the existing dirty-input refusal is retained. The live wrapper's current eight-role Classic topology mixes identity providers such as `resources -> resources` with renamed providers such as `content -> content-1x` and `server -> classic-server`; a read-only probe confirmed all eight resolve to the exact provider head, clean state, and path. Legacy role-keyed fixtures produce the same logical input schema. Raw timing observations remain immutable. Only the syntax implementation digest changes to `66ee02231579189622dc74d23117fee42be4969a922eba7b2d9e540d89dc49af`, and the decision document records the accepted topology shapes and fail-closed contract. ## Validation and review - `python3 -m unittest -v tools.tests.test_syntax_evaluation` — 16 tests passed - current mixed provider topology probe — eight logical inputs resolved exactly - `python3 tools/validate.py` — 132 tests passed; 1,355 archetypes/3,651 maps, 11,682 light instances with zero unreviewed, schema/catalog/contracts/syntax, and isolated collection passed - implementation digest, exact cross-line blob comparison, and `git diff --check` — passed - primary cumulative review and independent exact-head review — zero actionable findings The earlier `1.x` independent review found a partial-hybrid ambiguity in the first candidate. The corrected implementation checks conflicts per role; both line reviews directly verified the former collision now raises `PrototypeError`, while the current mixed provider shape succeeds. No authored maps, light ledgers, retired renderer evidence/capture surfaces, generated runtime output, or runtime state are touched. Runtime/gameplay verification is not applicable to this pure read-only benchmark metadata resolver.
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
This is the
1.xcompanion for #138 and intentionally has no closing keyword. After its maintainer merge and a freshmainreconciliation, a separate canonical companion will carry the compatible change. Under the master #154 closure constraint, #138 remains open through the final exact-tip audit and human closure.Exact coordinates
1.x@08ebe8d39eb2d8af0dddbb120af178d87e1fb7f64f48883021bf79718b444d51097a378ff04d61f8169734baee4c125ea1528246df40d9fb9beb65acBehavior and compatibility
The extracted resolver returns the existing logical-role-keyed report shape. When
providersis absent, every dependency must exist directly incomponents. When it is present, every dependency must have a non-empty string provider resolving to a component. A role also present as a component key may map only to itself, preventing partial hybrid collisions from silently selecting a different record. Component metadata must contain a non-empty string head/path and Boolean dirty flag; dirty logical inputs retain the existing refusal.The live wrapper's current eight-role Classic topology mixes identity providers such as
resources -> resourceswith renamed providers such ascontent -> content-1xandserver -> classic-server; a read-only probe confirmed all eight resolve to the exact provider head, clean state, and path. Legacy role-keyed fixtures produce the same logical input schema.The committed raw timing observations are unchanged. Only the syntax implementation digest is refreshed to
66ee02231579189622dc74d23117fee42be4969a922eba7b2d9e540d89dc49af, and the decision document now records the accepted topology shapes and fail-closed contract.Validation and review
python3 -m unittest -v tools.tests.test_syntax_evaluation— 16 tests passedpython3 tools/validate.py— 134 tests passed; 1,355 archetypes/3,651 maps, zero-unreviewed lighting audit, schema/catalog/contracts/syntax, isolated collections, and both1.8.2release archives passedgit diff --check— passedThe independent review found and drove a fix for a first-candidate partial-hybrid collision. It directly verified that former conflict now raises
PrototypeError, the current mixed provider shape succeeds, the implementation digest recomputes exactly, and the complete four-path corrected diff has no remaining findings.No authored maps, light ledgers, retired renderer evidence/capture surfaces, generated runtime output, or runtime state are touched. Runtime/gameplay verification is not applicable to this pure read-only benchmark metadata resolver.