← all exploratory attempts · paired baseline · show in source

breadth-09: Switch schedule and port types

Agent report: complete Review pending

Session: completed

docs/spec-fabric-switch.md, lines 29–39

## Schedule predicate and port types The schedule predicate selects the port type kind of every input and output of the op. The two cases are mutually exclusive. | Schedule | Port type | Uniformity | |-------------|----------------------------|-----------------------------------------| | `spatial` | `!fabric.bits<W>` | All ports must share the same `W` (>= 0). | | `temporal` | `!fabric.bits_tag<W, T>` | All ports must share the same `(W, T)` (`W` >= 0, `T` >= 1). | Spatial ports may not use `bits_tag`; temporal ports may not use `bits`.

Independent review

No independent interface audit has been supplied for this attempt.

Execution provenance

The original pilot recorded the compiler hash and checkout revision separately; its binary build revision was not verified. Coverage follow-ups use separately identified rebuilt binaries. Original simulator binary hashes were not retained.

Original standalone-test agent report

This is exploratory evidence, not an accepted production-format PBT.

No author explanation recorded.

Reported numeric verdicts

not measured

Tested obligations

Untested obligations

Format

standalone Python PBT generator + accept/reject assertions on the real subject

Reproduction

not measured

Measured subject code coverage

measured · Measured handwritten Loom subject code only; external LLVM/MLIR and generated code excluded. Includes main executions, including rejected inputs; deliberate controls excluded. No matching native-suite baseline for this executable has been imported, so no coverage gain is claimed. Semantic fidelity remains a separate audit.

Execution: {'subject_exit_codes': {'0': 54, '1': 46}, 'subject_invocations': 100}
Baseline: No matching baseline measured
Minimized cases: not measured

Source files reached (9)
Source filePBT linesPBT branchesNew over baseline
lib/Fabric/IR/Crosspoint/Crosspoint.cpp5 / 223 / 10— lines, — branches
lib/Fabric/IR/FabricDialect.cpp19 / 192 / 2— lines, — branches
lib/Fabric/IR/FabricElaboration.cpp8 / 6440 / 310— lines, — branches
lib/Fabric/IR/FabricModuleOp.cpp50 / 10827 / 62— lines, — branches
lib/Fabric/IR/FabricOpUtils.cpp12 / 965 / 36— lines, — branches
lib/Fabric/IR/FabricOps.cpp57 / 97725 / 572— lines, — branches
lib/Fabric/IR/FabricSwitchOp.cpp311 / 812150 / 472— lines, — branches
lib/Fabric/IR/SwitchResourceContract/SwitchResourceContract.cpp6 / 2012 / 102— lines, — branches
tools/loom/loom.cpp10 / 100 / 0— lines, — branches
Full structured agent result
artifacts
code
pbt_switch_porttypes.py
controlled violation report
evidence/controlled-violation/run-controlled-violation.json
inputs
evidence/main/inputs/*.mlir
intent
INTENT.md
readme
README.md
run report
evidence/main/run.json
checker
pbt_switch_porttypes.py (main oracle; verdict per case in evidence/*/run*.json)
controlled violation
command
python3 pbt_switch_porttypes.py --seeds 20 --controlled-violation
evidence
evidence/controlled-violation/run-controlled-violation.json
kind
synthetic checker test (oracle inverted), not a real subject defect
result
all 20 seeds reported FAIL, demonstrating the property can fail and the harness detects mismatches in both directions
coverage and minimization
omitted; no coverage instrumentation was already accessible for the remote binary and the budget was spent making the PBT exercise the real subject (per task guidance).
format
standalone Python PBT generator + accept/reject assertions on the real subject
format reason
Verifier-admissibility property: violating inputs are rejected and emit no output module, so an input/output .spct postcondition checker cannot observe the negative half. Exit code + diagnostic of the pinned loom binary is the real interface.
generator
pbt_switch_porttypes.py (make_case)
intent note
INTENT.md
interpretation changes
  • Initially any rejection whose diagnostic did not name 'fabric.switch' was scored 'error'. Two tag_zero seeds (1018, 1040) were rejected by the fabric.bits_tag type parser instead. Since T >= 1 is exactly the clause under test and the diagnostic names the fabric type, the on-topic test was widened to any diagnostic naming a fabric construct. No expected verdict was changed.
passage
docs/spec-fabric-switch.md:29-39 (Schedule predicate and port types)
potential subject bug
not measured
revision
48615bc5925ef4b9db8b4550b5d4322933cf4b7b
sampling limits
K
1..8
L
1..8
T
  • 1
  • 2
  • 3
  • 4
  • 8
W
  • 0
  • 1
  • 7
  • 8
  • 32
  • 64
  • 255
note
bounds are harness conventions, not source requirements
seeds
1000..1099 (100 seeds, main run); 1000..1019 (20 seeds, controlled violation)
slot
breadth-09
status
complete
subject
accept criterion
exit code 0
binary
/home/blimpan/blimpan/spectriad-loom-head/loom/build/tools/loom/loom
binary sha256
85d37aaf871913771571f91d085fb36ebe2857f8a6d74e2e34196024d1621057
command
ssh bibim 'taskset -c 79 bash -c "... taskset -c 79 <loom> --mlir-print-op-generic FILE"' (full string in evidence/main/run.json:subject_command)
subject observations
  • Diagnostics are specific: 'schedule mismatch with port kind: <sched> fabric.switch requires ...; input #i has type ...' and 'requires uniform bits<W>/bits_tag<W, T> on all switch ports'.
  • T = 0 is rejected at the type level ('fabric.bits_tag requires tagWidth > 0'), before the switch verifier; still an on-topic rejection for the T >= 1 clause.
tested obligations
  • O1 spatial schedule selects !fabric.bits<W> for every input and output port
  • O1 temporal schedule selects !fabric.bits_tag<W, T> for every input and output port
  • O2 mutual exclusion: a single spatial port spelled bits_tag, or a single temporal port spelled bits, is rejected (mutation wrong_kind, 20/100 seeds)
  • O3 spatial uniformity of W across all ports (mutation nonuniform_W, spatial, 8/100 seeds); W = 0 accepted as conforming (>= 0)
  • O4 temporal uniformity of W and of T across all ports (mutations nonuniform_W/nonuniform_T temporal, 14/100 seeds)
  • O4 T >= 1 (mutation tag_zero, 4/100 seeds; rejected by the fabric.bits_tag type constraint 'requires tagWidth > 0')
  • Both op forms covered: named function_type template (generic MLIR) and anonymous SSA form (custom syntax inside fabric.module)
untested obligations
  • Anonymous 'source-type to destination-port-type' clauses: the destination type (not the source type) being the type subject to the uniformity/schedule checks was not exercised (no 'to' clause generated). This belongs to a later paragraph but interacts with this passage.
  • Very large or unusual W/T values outside the sampled sets (W > 255, T > 8); no source upper bound exists, so this is a sampling limit only.
  • Multi-port simultaneous mutations (only a single port is mutated per non-tag_zero case).
  • Named-vs-anonymous port count sourcing, K*L bounds, connectivity_table, route tables, grant policies - other paragraphs, deliberately held legal as preconditions.
verdict counts
controlled violation run
error
0
fail
20
pass
0
main run
error
0
fail
0
pass
100
subject accepts
54
subject rejects
46

Published evidence

evidence/breadth-09 (4)
evidence/breadth-09/coverage (7)
evidence/breadth-09/evidence/controlled-violation (1)
evidence/breadth-09/evidence/controlled-violation/inputs (20)
  • sw_seed1000.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1000.mlir (530 bytes)
  • sw_seed1001.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1001.mlir (348 bytes)
  • sw_seed1002.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1002.mlir (443 bytes)
  • sw_seed1003.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1003.mlir (720 bytes)
  • sw_seed1004.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1004.mlir (432 bytes)
  • sw_seed1005.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1005.mlir (694 bytes)
  • sw_seed1006.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1006.mlir (312 bytes)
  • sw_seed1007.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1007.mlir (331 bytes)
  • sw_seed1008.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1008.mlir (484 bytes)
  • sw_seed1009.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1009.mlir (352 bytes)
  • sw_seed1010.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1010.mlir (347 bytes)
  • sw_seed1011.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1011.mlir (544 bytes)
  • sw_seed1012.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1012.mlir (482 bytes)
  • sw_seed1013.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1013.mlir (625 bytes)
  • sw_seed1014.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1014.mlir (427 bytes)
  • sw_seed1015.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1015.mlir (559 bytes)
  • sw_seed1016.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1016.mlir (658 bytes)
  • sw_seed1017.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1017.mlir (813 bytes)
  • sw_seed1018.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1018.mlir (723 bytes)
  • sw_seed1019.mlir
    evidence/breadth-09/evidence/controlled-violation/inputs/sw_seed1019.mlir (369 bytes)
evidence/breadth-09/evidence/main (1)
  • run.json
    evidence/breadth-09/evidence/main/run.json (114419 bytes)
evidence/breadth-09/evidence/main/inputs (100)
  • sw_seed1000.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1000.mlir (530 bytes)
  • sw_seed1001.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1001.mlir (348 bytes)
  • sw_seed1002.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1002.mlir (443 bytes)
  • sw_seed1003.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1003.mlir (720 bytes)
  • sw_seed1004.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1004.mlir (432 bytes)
  • sw_seed1005.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1005.mlir (694 bytes)
  • sw_seed1006.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1006.mlir (312 bytes)
  • sw_seed1007.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1007.mlir (331 bytes)
  • sw_seed1008.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1008.mlir (484 bytes)
  • sw_seed1009.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1009.mlir (352 bytes)
  • sw_seed1010.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1010.mlir (347 bytes)
  • sw_seed1011.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1011.mlir (544 bytes)
  • sw_seed1012.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1012.mlir (482 bytes)
  • sw_seed1013.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1013.mlir (625 bytes)
  • sw_seed1014.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1014.mlir (427 bytes)
  • sw_seed1015.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1015.mlir (559 bytes)
  • sw_seed1016.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1016.mlir (658 bytes)
  • sw_seed1017.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1017.mlir (813 bytes)
  • sw_seed1018.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1018.mlir (723 bytes)
  • sw_seed1019.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1019.mlir (369 bytes)
  • sw_seed1020.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1020.mlir (361 bytes)
  • sw_seed1021.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1021.mlir (427 bytes)
  • sw_seed1022.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1022.mlir (441 bytes)
  • sw_seed1023.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1023.mlir (750 bytes)
  • sw_seed1024.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1024.mlir (671 bytes)
  • sw_seed1025.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1025.mlir (191 bytes)
  • sw_seed1026.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1026.mlir (613 bytes)
  • sw_seed1027.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1027.mlir (236 bytes)
  • sw_seed1028.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1028.mlir (836 bytes)
  • sw_seed1029.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1029.mlir (544 bytes)
  • sw_seed1030.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1030.mlir (531 bytes)
  • sw_seed1031.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1031.mlir (285 bytes)
  • sw_seed1032.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1032.mlir (533 bytes)
  • sw_seed1033.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1033.mlir (445 bytes)
  • sw_seed1034.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1034.mlir (232 bytes)
  • sw_seed1035.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1035.mlir (544 bytes)
  • sw_seed1036.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1036.mlir (387 bytes)
  • sw_seed1037.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1037.mlir (536 bytes)
  • sw_seed1038.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1038.mlir (313 bytes)
  • sw_seed1039.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1039.mlir (277 bytes)
  • sw_seed1040.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1040.mlir (523 bytes)
  • sw_seed1041.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1041.mlir (575 bytes)
  • sw_seed1042.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1042.mlir (387 bytes)
  • sw_seed1043.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1043.mlir (847 bytes)
  • sw_seed1044.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1044.mlir (496 bytes)
  • sw_seed1045.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1045.mlir (661 bytes)
  • sw_seed1046.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1046.mlir (534 bytes)
  • sw_seed1047.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1047.mlir (426 bytes)
  • sw_seed1048.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1048.mlir (480 bytes)
  • sw_seed1049.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1049.mlir (321 bytes)
  • sw_seed1050.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1050.mlir (715 bytes)
  • sw_seed1051.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1051.mlir (313 bytes)
  • sw_seed1052.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1052.mlir (343 bytes)
  • sw_seed1053.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1053.mlir (797 bytes)
  • sw_seed1054.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1054.mlir (248 bytes)
  • sw_seed1055.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1055.mlir (353 bytes)
  • sw_seed1056.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1056.mlir (394 bytes)
  • sw_seed1057.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1057.mlir (631 bytes)
  • sw_seed1058.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1058.mlir (463 bytes)
  • sw_seed1059.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1059.mlir (244 bytes)
  • sw_seed1060.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1060.mlir (245 bytes)
  • sw_seed1061.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1061.mlir (677 bytes)
  • sw_seed1062.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1062.mlir (452 bytes)
  • sw_seed1063.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1063.mlir (390 bytes)
  • sw_seed1064.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1064.mlir (315 bytes)
  • sw_seed1065.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1065.mlir (502 bytes)
  • sw_seed1066.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1066.mlir (730 bytes)
  • sw_seed1067.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1067.mlir (516 bytes)
  • sw_seed1068.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1068.mlir (606 bytes)
  • sw_seed1069.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1069.mlir (639 bytes)
  • sw_seed1070.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1070.mlir (540 bytes)
  • sw_seed1071.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1071.mlir (552 bytes)
  • sw_seed1072.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1072.mlir (478 bytes)
  • sw_seed1073.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1073.mlir (386 bytes)
  • sw_seed1074.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1074.mlir (677 bytes)
  • sw_seed1075.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1075.mlir (320 bytes)
  • sw_seed1076.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1076.mlir (358 bytes)
  • sw_seed1077.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1077.mlir (438 bytes)
  • sw_seed1078.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1078.mlir (435 bytes)
  • sw_seed1079.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1079.mlir (288 bytes)
  • sw_seed1080.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1080.mlir (579 bytes)
  • sw_seed1081.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1081.mlir (584 bytes)
  • sw_seed1082.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1082.mlir (345 bytes)
  • sw_seed1083.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1083.mlir (445 bytes)
  • sw_seed1084.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1084.mlir (495 bytes)
  • sw_seed1085.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1085.mlir (360 bytes)
  • sw_seed1086.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1086.mlir (847 bytes)
  • sw_seed1087.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1087.mlir (277 bytes)
  • sw_seed1088.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1088.mlir (851 bytes)
  • sw_seed1089.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1089.mlir (714 bytes)
  • sw_seed1090.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1090.mlir (544 bytes)
  • sw_seed1091.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1091.mlir (361 bytes)
  • sw_seed1092.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1092.mlir (515 bytes)
  • sw_seed1093.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1093.mlir (645 bytes)
  • sw_seed1094.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1094.mlir (733 bytes)
  • sw_seed1095.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1095.mlir (277 bytes)
  • sw_seed1096.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1096.mlir (537 bytes)
  • sw_seed1097.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1097.mlir (331 bytes)
  • sw_seed1098.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1098.mlir (376 bytes)
  • sw_seed1099.mlir
    evidence/breadth-09/evidence/main/inputs/sw_seed1099.mlir (483 bytes)