Repository navigation
fix(syntax): resolve topology providers in benchmark - #180
Merged
Merged
Conversation
zoeyrose
marked this pull request as ready for review
August 12, 2026 16:42
This was referenced Aug 12, 2026
|
🎉 This PR is included in version 2.12.1 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
8 tasks done
zoeyrose
added a commit
that referenced
this pull request
Aug 23, 2026
## Summary - replace the invalid `isinstance(..., (int, None))` repeat-delay check with the valid `NoneType` - preserve the existing acceptance of integer delays and unset delays - deliver the compatible fix on `main`; paired `1.x` companion: #170 ## Validation - `python3 -m compileall -q maps/python` - `python3 tools/validate.py` - `git diff --check` ## Program context Discovered by the App-authored lock PR atrinik/classic#180 while delivering atrinik/atrinik#356 and atrinik/classic#169. PR #180 must not merge until a corrected 1.x release is published and the updater refreshes it. This PR intentionally does not close the program or Classic issue; downstream publication, lock, rehearsal, and audit gates remain.
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
Canonical
maincompanion for #138 after the independently validated1.xcompanion merged as #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
main@dc37068cc514c4a22a02f0156f54b74f6c845938ac8db6af7bb801472ab84cb1f63e1ecc52ba620e9e510692a1ed698cc8c0f221e926ecfef3bb5b241.xsquash:07f9bd418926066503d569b8457175191176434dThe 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
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 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 -> 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.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 passedpython3 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 passedgit diff --check— passedThe earlier
1.xindependent 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 raisesPrototypeError, 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.