Skip to content

Let a JVM reader follow the tutorial, and close the C#-side gaps - #2710

Merged
woksin merged 3 commits into
mainfrom
docs/arc-remaining-gaps
Sep 21, 2026
Merged

woksin merged 3 commits into
mainfrom
docs/arc-remaining-gaps

Conversation

@woksin

@woksin woksin commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Stacked on docs/arc-shared-examples (#2709), which is stacked on docs/arc-multi-implementation (#2708). Review those first.

Closes the last gaps that made the documentation read as C#-first.

Added

  • Observability. Arc instruments its own command and query pipelines and said nothing about it, so the spans existed and nobody knew to subscribe. Names the activity source and all eight spans. Registration is internal, so this documents the telemetry a consumer can observe rather than an extension point they can implement — the useful part is knowing to add the source and what will show up.
  • Attribute reference. The attribute surface was documented wherever each attribute happened to be used, with no page answering "what can I write on a type, and where may it go". Grouped by concern with real targets, marking which arrive with Chronicle rather than Arc.

Changed

  • The tutorial works for a JVM reader. Four of five chapters showed C# only, so a Kotlin or Java reader was sent to a getting-started page and left to work out the rest. The eight teaching examples now show both languages.
  • Setup around them stays per-backend prose rather than tabs, because a Gradle task and a dotnet build are not two spellings of one step. Proxy generation, the MongoDB replica set, the relational unique index and the development principal each get a note naming the JVM equivalent.

Fixed

  • Chapter two claimed the form validates for free once a rule exists. On the JVM that holds only for the literal rules the shared fluent validator projects to the client; an imperative validator runs server-side alone. The chapter now says which is which instead of promising both readers the same outcome.

Verification

All 41 C# snippets compile against real Arc source, up from 33. Arc's gate is green: 335 files, 364 links.

The matching Kotlin snippets are in Cratis/Arc.Kotlin. They compile in CI; the machine this was written on has no JVM, so CI is their first real compile.

Arc instruments its own command and query pipelines and says nothing about
it, so the spans exist and nobody knows to subscribe to them. The JVM
backend documents its observability in full, which left the C# side the
one with a shipped feature and no page.

Name the activity source and the eight spans, and say what each
identifies. Registration is internal, so this documents the telemetry a
consumer can observe rather than an extension point they can implement -
the useful thing is knowing to add the source and what will show up.
The attribute surface was documented wherever each attribute happened to
be used, so there was no page answering "what can I write on a type, and
where may it go". The JVM backend has exactly that, which made the C# side
the one a reader had to assemble for themselves.

List them grouped by concern with their valid targets, and mark the ones
that arrive with Chronicle rather than Arc, since those need a different
package. Names and targets are taken from the attribute declarations.
The tutorial is the product's one threaded introduction, and four of its
five chapters showed C# only, so a Kotlin or Java reader was sent to a
getting-started page and left to work out the rest.

Show the eight teaching examples in both languages. The setup around them
stays per-backend prose rather than tabs, because a Gradle task and a
dotnet build are not two spellings of one step: proxy generation, the
MongoDB replica set, the relational unique index and the development
principal each get a note naming the JVM equivalent instead.

Chapter two needed a correction rather than a translation. It says the
form validates for free once a rule exists, and on the JVM that holds only
for the literal rules the shared fluent validator can project to the
client; an imperative validator runs on the server alone. The chapter now
says which is which rather than promising both readers the same outcome.
@woksin woksin added the no-release Merging publishes no package, image, release, or deployment label Sep 21, 2026
Base automatically changed from docs/arc-shared-examples to main September 21, 2026 21:29
@woksin
woksin merged commit f349966 into main Sep 21, 2026
3 checks passed
@woksin
woksin deleted the docs/arc-remaining-gaps branch September 21, 2026 21:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-release Merging publishes no package, image, release, or deployment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant