conformance: dispose the declared cases and verify full trees across carriers against released bitruntime. - #57
Merged
Conversation
…carriers against released bitruntime. Adds conformance/wiretree, a separately identified family for decision 0012 with independently authored expectations: 18 structural cases, 1 addressed-bridge case and 7 carrier cases. Go and TypeScript drivers run it against the released bitruntime v0.2.0 through a test-only reference interpreter and through bitruntime's own Compose/Select/Send/AsAddressed, on the local pair and on real WebSockets in both directions. All 26 cases pass in both languages and both realizations. Seven deliberately unlawful TypeScript realizations are each rejected. disposition.json maps every one of the 39 historical declared cases, the 19 recorded production gaps and both limitations to current cases or to an explicit historical addressed limitation (suffix delivery, path-observing interception, addressed views). The historical fixture and both gap ledgers are unchanged and pinned by digest. Carrier composition uses two test-only adapters, bind and serve, because bitruntime v0.2.0 has no public facility for either; bitruntime#15 tracks them. Refs #29, #39.
6 tasks
- The mounted-carrier case now reaches an own value at [] through the mount; the relay also carries the doubly empty path; the late reply arrives after the serving composition is torn down, as in the historical cases. - A U+FFFD child and a fixture-defined ill-formed segment (UTF-16 units and UTF-8 bytes) make lossy bridges observable in both languages; a lossy-bridge mutant is added. - Refusing primitives record their own invocation; missing is no invocation plus refusal; bridge refusals without a primitive are "unreached". - A driver-implemented acyclic child is accepted, so cycle refusal is not vacuous. - Exact parts check children() and decompose() by count and contents; the selection law covers chains that fail part-way; Go checks every structural method on the bridge; every event has its own return capability; borrowed endpoints are checked after the dispatcher, forwarding and mount are released. - Each mutant must fail the case aimed at it. - The carrier model moves from docs/composition.md to the family README as a test model; internal is documented as the serving adapter's choice. - The contract states that derived sending on a missing path is refused. - Disposition notes cover every sharpened meaning and name the carrier gap members met only through the test-only adapters.
Member
Author
Review recordAn independent review agent re-derived every expected trace by hand. It found no data races and confirmed that the counts and instance numbers were right. All of its findings are resolved in
Re-run locally at
|
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.
Refs #29 and #39. This does not close #29: consumer acceptance (bitsystem3#11, bittree#53) and bitruntime's production facilities (bitruntime#15) remain.
What this adds
conformance/wiretree/cases.json: an independent full-tree family for decision 0012. The expectations are written from the contract, decision 0012 and the pinnedbitwire/1profile, never recorded from an implementation. Drivers get their inputs with expectations withheld, and keys arrive as exact-byte hex.AsAddressedcarries the exact UTF-8 image; ill-formed segments are refused before any primitive; binary keys are unreachable; the bridge is send-onlyForward, access through an addressedMount, a late reply and a requester's cancel after the far node was replaced, teardown with the borrowed endpoint still usableconformance/wiretree/disposition.jsonmaps all 39 historical declared cases, the 19 recorded gaps and both limitations. 37 cases have current counterparts. Ten keep a historical addressed part:Two of the ten (
guard-around-compositeandguarded-child-complete-access) are addressed-only. The historical fixture and both ledgers are unchanged. They are pinned by SHA-256, andcheck.mjsfails if they change without the disposition being revisited.Results against the released artifacts
Pins are unchanged from #52:
github.com/Bitspark/bitruntime v0.2.0.@bitspark/bitruntime0.2.0, the release asset.f825f3f.Findings
["t"].method_not_found, and a refusing far own answersinternal. Both codes come from the pinned profile. A binary key cannot be named over the carrier.bind: aWireat anAddressedWirepath;serve: a tree's nodes on a dispatcher.Checks
node scripts/check.mjs: green, including the newscripts/wiretree.test.mjs.node scripts/conformance-runtime.mjs: green, as above.