The list
- Ask did gaps report 100%
- List uuid_operation_requested
- Why gaps reads the component, not the sentence
Topic · variable drift
Gist
Variable drift is when a requirement's variables: list and its FRETish sentence name different facts. Proof runs proof audit --check variable_drift. A green gaps report is not agreement. Jama still authors.
proof audit --check variable_drift
Keep FRETish if the sentence already compiles. Keep Jama if it already holds the shall. Neither one joins the list to the sentence on that requirement.
01 · The list that did not match the sentence
You can keep SW-REQ-001 and still have a FRETish that constrains six names the list omits, while the list holds two the sentence no longer uses.
The check walks requirements that have both a FRETish sentence and a non-empty variables: list. It warns in two cases: a name the sentence constrains is missing from the list, or a name in the list is stale. The parser is the oracle. proof compile "<fretish>" --format json reports the true set under .semantics.variables. This hop calls the same parser. An empty list makes no claim, so it cannot disagree. A freeform or unparseable sentence yields no set to compare. Those are skipped. proof validate and variables_declared own those failure modes.
The example that keeps showing up is a uuid requirement whose FRETish uses uuid_generate_requested and uuid_output_nonempty, while the list still names uuid_operation_requested. proof validate --preflight reads the sentence and ignores the list. proof gaps reads the list, but per component, not per requirement. Nothing joined them, so the two could disagree with every gate green. One corpus approved 159 requirements in that state. proof gaps specs/software uuid printed "No gaps found · 100%".
Stale entries are the more dangerous half. Before this check they also masked orphan analysis: a dead declaration named by a stale list entry counted as referenced and never surfaced as declared_unused. Align the list, then rerun orphans. The compile hop stays on
FRETish.
The assumption hop stays on
requirements assumptions.
proof audit --check variable_drift --verbose
proof compile "the uuid shall always satisfy uuid_generate_requested => uuid_output_nonempty" --format json
proof workflow check --stage spec --verbose
proof gaps specs/software --check orphans
Inspect the named id before you edit. Drop stale entries. Add the ones the sentence actually constrains. Do not empty the list to skip the stamp. An empty list is not agreement. It is a skipped hop.
02 · The exhibit
SW-REQ-001 still exists. Click the tabs.
The list
This hop
No variable_drift JSON. Missing and stale never ran.
No stampThe list
Keep the list. Keep FRETish. That is not this hop.
Keep the sentenceProof
Same SW-REQ. A green gaps report, or this stamp. Click the tabs.
| Surface | What they do | What Proof does | What we lose |
|---|---|---|---|
| FRETish compile | The sentence parses. Preflight is green. | Join that sentence to the authored list on the same requirement. | We do not rewrite the sentence. An empty list is skipped, not failed. |
| Gaps / orphans | Component-level unused or undeclared names. | Per-requirement list vs parser set. Then you rerun orphans. | A stale list can still mask declared_unused until you drop it. |
| Requirements assumptions | Owner and review date on a boundary claim. | Whether two statements about the variable model agree. | Not that hop. See requirements assumptions. |
| Jama | The authoring programme. Reviews if you put them there. | Warn the merge when the list and the FRETish disagree. | Not Jama's V&V. Jama still authors. We have not run a frozen Jama pack. |
The teaching graph is still one SW-REQ next to its list and its sentence. Run the check. Read the id. Drop stale names. Add the ones the parser reports. Then rerun orphans. Do not empty the list to clear the stamp.
proof workflow check --stage spec --verbose
proof compile "the uuid shall always satisfy uuid_generate_requested => uuid_output_nonempty" --format json
proof audit --check variable_drift --verbose
proof gaps specs/software --check orphans
The FRETish hop stays on FRETish. Jama still authors. Proof vs Jama.
03 · The honest loss
A green variable_drift is list/sentence agreement on eligible requirements. It is not a proof of the Go. Jama still authors.
The check skips an empty list and an unparseable sentence. Those are not clean. They are out of this hop. It does not judge whether the FRETish is the one you meant. It does not run the solver. Aligning the list can reveal orphans the stale names were hiding; that is a second hop, not this one. We have not scored this graph against a frozen Jama pack or a second human's V&V judgment. The loss is named, not scored.
The compile hop stays on FRETish. The engagement stays on software correctness audit. Jama still authors.
04 · Nearby questions
What is variable drift? Same question. Same URL.
Is this variable orphans? No. Orphans are declared-unused and undeclared-used on the component model. This hop is list vs sentence on one requirement. Stale list entries can mask orphans until you drop them.
Is this FRETish? No. That hop is whether the sentence compiles. This hop is whether the list matches the compiled set. See FRETish.
Is this requirements assumptions? No. That hop is owner and date on a boundary. See requirements assumptions.
Is Proof a Jama alternative for the shall? No. Jama still authors. Proof vs Jama.