英語版: CTG Contract Model
CTG Contract Model v0.1.1.1
この文書は、Canonical Trajectory Governance contract が AIKernel.NET 内で どのように構成されるかを説明する。contract surface を追加、レビュー、利用する contributor 向けの design guide であり、runtime implementation は規定しない。
理論参照は Zenodo 公開済み CTG 論文である。
- Paper 12: Canonical Trajectory Governance
- DOI: https://doi.org/10.5281/zenodo.20681895
論文は公開後に固定される。AIKernel.NET の documentation と contract はより詳細に なりうるが、論文の core model と矛盾してはならない。
1. Package boundary
| Package | Namespace | 許可される内容 |
|---|---|---|
AIKernel.Abstractions |
AIKernel.Abstractions.Governance |
interface のみ |
AIKernel.Dtos |
AIKernel.Dtos.Governance |
DTO record のみ |
AIKernel.Enums |
AIKernel.Enums.Governance |
enum type のみ |
implementation class、algorithm、rule body、provider strategy、runtime engine、 canon text はこれらの package に置かない。
2. Interface contract
| Interface | 責務 |
|---|---|
ICouncilEvaluator |
council input を評価し、council decision を返す。 |
IDecisionGate |
単一の deterministic step gate request を評価する。 |
ITrajectoryGate |
ordered step governance trace set を評価する。 |
IRomGovernanceEngine |
ROM-backed request carrier を通じて governance を評価する。 |
interface は contract signature のみを公開する。非同期 response には ValueTask<T> を使い、CancellationToken は最後の parameter に置く。
3. DTO flow
CTG DTO は replay 可能な flow を構成する。
RomGovernanceEvaluationRequest\n -> CouncilEvaluationRequest\n -> CouncilEvaluationResult\n -> CouncilDecision\n -> CouncilVote\n -> DecisionGateRequest\n -> DecisionGateResult\n -> StepGovernanceTrace\n -> TrajectoryGateRequest\n -> TrajectoryGateResult\n -> GovernanceTrace
各 DTO は carrier である。DTO は rule logic、derived behavior、side effect を 持ってはならない。
DecisionGateRequest は council evaluation carrier より意図的に狭い。 これは 1 つの GateInput だけを運び、個別の L / E / P GateInput envelope や CouncilDecision payload は運ばない。GateInput は純粋な triadic vote-only carrier である。
LogosEthosPathos
この 3 値は CouncilVoteValue で表現する。confidence、risk、source、 metadata の observation は council trace または result diagnostics に属し、 decision gate input には属さない。
4. Naming decision
CTG は機械的 suffix ではなく semantic name を使う。
| Concept | Contract name | 理由 |
|---|---|---|
| Council vote carrier | CouncilVote |
1 件の council vote と trace evidence を運ぶ。 |
| Council vote enum | CouncilVoteValue |
finite vote vocabulary を carrier DTO から分離する。 |
| Rejection detail carrier | RejectReasonInfo |
structured reason DTO と reason enum value を区別する。 |
| Canon link | CanonReference |
rule text を埋め込まず、安定した canon identity を運ぶ。 |
| Council triad | CouncilKind |
Logos、Ethos、Pathos を governance vocabulary として維持する。 |
sideways contract addition に機械的な expansion suffix や version suffix を追加しない。 semantic interface name を使い、どの既存 interface または concept を拡張するかは document で説明する。
5. Failure と diagnostics
予測可能な failure は exception ではなく DTO field で表現する。CTG result DTO は 次のような field で failure 情報を公開する。
SucceededAcceptedErrorCodeErrorMessageRejectReasonsDiagnostics
cancellation は例外的 control path であり、OperationCanceledException を利用できる。
unknown enum value は fail-closed である。consumer は diagnostics を出力し、 telemetry が利用できる場合は raw numeric value を metadata に含めた unknown_enum_value event を記録する。
6. Vote mapping
論文は数学的 vote table を positive、neutral、negative value として表現する。 CouncilVoteValue の C# enum value はその weight ではなく、安定した serialization discriminant である。
runtime implementation は contract value を CTG の有限 table へ map する。
| Contract value | Mathematical role |
|---|---|
Approve |
positive vote |
Abstain |
neutral vote |
Reject |
negative vote |
Unknown |
fail-closed unknown value |
step gate は論文レベルの invariant に従う。
- Ethos rejection は execution を deny する。
- Ethos-veto case は 4 つ目の vote value ではなく rejection evidence として表現する。
- Ethos denial がない場合、map された aggregate council vote が strictly positive
- zero、negative、missing、unknown、insufficient evidence は execution を deny する。
の場合のみ execution を admit する。
gate / trajectory decision enum は discrete-only である。
| Enum | Values |
|---|---|
GateDecisionKind |
Unknown, Allow, Deny |
TrajectoryGateDecisionKind |
Unknown, Continue, Halt |
ROM/YAML source が uppercase snake case を使う場合でも、RejectReasonKind は PascalCase C# name を使う。
SafetyViolation\nLogicalInconsistency\nContextMisalignment\nIrreversibleAction\nInsufficientInformation\nOpaqueReasoning\nEthosVeto\nFailClosed\nStepDenied\nImplicitDeny
7. Optional observation carrier
Confidence と RiskScore は optional double? property である。これらは trace carrier に限る。
許可される用途:
- council evaluation 中に観測された measurement を保存する
- runtime host が使った evidence を正確に replay する
- operator 向け diagnostics を公開する
禁止される用途:
- council vote に weight を付ける
gate(l,e,p)behavior を変更する- deterministic governance を probabilistic scoring に変える
8. Canon reference shape
canon evidence を運ぶ DTO は、次の collection を優先する。
IReadOnlyList<CanonReference>
これにより、DTO shape を後で変更せずに複数 canon anchor を保持できる。canon reference が欠落または解決不能な場合、runtime implementation は fail-closed として扱う。
正規化された CanonReference shape は次の通りである。
public sealed record CanonReference\n{\n public string CanonId { get; init; } = string.Empty;\n public string Path { get; init; } = string.Empty;\n public string Section { get; init; } = string.Empty;\n public string? Anchor { get; init; }\n public string? ContentHash { get; init; }\n}
9. Monolith ROM layering
Monolith minimal CTG-ROM は personality OS governance の base layer である。 canon、council、gate、reject-policy file は rom/governance/ に置く。 localized personality descriptor は rom/locales/<locale>/ に置き、次のような effective canon path を解決する。
rom/governance/ctg.monolith.canon.md
personalized CTG-ROM は、Monolith base の上に developer diff layer として表現する。 diff layer は profile metadata、reference、locale wording、audit requirement を 追加または制約できる。ただし、triadic council model、Ethos veto、fail-closed behavior、default deny、replay trace requirement を弱めてはならない。
runtime VFS package が deterministic merge と mount behavior を所有する。 AIKernel.NET は layout を文書化し、contract carrier を公開するだけである。
10. Paper alignment notes
論文は trace object について簡略化した C# sketch を使っている。現在の実装は、 次の audit invariant を守る限り、より詳細な DTO を利用してよい。
- 各 council vote は reason code と canon reference で説明可能である。
- 各 gate result は replay 可能である。
- 各 trajectory result は ordered step trace を保持する。
- CTG-ROM は immutable governance/persona contract concept として維持する。
- CTG は PPM および HATL から分離する。
PPM は prime-phase research line の公開用語である。古い shorthand を formal theory name として新規 documentation に導入しない。
11. Review checklist
- 既存 public interface signature を変更しない。
- DTO または enum の正規化は compatibility impact とともに文書化する。
- 新規 interface は
AIKernel.Abstractions.Governanceのみに置く。 - 新規 DTO は
AIKernel.Dtos.Governanceのみに置く。 - 新規 enum は
AIKernel.Enums.Governanceのみに置く。 - public API XML documentation はすべて bilingual である。
- すべての enum は
Unknown = 0を持つ。 - result DTO は予測可能な failure を exception なしで運ぶ。
- canon rule text を AIKernel.NET に追加しない。
- runtime behavior を AIKernel.NET に追加しない。
- C# enum numeric value を CTG vote weight として扱わない。
- CTG theory を説明する新規 documentation は Paper 12 へリンクする。
12. 関連文書
- Paper 12: Canonical Trajectory Governance
- Canonical Trajectory Governance
- CTG Developer Guide
- CTG ROM Layout
- Domain Contract Surface v0.1.1.1
design/CTG_CONTRACT_MODEL-v0.1.1.1-jp.md