Skip to main content

Decision Output

Machine-Readable Response

{
"decision": "ALLOW",
"confidence": "HIGH",
"constraints": [],
"retryAfter": null,
"ruleIds": ["allow_strong_builder"],
"version": "v1"
}
FieldDescription
decisionALLOW, DENY, or ALLOW_WITH_LIMITS
confidenceLOW, MEDIUM, HIGH, or VERY_HIGH
ruleIdsArray of strict rule IDs that triggered the decision
explainHuman-readable array of reasons

Human-Readable Explanation

{
"summary": "User is eligible",
"explain": [
"Expert-level builder credibility",
"High social trust",
"No negative trust indicators"
]
}

Confidence Mapping

Rules produce a confidenceDelta (numeric). The final output uses a categorical confidence tier.

function mapConfidence(numericConfidence: number): ConfidenceTier {
if (numericConfidence >= 80) return "VERY_HIGH";
if (numericConfidence >= 60) return "HIGH";
if (numericConfidence >= 40) return "MEDIUM";
return "LOW";
}

type ConfidenceTier = "LOW" | "MEDIUM" | "HIGH" | "VERY_HIGH";

Note: confidenceDelta in rules is additive to a base of 50. The final numeric value is mapped to a tier for the API response.

Decision Logging (Minimal & Optional)

BaseCred does not log score history.

Optionally, systems may log decision metadata only:

interface DecisionLog {
subjectHash: string; // hashed identity
context: string;
decision: "ALLOW" | "DENY" | "ALLOW_WITH_LIMITS";
confidence: ConfidenceTier;
ruleIds: string[];
signalCoverage: number;
timestamp: number;
}

This enables audits, analytics, and rule evaluation — without storing raw scores or signals.

Constraints Reference

When a decision is ALLOW_WITH_LIMITS, one or more constraints are returned based on the Rule ID.

Rule IDConstraints AppliedMeaning
probation_inactivereduced_access, activity_requiredUser needs to be active/verify again.
probation_new_userprobation_period, limited_actionsNew user trial period.
probation_mixed_signalsreview_requiredManual review flagged.
limit_partial_signalsreduced_accessLimited features due to data gaps.
limit_comment_newrate_limitedE.g. 5 comments/hour.
limit_publish_unverifiedreview_queueContent goes to mod queue.
limit_governance_inactivereduced_weightVote counts for less.