Thoughtware
Part III · Engineering Discipline

Evaluation Replaces Certainty

What replaces expected == actual once correctness cannot be specified, and why decision, procedure and goal are measured differently.

9 min read

Traditional software engineering benefits from a powerful assumption: for many important behaviours, correctness can be specified before execution. Given a particular input, the system should produce a particular output. A test can therefore make a simple assertion: expected == actual. When the result differs, something is wrong. This model supports unit testing, regression testing, type systems, formal verification, and much of the discipline that makes conventional software dependable.

That assumption becomes weaker when software performs judgment.

Consider a recommendation produced for a customer complaint. Is it sensible given the circumstances? Does an explanation identify the issue that actually matters rather than merely repeating available information? Was escalation justified, or could the system have resolved the case safely? Did a response technically follow policy while violating its intent? These questions rarely have one exact string or value that can be declared correct in advance. Several answers may be acceptable, some may be clearly poor, and the difference between them may depend on qualities such as relevance, proportionality, grounding, completeness, or risk.

The loss of an exact expected output does not mean that quality becomes subjective or that engineering discipline must be abandoned. It means the mechanism of assurance has to change. Where deterministic correctness cannot be exhaustively specified, Thoughtware relies on evaluation.

Evaluation is not the practice of occasionally looking at model outputs and deciding that they seem reasonable. It is the systematic definition and measurement of what good cognitive behaviour means. A judgment that cannot be checked with a simple equality assertion can still be evaluated against properties, criteria, cases, constraints, and reference judgments. The task moves from specifying every correct answer to specifying the dimensions along which an answer should be considered good or unacceptable.

This is especially important at the level of the Cognitive Unit. Because a CU owns a bounded judgment, it provides a natural boundary around which an evaluation suite can be constructed. Such a suite may contain representative cases that capture ordinary behaviour, edge cases that expose ambiguity or rare conditions, and adversarial cases designed to reveal predictable weaknesses. It can describe expected properties of the result, such as grounding, completeness, proportionality, or consistency. It can specify prohibited behaviours, such as inventing evidence, exceeding authority, ignoring a required policy, or reaching a decision when the available information is insufficient.

Evaluation can also use explicit scoring criteria. An invoice-materiality CU, for example, might be evaluated for whether it identifies the correct sources of discrepancy, applies policy appropriately, distinguishes material from immaterial variance, explains its conclusion using available evidence, and escalates when confidence is insufficient. Some cases may have reference judgments supplied by domain experts. Others may be evaluated along a rubric rather than against one canonical answer.

This creates an important difference between testing deterministic behaviour and evaluating cognitive behaviour. A conventional test often asks, did the implementation produce the specified answer? A cognitive evaluation asks, how well did the component exercise its assigned judgment under these conditions?

The latter can still be rigorous, but the specification of quality is richer than a single expected value.

Cognitive systems can also participate in their own evaluation. A Judge CU is a Cognitive Unit whose responsibility is to assess the output or behaviour of another cognitive capability against defined criteria. A judge might determine whether an answer is grounded in the supplied evidence, whether a recommendation complies with policy, whether an explanation adequately supports its conclusion, or whether two candidate outputs differ meaningfully in quality.

Judge CUs make evaluation scalable because many behaviours that require judgment to produce also require judgment to assess. They can be run across large evaluation suites, compare alternative implementations, identify regressions, and provide structured signals during development. They do not, however, make evaluation automatically objective.

A cognitive judge can carry its own biases. If the evaluated system and judge rely on similar models, their failures may be correlated. A judge may prefer stylistic qualities that do not correspond to actual correctness. Different judges may disagree. Scores may drift when the judge implementation changes. Some criteria that appear clear in a rubric may still be interpreted inconsistently. Judge CUs therefore require calibration against trusted reference cases and human judgment, especially where consequences are meaningful.

Evaluation itself must consequently be evaluated. A useful judge should demonstrate that its assessments correlate sufficiently with the standard the system intends to preserve. Disagreement between human reviewers and automated judges should be studied rather than hidden. Where no single evaluator is reliable enough, multiple signals may be combined. Human review remains particularly important when establishing new criteria, examining novel failures, calibrating judges, or evaluating decisions with substantial consequences.

Evaluating a Known Procedure

A Skill promises something different from a Cognitive Unit, and therefore has to be evaluated differently. A Cognitive Unit is asked whether it made its decision well. A Skill is asked whether it performed its capability correctly.

That question concerns the composition rather than any single judgment inside it. Were the operations arranged in the right order? Do the seams between them hold, so that the output of one is genuinely usable by the next? Are the deterministic invariants preserved? Do the tools behave as assumed, and are their side effects contained? What happens when an operation fails midway, and is the resulting state recoverable? Does the Skill complete the capability it promised, within acceptable latency and cost?

A Skill can fail while every Cognitive Unit inside it performs exactly at its published quality, because the composition itself can be wrong. Conversely, a well-composed Skill can be undermined by one weak judgment. Procedure quality and decision quality overlap, but they are not interchangeable, and measuring one does not establish the other.

At the Agent level, evaluation becomes broader still. A good final answer does not necessarily imply a good trajectory. An Agent might reach the correct conclusion after unnecessary reasoning, repeatedly invoke expensive tools, access information it did not need, exceed its authority before recovering, or succeed only because an intermediate mistake happened to cancel out later.

Agent evaluation must therefore consider the path as well as the destination. Was the appropriate Cognitive Unit selected? Were tools used correctly? Did the Agent take unnecessary steps? Did it respect cost and time constraints? Did it recognise when it lacked sufficient information? Did it escalate at the appropriate point? Could it recover when a tool failed or an intermediate judgment proved unreliable? Did it stop when the goal had been achieved rather than continuing to reason?

This trajectory-level evaluation becomes particularly important as Agents receive greater autonomy. A system that produces acceptable outputs while taking unsafe or economically unsustainable paths is not well engineered. Thoughtware must therefore evaluate outcomes, decisions, and the processes through which those outcomes were reached.

Evaluation also changes the development lifecycle. In conventional software, we often picture a progression from specification to implementation to testing. Testing confirms whether the implementation satisfies what was specified. In Thoughtware, the relationship is more iterative: specification, implementation, evaluation, and improvement continually inform one another. Evaluation may reveal that the implementation is weak, but it may also reveal that the cognitive responsibility was poorly defined, that necessary context is missing, that the evaluation criteria themselves are incomplete, or that a judgment should not have been delegated under certain conditions.

This leads to one of the central engineering principles of Thoughtware: in cognitive software, evaluation is not a QA phase applied after construction. It is part of the definition of the component itself.
Evaluation should occur at the level of the responsibility being promised: a decision, a procedure, or a goal.

A Cognitive Unit without an evaluation strategy is only partially specified. An Agent whose success conditions are unclear cannot be meaningfully improved. A system that adapts without evaluating the effect of that adaptation cannot distinguish learning from drift.

Thoughtware therefore replaces neither testing nor certainty. Deterministic parts of the system should continue to be tested deterministically wherever possible. But where software is entrusted with judgment, certainty often gives way to measured quality. The engineering challenge is to make that quality observable, comparable, governable, and capable of improving over time.