Node-engine: the have, the node's facts, the record, the health report and the data items are the seat's contract types, written through the node-engine client; the interim bridge is gone (Have group, ADR 0634 §1, §4; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
// Package buckets holds the names of the bus buckets the node-engine reads and writes, and how many revisions it keeps of
|
||||
// each. A contract carries the local name of a state, not the module that holds it (ADR 0625 §4, §7); the node-engine
|
||||
// reads through grants composed in code, so the holder's name is kept here, in its own code (ADR 0634 §1, finding F4).
|
||||
package buckets
|
||||
|
||||
// The node-engine's own states and the have state, written by every node's engine for its own keys.
|
||||
const (
|
||||
// Have holds a module's have on a node, `<node>.<module>`, and the node's own facts, `<node>.node`.
|
||||
Have = "node-engine_have"
|
||||
// Data holds a module's data items on a node.
|
||||
Data = "mesh-host_data"
|
||||
// Health holds a node's own health report.
|
||||
Health = "mesh-host_health"
|
||||
)
|
||||
|
||||
// HaveHistory is the number of revisions the have bucket keeps per key.
|
||||
const HaveHistory = 20
|
||||
@@ -0,0 +1,34 @@
|
||||
package buckets
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// The engine's own states are named <module>_<state> by the manifest; a constant that drifts from it reads and writes a
|
||||
// bucket nobody else knows (ADR 0634 §1, finding F4: the holder's name is kept in code and held to the manifest by this row).
|
||||
func TestTheOwnStatesAreTheManifestsStates(t *testing.T) {
|
||||
raw, err := os.ReadFile("../../module.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var m struct {
|
||||
Module string `json:"module"`
|
||||
State []struct {
|
||||
Name string `json:"name"`
|
||||
} `json:"state"`
|
||||
}
|
||||
if err := json.Unmarshal(raw, &m); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
declared := map[string]bool{}
|
||||
for _, s := range m.State {
|
||||
declared[m.Module+"_"+s.Name] = true
|
||||
}
|
||||
for name, bucket := range map[string]string{"data": Data, "health": Health} {
|
||||
if !declared[bucket] {
|
||||
t.Errorf("the bucket %s for the state %s is not one the manifest of %s declares (%v)", bucket, name, m.Module, declared)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user