The emitter is a pinned dev dependency; panelbench and the checkout machinery leave - #172
Merged
Merged
Conversation
…nd the checkout machinery leave `ebus-panel-sim==0.8.0` goes in the dev group, so the producer of the reference capture installs like anything else and pip is the whole mechanism. The catalogs are verified byte-for-byte against that wheel's own copies instead of a specification checkout, which means the provenance checks always run rather than skipping wherever nobody had cloned a sibling. The capture itself is an importable function, and the suite re-runs it in-process and compares — so no document records which release made the tree, and none can go stale. Each adapter ships the capture its consumers test against as package data, so a downstream suite reads the bytes its pinned version was tested against instead of vendoring a copy and guarding it. That reverses #166 for the cost, not the principle: no runtime path reads them either way. `spec_lock.json` loses `peers` and stays the consumer's declaration; with the block go peer_drift.py, its workflow, its composite action, its pre-commit hook and _lock.py. `simulator_tree.json` and every test that existed only to compare vendored copies are deleted; `simulator_wire.json` moves to tests/fixtures/panelbench_wire.json, where it is what it always was — the flat differential's matched pair.
…home and the SDK the suite resolves
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.
Why
Following the producers was a lockfile of pins, three sibling checkouts, a
.env, a drift script, its workflow, a composite action and a pre-commit hook — and it still went stale the day after a release. The maintainer's decision: the emitter producing correct output is the emitter's job; everything else should fall out of standard pip behaviour.What
ebus-panel-sim==0.8.0is a dev dependency, in its own Dependabot PR. The capture script drives the installed emitter and is an importable function; a test regenerates the capture in-process and compares it to the shipped JSON, so a bump PR goes red exactly when the wire moved, with the fix command in the message.spec_lock.jsonkeeps only the consumer's declaration (role, firmware, spec commit, implements).peer_drift.py,_lock.py,peer-drift.yml,.github/actions/peer-checkouts, the hook, the.envprovenance variables. ~7,800 lines removed.reference/parent_child_tree.json,reference/homie_schema.json) so downstream suites read the bytes their pinned version was tested against instead of vendoring a copy and guarding it. Reverses refactor: reference payloads become test fixtures, not package data (#162) #166 for the cost, not the principle.Verification
1155 passed; the only skips are the live-panel differential. Conformance suite runs with no environment variables. Both wheels built and listed: reference JSON beside
py.typed, nothing else new. Fable review: pass; its doc findings fixed in the second commit.