Panel rebuilt as the heat matrix: verdict header (ring + newest fault named with its age, cable cell top right), one row per check with NOW / last-90s-at-5s-a-cell / since-reset columns, noise as a blue context lane; history.go keeps the 18-slot wall-time ring (per-class fault deltas, SNR minima, rate verdicts, measuring gray) plus since-reset aggregates and fault ages that clear on reset; noise cycle grid-locked to the shared slot clock so cells never straddle a phase and flicker, presence granted at boot until the first up-phase verdict; check/cross stroked as capsule marks (font has neither), line rate is a pure verdict everywhere, footer is a three-line stat stack beside hold-to-reset; old panel/chip/stat-grid machinery deleted; mockups/ gitignored
This commit is contained in:
@@ -341,9 +341,9 @@ func (d *direction) counters(now counterSet) view {
|
||||
|
||||
// Nothing to hold or revert here: failures during a measure were never
|
||||
// counted, so the view is always the counters as they stand.
|
||||
func phyView(diag *cableDiag, modules []*phyModule) phyDisplay {
|
||||
func phyView(diag *cableDiag, modules []*phyModule) (phyDisplay, bool) {
|
||||
info, measuring := diag.snapshot()
|
||||
return phyDisplayFrom(info, measuring, modules[0].view(), modules[1].view())
|
||||
return phyDisplayFrom(info, measuring, modules[0].view(), modules[1].view()), measuring
|
||||
}
|
||||
|
||||
func totalView(views []view) view {
|
||||
@@ -773,12 +773,16 @@ func run(aName, bName string) (err error) {
|
||||
}
|
||||
|
||||
start := time.Now()
|
||||
// Anchored to the same clock as the noise cycle, so slot boundaries and
|
||||
// phase transitions coincide.
|
||||
hist := newHistory(rateEpochStart)
|
||||
// A reset resets at the press, then re-measures; the measure's failures
|
||||
// are suppressed at their sources while it runs, so there is nothing to
|
||||
// hide or revert afterwards.
|
||||
kickMeasure := func() {
|
||||
if diag.kick(&done) {
|
||||
start = resetAll(dirs, modules)
|
||||
hist.reset()
|
||||
}
|
||||
}
|
||||
close(startTx)
|
||||
@@ -811,9 +815,10 @@ func run(aName, bName string) (err error) {
|
||||
for i, d := range dirs {
|
||||
views[i] = d.displayView()
|
||||
}
|
||||
v, phy := totalView(views), phyView(diag, modules)
|
||||
if err := disp.render(v, now.Sub(start), phy,
|
||||
noise.view()); err != nil {
|
||||
v := totalView(views)
|
||||
phy, measuring := phyView(diag, modules)
|
||||
if err := disp.render(v, now.Sub(start), phy, measuring,
|
||||
noise.view(), hist.view(), target); err != nil {
|
||||
return err
|
||||
}
|
||||
case now := <-tick.C:
|
||||
@@ -821,7 +826,9 @@ func run(aName, bName string) (err error) {
|
||||
for i, d := range dirs {
|
||||
rows[i] = d.displayView()
|
||||
}
|
||||
v, phy := totalView(rows), phyView(diag, modules)
|
||||
v := totalView(rows)
|
||||
phy, measuring := phyView(diag, modules)
|
||||
hist.sample(now, v, phy, noise.view(), measuring, target)
|
||||
for _, m := range modules {
|
||||
for _, n := range m.takeNotes() {
|
||||
fmt.Println(stats.rule(n))
|
||||
|
||||
Reference in New Issue
Block a user