Kernel rig: configuration cases, one configured block with each row's exact geometry

A Default row, a 60 mm row, a row without the hole, a height column and rules
that suppress the hole or drive the height, each checked after activation;
preview leaves the design; refusals for a row that cannot build, unknown rows,
columns and features, and a rule a row breaks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jyviko
2026-10-29 17:10:09 -04:00
committed by Irakli Kourtis
parent 74eeda4914
commit d34f7ee17d
34 changed files with 841 additions and 0 deletions
@@ -0,0 +1,31 @@
{
"sources": [],
"what": "config.activate of a row with W = 60",
"method": "60x30x10 with the 10 mm hole: V = 18000 - pi 25 10; faces 7",
"body_count": 1,
"volume_mm3": 17214.601836602553,
"faces": 7,
"bbox": {
"min": [
0,
0,
0
],
"max": [
60,
30,
10
]
},
"results": [
{
"step": 7,
"json": {
"active": "Long",
"errors": [],
"matches": true
}
}
],
"source": "analytic"
}
@@ -0,0 +1,20 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.activate",
"params": {
"row": "Long"
}
}
]
}
@@ -0,0 +1,8 @@
{
"sources": [],
"what": "config.activate of a row with a block 0 long",
"source": "invariants",
"method": "a 0 mm block cannot be built: the activation is refused and the design kept",
"outcome": "refused",
"refusal": "configuration `Zero` would fail to rebuild"
}
@@ -0,0 +1,20 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Zero",
"values": {
"W": "0 mm"
}
}
},
{
"command": "config.activate",
"params": {
"row": "Zero"
}
}
]
}
@@ -0,0 +1,9 @@
{
"sources": [],
"what": "config.activate of a row that suppresses the hole",
"method": "the 40x30x10 block without its hole: V = 12000; 6 faces",
"body_count": 1,
"volume_mm3": 12000.0,
"faces": 6,
"source": "analytic"
}
@@ -0,0 +1,20 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Plain",
"values": {
"suppress:Hole": true
}
}
},
{
"command": "config.activate",
"params": {
"row": "Plain"
}
}
]
}
@@ -0,0 +1,21 @@
{
"sources": [],
"what": "config.activate of Long and then Default again: the first part back",
"method": "W = 40 again: V = 12000 - pi 25 10; faces 7",
"body_count": 1,
"volume_mm3": 11214.601836602551,
"faces": 7,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
10
]
},
"source": "analytic"
}
@@ -0,0 +1,26 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.activate",
"params": {
"row": "Long"
}
},
{
"command": "config.activate",
"params": {
"row": "Default"
}
}
]
}
@@ -0,0 +1,8 @@
{
"sources": [],
"what": "config.activate of a row the table does not have",
"source": "invariants",
"method": "no row Nope: a clean refusal naming it",
"outcome": "refused",
"refusal": "configuration `Nope`"
}
@@ -0,0 +1,11 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.activate",
"params": {
"row": "Nope"
}
}
]
}
@@ -0,0 +1,41 @@
{
"sources": [],
"what": "config.column adds the height H; a row with H = 20 makes the block 20 high",
"method": "40x30x20 with the 10 mm hole through: V = 24000 - pi 25 20; faces 7; the column fills Default with H's 10 mm",
"body_count": 1,
"volume_mm3": 22429.203673205102,
"faces": 7,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
20
]
},
"results": [
{
"step": 6,
"json": {
"columns": [
"param:W",
"suppress:Hole",
"param:H"
],
"rows": [
{
"name": "Default",
"values": {
"param:H": "10 mm"
}
}
]
}
}
],
"source": "analytic"
}
@@ -0,0 +1,26 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.column",
"params": {
"param": "H"
}
},
{
"command": "config.row",
"params": {
"name": "Tall",
"values": {
"H": "20 mm"
}
}
},
{
"command": "config.activate",
"params": {
"row": "Tall"
}
}
]
}
@@ -0,0 +1,31 @@
{
"sources": [],
"what": "config.column delete of W: Long no longer sets the length",
"method": "the W column and its values go; activating Long sets only the hole (on): W stays 40, V = 12000 - pi 25 10",
"body_count": 1,
"volume_mm3": 11214.601836602551,
"faces": 7,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
10
]
},
"results": [
{
"step": 7,
"json": {
"columns": [
"suppress:Hole"
]
}
}
],
"source": "analytic"
}
@@ -0,0 +1,27 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.column",
"params": {
"param": "W",
"delete": true
}
},
{
"command": "config.activate",
"params": {
"row": "Long"
}
}
]
}
@@ -0,0 +1,8 @@
{
"sources": [],
"what": "config.column of a parameter the design does not have",
"source": "invariants",
"method": "no parameter Depth: refused naming it",
"outcome": "refused",
"refusal": "no parameter `Depth`"
}
@@ -0,0 +1,11 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.column",
"params": {
"param": "Depth"
}
}
]
}
@@ -0,0 +1,43 @@
{
"sources": [],
"what": "config.configure of a block's length W and its hole's suppression: a Default row with today's values",
"method": "W = 40, H = 10, the 10 mm hole through: V = 12000 - pi 25 10; faces 7; the Default row holds W's expression and the hole on",
"body_count": 1,
"volume_mm3": 11214.601836602551,
"faces": 7,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
10
]
},
"results": [
{
"step": 5,
"json": {
"active": "Default",
"columns": [
"param:W",
"suppress:Hole"
],
"matches": true,
"rows": [
{
"name": "Default",
"values": {
"param:W": "40 mm",
"suppress:Hole": "false"
}
}
]
}
}
],
"source": "analytic"
}
@@ -0,0 +1,53 @@
{
"commands": [
{
"command": "parameters.add",
"params": {
"name": "W",
"expression": "40 mm",
"unit": "mm"
}
},
{
"command": "parameters.add",
"params": {
"name": "H",
"expression": "10 mm",
"unit": "mm"
}
},
{
"command": "solid.box",
"params": {
"length": "W",
"width": 30,
"height": "H",
"body_name": "Block",
"name": "Block"
}
},
{
"command": "solid.hole",
"params": {
"position": [
20,
15,
10
],
"diameter": 10,
"name": "Hole"
}
},
{
"command": "config.configure",
"params": {
"params": [
"W"
],
"features": [
"Hole"
]
}
}
]
}
@@ -0,0 +1,8 @@
{
"sources": [],
"what": "config.configure of a feature the design does not have",
"source": "invariants",
"method": "no feature Nope: refused naming it",
"outcome": "refused",
"refusal": "no feature `Nope`"
}
@@ -0,0 +1,13 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.configure",
"params": {
"features": [
"Nope"
]
}
}
]
}
@@ -0,0 +1,38 @@
{
"sources": [],
"what": "config.preview of Long rebuilds it on the side: the design stays Default",
"method": "the preview answers for Long, the design stays W = 40: V = 12000 - pi 25 10; faces 7",
"body_count": 1,
"volume_mm3": 11214.601836602551,
"faces": 7,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
10
]
},
"results": [
{
"step": 7,
"json": {
"preview": true,
"active": "Long",
"errors": []
}
},
{
"step": 8,
"json": {
"active": "Default",
"matches": true
}
}
],
"source": "analytic"
}
@@ -0,0 +1,24 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.preview",
"params": {
"row": "Long"
}
},
{
"command": "config.table",
"params": {}
}
]
}
@@ -0,0 +1,8 @@
{
"sources": [],
"what": "config.row with a value for a column the table does not have",
"source": "invariants",
"method": "Depth is not a column: refused, saying how to add one",
"outcome": "refused",
"refusal": "`Depth` is not a column (config.column adds one)"
}
@@ -0,0 +1,14 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Deep",
"values": {
"Depth": "5 mm"
}
}
}
]
}
@@ -0,0 +1,21 @@
{
"sources": [],
"what": "config.rule drives H to 20 when W is 60 or more",
"method": "Long: W = 60, the rule sets H = 20: V = 60 30 20 - pi 25 20 = 36000 - 500 pi; faces 7",
"body_count": 1,
"volume_mm3": 34429.203673205106,
"faces": 7,
"bbox": {
"min": [
0,
0,
0
],
"max": [
60,
30,
20
]
},
"source": "analytic"
}
@@ -0,0 +1,46 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.column",
"params": {
"param": "H"
}
},
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.rule",
"params": {
"rule": {
"id": "tall",
"name": "Tall when long",
"condition": {
"type": "parameter",
"parameter": "W",
"operator": "ge",
"expression": "60 mm"
},
"effect": {
"type": "drive_parameter",
"parameter": "H",
"expression": "20 mm"
}
}
}
},
{
"command": "config.activate",
"params": {
"row": "Long"
}
}
]
}
@@ -0,0 +1,8 @@
{
"sources": [],
"what": "config.rule limiting W to 30..50 while the row Long has W = 60",
"source": "invariants",
"method": "every row is checked against the new rule: Long's 60 is outside it, so the rule is refused",
"outcome": "refused",
"refusal": "rule `Range` restricts the final value"
}
@@ -0,0 +1,32 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.rule",
"params": {
"rule": {
"id": "range",
"name": "Range",
"condition": {
"type": "always"
},
"effect": {
"type": "parameter_range",
"parameter": "W",
"minimum": "30 mm",
"maximum": "50 mm"
}
}
}
}
]
}
@@ -0,0 +1,21 @@
{
"sources": [],
"what": "config.rule: a block longer than 50 has no hole; activating Long applies it",
"method": "W = 60 > 50: the rule suppresses the hole: V = 60 30 10 = 18000; 6 faces",
"body_count": 1,
"volume_mm3": 18000.0,
"faces": 6,
"bbox": {
"min": [
0,
0,
0
],
"max": [
60,
30,
10
]
},
"source": "analytic"
}
@@ -0,0 +1,40 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.rule",
"params": {
"rule": {
"id": "big",
"name": "Big",
"condition": {
"type": "parameter",
"parameter": "W",
"operator": "gt",
"expression": "50 mm"
},
"effect": {
"type": "drive_suppression",
"feature": 2,
"value": true
}
}
}
},
{
"command": "config.activate",
"params": {
"row": "Long"
}
}
]
}
@@ -0,0 +1,25 @@
{
"sources": [],
"what": "config.rule adds two rules in one step; config.rules lists them in order",
"method": "Long: W = 60 > 50, Big suppresses the hole and Small does not match: V = 18000; 6 faces",
"body_count": 1,
"volume_mm3": 18000.0,
"faces": 6,
"results": [
{
"step": 9,
"json": {
"active": "Long",
"rules": [
{
"id": "big"
},
{
"id": "small"
}
]
}
}
],
"source": "analytic"
}
@@ -0,0 +1,61 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.rule",
"params": {
"rules": [
{
"id": "big",
"name": "Big",
"condition": {
"type": "parameter",
"parameter": "W",
"operator": "gt",
"expression": "50 mm"
},
"effect": {
"type": "drive_suppression",
"feature": 2,
"value": true
}
},
{
"id": "small",
"name": "Small",
"condition": {
"type": "parameter",
"parameter": "W",
"operator": "le",
"expression": "50 mm"
},
"effect": {
"type": "drive_suppression",
"feature": 2,
"value": false
}
}
]
}
},
{
"command": "config.activate",
"params": {
"row": "Long"
}
},
{
"command": "config.rules",
"params": {}
}
]
}
@@ -0,0 +1,41 @@
{
"sources": [],
"what": "config.table lists the three rows, each with its values",
"method": "Default (W 40, hole on), Long (W 60), Plain (hole off); Default stays active: V = 12000 - pi 25 10",
"body_count": 1,
"volume_mm3": 11214.601836602551,
"faces": 7,
"results": [
{
"step": 8,
"json": {
"active": "Default",
"matches": true,
"rows": [
{
"name": "Default",
"values": {
"param:W": "40 mm",
"suppress:Hole": "false"
}
},
{
"name": "Long",
"values": {
"param:W": "60 mm",
"suppress:Hole": "false"
}
},
{
"name": "Plain",
"values": {
"param:W": "40 mm",
"suppress:Hole": "true"
}
}
]
}
}
],
"source": "analytic"
}
@@ -0,0 +1,27 @@
{
"base": "../cov-config-configure-default-row",
"commands": [
{
"command": "config.row",
"params": {
"name": "Long",
"values": {
"W": "60 mm"
}
}
},
{
"command": "config.row",
"params": {
"name": "Plain",
"values": {
"suppress:Hole": true
}
}
},
{
"command": "config.table",
"params": {}
}
]
}