From e80648105487d0ff458a7bebeff4f0f9d04a25ec Mon Sep 17 00:00:00 2001 From: chao <945665952@qq.com> Date: Tue, 15 Sep 2026 16:41:52 +0800 Subject: [PATCH 1/5] feat(agentic-circuit): transact slot release in rules Add rule-owned slot release across the Python frontend, ACIR lowering, QueueGraph, and gfsim transaction protocol. Curate public state examples and retain focused semantic sources as integration fixtures. --- .../include/acir/CodeGen/QueueGraphPlan.h | 9 + .../acir/Dialect/ACIR/ACIRAttributes.td | 4 +- .../acir/include/acir/Dialect/ACIR/ACIROps.td | 14 +- .../acir/lib/CodeGen/QueueGraphGenerator.cpp | 205 +++++++++- compiler/acir/lib/CodeGen/QueueGraphPlan.cpp | 66 ++- compiler/acir/lib/Dialect/ACIR/ACIROps.cpp | 100 ++++- .../acir/lib/Dialect/ACIR/ACIRResources.cpp | 6 + compiler/acir/lib/Transforms/LowerRules.cpp | 35 +- docs/acir/spec/agentic-circuit.md | 34 +- docs/acir/spec/agentic-circuit.zh-CN.md | 32 +- .../acir/verification/ir-coverage.md | 33 +- docs/development/agent-frontend-guide.md | 6 + docs/gates/decision_status_v6.md | 27 +- .../commands.txt | 18 + .../summary.md | 68 ++++ .../commands.txt | 8 + .../summary.md | 46 +++ docs/reference/language.md | 2 +- docs/rfcs/pyc6-decisions.md | 95 ++++- examples/agentic-circuit/state/README.md | 165 ++------ .../state/slot_rule_mailbox.py | 45 ++ .../state/table_multi_writer_issue.mlir | 97 ----- .../src/agentic_circuit/_queue_frontend.py | 385 ++++++++++++++++-- schemas/agentic-circuit/contracts/acir.yaml | 1 + .../diagnostics/diagnostics.json | 2 + .../agentic-circuit/diagnostics/registry.json | 2 + simulator/gfsim/include/gfsim/queue_blocks.h | 118 +++++- .../agentic-circuit/gfsim/QueueBlocksTest.cpp | 113 +++++ .../slot_rule_transaction/architecture.py | 23 ++ .../architecture.py | 28 ++ .../e2e/fixtures}/state/branch_join_state.py | 0 .../e2e/fixtures}/state/branch_local_state.py | 0 .../e2e/fixtures}/state/circular_rob.py | 0 .../state/consume_only_completion.py | 0 .../fixtures}/state/indexed_branch_join.py | 0 .../fixtures}/state/indexed_variable_array.py | 0 .../state/inferred_multi_state_module.py | 0 .../fixtures}/state/multi_state_allocate.py | 0 .../fixtures}/state/optional_output_state.py | 0 .../e2e/fixtures}/state/rob.py | 0 .../fixtures}/state/shared_indexed_rules.py | 0 .../fixtures/state/shared_slot_snapshot.py | 30 ++ .../fixtures}/state/state_driven_retire.py | 0 .../fixtures}/state/table_multi_input_rule.py | 0 .../fixtures}/state/variable_accumulator.py | 0 .../agentic-circuit/e2e/test_pyc_backend.py | 3 +- .../agentic-circuit/e2e/test_queue_codegen.py | 49 +-- .../e2e/test_slot_rule_transaction.py | 191 +++++++++ .../agentic-circuit/ACIR/table-invalid.mlir | 10 + .../rule-slot-release-lowering.mlir | 28 ++ .../python_frontend/test_jit_blocks.py | 5 +- .../python_frontend/test_queue_codegen.py | 5 +- .../python_frontend/test_queue_frontend.py | 138 +++++++ 53 files changed, 1865 insertions(+), 381 deletions(-) create mode 100644 docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt create mode 100644 docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md create mode 100644 docs/gates/logs/20260915-state-example-curation/commands.txt create mode 100644 docs/gates/logs/20260915-state-example-curation/summary.md create mode 100644 examples/agentic-circuit/state/slot_rule_mailbox.py delete mode 100644 examples/agentic-circuit/state/table_multi_writer_issue.mlir create mode 100644 tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction/architecture.py create mode 100644 tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction_nested/architecture.py rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/branch_join_state.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/branch_local_state.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/circular_rob.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/consume_only_completion.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/indexed_branch_join.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/indexed_variable_array.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/inferred_multi_state_module.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/multi_state_allocate.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/optional_output_state.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/rob.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/shared_indexed_rules.py (100%) create mode 100644 tests/integration/agentic-circuit/e2e/fixtures/state/shared_slot_snapshot.py rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/state_driven_retire.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/table_multi_input_rule.py (100%) rename {examples/agentic-circuit => tests/integration/agentic-circuit/e2e/fixtures}/state/variable_accumulator.py (100%) create mode 100644 tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py create mode 100644 tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir diff --git a/compiler/acir/include/acir/CodeGen/QueueGraphPlan.h b/compiler/acir/include/acir/CodeGen/QueueGraphPlan.h index ed3a8586e..618ed0127 100644 --- a/compiler/acir/include/acir/CodeGen/QueueGraphPlan.h +++ b/compiler/acir/include/acir/CodeGen/QueueGraphPlan.h @@ -193,6 +193,13 @@ struct QueueWriterArbitrationPlan { bool operator==(const QueueWriterArbitrationPlan &) const = default; }; +struct SlotReleaseEffectPlan { + std::string slot; + std::string when; + + bool operator==(const SlotReleaseEffectPlan &) const = default; +}; + struct QueueBlockPlan { std::string kind; std::string name; @@ -227,6 +234,7 @@ struct QueueBlockPlan { std::string guard; std::vector stateWrites; std::vector stateReservations; + std::vector slotReleases; std::vector outputPresence; std::vector activationSources; std::vector transactionResources; @@ -399,6 +407,7 @@ enum class QueueActivationNodeKind { Queue, Block, Table, + Slot, }; struct QueueActivationNodePlan { diff --git a/compiler/acir/include/acir/Dialect/ACIR/ACIRAttributes.td b/compiler/acir/include/acir/Dialect/ACIR/ACIRAttributes.td index 8d811cf9d..360bbd057 100644 --- a/compiler/acir/include/acir/Dialect/ACIR/ACIRAttributes.td +++ b/compiler/acir/include/acir/Dialect/ACIR/ACIRAttributes.td @@ -82,12 +82,14 @@ def ACIR_ActivationResourceKind_InputQueue def ACIR_ActivationResourceKind_OutputQueue : I32EnumAttrCase<"OutputQueue", 1, "output_queue">; def ACIR_ActivationResourceKind_State : I32EnumAttrCase<"State", 2, "state">; +def ACIR_ActivationResourceKind_Slot : I32EnumAttrCase<"Slot", 3, "slot">; def ACIR_ActivationResourceKind : I32EnumAttr<"ActivationResourceKind", "typed rule activation/transaction resource kind", [ACIR_ActivationResourceKind_InputQueue, ACIR_ActivationResourceKind_OutputQueue, - ACIR_ActivationResourceKind_State]> { + ACIR_ActivationResourceKind_State, + ACIR_ActivationResourceKind_Slot]> { let genSpecializedAttr = 0; let cppNamespace = "::acir::ac"; } diff --git a/compiler/acir/include/acir/Dialect/ACIR/ACIROps.td b/compiler/acir/include/acir/Dialect/ACIR/ACIROps.td index 8c2f67f58..8cca000a6 100644 --- a/compiler/acir/include/acir/Dialect/ACIR/ACIROps.td +++ b/compiler/acir/include/acir/Dialect/ACIR/ACIROps.td @@ -1032,6 +1032,14 @@ def ACIR_SlotReleaseOp : ACIR_Op<"slot.release", [ let assemblyFormat = "$slot `when` $when attr-dict"; } +def ACIR_SlotProposeReleaseOp : ACIR_Op<"slot.propose_release", [ + DeclareOpInterfaceMethods + ]> { + let arguments = (ins FlatSymbolRefAttr:$slot, ACIR_VarType:$when); + let hasVerifier = 1; + let assemblyFormat = "$slot `when` $when attr-dict `:` qualified(type($when))"; +} + def ACIR_SlotYieldOp : ACIR_Op<"slot.yield", [Pure, Terminator]> { let arguments = (ins ACIR_VarType:$value); let assemblyFormat = "$value attr-dict `:` qualified(type($value))"; @@ -1060,7 +1068,9 @@ def ACIR_FeedbackYieldOp : ACIR_Op<"feedback.yield", [ }]; } -def ACIR_ScopeOp : ACIR_Op<"scope", [SingleBlock, RecursiveMemoryEffects]> { +def ACIR_ScopeOp : ACIR_Op<"scope", [ + SymbolTable, SingleBlock, RecursiveMemoryEffects + ]> { let arguments = (ins SymbolNameAttr:$sym_name, Variadic:$inputs); let results = (outs Variadic:$outputs); @@ -1227,7 +1237,7 @@ def ACIR_SystemOp : ACIR_Op<"system", [Symbol]> { } def ACIR_ModuleOp : ACIR_Op<"module", [ - Symbol, FunctionOpInterface, IsolatedFromAbove, SingleBlock, + Symbol, SymbolTable, FunctionOpInterface, IsolatedFromAbove, SingleBlock, RegionKindInterface, HasOnlyGraphRegion ]> { let arguments = (ins SymbolNameAttr:$sym_name, diff --git a/compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp b/compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp index dc78b3f5f..9847bdd7f 100644 --- a/compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp +++ b/compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp @@ -2118,6 +2118,9 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { const bool firingModule = specialization && !specialization->blocks.empty() && llvm::all_of(specialization->blocks, [&](const QueueBlockPlan &block) { + if (block.kind == "slot") + return block.inputs.size() == 1 && block.outputs.empty() && + block.yields.size() == 1 && !block.slot.empty(); return block.kind == "firing" && llvm::all_of(block.stateWrites, [&](const StateWritePlan &write) { @@ -2165,7 +2168,7 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { if (!specialization || (!pureTransform && !conditionalTransform && !firingModule && !nestedWrapper && !mixedNested) || - !localShape || !specialization->slots.empty() || + !localShape || !specialization->memoryInstances.empty()) return generatorError( "structured QueueGraph specialization requires a pure transform, " @@ -2343,6 +2346,20 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { return generatorError("root activation block has no runtime object"); return found->second; } + if (node.kind == QueueActivationNodeKind::Slot) { + if (node.index >= plan.slots.size()) + return generatorError("root activation slot index is out of range"); + const std::string &name = plan.slots[node.index].name; + auto block = llvm::find_if(plan.blocks, [&](const QueueBlockPlan &candidate) { + return candidate.kind == "slot" && candidate.slot == name; + }); + if (block == plan.blocks.end()) + return generatorError("root activation slot has no runtime object"); + auto found = blockIds.find(&*block); + if (found == blockIds.end()) + return generatorError("root activation slot block is not dispatched"); + return found->second; + } return generatorError( "structured root activation contains an unsupported node kind"); }; @@ -2438,6 +2455,23 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { return generatorError("activation Table index is out of range"); return objectIds[local]; } + if (node.kind == QueueActivationNodeKind::Slot) { + if (node.index >= specialization.slots.size()) + return generatorError("activation slot index is out of range"); + const std::string &name = specialization.slots[node.index].name; + auto block = llvm::find_if( + specialization.blocks, [&](const QueueBlockPlan &candidate) { + return candidate.kind == "slot" && candidate.slot == name; + }); + if (block == specialization.blocks.end()) + return generatorError("activation slot block is unresolved"); + const uint64_t ordinal = + static_cast(block - specialization.blocks.begin()); + const uint64_t local = blockOffset + ordinal; + if (local >= objectIds.size()) + return generatorError("activation slot object is out of range"); + return objectIds[local]; + } return generatorError("activation node kind is unsupported"); }; for (const QueueActivationEdgePlan &edge : specialization.activationEdges) { @@ -2604,6 +2638,15 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { tableMembers.push_back( uniqueIdentifier("state_" + table.name, usedTableMembers) + "_"); } + std::vector slotTypes; + llvm::StringMap slotIndices; + for (auto [index, slot] : llvm::enumerate(specialization.slots)) { + auto type = cppType(slot.payloadType); + if (!type) + return type.takeError(); + slotIndices[slot.name] = index; + slotTypes.push_back(std::move(*type)); + } llvm::StringMap portTypes; llvm::StringMap portParameters = interfaceParameterNames(specialization); @@ -2665,6 +2708,22 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { }; for (auto [blockIndex, firing] : llvm::enumerate(specialization.blocks)) { + if (firing.kind == "slot") { + if (firing.yields.size() != 1) + return generatorError("structured slot release policy is malformed"); + output << "struct " << policyName(blockIndex) << " {\n"; + for (auto [slotIndex, slot] : + llvm::enumerate(specialization.slots)) + output << " const gfsim::SlotState<" << slotTypes[slotIndex] + << "> *slot_" << identifier(slot.name) << "{};\n"; + output << " bool operator()(gfsim::Epoch epoch) const {\n"; + auto body = emitExpressionBody(specialization, firing, + firing.yields.front(), 4, true); + if (!body) + return body.takeError(); + output << *body << " }\n};\n\n"; + continue; + } const std::vector tables = tableBindings(firing); const std::vector readOnlyTables = readOnlyTableBindings(firing); std::vector writeTypes; @@ -2672,7 +2731,7 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { writeTypes.push_back(tableTypes[table]); const std::vector inputTypes = queueTypes(firing.inputs); const std::vector outputTypes = queueTypes(firing.outputs); - const bool oneOwner = tables.size() == 1; + const bool oneOwner = tables.size() == 1 && firing.slotReleases.empty(); QueueBlockPlan evaluation = firing; std::vector additional{firing.guard}; @@ -2737,6 +2796,13 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { additional.push_back(reservation->index); } } + for (const SlotReleaseEffectPlan &release : firing.slotReleases) { + if (tupleHasValue) + tupleResult.append(", "); + tupleResult.append(release.when); + tupleHasValue = true; + additional.push_back(release.when); + } tupleResult.append(", ").append(firing.guard).push_back('}'); const std::string &primaryValue = !firing.stateWrites.empty() ? firing.stateWrites.front().index @@ -2763,6 +2829,9 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { output << " const gfsim::SimTable<" << tableTypes[table] << "> *read_table_" << identifier(specialization.tables[table].name) << "{};\n"; + for (auto [slotIndex, slot] : llvm::enumerate(specialization.slots)) + output << " const gfsim::SlotState<" << slotTypes[slotIndex] + << "> *slot_" << identifier(slot.name) << "{};\n"; output << " std::optional<" << planType << "> operator()(gfsim::Epoch epoch, "; if (oneOwner) { @@ -2833,6 +2902,13 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { bindingHasValue = true; } } + for (size_t releaseIndex = 0; releaseIndex < firing.slotReleases.size(); + ++releaseIndex) { + if (bindingHasValue) + output << ", "; + output << "slot_release_" << releaseIndex; + bindingHasValue = true; + } output << ", rule_condition] = [&]() {\n" << *body << " }();\n" << " if (!rule_condition)\n return std::nullopt;\n"; @@ -2910,6 +2986,15 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { } } } + if (!oneOwner) { + output << "}, {"; + for (size_t releaseIndex = 0; + releaseIndex < firing.slotReleases.size(); ++releaseIndex) { + if (releaseIndex) + output << ", "; + output << "slot_release_" << releaseIndex; + } + } output << "}};\n }\n};\n\n"; for (auto [ownerIndex, tableIndex] : llvm::enumerate(tables)) { const TablePlan &table = specialization.tables[tableIndex]; @@ -2956,18 +3041,49 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { << "\", table_" << index << "_id, &scope_, " << *storage << ")"; } for (auto [blockIndex, firing] : llvm::enumerate(specialization.blocks)) { + if (firing.kind == "slot") { + auto slotIndex = slotIndices.find(firing.slot); + if (slotIndex == slotIndices.end() || firing.inputs.size() != 1) + return generatorError("structured slot declaration is missing"); + std::string policy = policyName(blockIndex) + "{"; + for (size_t index = 0; index < specialization.slots.size(); ++index) { + if (index) + policy.append(", "); + policy.append("&slot_state_") + .append(std::to_string(index)) + .append("_"); + } + policy.push_back('}'); + output << ",\n " << firingSymbols[blockIndex] << "_(\"slot_" + << firing.name << "\", block_" << blockIndex + << "_id, &scope_, " << portParameters.lookup(firing.inputs.front()) + << ", slot_state_" << slotIndex->getValue() << "_, " << policy + << ")"; + continue; + } const std::vector tables = tableBindings(firing); const std::vector readOnlyTables = readOnlyTableBindings(firing); std::string policy = policyName(blockIndex) + "{"; + bool hasPolicyMember = false; for (auto [index, table] : llvm::enumerate(readOnlyTables)) { - if (index) + if (hasPolicyMember) policy.append(", "); policy.append("&").append(tableMembers[table]); + hasPolicyMember = true; + } + for (size_t slotIndex = 0; slotIndex < specialization.slots.size(); + ++slotIndex) { + if (hasPolicyMember) + policy.append(", "); + policy.append("&slot_state_") + .append(std::to_string(slotIndex)) + .append("_"); + hasPolicyMember = true; } policy.push_back('}'); output << ",\n " << firingSymbols[blockIndex] << "_(\"firing_" << firing.name << "\", block_" << blockIndex << "_id, &scope_, "; - if (tables.size() == 1) { + if (tables.size() == 1 && firing.slotReleases.empty()) { output << tableMembers[tables.front()] << ", "; } else { output << "std::tuple{"; @@ -3006,6 +3122,16 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { output << ", "; output << mergeName(blockIndex, index) << "{}"; } + output << "}, nullptr, std::vector{"; + for (auto [releaseIndex, release] : + llvm::enumerate(firing.slotReleases)) { + auto slotIndex = slotIndices.find(release.slot); + if (slotIndex == slotIndices.end()) + return generatorError("structured slot release is missing"); + if (releaseIndex) + output << ", "; + output << "&slot_state_" << slotIndex->getValue() << "_"; + } output << "})"; } } @@ -3028,11 +3154,23 @@ generateStructuredQueueGraphCpp(const QueueGraphPlan &plan) { for (auto [index, type] : llvm::enumerate(tableTypes)) output << " gfsim::SimTable<" << type << "> " << tableMembers[index] << ";\n"; + for (auto [index, type] : llvm::enumerate(slotTypes)) + output << " gfsim::SlotState<" << type << "> slot_state_" << index + << "_;\n"; for (auto [blockIndex, firing] : llvm::enumerate(specialization.blocks)) { + if (firing.kind == "slot") { + auto slotIndex = slotIndices.find(firing.slot); + if (slotIndex == slotIndices.end()) + return generatorError("structured slot member is missing"); + output << " gfsim::QueueSlot<" << slotTypes[slotIndex->getValue()] + << ", " << policyName(blockIndex) << "> " + << firingSymbols[blockIndex] << "_;\n"; + continue; + } const std::vector tables = tableBindings(firing); const std::vector inputTypes = queueTypes(firing.inputs); const std::vector outputTypes = queueTypes(firing.outputs); - if (tables.size() == 1) { + if (tables.size() == 1 && firing.slotReleases.empty()) { output << " gfsim::QueueTableTransition<" << policyName(blockIndex) << ", " << tableTypes[tables.front()] << ", " << tupleType(inputTypes) << ", " << tupleType(outputTypes) @@ -4131,7 +4269,7 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { if (block->kind == "firing") { const std::vector ownerTables = stateOwnerTables(plan, *block); - if (ownerTables.size() != 1) { + if (ownerTables.size() != 1 || !block->slotReleases.empty()) { const std::vector readTables = readOnlyTables(plan, *block); std::vector tableTypes; @@ -4224,6 +4362,10 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { additional.push_back(reservation->index); } } + for (const SlotReleaseEffectPlan &release : block->slotReleases) { + appendTupleValue(release.when); + additional.push_back(release.when); + } appendTupleValue(block->guard); tupleResult.push_back('}'); const std::string &primaryValue = @@ -4261,6 +4403,13 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { output << " const gfsim::SimTable<" << *readType << "> *read_table_" << identifier(readTable->name) << "{};\n"; } + for (const SlotPlan &slot : plan.slots) { + auto type = cppType(slot.payloadType); + if (!type) + return type.takeError(); + output << " const gfsim::SlotState<" << *type << "> *slot_" + << identifier(slot.name) << "{};\n"; + } for (const TableMatchPlan &match : plan.tableMatches) output << " " << identifier(match.name) << "_cache *" << identifier(match.name) << "{};\n"; @@ -4321,6 +4470,13 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { bindingHasValue = true; } } + for (size_t releaseIndex = 0; + releaseIndex < block->slotReleases.size(); ++releaseIndex) { + if (bindingHasValue) + output << ", "; + output << "slot_release_" << releaseIndex; + bindingHasValue = true; + } if (bindingHasValue) output << ", "; output << "rule_condition] = [&]() {\n" @@ -4391,6 +4547,13 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { } } } + output << "}, {"; + for (size_t releaseIndex = 0; + releaseIndex < block->slotReleases.size(); ++releaseIndex) { + if (releaseIndex) + output << ", "; + output << "slot_release_" << releaseIndex; + } output << "}};\n }\n"; output << " void accepted(gfsim::Epoch epoch) {\n"; for (const TableSelectionPlan &selection : plan.tableSelections) @@ -5163,6 +5326,15 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { policy.append("&").append(table->getValue()); hasPolicyMember = true; } + for (auto [slotIndex, slot] : llvm::enumerate(plan.slots)) { + (void)slot; + if (hasPolicyMember) + policy.append(", "); + policy.append("&slot_") + .append(std::to_string(slotIndex)) + .append("_state_"); + hasPolicyMember = true; + } for (const TableMatchPlan &match : plan.tableMatches) { if (hasPolicyMember) policy.append(", "); @@ -5178,7 +5350,7 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { policy.push_back('}'); const std::vector ownerTables = stateOwnerTables(plan, *block); - if (ownerTables.size() != 1) { + if (ownerTables.size() != 1 || !block->slotReleases.empty()) { std::string tables; std::string modes; std::string merges; @@ -5201,13 +5373,28 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { .append(std::to_string(ownerIndex)) .append("{}"); } + std::string releaseResources; + for (const SlotReleaseEffectPlan &release : block->slotReleases) { + auto slot = llvm::find_if(plan.slots, [&](const SlotPlan &candidate) { + return candidate.name == release.slot; + }); + if (slot == plan.slots.end()) + return generatorError("state firing slot release is missing"); + if (!releaseResources.empty()) + releaseResources.append(", "); + releaseResources.append("&slot_") + .append(std::to_string(std::distance(plan.slots.begin(), slot))) + .append("_state_"); + } appendInitializer( initializers, member, "(\"", instanceName, "\", ", blockIds[key], ", ", *parent, ", std::tuple{", tables, "}, std::tuple{", inputs, "}, std::tuple{", outputs, "}, ", ownerTables.empty() ? "std::array{" : "std::array{", - modes, "}, ", policy, ", std::tuple{", merges, "})"); + modes, "}, ", policy, ", std::tuple{", merges, + "}, nullptr, std::vector{", + releaseResources, "})"); } else { auto table = tableMembers.find(block->table); if (table == tableMembers.end()) @@ -5703,7 +5890,7 @@ llvm::Expected generateQueueGraphCpp(const QueueGraphPlan &plan) { if (block->kind == "firing") { const std::vector ownerTables = stateOwnerTables(plan, *block); - if (ownerTables.size() != 1) { + if (ownerTables.size() != 1 || !block->slotReleases.empty()) { output << " gfsim::QueueStateTransition<" << blockSymbol(index) << "_policy, std::tuple<"; for (auto [ownerIndex, table] : llvm::enumerate(ownerTables)) { diff --git a/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp b/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp index fcc9fefa0..9cee823f6 100644 --- a/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp +++ b/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp @@ -1347,6 +1347,15 @@ extractExpressions(mlir::Region ®ion, QueueBlockPlan &plan, } continue; } + if (auto release = + mlir::dyn_cast(operation)) { + auto when = values.find(release.getWhen()); + if (when == values.end()) + return planError("slot release guard is not a known firing value"); + plan.slotReleases.push_back( + {release.getSlot().str(), when->second}); + continue; + } if (auto match = mlir::dyn_cast(operation)) { QueueBlockPlan nested; llvm::SmallVector captures; @@ -1682,6 +1691,8 @@ llvm::StringRef activationKindName(QueueActivationNodeKind kind) { return "block"; case QueueActivationNodeKind::Table: return "table"; + case QueueActivationNodeKind::Slot: + return "slot"; } llvm_unreachable("unknown Queue activation node kind"); } @@ -1717,6 +1728,14 @@ std::optional tableActivationNode(const QueueGraphPlan &plan, return std::nullopt; } +std::optional slotActivationNode(const QueueGraphPlan &plan, + llvm::StringRef name) { + for (auto [index, slot] : llvm::enumerate(plan.slots)) + if (slot.name == name) + return ActivationNode{QueueActivationNodeKind::Slot, index}; + return std::nullopt; +} + void collectExpressionTables(const QueueExpressionPlan &expression, llvm::StringSet<> &tables) { if (!expression.table.empty()) @@ -1762,6 +1781,12 @@ llvm::Expected inferActivation(const QueueGraphPlan &plan) { return planError("activation Table is unresolved"); return *node; } + if (resource.kind == "slot") { + auto node = slotActivationNode(plan, resource.resource); + if (!node) + return planError("activation slot is unresolved"); + return *node; + } return planError("activation resource kind is unsupported"); }; std::vector wakeSources; @@ -1885,8 +1910,12 @@ extractRuleResources(mlir::Operation *operation, llvm::StringRef name) { case ac::ActivationResourceKind::State: resource.kind = "state"; break; + case ac::ActivationResourceKind::Slot: + resource.kind = "slot"; + break; } - if (kind.getValue() == ac::ActivationResourceKind::State) { + if (kind.getValue() == ac::ActivationResourceKind::State || + kind.getValue() == ac::ActivationResourceKind::Slot) { auto symbol = record.getAs("resource"); if (!symbol) return planError("state activation resource is missing"); @@ -2149,6 +2178,25 @@ llvm::Error groupMultiSelectionReads(QueueGraphPlan &plan) { return llvm::Error::success(); } +void materializeCaptureOnlySlots(QueueGraphPlan &plan) { + for (const SlotPlan &slot : plan.slots) { + if (llvm::any_of(plan.blocks, [&](const QueueBlockPlan &block) { + return block.kind == "slot" && block.slot == slot.name; + })) + continue; + QueueBlockPlan capture{"slot", slot.name + "__capture", slot.scope, + {slot.input}, {}}; + capture.lexicalOrder = plan.blocks.size() + plan.moduleInstances.size(); + capture.slot = slot.name; + capture.yields = {"release_disabled"}; + QueueExpressionPlan disabled{"release_disabled", "constant", "i1", {}}; + disabled.literal = "false"; + capture.expressions.push_back(std::move(disabled)); + capture.sourceProvenance = slot.sourceProvenance; + plan.blocks.push_back(std::move(capture)); + } +} + class Extractor { public: explicit Extractor(mlir::ModuleOp module) : module(module) {} @@ -2212,6 +2260,7 @@ class Extractor { return std::move(error); if (auto error = groupMultiSelectionReads(plan)) return std::move(error); + materializeCaptureOnlySlots(plan); if (auto error = resolveWriterPriorities(plan)) return std::move(error); if (auto error = materializeActivation(plan)) @@ -2411,6 +2460,7 @@ class Extractor { return std::move(error); if (auto error = groupMultiSelectionReads(nested.plan)) return std::move(error); + materializeCaptureOnlySlots(nested.plan); if (auto error = resolveWriterPriorities(nested.plan)) return std::move(error); auto returned = mlir::dyn_cast(body.getTerminator()); @@ -5291,12 +5341,14 @@ llvm::Error verifyQueueGraphPlan(const QueueGraphPlan &plan) { continue; if (!firingPriorities.insert(block.priority).second) return planError("firing arbitration priorities must be unique"); - if (block.stateWrites.empty() && block.outputs.empty()) + if (block.stateWrites.empty() && block.slotReleases.empty() && + block.outputs.empty()) return planError("outputless firing must update state"); if (block.guard.empty() || block.yields.size() != block.outputs.size() || block.depths.size() != block.outputs.size() || block.latencies.size() != block.outputs.size() || - (block.inputs.empty() && block.outputs.empty())) + (block.inputs.empty() && block.outputs.empty() && + block.slotReleases.empty())) return planError( "table firing metadata is incomplete or conflicting for '" + block.name + "' (writes=" + std::to_string(block.stateWrites.size()) + @@ -6914,6 +6966,9 @@ llvm::Error verifyQueueGraphPlan(const QueueGraphPlan &plan) { } if (block.kind == "slot" && !slotNames.contains(block.slot)) return planError("slot block references unknown slot"); + for (const SlotReleaseEffectPlan &release : block.slotReleases) + if (!slotNames.contains(release.slot) || release.when.empty()) + return planError("firing slot release metadata is invalid"); for (const QueueExpressionPlan &expression : block.expressions) if (expression.kind == "table_get" && !tables.contains(expression.table)) return planError("table.get expression references unknown table"); @@ -7291,6 +7346,10 @@ llvm::Expected QueueGraphPlan::canonicalJson() const { {"source", reservation.source}, {"table", reservation.table}}); } + llvm::json::Array slotReleases; + for (const SlotReleaseEffectPlan &release : block.slotReleases) + slotReleases.push_back(llvm::json::Object{{"slot", release.slot}, + {"when", release.when}}); llvm::json::Array outputPresence; for (const OutputPresencePlan &output : block.outputPresence) outputPresence.push_back(llvm::json::Object{{"ordinal", output.ordinal}, @@ -7317,6 +7376,7 @@ llvm::Expected QueueGraphPlan::canonicalJson() const { {"table_index", block.tableIndex}, {"table_value", block.tableValue}, {"slot", block.slot}, + {"slot_releases", std::move(slotReleases)}, {"name", block.name}, {"no_dependency", block.noDependency}, {"endpoint_ordinal", block.endpointOrdinal}, diff --git a/compiler/acir/lib/Dialect/ACIR/ACIROps.cpp b/compiler/acir/lib/Dialect/ACIR/ACIROps.cpp index a7fa5a630..7d68b89d4 100644 --- a/compiler/acir/lib/Dialect/ACIR/ACIROps.cpp +++ b/compiler/acir/lib/Dialect/ACIR/ACIROps.cpp @@ -71,6 +71,16 @@ static DictionaryAttr activationStateResource(MLIRContext *context, return builder.getDictionaryAttr(fields); } +static DictionaryAttr activationSlotResource(MLIRContext *context, + StringRef resource) { + Builder builder(context); + NamedAttrList fields; + fields.set("kind", ActivationResourceKindAttr::get( + context, ActivationResourceKind::Slot)); + fields.set("resource", FlatSymbolRefAttr::get(context, resource)); + return builder.getDictionaryAttr(fields); +} + static std::optional constantVarBool(Value value) { auto constant = value.getDefiningOp(); auto integer = @@ -152,6 +162,8 @@ static LogicalResult verifyActivationEvidence(Operation *operation, } llvm::StringSet<> sourceState; llvm::StringSet<> transactionState; + llvm::StringSet<> sourceSlots; + llvm::StringSet<> transactionSlots; body.walk([&](Operation *nested) { FlatSymbolRefAttr resource; if (auto read = dyn_cast(nested)) @@ -170,6 +182,16 @@ static LogicalResult verifyActivationEvidence(Operation *operation, expectedSources.push_back(activationStateResource(operation->getContext(), resource.getValue())); }); + body.walk([&](SlotGetOp get) { + if (sourceSlots.insert(get.getSlot()).second) + expectedSources.push_back( + activationSlotResource(operation->getContext(), get.getSlot())); + }); + body.walk([&](SlotProposeReleaseOp release) { + if (transactionSlots.insert(release.getSlot()).second) + expectedTransaction.push_back( + activationSlotResource(operation->getContext(), release.getSlot())); + }); if (sources != builder.getArrayAttr(expectedSources) || transaction != builder.getArrayAttr(expectedTransaction) || initiallyActive.getValue() != inputs.empty()) @@ -272,6 +294,29 @@ verifyTypedRuleSummary(Operation *operation, ValueRange inputs, expectedPresence.push_back(builder.getDictionaryAttr(output)); } + llvm::StringSet<> readSlots; + body.walk([&](SlotGetOp get) { + if (!readSlots.insert(get.getSlot()).second) + return; + NamedAttrList effect; + effect.set("kind", RuleEffectKindAttr::get(operation->getContext(), + RuleEffectKind::StateRead)); + effect.set("resource", get.getSlotAttr()); + effect.set("guard_kind", RuleGuardKindAttr::get( + operation->getContext(), RuleGuardKind::Always)); + expectedEffects.push_back(builder.getDictionaryAttr(effect)); + }); + body.walk([&](SlotProposeReleaseOp release) { + NamedAttrList effect; + effect.set("kind", RuleEffectKindAttr::get(operation->getContext(), + RuleEffectKind::StateWrite)); + effect.set("resource", release.getSlotAttr()); + effect.set("guard_kind", RuleGuardKindAttr::get( + operation->getContext(), + guardKindFor(release.getWhen()))); + expectedEffects.push_back(builder.getDictionaryAttr(effect)); + }); + SmallVector expectedConflicts; SmallVector summaryStateOperations; body.walk([&](Operation *nested) { @@ -558,6 +603,7 @@ LogicalResult RuleOp::verify() { return emitOpError("body arguments must match input Queue payloads"); } SmallVector proposals; + SmallVector slotReleases; SmallVector tableReads; bool hasVariableWrite = false; unsigned conditions = 0; @@ -565,6 +611,8 @@ LogicalResult RuleOp::verify() { for (Operation &operation : block.without_terminator()) if (auto proposal = dyn_cast(operation)) { proposals.push_back(proposal); + } else if (auto release = dyn_cast(operation)) { + slotReleases.push_back(release); } else if (auto get = dyn_cast(operation)) { tableReads.push_back(get); } else if (isa(operation)) { @@ -579,7 +627,8 @@ LogicalResult RuleOp::verify() { !isa( operation) && !isa( - operation)) + operation) && + !isa(operation)) return emitOpError() << "body operation '" << operation.getName() << "' must be pure in the supported rule subset"; if (conditions > 1) @@ -590,7 +639,7 @@ LogicalResult RuleOp::verify() { !outputPaths.empty() || llvm::any_of(proposals, [](TableProposeOp op) { return static_cast(op.getWhen()); - }); + }) || !slotReleases.empty(); if (hasPathEvidence) { if (conditions != 1) return emitOpError("SSA path evidence requires one rule condition"); @@ -618,6 +667,10 @@ LogicalResult RuleOp::verify() { "conditional-effect presence requires a true candidate"); } } + for (SlotProposeReleaseOp release : slotReleases) + if (!presenceImpliesCandidate(release.getWhen(), conditionValue)) + return release.emitOpError( + "slot release presence must imply the rule condition"); } for (TableGetOp read : tableReads) if (TableOp table = resolveTable(read, read.getTableAttr()); @@ -626,9 +679,10 @@ LogicalResult RuleOp::verify() { return failure(); } if (getInputs().empty() && getOutputs().empty() && proposals.empty() && - !hasVariableWrite) + slotReleases.empty() && !hasVariableWrite) return emitOpError("rule without Queue endpoints must update state"); - if (getOutputs().empty() && proposals.empty() && !hasVariableWrite) + if (getOutputs().empty() && proposals.empty() && slotReleases.empty() && + !hasVariableWrite) return emitOpError("outputless rule must update state"); auto yield = dyn_cast(block.getTerminator()); if (!yield || yield.getValues().size() != getOutputs().size()) @@ -1233,10 +1287,14 @@ LogicalResult FiringOp::verify() { "firing domain must match the exact QueueGraph domain"); } SmallVector proposals; + SmallVector slotReleases; SmallVector tableReads; SmallVector conditions; getBody().walk( [&](TableProposeOp proposal) { proposals.push_back(proposal); }); + getBody().walk([&](SlotProposeReleaseOp release) { + slotReleases.push_back(release); + }); getBody().walk([&](TableGetOp read) { tableReads.push_back(read); }); getBody().walk( [&](FiringConditionOp condition) { conditions.push_back(condition); }); @@ -1246,9 +1304,10 @@ LogicalResult FiringOp::verify() { read.getIndex()))) { return failure(); } - if (getInputs().empty() && getOutputs().empty() && proposals.empty()) + if (getInputs().empty() && getOutputs().empty() && proposals.empty() && + slotReleases.empty()) return emitOpError("firing without Queue endpoints must update state"); - if (getOutputs().empty() && proposals.empty()) + if (getOutputs().empty() && proposals.empty() && slotReleases.empty()) return emitOpError("outputless firing must update state"); if (conditions.size() > 1) return emitOpError("permits at most one functional condition"); @@ -1262,7 +1321,7 @@ LogicalResult FiringOp::verify() { !outputPaths.empty() || llvm::any_of(proposals, [](TableProposeOp op) { return static_cast(op.getWhen()); - }); + }) || !slotReleases.empty(); if (hasPathEvidence) { if (conditions.size() != 1) return emitOpError("SSA path evidence requires one firing condition"); @@ -1290,6 +1349,10 @@ LogicalResult FiringOp::verify() { "conditional-effect presence requires a true candidate"); } } + for (SlotProposeReleaseOp release : slotReleases) + if (!presenceImpliesCandidate(release.getWhen(), condition)) + return release.emitOpError( + "slot release presence must imply the firing condition"); } auto priority = (*this)->getAttrOfType("ac.rule_priority"); auto footprints = (*this)->getAttrOfType("ac.rule_footprints"); @@ -1370,7 +1433,8 @@ LogicalResult FiringOp::verify() { } } const bool validArity = - !getInputs().empty() || !getOutputs().empty() || !proposals.empty(); + !getInputs().empty() || !getOutputs().empty() || !proposals.empty() || + !slotReleases.empty(); if (conditions.empty() && requiresInferredSchedule) { return emitOpError("requires one typed functional condition"); } @@ -1391,7 +1455,7 @@ LogicalResult FiringOp::verify() { if (!isPureExpressionOperation(&operation) && !isa(operation)) + StateSnapshotSetOp, SlotGetOp, SlotProposeReleaseOp>(operation)) return emitOpError() << "body operation '" << operation.getName() << "' must be pure after marker elimination"; auto yield = dyn_cast(block.getTerminator()); @@ -4542,6 +4606,10 @@ LogicalResult SlotOp::verify() { if (resolveSlot(release, release.getSlotAttr()) == *this) ++releases; }); + root->walk([&](SlotProposeReleaseOp release) { + if (resolveSlot(release, release.getSlotAttr()) == *this) + ++releases; + }); if (releases != 1) return emitOpError("slot requires exactly one release endpoint"); return success(); @@ -4594,6 +4662,20 @@ LogicalResult SlotReleaseOp::verify() { return success(); } +LogicalResult SlotProposeReleaseOp::verify() { + SlotOp slot = resolveSlot(*this, getSlotAttr()); + if (!slot) + return emitOpError() << "unresolved slot " << getSlot(); + if (!slotVisibleFrom(*this, slot)) + return emitOpError("slot is outside the release scope ancestry"); + if (!isa_and_nonnull((*this)->getParentOp())) + return emitOpError("requires direct ac.rule or ac.firing ownership"); + auto when = dyn_cast(getWhen().getType()); + if (!when || !when.getElementType().isInteger(1)) + return emitOpError("when must be !ac.var"); + return success(); +} + LogicalResult InterfaceOp::verify() { if (getBody().empty()) return emitOpError("interface declaration requires a body block"); diff --git a/compiler/acir/lib/Dialect/ACIR/ACIRResources.cpp b/compiler/acir/lib/Dialect/ACIR/ACIRResources.cpp index 77420faa1..f9645792e 100644 --- a/compiler/acir/lib/Dialect/ACIR/ACIRResources.cpp +++ b/compiler/acir/lib/Dialect/ACIR/ACIRResources.cpp @@ -362,6 +362,12 @@ void SlotReleaseOp::getEffects( StorageStateResource::get()); } +void SlotProposeReleaseOp::getEffects( + SmallVectorImpl &effects) { + effects.emplace_back(MemoryEffects::Write::get(), + StorageStateResource::get()); +} + void EventQueueOp::getEffects( SmallVectorImpl &effects) { effects.emplace_back( diff --git a/compiler/acir/lib/Transforms/LowerRules.cpp b/compiler/acir/lib/Transforms/LowerRules.cpp index 0ccb1d99a..5d9df6423 100644 --- a/compiler/acir/lib/Transforms/LowerRules.cpp +++ b/compiler/acir/lib/Transforms/LowerRules.cpp @@ -236,6 +236,18 @@ LogicalResult inferRuleEffects(ModuleOp model) { ac::RuleEffectKind::OutputProduce), index, outputGuard)); } + llvm::StringSet<> readSlots; + rule.getBody().walk([&](ac::SlotGetOp get) { + if (readSlots.insert(get.getSlot()).second) + typedEffects.push_back(stateRuleEffect( + builder, ac::RuleEffectKind::StateRead, get.getSlot(), + ac::RuleGuardKind::Always)); + }); + rule.getBody().walk([&](ac::SlotProposeReleaseOp release) { + typedEffects.push_back(stateRuleEffect( + builder, ac::RuleEffectKind::StateWrite, release.getSlot(), + guardKind(release.getWhen()))); + }); SmallVector footprintAttrs; SmallVector conflictAttrs; for (const StateAccessFootprint &footprint : @@ -321,6 +333,15 @@ DictionaryAttr stateActivationResource(Builder &builder, StringRef resource) { return builder.getDictionaryAttr(fields); } +DictionaryAttr slotActivationResource(Builder &builder, StringRef resource) { + NamedAttrList fields; + fields.set("kind", ac::ActivationResourceKindAttr::get( + builder.getContext(), ac::ActivationResourceKind::Slot)); + fields.set("resource", + FlatSymbolRefAttr::get(builder.getContext(), resource)); + return builder.getDictionaryAttr(fields); +} + LogicalResult inferRuleActivation(ModuleOp model) { Builder builder(model.getContext()); LogicalResult result = success(); @@ -361,12 +382,23 @@ LogicalResult inferRuleActivation(ModuleOp model) { sources.push_back( stateActivationResource(builder, resource.getValue())); } + llvm::StringSet<> sourceSlots; + rule.getBody().walk([&](ac::SlotGetOp get) { + if (sourceSlots.insert(get.getSlot()).second) + sources.push_back(slotActivationResource(builder, get.getSlot())); + }); llvm::StringSet<> transactionState; rule.getBody().walk([&](ac::TableProposeOp proposal) { if (transactionState.insert(proposal.getTable()).second) transaction.push_back( stateActivationResource(builder, proposal.getTable())); }); + llvm::StringSet<> transactionSlots; + rule.getBody().walk([&](ac::SlotProposeReleaseOp release) { + if (transactionSlots.insert(release.getSlot()).second) + transaction.push_back( + slotActivationResource(builder, release.getSlot())); + }); rule->setAttr("ac.rule.activation_sources", builder.getArrayAttr(sources)); rule->setAttr("ac.rule.transaction_resources", builder.getArrayAttr(transaction)); @@ -859,7 +891,8 @@ LogicalResult canonicalizePureFirings(ModuleOp model) { firing.getBody().walk([&](Operation *operation) { hasStateAccess |= isa(operation); + ac::StateSnapshotSetOp, ac::SlotGetOp, + ac::SlotProposeReleaseOp>(operation); }); if (hasStateAccess) continue; diff --git a/docs/acir/spec/agentic-circuit.md b/docs/acir/spec/agentic-circuit.md index c333b4099..3d15e7879 100644 --- a/docs/acir/spec/agentic-circuit.md +++ b/docs/acir/spec/agentic-circuit.md @@ -971,6 +971,38 @@ pre-transfer memory value. A write commits at Xfer. Therefore a read and write to the same address in one request returns old data and makes the new data visible to a later request. +### Committed Slot and rule transactions + +`ac.slot(queue)` declares a committed one-entry mailbox in module or system +topology. It is not a rule-local value. A rule receives a Slot as a leading +resource parameter, or captures a module-local Slot from a nested rule; both +forms lower to the same explicit resource binding. + +Within a rule, `slot.valid` and `slot.value` observe the committed snapshot and +the no-argument `slot.release()` proposes a release on the current control-flow +path. The canonical firing-local form is: + +```mlir +ac.slot.propose_release @mailbox when %condition : !ac.var +``` + +The proposal is legal only directly inside `ac.rule` or `ac.firing`. Its symbol +must resolve to a visible `ac.slot`, its predicate is exactly `!ac.var`, and +the slot declaration must have exactly one release owner: one standalone +`ac.slot.release` endpoint or one rule. Several rules may read the same Slot; +one rule may conditionally release several distinct Slots. + +Rule lowering records every Slot read as a named activation source and every +proposal as a named transaction resource. QueueGraph/GFSim commits selected +Queue pops and pushes, Table or persistent-state writes, and Slot releases with +one preflight/prepare-all/publish-all protocol. A failed output-capacity check, +state reservation, or selected Slot reservation changes none of them. +Successful release clears `valid` at Xfer and retains the payload. Capture is a +separate `QueueSlot` action: a value captured in one epoch becomes visible only +after that edge, and a Slot full at epoch start cannot release and refill on the +same edge. Reset clears validity and all pending release state. PYC and RTL keep +their explicit provisional-Slot rejection. + ### Stateful Table Epoch `0.5` separates locally owned state from request/response memory. A @@ -1537,7 +1569,7 @@ selection; the resulting heterogeneous state owners are carried by one all owner writes. Arbitrate either reserves and publishes every owner and selected Queue, or publishes none. -`examples/agentic-circuit/state/circular_rob.py` exercises this path as a real +`examples/agentic-circuit/state/reusable_circular_rob.py` exercises this path as a real four-entry circular ROB. Ordinary scalar variables hold head, tail, occupancy, and recovery epoch; a normal `list[RobEvent]` holds entries. Its four rules implement recovery, allocation, completion, and state-driven retirement. The diff --git a/docs/acir/spec/agentic-circuit.zh-CN.md b/docs/acir/spec/agentic-circuit.zh-CN.md index 02e9208fb..53f853931 100644 --- a/docs/acir/spec/agentic-circuit.zh-CN.md +++ b/docs/acir/spec/agentic-circuit.zh-CN.md @@ -972,6 +972,33 @@ array。 可执行示例: `pyc_memory_pipeline.py`。 +### Committed Slot 与 rule 事务 + +`ac.slot(queue)` 在 module 或 system 拓扑层声明一个已提交的单 entry mailbox,不能 +在 `@ac.rule` 内声明。外部 rule 将 Slot 作为前置资源参数接收;nested rule 对 +module-local Slot 的 capture 会脱糖为相同的隐藏显式参数。 + +rule 内的 `slot.valid` 与 `slot.value` 读取同一份 committed snapshot;无参数 +`slot.release()` 按当前控制流路径生成: + +```mlir +ac.slot.propose_release @mailbox when %condition : !ac.var +``` + +该操作只能直接位于 `ac.rule` 或 `ac.firing`,必须引用可见 Slot,条件类型必须精确为 +`!ac.var`。每个 Slot 只能有一个 release owner:一个 standalone +`ac.slot.release` endpoint,或一个 rule;其他 rule 可以只读同一 Slot,一个 rule +也可以按条件释放多个不同 Slot。 + +rule lowering 将 Slot read 记录为具名 activation source,将 proposal 记录为具名 +transaction resource。QueueGraph/GFSim 对 Queue pop/push、Table/持久状态写入和 +Slot release 执行统一的 preflight、prepare-all、publish-all;任一输出反压、状态冲突 +或选中的 Slot reservation 失败时均不改变任何资源。成功 release 在 Xfer 清除 +`valid` 并保留 payload。capture 仍由独立 `QueueSlot` 完成:本周期捕获的数据下一周期 +才可见,周期开始时为 full 的 Slot 不能在同一 edge release 并 refill。reset 清除 +valid、candidate 与 release reservation。PYC/RTL 继续明确拒绝 provisional Slot, +不做部分 lowering。 + ### Stateful Table 原型 epoch `0.5` 将本地状态 Table 与 request/response memory 分离。Table shape 可以是 @@ -1531,7 +1558,7 @@ assignment 在 storage selection 前仍是通用 `ac.var`;选出的异构 stat candidate;Arbitrate 要么一起 reserve/publish 全部 owner 与所选 Queue,要么一个也不 publish。 -`examples/agentic-circuit/state/circular_rob.py` 使用这条链实现真实的四 entry circular +`examples/agentic-circuit/state/reusable_circular_rob.py` 使用这条链实现真实的四 entry circular ROB。普通 scalar 保存 head、tail、occupancy 和 recovery epoch,普通 `list[RobEvent]` 保存 entry;四个 rule 分别实现 recovery、allocation、completion 与 state-driven retirement。生成式测试覆盖 full/empty、固定宽度 head/tail wrap、per-slot @@ -1561,7 +1588,8 @@ def install(rob, entry, delta): MLIR 推导 `ready_valid_Nx1_table`,并将全部 Queue 消费、单个 Table replace 和输出 生产闭合为一个 `ac.firing`。QueueGraph/gfsim 生成 variadic `QueueTableTransition`;任一输入缺失、输出反压或 Table reservation 冲突时,全部输入 -和 Table 都保持不变。可执行示例:`table_multi_input_rule.py`。 +和 Table 都保持不变。对应的可执行回归 fixture 位于 +`tests/integration/agentic-circuit/e2e/fixtures/state/table_multi_input_rule.py`。 ## Observation 与 Verification diff --git a/docs/development/acir/verification/ir-coverage.md b/docs/development/acir/verification/ir-coverage.md index 8927e9b1b..00cae00ce 100644 --- a/docs/development/acir/verification/ir-coverage.md +++ b/docs/development/acir/verification/ir-coverage.md @@ -7,11 +7,11 @@ acir_contract_epoch: 0.5 acsim_contract_epoch: 0.5 -## acir operations (151) +## acir operations (152) | operation | source symbol | positive coverage | negative coverage | | --- | --- | --- | --- | -| ac.system | ACIR_SystemOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACSim/ops-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | +| ac.system | ACIR_SystemOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACSim/ops-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.type_scope | ACIR_TypeScopeOp | tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-config-metadata.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r2-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | | ac.type_alias | ACIR_TypeAliasOp | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir | | ac.module | ACIR_ModuleOp | tests/mlir/agentic-circuit/ACIR/address-map-canonical-order.mlir
tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir
tests/mlir/agentic-circuit/ACIR/canonical-entrypoint.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/view-provenance.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Analysis/process-state-verifier.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/acir-build-input-contract.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir
tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/process-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir | @@ -93,17 +93,17 @@ acsim_contract_epoch: 0.5 | ac.var.choose.yield | ACIR_VarChooseYieldOp | tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | | ac.transform | ACIR_TransformOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir | tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.transform.yield | ACIR_TransformYieldOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir | tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | -| ac.rule | ACIR_RuleOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | -| ac.rule.condition | ACIR_RuleConditionOp | tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir | -| ac.rule.output | ACIR_RuleOutputOp | tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir | -| ac.rule.return | ACIR_RuleReturnOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | +| ac.rule | ACIR_RuleOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | +| ac.rule.condition | ACIR_RuleConditionOp | tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir | +| ac.rule.output | ACIR_RuleOutputOp | tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir | +| ac.rule.return | ACIR_RuleReturnOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | | ac.state.snapshot | ACIR_StateSnapshotOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir | | ac.state.snapshot_set | ACIR_StateSnapshotSetOp | tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir | tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir | | ac.marker.type | ACIR_TypeConstraintMarkerOp | tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | | ac.marker.value | ACIR_ValueFactMarkerOp | tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | -| ac.marker.obligation | ACIR_PendingObligationMarkerOp | tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | -| ac.source | ACIR_SourceOp | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/barrier-invalid.mlir
tests/mlir/agentic-circuit/ACIR/broadcast-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/fork-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | -| ac.sink | ACIR_SinkOp | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | +| ac.marker.obligation | ACIR_PendingObligationMarkerOp | tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | +| ac.source | ACIR_SourceOp | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/barrier-invalid.mlir
tests/mlir/agentic-circuit/ACIR/broadcast-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/fork-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | +| ac.sink | ACIR_SinkOp | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.observe | ACIR_ObserveOp | tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir | tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir | | ac.expect | ACIR_ExpectOp | tests/mlir/agentic-circuit/ACIR/expect.mlir | tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir | | ac.expect.yield | ACIR_ExpectYieldOp | tests/mlir/agentic-circuit/ACIR/expect.mlir | tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir | @@ -134,9 +134,10 @@ acsim_contract_epoch: 0.5 | ac.table.write | ACIR_TableWriteOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir | tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir | | ac.table.masked_write | ACIR_TableMaskedWriteOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | | ac.table.yield | ACIR_TableYieldOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir | tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir | -| ac.slot | ACIR_SlotOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | -| ac.slot.get | ACIR_SlotGetOp | tests/mlir/agentic-circuit/ACIR/table.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | +| ac.slot | ACIR_SlotOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | +| ac.slot.get | ACIR_SlotGetOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | | ac.slot.release | ACIR_SlotReleaseOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | +| ac.slot.propose_release | ACIR_SlotProposeReleaseOp | tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | | ac.slot.yield | ACIR_SlotYieldOp | tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir | tests/mlir/agentic-circuit/ACIR/table-invalid.mlir | | ac.reorder | ACIR_ReorderOp | tests/mlir/agentic-circuit/ACIR/reorder.mlir | tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir | | ac.reorder.yield | ACIR_ReorderYieldOp | tests/mlir/agentic-circuit/ACIR/reorder.mlir | tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir | @@ -144,9 +145,9 @@ acsim_contract_epoch: 0.5 | ac.feedback.yield | ACIR_FeedbackYieldOp | tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir | tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir | | ac.scope | ACIR_ScopeOp | tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir | | ac.scope.yield | ACIR_ScopeYieldOp | tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir | -| ac.firing | ACIR_FiringOp | tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | -| ac.firing.condition | ACIR_FiringConditionOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir | -| ac.firing.output | ACIR_FiringOutputOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir | +| ac.firing | ACIR_FiringOp | tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | +| ac.firing.condition | ACIR_FiringConditionOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir | +| ac.firing.output | ACIR_FiringOutputOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir | | ac.firing.yield | ACIR_FiringYieldOp | tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir | | ac.try_send | ACIR_TrySendOp | tests/mlir/agentic-circuit/ACIR/process-valid.mlir | tests/mlir/agentic-circuit/ACIR/contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir | | ac.try_recv | ACIR_TryRecvOp | tests/mlir/agentic-circuit/ACIR/process-valid.mlir | tests/mlir/agentic-circuit/ACIR/process-invalid.mlir | @@ -173,8 +174,8 @@ acsim_contract_epoch: 0.5 | !ac.enum | ACIR_EnumType | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir | | !ac.range | ACIR_RangeType | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir | tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir | | !ac.value_array | ACIR_ValueArrayType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir | -| !ac.var | ACIR_VarType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/records-valid.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-div-rem-canonicalize.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | -| !ac.queue | ACIR_QueueType | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/barrier-invalid.mlir
tests/mlir/agentic-circuit/ACIR/broadcast-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/fork-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | +| !ac.var | ACIR_VarType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/records-valid.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-div-rem-canonicalize.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | +| !ac.queue | ACIR_QueueType | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/barrier-invalid.mlir
tests/mlir/agentic-circuit/ACIR/broadcast-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/fork-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | !ac.array | ACIR_ArrayType | tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir | tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir | | !ac.flow | ACIR_FlowType | tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir | tests/mlir/agentic-circuit/ACIR/interfaces-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/types-invalid.mlir | | !ac.endpoint | ACIR_EndpointType | tests/mlir/agentic-circuit/ACIR/interfaces-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir | tests/mlir/agentic-circuit/ACIR/interfaces-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir | diff --git a/docs/development/agent-frontend-guide.md b/docs/development/agent-frontend-guide.md index 4c8e5e18d..825cf3d22 100644 --- a/docs/development/agent-frontend-guide.md +++ b/docs/development/agent-frontend-guide.md @@ -246,6 +246,11 @@ Follow these rules: zero as a total fallback. - Treat every `@ac.rule` as one schedulable atomic transition. Put all state writes and outputs that must commit together in the same rule. +- Declare `ac.slot(queue)` only in `@ac.module` or `@ac.system` topology. Pass + it as a leading rule resource or capture it from a nested rule; read + `.valid`/`.value` and use no-argument `.release()` so Queue, state, output, + and Slot effects share one transaction. One Slot has one release owner, + although other rules may read the same committed snapshot. - Read committed state, compute proposals, and let the compiler publish them. Do not expose reservation, check, or prepare/publish mechanics in Python. - For a set-associative rank-two Table, write @@ -339,6 +344,7 @@ consumer design. | Atomic Table replacement | `examples/agentic-circuit/state/table_rule.py` | | Nested module state capture | `examples/agentic-circuit/state/inferred_nested_rule.py` | | Reusable stateful scheduling | `examples/agentic-circuit/state/reusable_oldest_ready_isq.py` | +| Transactional slot release from rules | `examples/agentic-circuit/state/slot_rule_mailbox.py` | Examples are product surface. Add a new public example only when it teaches a distinct supported pattern; use an integration fixture for broad or expensive diff --git a/docs/gates/decision_status_v6.md b/docs/gates/decision_status_v6.md index 3edeb4889..23131e4d0 100644 --- a/docs/gates/decision_status_v6.md +++ b/docs/gates/decision_status_v6.md @@ -184,16 +184,16 @@ Allowed statuses: | 0165 | implemented-verified | docs/gates/logs/20260905-pyc-count-leading-zeros-r1/summary.md, docs/gates/logs/20260911-issues-100-101-docs-hierarchy/summary.json, tests/integration/agentic-circuit/e2e/test_bit_primitive_parity.py, tests/mlir/pyc/count-leading-zeros-primitive.mlir, tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir, tests/system/test_primitive_selection.py, tests/cpp/agentic-circuit/gfsim/BitsTest.cpp | pyc-primitives | Keep exact all-zero semantics, semantic PYC/Agentic lowering, ACPy/gfsim/PYC parity, balanced BSD selected RTL, and C++/RTL/SimQueue parity green | | 0166 | implemented-verified | docs/gates/logs/20260905-pyc-zero-count-family-r1/summary.md, docs/gates/logs/20260911-issues-100-101-docs-hierarchy/summary.json, tests/integration/agentic-circuit/e2e/test_bit_primitive_parity.py, tests/mlir/pyc/count-leading-zeros-primitive.mlir, tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir, tests/system/test_primitive_selection.py, tests/cpp/agentic-circuit/gfsim/BitsTest.cpp | pyc-primitives | Keep leading/trailing helpers on one static-direction ACIR/PYC, gfsim, selected RTL, and ACPy-derived parity family | | 0167 | implemented-verified | examples/agentic-circuit/pipelines/pyc_multi_input_rule_pipeline.py, tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep multi-input pure rules inferred as one atomic Queue transition without exposing readiness or commit mechanics in Python | -| 0168 | implemented-verified | examples/agentic-circuit/state/table_multi_input_rule.py, tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep heterogeneous stateful Queue inputs and one Table replacement in a single inferred prepare-publish-no-fail commit group | +| 0168 | implemented-verified | tests/integration/agentic-circuit/e2e/fixtures/state/table_multi_input_rule.py, tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep heterogeneous stateful Queue inputs and one Table replacement in a single inferred prepare-publish-no-fail commit group | | 0169 | implemented-verified | compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp | acir-analysis | Keep lifetime, update permission, and lexical ownership as compiler-inferred ac.var properties rather than Python hardware annotations | | 0170 | implemented-verified | compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Transforms/LowerVariables.cpp, tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir, tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir, tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | acir-variables | Keep persistent class/module fields in the ac.var family and storage-select scalar/flat-struct state before rule transaction lowering | | 0171 | implemented-verified | examples/agentic-circuit/pipelines/inferred_boundary_pipeline.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-boundaries | Keep ordinary typed system parameters/returns as the Python boundary while ACIR and gfsim retain inferred source/sink nodes internally | -| 0172 | implemented-verified | compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Transforms/LowerVariables.cpp, examples/agentic-circuit/state/indexed_variable_array.py, tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-variables | Keep persistent Python lists in the shaped ac.var family until storage selection and preserve touched-entry atomic updates | +| 0172 | implemented-verified | compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Transforms/LowerVariables.cpp, tests/integration/agentic-circuit/e2e/fixtures/state/indexed_variable_array.py, tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-variables | Keep persistent Python lists in the shaped ac.var family until storage selection and preserve touched-entry atomic updates | | 0173 | implemented-verified | simulator/gfsim/include/gfsim/queue_blocks.h, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-runtime | Keep stateful candidate evaluation side-effect-free in Work and perform deterministic atomic reservation/publication only during Arbitrate | -| 0174 | implemented-verified | compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, examples/agentic-circuit/state/shared_indexed_rules.py, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Keep shared inferred state ordered by MLIR footprints and lexical priority, with runtime conflicts resolved only in stable Arbitrate order | -| 0175 | implemented-verified | compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, examples/agentic-circuit/state/consume_only_completion.py, examples/agentic-circuit/state/state_driven_retire.py, tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir, tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep zero-output completion and guarded zero-input retirement as typed MLIR transactions with inferred backpressure and no Python dummy endpoints | -| 0176 | implemented-verified | docs/gates/logs/20260906-circular-rob/summary.md, simulator/gfsim/include/gfsim/queue_blocks.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, examples/agentic-circuit/state/multi_state_allocate.py, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep heterogeneous scalar/list state and selected Queues in one inferred multi-owner prepare-publish-commit group | -| 0177 | implemented-verified | docs/gates/logs/20260906-circular-rob/summary.md, examples/agentic-circuit/state/circular_rob.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, compiler/acir/lib/Transforms/LowerRules.cpp, simulator/gfsim/include/gfsim/queue_blocks.h | acir-rob | Keep the circular ROB acceptance covering full/empty, dual output backpressure, wrap, stale generation, recovery epoch, out-of-order completion, and in-order retirement | +| 0174 | implemented-verified | compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, tests/integration/agentic-circuit/e2e/fixtures/state/shared_indexed_rules.py, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Keep shared inferred state ordered by MLIR footprints and lexical priority, with runtime conflicts resolved only in stable Arbitrate order | +| 0175 | implemented-verified | compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, tests/integration/agentic-circuit/e2e/fixtures/state/consume_only_completion.py, tests/integration/agentic-circuit/e2e/fixtures/state/state_driven_retire.py, tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir, tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep zero-output completion and guarded zero-input retirement as typed MLIR transactions with inferred backpressure and no Python dummy endpoints | +| 0176 | implemented-verified | docs/gates/logs/20260906-circular-rob/summary.md, simulator/gfsim/include/gfsim/queue_blocks.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, tests/integration/agentic-circuit/e2e/fixtures/state/multi_state_allocate.py, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep heterogeneous scalar/list state and selected Queues in one inferred multi-owner prepare-publish-commit group | +| 0177 | implemented-verified | docs/gates/logs/20260906-circular-rob/summary.md, tests/integration/agentic-circuit/e2e/fixtures/state/circular_rob.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, compiler/acir/lib/Transforms/LowerRules.cpp, simulator/gfsim/include/gfsim/queue_blocks.h | acir-rob | Keep the circular ROB acceptance covering full/empty, dual output backpressure, wrap, stale generation, recovery epoch, out-of-order completion, and in-order retirement | | 0178 | implemented-verified | docs/gates/logs/20260906-queue-module-freeze/summary.md, compiler/acir/lib/Transforms/FreezeTopology.cpp, compiler/acir/lib/Analysis/ModelAnalysis.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp | acir-queue-modules | Support mixed local/nested Queue graphs, Python module lowering, and incremental activation | | 0179 | implemented-verified | docs/gates/logs/20260906-stateful-module-reuse/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp | acir-queue-modules | Support internal Queue graphs, Python module lowering, and incremental activation | | 0180 | implemented-verified | docs/gates/logs/20260906-multi-rule-module-reuse/summary.md, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp | acir-queue-modules | Support mixed local/nested Queue graphs and Python module lowering | @@ -204,7 +204,7 @@ Allowed statuses: | 0185 | implemented-verified | docs/gates/logs/20260906-python-module-lowering/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/tools/ac-queue-cxxgen.py, examples/agentic-circuit/pipelines/inferred_module_pipeline.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-python-modules | Extend ordinary module calls to stateful modules, arbitrary arity, static parameters, and inferred fanout | | 0186 | implemented-verified | docs/gates/logs/20260906-python-nested-module/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, examples/agentic-circuit/pipelines/inferred_nested_module_pipeline.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-python-modules | Extend nested Python modules to multi-statement graphs, stateful composition, arbitrary arity, and static parameters | | 0187 | implemented-verified | docs/gates/logs/20260906-python-stateful-module/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, examples/agentic-circuit/state/inferred_stateful_module.py, tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-python-modules | Extend lexical module state to arbitrary internal graphs, conditional updates, static parameters, and inferred fanout | -| 0188 | implemented-verified | docs/gates/logs/20260906-python-multi-state-module/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, examples/agentic-circuit/state/inferred_multi_state_module.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-python-modules | Extend multi-state modules to internal graphs, conditional updates, shaped state, static parameters, and inferred fanout | +| 0188 | implemented-verified | docs/gates/logs/20260906-python-multi-state-module/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, tests/integration/agentic-circuit/e2e/fixtures/state/inferred_multi_state_module.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-python-modules | Extend multi-state modules to internal graphs, conditional updates, shaped state, static parameters, and inferred fanout | | 0189 | implemented-verified | docs/gates/logs/20260906-reusable-circular-rob/summary.md, docs/gates/logs/20260913-structured-multi-input-r1/closure_summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, examples/agentic-circuit/state/reusable_circular_rob.py, tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rob | Preserve reusable ROB behavior and stateless arbitrary-arity atomic transforms while adding internal graphs, activation, typed CFG effects, static parameters, and ISQ composition | | 0190 | implemented-verified | docs/gates/logs/20260906-queuegraph-activation/summary.md, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, simulator/gfsim/include/gfsim/queue_blocks.h, tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-runtime | Add output adapters, semantic-change filtering, and full ROB tick/timeline equivalence | | 0191 | implemented-verified | docs/gates/logs/20260906-mlir-rule-activation/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIRAttributes.td, compiler/acir/include/acir/Transforms/Passes.td, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir, tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Extend typed activation through structural blocks, output adapters, and semantic-change filtering | @@ -217,23 +217,23 @@ Allowed statuses: | 0198 | implemented-verified | docs/gates/logs/20260906-isq-tick-equivalence/summary.md, examples/agentic-circuit/state/reusable_oldest_ready_isq.py, simulator/gfsim/include/gfsim/core.h, simulator/gfsim/include/gfsim/object.h, simulator/gfsim/system.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-isq | Finish typed path predicates, output presence, conflict classes, and explicit arbitration IR | | 0199 | implemented-verified | docs/gates/logs/20260906-typed-rule-summary/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIRAttributes.td, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Add SSA output/state presence, then derive real conflict classes and explicit contender arbitration | | 0200 | implemented-verified | docs/gates/logs/20260906-ssa-rule-presence/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir, tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir, tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir | acir-rules | Generalize independent effect presence and CFG joins, then derive conflict classes and explicit contender arbitration | -| 0201 | implemented-verified | docs/gates/logs/20260906-conditional-rule-effects/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Transforms/LowerVariables.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, simulator/gfsim/include/gfsim/queue_blocks.h, examples/agentic-circuit/state/consume_only_completion.py, examples/agentic-circuit/state/reusable_circular_rob.py, tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve early-return input-only commits while adding optional outputs and general CFG joins | +| 0201 | implemented-verified | docs/gates/logs/20260906-conditional-rule-effects/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Transforms/LowerVariables.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, simulator/gfsim/include/gfsim/queue_blocks.h, tests/integration/agentic-circuit/e2e/fixtures/state/consume_only_completion.py, examples/agentic-circuit/state/reusable_circular_rob.py, tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve early-return input-only commits while adding optional outputs and general CFG joins | | 0202 | implemented-verified | docs/gates/logs/20260906-state-snapshot-reservations/summary.md, compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, simulator/gfsim/include/gfsim/queue_blocks.h, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, examples/agentic-circuit/state/reusable_circular_rob.py, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir, tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Extend snapshots to candidate/output predicates and exact match/choose index sets, then add ISQ starvation/performance gates | | 0203 | implemented-verified | docs/gates/logs/20260906-snapshot-set-isq/summary.md, compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, simulator/gfsim/include/gfsim/queue_blocks.h, examples/agentic-circuit/state/reusable_oldest_ready_isq.py, tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Preserve exact match-evaluation snapshot sets while extending field, CFG, and larger-domain representations | | 0204 | implemented-verified | docs/gates/logs/20260906-choose-key-snapshot-set/summary.md, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp, tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir, tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py | acir-analysis | Preserve choose-key provenance while extending per-index field relations, CFG joins, and larger domains | | 0205 | implemented-verified | docs/gates/logs/20260906-field-snapshot-reservations/summary.md, compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, simulator/gfsim/include/gfsim/queue_blocks.h, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir, tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir, tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Extend exact snapshot relations through general CFG joins and wider-than-64-bit representations | | 0206 | implemented-verified | docs/gates/logs/20260906-serial-guard-chain/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, examples/agentic-circuit/state/reusable_circular_rob.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve serial discard chains while adding same-owner joins, selected outputs, nested CFG, and multi-input paths | -| 0207 | implemented-verified | docs/gates/logs/20260906-branch-local-effects/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, examples/agentic-circuit/state/branch_local_state.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir, tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve complementary branch effects while adding indexed joins, selected outputs, nested CFG, and multi-input semantics | -| 0208 | implemented-verified | docs/gates/logs/20260906-same-owner-branch-join/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, compiler/acir/lib/CodeGen/QueueGraphPyc.cpp, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, examples/agentic-circuit/state/branch_join_state.py, tests/mlir/agentic-circuit/ACIR/var-expressions.mlir, tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir, tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir, tests/mlir/agentic-circuit/CodeGen/value-select.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve typed joins while adding selected outputs, nested CFG, and multi-input branch semantics | -| 0209 | implemented-verified | docs/gates/logs/20260906-indexed-branch-join/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, examples/agentic-circuit/state/indexed_branch_join.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve indexed joins while adding multiple outputs, nested CFG, cross-owner joins, and multi-input semantics | -| 0210 | implemented-verified | docs/gates/logs/20260906-optional-output-presence/summary.md, docs/gates/logs/20260908-issue48-state-guard-snapshot/summary.json, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, examples/agentic-circuit/state/optional_output_state.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir, tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep blocking/effect/output guards on the committed snapshot while state assignments form separate proposals; extend multiple selected outputs, nested CFG, and multi-input optional-output semantics | +| 0207 | implemented-verified | docs/gates/logs/20260906-branch-local-effects/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, tests/integration/agentic-circuit/e2e/fixtures/state/branch_local_state.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir, tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve complementary branch effects while adding indexed joins, selected outputs, nested CFG, and multi-input semantics | +| 0208 | implemented-verified | docs/gates/logs/20260906-same-owner-branch-join/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, compiler/acir/lib/CodeGen/QueueGraphPyc.cpp, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, tests/integration/agentic-circuit/e2e/fixtures/state/branch_join_state.py, tests/mlir/agentic-circuit/ACIR/var-expressions.mlir, tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir, tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir, tests/mlir/agentic-circuit/CodeGen/value-select.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve typed joins while adding selected outputs, nested CFG, and multi-input branch semantics | +| 0209 | implemented-verified | docs/gates/logs/20260906-indexed-branch-join/summary.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, tests/integration/agentic-circuit/e2e/fixtures/state/indexed_branch_join.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Preserve indexed joins while adding multiple outputs, nested CFG, cross-owner joins, and multi-input semantics | +| 0210 | implemented-verified | docs/gates/logs/20260906-optional-output-presence/summary.md, docs/gates/logs/20260908-issue48-state-guard-snapshot/summary.json, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, tests/integration/agentic-circuit/e2e/fixtures/state/optional_output_state.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir, tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-rules | Keep blocking/effect/output guards on the committed snapshot while state assignments form separate proposals; extend multiple selected outputs, nested CFG, and multi-input optional-output semantics | | 0211 | implemented-verified | docs/gates/logs/20260906-bitfield-spec/summary.md, python/semantic-core/src/_pycircuit_semantics/bitfield.py, python/pycircuit/src/pycircuit/bitfield.py, python/agentic-circuit/src/agentic_circuit/_types.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, examples/agentic-circuit/pipelines/bitfield_decode_pipeline.py, examples/agentic-circuit/pipelines/bitfield_scalar_pipeline.py, tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-types | Replace frontend type strings with the recursive descriptor, then add recursive aggregates, bounded constraints, and masked matching | | 0212 | implemented-verified | docs/gates/logs/20260906-recursive-type-descriptor/summary.md, python/semantic-core/src/_pycircuit_semantics/types.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIRTypes.td, compiler/acir/lib/Dialect/ACIR/ACIRTypes.cpp, compiler/acir/tools/ac-queue-cxxgen.py, tests/unit/test_semantic_core.py, tests/cpp/agentic-circuit/Dialect/ACIR/TypesTest.cpp, tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-types | Replace remaining QueueProgram strings, then admit recursive aggregates through QueueGraph, gfsim, PYC, and RTL | | 0213 | implemented-verified | docs/gates/logs/20260906-nested-payload/summary.md, python/semantic-core/src/_pycircuit_semantics/types.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, examples/agentic-circuit/pipelines/nested_payload_pipeline.py, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-types | Add nominal enum values, then tuple/value-array operations and complete descriptor migration | | 0214 | implemented-verified | docs/gates/logs/20260906-enum-payload/summary.md, docs/gates/logs/20260907-issue48-persistent-enum/summary.json, python/semantic-core/src/_pycircuit_semantics/types.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, compiler/acir/lib/CodeGen/QueueGraphPyc.cpp, examples/agentic-circuit/pipelines/enum_payload_pipeline.py, tests/mlir/agentic-circuit/ACIR/enum-values.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-types | Add tuple/value-array operations, enum exhaustiveness with constraints, and complete descriptor migration | | 0215 | implemented-verified | docs/gates/logs/20260906-aggregate-payload/summary.md, python/semantic-core/src/_pycircuit_semantics/types.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/include/acir/CodeGen/QueueGraphPlan.h, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, compiler/acir/lib/CodeGen/QueueGraphPyc.cpp, examples/agentic-circuit/pipelines/aggregate_payload_pipeline.py, examples/agentic-circuit/pipelines/recursive_aggregate_payload_pipeline.py, tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-types | Replace remaining QueueProgram type strings, then add bounded constraints and masked matching | | 0216 | implemented-verified | docs/gates/logs/20260906-queue-descriptor-migration/summary.md, python/semantic-core/src/_pycircuit_semantics/types.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, python/agentic-circuit/src/agentic_circuit/_queue_codegen.py, tests/unit/test_semantic_core.py, tests/python/agentic-circuit/contracts/test_queue_type_hygiene.py, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/python/agentic-circuit/python_frontend/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-types | Add bounded static constraints, enum exhaustiveness, and verified masked matching | -| 0217 | implemented-verified | docs/gates/logs/20260906-bounded-constraints/summary.md, python/semantic-core/src/_pycircuit_semantics/constraints.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Transforms/VerifyValueConstraints.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/Transforms/FreezeTopology.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, examples/agentic-circuit/state/indexed_variable_array.py, tests/unit/test_semantic_core.py, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp, tests/mlir/agentic-circuit/Transforms/value-constraints.mlir, tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Add verified masked matching, then path-sensitive refinement and dynamic aggregate indexing | +| 0217 | implemented-verified | docs/gates/logs/20260906-bounded-constraints/summary.md, python/semantic-core/src/_pycircuit_semantics/constraints.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Analysis/VariableAnalysis.h, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Transforms/VerifyValueConstraints.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/Transforms/FreezeTopology.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, tests/integration/agentic-circuit/e2e/fixtures/state/indexed_variable_array.py, tests/unit/test_semantic_core.py, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp, tests/mlir/agentic-circuit/Transforms/value-constraints.mlir, tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py | acir-analysis | Add verified masked matching, then path-sensitive refinement and dynamic aggregate indexing | | 0218 | implemented-verified | docs/gates/logs/20260906-issue39-closure-r3/summary.md, python/semantic-core/src/_pycircuit_semantics/bitmask.py, python/pycircuit/src/pycircuit/bitmask.py, python/agentic-circuit/src/agentic_circuit/__init__.py, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, compiler/acir/lib/CodeGen/QueueGraphPyc.cpp, examples/agentic-circuit/pipelines/masked_decode_pipeline.py, tests/mlir/agentic-circuit/ACIR/masked-matching.mlir, tests/mlir/agentic-circuit/ACIR/masked-matching-invalid.mlir, tests/mlir/agentic-circuit/CodeGen/masked-match.mlir, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-types | Implement Decision 0219 and issue #41 non-vector primitive cleanup | | 0219 | implemented-verified | docs/gates/logs/20260907-issue41-primitive-cleanup/summary.md, compiler/acir/include/acir/Dialect/ACIR/ACIRAttributes.td, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/include/acir/Dialect/ACIR/ACIRTypes.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/mlir/include/pyc/Dialect/PYC/PYCOps.td, compiler/mlir/lib/Dialect/PYC/PYCOps.cpp, compiler/mlir/lib/Emit/CppEmitter.cpp, compiler/mlir/lib/Emit/VerilogEmitter.cpp, schemas/primitives/pyc_ir_inventory.yaml, schemas/primitives/pyc_ir_coverage.json, tools/pycircuit/check-pyc-inventory.py, tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir, tests/mlir/pyc/canonical-ops-valid.mlir, tests/mlir/pyc/canonical-cmp-invalid.mlir, tests/mlir/pyc/canonical-select-invalid.mlir, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | acir-pyc-primitives | Complete issue #41 merge/closure, then execute issue #42 vector removal | | 0220 | implemented-verified | docs/gates/logs/20260907-issue42-scalar-pyc/summary.md, compiler/mlir/include/pyc/Dialect/PYC/PYCOps.td, compiler/mlir/lib/Transforms/CheckFlatTypesPass.cpp, compiler/mlir/lib/Emit/CppEmitter.cpp, compiler/mlir/lib/Emit/VerilogEmitter.cpp, compiler/acir/lib/CodeGen/QueueGraphPyc.cpp, python/pycircuit/src/pycircuit/data.py, schemas/primitives/pyc_ir_inventory.yaml, tests/mlir/pyc/residual-vector-invalid.mlir, tests/mlir/pyc/removed-vector-op-invalid.mlir, tests/integration/agentic-circuit/e2e/test_pyc_backend.py | pyc-scalar-aggregate | Keep scalar-only PYC legality, exact inventory, and packed aggregate parity gates green | @@ -278,3 +278,4 @@ Allowed statuses: | 0259 | implemented-verified | docs/rfcs/pyc6-decisions.md, simulator/gfsim/include/gfsim/queue.h, simulator/gfsim/include/gfsim/queue_blocks.h, compiler/acir/lib/CodeGen/QueueGraphCost.cpp, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp, tests/integration/agentic-circuit/e2e/test_private_queue_payload_runtime.py, tests/integration/agentic-circuit/e2e/test_typed_system_transactions.py, docs/gates/logs/20260914-issue128-gfsim-preflight-r1/agentic_circuit_summary.json | gfsim-firing-preflight | Keep static resource identity constructor-validated, address scratch reusable, prepared Queue payloads borrowed only until Xfer, discard publication copy-free, and generated firing value/backpressure/reset/parity behavior green | | 0260 | implemented-verified | docs/rfcs/pyc6-decisions.md, docs/development/sdk-release-contract.md, simulator/gfsim/include/gfsim/dispatch.h, simulator/gfsim/include/gfsim/object.h, simulator/gfsim/include/gfsim/queue_blocks.h, simulator/gfsim/system.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, python/agentic-circuit/src/agentic_circuit/_queue_codegen.py, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/cpp/agentic-circuit/gfsim/core_test.cpp, tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp, tests/python/agentic-circuit/python_frontend/test_queue_codegen.py, tests/integration/agentic-circuit/e2e/test_queue_codegen.py, docs/gates/logs/20260914-issue128-sink-activation-r1/agentic_circuit_summary.json | gfsim-sink-activation | Keep System-owned scheduler plans, generated activation configuration, bounded/drain-only sink retention, consumer output equivalence, activation traversal, reduced Work invocation, and model-bundle no-scan behavior green | | 0261 | implemented-verified | docs/rfcs/pyc6-decisions.md, docs/acir/spec/agentic-circuit.md, compiler/acir/lib/Analysis/VariableAnalysis.cpp, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, tests/cpp/agentic-circuit/Analysis/ModelAnalysisTest.cpp, tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir, docs/gates/logs/20260915-issue126-field-order-canonical/summary.json | acir-analysis | Keep field lists set-valued and normalized to Table Entry declaration order for read and write endpoints; normalize before snapshot comparison, merge, and emission; retain the order-independence and non-normalized-rejection regressions | +| 0262 | implemented-verified | docs/rfcs/pyc6-decisions.md, docs/acir/spec/agentic-circuit.md, docs/acir/spec/agentic-circuit.zh-CN.md, python/agentic-circuit/src/agentic_circuit/_queue_frontend.py, compiler/acir/include/acir/Dialect/ACIR/ACIROps.td, compiler/acir/lib/Dialect/ACIR/ACIROps.cpp, compiler/acir/lib/Transforms/LowerRules.cpp, compiler/acir/lib/CodeGen/QueueGraphPlan.cpp, compiler/acir/lib/CodeGen/QueueGraphGenerator.cpp, simulator/gfsim/include/gfsim/queue_blocks.h, examples/agentic-circuit/state/slot_rule_mailbox.py, tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir, tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp, tests/python/agentic-circuit/python_frontend/test_queue_frontend.py, tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py, docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md | acir-slot-transactions | Keep module-owned Slot parameters and nested captures, unique release ownership, firing-local guarded release effects, atomic Queue/Table/Slot prepare-publish-cancel, slot-only activation, committed snapshot visibility, reset, no-same-epoch refill, deterministic QueueGraph generation, and explicit provisional PYC rejection green | diff --git a/docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt b/docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt new file mode 100644 index 000000000..ca8a339a3 --- /dev/null +++ b/docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt @@ -0,0 +1,18 @@ +/home/lc/.codex/skills/pyc6/scripts/run.sh cmake --build /home/lc/pyCircuit/.pycircuit_out/local-clang22/build --target acir-opt acir-queue-plan acir-queue-cxxgen acir-queue-pycgen GfsimTests CodeGenTests -j 24 +/home/lc/.codex/skills/pyc6/scripts/run.sh ctest --test-dir /home/lc/pyCircuit/.pycircuit_out/local-clang22/build --output-on-failure -R '^(GfsimTests|CodeGenTests|ACIROpsTests)$' +/home/lc/.codex/skills/pyc6/scripts/run.sh lit -sv --filter='rule-slot-release-lowering|firing-field-write|firing-field-replace-order' /home/lc/pyCircuit/.pycircuit_out/local-clang22/build/compiler/acir/tests/mlir +/home/lc/.codex/skills/pyc6/scripts/run.sh python tests/python/agentic-circuit/python_frontend/test_queue_frontend.py QueueFrontendTest.test_rule_slot_release_lowers_as_a_guarded_transaction_effect QueueFrontendTest.test_rule_local_slot_declaration_is_rejected QueueFrontendTest.test_slot_may_have_read_only_rule_and_one_release_owner QueueFrontendTest.test_slot_rejects_multiple_rule_release_owners QueueFrontendTest.test_outputless_rule_may_release_a_slot +/home/lc/.codex/skills/pyc6/scripts/run.sh python -m unittest tests.integration.agentic-circuit.e2e.test_slot_rule_transaction -v +/home/lc/.codex/skills/pyc6/scripts/run.sh python tools/agentic-circuit/generate-diagnostic-catalog.py --check +/home/lc/.codex/skills/pyc6/scripts/run.sh python tools/agentic-circuit/check-ir-coverage.py +/home/lc/.codex/skills/pyc6/scripts/run.sh python tests/python/agentic-circuit/contracts/test_ir_coverage.py IRCoverageTest.test_read_only_checker_accepts_the_repository +/home/lc/.codex/skills/pyc6/scripts/run.sh python tests/python/agentic-circuit/contracts/test_contracts.py RepositoryContractsTest.test_diagnostic_explanation_catalog_is_closed_and_versioned +/home/lc/.codex/skills/pyc6/scripts/run.sh python -m unittest discover -s tests/python/agentic-circuit/contracts -p 'test_*.py' +/home/lc/.codex/skills/pyc6/scripts/run.sh python -m unittest discover -s tests/python/agentic-circuit/python_frontend -p 'test_*.py' -v +/home/lc/.codex/skills/pyc6/scripts/run.sh cmake --build /home/lc/pyCircuit/.pycircuit_out/local-clang22/build --target check-acir -j 24 +/home/lc/.codex/skills/pyc6/scripts/run.sh python tests/integration/agentic-circuit/e2e/test_queue_codegen.py -v +/home/lc/.codex/skills/pyc6/scripts/run.sh python -m pytest -q tests/unit/test_documentation_layout.py tests/unit/test_agentic_circuit_component.py +/home/lc/.codex/skills/pyc6/scripts/run.sh mkdocs build --strict +/home/lc/.codex/skills/pyc6/scripts/run.sh python flows/tools/check_decision_status.py --rfc docs/rfcs/pyc6-decisions.md --status docs/gates/decision_status_v6.md --out /tmp/issue138-decision-status.json --require-no-deferred --require-all-verified --require-concrete-evidence --require-existing-evidence +git diff --name-only --diff-filter=ACMR origin/main | rg -v '^examples/agentic-circuit/state/reusable_circular_rob.py$' | xargs /home/lc/.codex/skills/pyc6/scripts/run.sh pre-commit run --files +git diff --check diff --git a/docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md b/docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md new file mode 100644 index 000000000..bdc16e68b --- /dev/null +++ b/docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md @@ -0,0 +1,68 @@ +# Agentic Circuit slot rule transactions + +Date: 2026-09-15 + +Base: `origin/main` at `982da52c806e77fc3c7d8b89a4f205615f2cda03` + +Decision: 0262 + +## Result + +- Module- and system-owned slots can be explicit leading rule resources or + hidden resources captured by a nested rule. +- Rule reads use the committed `valid` and payload snapshot. Guarded + `slot.release()` lowers to firing-local `ac.slot.propose_release`. +- QueueGraph and generated GFSim include named Slot activation and transaction + resources in the same preflight, prepare, publish, cancel, and reset protocol + as Queue and Table effects. +- Standalone release remains supported. Duplicate rule owners, mixed standalone + and rule ownership, invalid aliases, scope escapes, and type mismatches fail + closed. +- Public state examples were reduced to maintained authoring patterns; focused + semantic examples remain integration fixtures. +- The feature commit rebased cleanly over upstream field-level firing writes + from #141. The focused field-write and slot-release lowering tests pass + together. + +## Passing evidence + +- Current-checkout native build: `acir-opt`, QueueGraph plan/C++/PYC generators, + `GfsimTests`, and `CodeGenTests` built successfully. +- Native CTest: `GfsimTests`, `ACIROpsTests`, and `CodeGenTests` passed 3/3. +- Focused ACIR lit: slot release lowering plus both upstream firing field-write + tests passed 3/3. +- Focused frontend slot ownership/lowering tests passed 5/5. +- Slot direct/native E2E passed 2/2, including deterministic QueueGraph and C++ + generation, flat/nested cycle agreement, compilation, and execution. +- The generated diagnostic catalog now registers `ACPY-SLOT-003` and + `ACPY-SLOT-004`; its read-only check and focused catalog contract test pass. +- The normative ACIR inventory includes `ac.slot.propose_release`; positive and + negative lit coverage, the generated IR coverage ledger, and its focused + contract test all pass. + +## Checkout-wide gaps + +- The complete Python frontend run executed 391 tests: 388 passed, two skipped, + and one existing typed-state JIT test errored because + `ac.var.assign_element` reported an unresolved persistent struct schema. +- The complete Agentic lit run discovered 243 tests: 232 passed, two were + unsupported, and nine existing tests failed in PYC source-provenance, + hierarchy/function-symbol, memory-endpoint, and process-state verifier paths. + The three slot/field-write tests selected above all pass. +- QueueGraph integration ran 35 tests: 23 passed, three skipped, and nine + existing tests failed on unresolved struct schemas, missing explicit writer + priorities, a stale generated identifier assertion, and temporary source-path + determinism. The dedicated slot transaction E2E remains green. +- Documentation layout and component checks passed 15/16. The only failure is + the existing workspace-local `designs/davincioo` consumer directory, which is + outside this framework change. +- The complete Agentic contract suite passed 48/50. Both remaining failures are + the same workspace-local `designs/` consumer-directory policy check; the + diagnostic catalog and IR inventory failures found by CI are closed. +- Strict decision status accepts Decision 0262 and its concrete evidence, then + stops on the existing missing + `docs/gates/logs/20260913-structured-multi-input-r1/closure_summary.md` + reference shared by Decisions 0189 and 0246. + +Strict MkDocs, changed-file pre-commit hooks (including Markdown and API +hygiene), and `git diff --check` pass. diff --git a/docs/gates/logs/20260915-state-example-curation/commands.txt b/docs/gates/logs/20260915-state-example-curation/commands.txt new file mode 100644 index 000000000..63367304c --- /dev/null +++ b/docs/gates/logs/20260915-state-example-curation/commands.txt @@ -0,0 +1,8 @@ +/home/lc/.codex/skills/pyc6/scripts/run.sh python -c '' +/home/lc/.codex/skills/pyc6/scripts/run.sh env ACIR_OPT=/acir-opt ACIR_QUEUE_PLAN=/acir-queue-plan ACIR_QUEUE_CXXGEN=/acir-queue-cxxgen python -m unittest tests.integration.agentic-circuit.e2e.test_slot_rule_transaction +/home/lc/.codex/skills/pyc6/scripts/run.sh python -m unittest discover -s tests/python/agentic-circuit/python_frontend -p 'test_*.py' +/home/lc/.codex/skills/pyc6/scripts/run.sh env ACIR_OPT=/acir-opt ACIR_QUEUE_PLAN=/acir-queue-plan ACIR_QUEUE_CXXGEN=/acir-queue-cxxgen python tests/integration/agentic-circuit/e2e/test_queue_codegen.py -v +/home/lc/.codex/skills/pyc6/scripts/run.sh env ACIR_QUEUE_PYCGEN=/acir-queue-pycgen python -m unittest tests.integration.agentic-circuit.e2e.test_pyc_backend.PycBackendTest.test_rule_retirement_builds_pyc_and_verilog +/home/lc/.codex/skills/pyc6/scripts/run.sh python -m pytest -q tests/unit/test_documentation_layout.py tests/unit/test_agentic_circuit_component.py +/home/lc/.codex/skills/pyc6/scripts/run.sh python flows/tools/check_decision_status.py --rfc docs/rfcs/pyc6-decisions.md --status docs/gates/decision_status_v6.md --out /tmp/state-example-decision-status.json --require-no-deferred --require-all-verified --require-concrete-evidence --require-existing-evidence +git diff --check diff --git a/docs/gates/logs/20260915-state-example-curation/summary.md b/docs/gates/logs/20260915-state-example-curation/summary.md new file mode 100644 index 000000000..5b5d0a74e --- /dev/null +++ b/docs/gates/logs/20260915-state-example-curation/summary.md @@ -0,0 +1,46 @@ +# Agentic Circuit state example curation + +Date: 2026-09-15 + +## Result + +- Reduced the public state catalog to seven Python examples. +- Moved fifteen decision-specific sources to + `tests/integration/agentic-circuit/e2e/fixtures/state/` without changing their + system names or behavior. +- Consolidated explicit slot-resource arguments and nested slot capture in one + public `slot_rule_mailbox.py` example. +- Removed the unreferenced handwritten `table_multi_writer_issue.mlir`; the + Python fixture and focused MLIR coverage remain authoritative. +- Updated current specifications, Decision prose, status evidence, and test + source paths. Historical gate logs were not rewritten. + +## Passing evidence + +- Frontend lowering: all seven public state examples and all sixteen state + fixtures lowered successfully. +- Slot rule E2E: 2/2 passed, including public native C++ generation/compilation + and flat/nested runtime equivalence. +- Relocated rule fixture path checks: 2/2 passed for direct-codegen rejection + and JIT native lowering. +- Relocated rule PYC/Verilog build: 1/1 passed. +- Documentation layout: 8/8 passed. +- Changed-file pre-commit hooks: passed, including Markdown lint and API + hygiene. +- `git diff --check`: passed. + +## Checkout-wide gaps observed + +- The Python frontend suite ran 395 tests: 392 passed, 2 skipped, and one + typed-state JIT test failed because `ac.var.assign_element` reported an + unresolved persistent struct schema. +- QueueGraph integration ran 35 tests: 23 passed, 3 skipped, and 9 failed in + the current feature checkout. The failures are semantic/code-generation + issues (unresolved struct schema, missing writer priority, a stale generated + identifier assertion, and source-path determinism), not missing curated + source paths. +- The combined documentation/component run passed 15/16; the remaining policy + test found the existing out-of-tree consumer directory `designs/davincioo`. +- Strict Decision status accepted the relocated evidence paths, then stopped on + two pre-existing missing evidence files referenced by Decisions 0189 and + 0246: `docs/gates/logs/20260913-structured-multi-input-r1/closure_summary.md`. diff --git a/docs/reference/language.md b/docs/reference/language.md index bc962e72e..967b9238d 100644 --- a/docs/reference/language.md +++ b/docs/reference/language.md @@ -8,7 +8,7 @@ > > **当前契约**:V6 以周期感知(Cycle-Aware)信号模型与层次化组合为正式语言设计,并统一类型化数据体系、Sidecar 测试调度、双编译路径以及存储 / FIFO / CDC 原语。Decision 0148 取代了早期移除全局周期感知模型的方向。 > -> **Agentic Circuit 边界**:Agentic Circuit 使用 epoch `0.5`,Python 以简单的 `@ac.rule` 作为唯一显式调度边界,MLIR pass 负责类型/effect 推导、检查、握手、调度与 marker 消除。Decision 0241 的有界 Table profile 已通过显式 `pyc.reg` bank 贯通 QueueGraph/gfsim、PYC C++ 与 Verilog;超出 rank、entry、位宽、总容量或 writer 上限的状态仍在 backend admission 边界 fail closed。该迁移不改变 CycleAwareSignal 或 PYC 的语义。 +> **Agentic Circuit 边界**:Agentic Circuit 使用 epoch `0.5`,Python 以简单的 `@ac.rule` 作为唯一显式调度边界,MLIR pass 负责类型/effect 推导、检查、握手、调度与 marker 消除。Decision 0241 的有界 Table profile 已通过显式 `pyc.reg` bank 贯通 QueueGraph/gfsim、PYC C++ 与 Verilog;Decision 0262 允许 module/system 中声明的 `ac.slot` 作为 rule 前置资源参数或 nested capture,并以无参数 `slot.release()` 参与同一 GFSim 原子事务。Slot 仍不进入 PYC/RTL profile。超出 rank、entry、位宽、总容量或 writer 上限的状态仍在 backend admission 边界 fail closed。该迁移不改变 CycleAwareSignal 或 PYC 的语义。 --- diff --git a/docs/rfcs/pyc6-decisions.md b/docs/rfcs/pyc6-decisions.md index 9e6ad02f1..3e7c4a79b 100644 --- a/docs/rfcs/pyc6-decisions.md +++ b/docs/rfcs/pyc6-decisions.md @@ -4814,7 +4814,8 @@ would not prove that generated execution follows Python's serial order. temporary/static immutable index classification. - MLIR lowering tests prove structured footprints and priorities survive on Frozen firing IR. -- The `shared_indexed_rules.py` generated-model test evaluates Work in reverse, +- The `tests/integration/agentic-circuit/e2e/fixtures/state/shared_indexed_rules.py` + generated-model test evaluates Work in reverse, arbitrates in stable order, and proves the lower-priority same-entry input is retained until it observes and replaces the first committed value. @@ -4855,9 +4856,11 @@ the model and its performance. **Verification** - ACIR lit proves `ready_valid_1x0_table`, zero-result firing/plan generation, typed condition retention, and C++20 compilation. -- `consume_only_completion.py` consumes and updates one indexed persistent list +- `tests/integration/agentic-circuit/e2e/fixtures/state/consume_only_completion.py` + consumes and updates one indexed persistent list entry without any sink. -- `state_driven_retire.py` combines an outputless allocator with a zero-input +- `tests/integration/agentic-circuit/e2e/fixtures/state/state_driven_retire.py` + combines an outputless allocator with a zero-input guarded retire and proves that a full output Queue preserves the committed entry until the result can be accepted. @@ -4912,7 +4915,8 @@ footprints and encourages whole-structure copies. - MLIR lit proves four ordered writes to one owner survive rule lowering and generate compiling C++20 owner-local batch code; native analysis tests cover disjoint index domains and structurally equivalent complementary paths. -- `multi_state_allocate.py` proves a scalar tail and persistent Python list are +- `tests/integration/agentic-circuit/e2e/fixtures/state/multi_state_allocate.py` + proves a scalar tail and persistent Python list are updated together through the complete frontend-to-gfsim path. **Source** @@ -4929,7 +4933,8 @@ than a FIFO or `reorder` wrapper. The acceptance model must expose the failure modes that motivated compiler-inferred Queue checks and atomic state effects. **Decision (strong constraint)** -- `circular_rob.py` uses ordinary typed system parameters/returns, `@ac.rule`, +- `tests/integration/agentic-circuit/e2e/fixtures/state/circular_rob.py` uses + ordinary typed system parameters/returns, `@ac.rule`, scalar variables, one fixed Python list, record field expressions, and a single guarded block. It contains no explicit source/sink, Queue/Table/Reg, ready/full, pop/push, reservation, publish, or commit spelling. @@ -5452,7 +5457,8 @@ resource concepts into the frontend. follow-up work. **Verification** -- `inferred_multi_state_module.py` declares `count` and `total`, updates both in +- `tests/integration/agentic-circuit/e2e/fixtures/state/inferred_multi_state_module.py` + declares `count` and `total`, updates both in serial Python, and returns `total + count` without naming any hardware resource or transaction primitive. - Raw ACIR contains two declarations, reads, and assignments in one rule. The @@ -6582,7 +6588,8 @@ compiler-proven path-local effects. - ACIR lit proves complementary proposals through Rule-to-Firing lowering, frozen QueueGraph JSON, gfsim generation, and C++20 compilation. Existing invalid lit continues to reject two unrelated effect predicates. -- `branch_local_state.py` contains one input and two scalar lexical owners. +- `tests/integration/agentic-circuit/e2e/fixtures/state/branch_local_state.py` + contains one input and two scalar lexical owners. End-to-end execution sends a left-selecting command followed by a right-selecting command and observes exactly `left=7,right=0`, then `left=7,right=9`. @@ -6641,7 +6648,8 @@ branch values should join before storage and transaction selection. ternary code, and PYC `pyc.select` lowering. - Frontend coverage proves two same-owner arms generate one `ac.var.select`, one `ac.var.assign`, and no second owner proposal. -- `branch_join_state.py` selects direct value 9 on the true arm and incremented +- `tests/integration/agentic-circuit/e2e/fixtures/state/branch_join_state.py` + selects direct value 9 on the true arm and incremented value 8 on the false arm. End-to-end generated gfsim execution observes both results while the frozen plan retains exactly one `total` state write whose presence equals the rule candidate. @@ -6693,7 +6701,8 @@ joining only the value could write the correct value to the wrong index. proposal presence. - ACIR/QueueGraph/gfsim lit preserves two typed `value_select` records, one dynamic state proposal, and C++20-compilable ternary code. -- `indexed_branch_join.py` sends a false-arm command selecting entry 1 and +- `tests/integration/agentic-circuit/e2e/fixtures/state/indexed_branch_join.py` + sends a false-arm command selecting entry 1 and observes value 8, then sends a true-arm command selecting entry 3 and observes value 9. Entry 3 remains zero after the first command and entry 1 remains 8 after the second. @@ -6754,7 +6763,8 @@ the functional rule has already discarded. presence preservation, QueueGraph JSON, optional gfsim output generation, and C++20 compilation. Invalid Firing coverage rejects optional output under a false candidate. -- `optional_output_state.py` is executed with its output Queue deliberately +- `tests/integration/agentic-circuit/e2e/fixtures/state/optional_output_state.py` + is executed with its output Queue deliberately held full. A false-presence input is consumed and increments count from 0 to 1; a true-presence input remains queued with count unchanged, then consumes and increments to 2 only after capacity is released. @@ -10034,3 +10044,68 @@ ordering was cost without contract. **Source** - PTO-ISA/pyCircuit issue #126. + +## Decision 0262: slot release may participate in one rule firing transaction + +**Status:** Accepted and implemented + +**Extends:** Decisions 0148, 0152, 0226, 0236, 0259, and 0260. + +**Context / Goal** +An `ac.slot` is the committed one-entry mailbox used to decouple Queue arrival +from later stateful work. A standalone release endpoint could observe Table +selection, but a rule could not atomically combine Queue consumption, output +production, Table or persistent-state updates, and release of the slot whose +payload it used. Consumer designs consequently had to split one architectural +action across independent scheduler transactions. + +**Decision (strong constraint)** +- Slots remain topology resources declared in `@ac.module` or `@ac.system`. + Declaring `ac.slot(...)` inside `@ac.rule` is invalid. An external rule may + receive a slot as a leading resource parameter; a nested rule capture is + desugared to the same hidden explicit parameter. +- A rule may observe `slot.valid` and `slot.value` and may call the no-argument + `slot.release()`. Python control flow supplies the release predicate. The + frontend lowers the effect to firing-local + `ac.slot.propose_release @slot when %condition`; the operation is legal only + directly in `ac.rule` or `ac.firing` and retains the slot's stable identity. +- Table, persistent variable, and Slot resources form the leading resource + parameter region; Queue payload parameters follow. One rule may release + several distinct slots conditionally. A slot has exactly one release owner: + either one standalone `ac.slot.release` endpoint or one rule. Other rules may + read the same committed slot snapshot. Duplicate owners, aliases, unrelated + scope captures, and type mismatches fail closed. +- Lowered firing evidence names every observed Slot as an activation source + and every proposed release as a transaction resource. A no-Queue-input rule + is attempted at most once per activation epoch; capture and committed-valid + activation make it eligible, while a false functional condition creates no + candidate transaction. +- GFSim applies one preflight, prepare-all, publish-all protocol across Queue + inputs, selected Queue outputs, Table/persistent owners, and zero or more Slot + release reservations. Any backpressure, owner conflict, or invalid selected + Slot stalls the whole firing and cancels all prepared resources. Successful + release clears `valid` at Xfer while retaining the payload value. +- Slot capture remains owned by `QueueSlot`. A newly captured value is visible + only after its Xfer edge. A Slot full at the start of an epoch cannot refill + in the epoch in which a rule releases it. Reset clears valid, candidate, and + release-reservation state. Existing standalone release behavior is unchanged. +- QueueGraph and native GFSim generation support this transaction shape for + flat and hierarchy-preserving modules. PYC/RTL remain outside the provisional + Slot backend profile and continue to reject it explicitly rather than + partially lowering the effect. + +**Required verification** +- Cover external parameters, nested capture, read-only sharing, outputless + release, multiple conditional Slot effects, owner/alias/scope/type failures, + deterministic raw/lowered ACIR and QueueGraph JSON, and the existing + standalone release path. +- Exercise GFSim output backpressure, owner conflict, cancellation, reset, + retained payload, no-same-epoch refill, and slot-only activation without + repeated firing. Compile flat and structured generated C++ and compare their + accepted values and cycles. +- Preserve the explicit ACIR-to-PYC provisional-Slot rejection and run the + Agentic Circuit semantic, documentation, changed-file, and strict + decision-status gates. + +**Source** +- PTO-ISA/pyCircuit issue #138. diff --git a/examples/agentic-circuit/state/README.md b/examples/agentic-circuit/state/README.md index 4f6161c95..e259059eb 100644 --- a/examples/agentic-circuit/state/README.md +++ b/examples/agentic-circuit/state/README.md @@ -1,134 +1,31 @@ -# Stateful Issue Table - -`issue.py` is the stateful Table example in this directory. It combines: - -- two field-disjoint operand wakeup writers; -- minimum-age selection and grant-driven read; -- scalar `valid` clear after issue; -- explicit empty-slot match/choose followed by complete Entry allocation; -- allocation backpressure while no old-state empty slot is available. - -All Table expressions observe the old committed image. Consequently a wakeup -becomes selectable on the following tick, and a slot cleared by issue becomes -visible to the empty-slot selector on the following tick. Allocation remains a -state-driven scalar endpoint and replaces the complete selected Entry. The -example intentionally updates only entries resident when a wakeup is consumed. -It does not persist global tag-ready state or re-query later allocations, so it -is not the lost-wakeup solution tracked by issue #11. - -The checked multi-writer Frozen ACIR fixture remains -`table_multi_writer_issue.mlir`. Additional Python inputs used only for E2E -regression coverage live under -`tests/integration/agentic-circuit/e2e/fixtures/table_examples/` and are not -public examples. - -`rob.py` is the first epoch 0.5 rule-lowering example. It is intentionally a -bounded, non-wrapping retirement demo rather than a complete circular ROB: a -pure `@ac.rule` marks incoming entries done, and `ac.reorder` retires sequence -numbers in order. The example exercises typed obligations, internal -`ac.firing`, proof-driven `ac.transform` canonicalization, QueueGraph C++ -generation, and gfsim execution. Allocation/completion Table rules and wrapped -sequence arithmetic remain follow-up stateful slices. - -`table_multi_input_rule.py` extends the inferred state transition to -heterogeneous Queue inputs. One Table replacement, every input consumption, -and the returned old Entry share the compiler-generated -`ready_valid_Nx1_table` commit group. Python still contains no Queue readiness, -pop, push, reservation, or commit operations. - -`variable_accumulator.py` is the first generic persistent-field example. A -normal annotated lexical variable and ordinary assignment lower through -`ac.var.decl/read/assign`; MLIR then selects committed storage before rule and -gfsim lowering. Python names no register or Table primitive. - -`branch_local_state.py` uses one plain Python `if/else` to select exactly one of -two lexical state owners. MLIR proves complementary SSA presence, and generated -gfsim commits the input plus only the selected owner in one transaction. - -`branch_join_state.py` assigns the same scalar lexical owner in both arms. -Compiler-owned `ac.var.select` joins the values before storage selection, so -the frozen plan contains one owner write; gfsim uses a ternary and PYC uses the -same `pyc.select` semantics. - -`indexed_branch_join.py` extends the same rule to one persistent list. The -compiler joins both branch indices and both values, preserving one dynamic -Table proposal; the unselected index receives no write. - -`optional_output_state.py` always increments lexical state but returns its input -only when a normal Python condition is true. MLIR qualifies output-capacity -checks with SSA presence: absent output ignores backpressure, while present -output stalls input and state together. - -`inferred_stateful_module.py` moves the same variable contract inside a normal -typed `@ac.module`. Two ordinary calls reuse one generated specialization class -while constructing independent persistent state for each instance. Python -still names only the lexical `total` variable; MLIR inserts storage, handshake, -backpressure, and the atomic Queue-plus-state transaction. - -`inferred_multi_state_module.py` extends that module to correlated `count` and -`total` variables. MLIR retains both proposals in one multi-owner commit group; -an output-full stall cannot consume the input or update either value in -isolation. - -`indexed_variable_array.py` extends the same family to a normal persistent -Python `list`. MLIR sees shaped `ac.var` element reads and assignments, then -selects the committed indexed storage without exposing Table syntax in Python. - -`shared_indexed_rules.py` has two lexical rule instances targeting that same -list. MLIR emits ordered state footprints; gfsim evaluates both candidates in -Work and performs conflicting reservation/publication only in stable Arbitrate -order. - -`consume_only_completion.py` demonstrates a state update with no returned -value. A normal early `return` discards a stale completion: MLIR infers a -constant-true input candidate and a separate state-write presence. The input -commits even when the write is absent, while a fresh completion reserves and -updates the indexed state without a dummy output or sink. - -`state_driven_retire.py` demonstrates a zero-input rule guarded by committed -state. The inferred output-capacity check is part of the same transaction as -clearing the entry, so output backpressure preserves the old state. - -`multi_state_allocate.py` demonstrates one rule atomically advancing a scalar -tail and updating a dynamically indexed entry list. Both logical variables -remain `ac.var` until MLIR selects heterogeneous state owners and one generated -multi-state commit group. - -`circular_rob.py` composes the completed rule flow into a four-entry circular -ROB. It has typed flush/allocation/completion inputs and allocation/retirement -results, while ordinary scalar/list variables hold head, tail, occupancy, -recovery epoch, and per-slot generation. Python contains no explicit Queue, -Table, source/sink, ready/full, pop/push, reservation, or commit mechanics. - -`reusable_circular_rob.py` moves the same recover/allocate/complete/retire flow -behind an ordinary typed 3-input/2-output `@ac.module`. The root places it twice -with tuple assignment. Frozen ACIR and generated C++ retain one specialization -body/class, while each placement owns independent head, tail, count, epoch, and -entry state. Completion uses a serial two-step early-return guard chain for -generation and epoch rejection: stale tags consume without state commit, while -an overlapping same-epoch allocation forces snapshot revalidation before the -completion is classified. -`ACDataFlowAnalyzer` derives exact reservations for the entry index and scalar -epoch read, so the Python rule contains no dummy `epoch = epoch` write. -The same proof records only the `generation` and `epoch` Entry fields consulted -by completion; unrelated Entry fields are not part of its snapshot conflict -set. - -`reusable_oldest_ready_isq.py` uses the same Pythonic state contract for a -four-entry issue queue. `ac.find(entries, where=..., key=...)` is an algorithmic -query over an ordinary persistent `list`, returning `valid`, `index`, and -`value`; it is not a Queue or Table object. MLIR lowers the generic -`ac.var.match/choose` query only after storage selection. A separate persistent -boolean list tracks source-tag readiness, including false updates on tag reuse. -The state-driven issue rule reads that list without adding it to the atomic -write closure. `ACDataFlowAnalyzer` derives an `ac.state.snapshot_set` from the -readiness indices actually evaluated by the entry match; generated gfsim builds -that set in the original scan rather than scanning readiness a second time. -Readiness changes therefore trigger a new oldest-ready query without bulk -rewriting every resident entry. Two placements share one generated class and -own independent entries and readiness state. - -The same inference applies when a normal `ac.find(..., key=...)` lambda indexes -another persistent list. The choose index is compiler-owned evaluation -provenance, and only foreign indices read for candidate keys join the snapshot -reservation mask. +# Stateful Agentic Circuit examples + +These public examples cover the supported state-authoring paths without also +serving as compiler regression fixtures. Focused branch, presence, arbitration, +and backend cases live under +`tests/integration/agentic-circuit/e2e/fixtures/state/`. + +| Example | What it teaches | +| --- | --- | +| `table_rule.py` | Minimal explicit Table replacement committed atomically with Queue input and output. | +| `issue.py` | Explicit Table match/choose, field-disjoint updates, retained slot inputs, and old-image semantics. | +| `inferred_stateful_module.py` | A normal annotated Python variable becoming instance-local committed module state. | +| `inferred_nested_rule.py` | A nested rule capturing lexical state while repeated module placements stay isolated. | +| `reusable_circular_rob.py` | A reusable multi-rule ROB with heterogeneous atomic state, recovery, and stale-completion rejection. | +| `reusable_oldest_ready_isq.py` | Persistent-list `ac.find`, read-only state dependencies, and reusable oldest-ready scheduling. | +| `slot_rule_mailbox.py` | Explicit-argument and nested-capture forms of transactional rule-owned slot release. | + +## State and transaction model + +Rules and stateful modules observe one committed snapshot at activation. Their +selected Queue transfers, Table or lexical-state updates, outputs, and slot +releases prepare together and publish at the tick edge. Backpressure or a state +conflict leaves the complete transaction unchanged. + +Slots remain topology-owned resources declared in a module or system. A rule +may read `slot.valid` and `slot.value`; exactly one rule or standalone endpoint +may own release. See `slot_rule_mailbox.py` for both supported module forms. + +`issue.py` intentionally demonstrates resident-entry Table behavior rather +than a complete lost-wakeup solution. `reusable_oldest_ready_isq.py` shows the +Pythonic persistent-readiness design that handles wakeup-before-dispatch. diff --git a/examples/agentic-circuit/state/slot_rule_mailbox.py b/examples/agentic-circuit/state/slot_rule_mailbox.py new file mode 100644 index 000000000..620fd01e5 --- /dev/null +++ b/examples/agentic-circuit/state/slot_rule_mailbox.py @@ -0,0 +1,45 @@ +"""Two equivalent ways to consume a module-owned slot from a rule.""" + +import agentic_circuit as ac + + +@ac.struct +class Event: + value: ac.u8 + + +@ac.rule +def consume(mailbox) -> Event: + if mailbox.valid: + event = mailbox.value + mailbox.release() + return event + + +@ac.module +def explicit_mailbox(incoming: Event) -> Event: + mailbox = ac.slot(incoming) + outgoing = consume(mailbox) + return outgoing + + +@ac.module +def nested_mailbox(incoming: Event) -> Event: + mailbox = ac.slot(incoming) + + @ac.rule + def consume_captured() -> Event: + if mailbox.valid: + event = mailbox.value + mailbox.release() + return event + + outgoing = consume_captured() + return outgoing + + +@ac.system +def slot_rule_mailbox(left: Event, right: Event) -> tuple[Event, Event]: + explicit_result = explicit_mailbox(left) + nested_result = nested_mailbox(right) + return explicit_result, nested_result diff --git a/examples/agentic-circuit/state/table_multi_writer_issue.mlir b/examples/agentic-circuit/state/table_multi_writer_issue.mlir deleted file mode 100644 index 381dc060f..000000000 --- a/examples/agentic-circuit/state/table_multi_writer_issue.mlir +++ /dev/null @@ -1,97 +0,0 @@ -module attributes {ac.contract_epoch = "0.5", ac.model_kind = "queue_graph", ac.queue_graph_domain = "cycle", ac.system = "table_multi_writer_issue"} { - ac.type_scope @types { - ac.struct @Entry fields [{name = "valid", type = i1}, {name = "age", type = i8}, {name = "src0_tag", type = i8}, {name = "src0_ready", type = i1}, {name = "src1_tag", type = i8}, {name = "src1_ready", type = i1}] - ac.struct @Wakeup fields [{name = "tag", type = i8}, {name = "valid", type = i1}] - } {dlti.dl_spec = #dlti.dl_spec = {abi_alignment = 1 : i64, endianness = "little", preferred_alignment = 1 : i64, size = 6 : i64}, !ac.struct<@types::@Wakeup> = {abi_alignment = 1 : i64, endianness = "little", preferred_alignment = 1 : i64, size = 2 : i64}>} - ac.table @issue entry !ac.struct<@types::@Entry> entries 4 init 0 owner "/" stable_id "table/issue" - %wakeups = ac.source depth 2 latency 1 {ac.name = "wakeups"} : !ac.queue> - ac.slot @wakeup, %wakeups owner "/" stable_id "slot/wakeup" : !ac.queue> - %table_match_3 = ac.table.match @issue predicate { - ^predicate(%entry: !ac.var>): - %match_3_v0 = ac.var.get %entry field "valid" : !ac.var> -> !ac.var - %match_3_v1 = ac.var.get %entry field "src0_ready" : !ac.var> -> !ac.var - %match_3_v2 = ac.var.constant false as !ac.var - %match_3_v3 = ac.var.cmp "eq" %match_3_v1, %match_3_v2 : !ac.var -> !ac.var - %match_3_v4 = ac.var.mul %match_3_v0, %match_3_v3 : !ac.var - %match_3_v5 = ac.var.get %entry field "src0_tag" : !ac.var> -> !ac.var - %match_3_v6, %match_3_v7 = ac.slot.get @wakeup : !ac.var, !ac.var> - %match_3_v8 = ac.var.get %match_3_v7 field "tag" : !ac.var> -> !ac.var - %match_3_v9 = ac.var.cmp "eq" %match_3_v5, %match_3_v8 : !ac.var -> !ac.var - %match_3_v10 = ac.var.mul %match_3_v4, %match_3_v9 : !ac.var - ac.table.match.yield %match_3_v10 : !ac.var - } -> !ac.var - ac.table.masked_write @issue %table_match_3 : !ac.var mode "field" write_fields ["src0_ready"] enable { - ^enable: - %enable_v0, %enable_v1 = ac.slot.get @wakeup : !ac.var, !ac.var> - ac.table.yield %enable_v0 : !ac.var - } value { - ^value(%old: !ac.var>): - %value_v0 = ac.var.constant true as !ac.var - %value_v1 = ac.var.with %old, %value_v0 field "src0_ready" : !ac.var>, !ac.var -> !ac.var> - ac.table.yield %value_v1 : !ac.var> - } {ac.endpoint_path = "/issue__masked_write", ac.name = "issue__masked_write"} - %table_match_5 = ac.table.match @issue predicate { - ^predicate(%entry: !ac.var>): - %match_5_v0 = ac.var.get %entry field "valid" : !ac.var> -> !ac.var - %match_5_v1 = ac.var.get %entry field "src1_ready" : !ac.var> -> !ac.var - %match_5_v2 = ac.var.constant false as !ac.var - %match_5_v3 = ac.var.cmp "eq" %match_5_v1, %match_5_v2 : !ac.var -> !ac.var - %match_5_v4 = ac.var.mul %match_5_v0, %match_5_v3 : !ac.var - %match_5_v5 = ac.var.get %entry field "src1_tag" : !ac.var> -> !ac.var - %match_5_v6, %match_5_v7 = ac.slot.get @wakeup : !ac.var, !ac.var> - %match_5_v8 = ac.var.get %match_5_v7 field "tag" : !ac.var> -> !ac.var - %match_5_v9 = ac.var.cmp "eq" %match_5_v5, %match_5_v8 : !ac.var -> !ac.var - %match_5_v10 = ac.var.mul %match_5_v4, %match_5_v9 : !ac.var - ac.table.match.yield %match_5_v10 : !ac.var - } -> !ac.var - ac.table.masked_write @issue %table_match_5 : !ac.var mode "field" write_fields ["src1_ready"] enable { - ^enable: - %enable_v0, %enable_v1 = ac.slot.get @wakeup : !ac.var, !ac.var> - ac.table.yield %enable_v0 : !ac.var - } value { - ^value(%old: !ac.var>): - %value_v0 = ac.var.constant true as !ac.var - %value_v1 = ac.var.with %old, %value_v0 field "src1_ready" : !ac.var>, !ac.var -> !ac.var> - ac.table.yield %value_v1 : !ac.var> - } {ac.endpoint_path = "/issue__masked_write_1", ac.name = "issue__masked_write_1"} - %table_match_7 = ac.table.match @issue predicate { - ^predicate(%entry: !ac.var>): - %match_7_v0 = ac.var.get %entry field "valid" : !ac.var> -> !ac.var - %match_7_v1 = ac.var.get %entry field "src0_ready" : !ac.var> -> !ac.var - %match_7_v2 = ac.var.mul %match_7_v0, %match_7_v1 : !ac.var - %match_7_v3 = ac.var.get %entry field "src1_ready" : !ac.var> -> !ac.var - %match_7_v4 = ac.var.mul %match_7_v2, %match_7_v3 : !ac.var - ac.table.match.yield %match_7_v4 : !ac.var - } -> !ac.var - %table_choose_8_index, %table_choose_8_valid = ac.table.choose @issue %table_match_7 : !ac.var count 1 policy #ac key_order #ac stable_id "table/choose/min" key { - ^key(%entry: !ac.var>): - %choose_8_v0 = ac.var.get %entry field "age" : !ac.var> -> !ac.var - ac.table.choose.yield %choose_8_v0 : !ac.var - } -> !ac.var, !ac.var - %output = ac.table.read @issue depth 1 latency 1 address { - ^address: - ac.table.yield %table_choose_8_index : !ac.var - } when { - ^when: - ac.table.yield %table_choose_8_valid : !ac.var - } {ac.endpoint_path = "/output", ac.name = "output"} -> !ac.queue> - ac.table.write @issue mode "field" write_fields ["valid"] address { - ^address: - ac.table.yield %table_choose_8_index : !ac.var - } enable { - ^enable: - ac.table.yield %table_choose_8_valid : !ac.var - } value { - ^value: - %v0 = ac.table.get @issue [%table_choose_8_index] : !ac.var -> !ac.var> - %v1 = ac.var.constant false as !ac.var - %v2 = ac.var.with %v0, %v1 field "valid" : !ac.var>, !ac.var -> !ac.var> - ac.table.yield %v2 : !ac.var> - } {ac.endpoint_path = "/issue__write", ac.name = "issue__write"} - ac.slot.release @wakeup when { - ^when: - %v0, %v1 = ac.slot.get @wakeup : !ac.var, !ac.var> - ac.slot.yield %v0 : !ac.var - } {ac.endpoint_path = "/wakeup__release", ac.name = "wakeup__release"} - ac.sink %output {ac.name = "sink_12"} : !ac.queue> -} diff --git a/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py b/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py index b6d5c0c57..a8d55f03f 100644 --- a/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py +++ b/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py @@ -1138,6 +1138,28 @@ class RuleStateOwnerBinding: entries: int +@dataclass(frozen=True, slots=True) +class RuleSlotReleaseDefinition: + argument: str + guard: ast.expr | None = None + guard_negated: bool = False + + +@dataclass(frozen=True, slots=True) +class RuleSlotOwnerBinding: + slot: str + argument: str + payload: ValueType + + +@dataclass(frozen=True, slots=True) +class RuleSlotReleaseBinding: + slot: str + argument: str + guard: ast.expr | None = None + guard_negated: bool = False + + @dataclass(frozen=True, slots=True) class QueueBinding: name: str @@ -1190,6 +1212,8 @@ class QueueBinding: rule_locals: tuple[RuleLocalBinding, ...] = () rule_finds: tuple[RuleFindBinding, ...] = () rule_state_owners: tuple[RuleStateOwnerBinding, ...] = () + rule_slot_owners: tuple[RuleSlotOwnerBinding, ...] = () + rule_slot_releases: tuple[RuleSlotReleaseBinding, ...] = () rule_output_names: tuple[str, ...] = () rule_output_payloads: tuple[ValueType, ...] = () rule_output_expressions: tuple[ast.expr, ...] = () @@ -1615,6 +1639,8 @@ class RuleDefinition: effect_guard: ast.expr | None = None output_guard: ast.expr | None = None state_arguments: tuple[str, ...] = () + slot_arguments: tuple[str, ...] = () + slot_releases: tuple[RuleSlotReleaseDefinition, ...] = () state_writes: tuple[RuleStateWriteDefinition, ...] = () state_reads: tuple[RuleStateReadDefinition, ...] = () locals: tuple[RuleLocalDefinition, ...] = () @@ -3252,18 +3278,43 @@ def _desugar_nested_rule_captures( if len(candidates) != 1: return tree function = candidates[0] + def declared_slot_name(statement: ast.stmt) -> str | None: + if not ( + isinstance(statement, ast.Assign) + and len(statement.targets) == 1 + and isinstance(statement.targets[0], ast.Name) + and isinstance(statement.value, ast.Call) + and _decorator_name(statement.value.func).rsplit(".", 1)[-1] == "slot" + ): + return None + return statement.targets[0].id + state_order = tuple( - statement.target.id + name for statement in function.body - if isinstance(statement, ast.AnnAssign) - and isinstance(statement.target, ast.Name) + for name in ( + ( + statement.target.id + if isinstance(statement, ast.AnnAssign) + and isinstance(statement.target, ast.Name) + else declared_slot_name(statement) + ), + ) + if name is not None ) state_names = set(state_order) state_lines = { - statement.target.id: statement.lineno + name: statement.lineno for statement in function.body - if isinstance(statement, ast.AnnAssign) - and isinstance(statement.target, ast.Name) + for name in ( + ( + statement.target.id + if isinstance(statement, ast.AnnAssign) + and isinstance(statement.target, ast.Name) + else declared_slot_name(statement) + ), + ) + if name is not None } untyped_module_names = { target.id @@ -4479,6 +4530,15 @@ def walk(statements: list[ast.stmt], guard: ast.expr | None = None) -> None: raise QueueFrontendError( "ACPY-RULE-001: rule decorators do not accept options" ) + for candidate in ast.walk(node): + if ( + isinstance(candidate, ast.Call) + and _decorator_name(candidate.func).rsplit(".", 1)[-1] == "slot" + ): + raise QueueFrontendError( + "ACPY-SLOT-003: ac.slot must be declared in module/system " + "topology, not inside an @ac.rule" + ) if ( not node.args.args or node.args.posonlyargs @@ -4597,6 +4657,14 @@ def substitute_helper_locals( continue parameter_names = tuple(argument.arg for argument in node.args.args) + slot_parameter_names = { + candidate.value.id + for candidate in ast.walk(node) + if isinstance(candidate, ast.Attribute) + and candidate.attr == "release" + and isinstance(candidate.value, ast.Name) + and candidate.value.id in parameter_names + } multi_body = list(body) multi_guard: ast.expr | None = None multi_effect_guard: ast.expr | None = None @@ -4634,6 +4702,14 @@ def substitute_helper_locals( and isinstance(multi_body[-1], ast.If) and not multi_body[-1].orelse and multi_return is None + and not ( + slot_parameter_names == set(parameter_names) + and any( + isinstance(candidate, ast.Return) + and not _is_none_return(candidate) + for candidate in multi_body[-1].body + ) + ) ): if multi_effect_guard is not None: raise QueueFrontendError( @@ -4657,6 +4733,7 @@ def substitute_helper_locals( multi_guard = copy.deepcopy(guarded.test) multi_body.extend(guarded_body) guarded_statements: list[tuple[ast.stmt, ast.expr | None, bool]] = [] + slot_releases: list[RuleSlotReleaseDefinition] = [] absent_output_paths: list[ast.expr] = [] has_branch_effects = False branch_condition_index = 0 @@ -4689,14 +4766,27 @@ def flatten_branch( statement: ast.stmt, path: tuple[tuple[ast.expr, bool], ...] = (), ) -> None: - nonlocal branch_condition_index, has_branch_effects + nonlocal branch_condition_index, has_branch_effects, multi_return + nonlocal multi_output_guard if isinstance(statement, ast.Return): - if not _is_none_return(statement) or not path: + if not path: raise QueueFrontendError( "ACPY-RULE-012: branch returns may only omit one output" ) guard, negated = branch_guard(path) assert guard is not None + if not _is_none_return(statement): + if multi_return is not None: + raise QueueFrontendError( + "ACPY-RULE-012: rule permits one value-returning branch" + ) + multi_return = copy.deepcopy(statement.value) + multi_output_guard = ( + ast.UnaryOp(op=ast.Not(), operand=guard) + if negated + else guard + ) + return absent_output_paths.append( ast.UnaryOp(op=ast.Not(), operand=guard) if negated else guard ) @@ -4783,6 +4873,28 @@ def visit_Name(self, node: ast.Name) -> ast.expr: for candidate in statement.orelse: flatten_branch(candidate, (*path, (condition, True))) return + if ( + isinstance(statement, ast.Expr) + and isinstance(statement.value, ast.Call) + and isinstance(statement.value.func, ast.Attribute) + and statement.value.func.attr == "release" + and isinstance(statement.value.func.value, ast.Name) + and statement.value.func.value.id in slot_parameter_names + ): + call = statement.value + if call.args or call.keywords: + raise QueueFrontendError( + "ACPY-SLOT-004: rule slot.release() takes no arguments; " + "use rule control flow for its condition" + ) + guard, negated = branch_guard(path) + slot_releases.append( + RuleSlotReleaseDefinition( + call.func.value.id, guard, negated + ) + ) + has_branch_effects = True + return guard, negated = branch_guard(path) guarded_statements.append((statement, guard, negated)) @@ -5142,6 +5254,7 @@ def guard_covers_partial_values( *(read.argument for read in state_reads), *(find.argument for find in rule_finds), } + state_names.update(slot_parameter_names) state_reference_arguments = { candidate.value.id for local in rule_locals @@ -5226,16 +5339,44 @@ def guard_covers_partial_values( and candidate.value.id in parameter_names ): state_names.add(candidate.value.id) + if ( + rewritten_multi_return is not None + and rewritten_multi_output_guard is not None + and not guarded_statements + and not slot_releases + and set(parameter_names) + == { + candidate.value.id + for candidate in ast.walk(node) + if isinstance(candidate, ast.Attribute) + and candidate.attr in {"valid", "value"} + and isinstance(candidate.value, ast.Name) + and candidate.value.id in parameter_names + } + ): + rule_definitions[node.name] = RuleDefinition( + node.name, + (), + rewritten_multi_return, + node.lineno, + node.col_offset + 1, + output_guard=rewritten_multi_output_guard, + state_arguments=parameter_names, + slot_arguments=parameter_names, + output_types=annotated_single_outputs, + ) + continue ordered_state: tuple[str, ...] = () if state_names: last_state = max(parameter_names.index(name) for name in state_names) ordered_state = parameter_names[: last_state + 1] if ( - valid_multi_state + (valid_multi_state or bool(slot_releases)) and ( state_writes or state_reads or rule_finds + or slot_releases or (multi_return is not None and rule_locals) ) and ( @@ -5259,6 +5400,11 @@ def guard_covers_partial_values( if ( rewritten_multi_output_guard is not None and len(payload_parameters) != 1 + and not ( + not payload_parameters + and bool(slot_parameter_names) + and set(ordered_state) == slot_parameter_names + ) ): raise QueueFrontendError( "ACPY-RULE-012: optional output requires exactly one " @@ -5272,6 +5418,10 @@ def guard_covers_partial_values( "ACPY-RULE-010: conditional-effect early return requires " "exactly one payload parameter" ) + rewritten_slot_releases = tuple( + replace(release, guard=rewrite_local_loads(release.guard)) + for release in slot_releases + ) rule_definitions[node.name] = RuleDefinition( node.name, payload_parameters, @@ -5282,6 +5432,10 @@ def guard_covers_partial_values( effect_guard=rewritten_multi_effect_guard, output_guard=rewritten_multi_output_guard, state_arguments=ordered_state, + slot_arguments=tuple( + name for name in ordered_state if name in slot_parameter_names + ), + slot_releases=rewritten_slot_releases, state_writes=tuple(state_writes), state_reads=tuple(state_reads), locals=tuple(rule_locals), @@ -9450,6 +9604,28 @@ def visit_Name(self, node: ast.Name) -> ast.expr: definition, call = specialize_rule_call( definition, call, static_prefix ) + while ( + definition.arguments + and len(call.args) > len(definition.state_arguments) + and isinstance( + call.args[len(definition.state_arguments)], ast.Name + ) + and call.args[len(definition.state_arguments)].id + in slot_by_name + ): + slot_argument = definition.arguments[0] + definition = replace( + definition, + state_arguments=( + *definition.state_arguments, + slot_argument, + ), + slot_arguments=( + *definition.slot_arguments, + slot_argument, + ), + arguments=definition.arguments[1:], + ) while ( (definition.state_arguments or definition.output_expressions) and definition.arguments @@ -9492,6 +9668,8 @@ def visit_Name(self, node: ast.Name) -> ast.expr: ) multi_state_finds: tuple[RuleFindBinding, ...] = () multi_state_owners: tuple[RuleStateOwnerBinding, ...] = () + rule_slot_owners: tuple[RuleSlotOwnerBinding, ...] = () + rule_slot_releases: tuple[RuleSlotReleaseBinding, ...] = () multi_state_result_type: ValueType | None = None if definition.state_arguments: state_count = len(definition.state_arguments) @@ -9505,21 +9683,47 @@ def visit_Name(self, node: ast.Name) -> ast.expr: "one Queue per payload parameter" ) owners: dict[str, VarStateBinding] = {} + slot_owners: dict[str, SlotBinding] = {} for argument, value in zip( definition.state_arguments, call.args[:state_count], strict=True, ): - if ( - not isinstance(value, ast.Name) - or value.id not in variable_by_name - ): + if not isinstance(value, ast.Name): raise QueueFrontendError( "ACPY-RULE-008: persistent rule parameters " "must precede payload parameters and bind " - "persistent variables" + "persistent variables or slots" + ) + if argument in definition.slot_arguments: + if value.id not in slot_by_name: + raise QueueFrontendError( + "ACPY-SLOT-004: rule slot parameter must " + "bind a visible ac.slot resource" + ) + slot_owners[argument] = slot_by_name[value.id] + else: + if value.id not in variable_by_name: + raise QueueFrontendError( + "ACPY-RULE-008: persistent rule parameters " + "must precede payload parameters and bind " + "persistent variables" + ) + owners[argument] = variable_by_name[value.id] + bound_slot_names = [ + owner.name for owner in slot_owners.values() + ] + if len(set(bound_slot_names)) != len(bound_slot_names): + raise QueueFrontendError( + "ACPY-SLOT-004: one rule cannot alias the same " + "slot through multiple resource parameters" + ) + for owner in slot_owners.values(): + if owner.scope != scope_path[: len(owner.scope)]: + raise QueueFrontendError( + "ACPY-SLOT-004: rule slot parameter crosses " + "an unrelated topology scope" ) - owners[argument] = variable_by_name[value.id] multi_state_owners = tuple( RuleStateOwnerBinding( owner.name, @@ -9529,6 +9733,19 @@ def visit_Name(self, node: ast.Name) -> ast.expr: ) for argument, owner in owners.items() ) + rule_slot_owners = tuple( + RuleSlotOwnerBinding(owner.name, argument, owner.payload) + for argument, owner in slot_owners.items() + ) + rule_slot_releases = tuple( + RuleSlotReleaseBinding( + slot_owners[release.argument].name, + release.argument, + copy.deepcopy(release.guard), + release.guard_negated, + ) + for release in definition.slot_releases + ) for find in definition.finds: owner = owners[find.argument] if owner.entries == 1: @@ -9626,6 +9843,8 @@ def visit_Name(self, node: ast.Name) -> ast.expr: else multi_state_reads[0].value_type if multi_state_reads else multi_state_writes[0].value_type + if multi_state_writes + else rule_slot_owners[0].payload ) elif definition.var_argument is not None: if ( @@ -9803,6 +10022,8 @@ def visit_Name(self, node: ast.Name) -> ast.expr: rule_locals=multi_state_locals, rule_finds=multi_state_finds, rule_state_owners=multi_state_owners, + rule_slot_owners=rule_slot_owners, + rule_slot_releases=rule_slot_releases, rule_output_names=( target_names if definition.output_expressions else () ), @@ -10172,6 +10393,21 @@ def visit_Name(self, node: ast.Name) -> ast.expr: else 0 ) definition, call = specialize_rule_call(definition, call, static_prefix) + while ( + definition.arguments + and len(call.args) > len(definition.state_arguments) + and isinstance( + call.args[len(definition.state_arguments)], ast.Name + ) + and call.args[len(definition.state_arguments)].id in slot_by_name + ): + slot_argument = definition.arguments[0] + definition = replace( + definition, + state_arguments=(*definition.state_arguments, slot_argument), + slot_arguments=(*definition.slot_arguments, slot_argument), + arguments=definition.arguments[1:], + ) if definition.state_arguments: state_count = len(definition.state_arguments) if ( @@ -10184,21 +10420,38 @@ def visit_Name(self, node: ast.Name) -> ast.expr: "Queues" ) owners: dict[str, VarStateBinding] = {} + slot_owners: dict[str, SlotBinding] = {} for argument, value in zip( definition.state_arguments, call.args[:state_count], strict=True, ): - if ( - not isinstance(value, ast.Name) - or value.id not in variable_by_name - ): + if not isinstance(value, ast.Name): raise QueueFrontendError( "ACPY-RULE-008: persistent rule parameters " "must precede payload parameters and bind " - "persistent variables" + "persistent variables or slots" ) - owners[argument] = variable_by_name[value.id] + if argument in definition.slot_arguments: + if value.id not in slot_by_name: + raise QueueFrontendError( + "ACPY-SLOT-004: rule slot parameter must " + "bind a visible ac.slot resource" + ) + slot_owners[argument] = slot_by_name[value.id] + elif value.id in variable_by_name: + owners[argument] = variable_by_name[value.id] + else: + raise QueueFrontendError( + "ACPY-RULE-008: persistent rule parameters " + "must bind persistent variables" + ) + bound_slot_names = [owner.name for owner in slot_owners.values()] + if len(set(bound_slot_names)) != len(bound_slot_names): + raise QueueFrontendError( + "ACPY-SLOT-004: one rule cannot alias the same slot " + "through multiple resource parameters" + ) for find in definition.finds: owner = owners[find.argument] if owner.entries == 1: @@ -10275,7 +10528,11 @@ def visit_Name(self, node: ast.Name) -> ast.expr: effect_rules.append( QueueBinding( f"{definition.name}__effect_{current_order}", - writes[0].value_type, + ( + writes[0].value_type + if writes + else next(iter(slot_owners.values())).payload + ), 1, 1, None if not incoming_queues else incoming_queues[0].name, @@ -10322,6 +10579,21 @@ def visit_Name(self, node: ast.Name) -> ast.expr: ) for argument, owner in owners.items() ), + rule_slot_owners=tuple( + RuleSlotOwnerBinding( + owner.name, argument, owner.payload + ) + for argument, owner in slot_owners.items() + ), + rule_slot_releases=tuple( + RuleSlotReleaseBinding( + slot_owners[release.argument].name, + release.argument, + copy.deepcopy(release.guard), + release.guard_negated, + ) + for release in definition.slot_releases + ), ) ) continue @@ -10545,10 +10817,21 @@ def visit_Name(self, node: ast.Name) -> ast.expr: f"ACPY-TABLE-005: table {table.name!r} requires a read/write endpoint" ) for slot in slots: - if not any(release.slot == slot.name for release in slot_releases): + standalone = sum(release.slot == slot.name for release in slot_releases) + transactional = sum( + release.slot == slot.name + for rule_binding in (*queues, *effect_rules) + for release in rule_binding.rule_slot_releases + ) + if standalone + transactional == 0: raise QueueFrontendError( f"ACPY-SLOT-002: slot {slot.name!r} requires one release endpoint" ) + if standalone + transactional != 1: + raise QueueFrontendError( + f"ACPY-SLOT-002: slot {slot.name!r} permits exactly one release " + "endpoint or transactional rule owner" + ) if not queues or (not sinks and not effect_rules): raise QueueFrontendError( "ACPY-QUEUE-001: a queue system requires an external value and a " @@ -14957,6 +15240,10 @@ def emit_queue( ) for owner in queue.rule_state_owners }, + slot_views={ + owner.argument: (owner.slot, owner.payload) + for owner in queue.rule_slot_owners + }, enum_types=enum_types, bitfields=bitfields, invariants=invariants, @@ -14992,6 +15279,11 @@ def emit_queue( if write.index is not None: rule_expressions.append(write.index) rule_expressions.append(write.value) + rule_expressions.extend( + release.guard + for release in queue.rule_slot_releases + if release.guard is not None + ) referenced_names = { node.id for expression in rule_expressions @@ -15370,10 +15662,18 @@ def emit_queue( or any(write.guard is not None for write in queue.rule_state_writes) or multi_output_guard_results ): - condition_result = emitter._new() - emitter.lines.append( - f" %{condition_result} = ac.var.constant true as !ac.var" - ) + if ( + output_guard_result is not None + and not queue.rule_input_names + and queue.rule_slot_owners + and not queue.rule_state_writes + ): + condition_result = output_guard_result + else: + condition_result = emitter._new() + emitter.lines.append( + f" %{condition_result} = ac.var.constant true as !ac.var" + ) index_result: str | None = None index_type: ValueType | None = None write_result: str | None = None @@ -15447,24 +15747,26 @@ def emit_queue( ] = [] branch_guard_results: dict[tuple[str, bool], str] = {} - def emit_state_guard(state_write: RuleStateWriteBinding) -> str | None: - if state_write.guard is None: + def emit_effect_guard( + guarded: RuleStateWriteBinding | RuleSlotReleaseBinding, + ) -> str | None: + if guarded.guard is None: return None - guard_key = ast.dump(state_write.guard, include_attributes=False) - cache_key = (guard_key, state_write.guard_negated) + guard_key = ast.dump(guarded.guard, include_attributes=False) + cache_key = (guard_key, guarded.guard_negated) cached = branch_guard_results.get(cache_key) if cached is not None: return cached base_key = (guard_key, False) base_result = branch_guard_results.get(base_key) if base_result is None: - base_result, base_type = emitter.emit(state_write.guard, BoolType()) + base_result, base_type = emitter.emit(guarded.guard, BoolType()) if not _is_epoch_05_bool_compatible(base_type): raise QueueFrontendError( "ACPY-RULE-011: branch condition must lower to bool" ) branch_guard_results[base_key] = base_result - if not state_write.guard_negated: + if not guarded.guard_negated: return base_result false_value = emitter._new() emitter.lines.append( @@ -15478,6 +15780,9 @@ def emit_state_guard(state_write: RuleStateWriteBinding) -> str | None: branch_guard_results[cache_key] = result return result + def emit_state_guard(state_write: RuleStateWriteBinding) -> str | None: + return emit_effect_guard(state_write) + def emit_state_value(state_write: RuleStateWriteBinding) -> str: value, value_type = emitter.emit( state_write.value, state_write.value_type @@ -15695,6 +16000,15 @@ def emit_state_index( state_value, state_write.value_type, ) + slot_release_results: list[tuple[RuleSlotReleaseBinding, str]] = [] + for release in queue.rule_slot_releases: + release_guard = emit_effect_guard(release) + if release_guard is None: + release_guard = emitter._new() + emitter.lines.append( + f" %{release_guard} = ac.var.constant true as !ac.var" + ) + slot_release_results.append((release, release_guard)) result: str | None = None multi_output_results: list[str] = [] if queue.rule_has_output: @@ -15841,6 +16155,11 @@ def emit_state_index( f"!ac.var<{_render_type(index_type)}>, " f"!ac.var<{_render_type(queue.payload)}>" ) + for release, release_guard in slot_release_results: + lines.append( + f"{indent} ac.slot.propose_release @{release.slot} when " + f"%{release_guard} : !ac.var" + ) if queue.rule_has_output: assert result is not None if multi_output_results: diff --git a/schemas/agentic-circuit/contracts/acir.yaml b/schemas/agentic-circuit/contracts/acir.yaml index a0073d862..c3e613a11 100644 --- a/schemas/agentic-circuit/contracts/acir.yaml +++ b/schemas/agentic-circuit/contracts/acir.yaml @@ -135,6 +135,7 @@ operations: - ac.slot - ac.slot.get - ac.slot.release + - ac.slot.propose_release - ac.slot.yield - ac.reorder - ac.reorder.yield diff --git a/schemas/agentic-circuit/diagnostics/diagnostics.json b/schemas/agentic-circuit/diagnostics/diagnostics.json index eeb2b1b19..e75822f11 100644 --- a/schemas/agentic-circuit/diagnostics/diagnostics.json +++ b/schemas/agentic-circuit/diagnostics/diagnostics.json @@ -163,6 +163,8 @@ {"code": "ACPY-SCOPE-004", "title": "Owned resource the reported value escapes scope the reported value", "rule": "The acpy scope stage enforces: owned resource the reported value escapes scope the reported value.", "causes": ["Owned resource the reported value escapes scope the reported value."], "examples": ["Owned resource the reported value escapes scope the reported value."], "repairs": ["Correct the reported acpy scope condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-scope", "status": "active"}, {"code": "ACPY-SLOT-001", "title": "Ac.slot requires exactly one Queue", "rule": "The acpy slot stage enforces: ac.slot requires exactly one Queue; slot declaration requires a fresh name.", "causes": ["Ac.slot requires exactly one Queue.", "Slot declaration requires a fresh name."], "examples": ["Ac.slot requires exactly one Queue."], "repairs": ["Correct the reported acpy slot condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active"}, {"code": "ACPY-SLOT-002", "title": "Slot the reported value requires one release endpoint", "rule": "The acpy slot stage enforces: slot the reported value requires one release endpoint; slot.release accepts only when=expression; slot.release requires one state expression.", "causes": ["Slot the reported value requires one release endpoint.", "Slot.release accepts only when=expression.", "Slot.release requires one state expression.", "Slot permits exactly one release endpoint.", "Slot release condition must lower to i1."], "examples": ["Slot the reported value requires one release endpoint."], "repairs": ["Correct the reported acpy slot condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active"}, + {"code": "ACPY-SLOT-003", "title": "Ac.slot must be declared in module/system topology", "rule": "An ac.slot resource is topology state and cannot be declared inside an @ac.rule body.", "causes": ["Ac.slot was declared inside an @ac.rule body."], "examples": ["Declare the slot in @ac.module or @ac.system and pass or capture it in the rule."], "repairs": ["Move ac.slot(...) to the containing module or system topology."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active"}, + {"code": "ACPY-SLOT-004", "title": "Rule slot resource binding or release is invalid", "rule": "A rule Slot parameter must bind one visible in-scope Slot resource without aliasing, and rule-local release takes no arguments because control flow supplies its guard.", "causes": ["A rule Slot parameter does not bind a visible ac.slot resource.", "A rule aliases one Slot through multiple resource parameters.", "A rule Slot parameter crosses an unrelated topology scope.", "Rule-local slot.release() was called with arguments."], "examples": ["Call mailbox.release() inside rule control flow after binding mailbox to one visible Slot."], "repairs": ["Bind each Slot parameter once to an in-scope module/system Slot and express release conditions with rule control flow."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active"}, {"code": "ACPY-STATIC-002", "title": "Address bounds must be static integers", "rule": "The acpy static stage enforces: address bounds must be static integers; the reported value cannot be used for the reported value; symbolic value the reported value cannot control Python execution.", "causes": ["Address bounds must be static integers.", "The reported value cannot be used for the reported value.", "Symbolic value the reported value cannot control Python execution."], "examples": ["Address bounds must be static integers."], "repairs": ["Correct the reported acpy static condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-static", "status": "active"}, {"code": "ACPY-STATIC-003", "title": "Static assertion is malformed, runtime-dependent, or false", "rule": "A static assertion must be a direct entry-body statement whose condition and optional message close after ac.const binding; a false condition stops elaboration.", "causes": ["The condition depends on a runtime value.", "The condition is not boolean.", "The message is not a static string.", "The closed condition is false."], "examples": ["ac.static_assert(entries > 0, message=\"entries must be positive\")"], "repairs": ["Use only closed configuration values in the condition and correct the reported configuration or relationship."], "owner": "agentic-python", "stage": "acpy-static", "status": "active"}, {"code": "ACPY-STATIC-COLLECTION", "title": "Invalid collection element", "rule": "The acpy static stage enforces: invalid collection element; ragged collection.", "causes": ["Invalid collection element.", "Ragged collection."], "examples": ["Invalid collection element."], "repairs": ["Correct the reported acpy static condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-static", "status": "active"}, diff --git a/schemas/agentic-circuit/diagnostics/registry.json b/schemas/agentic-circuit/diagnostics/registry.json index 47465d439..b1b7a7dc2 100644 --- a/schemas/agentic-circuit/diagnostics/registry.json +++ b/schemas/agentic-circuit/diagnostics/registry.json @@ -163,6 +163,8 @@ {"code": "ACPY-SCOPE-004", "title": "Owned resource the reported value escapes scope the reported value", "rule": "The acpy scope stage enforces: owned resource the reported value escapes scope the reported value.", "causes": ["Owned resource the reported value escapes scope the reported value."], "examples": ["Owned resource the reported value escapes scope the reported value."], "repairs": ["Correct the reported acpy scope condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-scope", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_scopes.py"]}, {"code": "ACPY-SLOT-001", "title": "Ac.slot requires exactly one Queue", "rule": "The acpy slot stage enforces: ac.slot requires exactly one Queue; slot declaration requires a fresh name.", "causes": ["Ac.slot requires exactly one Queue.", "Slot declaration requires a fresh name."], "examples": ["Ac.slot requires exactly one Queue."], "repairs": ["Correct the reported acpy slot condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_queue_frontend.py"]}, {"code": "ACPY-SLOT-002", "title": "Slot the reported value requires one release endpoint", "rule": "The acpy slot stage enforces: slot the reported value requires one release endpoint; slot.release accepts only when=expression; slot.release requires one state expression.", "causes": ["Slot the reported value requires one release endpoint.", "Slot.release accepts only when=expression.", "Slot.release requires one state expression.", "Slot permits exactly one release endpoint.", "Slot release condition must lower to i1."], "examples": ["Slot the reported value requires one release endpoint."], "repairs": ["Correct the reported acpy slot condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_queue_frontend.py"]}, + {"code": "ACPY-SLOT-003", "title": "Ac.slot must be declared in module/system topology", "rule": "An ac.slot resource is topology state and cannot be declared inside an @ac.rule body.", "causes": ["Ac.slot was declared inside an @ac.rule body."], "examples": ["Declare the slot in @ac.module or @ac.system and pass or capture it in the rule."], "repairs": ["Move ac.slot(...) to the containing module or system topology."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_queue_frontend.py"]}, + {"code": "ACPY-SLOT-004", "title": "Rule slot resource binding or release is invalid", "rule": "A rule Slot parameter must bind one visible in-scope Slot resource without aliasing, and rule-local release takes no arguments because control flow supplies its guard.", "causes": ["A rule Slot parameter does not bind a visible ac.slot resource.", "A rule aliases one Slot through multiple resource parameters.", "A rule Slot parameter crosses an unrelated topology scope.", "Rule-local slot.release() was called with arguments."], "examples": ["Call mailbox.release() inside rule control flow after binding mailbox to one visible Slot."], "repairs": ["Bind each Slot parameter once to an in-scope module/system Slot and express release conditions with rule control flow."], "owner": "agentic-python", "stage": "acpy-slot", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_queue_frontend.py"]}, {"code": "ACPY-STATIC-002", "title": "Address bounds must be static integers", "rule": "The acpy static stage enforces: address bounds must be static integers; the reported value cannot be used for the reported value; symbolic value the reported value cannot control Python execution.", "causes": ["Address bounds must be static integers.", "The reported value cannot be used for the reported value.", "Symbolic value the reported value cannot control Python execution."], "examples": ["Address bounds must be static integers."], "repairs": ["Correct the reported acpy static condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-static", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_resources.py", "python/agentic-circuit/src/agentic_circuit/_types.py", "python/agentic-circuit/src/agentic_circuit/_validate.py"]}, {"code": "ACPY-STATIC-003", "title": "Static assertion is malformed, runtime-dependent, or false", "rule": "A static assertion must be a direct entry-body statement whose condition and optional message close after ac.const binding; a false condition stops elaboration.", "causes": ["The condition depends on a runtime value.", "The condition is not boolean.", "The message is not a static string.", "The closed condition is false."], "examples": ["ac.static_assert(entries > 0, message=\"entries must be positive\")"], "repairs": ["Use only closed configuration values in the condition and correct the reported configuration or relationship."], "owner": "agentic-python", "stage": "acpy-static", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_queue_frontend.py"]}, {"code": "ACPY-STATIC-COLLECTION", "title": "Invalid collection element", "rule": "The acpy static stage enforces: invalid collection element; ragged collection.", "causes": ["Invalid collection element.", "Ragged collection."], "examples": ["Invalid collection element."], "repairs": ["Correct the reported acpy static condition at the cited source or object location."], "owner": "agentic-python", "stage": "acpy-static", "status": "active", "sources": ["python/agentic-circuit/src/agentic_circuit/_collections.py"]}, diff --git a/simulator/gfsim/include/gfsim/queue_blocks.h b/simulator/gfsim/include/gfsim/queue_blocks.h index aa4ba3fa4..ec45b0996 100644 --- a/simulator/gfsim/include/gfsim/queue_blocks.h +++ b/simulator/gfsim/include/gfsim/queue_blocks.h @@ -2117,6 +2117,16 @@ template struct TableTransitionPlan { StateReservation reservations; }; +class SlotReleaseResource { +public: + virtual ~SlotReleaseResource() = default; + virtual bool canPrepareRelease(CommitGroupId group) const = 0; + virtual bool prepareRelease(CommitGroupId group) = 0; + virtual bool hasPreparedRelease(CommitGroupId group) const = 0; + virtual bool publishPreparedRelease(CommitGroupId group) = 0; + virtual void cancelPreparedRelease(CommitGroupId group) = 0; +}; + template struct StateTransitionPlan; template using TypedStateReservation = StateReservation; @@ -2177,6 +2187,7 @@ struct StateTransitionPlan, std::tuple> { std::tuple...> writes; std::tuple...> outputs; std::tuple...> reservations; + std::vector slotReleases; }; /// One inferred transaction spanning a Table and zero or more Queue endpoints. @@ -2496,10 +2507,12 @@ class QueueStateTransition, Tables tables, InputsTuple inputs, OutputsTuple outputs, std::array modes, Policy policy = {}, std::tuple merges = {}, - ObservationSink *observations = nullptr) + ObservationSink *observations = nullptr, + std::vector slots = {}) : SimObject(componentKind, std::move(name), id, parent, observations), tables_(tables), inputs_(inputs), outputs_(outputs), modes_(modes), - policy_(std::move(policy)), merges_(std::move(merges)) { + policy_(std::move(policy)), merges_(std::move(merges)), + slots_(std::move(slots)) { if (id == kInvalidObjectId) throw std::invalid_argument( "state transition requires a stable object ID"); @@ -2561,6 +2574,10 @@ class QueueStateTransition, static_assert(std::same_as>); if (!plan) return; + if (plan->slotReleases.size() != slots_.size()) { + setRuntimeFailureCode("state_slot_release_shape_mismatch"); + return; + } candidate_ = std::move(*plan); } @@ -2574,17 +2591,20 @@ class QueueStateTransition, return; if (!prepareOutputs(group, plan, std::index_sequence_for{}) || !prepareInputs(group, std::index_sequence_for{}) || - !prepareTables(group, plan, std::index_sequence_for{})) { + !prepareTables(group, plan, std::index_sequence_for{}) || + !prepareSlots(group, plan)) { cancelPrepared(group); return; } if (!allPrepared(group, plan, std::index_sequence_for{}, std::index_sequence_for{}, std::index_sequence_for{}) || + !allSlotsPrepared(group, plan) || !publishOutputs(group, plan, std::index_sequence_for{}) || !publishInputs(group, std::index_sequence_for{}) || - !publishTables(group, std::move(plan), - std::index_sequence_for{})) { + !publishTables(group, plan, + std::index_sequence_for{}) || + !publishSlots(group, plan)) { setRuntimeFailureCode("state_commit_group_publish_failed"); cancelPrepared(group); return; @@ -2600,8 +2620,6 @@ class QueueStateTransition, } bool hasPendingCommit() const override { return fired_; } bool isRunnable(Epoch) const override { - if constexpr (sizeof...(Inputs) == 0) - return false; return !fired_ && !candidate_ && allInputsReady(); } void reset() override { @@ -2679,7 +2697,39 @@ class QueueStateTransition, return preflightInputs(std::index_sequence_for{}) && preflightOutputs(plan, std::index_sequence_for{}) && preflightTables(group, plan, - std::index_sequence_for{}); + std::index_sequence_for{}) && + preflightSlots(group, plan); + } + + bool preflightSlots(CommitGroupId group, const Plan &plan) const { + for (size_t index = 0; index < slots_.size(); ++index) + if (plan.slotReleases[index] && + !slots_[index]->canPrepareRelease(group)) + return false; + return true; + } + + bool prepareSlots(CommitGroupId group, const Plan &plan) { + for (size_t index = 0; index < slots_.size(); ++index) + if (plan.slotReleases[index] && !slots_[index]->prepareRelease(group)) + return false; + return true; + } + + bool allSlotsPrepared(CommitGroupId group, const Plan &plan) const { + for (size_t index = 0; index < slots_.size(); ++index) + if (plan.slotReleases[index] && + !slots_[index]->hasPreparedRelease(group)) + return false; + return true; + } + + bool publishSlots(CommitGroupId group, const Plan &plan) { + for (size_t index = 0; index < slots_.size(); ++index) + if (plan.slotReleases[index] && + !slots_[index]->publishPreparedRelease(group)) + return false; + return true; } template @@ -2757,7 +2807,7 @@ class QueueStateTransition, } template - bool publishTables(CommitGroupId group, Plan plan, + bool publishTables(CommitGroupId group, Plan &plan, std::index_sequence) { return (publishTable(group, plan) && ...); } @@ -2787,6 +2837,8 @@ class QueueStateTransition, std::apply( [&](auto *...tables) { (tables->cancelPreparedWrite(group), ...); }, tables_); + for (SlotReleaseResource *slot : slots_) + slot->cancelPreparedRelease(group); } Tables tables_; @@ -2797,6 +2849,7 @@ class QueueStateTransition, std::tuple merges_; std::array, sizeof...(Entries)> writeIndices_; std::optional candidate_; + std::vector slots_; bool fired_ = false; }; @@ -3295,9 +3348,50 @@ class TableMaskedWriteSource final : public SimObject { /// A committed one-entry Queue capture. Empty slots capture one input token; /// full slots apply only the release decision and deliberately do not refill /// until a later tick. Releasing retains the old payload for observability. -template struct SlotState { +template struct SlotState final : SlotReleaseResource { + SlotState() = default; + SlotState(bool initialValid, T initialValue) + : valid(initialValid), value(std::move(initialValue)) {} + bool valid = false; T value{}; + std::optional preparedRelease; + bool pendingRelease = false; + + bool canPrepareRelease(CommitGroupId group) const override { + return valid && (!preparedRelease || *preparedRelease == group); + } + bool prepareRelease(CommitGroupId group) override { + if (!canPrepareRelease(group)) + return false; + preparedRelease = group; + return true; + } + bool hasPreparedRelease(CommitGroupId group) const override { + return preparedRelease && *preparedRelease == group; + } + bool publishPreparedRelease(CommitGroupId group) override { + if (!hasPreparedRelease(group)) + return false; + preparedRelease.reset(); + pendingRelease = true; + return true; + } + void cancelPreparedRelease(CommitGroupId group) override { + if (preparedRelease && *preparedRelease == group) + preparedRelease.reset(); + } + void commitRelease() { + if (pendingRelease) + valid = false; + pendingRelease = false; + } + void reset() { + valid = false; + value = T{}; + preparedRelease.reset(); + pendingRelease = false; + } }; template @@ -3349,6 +3443,7 @@ class QueueSlot final : public SimObject { state_.value = std::move(pendingPayload_); state_.valid = true; } + state_.commitRelease(); pendingRelease_ = false; pendingCapture_ = false; fired_ = false; @@ -3360,8 +3455,7 @@ class QueueSlot final : public SimObject { return state_.valid ? releaseEnabled(epoch) : input_.canProposePop(); } void reset() override { - state_.valid = false; - state_.value = T{}; + state_.reset(); pendingPayload_ = T{}; pendingRelease_ = false; pendingCapture_ = false; diff --git a/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp b/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp index 0a031aa99..1e1635d4c 100644 --- a/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp +++ b/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp @@ -611,6 +611,40 @@ struct SlotReleaseAtEpoch { bool operator()(Epoch epoch) const { return epoch == releaseEpoch; } }; +struct ReleaseSlotToOutput { + SlotState *slot = nullptr; + using Plan = StateTransitionPlan, std::tuple>; + + std::optional operator()(Epoch, std::tuple<>) const { + Plan plan; + if (slot->valid) { + std::get<0>(plan.outputs) = slot->value; + plan.slotReleases = {true}; + } else { + plan.slotReleases = {false}; + } + return plan; + } +}; + +struct UpdateTableAndReleaseSlot { + SlotState *slot = nullptr; + using Plan = StateTransitionPlan, std::tuple>; + + std::optional operator()( + Epoch, std::tuple *> tables) const { + if (!slot->valid) + return std::nullopt; + Plan plan; + std::get<0>(plan.writes).emplace_back( + 0, static_cast(std::get<0>(tables)->at(0) + 1)); + std::get<0>(plan.outputs) = slot->value; + std::get<0>(plan.reservations) = StateReservation::all(); + plan.slotReleases = {true}; + return plan; + } +}; + TEST(QueueBlocksTest, HighLevelProvidersFreezeStructuralTemplateParameters) { using Schedule4 = Schedule captureInput("capture", 1, nullptr, 1); + SimQueue output("output", 2, nullptr, 1); + SlotState state{true, 7}; + bool standaloneRelease = false; + QueueSlot slot( + "slot", 3, nullptr, captureInput, state, {&standaloneRelease}); + QueueStateTransition, std::tuple<>, + std::tuple, std::tuple<>> + transition("release", 4, nullptr, {}, {}, {&output}, {}, {&state}, {}, + nullptr, {&state}); + + ASSERT_TRUE(output.proposePush(99)); + output.doXfer({0, 0}); + transition.doWork({1, 0}); + transition.doArbitrate({1, 0}); + EXPECT_FALSE(transition.hasPendingCommit()); + EXPECT_TRUE(state.valid); + EXPECT_FALSE(state.preparedRelease.has_value()); + + ASSERT_TRUE(output.proposePop()); + output.doXfer({1, 0}); + transition.doWork({2, 0}); + transition.doArbitrate({2, 0}); + ASSERT_TRUE(transition.hasPendingCommit()); + EXPECT_TRUE(state.valid); + EXPECT_TRUE(state.pendingRelease); + output.doXfer({2, 0}); + slot.doXfer({2, 0}); + transition.doXfer({2, 0}); + EXPECT_FALSE(state.valid); + ASSERT_NE(output.peek(), nullptr); + EXPECT_EQ(*output.peek(), 7); + + state.valid = true; + state.value = 11; + ASSERT_TRUE(state.prepareRelease(transition.id())); + state.reset(); + EXPECT_FALSE(state.valid); + EXPECT_FALSE(state.preparedRelease.has_value()); + EXPECT_FALSE(state.pendingRelease); + EXPECT_EQ(state.value, 0); +} + +TEST(QueueBlocksTest, SlotReleaseCancelsWithConflictingTableTransaction) { + SimTable table("table", 1, nullptr, 1); + SimQueue output("output", 2, nullptr, 1); + SlotState state{true, 9}; + QueueStateTransition, + std::tuple<>, std::tuple, + std::tuple>> + transition("release", 3, nullptr, {&table}, {}, {&output}, + {TableWriteMode::Replace}, {&state}, {}, nullptr, {&state}); + + ASSERT_TRUE(table.prepareWrite(77, 8, 0, + TableFullEntryMerge::fields, + TableWriteMode::Replace)); + transition.doWork({1, 0}); + transition.doArbitrate({1, 0}); + EXPECT_FALSE(transition.hasPendingCommit()); + EXPECT_TRUE(state.valid); + EXPECT_FALSE(state.preparedRelease.has_value()); + EXPECT_TRUE(output.isEmpty()); + EXPECT_EQ(table.at(0), 0); + + table.cancelPreparedWrite(77); + transition.doWork({2, 0}); + transition.doArbitrate({2, 0}); + ASSERT_TRUE(transition.hasPendingCommit()); + output.doXfer({2, 0}); + table.doXfer({2, 0}); + state.commitRelease(); + transition.doXfer({2, 0}); + EXPECT_FALSE(state.valid); + EXPECT_EQ(table.at(0), 1); + ASSERT_NE(output.peek(), nullptr); + EXPECT_EQ(*output.peek(), 9); +} + struct SharedMemoryAddress { uint8_t operator()(size_t, const MemoryRequest &request) const { return request.address; diff --git a/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction/architecture.py b/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction/architecture.py new file mode 100644 index 000000000..a0e16f8ee --- /dev/null +++ b/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction/architecture.py @@ -0,0 +1,23 @@ +"""Atomic rule consumption of a committed one-entry slot.""" + +import agentic_circuit as ac + + +@ac.struct +class Event: + value: ac.u8 + + +@ac.rule +def consume(mailbox) -> Event: + if mailbox.valid: + event = mailbox.value + mailbox.release() + return event + + +@ac.system +def slot_rule_transaction(incoming: Event) -> Event: + mailbox = ac.slot(incoming) + outgoing = consume(mailbox) + return outgoing diff --git a/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction_nested/architecture.py b/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction_nested/architecture.py new file mode 100644 index 000000000..c99fcf521 --- /dev/null +++ b/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_transaction_nested/architecture.py @@ -0,0 +1,28 @@ +"""Nested-rule form of atomic slot consumption.""" + +import agentic_circuit as ac + + +@ac.struct +class Event: + value: ac.u8 + + +@ac.module +def mailbox_module(incoming: Event) -> Event: + mailbox = ac.slot(incoming) + + @ac.rule + def consume() -> Event: + if mailbox.valid: + event = mailbox.value + mailbox.release() + return event + + outgoing = consume() + return outgoing + + +@ac.system +def slot_rule_transaction_nested(incoming: Event) -> Event: + return mailbox_module(incoming) diff --git a/examples/agentic-circuit/state/branch_join_state.py b/tests/integration/agentic-circuit/e2e/fixtures/state/branch_join_state.py similarity index 100% rename from examples/agentic-circuit/state/branch_join_state.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/branch_join_state.py diff --git a/examples/agentic-circuit/state/branch_local_state.py b/tests/integration/agentic-circuit/e2e/fixtures/state/branch_local_state.py similarity index 100% rename from examples/agentic-circuit/state/branch_local_state.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/branch_local_state.py diff --git a/examples/agentic-circuit/state/circular_rob.py b/tests/integration/agentic-circuit/e2e/fixtures/state/circular_rob.py similarity index 100% rename from examples/agentic-circuit/state/circular_rob.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/circular_rob.py diff --git a/examples/agentic-circuit/state/consume_only_completion.py b/tests/integration/agentic-circuit/e2e/fixtures/state/consume_only_completion.py similarity index 100% rename from examples/agentic-circuit/state/consume_only_completion.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/consume_only_completion.py diff --git a/examples/agentic-circuit/state/indexed_branch_join.py b/tests/integration/agentic-circuit/e2e/fixtures/state/indexed_branch_join.py similarity index 100% rename from examples/agentic-circuit/state/indexed_branch_join.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/indexed_branch_join.py diff --git a/examples/agentic-circuit/state/indexed_variable_array.py b/tests/integration/agentic-circuit/e2e/fixtures/state/indexed_variable_array.py similarity index 100% rename from examples/agentic-circuit/state/indexed_variable_array.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/indexed_variable_array.py diff --git a/examples/agentic-circuit/state/inferred_multi_state_module.py b/tests/integration/agentic-circuit/e2e/fixtures/state/inferred_multi_state_module.py similarity index 100% rename from examples/agentic-circuit/state/inferred_multi_state_module.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/inferred_multi_state_module.py diff --git a/examples/agentic-circuit/state/multi_state_allocate.py b/tests/integration/agentic-circuit/e2e/fixtures/state/multi_state_allocate.py similarity index 100% rename from examples/agentic-circuit/state/multi_state_allocate.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/multi_state_allocate.py diff --git a/examples/agentic-circuit/state/optional_output_state.py b/tests/integration/agentic-circuit/e2e/fixtures/state/optional_output_state.py similarity index 100% rename from examples/agentic-circuit/state/optional_output_state.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/optional_output_state.py diff --git a/examples/agentic-circuit/state/rob.py b/tests/integration/agentic-circuit/e2e/fixtures/state/rob.py similarity index 100% rename from examples/agentic-circuit/state/rob.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/rob.py diff --git a/examples/agentic-circuit/state/shared_indexed_rules.py b/tests/integration/agentic-circuit/e2e/fixtures/state/shared_indexed_rules.py similarity index 100% rename from examples/agentic-circuit/state/shared_indexed_rules.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/shared_indexed_rules.py diff --git a/tests/integration/agentic-circuit/e2e/fixtures/state/shared_slot_snapshot.py b/tests/integration/agentic-circuit/e2e/fixtures/state/shared_slot_snapshot.py new file mode 100644 index 000000000..f21a18998 --- /dev/null +++ b/tests/integration/agentic-circuit/e2e/fixtures/state/shared_slot_snapshot.py @@ -0,0 +1,30 @@ +"""Let one rule observe a slot while another atomically releases it.""" + +import agentic_circuit as ac + + +@ac.struct +class Event: + value: ac.u8 + + +@ac.rule +def observe(mailbox) -> Event: + if mailbox.valid: + return mailbox.value + + +@ac.rule +def consume(mailbox) -> Event: + if mailbox.valid: + event = mailbox.value + mailbox.release() + return event + + +@ac.system +def shared_slot_snapshot(incoming: Event) -> tuple[Event, Event]: + mailbox = ac.slot(incoming) + observed = observe(mailbox) + consumed = consume(mailbox) + return observed, consumed diff --git a/examples/agentic-circuit/state/state_driven_retire.py b/tests/integration/agentic-circuit/e2e/fixtures/state/state_driven_retire.py similarity index 100% rename from examples/agentic-circuit/state/state_driven_retire.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/state_driven_retire.py diff --git a/examples/agentic-circuit/state/table_multi_input_rule.py b/tests/integration/agentic-circuit/e2e/fixtures/state/table_multi_input_rule.py similarity index 100% rename from examples/agentic-circuit/state/table_multi_input_rule.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/table_multi_input_rule.py diff --git a/examples/agentic-circuit/state/variable_accumulator.py b/tests/integration/agentic-circuit/e2e/fixtures/state/variable_accumulator.py similarity index 100% rename from examples/agentic-circuit/state/variable_accumulator.py rename to tests/integration/agentic-circuit/e2e/fixtures/state/variable_accumulator.py diff --git a/tests/integration/agentic-circuit/e2e/test_pyc_backend.py b/tests/integration/agentic-circuit/e2e/test_pyc_backend.py index a4e4de6d7..58a868683 100644 --- a/tests/integration/agentic-circuit/e2e/test_pyc_backend.py +++ b/tests/integration/agentic-circuit/e2e/test_pyc_backend.py @@ -12,6 +12,7 @@ from agentic_circuit._queue_frontend import RULE_LOWERING_PIPELINE, lower_queue_source ROOT = Path(__file__).resolve().parents[4] +STATE_FIXTURES = ROOT / "tests/integration/agentic-circuit/e2e/fixtures/state" EXAMPLE = ROOT / "examples/agentic-circuit" / "pipelines" / "pyc_queue_pipeline.py" ROUTED_DEPENDENCY_EXAMPLE = ( ROOT @@ -25,7 +26,7 @@ ROUTE_EXAMPLE = ( ROOT / "examples/agentic-circuit" / "pipelines" / "pyc_route_merge_pipeline.py" ) -RULE_ROB_EXAMPLE = ROOT / "examples/agentic-circuit" / "state" / "rob.py" +RULE_ROB_EXAMPLE = STATE_FIXTURES / "rob.py" REORDER_EXAMPLE = ( ROOT / "examples/agentic-circuit" / "pipelines" / "pyc_reorder_pipeline.py" ) diff --git a/tests/integration/agentic-circuit/e2e/test_queue_codegen.py b/tests/integration/agentic-circuit/e2e/test_queue_codegen.py index 11bb3ab29..ed3387bbb 100644 --- a/tests/integration/agentic-circuit/e2e/test_queue_codegen.py +++ b/tests/integration/agentic-circuit/e2e/test_queue_codegen.py @@ -9,6 +9,7 @@ from pathlib import Path ROOT = Path(__file__).resolve().parents[4] +STATE_FIXTURES = ROOT / "tests/integration/agentic-circuit/e2e/fixtures/state" ROUTED_DEPENDENCY_SOURCE = ( ROOT / "examples/agentic-circuit" @@ -21,7 +22,7 @@ REORDER_SOURCE = ( ROOT / "examples/agentic-circuit" / "pipelines" / "pyc_reorder_pipeline.py" ) -RULE_ROB_SOURCE = ROOT / "examples/agentic-circuit" / "state" / "rob.py" +RULE_ROB_SOURCE = STATE_FIXTURES / "rob.py" STATEFUL_RULE_SOURCE = ROOT / "examples/agentic-circuit" / "state" / "table_rule.py" MULTI_INPUT_RULE_SOURCE = ( ROOT / "examples/agentic-circuit" / "pipelines" / "pyc_multi_input_rule_pipeline.py" @@ -60,42 +61,22 @@ ROOT / "examples/agentic-circuit" / "state" / "inferred_stateful_module.py" ) INFERRED_MULTI_STATE_MODULE_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "inferred_multi_state_module.py" + STATE_FIXTURES / "inferred_multi_state_module.py" ) STATEFUL_MULTI_INPUT_RULE_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "table_multi_input_rule.py" + STATE_FIXTURES / "table_multi_input_rule.py" ) -VARIABLE_ACCUMULATOR_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "variable_accumulator.py" -) -BRANCH_LOCAL_STATE_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "branch_local_state.py" -) -BRANCH_JOIN_STATE_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "branch_join_state.py" -) -INDEXED_BRANCH_JOIN_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "indexed_branch_join.py" -) -OPTIONAL_OUTPUT_STATE_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "optional_output_state.py" -) -INDEXED_VARIABLE_ARRAY_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "indexed_variable_array.py" -) -SHARED_INDEXED_RULES_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "shared_indexed_rules.py" -) -CONSUME_ONLY_COMPLETION_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "consume_only_completion.py" -) -STATE_DRIVEN_RETIRE_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "state_driven_retire.py" -) -MULTI_STATE_ALLOCATE_SOURCE = ( - ROOT / "examples/agentic-circuit" / "state" / "multi_state_allocate.py" -) -CIRCULAR_ROB_SOURCE = ROOT / "examples/agentic-circuit" / "state" / "circular_rob.py" +VARIABLE_ACCUMULATOR_SOURCE = STATE_FIXTURES / "variable_accumulator.py" +BRANCH_LOCAL_STATE_SOURCE = STATE_FIXTURES / "branch_local_state.py" +BRANCH_JOIN_STATE_SOURCE = STATE_FIXTURES / "branch_join_state.py" +INDEXED_BRANCH_JOIN_SOURCE = STATE_FIXTURES / "indexed_branch_join.py" +OPTIONAL_OUTPUT_STATE_SOURCE = STATE_FIXTURES / "optional_output_state.py" +INDEXED_VARIABLE_ARRAY_SOURCE = STATE_FIXTURES / "indexed_variable_array.py" +SHARED_INDEXED_RULES_SOURCE = STATE_FIXTURES / "shared_indexed_rules.py" +CONSUME_ONLY_COMPLETION_SOURCE = STATE_FIXTURES / "consume_only_completion.py" +STATE_DRIVEN_RETIRE_SOURCE = STATE_FIXTURES / "state_driven_retire.py" +MULTI_STATE_ALLOCATE_SOURCE = STATE_FIXTURES / "multi_state_allocate.py" +CIRCULAR_ROB_SOURCE = STATE_FIXTURES / "circular_rob.py" REUSABLE_CIRCULAR_ROB_SOURCE = ( ROOT / "examples/agentic-circuit" / "state" / "reusable_circular_rob.py" ) diff --git a/tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py b/tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py new file mode 100644 index 000000000..fc6e3c892 --- /dev/null +++ b/tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py @@ -0,0 +1,191 @@ +from __future__ import annotations + +import json +import os +import shutil +import subprocess +import tempfile +import unittest +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[4] +FIXTURES = ROOT / "tests/integration/agentic-circuit/e2e/fixtures" +DEFAULT_TOOLCHAIN = ROOT / ".pycircuit_out/toolchain/install" + + +class SlotRuleTransactionTest(unittest.TestCase): + def test_public_slot_rule_examples_generate_native_cpp(self) -> None: + toolchain = Path(os.environ.get("PYC_TOOLCHAIN_ROOT", DEFAULT_TOOLCHAIN)) + opt = Path(os.environ.get("ACIR_OPT", toolchain / "bin/acir-opt")) + plan_tool = Path( + os.environ.get("ACIR_QUEUE_PLAN", toolchain / "bin/acir-queue-plan") + ) + cxxgen = Path( + os.environ.get("ACIR_QUEUE_CXXGEN", toolchain / "bin/acir-queue-cxxgen") + ) + cxx = shutil.which("c++") + if cxx is None or any(not path.is_file() for path in (opt, plan_tool, cxxgen)): + self.skipTest("integrated QueueGraph/gfsim toolchain is unavailable") + + examples = ROOT / "examples/agentic-circuit/state" + for system in ("slot_rule_mailbox",): + with self.subTest(system=system), tempfile.TemporaryDirectory( + prefix=f"{system}-" + ) as directory: + output = Path(directory) + generated = output / "model.cpp" + completed = subprocess.run( + ( + str(ROOT / "compiler/acir/tools/ac-queue-cxxgen.py"), + str(examples / f"{system}.py"), + "--system", + system, + "--acir-output", + str(output / "model.mlir"), + "--plan-output", + str(output / "plan.json"), + "--acir-opt", + str(opt), + "--queue-plan-tool", + str(plan_tool), + "--queue-cxxgen-tool", + str(cxxgen), + "-o", + str(generated), + ), + text=True, + capture_output=True, + ) + self.assertEqual(0, completed.returncode, completed.stderr) + compiled = subprocess.run( + ( + cxx, + "-std=c++20", + "-I", + str(ROOT / "simulator/gfsim/include"), + "-fsyntax-only", + str(generated), + ), + text=True, + capture_output=True, + ) + self.assertEqual(0, compiled.returncode, compiled.stderr) + + def test_flat_and_nested_slot_rules_generate_and_run_identically(self) -> None: + toolchain = Path(os.environ.get("PYC_TOOLCHAIN_ROOT", DEFAULT_TOOLCHAIN)) + opt = Path(os.environ.get("ACIR_OPT", toolchain / "bin/acir-opt")) + plan_tool = Path( + os.environ.get("ACIR_QUEUE_PLAN", toolchain / "bin/acir-queue-plan") + ) + cxxgen = Path( + os.environ.get("ACIR_QUEUE_CXXGEN", toolchain / "bin/acir-queue-cxxgen") + ) + cxx = shutil.which("c++") + if cxx is None or any(not path.is_file() for path in (opt, plan_tool, cxxgen)): + self.skipTest("integrated QueueGraph/gfsim toolchain is unavailable") + + cases = ( + ("slot_rule_transaction", "SlotRuleTransaction"), + ("slot_rule_transaction_nested", "SlotRuleTransactionNested"), + ) + for system, class_name in cases: + with self.subTest(system=system), tempfile.TemporaryDirectory( + prefix=f"{system}-" + ) as directory: + output = Path(directory) + source = FIXTURES / system / "architecture.py" + generated = output / "model.cpp" + plan = output / "plan.json" + command = ( + str(ROOT / "compiler/acir/tools/ac-queue-cxxgen.py"), + str(source), + "--system", + system, + "--acir-output", + str(output / "model.mlir"), + "--plan-output", + str(plan), + "--acir-opt", + str(opt), + "--queue-plan-tool", + str(plan_tool), + "--queue-cxxgen-tool", + str(cxxgen), + "-o", + str(generated), + ) + first = subprocess.run(command, text=True, capture_output=True) + self.assertEqual(0, first.returncode, first.stderr) + first_source = generated.read_text(encoding="utf-8") + first_plan = plan.read_text(encoding="utf-8") + repeated = subprocess.run(command, text=True, capture_output=True) + self.assertEqual(0, repeated.returncode, repeated.stderr) + self.assertEqual(first_source, generated.read_text(encoding="utf-8")) + self.assertEqual(first_plan, plan.read_text(encoding="utf-8")) + + document = json.loads(first_plan) + nested_plans = document.get("module_specializations", ()) + selected = nested_plans[0] if nested_plans else document + firing = next( + block for block in selected["blocks"] if block["kind"] == "firing" + ) + self.assertEqual( + [{"slot": "mailbox", "when": firing["guard"]}], + firing["slot_releases"], + ) + self.assertIn( + {"kind": "slot", "ordinal": 0, "resource": "mailbox"}, + firing["transaction_resources"], + ) + + harness = output / "harness.cpp" + harness.write_text( + f'''#include "model.cpp" +int main() {{ + ac_generated::{class_name} model; + auto rows = model.dispatch_rows(); + unsigned tick = 0; + auto cycle = [&]() {{ + const gfsim::Epoch epoch{{++tick, 0}}; + for (auto &row : rows) row.work(row.object, epoch); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Arbitrate); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Probe); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Commit); + }}; + if (!model.incoming().proposePush({{gfsim::UInt<8>{{7}}}})) return 1; + model.incoming().doXfer({{0, 0}}); + cycle(); + if (!model.sink_0_values().empty()) return 2; + cycle(); cycle(); + if (model.sink_0_values().size() != 1) return 3; + if (static_cast(model.sink_0_values()[0].value) != 7) return 4; + cycle(); cycle(); cycle(); + return model.sink_0_values().size() == 1 ? 0 : 5; +}} +''', + encoding="utf-8", + ) + executable = output / "model" + compiled = subprocess.run( + ( + cxx, + "-std=c++20", + "-I", + str(ROOT / "simulator/gfsim/include"), + str(harness), + "-o", + str(executable), + ), + text=True, + capture_output=True, + ) + self.assertEqual(0, compiled.returncode, compiled.stderr) + executed = subprocess.run( + (str(executable),), text=True, capture_output=True + ) + self.assertEqual(0, executed.returncode, executed.stderr) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir b/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir index 5ced56c27..36fc9b893 100644 --- a/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir +++ b/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir @@ -8,6 +8,7 @@ // RUN: %not %acir_opt %t/choose-arbitrary-mask.mlir 2>&1 | %FileCheck %s --check-prefix=CHOOSE-MASK // RUN: %not %acir_opt %t/choose-other-table.mlir 2>&1 | %FileCheck %s --check-prefix=CHOOSE-TABLE // RUN: %not %acir_opt %t/two-releases.mlir 2>&1 | %FileCheck %s --check-prefix=RELEASE +// RUN: %not %acir_opt %t/propose-release-owner.mlir 2>&1 | %FileCheck %s --check-prefix=PROPOSE-OWNER // RUN: %not %acir_opt %t/masked-owner.mlir 2>&1 | %FileCheck %s --check-prefix=MASKED-OWNER // RUN: %not %acir_opt %t/write-fields-missing.mlir 2>&1 | %FileCheck %s --check-prefix=FIELDS-MISSING // RUN: %not %acir_opt %t/write-fields-empty.mlir 2>&1 | %FileCheck %s --check-prefix=FIELDS-EMPTY @@ -29,6 +30,7 @@ // CHOOSE-MASK: error: 'ac.table.choose' op candidate mask must be produced directly by ac.table.match // CHOOSE-TABLE: error: 'ac.table.choose' op candidate mask must come from the same Table // RELEASE: error: 'ac.slot' op slot requires exactly one release endpoint +// PROPOSE-OWNER: error: 'ac.slot.propose_release' op requires direct ac.rule or ac.firing ownership // MASKED-OWNER: error: 'ac.table.masked_write' op mask must be produced by match on the same Table // FIELDS-MISSING: error: custom op 'ac.table.write' expected 'write_fields' // FIELDS-EMPTY: error: 'ac.table.write' op write_fields must be non-empty @@ -174,6 +176,14 @@ builtin.module attributes {ac.contract_epoch = "0.5"} { ac.sink %right_output {ac.name = "right_sink"} : !ac.queue } +//--- propose-release-owner.mlir +builtin.module attributes {ac.contract_epoch = "0.5"} { + %input = ac.source depth 1 latency 1 {ac.name = "input"} : !ac.queue + ac.slot @bad, %input owner "/" stable_id "slot/bad" : !ac.queue + %true = ac.var.constant true as !ac.var + ac.slot.propose_release @bad when %true : !ac.var +} + //--- two-releases.mlir builtin.module attributes {ac.contract_epoch = "0.5"} { %input = ac.source depth 1 latency 1 {ac.name = "input"} : !ac.queue diff --git a/tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir b/tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir new file mode 100644 index 000000000..838bf61f1 --- /dev/null +++ b/tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir @@ -0,0 +1,28 @@ +// RUN: %acir_opt --pass-pipeline='builtin.module(ac-lower-rules)' %s | %FileCheck %s + +module attributes {ac.contract_epoch = "0.5", ac.model_kind = "queue_graph", ac.queue_graph_domain = "cycle", ac.system = "slot_rule"} { + %input = ac.source depth 1 latency 1 {ac.name = "input"} : !ac.queue + ac.slot @mailbox, %input owner "/" stable_id "slot/mailbox" : !ac.queue + %output = ac.rule depths [1] latencies [1] name "consume" stable_id "consume" domain "cycle" type exact { + %valid, %value = ac.slot.get @mailbox : !ac.var, !ac.var + ac.rule.condition %valid : !ac.var + ac.slot.propose_release @mailbox when %valid : !ac.var + %ready = ac.marker.obligation %value state pending resolver handshake origin "consume:return" path "true" : !ac.var + ac.rule.output %value when %valid ordinal 0 : !ac.var, !ac.var + ac.rule.return %ready : !ac.var + } : () -> !ac.queue + ac.sink %output {ac.name = "output"} : !ac.queue +} + +// CHECK: ac.slot @mailbox +// CHECK: %[[OUTPUT:.*]] = ac.firing depths [1] latencies [1] stable_id "consume" domain "cycle" +// CHECK: %[[VALID:.*]], %[[VALUE:.*]] = ac.slot.get @mailbox +// CHECK: ac.firing.condition %[[VALID]] +// CHECK: ac.slot.propose_release @mailbox when %[[VALID]] +// CHECK: ac.firing.output %[[VALUE]] when %[[VALID]] ordinal 0 +// CHECK: ac.activation_sources = [ +// CHECK-SAME: output_queue>, ordinal = 0 +// CHECK-SAME: slot>, resource = @mailbox +// CHECK: ac.transaction_resources = [ +// CHECK-SAME: output_queue>, ordinal = 0 +// CHECK-SAME: slot>, resource = @mailbox diff --git a/tests/python/agentic-circuit/python_frontend/test_jit_blocks.py b/tests/python/agentic-circuit/python_frontend/test_jit_blocks.py index 863a18ccf..1265a11dc 100644 --- a/tests/python/agentic-circuit/python_frontend/test_jit_blocks.py +++ b/tests/python/agentic-circuit/python_frontend/test_jit_blocks.py @@ -834,7 +834,10 @@ class JitQueueLoweringTest(unittest.TestCase): "native MLIR tools are release/targeted-test dependencies", ) def test_rule_specialization_uses_native_mlir_pipeline(self) -> None: - path = REPOSITORY / "examples/agentic-circuit/state/rob.py" + path = ( + REPOSITORY + / "tests/integration/agentic-circuit/e2e/fixtures/state/rob.py" + ) spec = importlib.util.spec_from_file_location("ac_rule_rob", path) if spec is None or spec.loader is None: raise RuntimeError("cannot load rule retirement example") diff --git a/tests/python/agentic-circuit/python_frontend/test_queue_codegen.py b/tests/python/agentic-circuit/python_frontend/test_queue_codegen.py index a596fe30e..49cfa10a6 100644 --- a/tests/python/agentic-circuit/python_frontend/test_queue_codegen.py +++ b/tests/python/agentic-circuit/python_frontend/test_queue_codegen.py @@ -253,7 +253,10 @@ def test_rule_program_cannot_bypass_native_mlir_lowering(self) -> None: parse_queue_program, ) - source = ROOT / "examples/agentic-circuit/state/rob.py" + source = ( + ROOT + / "tests/integration/agentic-circuit/e2e/fixtures/state/rob.py" + ) program = parse_queue_program(source.read_text(encoding="utf-8"), "rob") with self.assertRaisesRegex(QueueFrontendError, "native MLIR"): lower_queue_program_to_cpp(program) diff --git a/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py b/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py index 5fdecea72..37f4cb907 100644 --- a/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py +++ b/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py @@ -2218,6 +2218,80 @@ def pipeline() -> None: ac.sink(snapshots) """ +RULE_SLOT_SOURCE = """ +import agentic_circuit as ac + +@ac.struct +class Event: + value: ac.u8 + +@ac.rule +def consume(mailbox) -> Event: + if mailbox.valid: + event = mailbox.value + mailbox.release() + return event + +@ac.system +def pipeline(incoming: Event) -> Event: + mailbox = ac.slot(incoming) + outgoing = consume(mailbox) + return outgoing +""" + +NESTED_RULE_SLOT_SOURCE = """ +import agentic_circuit as ac + +@ac.struct +class Event: + value: ac.u8 + +@ac.module +def mailbox_module(incoming: Event) -> Event: + mailbox = ac.slot(incoming) + + @ac.rule + def consume() -> Event: + if mailbox.valid: + event = mailbox.value + mailbox.release() + return event + + outgoing = consume() + return outgoing + +@ac.system +def pipeline(incoming: Event) -> Event: + return mailbox_module(incoming) +""" + +READ_ONLY_RULE_SLOT_SOURCE = """ +import agentic_circuit as ac + +@ac.struct +class Event: + value: ac.u8 + +@ac.rule +def observe(mailbox) -> Event: + if mailbox.valid: + return mailbox.value + +@ac.rule +def consume(mailbox) -> Event: + if mailbox.valid: + value = mailbox.value + mailbox.release() + return value + +@ac.system +def pipeline(incoming: Event) -> tuple[Event, Event]: + mailbox = ac.slot(incoming) + observed = observe(mailbox) + consumed = consume(mailbox) + return observed, consumed +""" + MASKED_TABLE_WRITE_SOURCE = """ import agentic_circuit as ac @@ -6110,6 +6184,70 @@ def test_outputless_rule_infers_consume_only_state_transaction(self) -> None: self.assertNotIn("ac.marker.obligation", lowered) self.assertNotIn("ac.sink", lowered) + def test_rule_slot_release_lowers_as_a_guarded_transaction_effect(self) -> None: + from agentic_circuit._queue_frontend import lower_queue_source + + explicit = lower_queue_source(RULE_SLOT_SOURCE, "pipeline") + nested = lower_queue_source(NESTED_RULE_SLOT_SOURCE, "pipeline") + for lowered in (explicit, nested): + self.assertIn("ac.slot @mailbox", lowered) + self.assertIn("ac.slot.get @mailbox", lowered) + self.assertIn("ac.slot.propose_release @mailbox when", lowered) + self.assertNotIn("ac.slot.release @mailbox", lowered) + self.assertEqual(explicit, lower_queue_source(RULE_SLOT_SOURCE, "pipeline")) + + def test_rule_local_slot_declaration_is_rejected(self) -> None: + from agentic_circuit._queue_frontend import QueueFrontendError, lower_queue_source + + source = RULE_SLOT_SOURCE.replace( + "def consume(mailbox) -> Event:\n", + "def consume(mailbox) -> Event:\n local = ac.slot(mailbox)\n", + ) + with self.assertRaisesRegex(QueueFrontendError, "module/system topology"): + lower_queue_source(source, "pipeline") + + def test_slot_may_have_read_only_rule_and_one_release_owner(self) -> None: + from agentic_circuit._queue_frontend import lower_queue_source + + lowered = lower_queue_source(READ_ONLY_RULE_SLOT_SOURCE, "pipeline") + self.assertEqual(2, lowered.count("ac.rule ")) + self.assertEqual(4, lowered.count("ac.slot.get @mailbox")) + self.assertEqual(1, lowered.count("ac.slot.propose_release @mailbox")) + + def test_slot_rejects_multiple_rule_release_owners(self) -> None: + from agentic_circuit._queue_frontend import QueueFrontendError, lower_queue_source + + source = READ_ONLY_RULE_SLOT_SOURCE.replace( + " observed = observe(mailbox)", " observed = consume(mailbox)" + ) + with self.assertRaisesRegex(QueueFrontendError, "transactional rule owner"): + lower_queue_source(source, "pipeline") + + def test_outputless_rule_may_release_a_slot(self) -> None: + from agentic_circuit._queue_frontend import lower_queue_source + + source = RULE_SLOT_SOURCE.replace( + "def consume(mailbox) -> Event:\n" + " if mailbox.valid:\n" + " event = mailbox.value\n" + " mailbox.release()\n" + " return event\n", + "def consume(mailbox) -> None:\n" + " if mailbox.valid:\n" + " mailbox.release()\n", + ).replace( + "def pipeline(incoming: Event) -> Event:\n" + " mailbox = ac.slot(incoming)\n" + " outgoing = consume(mailbox)\n" + " return outgoing\n", + "def pipeline(incoming: Event) -> None:\n" + " mailbox = ac.slot(incoming)\n" + " consume(mailbox)\n", + ) + lowered = lower_queue_source(source, "pipeline") + self.assertIn("ac.rule depths [] latencies []", lowered) + self.assertIn("ac.slot.propose_release @mailbox", lowered) + def test_outputless_rule_cannot_be_assigned(self) -> None: from agentic_circuit._queue_frontend import ( QueueFrontendError, From 84146e9b50ab99c6e45712f37cba8a22cfa44a1f Mon Sep 17 00:00:00 2001 From: chao <945665952@qq.com> Date: Tue, 15 Sep 2026 19:05:36 +0800 Subject: [PATCH 2/5] fix(agentic-circuit): guard combined slot transactions Carry the Slot-valid predicate through Queue consumption, persistent state, output presence, and release. Add focused acceptance evidence for combined atomic effects, same-snapshot readers, stable diagnostics, and the provisional PYC boundary. --- .../commands.txt | 12 + .../summary.md | 43 +++- .../src/agentic_circuit/_queue_frontend.py | 17 +- .../CodeGen/QueueGraphPlanTest.cpp | 10 + .../agentic-circuit/gfsim/QueueBlocksTest.cpp | 140 ++++++++++++ .../slot_rule_atomic_effects/architecture.py | 31 +++ .../e2e/test_slot_rule_transaction.py | 207 ++++++++++++++++++ .../agentic-circuit/ACIR/table-invalid.mlir | 12 + .../python_frontend/test_queue_frontend.py | 117 ++++++++++ 9 files changed, 580 insertions(+), 9 deletions(-) create mode 100644 tests/integration/agentic-circuit/e2e/fixtures/slot_rule_atomic_effects/architecture.py diff --git a/docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt b/docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt index ca8a339a3..066cbd517 100644 --- a/docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt +++ b/docs/gates/logs/20260915-ac-slot-rule-transactions/commands.txt @@ -16,3 +16,15 @@ /home/lc/.codex/skills/pyc6/scripts/run.sh python flows/tools/check_decision_status.py --rfc docs/rfcs/pyc6-decisions.md --status docs/gates/decision_status_v6.md --out /tmp/issue138-decision-status.json --require-no-deferred --require-all-verified --require-concrete-evidence --require-existing-evidence git diff --name-only --diff-filter=ACMR origin/main | rg -v '^examples/agentic-circuit/state/reusable_circular_rob.py$' | xargs /home/lc/.codex/skills/pyc6/scripts/run.sh pre-commit run --files git diff --check +/home/lc/.codex/skills/pyc6/scripts/run.sh cmake --build /home/lc/pyCircuit/.pycircuit_out/local-clang22/build --target GfsimTests CodeGenTests -j 24 +/home/lc/.codex/skills/pyc6/scripts/run.sh /home/lc/pyCircuit/.pycircuit_out/local-clang22/build/bin/GfsimTests --gtest_filter='QueueBlocksTest.SlotReleaseCommitsInputTwoOutputsAndTableAsOneTransaction:QueueBlocksTest.ReadOnlyAndReleasingSlotTransitionsObserveTheSameCommittedSnapshot' +/home/lc/.codex/skills/pyc6/scripts/run.sh /home/lc/pyCircuit/.pycircuit_out/local-clang22/build/bin/CodeGenTests --gtest_filter='QueueGraphPlanTest.PycBackendRejectsProvisionalSlotWithoutLowering' +/home/lc/.codex/skills/pyc6/scripts/run.sh python tests/python/agentic-circuit/python_frontend/test_queue_frontend.py QueueFrontendTest.test_rule_slot_guards_queue_state_output_and_release_together QueueFrontendTest.test_rule_slot_rejects_alias_scope_and_non_slot_bindings +/home/lc/.codex/skills/pyc6/scripts/run.sh python -m unittest tests.integration.agentic-circuit.e2e.test_slot_rule_transaction -v +/home/lc/.codex/skills/pyc6/scripts/run.sh lit -sv --filter='table-invalid|rule-slot-release-lowering' /home/lc/pyCircuit/.pycircuit_out/local-clang22/build/compiler/acir/tests/mlir +/home/lc/.codex/skills/pyc6/scripts/run.sh python tests/python/agentic-circuit/python_frontend/test_queue_frontend.py QueueFrontendTest.test_rule_slot_release_lowers_as_a_guarded_transaction_effect QueueFrontendTest.test_rule_slot_guards_queue_state_output_and_release_together QueueFrontendTest.test_rule_local_slot_declaration_is_rejected QueueFrontendTest.test_slot_may_have_read_only_rule_and_one_release_owner QueueFrontendTest.test_slot_rejects_multiple_rule_release_owners QueueFrontendTest.test_rule_slot_rejects_alias_scope_and_non_slot_bindings QueueFrontendTest.test_outputless_rule_may_release_a_slot QueueFrontendTest.test_conditional_effect_infers_read_only_scalar_state +/home/lc/.codex/skills/pyc6/scripts/run.sh python tests/python/agentic-circuit/python_frontend/test_queue_frontend.py +/home/lc/.codex/skills/pyc6/scripts/run.sh /home/lc/pyCircuit/.pycircuit_out/local-clang22/build/bin/GfsimTests +/home/lc/.codex/skills/pyc6/scripts/run.sh /home/lc/pyCircuit/.pycircuit_out/local-clang22/build/bin/CodeGenTests +/home/lc/.codex/skills/pyc6/scripts/run.sh ctest --test-dir /home/lc/pyCircuit/.pycircuit_out/local-clang22/build --output-on-failure -R '^ACIROpsTests$' +/home/lc/.codex/skills/pyc6/scripts/run.sh lit -sv --filter='table-invalid|rule-slot-release-lowering|firing-field-write|firing-field-replace-order' /home/lc/pyCircuit/.pycircuit_out/local-clang22/build/compiler/acir/tests/mlir diff --git a/docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md b/docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md index bdc16e68b..4fe0cbe30 100644 --- a/docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md +++ b/docs/gates/logs/20260915-ac-slot-rule-transactions/summary.md @@ -28,12 +28,33 @@ Decision: 0262 - Current-checkout native build: `acir-opt`, QueueGraph plan/C++/PYC generators, `GfsimTests`, and `CodeGenTests` built successfully. -- Native CTest: `GfsimTests`, `ACIROpsTests`, and `CodeGenTests` passed 3/3. +- Native suites: `GfsimTests` passed 254/254, `CodeGenTests` passed 171/171, + and `ACIROpsTests` passed 1/1. - Focused ACIR lit: slot release lowering plus both upstream firing field-write - tests passed 3/3. -- Focused frontend slot ownership/lowering tests passed 5/5. -- Slot direct/native E2E passed 2/2, including deterministic QueueGraph and C++ + tests and Slot payload diagnostics passed 5/5. +- Focused frontend slot ownership/lowering and combined-effect tests passed + 8/8; the complete queue frontend file passed 214/214. +- Slot native E2E passed 4/4, including deterministic QueueGraph and C++ generation, flat/nested cycle agreement, compilation, and execution. +- A combined frontend/native E2E now holds an ordinary Queue input while the + Slot is invalid, then atomically consumes it with a guarded persistent-state + update, output, and Slot release. A second transaction observes the committed + state from the first. +- GFSim unit coverage now exercises one commit group containing an input, two + outputs, a Table write, and a Slot release. Output backpressure leaves every + resource unchanged before the complete group later commits. +- Generated native and hand-constructed GFSim transition tests prove that a + read-only rule and a releasing rule observe the same pre-release committed + Slot payload. +- Frontend negatives cover duplicate release ownership, same-Slot parameter + aliasing, non-Slot resource binding, and unrelated-scope binding. ACIR lit + additionally freezes Slot payload-type and direct-owner diagnostics. +- CodeGen coverage freezes the explicit provisional-Slot PYC rejection before + any partial lowering. +- The combined reproducer found and closed a frontend CFG bug: a Slot-guarded + rule with ordinary Queue input and persistent state now carries the same + predicate into rule condition, input consumption, state proposal, output + presence, and Slot release. - The generated diagnostic catalog now registers `ACPY-SLOT-003` and `ACPY-SLOT-004`; its read-only check and focused catalog contract test pass. - The normative ACIR inventory includes `ac.slot.propose_release`; positive and @@ -42,13 +63,13 @@ Decision: 0262 ## Checkout-wide gaps -- The complete Python frontend run executed 391 tests: 388 passed, two skipped, +- The complete Python frontend run executed 393 tests: 390 passed, two skipped, and one existing typed-state JIT test errored because `ac.var.assign_element` reported an unresolved persistent struct schema. - The complete Agentic lit run discovered 243 tests: 232 passed, two were unsupported, and nine existing tests failed in PYC source-provenance, hierarchy/function-symbol, memory-endpoint, and process-state verifier paths. - The three slot/field-write tests selected above all pass. + The five Slot/field-write tests selected above all pass. - QueueGraph integration ran 35 tests: 23 passed, three skipped, and nine existing tests failed on unresolved struct schemas, missing explicit writer priorities, a stale generated identifier assertion, and temporary source-path @@ -66,3 +87,13 @@ Decision: 0262 Strict MkDocs, changed-file pre-commit hooks (including Markdown and API hygiene), and `git diff --check` pass. + +## Issue #138 boundary + +- The Python direct generator remains intentionally out of the `@ac.rule` + path; rule programs use Frozen ACIR, QueueGraph, and the native generator. +- Optional multi-output Python rules do not yet accept `slot.release()` in + their specialized parser. Runtime atomicity for two selected outputs is + covered here, but that authoring combination is not claimed as closed. +- SPE OoO IQ and completion migrations remain consumer-owned under Decisions + 0158 and 0235. diff --git a/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py b/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py index a8d55f03f..e0d9e7309 100644 --- a/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py +++ b/python/agentic-circuit/src/agentic_circuit/_queue_frontend.py @@ -4703,7 +4703,7 @@ def substitute_helper_locals( and not multi_body[-1].orelse and multi_return is None and not ( - slot_parameter_names == set(parameter_names) + slot_parameter_names and any( isinstance(candidate, ast.Return) and not _is_none_return(candidate) @@ -4914,6 +4914,12 @@ def visit_Name(self, node: ast.Name) -> ast.expr: if len(present_terms) == 1 else ast.BoolOp(op=ast.And(), values=present_terms) ) + if ( + slot_releases + and multi_guard is None + and multi_output_guard is not None + ): + multi_guard = copy.deepcopy(multi_output_guard) state_reads: list[RuleStateReadDefinition] = [] state_writes: list[RuleStateWriteDefinition] = [] rule_locals: list[RuleLocalDefinition] = [] @@ -5322,7 +5328,12 @@ def guard_covers_partial_values( "ACPY-RULE-011: branch-local value escapes its defining path" ) if rewritten_multi_guard is not None and any( - write.guard is not None for write in state_writes + write.guard is not None + and not ( + guard_literals(rewritten_multi_guard, False) + <= guard_literals(write.guard, write.guard_negated) + ) + for write in state_writes ): raise QueueFrontendError( "ACPY-RULE-011: nested conditional state effects inside a " @@ -15657,7 +15668,7 @@ def emit_queue( emitter.lines.append( f" %{condition_result} = ac.var.constant true as !ac.var" ) - elif ( + elif condition_result is None and ( output_guard_result is not None or any(write.guard is not None for write in queue.rule_state_writes) or multi_output_guard_results diff --git a/tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp b/tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp index 1334d8f21..e0085a205 100644 --- a/tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp +++ b/tests/cpp/agentic-circuit/CodeGen/QueueGraphPlanTest.cpp @@ -946,6 +946,16 @@ TEST(QueueGraphPlanTest, BackendsRejectRecursivePayloadsWithoutRecursing) { std::string::npos); } +TEST(QueueGraphPlanTest, PycBackendRejectsProvisionalSlotWithoutLowering) { + QueueGraphPlan plan = sharedReferencePlan(); + + auto pyc = generateQueueGraphPyc(plan); + ASSERT_FALSE(bool(pyc)); + EXPECT_NE(llvm::toString(pyc.takeError()) + .find("Slot PYC lowering is not implemented"), + std::string::npos); +} + TEST(QueueGraphPlanTest, RejectsMalformedNominalEnumMetadata) { mlir::MLIRContext context; context.loadDialect(); diff --git a/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp b/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp index 1e1635d4c..67688811b 100644 --- a/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp +++ b/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp @@ -645,6 +645,41 @@ struct UpdateTableAndReleaseSlot { } }; +struct ObserveSlotToOutput { + SlotState *slot = nullptr; + using Plan = StateTransitionPlan, std::tuple>; + + std::optional operator()(Epoch, std::tuple<>) const { + if (!slot->valid) + return std::nullopt; + Plan plan; + std::get<0>(plan.outputs) = slot->value; + return plan; + } +}; + +struct ConsumeInputUpdateTableReleaseSlotToTwoOutputs { + SlotState *slot = nullptr; + using Plan = + StateTransitionPlan, std::tuple>; + + std::optional operator()(Epoch, + std::tuple *> tables, + const uint8_t &increment) const { + if (!slot->valid) + return std::nullopt; + Plan plan; + std::get<0>(plan.writes) + .emplace_back( + 0, static_cast(std::get<0>(tables)->at(0) + increment)); + std::get<0>(plan.outputs) = slot->value; + std::get<1>(plan.outputs) = static_cast(slot->value + increment); + std::get<0>(plan.reservations) = StateReservation::all(); + plan.slotReleases = {true}; + return plan; + } +}; + TEST(QueueBlocksTest, HighLevelProvidersFreezeStructuralTemplateParameters) { using Schedule4 = Schedule table("table", 1, nullptr, 1); + SimQueue request("request", 2, nullptr, 1); + SimQueue leftOutput("left", 3, nullptr, 1); + SimQueue rightOutput("right", 4, nullptr, 1); + SimQueue captureInput("capture", 5, nullptr, 1); + SlotState state{true, 9}; + bool standaloneRelease = false; + QueueSlot slot("slot", 6, nullptr, captureInput, + state, {&standaloneRelease}); + using Merge = TableFullEntryMerge; + QueueStateTransition, std::tuple, + std::tuple, std::tuple> + transition("release", 7, nullptr, {&table}, {&request}, + {&leftOutput, &rightOutput}, {TableWriteMode::Replace}, + {&state}, {}, nullptr, {&state}); + + ASSERT_TRUE(request.proposePush(3)); + request.doXfer({0, 0}); + ASSERT_TRUE(rightOutput.proposePush(99)); + rightOutput.doXfer({0, 0}); + + transition.doWork({1, 0}); + transition.doArbitrate({1, 0}); + EXPECT_FALSE(transition.hasPendingCommit()); + EXPECT_EQ(request.committedSize(), 1u); + EXPECT_TRUE(leftOutput.isEmpty()); + ASSERT_NE(rightOutput.peek(), nullptr); + EXPECT_EQ(*rightOutput.peek(), 99); + EXPECT_EQ(table.at(0), 0); + EXPECT_TRUE(state.valid); + EXPECT_EQ(state.value, 9); + EXPECT_FALSE(state.preparedRelease.has_value()); + EXPECT_FALSE(state.pendingRelease); + + ASSERT_TRUE(rightOutput.proposePop()); + rightOutput.doXfer({1, 0}); + transition.doWork({2, 0}); + transition.doArbitrate({2, 0}); + ASSERT_TRUE(transition.hasPendingCommit()); + EXPECT_EQ(request.committedSize(), 1u); + EXPECT_TRUE(leftOutput.isEmpty()); + EXPECT_TRUE(rightOutput.isEmpty()); + EXPECT_EQ(table.at(0), 0); + EXPECT_TRUE(state.valid); + EXPECT_TRUE(state.pendingRelease); + + request.doXfer({2, 0}); + leftOutput.doXfer({2, 0}); + rightOutput.doXfer({2, 0}); + table.doXfer({2, 0}); + slot.doXfer({2, 0}); + transition.doXfer({2, 0}); + + EXPECT_TRUE(request.isEmpty()); + EXPECT_EQ(table.at(0), 3); + EXPECT_FALSE(state.valid); + EXPECT_EQ(state.value, 9); + ASSERT_NE(leftOutput.peek(), nullptr); + ASSERT_NE(rightOutput.peek(), nullptr); + EXPECT_EQ(*leftOutput.peek(), 9); + EXPECT_EQ(*rightOutput.peek(), 12); +} + +TEST(QueueBlocksTest, + ReadOnlyAndReleasingSlotTransitionsObserveTheSameCommittedSnapshot) { + SimQueue captureInput("capture", 1, nullptr, 1); + SimQueue observedOutput("observed", 2, nullptr, 1); + SimQueue consumedOutput("consumed", 3, nullptr, 1); + SlotState state{true, 7}; + bool standaloneRelease = false; + QueueSlot slot("slot", 4, nullptr, captureInput, + state, {&standaloneRelease}); + QueueStateTransition, std::tuple<>, + std::tuple, std::tuple<>> + observe("observe", 5, nullptr, {}, {}, {&observedOutput}, {}, {&state}); + QueueStateTransition, std::tuple<>, + std::tuple, std::tuple<>> + consume("consume", 6, nullptr, {}, {}, {&consumedOutput}, {}, {&state}, + {}, nullptr, {&state}); + + observe.doWork({1, 0}); + consume.doWork({1, 0}); + consume.doArbitrate({1, 0}); + observe.doArbitrate({1, 0}); + ASSERT_TRUE(consume.hasPendingCommit()); + ASSERT_TRUE(observe.hasPendingCommit()); + EXPECT_TRUE(state.valid); + EXPECT_TRUE(state.pendingRelease); + + observedOutput.doXfer({1, 0}); + consumedOutput.doXfer({1, 0}); + slot.doXfer({1, 0}); + observe.doXfer({1, 0}); + consume.doXfer({1, 0}); + + EXPECT_FALSE(state.valid); + ASSERT_NE(observedOutput.peek(), nullptr); + ASSERT_NE(consumedOutput.peek(), nullptr); + EXPECT_EQ(*observedOutput.peek(), 7); + EXPECT_EQ(*consumedOutput.peek(), 7); +} + struct SharedMemoryAddress { uint8_t operator()(size_t, const MemoryRequest &request) const { return request.address; diff --git a/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_atomic_effects/architecture.py b/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_atomic_effects/architecture.py new file mode 100644 index 000000000..a36b56164 --- /dev/null +++ b/tests/integration/agentic-circuit/e2e/fixtures/slot_rule_atomic_effects/architecture.py @@ -0,0 +1,31 @@ +"""Combine Queue input, persistent state, output, and Slot release.""" + +import agentic_circuit as ac + + +@ac.struct +class Event: + value: ac.u8 + + +@ac.struct +class Request: + increment: ac.u8 + + +@ac.rule +def apply(count, mailbox, request) -> Event: + if mailbox.valid: + event = mailbox.value + next_count = count + request.increment + count = next_count + mailbox.release() + return event.with_fields(value=event.value + next_count) + + +@ac.system +def slot_rule_atomic_effects(incoming: Event, request: Request) -> Event: + count: ac.u8 = 0 + mailbox = ac.slot(incoming) + outgoing = apply(count, mailbox, request) + return outgoing diff --git a/tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py b/tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py index fc6e3c892..d91b8ab84 100644 --- a/tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py +++ b/tests/integration/agentic-circuit/e2e/test_slot_rule_transaction.py @@ -186,6 +186,213 @@ def test_flat_and_nested_slot_rules_generate_and_run_identically(self) -> None: ) self.assertEqual(0, executed.returncode, executed.stderr) + def test_read_only_and_releasing_rules_share_the_committed_snapshot(self) -> None: + toolchain = Path(os.environ.get("PYC_TOOLCHAIN_ROOT", DEFAULT_TOOLCHAIN)) + opt = Path(os.environ.get("ACIR_OPT", toolchain / "bin/acir-opt")) + plan_tool = Path( + os.environ.get("ACIR_QUEUE_PLAN", toolchain / "bin/acir-queue-plan") + ) + cxxgen = Path( + os.environ.get("ACIR_QUEUE_CXXGEN", toolchain / "bin/acir-queue-cxxgen") + ) + cxx = shutil.which("c++") + if cxx is None or any(not path.is_file() for path in (opt, plan_tool, cxxgen)): + self.skipTest("integrated QueueGraph/gfsim toolchain is unavailable") + + source = FIXTURES / "state" / "shared_slot_snapshot.py" + with tempfile.TemporaryDirectory(prefix="shared-slot-snapshot-") as directory: + output = Path(directory) + generated = output / "model.cpp" + completed = subprocess.run( + ( + str(ROOT / "compiler/acir/tools/ac-queue-cxxgen.py"), + str(source), + "--system", + "shared_slot_snapshot", + "--acir-output", + str(output / "model.mlir"), + "--plan-output", + str(output / "plan.json"), + "--acir-opt", + str(opt), + "--queue-plan-tool", + str(plan_tool), + "--queue-cxxgen-tool", + str(cxxgen), + "-o", + str(generated), + ), + text=True, + capture_output=True, + ) + self.assertEqual(0, completed.returncode, completed.stderr) + + harness = output / "harness.cpp" + harness.write_text( + """#include "model.cpp" +int main() { + ac_generated::SharedSlotSnapshot model; + auto rows = model.dispatch_rows(); + unsigned tick = 0; + auto cycle = [&]() { + const gfsim::Epoch epoch{++tick, 0}; + for (auto &row : rows) row.work(row.object, epoch); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Arbitrate); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Probe); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Commit); + }; + if (!model.incoming().proposePush({gfsim::UInt<8>{7}})) return 1; + model.incoming().doXfer({0, 0}); + cycle(); + if (!model.sink_0_values().empty() || !model.sink_1_values().empty()) return 2; + cycle(); cycle(); + if (model.sink_0_values().size() != 1 || model.sink_1_values().size() != 1) + return 3; + if (static_cast(model.sink_0_values()[0].value) != 7 || + static_cast(model.sink_1_values()[0].value) != 7) + return 4; + cycle(); cycle(); + return model.sink_0_values().size() == 1 && + model.sink_1_values().size() == 1 ? 0 : 5; +} +""", + encoding="utf-8", + ) + executable = output / "model" + compiled = subprocess.run( + ( + cxx, + "-std=c++20", + "-I", + str(ROOT / "simulator/gfsim/include"), + str(harness), + "-o", + str(executable), + ), + text=True, + capture_output=True, + ) + self.assertEqual(0, compiled.returncode, compiled.stderr) + executed = subprocess.run( + (str(executable),), text=True, capture_output=True + ) + self.assertEqual(0, executed.returncode, executed.stderr) + + def test_queue_state_output_and_slot_release_commit_together(self) -> None: + toolchain = Path(os.environ.get("PYC_TOOLCHAIN_ROOT", DEFAULT_TOOLCHAIN)) + opt = Path(os.environ.get("ACIR_OPT", toolchain / "bin/acir-opt")) + plan_tool = Path( + os.environ.get("ACIR_QUEUE_PLAN", toolchain / "bin/acir-queue-plan") + ) + cxxgen = Path( + os.environ.get("ACIR_QUEUE_CXXGEN", toolchain / "bin/acir-queue-cxxgen") + ) + cxx = shutil.which("c++") + if cxx is None or any(not path.is_file() for path in (opt, plan_tool, cxxgen)): + self.skipTest("integrated QueueGraph/gfsim toolchain is unavailable") + + source = FIXTURES / "slot_rule_atomic_effects" / "architecture.py" + with tempfile.TemporaryDirectory(prefix="slot-rule-atomic-") as directory: + output = Path(directory) + generated = output / "model.cpp" + completed = subprocess.run( + ( + str(ROOT / "compiler/acir/tools/ac-queue-cxxgen.py"), + str(source), + "--system", + "slot_rule_atomic_effects", + "--acir-output", + str(output / "model.mlir"), + "--plan-output", + str(output / "plan.json"), + "--acir-opt", + str(opt), + "--queue-plan-tool", + str(plan_tool), + "--queue-cxxgen-tool", + str(cxxgen), + "-o", + str(generated), + ), + text=True, + capture_output=True, + ) + self.assertEqual(0, completed.returncode, completed.stderr) + + plan = json.loads((output / "plan.json").read_text(encoding="utf-8")) + firing = next( + block for block in plan["blocks"] if block["kind"] == "firing" + ) + self.assertEqual( + {"input_queue", "output_queue", "state", "slot"}, + {resource["kind"] for resource in firing["transaction_resources"]}, + ) + self.assertEqual( + [{"slot": "mailbox", "when": firing["guard"]}], firing["slot_releases"] + ) + + harness = output / "harness.cpp" + harness.write_text( + """#include "model.cpp" +int main() { + ac_generated::SlotRuleAtomicEffects model; + auto rows = model.dispatch_rows(); + unsigned tick = 0; + auto cycle = [&]() { + const gfsim::Epoch epoch{++tick, 0}; + for (auto &row : rows) row.work(row.object, epoch); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Arbitrate); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Probe); + for (auto &row : rows) row.xfer(row.object, epoch, gfsim::XferPhase::Commit); + }; + if (!model.request().proposePush({gfsim::UInt<8>{3}})) return 1; + model.request().doXfer({0, 0}); + cycle(); cycle(); + if (model.request().committedSize() != 1 || !model.sink_0_values().empty()) + return 2; + if (!model.incoming().proposePush({gfsim::UInt<8>{9}})) return 3; + model.incoming().doXfer({tick, 0}); + cycle(); + if (model.request().committedSize() != 1 || !model.sink_0_values().empty()) + return 4; + cycle(); cycle(); + if (!model.request().isEmpty() || model.sink_0_values().size() != 1) return 5; + if (static_cast(model.sink_0_values()[0].value) != 12) + return 6; + if (!model.request().proposePush({gfsim::UInt<8>{4}}) || + !model.incoming().proposePush({gfsim::UInt<8>{1}})) return 7; + model.request().doXfer({tick, 0}); + model.incoming().doXfer({tick, 0}); + cycle(); cycle(); cycle(); + if (model.sink_0_values().size() != 2) return 8; + if (static_cast(model.sink_0_values()[1].value) != 8) + return 9; + cycle(); cycle(); + return model.sink_0_values().size() == 2 ? 0 : 10; +} +""", + encoding="utf-8", + ) + executable = output / "model" + compiled = subprocess.run( + ( + cxx, + "-std=c++20", + "-I", + str(ROOT / "simulator/gfsim/include"), + str(harness), + "-o", + str(executable), + ), + text=True, + capture_output=True, + ) + self.assertEqual(0, compiled.returncode, compiled.stderr) + executed = subprocess.run( + (str(executable),), text=True, capture_output=True + ) + self.assertEqual(0, executed.returncode, executed.stderr) + if __name__ == "__main__": unittest.main() diff --git a/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir b/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir index 36fc9b893..c4b4d8886 100644 --- a/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir +++ b/tests/mlir/agentic-circuit/ACIR/table-invalid.mlir @@ -9,6 +9,7 @@ // RUN: %not %acir_opt %t/choose-other-table.mlir 2>&1 | %FileCheck %s --check-prefix=CHOOSE-TABLE // RUN: %not %acir_opt %t/two-releases.mlir 2>&1 | %FileCheck %s --check-prefix=RELEASE // RUN: %not %acir_opt %t/propose-release-owner.mlir 2>&1 | %FileCheck %s --check-prefix=PROPOSE-OWNER +// RUN: %not %acir_opt %t/slot-payload-type.mlir 2>&1 | %FileCheck %s --check-prefix=SLOT-PAYLOAD // RUN: %not %acir_opt %t/masked-owner.mlir 2>&1 | %FileCheck %s --check-prefix=MASKED-OWNER // RUN: %not %acir_opt %t/write-fields-missing.mlir 2>&1 | %FileCheck %s --check-prefix=FIELDS-MISSING // RUN: %not %acir_opt %t/write-fields-empty.mlir 2>&1 | %FileCheck %s --check-prefix=FIELDS-EMPTY @@ -31,6 +32,7 @@ // CHOOSE-TABLE: error: 'ac.table.choose' op candidate mask must come from the same Table // RELEASE: error: 'ac.slot' op slot requires exactly one release endpoint // PROPOSE-OWNER: error: 'ac.slot.propose_release' op requires direct ac.rule or ac.firing ownership +// SLOT-PAYLOAD: error: 'ac.slot.get' op value result must match slot Queue payload // MASKED-OWNER: error: 'ac.table.masked_write' op mask must be produced by match on the same Table // FIELDS-MISSING: error: custom op 'ac.table.write' expected 'write_fields' // FIELDS-EMPTY: error: 'ac.table.write' op write_fields must be non-empty @@ -198,6 +200,16 @@ builtin.module attributes {ac.contract_epoch = "0.5"} { } {ac.endpoint_path = "/release_1", ac.name = "release_1"} } +//--- slot-payload-type.mlir +builtin.module attributes {ac.contract_epoch = "0.5"} { + %input = ac.source depth 1 latency 1 {ac.name = "input"} : !ac.queue + ac.slot @bad, %input owner "/" stable_id "slot/bad" : !ac.queue + ac.slot.release @bad when { + %valid, %value = ac.slot.get @bad : !ac.var, !ac.var + ac.slot.yield %valid : !ac.var + } {ac.endpoint_path = "/release", ac.name = "release"} +} + //--- masked-owner.mlir builtin.module attributes {ac.contract_epoch = "0.5"} { ac.table @left entry i16 entries 4 init 0 owner "/" stable_id "table/left" diff --git a/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py b/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py index 37f4cb907..771c6b215 100644 --- a/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py +++ b/tests/python/agentic-circuit/python_frontend/test_queue_frontend.py @@ -2239,6 +2239,34 @@ def pipeline(incoming: Event) -> Event: return outgoing """ +RULE_SLOT_STATE_INPUT_SOURCE = """ +import agentic_circuit as ac + +@ac.struct +class Event: + value: ac.u8 + +@ac.struct +class Request: + increment: ac.u8 + +@ac.rule +def apply(count, mailbox, request) -> Event: + if mailbox.valid: + event = mailbox.value + next_count = count + request.increment + count = next_count + mailbox.release() + return event.with_fields(value=event.value + next_count) + +@ac.system +def pipeline(incoming: Event, request: Request) -> Event: + count: ac.u8 = 0 + mailbox = ac.slot(incoming) + outgoing = apply(count, mailbox, request) + return outgoing +""" + NESTED_RULE_SLOT_SOURCE = """ import agentic_circuit as ac @@ -6196,6 +6224,29 @@ def test_rule_slot_release_lowers_as_a_guarded_transaction_effect(self) -> None: self.assertNotIn("ac.slot.release @mailbox", lowered) self.assertEqual(explicit, lower_queue_source(RULE_SLOT_SOURCE, "pipeline")) + def test_rule_slot_guards_queue_state_output_and_release_together(self) -> None: + from agentic_circuit._queue_frontend import lower_queue_source + + lowered = lower_queue_source(RULE_SLOT_STATE_INPUT_SOURCE, "pipeline") + condition = re.search(r"ac\.rule\.condition %(\w+)", lowered) + self.assertIsNotNone(condition) + assert condition is not None + guard = condition.group(1) + self.assertIn("ac.rule %request", lowered) + self.assertRegex( + lowered, + rf"ac\.var\.assign @count = %\w+ when %{guard}", + ) + self.assertIn(f"ac.slot.propose_release @mailbox when %{guard}", lowered) + self.assertRegex( + lowered, + rf"ac\.rule\.output %\w+ when %{guard} ordinal 0", + ) + self.assertEqual( + lowered, + lower_queue_source(RULE_SLOT_STATE_INPUT_SOURCE, "pipeline"), + ) + def test_rule_local_slot_declaration_is_rejected(self) -> None: from agentic_circuit._queue_frontend import QueueFrontendError, lower_queue_source @@ -6223,6 +6274,72 @@ def test_slot_rejects_multiple_rule_release_owners(self) -> None: with self.assertRaisesRegex(QueueFrontendError, "transactional rule owner"): lower_queue_source(source, "pipeline") + def test_rule_slot_rejects_alias_scope_and_non_slot_bindings(self) -> None: + from agentic_circuit._queue_frontend import ( + QueueFrontendError, + lower_queue_source, + ) + + two_slots = """ +import agentic_circuit as ac + +@ac.struct +class Event: + value: ac.u8 + +@ac.rule +def release_both(left, right) -> None: + if left.valid: + left.release() + if right.valid: + right.release() + +@ac.system +def pipeline(left_input: Event, right_input: Event) -> None: + left = ac.slot(left_input) + right = ac.slot(right_input) + release_both(left, right) +""" + lowered = lower_queue_source(two_slots, "pipeline") + self.assertEqual(2, lowered.count("ac.slot.propose_release")) + + one_slot = two_slots.replace( + "def pipeline(left_input: Event, right_input: Event) -> None:\n" + " left = ac.slot(left_input)\n" + " right = ac.slot(right_input)\n" + " release_both(left, right)\n", + "def pipeline(incoming: Event) -> None:\n" + " mailbox = ac.slot(incoming)\n" + " release_both(mailbox, mailbox)\n", + ) + with self.assertRaisesRegex( + QueueFrontendError, + "ACPY-SLOT-004: one rule cannot alias the same slot", + ): + lower_queue_source(one_slot, "pipeline") + + non_slot = one_slot.replace( + "release_both(mailbox, mailbox)", "release_both(mailbox, incoming)" + ) + with self.assertRaisesRegex( + QueueFrontendError, + "ACPY-SLOT-004: rule slot parameter must bind a visible ac.slot", + ): + lower_queue_source(non_slot, "pipeline") + + unrelated_scope = RULE_SLOT_SOURCE.replace( + " mailbox = ac.slot(incoming)\n" " outgoing = consume(mailbox)\n", + ' with ac.scope("owner"):\n' + " mailbox = ac.slot(incoming)\n" + ' with ac.scope("consumer"):\n' + " outgoing = consume(mailbox)\n", + ) + with self.assertRaisesRegex( + QueueFrontendError, + "ACPY-SLOT-004: rule slot parameter crosses an unrelated topology scope", + ): + lower_queue_source(unrelated_scope, "pipeline") + def test_outputless_rule_may_release_a_slot(self) -> None: from agentic_circuit._queue_frontend import lower_queue_source From 38b8de20df4bc7ca315cd3712d489519980734d3 Mon Sep 17 00:00:00 2001 From: RuoyuZhou Date: Wed, 16 Sep 2026 11:43:52 +0800 Subject: [PATCH 3/5] fix(agentic-circuit): close slot release regressions --- .../acir/lib/Analysis/VariableAnalysis.cpp | 7 ++++ compiler/acir/lib/CodeGen/QueueGraphPlan.cpp | 3 +- .../acir/lib/Transforms/LowerVariables.cpp | 7 ++++ simulator/gfsim/include/gfsim/queue_blocks.h | 4 +- .../agentic-circuit/gfsim/QueueBlocksTest.cpp | 36 +++++++++++++++++ .../queue-stateful-module-freeze.mlir | 6 +++ ...variable-module-struct-state-lowering.mlir | 40 +++++++++++++++++++ 7 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir diff --git a/compiler/acir/lib/Analysis/VariableAnalysis.cpp b/compiler/acir/lib/Analysis/VariableAnalysis.cpp index 0623d8ca9..8741cfe91 100644 --- a/compiler/acir/lib/Analysis/VariableAnalysis.cpp +++ b/compiler/acir/lib/Analysis/VariableAnalysis.cpp @@ -625,6 +625,13 @@ llvm::SmallVector completeStateFields(Operation *anchor, return {"$entry"}; Operation *declaration = SymbolTable::lookupNearestSymbolFrom(anchor, structure.getName()); + if (!declaration) { + Operation *root = anchor; + while (root->getParentOp()) + root = root->getParentOp(); + if (root->hasTrait()) + declaration = SymbolTable::lookupSymbolIn(root, structure.getName()); + } auto fields = declaration ? declaration->getAttrOfType("fields") : ArrayAttr(); llvm::SmallVector result; diff --git a/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp b/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp index 9cee823f6..3191e9342 100644 --- a/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp +++ b/compiler/acir/lib/CodeGen/QueueGraphPlan.cpp @@ -961,8 +961,7 @@ extractExpressions(mlir::Region ®ion, QueueBlockPlan &plan, } if (auto value = mlir::dyn_cast(operation)) { auto declaration = mlir::dyn_cast_or_null( - mlir::SymbolTable::lookupNearestSymbolFrom(value, - value.getDeclaration())); + lookupTypeDeclaration(value, value.getDeclaration())); if (!declaration) return planError("enum value declaration is unresolved"); auto enumerant = llvm::find_if( diff --git a/compiler/acir/lib/Transforms/LowerVariables.cpp b/compiler/acir/lib/Transforms/LowerVariables.cpp index 4a84b20fc..8c09bacc2 100644 --- a/compiler/acir/lib/Transforms/LowerVariables.cpp +++ b/compiler/acir/lib/Transforms/LowerVariables.cpp @@ -75,6 +75,13 @@ FailureOr completeWriteFields(OpBuilder &builder, return builder.getStrArrayAttr({"$entry"}); Operation *declaration = SymbolTable::lookupNearestSymbolFrom(variable, structure.getName()); + if (!declaration) { + Operation *root = variable; + while (root->getParentOp()) + root = root->getParentOp(); + if (root->hasTrait()) + declaration = SymbolTable::lookupSymbolIn(root, structure.getName()); + } auto fields = declaration ? declaration->getAttrOfType("fields") : ArrayAttr(); if (!fields) diff --git a/simulator/gfsim/include/gfsim/queue_blocks.h b/simulator/gfsim/include/gfsim/queue_blocks.h index ec45b0996..c51600221 100644 --- a/simulator/gfsim/include/gfsim/queue_blocks.h +++ b/simulator/gfsim/include/gfsim/queue_blocks.h @@ -3448,7 +3448,9 @@ class QueueSlot final : public SimObject { pendingCapture_ = false; fired_ = false; } - bool hasPendingCommit() const override { return fired_; } + bool hasPendingCommit() const override { + return fired_ || state_.pendingRelease; + } bool isRunnable(Epoch epoch) const override { if (fired_) return false; diff --git a/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp b/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp index 67688811b..204677b97 100644 --- a/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp +++ b/tests/cpp/agentic-circuit/gfsim/QueueBlocksTest.cpp @@ -2534,6 +2534,42 @@ TEST(QueueBlocksTest, SlotReleaseAndOutputCommitAtomicallyUnderBackpressure) { EXPECT_EQ(state.value, 0); } +TEST(QueueBlocksTest, RuleOwnedSlotReleaseWakesActivationDependents) { + SimSystem system("slot_release_activation"); + SimQueue captureInput("capture", 0, nullptr, 1); + SimQueue output("output", 1, nullptr, 1); + SlotState state{true, 7}; + bool standaloneRelease = false; + QueueSlot slot( + "slot", 2, nullptr, captureInput, state, {&standaloneRelease}); + QueueStateTransition, std::tuple<>, + std::tuple, std::tuple<>> + transition("release", 3, nullptr, {}, {}, {&output}, {}, {&state}, {}, + nullptr, {&state}); + WakeCounter wake(4); + + std::array rows = {makeDispatchRow(&captureInput), makeDispatchRow(&output), + makeDispatchRow(&slot), makeDispatchRow(&transition), + makeDispatchRow(&wake)}; + constexpr std::array activationOffsets{0, 0, 0, 1, 1, 1}; + constexpr std::array activationTargets{4}; + constexpr std::array closureOffsets{0, 0, 0, 0, 2, 2}; + constexpr std::array closureTargets{1, 2}; + ASSERT_TRUE(system.setDispatchTable(rows)); + ASSERT_TRUE(system.setActivationPlan(activationOffsets, activationTargets)); + ASSERT_TRUE(system.setWorkClosurePlan(closureOffsets, closureTargets)); + ASSERT_TRUE(system.scheduleWork(transition.id(), {0, 0})); + + EXPECT_TRUE(system.step()); + EXPECT_FALSE(state.valid); + ASSERT_NE(output.peek(), nullptr); + EXPECT_EQ(*output.peek(), 7); + EXPECT_EQ(system.activationTraversalCount(), 1u); + + EXPECT_FALSE(system.step()); + EXPECT_EQ(wake.workCount, 1u); +} + TEST(QueueBlocksTest, SlotReleaseCancelsWithConflictingTableTransaction) { SimTable table("table", 1, nullptr, 1); SimQueue output("output", 2, nullptr, 1); diff --git a/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir b/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir index 4ceb267f6..476f5ec23 100644 --- a/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir +++ b/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir @@ -22,6 +22,10 @@ builtin.module attributes { selected = true }> : () -> () + ac.type_scope @types { + ac.enum @Mode enumerants ["IDLE", "RUN"] + } {dlti.dl_spec = #dlti.dl_spec = {abi_alignment = 1 : i64, endianness = "little", preferred_alignment = 1 : i64, size = 1 : i64}>} + ac.module @Accumulator(%input: !ac.queue) -> (!ac.queue) parameters {} graph { %output = ac.scope @logic(%input) { @@ -33,6 +37,7 @@ builtin.module attributes { ^bb0(%item: !ac.var): %index = ac.var.constant 0 : i1 as !ac.var %old = ac.table.get @sum[%index] : !ac.var -> !ac.var + %run = ac.var.enum @types::@Mode "RUN" : !ac.var> %value = ac.var.add %old, %item : !ac.var %enabled = ac.var.constant true as !ac.var ac.firing.condition %enabled : !ac.var @@ -103,6 +108,7 @@ builtin.module attributes { // PLAN-SAME: "module_specializations":[{ // PLAN-SAME: "activation_edges":[ // PLAN-SAME: "kind":"firing" +// PLAN-DAG: "kind":"enum_constant" // PLAN-SAME: "definition":"Accumulator" // PLAN-SAME: "tables":[{"axis_widths":[1],"entries":1 // PLAN-SAME: "name":"sum" diff --git a/tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir b/tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir new file mode 100644 index 000000000..991e58482 --- /dev/null +++ b/tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir @@ -0,0 +1,40 @@ +// RUN: %acir_opt --pass-pipeline='builtin.module(ac-lower-variable-state)' %s | %FileCheck %s + +builtin.module attributes { + ac.contract_epoch = "0.5", + ac.model_kind = "queue_graph", + ac.queue_graph_domain = "cycle" +} { + ac.type_scope @types { + ac.struct @Entry fields [{name = "value", type = i8}, {name = "valid", type = i1}] + } {dlti.dl_spec = #dlti.dl_spec = {abi_alignment = 1 : i64, endianness = "little", preferred_alignment = 1 : i64, size = 2 : i64}>} + ac.module @Stateful(%input: !ac.queue>) + -> !ac.queue> parameters {} graph { + %output = ac.scope @body(%input) { + ^bb0(%borrowed: !ac.queue>): + ac.var.decl @entries type !ac.struct<@types::@Entry> init 0 : i64 + owner "/body" stable_id "var/body/entries" shape [2] + %next = ac.rule %borrowed depths [1] latencies [1] + name "replace" stable_id "replace_0" domain "cycle" type exact { + ^body(%item: !ac.var>): + %index = ac.var.constant 0 : i1 as !ac.var + ac.var.assign_element @entries[%index] = %item + : !ac.var, !ac.var> + %ready = ac.marker.obligation %item state pending resolver handshake + origin "replace:return" path "true" + : !ac.var> + ac.rule.return %ready : !ac.var> + } {ac.name = "next"} + : (!ac.queue>) + -> !ac.queue> + ac.scope.yield %next : !ac.queue> + } : (!ac.queue>) + -> !ac.queue> + ac.return %output : !ac.queue> + } +} + +// CHECK: ac.table @entries entry !ac.struct<@types::@Entry> entries 2 init 0 +// CHECK: ac.table.propose @entries +// CHECK-SAME: write_fields ["value", "valid"] +// CHECK-NOT: ac.var.assign_element From 3ad611df0a3799bf12a4298ecb813454f41d3294 Mon Sep 17 00:00:00 2001 From: RuoyuZhou Date: Wed, 16 Sep 2026 11:45:57 +0800 Subject: [PATCH 4/5] test(acir): cover nested enum lookup --- .../Transforms/queue-stateful-module-freeze.mlir | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir b/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir index 476f5ec23..32b600238 100644 --- a/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir +++ b/tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir @@ -107,8 +107,8 @@ builtin.module attributes { // PLAN-SAME: "specialization":"[[PLAN_SPECIALIZATION]]" // PLAN-SAME: "module_specializations":[{ // PLAN-SAME: "activation_edges":[ +// PLAN-SAME: "kind":"enum_constant" // PLAN-SAME: "kind":"firing" -// PLAN-DAG: "kind":"enum_constant" // PLAN-SAME: "definition":"Accumulator" // PLAN-SAME: "tables":[{"axis_widths":[1],"entries":1 // PLAN-SAME: "name":"sum" From 893bd9ca46b1b8e175947d42d67b42a80512ff8c Mon Sep 17 00:00:00 2001 From: RuoyuZhou Date: Wed, 16 Sep 2026 11:48:24 +0800 Subject: [PATCH 5/5] docs(acir): refresh IR coverage ledger --- .../acir/verification/ir-coverage.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/development/acir/verification/ir-coverage.md b/docs/development/acir/verification/ir-coverage.md index 00cae00ce..006003e49 100644 --- a/docs/development/acir/verification/ir-coverage.md +++ b/docs/development/acir/verification/ir-coverage.md @@ -12,25 +12,25 @@ acsim_contract_epoch: 0.5 | operation | source symbol | positive coverage | negative coverage | | --- | --- | --- | --- | | ac.system | ACIR_SystemOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACSim/ops-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | -| ac.type_scope | ACIR_TypeScopeOp | tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-config-metadata.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r2-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | +| ac.type_scope | ACIR_TypeScopeOp | tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-config-metadata.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r2-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | | ac.type_alias | ACIR_TypeAliasOp | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir | -| ac.module | ACIR_ModuleOp | tests/mlir/agentic-circuit/ACIR/address-map-canonical-order.mlir
tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir
tests/mlir/agentic-circuit/ACIR/canonical-entrypoint.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/view-provenance.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Analysis/process-state-verifier.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/acir-build-input-contract.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir
tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/process-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir | +| ac.module | ACIR_ModuleOp | tests/mlir/agentic-circuit/ACIR/address-map-canonical-order.mlir
tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir
tests/mlir/agentic-circuit/ACIR/canonical-entrypoint.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/view-provenance.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Analysis/process-state-verifier.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/acir-build-input-contract.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir
tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/process-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir | | ac.module.extern | ACIR_ModuleExternOp | tests/mlir/agentic-circuit/ACIR/canonical-entrypoint.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir | tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir | | ac.instance | ACIR_InstanceOp | tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/view-provenance.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir
tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/process-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir | | ac.array | ACIR_ArrayOp | tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir | tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir | | ac.instances | ACIR_InstancesOp | tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir | tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir | | ac.view | ACIR_ViewOp | tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/view-provenance.mlir | tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir | | ac.port | ACIR_PortOp | tests/mlir/agentic-circuit/ACIR/interfaces-valid.mlir
tests/mlir/agentic-circuit/ACIR/port-mapping-review-r2.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir | tests/mlir/agentic-circuit/ACIR/interfaces-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-review-r1-invalid.mlir | -| ac.return | ACIR_ReturnOp | tests/mlir/agentic-circuit/ACIR/address-map-canonical-order.mlir
tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir
tests/mlir/agentic-circuit/ACIR/canonical-entrypoint.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/view-provenance.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Analysis/process-state-verifier.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/acir-build-input-contract.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir
tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/process-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir | +| ac.return | ACIR_ReturnOp | tests/mlir/agentic-circuit/ACIR/address-map-canonical-order.mlir
tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir
tests/mlir/agentic-circuit/ACIR/canonical-entrypoint.mlir
tests/mlir/agentic-circuit/ACIR/collections-valid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/view-provenance.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Analysis/process-state-verifier.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/acir-build-input-contract.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/structural-instance-retention.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir
tests/mlir/agentic-circuit/ACIR/collections-invalid.mlir
tests/mlir/agentic-circuit/ACIR/contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-invalid.mlir
tests/mlir/agentic-circuit/ACIR/process-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir | | ac.queue | ACIR_QueueOp | tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir | | ac.event_queue | ACIR_EventQueueOp | tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir | tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir | | ac.resource | ACIR_ResourceOp | tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir | tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir | | ac.address_space | ACIR_AddressSpaceOp | tests/mlir/agentic-circuit/ACIR/address-map-canonical-order.mlir
tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir | | ac.address_map | ACIR_AddressMapOp | tests/mlir/agentic-circuit/ACIR/address-map-canonical-order.mlir
tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir | | ac.time_domain | ACIR_TimeDomainOp | tests/mlir/agentic-circuit/ACIR/address-time-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir | tests/mlir/agentic-circuit/ACIR/address-time-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir | -| ac.struct | ACIR_StructOp | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-config-metadata.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | +| ac.struct | ACIR_StructOp | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-config-metadata.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | | ac.bitfield | ACIR_BitfieldOp | tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir | tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir | -| ac.enum | ACIR_EnumOp | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir | +| ac.enum | ACIR_EnumOp | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir | | ac.packet | ACIR_PacketOp | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir | tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir | | ac.transaction | ACIR_TransactionOp | tests/mlir/agentic-circuit/ACIR/address-selectors-valid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r2-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir | | ac.interface | ACIR_InterfaceOp | tests/mlir/agentic-circuit/ACIR/interfaces-valid.mlir
tests/mlir/agentic-circuit/ACIR/port-mapping-review-r2.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir | tests/mlir/agentic-circuit/ACIR/interfaces-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/types-invalid.mlir | @@ -41,8 +41,8 @@ acsim_contract_epoch: 0.5 | ac.transition | ACIR_TransitionOp | tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-valid.mlir
tests/mlir/agentic-circuit/ACIR/ownership-order-review-r2.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir | | ac.guarantee | ACIR_GuaranteeOp | tests/mlir/agentic-circuit/ACIR/interfaces-valid.mlir
tests/mlir/agentic-circuit/ACIR/ownership-order-review-r2.mlir
tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/resources-valid.mlir | tests/mlir/agentic-circuit/ACIR/guarantees-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-forward-malformed-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir | | ac.process | ACIR_ProcessOp | tests/mlir/agentic-circuit/ACIR/contracts-valid.mlir
tests/mlir/agentic-circuit/ACIR/hierarchy-valid.mlir
tests/mlir/agentic-circuit/ACIR/process-valid.mlir
tests/mlir/agentic-circuit/Analysis/process-state-pass.mlir
tests/mlir/agentic-circuit/Analysis/process-state-verifier.mlir
tests/mlir/agentic-circuit/Bindings/resolve-ambiguous.mlir
tests/mlir/agentic-circuit/Bindings/resolve-empty.mlir
tests/mlir/agentic-circuit/Bindings/resolve-missing.mlir
tests/mlir/agentic-circuit/Bindings/resolve-valid.mlir
tests/mlir/agentic-circuit/CodeGen/emit-cxx-current.mlir
tests/mlir/agentic-circuit/Conversion/atomic-failure.mlir
tests/mlir/agentic-circuit/Conversion/bindings.mlir
tests/mlir/agentic-circuit/Conversion/collections.mlir
tests/mlir/agentic-circuit/Conversion/hierarchy.mlir
tests/mlir/agentic-circuit/Conversion/process-basic.mlir
tests/mlir/agentic-circuit/Conversion/process-control-flow.mlir
tests/mlir/agentic-circuit/Conversion/process-live-values.mlir
tests/mlir/agentic-circuit/Conversion/process-missing-mapping.mlir
tests/mlir/agentic-circuit/Conversion/pure-results.mlir
tests/mlir/agentic-circuit/Conversion/structure.mlir
tests/mlir/agentic-circuit/Conversion/time-domains.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir
tests/mlir/agentic-circuit/Python/frontend-lowering.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/freeze-topology.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir
tests/mlir/agentic-circuit/Transforms/zero-delay-cycles.mlir | tests/mlir/agentic-circuit/ACIR/contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/process-invalid.mlir
tests/mlir/agentic-circuit/ACIR/runtime-references-invalid.mlir
tests/mlir/agentic-circuit/Conversion/bindings-invalid.mlir
tests/mlir/agentic-circuit/Conversion/process-invalid.mlir | -| ac.var.constant | ACIR_VarConstantOp | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching.mlir
tests/mlir/agentic-circuit/ACIR/records-valid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-div-rem-canonicalize.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | -| ac.var.enum | ACIR_VarEnumOp | tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir | +| ac.var.constant | ACIR_VarConstantOp | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching.mlir
tests/mlir/agentic-circuit/ACIR/records-valid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-div-rem-canonicalize.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | +| ac.var.enum | ACIR_VarEnumOp | tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir | | ac.var.enum_match | ACIR_VarEnumMatchOp | tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir | tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir | | ac.var.tuple | ACIR_VarTupleOp | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/records-valid.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir | | ac.var.array | ACIR_VarArrayOp | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir | @@ -82,26 +82,26 @@ acsim_contract_epoch: 0.5 | ac.var.range_sub | ACIR_VarRangeSubOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir | tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir | | ac.var.range_cmp | ACIR_VarRangeCmpOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir | tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir | | ac.var.insert | ACIR_VarInsertOp | tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir | tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir | -| ac.var.decl | ACIR_VarDeclOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | +| ac.var.decl | ACIR_VarDeclOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.var.read | ACIR_VarReadOp | tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir | | ac.var.read_element | ACIR_VarReadElementOp | tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.var.assign | ACIR_VarAssignOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | -| ac.var.assign_element | ACIR_VarAssignElementOp | tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | +| ac.var.assign_element | ACIR_VarAssignElementOp | tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | | ac.var.match | ACIR_VarMatchOp | tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | | ac.var.match.yield | ACIR_VarMatchYieldOp | tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | | ac.var.choose | ACIR_VarChooseOp | tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | | ac.var.choose.yield | ACIR_VarChooseYieldOp | tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | | ac.transform | ACIR_TransformOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir | tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.transform.yield | ACIR_TransformYieldOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir | tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | -| ac.rule | ACIR_RuleOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | +| ac.rule | ACIR_RuleOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | | ac.rule.condition | ACIR_RuleConditionOp | tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir | | ac.rule.output | ACIR_RuleOutputOp | tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir | -| ac.rule.return | ACIR_RuleReturnOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | +| ac.rule.return | ACIR_RuleReturnOp | tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | | ac.state.snapshot | ACIR_StateSnapshotOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir | | ac.state.snapshot_set | ACIR_StateSnapshotSetOp | tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir | tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir | | ac.marker.type | ACIR_TypeConstraintMarkerOp | tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | | ac.marker.value | ACIR_ValueFactMarkerOp | tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | -| ac.marker.obligation | ACIR_PendingObligationMarkerOp | tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | +| ac.marker.obligation | ACIR_PendingObligationMarkerOp | tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir | | ac.source | ACIR_SourceOp | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/barrier-invalid.mlir
tests/mlir/agentic-circuit/ACIR/broadcast-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/fork-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.sink | ACIR_SinkOp | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | ac.observe | ACIR_ObserveOp | tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir | tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir | @@ -122,10 +122,10 @@ acsim_contract_epoch: 0.5 | ac.memory.instance | ACIR_MemoryInstanceOp | tests/mlir/agentic-circuit/ACIR/memory.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir | | ac.memory.request | ACIR_MemoryRequestOp | tests/mlir/agentic-circuit/ACIR/memory.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir | | ac.memory.yield | ACIR_MemoryYieldOp | tests/mlir/agentic-circuit/ACIR/memory.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir | -| ac.table | ACIR_TableOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir | +| ac.table | ACIR_TableOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir | | ac.table.index | ACIR_TableIndexOp | tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir | | ac.table.get | ACIR_TableGetOp | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir | -| ac.table.propose | ACIR_TableProposeOp | tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir | +| ac.table.propose | ACIR_TableProposeOp | tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir | | ac.table.match | ACIR_TableMatchOp | tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir | | ac.table.match.yield | ACIR_TableMatchYieldOp | tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir | | ac.table.choose | ACIR_TableChooseOp | tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir | @@ -143,8 +143,8 @@ acsim_contract_epoch: 0.5 | ac.reorder.yield | ACIR_ReorderYieldOp | tests/mlir/agentic-circuit/ACIR/reorder.mlir | tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir | | ac.feedback | ACIR_FeedbackOp | tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir | tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir | | ac.feedback.yield | ACIR_FeedbackYieldOp | tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir | tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir | -| ac.scope | ACIR_ScopeOp | tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir | -| ac.scope.yield | ACIR_ScopeYieldOp | tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir | +| ac.scope | ACIR_ScopeOp | tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir | +| ac.scope.yield | ACIR_ScopeYieldOp | tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir | | ac.firing | ACIR_FiringOp | tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir | | ac.firing.condition | ACIR_FiringConditionOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir | | ac.firing.output | ACIR_FiringOutputOp | tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir | tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir | @@ -168,14 +168,14 @@ acsim_contract_epoch: 0.5 | type | source symbol | positive coverage | negative coverage | | --- | --- | --- | --- | -| !ac.struct | ACIR_StructType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-config-metadata.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | +| !ac.struct | ACIR_StructType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-config-metadata.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/Transforms/deterministic-canonicalization.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | | !ac.packet | ACIR_PacketType | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir | tests/mlir/agentic-circuit/ACIR/review-r1-invalid.mlir | | !ac.transaction | ACIR_TransactionType | tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir | -| !ac.enum | ACIR_EnumType | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir | +| !ac.enum | ACIR_EnumType | tests/mlir/agentic-circuit/ACIR/declarations-valid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/review-r1-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/declarations-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir | | !ac.range | ACIR_RangeType | tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir | tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir | | !ac.value_array | ACIR_ValueArrayType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir | -| !ac.var | ACIR_VarType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/records-valid.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-div-rem-canonicalize.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | -| !ac.queue | ACIR_QueueType | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/barrier-invalid.mlir
tests/mlir/agentic-circuit/ACIR/broadcast-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/fork-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | +| !ac.var | ACIR_VarType | tests/mlir/agentic-circuit/ACIR/aggregate-values.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/enum-values.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/records-valid.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table-layout.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-div-rem-canonicalize.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/enum-match-lowering.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/record-projection-canonicalize.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/aggregate-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bitfield-schema-invalid.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-match-invalid.mlir
tests/mlir/agentic-circuit/ACIR/enum-values-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/masked-matching-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-multi-selection-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/value-contracts-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-contracts-residual-invalid.mlir | +| !ac.queue | ACIR_QueueType | tests/mlir/agentic-circuit/ACIR/barrier.mlir
tests/mlir/agentic-circuit/ACIR/bounded-range-types.mlir
tests/mlir/agentic-circuit/ACIR/broadcast.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback.mlir
tests/mlir/agentic-circuit/ACIR/credit.mlir
tests/mlir/agentic-circuit/ACIR/dependency.mlir
tests/mlir/agentic-circuit/ACIR/expect.mlir
tests/mlir/agentic-circuit/ACIR/firing.mlir
tests/mlir/agentic-circuit/ACIR/fork.mlir
tests/mlir/agentic-circuit/ACIR/memory.mlir
tests/mlir/agentic-circuit/ACIR/observe.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir
tests/mlir/agentic-circuit/ACIR/reorder.mlir
tests/mlir/agentic-circuit/ACIR/route.mlir
tests/mlir/agentic-circuit/ACIR/scope.mlir
tests/mlir/agentic-circuit/ACIR/select.mlir
tests/mlir/agentic-circuit/ACIR/source-provenance.mlir
tests/mlir/agentic-circuit/ACIR/source-sink.mlir
tests/mlir/agentic-circuit/ACIR/static-type-metadata.mlir
tests/mlir/agentic-circuit/ACIR/table.mlir
tests/mlir/agentic-circuit/ACIR/transform.mlir
tests/mlir/agentic-circuit/ACIR/var-expressions.mlir
tests/mlir/agentic-circuit/ACIR/var-outputless-rule.mlir
tests/mlir/agentic-circuit/ACIR/writer-arbitration.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter-verilog.mlir
tests/mlir/agentic-circuit/CodeGen/arbiter.mlir
tests/mlir/agentic-circuit/CodeGen/atomic-transform.mlir
tests/mlir/agentic-circuit/CodeGen/bit-operations.mlir
tests/mlir/agentic-circuit/CodeGen/bit-widths.mlir
tests/mlir/agentic-circuit/CodeGen/count-leading-zeros.mlir
tests/mlir/agentic-circuit/CodeGen/masked-match.mlir
tests/mlir/agentic-circuit/CodeGen/popcount.mlir
tests/mlir/agentic-circuit/CodeGen/pure-helpers.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-transform-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes4-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-endpoint-value-constraints.mlir
tests/mlir/agentic-circuit/CodeGen/table-field-replace-order-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-masked-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-max-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multi-selection-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-multidimensional-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-read-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-runtime-row-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-policies-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-selection-write-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-slot-multiple-tables.mlir
tests/mlir/agentic-circuit/CodeGen/table-typed-init-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/table-writer-arbitration-pyc.mlir
tests/mlir/agentic-circuit/CodeGen/value-select.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-replace-order.mlir
tests/mlir/agentic-circuit/Transforms/firing-field-write.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-boundaries.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-chain.mlir
tests/mlir/agentic-circuit/Transforms/private-queue-payload-pruning.mlir
tests/mlir/agentic-circuit/Transforms/queue-mixed-nested-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-owner-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-multi-rule-multi-owner-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-nested-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-root-result-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateful-module-freeze.mlir
tests/mlir/agentic-circuit/Transforms/queue-stateless-multi-output-module.mlir
tests/mlir/agentic-circuit/Transforms/queue-var-cse.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-join-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-branch-local-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-checks.mlir
tests/mlir/agentic-circuit/Transforms/rule-consume-only-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-cse-footprints.mlir
tests/mlir/agentic-circuit/Transforms/rule-eight-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-branch-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-multi-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-optional-output-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-owner-write-batch.mlir
tests/mlir/agentic-circuit/Transforms/rule-pure-optional-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-slot-release-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-snapshot-set-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-state-driven-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-lowering.mlir
tests/mlir/agentic-circuit/Transforms/rule-table-multi-input-lowering.mlir
tests/mlir/agentic-circuit/Transforms/source-provenance-cse.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-rule-lowering.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints.mlir
tests/mlir/agentic-circuit/Transforms/variable-array-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-enum-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-module-struct-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-runtime-row-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-state-lowering.mlir
tests/mlir/agentic-circuit/Transforms/variable-struct-state-lowering.mlir | tests/mlir/agentic-circuit/ACIR/barrier-invalid.mlir
tests/mlir/agentic-circuit/ACIR/broadcast-invalid.mlir
tests/mlir/agentic-circuit/ACIR/control-feedback-invalid.mlir
tests/mlir/agentic-circuit/ACIR/credit-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dependency-invalid.mlir
tests/mlir/agentic-circuit/ACIR/dormant-surface-invalid.mlir
tests/mlir/agentic-circuit/ACIR/expect-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-footprint-invalid.mlir
tests/mlir/agentic-circuit/ACIR/firing-invalid.mlir
tests/mlir/agentic-circuit/ACIR/fork-invalid.mlir
tests/mlir/agentic-circuit/ACIR/memory-invalid.mlir
tests/mlir/agentic-circuit/ACIR/observe-invalid.mlir
tests/mlir/agentic-circuit/ACIR/private-queue-payload-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-lanes-invalid.mlir
tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir
tests/mlir/agentic-circuit/ACIR/reorder-invalid.mlir
tests/mlir/agentic-circuit/ACIR/route-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-invalid.mlir
tests/mlir/agentic-circuit/ACIR/rule-table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/scope-invalid.mlir
tests/mlir/agentic-circuit/ACIR/select-invalid.mlir
tests/mlir/agentic-circuit/ACIR/source-sink-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-field-order-invalid.mlir
tests/mlir/agentic-circuit/ACIR/state-snapshot-set-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-layout-invalid.mlir
tests/mlir/agentic-circuit/ACIR/table-runtime-row-invalid.mlir
tests/mlir/agentic-circuit/ACIR/transform-invalid.mlir
tests/mlir/agentic-circuit/ACIR/var-state-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/queue-lanes-pyc-invalid.mlir
tests/mlir/agentic-circuit/CodeGen/table-pyc-profile-invalid.mlir
tests/mlir/agentic-circuit/Transforms/pure-helpers-invalid.mlir
tests/mlir/agentic-circuit/Transforms/rule-lowering-invalid.mlir
tests/mlir/agentic-circuit/Transforms/table-endpoint-value-constraints-invalid.mlir
tests/mlir/agentic-circuit/Transforms/value-constraints-invalid.mlir | | !ac.array | ACIR_ArrayType | tests/mlir/agentic-circuit/ACIR/queue-var-types.mlir | tests/mlir/agentic-circuit/ACIR/queue-var-types-invalid.mlir | | !ac.flow | ACIR_FlowType | tests/mlir/agentic-circuit/ACIR/protocols-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Transforms/verify-model.mlir | tests/mlir/agentic-circuit/ACIR/interfaces-invalid.mlir
tests/mlir/agentic-circuit/ACIR/interfaces-review-r1-invalid.mlir
tests/mlir/agentic-circuit/ACIR/types-invalid.mlir | | !ac.endpoint | ACIR_EndpointType | tests/mlir/agentic-circuit/ACIR/interfaces-valid.mlir
tests/mlir/agentic-circuit/ACIR/types-valid.mlir
tests/mlir/agentic-circuit/Conversion/typed-graph.mlir
tests/mlir/agentic-circuit/Conversion/whole-model.mlir | tests/mlir/agentic-circuit/ACIR/interfaces-invalid.mlir
tests/mlir/agentic-circuit/ACIR/protocols-invalid.mlir
tests/mlir/agentic-circuit/ACIR/resources-invalid.mlir |