Repository navigation
Intent and Outcome: behavior accountable in both directions - #47
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The direction from #46, built. Research first, because the last two days established that
this project's favourite mistake is rebuilding something that already exists.
What the research changed
adr-tools, Log4brainsdrift adrsupports"INV-028 — Intent is verified by provenance, never by truth
A Flow declares
realizes: [intent.x]. Nothing can establish that a sentence is reallywhy something was built; what can be established is whether it names the frozen record
(§6.2.1) that asked, whether that record still resolves, and whether it was superseded —
so supersession reuses INV-014 unchanged.
A model that verified Intent by reading the code would be circular: the code is the thing
the Intent explains.
FLOW_WITHOUT_INTENTisinfoand never gates. Most behavior predates anyone writing thedecision down, and a gate demanding otherwise would be satisfied by invented intents —
worse than none, for the same reason a rubber-stamped observation is worse than a missing
one.
INV-027 — an Outcome declares the Assertion that checks it
This is the only place in the model where reality can contradict it. Intent and
Behavior are both statements, and two statements disagree only about words. An Outcome can
be measured, so
OUTCOME_REFUTEDis the first machine-produced evidence that a claim iswrong rather than merely stale — the distinction #42 and #45 established that
nothing in this project, or in the peer system built on the opposite principle, could make.
OUTCOME_REFUTEDOUTCOME_CHECK_UNKNOWNOUTCOME_NEVER_CHECKEDOUTCOME_NOT_VERIFIABLEAn Outcome with no check is reported, never failed. Silence is what is forbidden: an
unverifiable Outcome and a verified one must not read the same (INV-025).
INV-018 is split, not weakened. Is the running system healthy stays out of scope
permanently. Did the declared outcome occur is verification, not monitoring. §6.4.1 draws
the line by subject, and says so where a reader would otherwise infer permission to build
an APM.
Also fixed, found while building
validate_observation_refslost itsreturnin a merge and returnedNone. The entiresuite passed — because
validate()with a realGitwas only ever reached through theCLI. There is now a test that runs the validator against a real repository, and it fails
when the return is removed.
Checks
inv_outcome_can_be_refuted(6) andINV-028 intent is provenance(2), plus the validator-with-git test.first, and removing the lost
return. Each fails the suite.check_locators38/38 (the four Intent records resolve); ratchet exit 0, discharged byreading the six symbols it named.
examples/traceos-itselfcites its own ADRs;examples/ecommercedeliberately cites records it does not ship, so the unresolved stateis visible rather than hidden — which is how most real models start.