Reading the branch head and telling the mesh the source had moved there named the commit it had just built, so the mesh correctly answered that everything was current. Naming a different commit would not work either: staleness compares artifacts, not commits, deliberately, so that editing a comment in a shared base does not rebuild everything standing on it to arrive back where it started. So the step makes a real change and pushes it, and asserts the module comes back on a DIFFERENT artifact than it had. A test that writes to a branch is worth knowing about; the alternative is proving the loop by telling the mesh something untrue. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
154 lines
4.5 KiB
JSON
154 lines
4.5 KiB
JSON
{
|
|
"scenario": "one-node-mesh",
|
|
"established": 18,
|
|
"of": 21,
|
|
"steps": [
|
|
{
|
|
"code": "R1",
|
|
"title": "a bare machine becomes a mesh of one, raised by the installer",
|
|
"status": "pass",
|
|
"seconds": 133,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "R2",
|
|
"title": "the substrate is up — a store and a broker of the mesh's own",
|
|
"status": "pass",
|
|
"seconds": 1,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "R3",
|
|
"title": "the control plane is one this mesh built, not one it was handed",
|
|
"status": "pass",
|
|
"seconds": 0,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "R4",
|
|
"title": "the pivot finished — what raised the mesh is gone",
|
|
"status": "pass",
|
|
"seconds": 0,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "R5",
|
|
"title": "the registry serves this mesh its own images",
|
|
"status": "pass",
|
|
"seconds": 0,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "R6",
|
|
"title": "the machine is enrolled, and an agent is running on it",
|
|
"status": "pass",
|
|
"seconds": 0,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "R7",
|
|
"title": "the builder is installed as a module, with an account",
|
|
"status": "pass",
|
|
"seconds": 0,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "P1",
|
|
"title": "the mesh builds the shared base from source",
|
|
"status": "pass",
|
|
"seconds": 83,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "P2",
|
|
"title": "the mesh builds and runs a store of its own",
|
|
"status": "pass",
|
|
"seconds": 47,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "P3",
|
|
"title": "the mesh builds and runs its own catalogue",
|
|
"status": "pass",
|
|
"seconds": 26,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "P4",
|
|
"title": "the mesh rebuilds its own control plane from source",
|
|
"status": "pass",
|
|
"seconds": 30,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "N1",
|
|
"title": "the mesh puts itself on a private network, and its machine has a name",
|
|
"status": "pass",
|
|
"seconds": 7,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "N2",
|
|
"title": "the machine has a packet filter, loaded from what modules declared",
|
|
"status": "pass",
|
|
"seconds": 7,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "U1",
|
|
"title": "the mesh builds a module standing on that base",
|
|
"status": "pass",
|
|
"seconds": 23,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "U2",
|
|
"title": "the mesh runs a broker for that module to talk to",
|
|
"status": "pass",
|
|
"seconds": 20,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "U3",
|
|
"title": "the anchor runs the module the mesh built",
|
|
"status": "pass",
|
|
"seconds": 6,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "V1",
|
|
"title": "the control plane can describe the mesh, and what it says is true",
|
|
"status": "pass",
|
|
"seconds": 1,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "V2",
|
|
"title": "the catalogue holds every module this mesh built",
|
|
"status": "fail",
|
|
"seconds": 1,
|
|
"why": "the catalogue does not hold mesh-tools, postgres — the mesh built them and its own record has no trace of it (novox/hq issue 050):\n{\"modules\":[{\"module\":\"amqp-ping\",\"commit\":\"e0c92195d4240841bfcf4b4a9ef869d5afeca331\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/amqp-ping\"},{\"module\":\"lavinmq\",\"commit\":\"e0c92195d4240841bfcf4b4a9ef869d5afeca331\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/lavinmq\"},{\"module\":\"mesh-control\",\"commit\":\"5062c36fc9efe159aa9706c0ca2c873351ef1ce0\",\"repository\":\"https://git.novox.be/novox/mesh-control.git\",\"path\":\"\"}]}\n\n+ actual - expected\n\n+ [\n+ 'mesh-tools',\n+ 'postgres'\n+ ]\n- []\n"
|
|
},
|
|
{
|
|
"code": "V3",
|
|
"title": "the machine's networking is what the modules asked for",
|
|
"status": "pass",
|
|
"seconds": 1,
|
|
"why": ""
|
|
},
|
|
{
|
|
"code": "E1",
|
|
"title": "a change to a module's source reaches the machine on its own",
|
|
"status": "fail",
|
|
"seconds": 1,
|
|
"why": "the mesh does not report a module behind its source:\n1 machine(s), all doing what they were told, all heard from, running what the mesh would send them, and every module current with its source\n"
|
|
},
|
|
{
|
|
"code": "E2",
|
|
"title": "the mesh comes back after the machine reboots",
|
|
"status": "skip",
|
|
"seconds": 0,
|
|
"why": "not attempted — E1 (a change to a module's source reaches the machine on its own) did not succeed"
|
|
}
|
|
]
|
|
} |