Replies: 3 comments
|
This failure mode is especially important for any UI-driven plugin store: the control plane that performs the install must not disappear before it can report or repair the failure. I think the install contract needs to be transactional rather than treating
We have turned this into a concrete safety requirement for the open-source DSH Plugin Store: sandbaseai/dsh-plugin-store#6. For transparency, the current Store is still a Preview. It validates catalog membership and invokes the DSH CLI with a fixed argument vector, but it does not yet claim the full preflight + health probe + automatic rollback guarantee above. The linked issue includes the expected regression evidence, and upstream input on a canonical offline |
|
I converted this failure mode into a source-pinned rc.8 recovery runbook: https://sandbaseai.github.io/deepseek-harness-handbook/invalid-overlay-boot-failure.html Two details from the current launcher are especially useful when the Web control plane is already gone:
The runbook maps both persistent user-layer owners, preserves manifest/lock/layer evidence before reducing the implicated file to the valid empty array For tooling that writes overlays, the proposed contract is Community-maintained operational guidance, not an upstream guarantee; all version-sensitive source links are pinned to |
|
@denial123789 The cold-start versus live-HMR distinction is the one that caught me. I had been treating a successful write as the end of the story, and "restart to load it" as a formality. It isn't: a running harness can reject a candidate and keep serving the tree it already has, so the write looks accepted, and the same bytes then fail from cold because there is no prior tree to fall back on. That is a worse failure than an immediate one, because the feedback arrives hours later and somewhere else. I have changed my tooling to say a restart is the real test rather than implying the write was it, and to point at I had missed that On your point that a successful Which is why I think the
A canonical Two things I would add from building the write path, both learned by breaking my own harness: Confine the writes. I own a marker-delimited block in Bind the review to the write. The preview issues a token over the exact proposed bytes and the revision they were computed against; applying without it is refused. It is a small thing, but it closes the window where a second tab or a hand edit changes what gets written after the human approved it - which in this domain means the difference between a reviewed change and an unreviewed one. I would rather converge on your contract than ship a second validator with different semantics, so if the Store issue settles on a shape for the offline check I will match it. Fail-loud on missing policy, sandbox, and persistence providers rather than treating a missing row as a safe degraded state seems right to me too - the degraded state is not observable from inside a harness that did not start. Thanks again for the reply 💪 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
I hit this while building tooling that edits overlays, and I think it is worth stating plainly, because the failure is much larger than it looks.
I added a row naming a package that was not installed in the profile:
I expected one dead entry that I could then inspect. What actually happens is
ERR_MODULE_NOT_FOUNDduring boot, and the process exits. Not a degraded row - no harness at all. Which means:That is a sharp edge for a file people are encouraged to hand-edit, and it is the same shape as several boot incidents already reported here.
What I took from it
The check has to happen before the write, not after. In my own tooling I now verify that every inserted package is present in the profile before an overlay is written, and refuse the write otherwise - because after the write there is nothing left running to warn in.
Snapshotting the file before each write turned out to matter just as much. I bricked my own test harness twice while learning this, and the backup is what got it back.
Two things that might be worth considering upstream
Offered as questions rather than requests.
dsh --profile <name> --checkthat validates an overlay without booting be welcome? There is clear appetite for a doctor command - discussion 💡 Idea: Add 'dsh doctor' CLI command for environment & dependency diagnostics #1719 has 57 comments - and resolvability looks like the highest-value single check.Either way, the behavior seems worth a line in the config docs. "A row naming a package you have not installed will prevent startup" is the sentence I wish I had read first.
All reactions