コンテンツへ移動

canonical model

このコンテンツは0.1向けです。 最新のドキュメントを見るには最新バージョンへ移動してください。

canonical session は、キャプチャとリプレイの間で Chronicle が受け渡す表現です。eBPF hook、WAL framing、特定の storage backend ではなく、アプリケーションの挙動を安定したモデルで表します。

現在の v1 model には次が含まれます。

  • recording、session、connection、operation の強い identity;
  • socket evidence から導出した canonical client/server endpoint;
  • 相対 nanosecond offset による deterministic な operation timeline;
  • 型付きの operation kind と effect 分類;
  • request と recorded-response payload reference;
  • connection と operation の completeness map;
  • source provenance、loss window、integrity、WAL checkpoint の情報;
  • replay attribute と明示的な blocker;
  • core field と分離して保持する protocol extension bytes。

timeline が唯一の operation order です。completeness map が権威になります。endpoint evidence が欠落または衝突した場合、ETL は失敗し、捏造した unknown:0 endpoint を保存することはありません。

NativeExecutionLineage は additive で non-temporal な evidence であり、child の correlation channel にだけ保持されます。ETL が 2 つの pre-canonical Chronicle-native boundary receipt を exact bind した後にだけ生成されます。operation boundary identity の所有者は protocol canonicalizer であり、application-local request counter は binding authority になりません。Observation の欠落、ambiguous、loss は completeness や replayability を変更しません。

現在の canonical schema は CANONICAL_SCHEMA_VERSION = 1 です。reader は他のバージョンを拒否します。明示的な compatibility freeze の前に、Chronicle が過去の migration reader を維持することはありません。将来バージョンを変更する場合は、別の design change で互換性と migration policy を定義する必要があります。

ローカル store は次を公開します。

sessions/<session-id>/
manifest.json
session.json
payloads/<sha256>

manifest には identity、canonical version、checksum、payload の数とサイズ、WAL checkpoint、上限付きの issue、completeness、replay blocker が記録されます。Unix ではファイルに private mode を設定します。replay は payload を hydrate し、送信前に SHA-256 を確認します。

replay が消費するのは canonical session と protocol interface です。capture、eBPF、WAL、ETL、元の storage implementation には依存しません。この分離により、同じ replay core で fixture から作った session と production から作った session の両方を扱えます。