dev07-4 · decide whether it is proven
A sub-flow of dev07 · run plumb. Entered from the manifest, carrying the stories' facts. Exits to dev07-5 · report it, carrying a verdict per story that nobody could have typed.
dev07-4-1 check the citation's id lands in a declared namespace Unproven
As a reader of a board I want an id outside every namespace the project declared to be named as one, so that a mistyped id never lands beside a real story looking just as real.
a structural claim is proved by inspection, and its citing test executed production code — so what passed was an exercise of the shape rather than a reading of it
The tests that cite it (3)
tests/test_board.py::test_a_story_belonging_to_no_declared_spec_is_named— passed, ungroundedtests/test_end_to_end.py::test_a_condition_names_what_it_is_about— passed, groundedtests/test_end_to_end.py::test_an_id_the_project_declared_in_its_own_tables_is_not_an_orphan— passed, grounded
Requirements (6)
- dev07-4-1-ur1a citation whose id lies in none of the declared namespaces is reported, named, and the run carries on — a finding is reported and never fails or halts a run
- dev07-4-1-ur2the question is asked only where the project declared namespaces at all
- dev07-4-1-ur3the check reads the shape of the id, never whether a document exists behind the namespace
- dev07-4-1-ur4an id outside every declared namespace is named on its own subject, not only as a fact about the run
- dev07-4-1-ur5an id the project declares in its own configuration — a decision or a parameter named where the project says how its subjects are judged — is not an orphan: the project has already named it, which is the whole of what the check asks
- dev07-4-1-nfr1the check is a scan over ids and declarations, needing no further run, so it costs nothing and always runs
dev07-4-2 hold the gate — ran and passed, then the archetype's own check Proven
As somebody trusting a green story I want no kind of claim to have an easier way to pass than any other, so that a fake has no branch to hide in.
The tests that cite it (22)
tests/test_end_to_end.py::test_a_skipped_citation_is_a_claim_not_a_proof— passed, groundedtests/test_end_to_end.py::test_declaring_entry_points_separates_wired_proof_from_isolated_proof— passed, groundedtests/test_end_to_end.py::test_config_can_declare_an_archetype_the_run_never_learned— passed, groundedtests/test_gate.py::test_no_citing_test_at_all_is_a_claim_not_a_proof— passed, ungroundedtests/test_gate.py::test_a_skip_or_a_failure_never_proves[skipped]— passed, ungroundedtests/test_gate.py::test_a_skip_or_a_failure_never_proves[failed]— passed, ungroundedtests/test_gate.py::test_one_passing_citation_is_enough_even_beside_a_failing_one— passed, ungroundedtests/test_gate.py::test_the_gate_is_two_checks_in_series_and_fails_fast— passed, ungroundedtests/test_gate.py::test_the_structural_branch_handles_every_grounding_fact— passed, ungroundedtests/test_grounding.py::test_grounding_cross_checks_a_claimed_wired_rung— passed, ungroundedtests/test_grounding.py::test_the_depth_cross_check_actually_runs_in_the_gate— passed, ungroundedtests/test_grounding.py::test_a_not_checked_fact_contradicts_nothing— passed, ungroundedtests/test_grounding.py::test_a_behavioral_story_needs_a_citing_test_that_grounds— passed, ungroundedtests/test_grounding.py::test_one_execution_yields_one_fact_so_no_test_serves_both_archetypes— passed, ungroundedtests/test_grounding.py::test_the_gate_needs_grounding_and_never_mutation— passed, ungroundedtests/test_grounding.py::test_the_archetype_is_per_subject_and_defaults_to_behavioral— passed, ungroundedtests/test_grounding.py::test_an_archetype_selects_a_check_and_can_never_grant_a_pass— passed, ungroundedtests/test_grounding.py::test_dispatched_fails_a_structural_story_like_every_other_executing_fact— passed, ungroundedtests/test_grounding.py::test_the_cheapest_thing_that_passes_a_structural_claim_is_not_assert_true— passed, ungroundedtests/test_grounding.py::test_a_behavioural_story_gets_no_partial_credit_for_touching_nothing— passed, ungroundedtests/test_grounding.py::test_an_inspect_by_import_structural_test_cannot_prove_in_either_order— passed, ungroundedtests/test_grounding.py::test_a_structural_test_may_read_its_artifact_in_a_fixture— passed, ungrounded
Requirements (19)
- dev07-4-2-ur01two checks in series, fail-fast: a citing test ran and passed, and then the check the story's archetype selects
- dev07-4-2-ur02no citing test at all, a skip, an abort or a failure is a claim and never a proof
- dev07-4-2-ur03the second check is mirrored and never waived: each archetype gets its own positive check over the same fact, so an exemption exists for neither
- dev07-4-2-ur04a behavioural story is proved by
grounded;ungroundedandinertrefuse it, andnot-checkedanddispatchedyield passed — wiring not verified, because a missing declaration is a fact about the setup and not about the test - dev07-4-2-ur05a behavioural story gets no partial credit for touching nothing
- dev07-4-2-ur06a structural story is proved by
inert— the artifact was read and none of it ran; every executing fact refuses it,not-checkedincluded, and a test that touched the artifact in no way proves nothing - dev07-4-2-ur07the archetype selects a check and can never grant a pass
- dev07-4-2-ur08the archetype is declared per subject in the project's configuration, defaults to behavioural, and is never written on the test or inferred from it
- dev07-4-2-ur09one execution yields one wiring fact, so no test serves both archetypes; a test citing both fails on the side its execution did not serve
- dev07-4-2-ur10a claimed wired rung (
dev07-4-2-sr1) whose wiring fact isungroundedorinertis refuted; unit and component claim isolation and are never refuted for it - dev07-4-2-ur11which arm refused is said, from the citations that actually decided the verdict, so a story refused by one arm is never explained by another's fact
- dev07-4-2-sr1the depth vocabulary is the core's own — unit · component · wiring · standards-integration · smoke · smoke/e2e · e2e — of which the wired rungs are wiring, standards-integration, smoke, smoke/e2e and e2e; a claimed depth outside the vocabulary raises the named condition
depth.unsupported, never a guess - dev07-4-2-sr2the wired rungs are a fixed set the refutation reads; no project declaration widens or narrows it
- dev07-4-2-sr3the gate judges a claim against the project's own configuration — the archetype, the entry points, the reduction — so a wrong depth or archetype is corrected there, which is the loop A developer's workflow draws through
dev08
- dev07-4-2-nfr1the wiring fact is on the critical path and mutation never is; the deeper check informs and cannot block
- dev07-4-2-nfr2availability, degradation and removability are behavioural claims, and their entry point is the assembled artifact
- dev07-4-2-nfr3whether a claim is structural is the project's declaration, held at spec review and never derived; a mis-declaration costs its author the behavioural proof rather than granting a free one
- dev07-4-2-u1an observer that watches execution alone cannot assert a read; what a structural story is proved by under such an observer is undecided
- dev07-4-2-u2component versus wiring intent is not derivable; the claimed depth is trusted where the wired-rung refutation cannot reach it, and the remainder is named rather than hidden
dev07-4-3 derive the verdict live Proven
As anybody reading a status I want it computed by the run I am looking at, so that no stale done survives the thing that made it true stopping being true.
The tests that cite it (16)
tests/test_board.py::test_authored_in_derived_out— passed, ungroundedtests/test_core_is_policy_free.py::test_the_core_carries_no_workflow_vocabulary— passed, inerttests/test_core_is_policy_free.py::test_no_core_module_reaches_outside_the_core— passed, inerttests/test_core_is_policy_free.py::test_the_adapter_depends_on_the_core_and_not_the_reverse— passed, inerttests/test_core_is_policy_free.py::test_nothing_shipped_imports_the_methodology— passed, inerttests/test_decision_standing.py::test_an_evaluated_trigger_reads_holding_or_breached_and_never_proven— passed, ungroundedtests/test_decision_standing.py::test_a_decision_nobody_is_watching_is_surfaced_rather_than_read_as_healthy— passed, ungroundedtests/test_decision_standing.py::test_a_breach_informs_and_does_not_fail_anything— passed, ungroundedtests/test_end_to_end.py::test_the_board_comes_out_of_the_command_line— passed, groundedtests/test_end_to_end.py::test_a_failing_citation_un_proves_its_story— passed, groundedtests/test_end_to_end.py::test_unproven_stories_are_not_a_failure— passed, groundedtests/test_gate.py::test_the_status_vocabulary_is_exactly_three_values— passed, ungroundedtests/test_gate.py::test_status_is_derived_live_and_never_stored— passed, ungroundedtests/test_gate.py::test_the_achieved_vector_reports_only_rungs_that_actually_passed— passed, ungroundedtests/test_grounding.py::test_a_failed_citation_is_never_hidden_behind_another_reason— passed, ungroundedtests/test_grounding.py::test_a_refuted_rung_is_not_achieved— passed, ungrounded
Requirements (21)
- dev07-4-3-ur01a subject's citations reduce under its declared reduction: best for a story, so one passing citation is enough beside a failing one; worst for a subject every citation must hold
- dev07-4-3-ur02a proof that later fails un-proves its story
- dev07-4-3-ur03the status is computed live each run and never stored — a stored status is a claim about a past run read as a claim about this one
- dev07-4-3-ur04the achieved vector reports the rungs that actually passed, and never one the run refuted; required depth is the team's policy, kept outside the core, and never gates
- dev07-4-3-ur05a subject with declared aspects gets a verdict per aspect and no aggregate, so no reader is shown a green no aspect earned
- dev07-4-3-ur06the conditions say why the verdict reads as it does, in codes a reader's next move differs by
- dev07-4-3-ur07cited-and-unproven says which kind: evidence that failed, evidence nobody observed — a citation that never ran is no evidence at all, and a flaky runner is not a broken claim — or evidence that never existed
- dev07-4-3-ur08a story whose tests also reached production code outside every entry point is surfaced whatever its status
- dev07-4-3-ur09a decision's standing is its own vocabulary — it holds or it is breached, and it never reads proven
- dev07-4-3-ur10a decision nothing has measured and nothing is scheduled to review is surfaced as its own condition, because silence and health look identical and the silence is the finding
- dev07-4-3-ur11a parameter is derived as a decision is and read in its own words — supported, unvalidated, refuted or unmeasured — and never as held or breached, because a value is not held and an estimate that loses to its own placebo is refuted
- dev07-4-3-ur12a citation that ran and failed is surfaced whatever the subject's other citations show, so a failure is never hidden behind the reason another one fell short
- dev07-4-3-sr1the achieved vector is the depths of the story's passing citations, deduplicated and sorted
- dev07-4-3-sr2both reductions are one rule — minimum by position over a ranked outcome order — so adding a subject kind is a row in a table, never a branch in the core
- dev07-4-3-nfr1the gate proves the shape of a proof and never its meaning: PROVEN reads somebody wrote a test for this, and the test really ran the real thing; a test that runs the code and asserts nothing passes it, and mutation does not close this, because it checks the code as written and not the claim
- dev07-4-3-nfr2the core forces only what it can verify; process, priority and required depth are policy, and a rule nobody can check is a rule people satisfy on paper
- dev07-4-3-nfr3nothing authored depends on anything derived
- dev07-4-3-nfr4a breached, expired or unwatched decision informs and never fails a run — surfacing is this tool's part and what a breach costs is the adopter's to decide, exactly as an unproven story is
- dev07-4-3-u1status rollup to a chapter or an invariant is unsolved, and whatever closes it must recompute from the stories every run — a cached rollup would violate the claim it hangs off
- dev07-4-3-u2the achieved vector does not describe a structural story: an inert test reached no rung by design, and leaving the vector empty is the leaning
- dev07-4-3-u3a proof does not know when its claim moved: a story can be rewritten, keep every old proof, and read PROVEN while nothing it now claims has been tested. No field yet carries a claim version, and what one is — a digest, a revision, a lineage — changes what a citation means