Read the held-back date and show the hold in the listing - #201
Merged
Merged
Conversation
Record 0022 decides that a held-back record stays in asking and carries a Held-back field with the date of the report, and that the listing prints that as its own dated line. Nothing on the default branch read the field, so an experiment held back appeared in lab list as ordinary unanswered work. That is the misreport 0022 chose a field over a fourth state to prevent, and it was being produced by the verb whose whole purpose is to stop a tree misreporting what is running. Held-back arrives in internal/check/heldback.go with the check that reads it, which is the shape headerDateFields argues for and which Measurement-Commit and Borrowed already took: a checker built before a field is unaware of it, and a field with no check has nowhere to hide. The refusal is record-held-back-is-not-a-date, over a field that is present only. A value nothing can read leaves the record saying it is held back and saying nothing about since when, and the fact of a hold with no date is waiting indefinitely arriving through a typo rather than through a decision. A field written with nothing after the colon is refused for the reason RecordHeaderDateIsNotADate gives: under record 0013 absence is legal and an empty declaration is a different statement. The listing prints lines rather than a sixth column, which is 0022's own word for it and is what the table can carry without wrapping. The count is printed whatever it is, so a tree with no hold and a listing that never looked are different outputs. A value that is not a date is printed as written, and a hold on a record that is not asking is printed with the state beside it, because a report that dropped either would hide the disagreement instead of the subject. Two shapes stay unrefused and both are disclosed at the operator: an absent field, which record 0013 forbids refusing and 0022 says so of this field in its own words, and a hold on a record that is not asking, which nothing here judges. docs/experiment-template.md gains the field and names 0022 among the records the format comes from. That sentence enumerated three records and the format now comes from four, so leaving it would have made the template wrong in the same change that made it incomplete. Every refusal and every line was proved by removing it and watching the suite go red: the refusal itself, the dispatch case, an absent field read as a hold, an unreadable value printed as the zero time, and the count line dropped. Closes #200 Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
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.
Closes #200
What this changes
The runner reads
Held-backand the listing shows the hold.internal/check/heldback.gois new and holds both halves of the field: the nameHeld-back, andrecord-held-back-is-not-a-date, which refuses a value that isnot a date written the one way record 0008 names. It sits in its own file with
the check that reads it, which is the shape
headerDateFieldsargues for at itsown list and which
Measurement-CommitandBorrowedalready took: a checkerbuilt before a field is unaware of it, and a field with no check has nowhere to
hide. The dispatch is one line in the record walk.
internal/check/list.goreads the field into the entry, keeping the value aswritten apart from the value as a date, and
Reportgains a block after thetable: a count, then one line per held-back record naming the slug and the date
the clock started.
docs/experiment-template.mdgains a paragraph for the field, and its closingsentence naming the records the format comes from gains
0022. That sentenceenumerated three records and the format now comes from four, so leaving it alone
would have made the template wrong in the same change that made it incomplete.
Three cases under
testdata/cases/and one listing tree undertestdata/listings/are new. No path leaves the tree:What failure it prevents
An experiment held back under record
0010reported bylab listas ordinaryunanswered work. Record
0022decides that such a record stays inaskingandcarries
Held-backwith the date of the report, and that the listing printsthat as its own dated line. Nothing on the default branch read the field, so the
verb whose whole purpose is to stop a tree misreporting what is running was
producing exactly the misreport
0022chose a field over a fourth state toprevent.
The refusal prevents the other half. A value nothing can read leaves the record
saying it is held back and saying nothing about since when, and the fact of a
hold with no date is waiting indefinitely arriving through a typo rather than
through a decision, which is the option
0022rejected. A field written withnothing after the colon is refused for the reason
RecordHeaderDateIsNotADategives: under record
0013absence is legal and an empty declaration is adifferent statement.
What was run
At the commit being pushed,
9a38499e1d607f910c97cc2cae5d9b7a8ddb9478:The suite above was run without
-v, so the line saying what it did not coveris not in that output. It was run separately over the package that prints it:
Every guard removed, and the suite watched going red
Each was reverted immediately afterwards, and the run above is the restored tree.
The refusal itself, with the not-a-date branch made to return nothing:
The dispatch line deleted, which is the one missing line that removes a rule
from every run while the operator still holds it:
An absent field read as a hold, which is the mistake that reports every record
in a tree as held back since nothing:
An unreadable value printed as a date, which prints the first day of year one as
the moment the clock started:
The count line dropped, which is the line separating a tree with no hold from a
listing that never looked:
There is no second reader on this board tonight, and this body carries the
evidence in place of one rather than implying a review happened.
What this does not do
It refuses no absent field, and it cannot. Record
0013makes a field addedafter it optional and lets a check over it refuse only what is present, and
record
0022says so of this field in its own words: a record being held backthat carries no
Held-backsits inaskingwith a question saying nothing, andnothing here refuses it. That is the case the field exists for, and only the
person writing the record prevents it. Both the operator and the template say so
where a reader meets them.
It refuses no hold on a record that is not asking, though record
0022fixes ahold as a field beside
asking. The listing prints the state on the lineinstead, so the disagreement is visible rather than judged, and no property in
this tree covers it.
It refuses no held-back date later than the time the run read, so a window that
has not started yet passes.
QuestionDatedLaterThanTheRunis the neighbouringrule for the question's date and this change does not widen it.
It reads no clock against the window. Nothing here counts the 90 days, notices
one elapsing, or knows whether the single extension was granted. What the runner
does is read a date and print it; the window itself is record
0022and theparagraph in
SECURITY.md, and both are held by people rather than by a check.Two of the three legs the case harness compares are what these fixtures buy, and
the third is not available here: every comparison is over which properties were
refused and never over which line refused them, so the two refusing cases prove
the property bites and prove nothing about which of the operator's branches did
it.
internal/check/harness_test.gostates that bound and this change does notmove it.