Nodes/atlas-camera/Atlas Record Plate Attempt 🧾
ComfyUI Node

Atlas Record Plate Attempt 🧾

Log a model attempt against a photograph — if the plan allows it

By mikejamesvfx·Created 2 months ago·Updated a day ago· 1
Atlas Record Plate Attempt 🧾
  • plate
  • plate
  • result_json
  • report
result
locked_plan

In the Atlas evidence pipeline, a photograph is a ledger of everything that happened to it - and every run of a model against that photo is an attempt that gets logged. AtlasRecordPlateAttempt is the node that appends one: a typed, immutable ProcessingAttempt plus any derived artifacts it produced. But it's not a rubber stamp. It only records the attempt if the model that made it is approved by the plate's locked plan. It's the node that makes "we only used the models we said we'd use" a checkable fact instead of a vibe.

How it works

The node takes the plate, a result (JSON describing the attempt and its artifacts), and a locked_plan (the JSON a prior AtlasReadLockedPlatePlan validated). Before anything is recorded it re-verifies the plan binding - phase, digest, plate identity, source content address, artifact ledger - and then enforces the plan's model policy: the attempt's model identity (id, version, SHA-256, license) must be in the plan's approved set. An attempt from an unapproved model is refused outright.

If the model passes, the validation continues: the attempt record must parse, artifacts must be of the derived kind, the attempt's output artifact ids must exactly match the artifacts you're attaching, and each artifact is recorded onto the plate in turn. Only then is the attempt appended. Everything is immutable and the ledger is append-only - you can't edit history, only extend it. The node returns the updated plate, the canonical result_json, and a report with the new attempt id.

The inputs and outputs

Three required inputs: plate (ATLAS_REAL_PLATE), result (STRING, multiline - the attempt+artifacts JSON, or a path to it), and locked_plan (STRING, multiline - the validated plan JSON). Outputs: the updated plate, result_json (STRING), and report (STRING).

The canonical flow is AtlasOpenRealPlate → AtlasReadLockedPlatePlan → …run the model… → AtlasRecordPlateAttempt, with this node at the end of the chain proving the run happened under the approved policy.

Installing

Pack install:

cd <ComfyUI>/custom_nodes
git clone https://github.com/mikejamesvfx/atlas-camera.git

Restart. And yes - the standing caveat, one more time, because it matters here more than anywhere: the attempt schema and the ledger live in the private atlas-world distribution, separate from the public pack. The node registers regardless, and raises a clear pip install -e path/to/atlas-world hint when you run it without the package. This node is the heart of the evidence lane; if you're not running that lane, it's not for you.

Where people get burned

  • "attempt model identity is not approved by locked plan" - the model isn't in the plan's policy. Either the plan is wrong for this run or you're using a model nobody approved. The refusal is the point.
  • "locked plan is bound to a different plate" - the plan and the plate don't match. Run AtlasReadLockedPlatePlan again on the right pairing.
  • "attempt output IDs must exactly match result artifacts" - the attempt claims outputs that don't line up with the artifacts you attached. Fix the JSON; a ledger that can't account for its own artifacts is worthless.

An honest word: this is the least glamorous node in the pack, and it's easy to read as bureaucracy. But if you've ever had to answer "which of these model outputs actually made it into the final plate, and was the model licensed for it?" - that's exactly the question this node makes answerable.

CategoryAtlas/11 · Evidence Plate

Inputs (3)

NameTypeDefaultDescription
plateATLAS_REAL_PLATE
resultSTRING
locked_planSTRING

Outputs (3)

NameTypeDescription
plateATLAS_REAL_PLATE
result_jsonSTRING
reportSTRING