formula_id: WBS_10_DOTNET_PROVENANCE_CONTRACT_V1 owner: QuantEngine status: draft goal: "결정/팩터/수집 provenance payload를 표준화한다." payloads: - payload_id: factor_evidence source: src/dotnet/QuantEngine.Application/Services/DecisionLearningService.cs required_fields: - FactorObservationId - FactorId - FactorVersion - ObservedAt - Gate - Role - SourceName - PayloadJson - ProvenanceJson nullable_fields: - NumericValue - TextValue pass_condition: "factor evidence payload가 누락 없이 기록됨" - payload_id: decision_event source: src/dotnet/QuantEngine.Application/Services/DecisionLearningService.cs required_fields: - decisionKey - decidedAt - instrumentId - action - gate - sourceVersion nullable_fields: - score - trace - provenance pass_condition: "decision event payload가 normalized store에 기록됨" - payload_id: collection_audit source: src/dotnet/QuantEngine.Application/Models/CollectionExecutionAudit.cs required_fields: - RunId - State - StartedAt - SuccessCount - ErrorCount nullable_fields: - FinishedAt - Message pass_condition: "collection audit payload가 append-only JSONL에 기록됨" - payload_id: scheduler_audit source: src/dotnet/QuantEngine.Web/Services/SchedulerModels.cs required_fields: - JobId - RunId - State - StartedAt nullable_fields: - Reason - FinishedAt - ResourceKey pass_condition: "scheduler audit payload가 append-only JSONL에 기록됨" notes: - "provenance payload는 구조를 표준화하되, 숫자 계산은 하지 않는다." - "LLM은 payload value를 재계산하지 않는다."