E1 moves the module's source for real
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
This commit is contained in:
+30
-30
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"scenario": "one-node-mesh",
|
||||
"established": 12,
|
||||
"established": 18,
|
||||
"of": 21,
|
||||
"steps": [
|
||||
{
|
||||
"code": "R1",
|
||||
"title": "a bare machine becomes a mesh of one, raised by the installer",
|
||||
"status": "pass",
|
||||
"seconds": 135,
|
||||
"seconds": 133,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
@@ -56,28 +56,28 @@
|
||||
"code": "P1",
|
||||
"title": "the mesh builds the shared base from source",
|
||||
"status": "pass",
|
||||
"seconds": 87,
|
||||
"seconds": 83,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "P2",
|
||||
"title": "the mesh builds and runs a store of its own",
|
||||
"status": "pass",
|
||||
"seconds": 41,
|
||||
"seconds": 47,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "P3",
|
||||
"title": "the mesh builds and runs its own catalogue",
|
||||
"status": "pass",
|
||||
"seconds": 37,
|
||||
"seconds": 26,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "P4",
|
||||
"title": "the mesh rebuilds its own control plane from source",
|
||||
"status": "pass",
|
||||
"seconds": 35,
|
||||
"seconds": 30,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
@@ -90,58 +90,58 @@
|
||||
{
|
||||
"code": "N2",
|
||||
"title": "the machine has a packet filter, loaded from what modules declared",
|
||||
"status": "fail",
|
||||
"seconds": 0,
|
||||
"why": "anchor: docker exec mesh-control /mesh-control assign anchor firewall\n\nmesh-control: no module of that name: firewall\n"
|
||||
"status": "pass",
|
||||
"seconds": 7,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "U1",
|
||||
"title": "the mesh builds a module standing on that base",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — N2 (the machine has a packet filter, loaded from what modules declared) did not succeed"
|
||||
"status": "pass",
|
||||
"seconds": 23,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "U2",
|
||||
"title": "the mesh runs a broker for that module to talk to",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — U1 (the mesh builds a module standing on that base) did not succeed"
|
||||
"status": "pass",
|
||||
"seconds": 20,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "U3",
|
||||
"title": "the anchor runs the module the mesh built",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — U2 (the mesh runs a broker for that module to talk to) did not succeed"
|
||||
"status": "pass",
|
||||
"seconds": 6,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "V1",
|
||||
"title": "the control plane can describe the mesh, and what it says is true",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — U3 (the anchor runs the module the mesh built) did not succeed"
|
||||
"status": "pass",
|
||||
"seconds": 1,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "V2",
|
||||
"title": "the catalogue holds every module this mesh built",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — V1 (the control plane can describe the mesh, and what it says is true) did not succeed"
|
||||
"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": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — V1 (the control plane can describe the mesh, and what it says is true) did not succeed"
|
||||
"status": "pass",
|
||||
"seconds": 1,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "E1",
|
||||
"title": "a change to a module's source reaches the machine on its own",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — V3 (the machine's networking is what the modules asked for) did not succeed"
|
||||
"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",
|
||||
|
||||
Reference in New Issue
Block a user