Tighten who writes and reviews a record, date the rules, bound history (review of #206)
mesh/merge-gate pass: builds new: modules/mesh-knowledge, sent nowhere; no bus step; every machine composes with the change as it did without (4 of 4 compo…
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery superseded: a newer head of the same pull request
mesh/merge-gate pass: builds new: modules/mesh-knowledge, sent nowhere; no bus step; every machine composes with the change as it did without (4 of 4 compo…
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery superseded: a newer head of the same pull request
A revision came from anyone and a review was refused only to the first author, so a co-writer could approve, and a record proposed before callers are proven would later be reviewable by its own unproven author. Now a revision is taken only from the proven author, a reserved number only from whoever reserved it, and a review is refused from any writer of any version or for any record with an unproven writer. The rules held records from no date, so a correction to an older record was refused by rules hq never held it to; each dated rule now holds from hq's own start date, and a new record cannot be dated before its reservation. history and the question to ask are bounded like the other answers.
This commit is contained in:
@@ -121,7 +121,9 @@ func allText(r *Record) string {
|
||||
func JudgeRecord(r *Record, held *Entry, lookup Lookup, ref *Reference) []Refusal {
|
||||
var out []Refusal
|
||||
refuse := func(rule, format string, a ...any) {
|
||||
out = append(out, Refusal{Rule: rule, Says: fmt.Sprintf(format, a...)})
|
||||
if Holds(rule, r.Date) {
|
||||
out = append(out, Refusal{Rule: rule, Says: fmt.Sprintf(format, a...)})
|
||||
}
|
||||
}
|
||||
decision := r.Kind == KindDecision
|
||||
if r.Kind != KindDecision && r.Kind != KindResearch {
|
||||
@@ -531,3 +533,30 @@ func JudgeSet(records []*Record) []Finding {
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// RuleFrom is the day each dated rule began to hold a record, as hq's checks hold it: a record dated earlier was
|
||||
// never held to it, and a dated correction of it (a progressive insight, which keeps the record's date) is not.
|
||||
// words.py held the retired words from 2026-10-07 and the daemons' lines from 2026-10-09; cycle.py the deferrals
|
||||
// from 2026-10-09; records.py the clauses from 2026-10-11 (ADR 0290 rule 3). The decision record's sections, and
|
||||
// a superseded record cited alone, were held by no check of hq's (words.py and live-citation never read decision
|
||||
// records): they hold from the day the knowledge base takes the write, 2026-10-11. Every other rule holds every
|
||||
// record, as hq's checks held it.
|
||||
var RuleFrom = map[string]string{
|
||||
"retired-word": "2026-10-07",
|
||||
"daemon-line": "2026-10-09",
|
||||
"deferral": "2026-10-09",
|
||||
"has-clause": "2026-10-11",
|
||||
"clause-numbering": "2026-10-11",
|
||||
"clause-lead": "2026-10-11",
|
||||
"clause-size": "2026-10-11",
|
||||
"context": "2026-10-11",
|
||||
"consequences": "2026-10-11",
|
||||
"checked": "2026-10-11",
|
||||
"live-citation": "2026-10-11",
|
||||
}
|
||||
|
||||
// Holds says whether a rule holds a record of this date. A record with no day is held to every rule.
|
||||
func Holds(rule, date string) bool {
|
||||
from, dated := RuleFrom[rule]
|
||||
return !dated || !isDay.MatchString(date) || date >= from
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user