Skip to content

Releases: ThoughtProof/Pot-sdk

v3.0.0-rc.1

09 May 12:22
19c96ac

Choose a tag to compare

v3.0.0-rc.1 Pre-release
Pre-release

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@next

Breaking 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_ALLOW support (ALLOW + conditions: string[]), aligning with pot-cli PR-E (#12).
  • pot-cli PR-F: deterministic count-based aggregator replacing the regex-based extractMinorityPositions heuristic.

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