このページは、AIKernel.NET が提供する Canonical Triadic Governance 契約と、 AIKernel.Core が評価する CTG evaluator を AIKernel.Control に opt-in 接続する ための開発者向け説明です。
CTG は contract-level の governance boundary として扱います。
Logos、Ethos、Pathosは council vote として正規化します。GateInputは 3 つの離散的なCouncilVoteValueのみを保持します。- Decision Gate / Trajectory Gate の評価は AIKernel.Core が所有します。
- AIKernel.Control は approve count、veto 条件、halt 集約を計算しません。
- Provider の confidence、risk、score carrier は Control の CTG vote-output surface
では受け取りません。
ProviderVoteOutputは discrete-only であり、GateInputは 3 つの council vote のみを保持します。
Control における CTG は Apply Policy stage に属します。Policy は物理実行へ進むかを 決めますが、Gate decision 自体は Core evaluator の結果として扱います。
Provider output
-> CouncilVote
-> CouncilDecision
-> GateInput
-> Core IDecisionGate
-> DecisionGateResult
-> ControlPolicyEvaluation
| Package | Responsibility |
|---|---|
AIKernel.NET |
Contract、DTO、enum、Canon/ROM carrier を保持します。 |
AIKernel.Core |
pure CTG evaluator と governance trace 構築を担当します。 |
AIKernel.Control.Core |
Provider vote 正規化、orchestration、policy adapter、DI 接続を担当します。 |
AIKernel.Control.Emulator |
policy 評価後の deterministic execution validation を担当します。 |
AIKernel.Control.CPU / AIKernel.Control.GPU |
物理実行 kernel のみを担当します。CTG logic は置きません。 |
AllowAllControlPolicy は emulator で使いやすい既定 policy として残します。CTG は
host が明示的に service 登録した場合だけ有効になります。
using AIKernel.Control.Core.Ctg;
using AIKernel.Enums.Governance;
services.AddCtgControl(new CtgControlCoordinatorOptions
{
ProviderOutputs =
[
new ProviderVoteOutput
{
ProviderId = "provider.logos",
CouncilKind = CouncilKind.Logos,
VoteValue = CouncilVoteValue.Approve
},
new ProviderVoteOutput
{
ProviderId = "provider.ethos",
CouncilKind = CouncilKind.Ethos,
VoteValue = CouncilVoteValue.Approve
},
new ProviderVoteOutput
{
ProviderId = "provider.pathos",
CouncilKind = CouncilKind.Pathos,
VoteValue = CouncilVoteValue.Abstain
}
]
});登録は TryAdd semantics を使うため、host が既に提供している service を上書きしません。
ProviderVoteAdapterはProviderVoteOutputをCouncilVoteに変換します。CtgCouncilEvaluationProviderRegistryは local orchestration と test のために provider vote output を保持します。provider が見つからない場合はUnknownvote、 同じ council に複数 provider が一致した場合は deterministic error にします。CtgCouncilEvaluationOrchestratorは semantic evaluation や gate evaluation を行わず、 registry から provider vote output を解決します。CouncilDecisionBuilderはCouncilEvaluationResultを作成し、欠けた council をUnknownvote で補完します。CouncilDecisionToGateInputAdapterはLogos、Ethos、Pathosの vote value だけを抽出します。CtgControlCoordinatorは CoreIDecisionGateを呼び出し、CtgControlDecisionEnvelopeを構築します。CtgControlPolicyAdapterは envelope を既存のControlPolicyEvaluationに写像します。CtgPolicyDecisionMapperは accepted decision gate をALLOW、rejected decision gate をDENY、rejected trajectory gate をABORTに写像します。AddCtgControl()は decision / trajectory evaluation の両方が必要な host 向けに CoreIDecisionGateとITrajectoryGate実装を登録します。
AIKernel.Control.Emulator は deterministic dry-run 用の CTG scenario helper を提供します。
CtgControlEmulatorは Control policy adapter と既存 emulator engine を通じて scenario を実行します。CtgTruthTableScenarioは 27 個の離散Approve/Abstain/Rejectcombination を作成します。EthosRejectScenario、AllAbstainDenyScenario、EmptyTrajectoryHaltScenario、AnyDenyTrajectoryHaltScenarioは名前付きの regression scenario を提供します。CtgReplayScenarioは replay check 用の安定した metadata を提供します。
Emulator は Core gate evaluator を呼び出します。CTG gate logic は保持しません。
AIKernel.Control.Diagnostics は formatting と replay helper を公開します。
CtgReplayMetadataWriterはStepGovernanceTraceとTrajectoryGateResultmetadata を serialize します。CtgGovernanceTraceEmitterはIControlStateObserver経由で governance trace を emit します。CtgDiagnosticsFormatter、CtgTraceRenderer、formatter helper は開発 tool 向けの stable text view を提供します。CtgGateTelemetryValidatorは gate metadata に provider confidence、risk、score carrier が含まれないことを検証します。
Reject reason kind は metadata では uppercase snake case で書き出し、C# enum 名は PascalCase のまま維持します。
Provider / model component は evidence と vote material を供給できますが、
GateDecisionKind や CTG execution decision を返してはいけません。
BonsaiBuiltInProvider は physical / model provider boundary のままであり、execution
result metadata に CTG gate field を含めません。
通常の Control validation surface を実行します。
dotnet restore AIKernel.Control.slnx
dotnet build AIKernel.Control.slnx -c Release --no-restore
dotnet test AIKernel.Control.slnx -c Release --no-buildCTG tests では allow、deny、halt mapping、Core との truth-table parity、replay metadata、
diagnostics emission、および provider diagnostics が GateInput carrier に入らないことを確認します。
この接続には、opt-in policy adapter、deterministic emulator scenario、replay metadata
helper、diagnostics formatter が含まれます。Dynamic ProviderRouter integration は
0.1.1.1 surface には含めません。local orchestration では
CtgCouncilEvaluationProviderRegistry を使い、provider が見つからない場合は
Unknown vote、複数一致は deterministic error とします。
fallback routing は暗黙には行いません。後続で追加する場合も opt-in とし、Gate decision ではなく vote material のみを返す必要があります。