Claims
Numbers in a decision that know where they came from, and a flag when the code they were measured from changes.
A claim is a measured value in a decision, written down with the commit it was measured at and the command or test that measures it again. It is a one-line HTML comment next to the sentence that states the number:
The moved-base gate stands on 229 rows. <!-- claim: moved_base_rows = 229 @ 2519a81 by: python tools/count_rows.py inputs: data/catalog/** -->The grammar is the one adr-lint documents: a key, a number with an optional unit or a quoted string, @ and a commit, then by: a command or test: a test id, and an optional inputs:list of paths and globs. Claims in code blocks, inline code and other comments are ignored. DesignDoc reads the same grammar from the decision's current text, including ADRs imported from GitHub, and lists the claims on the decision page with any that are malformed.
Recomputing is CI's job
DesignDoc never runs a claim's command or test. adr-lint checkruns them in your repository's CI and names the sentence whose number moved. DesignDoc only reads the claim and watches the paths it depends on.
Claim drift
On a push to the default branch of a connected repository, DesignDoc checks the claims of every decision bound to that repository: decisions imported from it and decisions with a code link on it. A claim watches:
- the paths and globs in its
inputs:list; - for a
by:claim, the path-like words of the command (python tools/count_rows.pywatchestools/count_rows.py); - for a
test:claim, the test's file (tests/test_gate.py::test_229watchestests/test_gate.py).
When a changed path matches, the decision is flagged Needs re-check with a card that names the claim, its value and commit, and the inputs that changed. Matching uses the same rules as code links. Each claim has its own flag: later pushes that touch it are gathered into that flag until it is resolved. The AI summary is told which claim and which paths changed and says whether the number is likely to have moved; it reads the diff and runs nothing. It counts against the same daily drift allowance as other drift summaries.
Some pushes do not flag a claim:
- a push that also edits the decision's own file. That change may carry the re-measured number, so flagging it would ask you to re-check what you just updated (and loop when CI commits the new value);
- inputs made only of wildcards (
*,**,**/*) match every push, so adr-lint refuses them and DesignDoc ignores them. Name the files or directories the value is measured from; - past 10 flagged claims in one decision, one push flags no more (the rest are logged), and a push reads at most the 500 most recently edited decisions that hold claims.
A by: or test: claim whose command names no file watches nothing and never drifts; adr-lint warns about it (CLM006), and the claims table on the decision shows it. Add inputs: to fix it.
Resolve the flag like any drift: Re-confirm once CI shows the number still holds (or after you update it and its commit), or Mark stale if the decision no longer stands. Only accepted, implementing and implemented decisions can drift.