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
gaps and decision must close. `decision.usable` must be true and no gap may
173
+
be blocking.
174
+
-**The canonical write is transactional.** Core builds and validates a sibling
175
+
staging directory, computes the Source Bundle fingerprint, and then swaps it
176
+
into place. Any failure leaves the old bundle unchanged.
177
+
-**draft and review-ready bundles accept append.**`--replace` rebuilds one
178
+
from the current input. A `confirmed` Source Bundle is immutable through this
179
+
command because changing it also requires downstream invalidation.
180
+
-**engine upgrades default to `never`.** Explicit `--upgrade auto` authorizes
181
+
extract to install, self-check, activate and reselect one local enhancement.
182
+
If installation fails but the fallback is usable, the bundle is committed
183
+
and core reports `partial`.
184
+
-**The Parse Bundle is private.** Its directory, manifest path and provider
185
+
command never appear in stdout, reports or canonical provenance. Sanitized
186
+
fidelity, coverage, gaps, recommendations and acquisition outcome remain
187
+
available for audit.
188
+
-**Local mode is explicit and cloud credentials are withheld unless
189
+
`--mode cloud` is passed.**`--fetch-remote-images off` is also passed so a
190
+
change in provider defaults cannot put local content on the network.
191
+
Withholding means both halves: credential variables are removed from the
192
+
child environment and `DECKFLOW_NO_STORED_CREDENTIALS=1` is set, because the
193
+
provider also reads `~/.deckflow/credentials`.
178
194
-**URLs are refused.** The provider can fetch them; core does not, because
179
195
"the content plane never reaches the network" is not worth stating with an
180
-
exception in it. The refusal names the direct provider command.
196
+
exception in it.
181
197
182
198
## How the provider is resolved
183
199
@@ -239,7 +255,7 @@ Two separate planes:
239
255
| Plane | Policy |
240
256
| --- | --- |
241
257
| Providers (fetching code) | network allowed, for the pinned package from declared indexes only, written only to the managed home, always reported |
242
-
| Content (sources, extracted text, assets) | never uploaded. The provider's cloud mode is used only when you explicitly ask for it; the presence of an API key is not authorization |
258
+
| Content (sources, extracted text, assets) |local mode never uploads; the provider's cloud mode uploads only when you explicitly ask for it, and the presence of an API key is not authorization |
243
259
244
260
## Output contract
245
261
@@ -248,7 +264,7 @@ deterministically so two isolated runs over the same inputs produce the same
0 commit comments