You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Update the TypeScript guestbook client and kernel contract pairing #673
The TypeScript guestbook pins an old Chronicle client contract while promising to track the current development kernel.
At f3234f8, package.json specifies Chronicle 3.1.1 and Fundamentals 7.18.2, while Compose selects latest-development.
Published Chronicle 3.1.1 depends on contracts 17.0.0, using the old Cratis.Chronicle.Contracts.EventSequences.EventSequences/Append service. The kernel at 57aae45, also in the inspected 19.115.3 release, registers the relocated Cratis.Chronicle.Contracts.Sequences service. The old contract cannot append against that inspected server API.
This is a static contract finding, not a live container reproduction: the digest behind the moving image was not verified, and a different compatibility call might fail before append. PR #583 fixed an earlier Ensure/EnsureEventStore mismatch, not this later service relocation.
Expected outcome
Select and document a compatible client, Fundamentals and immutable kernel image together.
Candidate published client 6.54.0 depends on contracts 19.70.0 and requires Fundamentals ^7.24.1; do not bump Chronicle alone while retaining 7.18.2.
Add a reproducible dependency lock and compile coverage for this sample, currently absent from the frontend matrix.
Demonstrate append, reactor completion and reading the resulting data against the selected server, separately from a compile-only pass.
Keep this coordinated migration separate from mechanical patch-only dependency refreshes.
Base:f3234f8 (main, 2026-11-02) Status: proposed Size / release intent: M · patch Reviewed: independent Claude reviewer — source and published RPC paths confirmed; no runtime reproduction
Problem and root cause
The client pins select contracts17 while Compose tracks a moving kernel. Published17 uses Contracts.EventSequences.EventSequences/Append; inspected Chronicle19.115.3 and source57aae452 use Contracts.Sequences.EventSequences/Append. Actual moving-image digest remains unknown.
Approach
Qualify one explicit client/Fundamentals/kernel cohort. Candidate npm Chronicle6.54.0 requires Fundamentals^7.24.1 and contracts19.70.0. Verify the selected image exists and serves this contract; do not assume version numbers alone prove compatibility.
Steps
Drift-check client source, README, Compose and workflow against Base.
Select immutable compatible kernel image and client/Foundation versions; update client code only where required by published APIs.
Add dependency lock with intended package manager; update README to stop promising unbounded development-tag compatibility.
Register compile coverage and separately prove append, reactor completion and read output against the selected kernel.
Files to touch
Chronicle/TypeScript/{package.json,package-lock.json,docker-compose.yml,README.md}; affected client source only if needed; .github/workflows/build.yml.
Public API, compatibility, migration
Sample dependency migration across Chronicle npm majors; no product API change. Regenerate dependency state, do not patch generated contracts.
Performance
Use bounded completion waits and container deadlines; no benchmark needed.
Specs to add (red first)
A narrow sample compile check plus wire-level append/react/read acceptance against the exact selected kernel. Distinguish an earlier compatibility rejection from the Append mismatch.
Gate (exact commands from the repo's CI)
Existing frontend setup: corepack enable, yarn install, yarn samples:validate. Add sample-specific compile coverage using its package manager. Once an npm lock is intentionally added:
cd Chronicle/TypeScript
npm ci
npm run compile
Existing solution CI runs Debug and Release builds; this TypeScript sample is not currently in its frontend matrix. The new real-kernel acceptance is an additional bounded integration gate, not a claimed existing pass. All commands are planned, not executed for this design.
Done when
Client and selected immutable kernel agree on RPC contract.
Dependency lock and compile coverage exist.
Append/react/read succeeds with bounded waits and useful failure output.
README accurately describes the qualified pair.
Risks and open questions
BLOCKING before merge: verify actual image availability and real wire compatibility. Fundamentals must meet the published client's floor; a Chronicle-only bump is insufficient.
Out of scope
Blind modernization of other samples and moving-tag compatibility guarantees.
Activity
woksin commentedon Nov 2, 2026
Implementation design (rev 1)
Base: f3234f8 (main, 2026-11-02)
Status: proposed
Size / release intent: M · patch
Reviewed: independent Claude reviewer — source and published RPC paths confirmed; no runtime reproduction
Problem and root cause
The client pins select contracts17 while Compose tracks a moving kernel. Published17 uses
Contracts.EventSequences.EventSequences/Append; inspected Chronicle19.115.3 and source57aae452 useContracts.Sequences.EventSequences/Append. Actual moving-image digest remains unknown.Approach
Qualify one explicit client/Fundamentals/kernel cohort. Candidate npm Chronicle6.54.0 requires Fundamentals^7.24.1 and contracts19.70.0. Verify the selected image exists and serves this contract; do not assume version numbers alone prove compatibility.
Steps
Files to touch
Chronicle/TypeScript/{package.json,package-lock.json,docker-compose.yml,README.md}; affected client source only if needed;.github/workflows/build.yml.Public API, compatibility, migration
Sample dependency migration across Chronicle npm majors; no product API change. Regenerate dependency state, do not patch generated contracts.
Performance
Use bounded completion waits and container deadlines; no benchmark needed.
Specs to add (red first)
A narrow sample compile check plus wire-level append/react/read acceptance against the exact selected kernel. Distinguish an earlier compatibility rejection from the Append mismatch.
Gate (exact commands from the repo's CI)
Existing frontend setup:
corepack enable,yarn install,yarn samples:validate. Add sample-specific compile coverage using its package manager. Once an npm lock is intentionally added:cd Chronicle/TypeScript npm ci npm run compileExisting solution CI runs Debug and Release builds; this TypeScript sample is not currently in its frontend matrix. The new real-kernel acceptance is an additional bounded integration gate, not a claimed existing pass. All commands are planned, not executed for this design.
Done when
Risks and open questions
BLOCKING before merge: verify actual image availability and real wire compatibility. Fundamentals must meet the published client's floor; a Chronicle-only bump is insufficient.
Out of scope
Blind modernization of other samples and moving-tag compatibility guarantees.