A pull reached the source and wrote, but did not finish — the caller aborted, the page closed mid-run, or the source's next page named an origin the profile does not declare.
⚠️ A run the hard cap cuts short is NOT this: it went to its end and is reported
pulled. What the cap left out is said elsewhere — by the truncation notice the pull
raises for a full run — not by this status.
🛑 Added by R9, when the pull started committing PAGE BY PAGE. Before that a
pull was atomic in practice: one transaction, so it either landed whole or not at
all, and two statuses sufficed. Committing per page makes "partly filled" a real,
durable state of the store — and reporting it as pulled would be the exact defect
the truncated member exists to prevent, one level up: a partial local copy that
looks complete.
Per-layer offline status, reported rather than guessed.
declaredNeverPulledis the case that has no observable today: a layer marked for offline use that was never actually fetched looks exactly like one that was, right up to the moment the network drops. "Marked" means it declares a pull source (offline.source.url); a layer read from the local store with no source has nothing to pull, and isnotDeclared.