← all exploratory attempts · paired baseline · show in source

breadth-07: Provider-independent capability views

Agent report: partial Review pending

Session: completed

docs/spec-fabric-reconfigurable-op.md, lines 1150–1156

The capability template owns no parallel state or timing descriptor. Its active node set mechanically selects the concrete Fabric-owned `ResourceState`, `UsePattern`, transition timing, progress, and physical refinement closure of those nodes. An RTL provider consumes those exact contracts through resolved Fabric views; provider availability cannot add members, change the selected graph, or replace its state and timing semantics.

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.

Generator, oracle, 100 seeded cases and controlled-violation evidence are complete and runnable; ZERO seeds were judged against the real subject because the Bash-tool sandbox escape for `ssh bibim ...` was revoked mid-session. No property verdict about the subject is claimed.

Reported numeric verdicts

not measured

Tested obligations

Untested obligations

Format

standalone Python generator + output assertions (no ProGRMR grammar, no .spct checker)

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': 27, '1': 73}, 'subject_invocations': 100}
Baseline: No matching baseline measured
Minimized cases: not measured

Source files reached (16)
Source filePBT linesPBT branchesNew over baseline
include/Fabric/IR/FuCapabilityDomain.h13 / 137 / 8— lines, — branches
include/Fabric/IR/ImplementationFamily.h14 / 1524 / 56— lines, — branches
lib/Dataflow/IR/OperationSchema.cpp44 / 7163 / 350— lines, — branches
lib/Fabric/IR/Crosspoint/Crosspoint.cpp11 / 225 / 10— lines, — branches
lib/Fabric/IR/FabricDialect.cpp14 / 190 / 2— lines, — branches
lib/Fabric/IR/FabricElaboration.cpp8 / 6440 / 310— lines, — branches
lib/Fabric/IR/FabricFuCapabilityAttrs.cpp11 / 125 / 6— lines, — branches
lib/Fabric/IR/FabricModuleOp.cpp50 / 10827 / 62— lines, — branches
lib/Fabric/IR/FabricOpUtils.cpp7 / 961 / 36— lines, — branches
lib/Fabric/IR/FabricOps.cpp386 / 977154 / 572— lines, — branches
lib/Fabric/IR/FabricPeTemporalOps.cpp12 / 2957 / 160— lines, — branches
lib/Fabric/IR/FabricPrimitiveOps.cpp92 / 34145 / 262— lines, — branches
lib/Fabric/IR/FamilyCapabilityParams.cpp65 / 121254 / 508— lines, — branches
lib/Fabric/IR/FuCapabilityDomain/FuCapabilityDomain.cpp145 / 17064 / 88— lines, — branches
lib/Fabric/IR/ImplementationFamilyQueries.cpp20 / 5010 / 380— lines, — branches
tools/loom/loom.cpp10 / 100 / 0— lines, — branches
Full structured agent result
barrier
Bash-tool sandbox-escape approval for the permitted `ssh bibim ...` command was withdrawn mid-session ('no approval surface'), removing all access to the pinned subject binary. Acceptance criteria were not weakened; the unexecuted seeds are reported as NOT_RUN.
checker path
pbt/fu_capability_pbt.py (judge(), same file; oracle over subject stdout/stderr/rc)
controlled violation
cases
  • positive-identity: record preserved -> PASS
  • member-added: fabricated output whose record gains active ordinal 99 -> FAIL ('record members changed: [([1, 99], [(0, 0)])]')
  • non-schema-accepted: duplicate-row negative returned rc 0 -> FAIL
  • negative-rejected: rc 1 with diagnostic -> PASS
command
python3 pbt/fu_capability_pbt.py --self-test
conclusion
The property can fail and the oracle detects both added members and wrongly-accepted non-schema records.
returncode
0
type
synthetic checker test (not a subject defect)
coverage
omitted - budget spent on making the PBT and oracle real; no coverage infrastructure was built (per task constraint)
format chosen
standalone Python generator + output assertions (no ProGRMR grammar, no .spct checker)
format reason
Property is byte-level content of the DenseI8Array `capability_templates` record; checker SUPPORT.md exposes no dense-array decode projection.
generator path
pbt/fu_capability_pbt.py (--emit / gen_case)
governing references
  • docs/spec-fabric-fu.md:196-225 (Capability Domain Carrier)
  • include/Fabric/IR/FabricAttrs.td:26-32 (Fabric_FuCapabilityDomainAttr, interface evidence)
  • include/Fabric/IR/FuCapabilityDomain.h (record member list, interface evidence)
  • lib/Fabric/IR/FuCapabilityDomain/FuCapabilityDomain.cpp (wire form, interface evidence)
  • lib/Fabric/Artifact/FabricModuleCanonicalization.cpp:130-190 (row-vs-graph validation, not reachable by a built CLI)
observed verdict counts
FAIL
0
NOT RUN
100
PASS
0
note
verdicts.json was never produced; no subject runs were possible after the permission revocation.
passage
docs/spec-fabric-reconfigurable-op.md:1150-1156
potential subject bug
not measured
real subject evidence
  • command
    ssh bibim 'taskset -c 79 .../loom --loom-elaborate-fabric-instances' < evidence/probes/probe1.mlir
    finding
    FU with mux+op elaborates; the pass does not materialize or validate capability_templates.
    probe
    probe1
    returncode
    0
  • classification
    invalid test (attribute spelling), not a property violation; drove the fix to `record = [ ... ]`
    command
    ssh bibim 'taskset -c 79 .../loom' < evidence/probes/probe3.mlir
    probe
    probe3
    returncode
    1
    stderr
    error: expected '['; failed to parse Fabric_FuCapabilityDomainAttr parameter 'record' which is to be a ::mlir::DenseI8ArrayAttr
  • classification
    NOT RUN - sandbox escape revoked; in-sandbox ssh returns rc 255 'Can't open user config file /home/blimpan/.ssh/config'
    command
    same, with `record = [ ... ]` spelling
    probe
    probe4
    returncode
    not measured
revision
48615bc5925ef4b9db8b4550b5d4322933cf4b7b
sampling limits
bounds
2-4 mux inputs, 1-3 fabric.op nodes, 1-3 rows, bits<32> ports, spatial PE, arith.addi/muli families
case shape bounds are conventions not source
true
kind distribution
neg duplicate row
13
neg empty domain
15
neg empty row
7
neg repeated selector
10
neg trailing state field
12
neg truncated
8
neg unsorted rows
8
positive
27
seeds executed against subject
0
seeds generated
100
slot
breadth-07
status
partial
status detail
Generator, oracle, 100 seeded cases and controlled-violation evidence are complete and runnable; ZERO seeds were judged against the real subject because the Bash-tool sandbox escape for `ssh bibim ...` was revoked mid-session. No property verdict about the subject is claimed.
subject
command
ssh bibim 'taskset -c 79 /home/blimpan/blimpan/spectriad-loom-head/loom/build/tools/loom/loom' < CASE.mlir
notes
Only `loom` and `loom-adg` are built in this checkout; loom-tech-map / loom-hw-probe binaries are absent, so the Fabric module-import validation path has no CLI.
sha256
85d37aaf871913771571f91d085fb36ebe2857f8a6d74e2e34196024d1621057
tested obligations
  • O1 member closure: capability-template record admits only active fabric.op ordinals + one route per selector; an appended state/timing-like field must be rejected (negative kind neg_trailing_state_field)
  • O2 no added members / unchanged selected graph: canonical record must be accepted and reproduced byte-identically (positive cases)
  • O3 normalized-relation hygiene: duplicate row, twice-selected selector, non-canonical row order, empty row, empty domain, truncation must be rejected
untested obligations
  • "active node set mechanically selects the concrete Fabric-owned ResourceState, UsePattern, transition timing, progress, and physical refinement closure" - derivation entry point has no built CLI
  • "An RTL provider consumes those exact contracts through resolved Fabric views" / "cannot ... replace its state and timing semantics" - no RTL-provider interface exposed by built tools; not substitutable by parsing
  • row-versus-physical-graph validation (foreign/wrong-kind node, omitted or unused selector, out-of-range port) - enforced only in the unreachable module-import path

Published evidence

evidence/breadth-07 (3)
  • INTENT.md
    evidence/breadth-07/INTENT.md (4130 bytes)
  • README.md
    evidence/breadth-07/README.md (2536 bytes)
  • RESULT.json
    evidence/breadth-07/RESULT.json (5829 bytes)
evidence/breadth-07/coverage (7)
evidence/breadth-07/evidence/cases (101)
  • cases.json
    evidence/breadth-07/evidence/cases/cases.json (75944 bytes)
  • seed0001.mlir
    evidence/breadth-07/evidence/cases/seed0001.mlir (1263 bytes)
  • seed0002.mlir
    evidence/breadth-07/evidence/cases/seed0002.mlir (1051 bytes)
  • seed0003.mlir
    evidence/breadth-07/evidence/cases/seed0003.mlir (1263 bytes)
  • seed0004.mlir
    evidence/breadth-07/evidence/cases/seed0004.mlir (1182 bytes)
  • seed0005.mlir
    evidence/breadth-07/evidence/cases/seed0005.mlir (1538 bytes)
  • seed0006.mlir
    evidence/breadth-07/evidence/cases/seed0006.mlir (1071 bytes)
  • seed0007.mlir
    evidence/breadth-07/evidence/cases/seed0007.mlir (912 bytes)
  • seed0008.mlir
    evidence/breadth-07/evidence/cases/seed0008.mlir (1134 bytes)
  • seed0009.mlir
    evidence/breadth-07/evidence/cases/seed0009.mlir (1364 bytes)
  • seed0010.mlir
    evidence/breadth-07/evidence/cases/seed0010.mlir (1264 bytes)
  • seed0011.mlir
    evidence/breadth-07/evidence/cases/seed0011.mlir (1533 bytes)
  • seed0012.mlir
    evidence/breadth-07/evidence/cases/seed0012.mlir (1428 bytes)
  • seed0013.mlir
    evidence/breadth-07/evidence/cases/seed0013.mlir (1524 bytes)
  • seed0014.mlir
    evidence/breadth-07/evidence/cases/seed0014.mlir (1264 bytes)
  • seed0015.mlir
    evidence/breadth-07/evidence/cases/seed0015.mlir (932 bytes)
  • seed0016.mlir
    evidence/breadth-07/evidence/cases/seed0016.mlir (1404 bytes)
  • seed0017.mlir
    evidence/breadth-07/evidence/cases/seed0017.mlir (1395 bytes)
  • seed0018.mlir
    evidence/breadth-07/evidence/cases/seed0018.mlir (812 bytes)
  • seed0019.mlir
    evidence/breadth-07/evidence/cases/seed0019.mlir (1384 bytes)
  • seed0020.mlir
    evidence/breadth-07/evidence/cases/seed0020.mlir (1500 bytes)
  • seed0021.mlir
    evidence/breadth-07/evidence/cases/seed0021.mlir (1279 bytes)
  • seed0022.mlir
    evidence/breadth-07/evidence/cases/seed0022.mlir (980 bytes)
  • seed0024.mlir
    evidence/breadth-07/evidence/cases/seed0024.mlir (1131 bytes)
  • seed0025.mlir
    evidence/breadth-07/evidence/cases/seed0025.mlir (1057 bytes)
  • seed0026.mlir
    evidence/breadth-07/evidence/cases/seed0026.mlir (1264 bytes)
  • seed0027.mlir
    evidence/breadth-07/evidence/cases/seed0027.mlir (1563 bytes)
  • seed0028.mlir
    evidence/breadth-07/evidence/cases/seed0028.mlir (1264 bytes)
  • seed0029.mlir
    evidence/breadth-07/evidence/cases/seed0029.mlir (1144 bytes)
  • seed0030.mlir
    evidence/breadth-07/evidence/cases/seed0030.mlir (1563 bytes)
  • seed0031.mlir
    evidence/breadth-07/evidence/cases/seed0031.mlir (1159 bytes)
  • seed0032.mlir
    evidence/breadth-07/evidence/cases/seed0032.mlir (932 bytes)
  • seed0033.mlir
    evidence/breadth-07/evidence/cases/seed0033.mlir (1384 bytes)
  • seed0034.mlir
    evidence/breadth-07/evidence/cases/seed0034.mlir (1539 bytes)
  • seed0036.mlir
    evidence/breadth-07/evidence/cases/seed0036.mlir (913 bytes)
  • seed0037.mlir
    evidence/breadth-07/evidence/cases/seed0037.mlir (1356 bytes)
  • seed0038.mlir
    evidence/breadth-07/evidence/cases/seed0038.mlir (1371 bytes)
  • seed0039.mlir
    evidence/breadth-07/evidence/cases/seed0039.mlir (1207 bytes)
  • seed0040.mlir
    evidence/breadth-07/evidence/cases/seed0040.mlir (1701 bytes)
  • seed0042.mlir
    evidence/breadth-07/evidence/cases/seed0042.mlir (1024 bytes)
  • seed0043.mlir
    evidence/breadth-07/evidence/cases/seed0043.mlir (1159 bytes)
  • seed0044.mlir
    evidence/breadth-07/evidence/cases/seed0044.mlir (1653 bytes)
  • seed0045.mlir
    evidence/breadth-07/evidence/cases/seed0045.mlir (1308 bytes)
  • seed0046.mlir
    evidence/breadth-07/evidence/cases/seed0046.mlir (1159 bytes)
  • seed0047.mlir
    evidence/breadth-07/evidence/cases/seed0047.mlir (1033 bytes)
  • seed0048.mlir
    evidence/breadth-07/evidence/cases/seed0048.mlir (1251 bytes)
  • seed0049.mlir
    evidence/breadth-07/evidence/cases/seed0049.mlir (1303 bytes)
  • seed0050.mlir
    evidence/breadth-07/evidence/cases/seed0050.mlir (1332 bytes)
  • seed0051.mlir
    evidence/breadth-07/evidence/cases/seed0051.mlir (1504 bytes)
  • seed0052.mlir
    evidence/breadth-07/evidence/cases/seed0052.mlir (985 bytes)
  • seed0053.mlir
    evidence/breadth-07/evidence/cases/seed0053.mlir (1144 bytes)
  • seed0054.mlir
    evidence/breadth-07/evidence/cases/seed0054.mlir (1351 bytes)
  • seed0055.mlir
    evidence/breadth-07/evidence/cases/seed0055.mlir (1052 bytes)
  • seed0056.mlir
    evidence/breadth-07/evidence/cases/seed0056.mlir (1120 bytes)
  • seed0058.mlir
    evidence/breadth-07/evidence/cases/seed0058.mlir (904 bytes)
  • seed0059.mlir
    evidence/breadth-07/evidence/cases/seed0059.mlir (1052 bytes)
  • seed0060.mlir
    evidence/breadth-07/evidence/cases/seed0060.mlir (1428 bytes)
  • seed0061.mlir
    evidence/breadth-07/evidence/cases/seed0061.mlir (1177 bytes)
  • seed0062.mlir
    evidence/breadth-07/evidence/cases/seed0062.mlir (1072 bytes)
  • seed0063.mlir
    evidence/breadth-07/evidence/cases/seed0063.mlir (1308 bytes)
  • seed0064.mlir
    evidence/breadth-07/evidence/cases/seed0064.mlir (817 bytes)
  • seed0065.mlir
    evidence/breadth-07/evidence/cases/seed0065.mlir (1332 bytes)
  • seed0066.mlir
    evidence/breadth-07/evidence/cases/seed0066.mlir (1135 bytes)
  • seed0067.mlir
    evidence/breadth-07/evidence/cases/seed0067.mlir (1076 bytes)
  • seed0068.mlir
    evidence/breadth-07/evidence/cases/seed0068.mlir (1539 bytes)
  • seed0069.mlir
    evidence/breadth-07/evidence/cases/seed0069.mlir (1072 bytes)
  • seed0070.mlir
    evidence/breadth-07/evidence/cases/seed0070.mlir (1303 bytes)
  • seed0071.mlir
    evidence/breadth-07/evidence/cases/seed0071.mlir (1365 bytes)
  • seed0072.mlir
    evidence/breadth-07/evidence/cases/seed0072.mlir (1408 bytes)
  • seed0073.mlir
    evidence/breadth-07/evidence/cases/seed0073.mlir (1177 bytes)
  • seed0074.mlir
    evidence/breadth-07/evidence/cases/seed0074.mlir (1476 bytes)
  • seed0075.mlir
    evidence/breadth-07/evidence/cases/seed0075.mlir (1485 bytes)
  • seed0076.mlir
    evidence/breadth-07/evidence/cases/seed0076.mlir (1404 bytes)
  • seed0077.mlir
    evidence/breadth-07/evidence/cases/seed0077.mlir (1284 bytes)
  • seed0078.mlir
    evidence/breadth-07/evidence/cases/seed0078.mlir (812 bytes)
  • seed0079.mlir
    evidence/breadth-07/evidence/cases/seed0079.mlir (1207 bytes)
  • seed0080.mlir
    evidence/breadth-07/evidence/cases/seed0080.mlir (1428 bytes)
  • seed0081.mlir
    evidence/breadth-07/evidence/cases/seed0081.mlir (1347 bytes)
  • seed0082.mlir
    evidence/breadth-07/evidence/cases/seed0082.mlir (1351 bytes)
  • seed0083.mlir
    evidence/breadth-07/evidence/cases/seed0083.mlir (1212 bytes)
  • seed0084.mlir
    evidence/breadth-07/evidence/cases/seed0084.mlir (1275 bytes)
  • seed0085.mlir
    evidence/breadth-07/evidence/cases/seed0085.mlir (1264 bytes)
  • seed0086.mlir
    evidence/breadth-07/evidence/cases/seed0086.mlir (1552 bytes)
  • seed0087.mlir
    evidence/breadth-07/evidence/cases/seed0087.mlir (1408 bytes)
  • seed0088.mlir
    evidence/breadth-07/evidence/cases/seed0088.mlir (1081 bytes)
  • seed0089.mlir
    evidence/breadth-07/evidence/cases/seed0089.mlir (1648 bytes)
  • seed0090.mlir
    evidence/breadth-07/evidence/cases/seed0090.mlir (1264 bytes)
  • seed0091.mlir
    evidence/breadth-07/evidence/cases/seed0091.mlir (1264 bytes)
  • seed0092.mlir
    evidence/breadth-07/evidence/cases/seed0092.mlir (1725 bytes)
  • seed0093.mlir
    evidence/breadth-07/evidence/cases/seed0093.mlir (1725 bytes)
  • seed0094.mlir
    evidence/breadth-07/evidence/cases/seed0094.mlir (1024 bytes)
  • seed0095.mlir
    evidence/breadth-07/evidence/cases/seed0095.mlir (1452 bytes)
  • seed0096.mlir
    evidence/breadth-07/evidence/cases/seed0096.mlir (1236 bytes)
  • seed0097.mlir
    evidence/breadth-07/evidence/cases/seed0097.mlir (1303 bytes)
  • seed0098.mlir
    evidence/breadth-07/evidence/cases/seed0098.mlir (1557 bytes)
  • seed0099.mlir
    evidence/breadth-07/evidence/cases/seed0099.mlir (1188 bytes)
  • seed0100.mlir
    evidence/breadth-07/evidence/cases/seed0100.mlir (1040 bytes)
  • seed200023.mlir
    evidence/breadth-07/evidence/cases/seed200023.mlir (989 bytes)
  • seed200035.mlir
    evidence/breadth-07/evidence/cases/seed200035.mlir (1273 bytes)
  • seed200041.mlir
    evidence/breadth-07/evidence/cases/seed200041.mlir (1187 bytes)
  • seed200057.mlir
    evidence/breadth-07/evidence/cases/seed200057.mlir (1085 bytes)
evidence/breadth-07/evidence/probes (4)
  • PROBE-LOG.md
    evidence/breadth-07/evidence/probes/PROBE-LOG.md (2185 bytes)
  • probe1.mlir
    evidence/breadth-07/evidence/probes/probe1.mlir (857 bytes)
  • probe3.mlir
    evidence/breadth-07/evidence/probes/probe3.mlir (931 bytes)
  • probe4.mlir
    evidence/breadth-07/evidence/probes/probe4.mlir (922 bytes)
evidence/breadth-07/pbt (1)
evidence/breadth-07/work (5)
  • probe1.mlir
    evidence/breadth-07/work/probe1.mlir (857 bytes)
  • probe2.mlir
    evidence/breadth-07/work/probe2.mlir (13 bytes)
  • probe3.mlir
    evidence/breadth-07/work/probe3.mlir (931 bytes)
  • probe4.mlir
    evidence/breadth-07/work/probe4.mlir (922 bytes)
  • rec.txt
    evidence/breadth-07/work/rec.txt (143 bytes)