Releases: ThoughtProof/Pot-sdk
v3.0.0-rc.1
v3.0.0-rc.1 — Pre-release
This is a release candidate. Production users on pot-sdk@2.0.0 are not affected — latest on npm continues to point to v2.0.0. To opt in:
npm install pot-sdk@nextBreaking change: Public verdict mapping fix per pot-cli ADR-0001.
What changed
| Internal verdict | Public verdict (v2.x) | Public verdict (v3.0) |
|---|---|---|
ALLOW |
ALLOW |
ALLOW (unchanged) |
HOLD |
BLOCK ❌ |
UNCERTAIN ✓ |
DISSENT |
BLOCK ❌ |
UNCERTAIN ✓ |
UNCERTAIN |
UNCERTAIN |
UNCERTAIN (unchanged) |
severity_score is now null for all current verdicts. It is reserved for future use when the engine emits an explicit hard-BLOCK internal verdict.
Why
In v2.x, internal HOLD (an epistemic state — "moderate concerns, not enough evidence to definitively reject") was surfaced as BLOCK ("definitively rejected"). That was a severity inversion that lost information consumers needed for human-review escalation.
DISSENT is fixed for a different reason: mapping it to BLOCK let a single contrarian model override a majority of approvers, undermining the multi-model aggregation principle. UNCERTAIN with dissent: true metadata preserves the signal without giving any single model a veto.
Migration
- if (result.verdict === 'BLOCK') {
+ if (result.verdict === 'UNCERTAIN') {
sendForHumanReview(result);
}If you consumed severity_score for HOLD or DISSENT cases: it is now null. Use the metadata flags (review_needed, dissent) and internal trace fields for granular signal data.
Safety-critical consumers
Per ADR-0001: safety-critical consumers (medical dosing, financial-risk gating, access control) SHOULD treat dissent: true and review_needed: true as BLOCK in their own policy layer.
function applySafetyCriticalPolicy(result: PipelineResult) {
if (result.verdict === 'BLOCK') return 'reject';
if (result.verdict === 'UNCERTAIN' && (result.metadata?.dissent || result.metadata?.review_needed)) {
return 'reject';
}
return 'allow';
}What's coming next
- v3.0.0 stable: after PR-G2 lands
CONDITIONAL_ALLOWsupport (ALLOW + conditions: string[]), aligning with pot-cli PR-E (#12). - pot-cli PR-F: deterministic count-based aggregator replacing the regex-based
extractMinorityPositionsheuristic.
Feedback during the rc
This rc is intended for soak testing. Please file issues at https://github.com/ThoughtProof/Pot-sdk/issues — particularly if you depend on severity_score or branched on BLOCK for non-final verdicts.
Full diff vs v2.0.0: v2.0.0...v3.0.0-rc.1