NO DOUBTS

doctrine

NO DOUBTS

Definition

NO DOUBTS is the epistemic arm of the NM/ND Doctrine that establishes a rigorous two-phase approach to software development and platform operations. The first phase demands full investigation and complete understanding before any action is taken. The second phase requires decisive, fully committed execution once a decision has been made. Every claim must be backed by tests, benchmarks, or formal verification -- no unvalidated claims, unchecked outputs, or assumption-based decisions are permitted.

The principle addresses a fundamental tension in engineering: the need for thoroughness versus the need for speed. Rather than compromising on either, NO DOUBTS separates them temporally. During the investigation phase, there is no pressure to act -- uncertainty is mapped, contradictions are preserved, and parallel hypotheses are explored using the NABLA Infinity framework. During the execution phase, there is no room for hesitation -- the decision has been made with sufficient evidence, and full commitment is required.

NO DOUBTS prevents two of the most damaging failure modes in software engineering: premature action (committing to an approach before understanding the problem) and analysis paralysis (investigating indefinitely without ever committing to execution). The confidence threshold mechanism (0.95 with Trinity Gate validation) provides a precise, measurable transition point between investigation and execution, eliminating subjective judgment about "when we know enough."

Overview

The principle is particularly important in the context of a platform with 530 autonomous agents, where each agent's decisions can cascade through the system. An agent acting without sufficient evidence can introduce subtle errors that compound across the agent network. The NO DOUBTS framework ensures that every agent decision is grounded in validated evidence before execution begins.

The NO DOUBTS principle operates at every level of the platform: individual function implementations, module-level architectural decisions, cross-app integration patterns, and platform-wide governance. At the code level, it manifests as thorough test coverage before merging. At the agent level, it manifests as confidence scoring before action. At the platform level, it manifests as quality gates that accumulate evidence from multiple verification sources before authorizing deployment.

The philosophical foundation draws from epistemic rigor: the discipline of distinguishing between what is known, what is believed, and what is unknown. Most engineering failures stem not from lack of knowledge but from treating beliefs as knowledge -- acting on assumptions that have not been verified. NO DOUBTS enforces a hard boundary between investigation (where beliefs are held provisionally) and execution (where verified knowledge drives action).

Investigation Phase Architecture

The investigation phase operates under NABLA Infinity governance with seven non-negotiable axioms that structure the evidence-gathering process:

AxiomRole in NO DOUBTSEnforcement
Signal PluralityMinimum 2 independent signals for any beliefHARD -- blocks action with single signal
Contradiction PreservationBoth sides of contradictions preservedHARD -- blocks resolution by ignoring evidence
Absence InformativeMissing signals treated as meaningful dataSOFT -- tracked and investigated
Time DecayBeliefs carry mandatory timestampsHARD -- stale evidence loses weight
Unknown Valid"I don't know" is legitimate conclusionHARD -- blocks forced certainty
Source IndependenceIndependent sources weighted higherSOFT -- bias assessment required
Provenance MandatoryAll beliefs traceable to sourcesHARD -- untraced beliefs rejected

These axioms prevent the most common investigation failures: cherry-picking evidence (Signal Plurality prevents), hiding inconvenient findings (Contradiction Preservation prevents), ignoring gaps (Absence Informative prevents), relying on outdated data (Time Decay prevents), and fabricating certainty (Unknown Valid prevents).

Confidence Accumulation Model

NO DOUBTS uses a structured confidence accumulation model where evidence from multiple independent sources converges toward the action threshold. Each evidence source contributes a confidence increment based on its verification strength and independence:

Evidence Source 1 (e.g., unit tests pass)        --> confidence += 0.20
Evidence Source 2 (e.g., type checker clean)      --> confidence += 0.20
Evidence Source 3 (e.g., property tests pass)     --> confidence += 0.20
Evidence Source 4 (e.g., integration tests pass)  --> confidence += 0.20
Evidence Source 5 (e.g., manual review complete)  --> confidence += 0.15

Total Confidence: 0.95 --> Meets threshold
Trinity Gate: structural + logical + formal consistency --> PASS
Transition to Execution: AUTHORIZED

The confidence contributions are not additive in a naive sense. Correlated evidence sources (two unit tests from the same module) contribute less than independent sources (a unit test plus a property-based test plus a Dialyzer check). The model applies independence weighting to prevent confidence inflation from redundant signals.

Transition Mechanics

The NABLA-to-NM/ND transition is not a simple threshold check. It requires three simultaneous conditions:

  1. Confidence >= 0.95: Accumulated evidence from multiple independent sources reaches the threshold
  2. Trinity Gate Passed: The claim passes all three verification layers (structural consistency via graph theory, logical consistency via rule-based evaluation, and formal necessity via modal logic)
  3. Axioms Compliant: No NABLA axiom violations remain unresolved in the active evidence set
defmodule PrismaticClaude.NoDoubtsTransition do
  @moduledoc """
  Implements the NO DOUBTS transition from investigation to execution.
  Validates confidence threshold, Trinity Gate, and axiom compliance
  before authorizing decisive action. This module is the formal
  gatekeeper between exploration and commitment.
  """

  @confidence_threshold 0.95

  @type transition_result ::
    {:authorized, :execute} |
    {:blocked, :insufficient_confidence, float()} |
    {:blocked, :trinity_gate_failed, list()} |
    {:blocked, :axiom_violation, list()}

  @spec evaluate_transition(map()) :: transition_result()
  def evaluate_transition(evidence_set) do
    confidence = calculate_confidence(evidence_set)
    trinity_result = evaluate_trinity_gate(evidence_set)
    axiom_result = check_axiom_compliance(evidence_set)

    cond do
      confidence < @confidence_threshold ->
        {:blocked, :insufficient_confidence, confidence}

      not trinity_passed?(trinity_result) ->
        {:blocked, :trinity_gate_failed, trinity_result.failures}

      not axioms_compliant?(axiom_result) ->
        {:blocked, :axiom_violation, axiom_result.violations}

      true ->
        {:authorized, :execute}
    end
  end

  @spec calculate_confidence(map()) :: float()
  defp calculate_confidence(evidence_set) do
    evidence_set.signals
    |> apply_independence_weighting()
    |> apply_time_decay()
    |> Enum.map(& &1.confidence_contribution)
    |> Enum.sum()
    |> min(1.0)
  end

  @spec apply_independence_weighting(list()) :: list()
  defp apply_independence_weighting(signals) do
    signals
    |> Enum.group_by(& &1.source_category)
    |> Enum.flat_map(fn {_category, group} ->
      weight_factor = 1.0 / :math.sqrt(length(group))
      Enum.map(group, &Map.update!(&1, :confidence_contribution, fn c -> c * weight_factor end))
    end)
  end

  @spec apply_time_decay(list()) :: list()
  defp apply_time_decay(signals) do
    now = System.monotonic_time(:second)

    Enum.map(signals, fn signal ->
      age_seconds = now - signal.timestamp
      decay_factor = :math.exp(-age_seconds / signal.half_life)
      Map.update!(signal, :confidence_contribution, fn c -> c * decay_factor end)
    end)
  end
end

Decisive Execution Phase

Once the transition is authorized, the execution phase operates under NO MERCY governance with no room for second-guessing:

PrincipleDescriptionEnforcement
Full CommitmentThe chosen approach is executed completely, not partiallyL3 rejection for incomplete delivery
No Mid-Execution DoubtsIf the investigation was thorough, execution proceeds without hesitationL4 review if execution stalls
Completion GuaranteeWork continues until the deliverable is production-readyNo partial merges
Immediate VerificationResults are verified against the evidence that authorized executionPost-execution check mandatory
No BacktrackingIf new evidence invalidates the approach, return to investigation formallyExplicit phase transition required

The execution phase is characterized by speed and completeness. The investigation phase already answered all questions and resolved all ambiguities. The execution phase implements the decided solution without revisiting those decisions. This separation prevents the common anti-pattern of "code, doubt, refactor, doubt, refactor" loops that waste time and produce inconsistent results.

Evidence Pipeline Architecture

Evidence Sources                   Confidence Engine          Decision Gate
+------------------+          +--------------------+     +------------------+
| Unit Tests       |--------->|                    |     |                  |
| Type Checker     |--------->| Signal Aggregation |---->| Threshold Check  |
| Property Tests   |--------->| Time Decay         |     | Trinity Gate     |
| Integration Tests|--------->| Provenance Verify  |     | Axiom Compliance |
| Manual Review    |--------->| Independence Weight|     |                  |
| Benchmarks       |--------->|                    |     |                  |
+------------------+          +--------------------+     +--------+---------+
                                                                  |
                                                    +-------------v---------+
                                                    |   >= 0.95 + Pass?     |
                                                    +--+------------------+-+
                                                       |                  |
                                                   YES |              NO  |
                                                       v                  v
                                              +--------+------+  +-------+--------+
                                              | EXECUTE       |  | CONTINUE       |
                                              | (NO MERCY)    |  | INVESTIGATION  |
                                              +---------------+  +----------------+

Implementation Across Platform Layers

NO DOUBTS is implemented across multiple system layers within the Prismatic Platform:

Agent Layer

Each of the 530 agents evaluates confidence before taking action, using structured evidence accumulation against the threshold. The Blue Team defensive agents accumulate evidence from multiple detection sources before raising alerts. The Purple Team requires four closure conditions before accepting that a security finding is resolved. The White Team constructs formal proofs before declaring invariants verified.

defmodule PrismaticAgents.DecisionEngine do
  @moduledoc """
  NO DOUBTS decision engine for agent operations.
  Ensures all agent actions are backed by sufficient evidence
  before transitioning from investigation to execution.
  """

  @spec make_decision(atom(), map(), map()) ::
    {:ok, :execute, map()} | {:ok, :investigate_more, map()}
  def make_decision(agent_id, context, evidence) do
    confidence = assess_confidence(evidence)
    trinity = verify_trinity_gate(evidence)

    if confidence >= 0.95 and trinity.passed? do
      action_plan = formulate_action(agent_id, context, evidence)
      {:ok, :execute, action_plan}
    else
      gaps = identify_evidence_gaps(evidence, confidence)
      {:ok, :investigate_more, %{gaps: gaps, current_confidence: confidence}}
    end
  end

  @spec assess_confidence(map()) :: float()
  defp assess_confidence(evidence) do
    evidence
    |> Map.get(:signals, [])
    |> Enum.filter(& &1.validated?)
    |> Enum.map(& &1.weight)
    |> Enum.sum()
  end

  @spec identify_evidence_gaps(map(), float()) :: map()
  defp identify_evidence_gaps(evidence, current_confidence) do
    needed = 0.95 - current_confidence
    %{
      confidence_gap: needed,
      missing_signals: find_missing_signal_types(evidence),
      stale_signals: find_stale_signals(evidence),
      unverified_claims: find_unverified(evidence)
    }
  end
end

Quality Layer

Quality gates verify that changes are backed by evidence (tests, type checks, static analysis) before accepting them. The 13-domain quality scoring system accumulates evidence from Dialyzer, Credo, compilation warnings, typespec coverage, and other verification tools. A commit that passes all 13 domains has accumulated sufficient evidence for the quality gate transition.

Session Layer

The session lifecycle protocol ensures developers investigate before implementing and verify after completing. The mandatory session discipline requires reading code, running tests, and analyzing behavior before making changes. Once changes are made, they must be immediately verified through local testing before committing.

CI/CD Layer

Pipeline stages accumulate evidence (compilation, testing, analysis) before authorizing deployment. Each stage contributes to the overall confidence that a change is safe to deploy. The pre-commit hook system runs 11 phases of verification, each adding evidence toward the deployment confidence threshold.

Verification After Execution

The NO DOUBTS cycle does not end at execution. Post-execution verification ensures that the results match the evidence that authorized the action:

defmodule PrismaticSafety.PostExecutionVerifier do
  @moduledoc """
  Verifies that execution results match the evidence
  that authorized the action, completing the NO DOUBTS cycle.
  Detects drift between expected and actual outcomes.
  """

  @spec verify_execution(map(), map()) ::
    {:ok, :verified} | {:error, :mismatch, map()}
  def verify_execution(expected_from_evidence, actual_result) do
    mismatches =
      expected_from_evidence
      |> Enum.map(fn {key, expected} ->
        actual = Map.get(actual_result, key)
        {key, expected, actual, expected == actual}
      end)
      |> Enum.reject(fn {_, _, _, match?} -> match? end)

    case mismatches do
      [] -> {:ok, :verified}
      failures -> {:error, :mismatch, %{failures: failures, action: :reinvestigate}}
    end
  end
end

Confidence Thresholds by Context

Different operational contexts require different confidence levels, reflecting the varying cost of incorrect action:

ContextThresholdTrinity GateRationale
Critical decisions (architecture, security)0.95MANDATORYHigh cost of error, irreversible consequences
Standard operations (features, refactoring)0.80MANDATORYModerate cost, recoverable if wrong
Exploratory analysis (research, prototyping)0.60RECOMMENDEDLow cost, designed for learning
Research queries (investigation, benchmarking)0.50OPTIONALInformational, no commitment implied

Best Practices

Explicit Evidence Tracking: Maintain a clear record of what evidence supports each decision. When confidence reaches the threshold, you should be able to enumerate exactly which signals contributed. This traceability is essential for post-incident analysis and for building institutional knowledge.

Time-Box Investigation: While NO DOUBTS demands thorough investigation, it does not endorse infinite analysis. Set explicit time bounds for investigation phases and escalate if the threshold cannot be reached within bounds. The escalation triggers additional resources, not premature action.

Independent Signal Sources: Seek evidence from genuinely independent sources. Two unit tests from the same test file provide less confidence than one unit test plus one property-based test plus one type checker result. Independence is the key to robust confidence accumulation.

Preserve Uncertainty Honestly: During investigation, resist the temptation to round up confidence. If you are at 0.80, you are at 0.80 -- not "close enough to 0.95." The threshold exists for a reason, and circumventing it undermines the entire framework.

Commit Fully Once Decided: The execution phase is not a second investigation phase. Once you cross the threshold, execute with conviction. If new contradictory evidence appears during execution, pause, return to investigation formally, and re-evaluate. Do not operate in a hybrid state.

Document the Transition: When transitioning from investigation to execution, explicitly record: what the decision is, what evidence supports it, what the confidence score is, and what the Trinity Gate result was. This record serves as both accountability and future reference.

Common Pitfalls

Artificial Confidence Inflation: Counting the same evidence multiple times or treating correlated sources as independent to reach the 0.95 threshold. This undermines the entire framework and produces decisions that appear well-founded but are actually based on thin evidence.

Perpetual Investigation: Using NO DOUBTS as an excuse to never act. The principle requires decisive action once evidence is sufficient, not indefinite investigation. If investigation consistently fails to reach the threshold, the problem may be poorly defined rather than insufficiently investigated.

Ignoring Contradictions: Discarding evidence that contradicts a preferred conclusion. The Addiction Preservation doctrine requires preserving contradictions, not resolving them by selective evidence elimination. Contradictions that persist after thorough investigation indicate genuine complexity that must be addressed in the execution plan.

Executing Without Verification: Skipping the post-execution verification step. NO DOUBTS is a complete cycle: investigate, decide, execute, verify. The verification step ensures the execution matched expectations and catches silent failures.

Conflating Doubt with Caution: NO DOUBTS does not mean acting recklessly. It means acting decisively once evidence supports the action. Caution during investigation is expected; hesitation during execution is prohibited. These are different behaviors appropriate to different phases.

Violation Protocol

LevelDescriptionTriggerAction
L1Minor deviationInsufficient evidence documentationWarning + immediate correction
L2Quality violationActing below confidence thresholdBlock + required re-investigation
L3Incomplete deliveryExecution abandoned mid-wayRejection + restart from investigation
L4Doubt-compromisedPersistent hesitation despite evidenceRejection + Supreme Review

See Also


Connect & Contribute

Created by Tomas Korcak (korczis) | Open Source under GHL