executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
core-graph-engineGuides Meshroom graph, node, attribute, serialization, compatibility, cache, execution, and status workflows for agents working with .mg project graphs or Meshroom core APIs.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this sub-skill when a task is about Meshroom's in-memory graph model, .mg serialization, node/attribute instances, DAG traversal, compatibility nodes, invalidation, cache directories, or local graph execution.
Graph, Node, Attribute, graph IO, status, and compatibility objects.| Task | Use |
|---|---|
| Add nodes, connect attributes, rename/find nodes, compute topological order | Graph workflows |
Save/load .mg files, save templates, import partial graph content | Graph workflows |
Explain .mg JSON headers, node version metadata, minimal template serialization | API reference |
Diagnose CompatibilityNode, UnknownNodeType, VersionConflict, DescriptionConflict | Troubleshooting |
| Understand node status, chunks, preprocess/process/postprocess, cache folders | API reference and Troubleshooting |
Execute a graph locally or reason about dfsToProcess | Graph workflows |
Graph is a DAG of node instances connected by edges from output attributes to input attributes.meshroom.core.desc; node instances and valued attributes live in meshroom.core.node and meshroom.core.attribute.executeGraph selects nodes that are not already successful, initializes statuses, runs preprocess/chunks/postprocess, and saves the graph before compute..mg files with a header and graph payload. Template saves omit default inputs and runtime output/cache details.import meshroom
meshroom.setupEnvironment()
import meshroom.core
from meshroom.core.graph import Graph, loadGraph
meshroom.core.initNodes()
graph = Graph("example")
node = graph.addNewNode("InputString", name="Text_1")
node.string.value = "hello"
graph.save("example.mg")
loaded = loadGraph("example.mg", strictCompatibility=False)
print([n.name for n in loaded.nodes])
If you are creating custom node types for this skeleton, route to node-descriptors first.
loadGraph(path, strictCompatibility=True) only when compatibility nodes should be a hard failure.Graph.configureOutputNodes([...]) only after a graph/template includes OutputNode instances.dfsOnFinish/dfsOnDiscover for topology inspection; use dfsToProcess for compute planning because it skips already successful branches.forceStatus and forceCompute as deliberate overrides. They can clobber useful status/cache evidence.Native tests that exercise this route include graph ordering, graph IO, compatibility/upgrade, compute status, invalidation, and attribute callback cases. Prefer focused tests over full pipelines:
pytest tests/test_graph.py -q
pytest tests/test_graphIO.py -q
pytest tests/test_compatibility.py -q
pytest tests/test_compute.py -q
Run them from a Meshroom checkout only when doing repository maintenance. For package usage questions, use small synthetic graph snippets instead of requiring the original checkout.