Projects containing file-input blocks cannot be exported to .deepnote, so workspace-wide checks never see them · Issue #570 · deepnote/deepnote · GitHub
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Projects containing file-input blocks cannot be exported to .deepnote, so workspace-wide checks never see them #570
Some projects cannot be exported to .deepnote because they contain block types that have no
document representation — file-input blocks are the case we hit. deepnote sync therefore
produces a workspace tree that is missing those projects entirely.
Why it matters beyond sync
Every workspace-wide check reads the synced tree, so a project that cannot be exported is not
"partially analyzed" — it is absent, and absent in a way nothing reports. That silently shrinks
the corpus for:
integration inventory and orphan detection (an integration used only by an unexportable project
reads as an orphan)
egress and shared-credential detection (a credential in an unexportable project is invisible, so
a genuinely shared one can read as single-project)
subject scatter and the DSAR index (a person's data in an unexportable project will not be found
by deepnote subjects lookup, which is the case where a wrong answer is most expensive)
consensus checks, which are already sensitive to how much of the workspace they can see
The governance work in #555–#560 depends on the synced tree being the whole workspace. It is not
blocked on this — the checks are useful on the projects they can see — but the gap belongs on the
record, because "no findings" and "no data" look identical in the output today.
Suggested direction
Two separable pieces:
Decide what the .deepnote format should do with a block type that has no document form —
round-trip it opaquely, or export a placeholder that marks the project as lossy.
Until then, have deepnote sync report the projects it could not export, so a workspace-wide
check can say how much of the workspace it actually read.
(2) alone would be enough to stop the silence, and is much the smaller change.
Closing: I filed this without verifying it, and it is wrong
I checked the claim against main (aa891df) and it does not hold. input-file blocks have a full document representation in the .deepnote format:
inputFileBlockSchema is defined at packages/blocks/src/deepnote-file/deepnote-file-schema.ts:393 and is a member of the deepnoteBlockSchema discriminated union, alongside the other seven input types.
A project containing one parses, serializes and re-parses cleanly, keeping deepnote_allowed_file_extensions and the variable name.
deepnote lint analyses it normally — it raises missing-input and unused-variable against the block like any other input.
So there is no block type here with no document representation, and nothing is excluded from the synced tree for that reason. I filed this from a description I was given rather than from the code, which was a mistake — the premise should have been the first thing I checked, not the last.
If the real limitation is on the Deepnote Cloud export side rather than in this repository, that belongs in an issue written by someone who can see that code; I have no evidence for it from here and would only be guessing again.
The companion issue #571 did turn out to describe something real, though not for the reason either of us thought — I have rewritten it there.
The project failed to export because of bad data in one block. File input blocks themselves export fine.
Why the first read was wrong
The .deepnote format supports input-file blocks.
The export failed because of one block's data. Its deepnote_allowed_file_extensions setting was stored as null, but the format only allows text there, so the block failed validation.
The error message only named the block type: "cannot be represented in a .deepnote document: input-file". That made it look like no file input block could be exported. The server didn't log the actual validation error either, so the real cause was hidden.
One bad block fails the whole project, which is why every notebook in it was missing from the sync.
The app doesn't write null there today, so this is old data.
Solution
The affected block is fixed, and the project now exports. It will show up in the next sync.
A server-side fix is in review:
The export treats a stored null in that field as missing, so this case can't break an export again.
When a block can't be exported, the error now names the block, its id, and the field that failed.
Activity
linear-code commentedon Oct 8, 2026
GRN-5745
jamesbhobbs commentedon Oct 8, 2026
Closing: I filed this without verifying it, and it is wrong
I checked the claim against
main(aa891df) and it does not hold.input-fileblocks have a full document representation in the.deepnoteformat:inputFileBlockSchemais defined atpackages/blocks/src/deepnote-file/deepnote-file-schema.ts:393and is a member of thedeepnoteBlockSchemadiscriminated union, alongside the other seven input types.deepnote_allowed_file_extensionsand the variable name.deepnote lintanalyses it normally — it raisesmissing-inputandunused-variableagainst the block like any other input.deepnote convert -f jupyterrepresents it too, emittingupload = None.So there is no block type here with no document representation, and nothing is excluded from the synced tree for that reason. I filed this from a description I was given rather than from the code, which was a mistake — the premise should have been the first thing I checked, not the last.
If the real limitation is on the Deepnote Cloud export side rather than in this repository, that belongs in an issue written by someone who can see that code; I have no evidence for it from here and would only be guessing again.
The companion issue #571 did turn out to describe something real, though not for the reason either of us thought — I have rewritten it there.
dinohamzic commentedon Oct 8, 2026
The project failed to export because of bad data in one block. File input blocks themselves export fine.
Why the first read was wrong
.deepnoteformat supportsinput-fileblocks.deepnote_allowed_file_extensionssetting was stored asnull, but the format only allows text there, so the block failed validation.nullthere today, so this is old data.Solution
nullin that field as missing, so this case can't break an export again.