mesh-knowledge: the import keeps every field and takes clauses only from the Decision section's own list, and can repair what it held (hq issue 487)
mesh/merge-gate pass: builds mesh-knowledge → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
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 mesh-knowledge → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
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
The import at hq f0892019 lost reconstructed, amended and a research effort's touches, held rests-on only as a citation, took eight records' clauses from a numbered list inside a ### subsection, and left the 11 records with no Decision section clause-less with nothing queued. Each is held now; refresh repairs a record only the import ever wrote, and never one changed since.
This commit is contained in:
@@ -232,6 +232,14 @@ func JudgeRecord(r *Record, held *Entry, lookup Lookup, ref *Reference) []Refusa
|
||||
if r.Kind != l.To.Kind || !isRecord || l.To.Clause > 0 {
|
||||
refuse("link-fits", "%s goes from a record to a record of its kind: not %s", l.Kind, l)
|
||||
}
|
||||
case l.Kind == LinkRestsOn:
|
||||
if !decision || l.To.Kind != KindDecision || l.To.Clause > 0 {
|
||||
refuse("link-fits", "rests-on goes from a decision to a decision it stands on: not %s", l)
|
||||
}
|
||||
case l.Kind == LinkTouches:
|
||||
if r.Kind != KindResearch || l.To.Clause > 0 {
|
||||
refuse("link-fits", "touches goes from a research effort to a record, an issue or a design: not %s", l)
|
||||
}
|
||||
}
|
||||
if target == nil {
|
||||
continue
|
||||
@@ -241,9 +249,9 @@ func JudgeRecord(r *Record, held *Entry, lookup Lookup, ref *Reference) []Refusa
|
||||
continue
|
||||
}
|
||||
switch l.Kind {
|
||||
case LinkExtends:
|
||||
case LinkExtends, LinkRestsOn:
|
||||
if target.Status == StatusSuperseded && !superseders[to] {
|
||||
refuse("rests-on", "%s extends %s, which is superseded", self, to)
|
||||
refuse("rests-on", "%s %s %s, which is superseded", self, l.Kind, to)
|
||||
}
|
||||
case LinkSupersedes:
|
||||
if !target.Accepted() || target.Status == StatusSuperseded {
|
||||
@@ -509,14 +517,14 @@ func JudgeSet(records []*Record) []Finding {
|
||||
if c := target.Clause(l.To.Clause); c != nil && c.Status != ClauseChanged && c.Status != ClauseSuperseded {
|
||||
add("partial", fmt.Sprintf("%s changes %s §%d, which is %s", k, to, l.To.Clause, c.Status), k, to)
|
||||
}
|
||||
case LinkExtends:
|
||||
case LinkExtends, LinkRestsOn:
|
||||
if target.Status == StatusSuperseded {
|
||||
superseder := false
|
||||
for _, in := range inbound[to] {
|
||||
superseder = superseder || (in.l.Kind == LinkSupersedes && in.from.Key() == k)
|
||||
}
|
||||
if !superseder {
|
||||
add("rests-on-live", fmt.Sprintf("%s extends %s, which is superseded", k, to), k, to)
|
||||
add("rests-on-live", fmt.Sprintf("%s %s %s, which is superseded", k, l.Kind, to), k, to)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user