Summary
ScreenplayGenerator.Generate takes a single Compilation, and ArtifactCatalog.From walks only compilation.Assembly.GlobalNamespace. A multi-project Arc application (Domain/Application/Api layering, or a main app plus sibling contexts) is therefore only partially described: artifacts in referenced projects are invisible, and cross-project event references degrade to SP0021 warnings.
Evidence (real application)
Ada's solution has several projects containing Arc artifacts (Core, Lobby, Lobby.Contracts, Integrations, …). Generating from Core.csproj yields a document that:
- describes only
Core's artifacts,
- refers to
InvitationToJoinAdaAccepted (declared in a referenced project) that it never introduces (SP0021; the official Screenplay compiler then warns on the generated file).
The CLI integration (branch feature/arc-screenplay on Cratis/cli) narrows a solution to exactly one project and errors when two candidates remain — so pointing the tool at a layered solution either fails or silently describes a fraction of the application.
Suggested fix
Add an overload accepting multiple compilations and merge the catalogs:
ScreenplayGenerationResult Generate(IReadOnlyList<Compilation> compilations, ScreenplayOptions options);
- Walk each compilation's own assembly; union the artifact catalogs (ordered by assembly name, then the existing deterministic ordering, so output stays reproducible).
- Slice/namespace attribution already works per-symbol, so features from different projects land in the right modules;
SegmentsToSkip/module inference may need a per-assembly default.
- The CLI can then hand over every project of the solution (minus specs/tests) instead of erroring on ambiguity.
This is the difference between "describes the project you pointed at" and "describes the application" — the stated goal of the tool.
Environment
Cratis.Arc.Screenplay 20.65.0 (Analysis/ArtifactCatalog.cs, IScreenplayGenerator.cs)
Summary
ScreenplayGenerator.Generatetakes a singleCompilation, andArtifactCatalog.Fromwalks onlycompilation.Assembly.GlobalNamespace. A multi-project Arc application (Domain/Application/Api layering, or a main app plus sibling contexts) is therefore only partially described: artifacts in referenced projects are invisible, and cross-project event references degrade toSP0021warnings.Evidence (real application)
Ada's solution has several projects containing Arc artifacts (
Core,Lobby,Lobby.Contracts,Integrations, …). Generating fromCore.csprojyields a document that:Core's artifacts,InvitationToJoinAdaAccepted(declared in a referenced project) that it never introduces (SP0021; the official Screenplay compiler then warns on the generated file).The CLI integration (branch
feature/arc-screenplayon Cratis/cli) narrows a solution to exactly one project and errors when two candidates remain — so pointing the tool at a layered solution either fails or silently describes a fraction of the application.Suggested fix
Add an overload accepting multiple compilations and merge the catalogs:
SegmentsToSkip/module inference may need a per-assembly default.This is the difference between "describes the project you pointed at" and "describes the application" — the stated goal of the tool.
Environment
Cratis.Arc.Screenplay20.65.0 (Analysis/ArtifactCatalog.cs,IScreenplayGenerator.cs)