Skip to content

fix(syntax): resolve topology providers in benchmark - #179

Merged
zoeyrose merged 1 commit into
1.xfrom
fix/138-provider-topology-1x
Aug 12, 2026
Merged

zoeyrose merged 1 commit into
1.xfrom
fix/138-provider-topology-1x

Conversation

@zoeyrose

Copy link
Copy Markdown
Member

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 the exact resolved head, dirty state, and path
  • cover both accepted shapes, current mixed identity/renamed providers, and the full invalid/ambiguous matrix with focused tests

This is the 1.x companion for #138 and intentionally has no closing keyword. After its maintainer merge and a fresh main reconciliation, 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

  • Base: 1.x@08ebe8d39eb2d8af0dddbb120af178d87e1fb7f6
  • Head: 4f48883021bf79718b444d51097a378ff04d61f8
  • Tree: 169734baee4c125ea1528246df40d9fb9beb65ac
  • Shape: one commit, four modified paths, no additions/deletions/renames/mode or binary changes

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 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 -> 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.

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 passed
  • current provider-keyed wrapper topology probe — eight logical inputs resolved exactly
  • python3 tools/validate.py — 134 tests passed; 1,355 archetypes/3,651 maps, zero-unreviewed lighting audit, schema/catalog/contracts/syntax, isolated collections, and both 1.8.2 release archives passed
  • JSON/digest synchronization and git diff --check — passed
  • primary cumulative review and independent corrected-head review — zero actionable findings

The 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.

@zoeyrose
zoeyrose marked this pull request as ready for review August 12, 2026 16:23
@zoeyrose
zoeyrose merged commit 07f9bd4 into 1.x Aug 12, 2026
4 checks passed
@zoeyrose
zoeyrose deleted the fix/138-provider-topology-1x branch August 12, 2026 16:27
@github-actions

Copy link
Copy Markdown

🎉 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.
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant