Unify trunk on main: initialization → main #3

Merged
jschoubben merged 58 commits from initialization into main 2026-09-05 01:13:33 +00:00
2 changed files with 34 additions and 0 deletions
Showing only changes of commit a7a2a48615 - Show all commits
+31
View File
@@ -0,0 +1,31 @@
package system
import (
"testing"
"github.com/novox/mesh-host/internal/declaration"
)
// Every shape in the vocabulary is implemented by a host that claims to do everything.
//
// **Added because adding a shape and forgetting this was silent here and loud there.** The
// `network` shape parsed, validated, applied and removed, and a full host still refused every
// declaration containing one — correctly, because it does not do half a declaration. The count
// test above passed throughout: it checks what the language has, not what a host can do.
func TestAFullHostImplementsEveryShapeTheLanguageHas(t *testing.T) {
does := map[declaration.Type]bool{}
for _, s := range All() {
if s.Name() != "arch" {
continue
}
for _, shape := range s.Shapes() {
does[shape] = true
}
}
for _, shape := range declaration.Vocabulary() {
if !does[shape] {
t.Errorf("the language has %q and a full host cannot apply it, so every declaration "+
"carrying one is refused whole", shape)
}
}
}
+3
View File
@@ -166,6 +166,9 @@ func everyShape() []declaration.Type {
declaration.TypeDirectory, declaration.TypeFile, declaration.TypeService,
declaration.TypePackage, declaration.TypeContainer, declaration.TypeAction,
declaration.TypeUser, declaration.TypeArchive,
// A network needs the same runtime a container does, so a host that can run one can make
// the other. Not in portableShapes for exactly that reason.
declaration.TypeNetwork,
}
}