Release v2.23.0
Summary
Every framework claim in the corpus was checked against source at the releases consumers install today — Chronicle 18.3.0, Arc 22.16.0, Components 4.6.0, Fundamentals 7.19.2, cli 3.2.0, the 5.1.0 / 3.1.0 language clients, Stage 3.15.1, Screenplay 4.12.1 — and then cross-examined by independent reviewers instructed to disprove it. Everything that source contradicted is corrected here. The frontend guidance moves from Components 3 on PrimeReact to Components 4.
Added
- Cratis Components 4 documentation: subpath imports, the
tokens/styles/themeentries,--cratis-*tokens, typedptparts anddata-cratis-partselectors, the nine-slot presentation adapters,ComboBox, and rewritten styling and accessibility skills. - Generated OpenCode agent adapters (
harnesses/opencode/agents) withmode: subagentand a permission map derived from each agent's tools;Source/Harness.Setup --checkverifies they are current. - The seven ways an in-process scenario spec passes while proving nothing — discarded assertion
Tasks, an unseeded read model rejected asDependencyUnavailable,.Validate()authorizing first, constraint preconditions that must go throughEventScenario.Given,GetInstances<T>not being harness-backed, one-child[ChildrenFrom]specs, self-derived expectations — with the matching analyzer ids. - Returning a
[Command]from a reactor,[ExecuteCommandsAsSystem], and the no-principal rule;ARCCHR0006/ARCCHR0008/CHR0042guidance; never persisting clock-relative state; command success versus projection convergence; unattended reactor passes; erasure beyond the event log; reading framework source at the consumer's tag. rules/ai-distribution.mdandrules/new-repository-intake.md, split out ofgeneral.md.- Write-guard behavior specs with planted under- and over-blocking defects, and a
quality-gates.project.jsonso this repository's own checks run under the Stop hook. - A "when to run this review without being asked" trigger in the security-review skill.
Changed
- Agent definitions use one canonical tool vocabulary (
Read,Grep,Glob,Bash,Edit,Write,Agent) withreadonly: trueon reviewer and investigator roles; Copilot-only names are gone. general.mdis trimmed to invariants and pointers (33 KB → 26 KB, under the Codex project-doc budget); procedure lives in the owning rules and skills.rules/efcore.mdandrules/orleans.mdare rewritten from what Arc and the Chronicle kernel actually ship.- Every skill's verified-version table names the current release and what the re-verification covered.
Fixed
- The Pi subagent bridge fails loudly when a declared tools list resolves to no Pi tool, instead of launching the subagent with every tool.
- A missing non-nullable injected read model is a
DependencyUnavailablevalidation failure (HTTP 400), not a thrownCannotResolveValidatorDependency. - Event-source-id resolution is first-match across
EventSourceIdand[Key]properties (ARCCHR0002on ambiguity);ICanProvideEventSourceIdreturningnullyieldsUnspecified;AmbiguousEventStreamIdthrows at execution, not startup;ARC0005is a warning. - The compliance-subject chain, including the event-level
[Subject]and the kernel's event-source-id fallback. - Constraints hash the plaintext of a
[PII]value, never its ciphertext. given()constructs a TypeScript spec context once perdescribe, not perit().useDialogreturns a 3-tuple;useDialogContext<TRequest, TResponse>takes the request type first;onBeforeExecutereturningvoidkeeps the current values;useCommandInstance<T>()takes no argument;QueryTransportMethodimports from@cratis/arc/queries; a single-instance observable query'suse()returns[result];ValidationResultcarriesmembers;TenantId.IsDefaultis also true forNotSet; a plain-HTTPIAsyncEnumerable<T>query answers 400; query-stringpageSizeis not range-checked;AutoIncrementColumnis alwaysNOT NULL.- The terminal Workbench's destructive modal is confirmed by
Yalone (Entercancels);cratisdestructive commands fail closed outside a terminal and require--yes;jobs stop/resumedo prompt;events tailreturns a sequence number. - Stage 3.15.1 serves sandbox queries without authorization rather than denying them;
STAGE-ESM-001–003and-011exist; the image reads/eventmodel. - Screenplay's
SemanticSliceKindhasUnknown; the canonicalRegisterProject.playis quoted in full. Chronicle.Conceptships in the Elixir client from 3.0.0; the browser Workbench's 18.3.0 menu and anonymous endpoints; theIEventAppendCollectionassertion example; driftedfile:linecitations in the client skills.
Removed
- Every PrimeReact-era claim: peer installs,
styledMode/CratisPreset, the--p-*token chain,primereact/dialogbans, PrimeIcons class strings, rawDataTableprops in agent examples. - References to the absent
validate-ai-setup.sh, the "only Claude wiring exists" and "this repository has noSource/" claims, and four rules and two skills thatgeneral.mdpointed at but did not exist.