← all exploratory attempts · paired baseline · show in source

breadth-13: Fabric module contents

Agent report: partial Review pending

Session: completed

docs/spec-fabric-module.md, lines 147–169

## Body whitelist `fabric.module` body may contain only: * `fabric.pe` (both `[spatial]` and `[temporal]`) * `fabric.switch` (both `[spatial]` and `[temporal]`; see `docs/spec-fabric-switch.md`) * `fabric.mem` (an optional `[spatial]` or `[temporal]` Operation Engine, an optional Local Memory Service, or both; see `docs/spec-fabric-mem.md`) * `fabric.fifo` (see `docs/spec-fabric-fifo.md`) * nested named `fabric.module` template declarations; sibling top-level declarations remain in their enclosing symbol table rather than the body * `fabric.instantiate` (binds a previously-defined fabric symbol into this scope; see `docs/spec-fabric-instantiate.md`) * `fabric.boundary` (single op covering all three boundary directions -- `[s2t]`, `[t2t]`, `[t2s]` -- between the spatial `bits` domain and the temporal `bits_tag` domain; see `docs/spec-fabric-boundary.md`) * `fabric.yield` (terminator) `builtin.unrealized_conversion_cast` is **not** in the whitelist. All fabric module values must come from a real fabric producer (a sub- module result) or from the module's entry-block arguments.

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

chosen
standalone Python generator + exit-code/diagnostic oracle
progrmr spct used
false
reason
the negative half of the property is expected rejection: the subject emits a diagnostic and no output IR, so there is no OUTPUT.generic.mlir for spectriad-check to evaluate; the verdict lives in returncode/diagnostic

Reproduction

not measured

Measured subject code coverage

pending · Instrumented coverage follow-up in progress; original pilot did not collect profiles.

Coverage-preserving minimized cases: not measured

Full structured agent result
artifacts
cases
cases/ (seed_0001..seed_0100.mlir + manifest.json)
checker
judge.py
controlled violation
controlled-violation/
generator
gen.py
readme
README.md
reproduction
run.sh 100
runs
runs/ (per-seed .stdout, .stderr, .rc)
summary
summary.json
syntax probes
work/probe/
verdicts
verdicts.json
controlled violation
evidence
controlled-violation/verdicts.json
method
re-judge two already-executed real runs with inverted expectations: one all-whitelisted body declared must-reject, one cast-bearing body declared must-accept
observed
pass
0
violation
2
type
synthetic oracle mutation (not a subject defect)
coverage
collected
false
reason
no coverage instrumentation available for the pinned remote binary; budget spent exercising the real subject
format
chosen
standalone Python generator + exit-code/diagnostic oracle
progrmr spct used
false
reason
the negative half of the property is expected rejection: the subject emits a diagnostic and no output IR, so there is no OUTPUT.generic.mlir for spectriad-check to evaluate; the verdict lives in returncode/diagnostic
interpretation changes
  • dropped fabric.fu and fabric.link from the non-whitelisted pool: they fail at parse time in this build (custom-syntax region / unregistered op), which is an invalid test rather than a property signal
  • generated bodies now consume each entry-block argument at most once, because an unrelated fabric.module single-consumer transport rule rejected otherwise-valid positive cases
passage
docs/spec-fabric-module.md:147-169 (fabric.module body whitelist)
potential subject bugs
none recorded
property
negative
the same body plus one non-whitelisted op is rejected, returncode != 0, diagnostic '<op> op is not allowed inside fabric.module'
positive
a fabric.module body composed only of whitelisted ops (well-formed otherwise) is accepted, returncode 0
revision
48615bc5925ef4b9db8b4550b5d4322933cf4b7b
sampling limits
bit widths
  • 1
  • 4
  • 8
  • 16
  • 32
  • 64
entry block args
1-4
fifo max depth
  • 1
  • 2
  • 4
  • 8
  • 16
negative fraction
~0.5 (59 negative / 41 positive observed)
note
all bounds are test conventions, not source requirements
seed range
1..100 (random.Random(seed))
seeds
100
whitelisted body ops per case
0-3
status
partial
subject
binary
/home/blimpan/blimpan/spectriad-loom-head/loom/build/tools/loom/loom
binary sha256
85d37aaf871913771571f91d085fb36ebe2857f8a6d74e2e34196024d1621057
command
ssh bibim 'taskset -c 79 .../loom --mlir-print-op-generic' < CASE.mlir
oracle signal
process returncode + verifier diagnostic text
tested obligations
  • fabric.fifo permitted in body
  • fabric.switch [spatial] permitted in body
  • fabric.boundary [s2t] permitted in body
  • nested named fabric.module declaration permitted in body
  • fabric.yield terminator permitted / implicit
  • builtin.unrealized_conversion_cast NOT in whitelist (explicit passage clause)
  • arbitrary non-fabric ops rejected: arith.constant, arith.addi, arith.muli, memref.alloc, func.call, func.func
  • non-whitelisted fabric op rejected: fabric.system
untested obligations
  • fabric.pe [spatial]/[temporal] as body member (requires inner fabric.fu or fabric.instantiate; out of budget)
  • fabric.mem (operation engine, local memory service, both)
  • fabric.instantiate (zero-arg form blocked by unrelated non-empty domain-slot-bindings rule)
  • fabric.switch [temporal]
  • fabric.boundary [t2t] and [t2s]
  • sibling top-level declarations remain in enclosing symbol table clause
  • value-provenance sentence beyond the cast prohibition
verdict counts
by case class
negative arith.addi
11
negative arith.constant
4
negative arith.muli
4
negative builtin.unrealized conversion cast
12
negative fabric.system
10
negative func.call
4
negative func.func
6
negative memref.alloc
8
positive all whitelisted
41
invalid
0
missing
0
pass
100
violation
0

Published evidence

evidence/breadth-13 (7)
  • README.md
    evidence/breadth-13/README.md (5656 bytes)
  • RESULT.json
    evidence/breadth-13/RESULT.json (4484 bytes)
  • gen.py
    evidence/breadth-13/gen.py (6452 bytes)
  • judge.py
    evidence/breadth-13/judge.py (3150 bytes)
  • run.sh
    evidence/breadth-13/run.sh (515 bytes)
  • summary.json
    evidence/breadth-13/summary.json (448 bytes)
  • verdicts.json
    evidence/breadth-13/verdicts.json (40793 bytes)
evidence/breadth-13/cases (101)
evidence/breadth-13/controlled-violation (1)
  • verdicts.json
    evidence/breadth-13/controlled-violation/verdicts.json (842 bytes)
evidence/breadth-13/controlled-violation/cases (3)
  • manifest.json
    evidence/breadth-13/controlled-violation/cases/manifest.json (453 bytes)
  • seed_0001.mlir
    evidence/breadth-13/controlled-violation/cases/seed_0001.mlir (92 bytes)
  • seed_0002.mlir
    evidence/breadth-13/controlled-violation/cases/seed_0002.mlir (60 bytes)
evidence/breadth-13/controlled-violation/runs (6)
  • seed_0001.rc
    evidence/breadth-13/controlled-violation/runs/seed_0001.rc (2 bytes)
  • seed_0001.stderr
    evidence/breadth-13/controlled-violation/runs/seed_0001.stderr (383 bytes)
  • seed_0001.stdout
    evidence/breadth-13/controlled-violation/runs/seed_0001.stdout (0 bytes)
  • seed_0002.rc
    evidence/breadth-13/controlled-violation/runs/seed_0002.rc (2 bytes)
  • seed_0002.stderr
    evidence/breadth-13/controlled-violation/runs/seed_0002.stderr (0 bytes)
  • seed_0002.stdout
    evidence/breadth-13/controlled-violation/runs/seed_0002.stdout (201 bytes)
evidence/breadth-13/coverage (4)
evidence/breadth-13/runs (300)
evidence/breadth-13/work/probe (8)
  • p1_fifo.mlir
    evidence/breadth-13/work/probe/p1_fifo.mlir (199 bytes)
  • p2_nested.mlir
    evidence/breadth-13/work/probe/p2_nested.mlir (73 bytes)
  • p3_switch.mlir
    evidence/breadth-13/work/probe/p3_switch.mlir (280 bytes)
  • p4_inst.mlir
    evidence/breadth-13/work/probe/p4_inst.mlir (114 bytes)
  • p5_bad_arith.mlir
    evidence/breadth-13/work/probe/p5_bad_arith.mlir (70 bytes)
  • p6_boundary.mlir
    evidence/breadth-13/work/probe/p6_boundary.mlir (266 bytes)
  • q1_inst.mlir
    evidence/breadth-13/work/probe/q1_inst.mlir (109 bytes)
  • q2_pe.mlir
    evidence/breadth-13/work/probe/q2_pe.mlir (212 bytes)