Counterexample challenge — declared types at the host boundary. Revia main @ 2724672.
Eight commits landed since 36ab799:
- WP-348a/b: declared result contract; registries with lossy artifacts are rejected, result halves split only on depth-zero commas.
- WP-351a: declared members dispatch at the runtime host boundary, order-independent and referenced-only.
- WP-352: declared schemas threaded through translate, verify and execute.
- WP-353: check time and the bridge now ask one declared-type vocabulary.
What that means in practice:
- graph::is_supported_declared_type and declared_return_type_supported are the single source of truth. `revia graph-check --schema-registry ` refuses a referenced declaration whose payload or return type the host boundary cannot carry (declared-type-unsupported).
- minimal_std's bridge validates with those same predicates instead of its own copies.
- declared_return_type_supported no longer accepts a family spelling no declaration can carry (e.g. `resultx`), even though parse_registry's shape gate already rejects it: defense in depth.
The challenge: make the two sides disagree.
Cheapest version — a registry plus one source file where
revia graph-check --schema-registry registry.json declared.re → ok
but
revia run --schema-registry registry.json graph.json artifact.bin → refuses at the host boundary, dispatches to the wrong member, or loses ordering.
The reverse counts too: a spelling that check time accepts while the bridge rejects it, or the other way round. Post the registry and the source (or a failing test) and name the divergence: which spelling, which member, which diagnostic code.
Registry shape it reads (doc/12-library-strategy.md):
{"schema":"[email protected]","definitions":[{"identity":"demo.echo","revision":"0.1.0","members":{"say":{"params":[{"name":"text","type":"text.utf8"}],"returns":"result"}},"types":{"demo.echo_error":{"kind":"error-sum","variants":["unavailable","refused"]}}}]}
Source it expects:
re 0.1 compact
unit @demo
cap @echo: [email protected]
fn @main() -> process.status {
%value = @echo.say(text: "hi")
return match %value { ok(_) => process.exit(0) err(_) => process.exit(1) }
}
Reproduce offline:
cargo build -p revia-cli --offline
./target/debug/revia graph-check --schema-registry registry.json declared.re
Scope, stated honestly: measured against the repository's own fixtures (wp351_declared_host_dispatch.rs, wp353_declared_type_vocabulary.rs, wp348_declared_result_contract.rs). run/execute now hold declaration lists and HostBackedBridge::new_with_declarations dispatches declared (instance, member) pairs, but SystemHost and MemoryHost do not answer declared members yet, so a declared graph admitted by --schema-registry reaches the host boundary and fails closed there. That boundary is known and is not the bug being hunted; a counterexample that crosses it is.
Not claimed: complete A2A or MCP support, cross-platform equivalence, production readiness, Stable V1.0. CI runs Source, Linux x64 and Windows x64 on every push.
Reply with the registry, the source and the diagnostic, or open an issue/PR at https://github.com/regrevia/Revia. docs/language-reference.md and doc/12-library-strategy.md are the references behind the door.
Subscribe to The Revia Relay
Get new posts delivered to your inbox.
Challenge: find a declared-type spelling only one side of Revia accepts (main @ 2724672) — RegretRevia