Skip to content

Document further commons RPC gaps (D9-D17) + reject inert @tagged/@methodTag/@paramTag (D10) - #20

Open
halotukozak wants to merge 4 commits into
mainfrom
d10-tag-guard-v2
Open

Document further commons RPC gaps (D9-D17) + reject inert @tagged/@methodTag/@paramTag (D10)#20
halotukozak wants to merge 4 commits into
mainfrom
d10-tag-guard-v2

Conversation

@halotukozak

@halotukozak halotukozak commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Extends DIVERGENCES.md with D9-D17: comparison against the actual AVSystem/scala-commons rpc/meta source (generic raw-method framework, tag-driven routing, interceptors, @tried, ADT metadata, reflective metadata, Fallback/MacroInstances).

Closes the D10 landmine: @tagged/@methodTag/@paramTag used to compile and do nothing under mrpc's fixed fire/call/get RawRpc. Now a compile error via hasAnnotation[X[?]] guards in Plans.materialize (trait-level @methodTag/@paramTag) and OpPlan.materialize/ParamPlan.encodingOf (method-/param-level @tagged). test/mrpc/parity/TagAnnotationsRejectedSuite.scala covers all three at both method and param position.

Real tag-driven routing still needs the generic raw-method framework (D9) - this only closes the silent no-op.

halotukozak and others added 2 commits August 10, 2026 10:15
Ported a feature-by-feature comparison against the actual AVSystem/scala-commons
rpc/meta source (fully generic raw-method framework, tag-driven routing,
interceptors, @tried, ADT metadata, reflective metadata richness, Fallback/
MacroInstances) and catalogued each confirmed gap the same way D1-D8 already do.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
They compiled and silently did nothing under mrpc's fixed fire/call/get
RawRpc (no tag-selection branch exists to steer, D9) — a landmine, not a
no-op. hasAnnotation[X[?]] guards in Plans.materialize (trait-level
@methodTag/@paramTag) and OpPlan.materialize/ParamPlan.encodingOf
(method-/param-level @tagged) turn that into a compile error instead. The
wildcard type arg matches every instantiation despite these annotations
being invariant in their type parameter.

Real tag-driven routing still needs the generic raw-method framework (D9);
this closes only the silent-no-op landmine, not the underlying gap.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
halotukozak added a commit that referenced this pull request Aug 19, 2026
D9 is not a typo: PR #20 (open, not yet merged) adds a legitimate D9
entry ("RawRpc is a fixed trait, not the generic raw-method framework")
that the D7 text was correctly forward-referencing. D8 is a narrower,
distinct entry (generic methods/@composite/interceptors as a scope
boundary), not the same concept.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
# Conflicts:
#	src/mrpc/derive/OpPlan.scala
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant