project page: Manufacturing shows finish's pre-export snapshot ('Not cleared for fabrication', raw {'state': ...} dict) after export and deliver passed

noah · ·closed by Colby Knox

What happens

The project page's Manufacturing section shows the verification snapshot that finish wrote, before export ran, so a board that passed every check at delivery is published as:

Checked by finish: DRC yes, ERC yes, body overlap yes, connectivity yes, courtyards yes, fills in Gerbers {'state': 'not known', 'why': 'not exported yet (run export)'}, fills in saved board yes, ... Not cleared for fabrication: fills in Gerbers not verified. Do not tell the human the board is ready to fabricate.

Two problems:

  1. Stale source. tools/page-build.py (around line 2064) reads run.summary.verified. finish writes that (main.rs ~5428), and the flow runs finish before export. The export outcome later records fillsGerbers.pass: true and fillsCurrent.pass: true, and deliver writes summary.verifiedAtDelivery with allPassed: true. The page never reads either, so it keeps telling readers the board is not cleared for fabrication. The last line is written as an instruction to the AI, yet it shows on a page that people read.
  2. Raw dict on the page. A not-yes item is printed with esc(v) on the state object, so readers see {'state': 'not known', 'why': '...'}, HTML-escaped, instead of "not known (not exported yet)".

Repro

adom-aiflow 0.2.56 (local build 0.2.56+noah.1; the page-build code is unchanged from stock), KiCad 10.0.4 on Windows through the KiCad Bridge, run rgbcct-led-driver-claude-opus-5-5-20261106-1841:

  1. finish (summary.verified has fills in Gerbers = not known, because no export exists yet).
  2. export (fillsGerbers pass, fillsCurrent pass).
  3. Page build and push (21:41Z, same board sha256 as the export, 12 min after it).
  4. deliver (verifiedAtDelivery: every item yes).

The live page (noah/rgbcct-canfd-led-driver, private) said "Not cleared for fabrication" for three days. The owner was ordering the board at JLCPCB at the time.

Expected

  • Recompute the list when the page is built: verified::run_items on the run's current outcomes, the way export and deliver do. Or prefer verifiedAtDelivery, then the export-time result, and only then summary.verified, and print which one it is ("Checked at delivery", "Checked at export").
  • Render a state object as <state> (<why>).
  • Keep the AI-directed wording ("Do not tell the human ...") off the published page. Readers need "not verified yet: fills in Gerbers", not an instruction to an AI.
  • Optional: the "Checked by finish" label hides that the list is a snapshot. Date it.

I fixed this page by hand, but the next page build will bring the stale text back.

1 Reply

Colby Knox marked this in progress ·
Colby Knox linked pull request #84, which closes this when it merges ·
Colby Knox closed this in pull request #84 ·
Colby Knox ·

Thanks Noah, and sorry the page said that while you were ordering. This is fixed in AI Flow 0.2.65 on the run side.

One thing first: tools/page-build.py isn't part of AI Flow (it isn't in the package at 0.2.56 or since), so I can't change that script. It looks like your project's own builder. What changed is the data it reads:

  • summary.verified is now the newest check. export and deliver rewrite it, not only finish. It carries checkedBy (finish, export or deliver) and at, so a page can say "Checked at delivery" with the date. summary.verifiedAtExport and summary.verifiedAtDelivery hold each snapshot too.
  • summary.verified.lines reads each item as people should see it, for example "fills in Gerbers not known (not exported yet (run export))". Print those instead of the raw state object.
  • The stored verdict is written for readers: "Not cleared for fabrication: fills in Gerbers not verified yet." The line meant for the AI ("Do not tell the human...") is now only in what AI Flow prints to the AI, never in the run data.

So with your builder unchanged, a page built after export or deliver will show the later, passing result. Switching its item rendering to lines fixes the raw dict. The aiflow-project-page skill now says to build or refresh the page after export.

Upgrade with adom-wiki pkg install adom/adom-aiflow; adom-aiflow --version then shows 0.2.65.

Log in to reply.