rules are list of options not strings

This commit is contained in:
2026-05-26 19:23:19 -06:00
parent 121336a190
commit 2c4df3998a
@@ -20,13 +20,73 @@ type TrustedCanonicalProjectionReference = TrustedCanonicalProjectionReference o
type TrustedRuntimeTraceReference = TrustedRuntimeTraceReference of string
type CandidateDiscoveryRule = CandidateDiscoveryRule of string
type CandidateGroupingRule =
| GroupAdjacentSegments
| GroupStructurallyLinkedSegments
| GroupSharedLiteralClusters
| GroupSharedExportSurface
type ScoringRule = ScoringRule of string
type BoundaryRationaleRule =
| RecordAdjacentGroupingRationale
| RecordStructuralLinkRationale
| RecordSharedLiteralRationale
| RecordExportSurfaceRationale
type TieBreakRule = TieBreakRule of string
type ScoringRule =
| WeightLicenseBanner
| WeightPreservedPackageName
| WeightSourceMapHint
| WeightPreservedRequireString
| WeightCharacteristicLiteralSet
| WeightHelperSignature
| WeightAstShapeFingerprint
| WeightExportSurfaceSimilarity
| WeightDependencyGraphPosition
| WeightByteSimilarity
| WeightRuntimeExecutionTrace
type RequirementRule = RequirementRule of string
type RankingRule =
| RankByTotalEvidenceWeight
| RankByEvidenceDiversity
| RankByBoundaryCoverage
| RankByRuntimeSupport
type TieBreakRule =
| PreferMoreSpecificPackageMatch
| PreferBroaderBoundaryCoverage
| PreferStaticEvidenceAgreement
| PreferStablePackageNameOrder
type UnresolvedRule =
| KeepBelowThresholdCandidatesUnresolved
| KeepCollidingCandidatesUnresolved
| KeepAmbiguousCandidatesUnresolved
| KeepConflictingEvidenceCandidatesUnresolved
type RejectedRule =
| RejectDeterministicallyAppAuthoredCandidates
| RejectDeterministicallyNonPackageCandidates
| RejectDeterministicallyContradictedCandidates
type RequiredManifestField =
| CandidatePackageNameField
| DecisionStateField
| ConfidenceScoreField
| EvidenceSummaryField
| RawEvidenceReferencesField
| MatchedSegmentIdsField
| RecoveredBoundaryNotesField
| ReplacementPlanField
| FallbackReferenceField
| EvidenceProvenanceField
| AmbiguityNotesField
type AuditabilityRule =
| RecordDecisionRationale
| RecordThresholdUsed
| RecordScoringInputs
| RecordCompetingMatches
| RecordDecisionTimestampOrder
// 2. Commands (Inputs)
@@ -49,25 +109,25 @@ type TrustedIngestArtifacts = {
type VendoredCandidateDiscoveryRules = {
allowedSignals: EvidenceSignal list
groupingRules: CandidateDiscoveryRule list
boundaryRationaleRules: CandidateDiscoveryRule list
groupingRules: CandidateGroupingRule list
boundaryRationaleRules: BoundaryRationaleRule list
}
type ConfidenceScoringRules = {
scoringRules: ScoringRule list
rankingRules: ScoringRule list
rankingRules: RankingRule list
tieBreakRules: TieBreakRule list
}
type AcceptanceThresholdPolicy = {
acceptanceThreshold: ConfidenceScore
unresolvedRules: RequirementRule list
rejectedRules: RequirementRule list
unresolvedRules: UnresolvedRule list
rejectedRules: RejectedRule list
}
type DependencyDecisionRequirements = {
requiredManifestRules: RequirementRule list
auditabilityRules: RequirementRule list
requiredManifestFields: RequiredManifestField list
auditabilityRules: AuditabilityRule list
}
type DependencyRecoveryState = {