System Requirements
The system requirements are blackbox claims about affirmatrix as a whole: each says what the tool does, never how or by which part. Every software requirement refines one of them. None of them carries an implementation or a test of its own — a system requirement is discharged by the requirements beneath it, wherever those live in this document.
Test evidence means the test outcomes of a run and the edges that tie each outcome to a specification and to the implementations it witnesses. The case keeps none of it. affirmatrix builds it again from identified run bundles each time a verdict needs it.
affirmatrix shall build the evidence graph from node and edge records, deriving every node hash, edge hash, and design root solely from the nodes’ declared types and their content in each type’s canonical form, and from the edges’ declared endpoints and types, reproducibly across runs. |
affirmatrix shall determine the satisfaction of every requirement in the graph by transitive closure over the refines relation. |
affirmatrix shall derive whether each strong edge is active or suspect from its endpoints’ current content measured against the content it was affirmed against, and from the states of the strong edges it depends on. |
affirmatrix shall record each affirmation as a human judgement bound to the content of both edge endpoints at the moment the judgement was made. |
affirmatrix shall generate, for a defined scope and without altering the graph, an evidence package whose claims are verifiable by recomputation from the package’s own contents. |
While any condition of a gate is unmet, affirmatrix shall report the action that gate guards as blocked. |
affirmatrix shall persist the evidence graph as hashes and references, never as the content those hashes cover. |
If the proof gate reports a scope as blocked, then affirmatrix shall refuse to generate an evidence package for that scope. |
affirmatrix shall determine node kinds, edge kinds, and which edges propagate suspicion from a single built-in vocabulary that no configuration redefines. |
affirmatrix shall make every workflow it performs operable from its command line, with the outcome of each invocation distinguishable by its exit status. |
affirmatrix shall change the recorded affirmation state only as the direct result of an act the operator performs. |
affirmatrix shall take the test evidence of every verdict, at the time of that verdict, from identified run bundles alone. |
affirmatrix shall report, for an affirmed edge, who made its last affirmation and when, as the history of the case records them. |
affirmatrix shall report, for a node of the graph, whether its current content matches each content hash the case recorded for it. |