agent's nbformat write failed: lost the cell tags papermill needs, parameters missing
Fixes an agent's nbformat write dropping the cell tags papermill needs: preserve tags on every cell transformation. For agent builders.
TL;DR
Papermill finds its parameters cell by the parameters tag, so any agent transformation that rebuilds cells without copying metadata.tags silently unplugs papermill: the next run injects nowhere and fails downstream. Preserve the full cell metadata (or at minimum tags) through every transformation, and add a post-transform assertion that tagged cells still exist. Tags are load-bearing; treat them as such.
agent's nbformat write failed: lost the cell tags papermill needs, parameters missingUse this when
- Papermill stops injecting after an agent rewrites the notebook.
- The rewritten notebook has no
parameterstag. - The agent rebuilds cells (split, merge, clean).
Not for this skill when
- The tag was never there. Tag the cell.
- Papermill injects but values are wrong. That is a typing issue.
Steps
- Confirm the loss: compare tags before and after the transform. Verify: the parameters tag is gone.
- Fix the transform to copy
cell.metadata(deep) into rebuilt cells. Verify: tags survive. - Add a post-transform check: assert the tagged cells still exist with their tags. Verify: the check fails loudly on future regressions.
- Re-run papermill on the transformed notebook. Verify: injection works.
- Document tags as load-bearing in the agent's notebook guide. Verify: the next transform author knows.
Variant phrasings
papermill tags lost rewrite
Short form. Copy metadata through transforms.
cell tags dropped nbformat write
The mechanism phrasing. Deep-copy metadata.
parameters tag missing after agent
The symptom phrasing. Assert tags post-transform.
Compatibility: nbformat 5.x, papermill 2.x. Tags live in cell.metadata.tags.
Why it happens
Cell tags are invisible in normal rendering, so transforms that rebuild cells from source text naturally forget them; the author sees identical-looking cells and ships. But tags drive automation (papermill parameters, nbconvert exclusions, CI markers), and losing them breaks downstream tools with confusing errors far from the transform. Invisible-but-load-bearing metadata must be preserved by default.
Edge cases / pitfalls
- Shallow-copying metadata shares tag lists between cells. Deep-copy.
- Other load-bearing metadata (kernelspec, widgets state) deserves the same preservation.
- The assertion should name the missing tag. 'Tags missing' is less useful than 'parameters tag missing'.
- If the transform intentionally retags, log the change. Silent retagging is a bug factory.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst7iYp4pHqx7nF4G2JChNHg