← Back to journal

Proving Offline Interaction Evidence Without Network Egress

A rehydrated workspace can support interaction evidence only when it runs sealed bytes, blocks external requests, repeats the flow cold, and binds every promoted artifact.

Evidence basisKodeCapture offline interaction promotion specification and authenticated rehydration history
DisclosureAdvanced early-access workflow; offline promotion applies only when strict capture-identity and executable-closure contracts hold.
Published by Kalu KodeRequest KodeCapture access →

Sometimes the canonical deployed application is no longer available when an engineer needs to establish an interaction flow.

A local replay may still contain the same sealed application bytes and recorded network evidence. Can interaction evidence measured there be promoted back into the canonical capture workspace?

Only under a much stronger contract than “the local copy looked the same.”

Begin with exact capture identity

The measured and canonical workspaces must authenticate the same donor and sanctioned network roots. A standalone metadata file is not enough; it cannot carry the executable bytes, storage seed, replay runtime, or integrity relationships needed to evaluate the flow.

Both workspaces should validate their integrity documents against the actual trees on disk before measurement or promotion begins.

Run cold and block egress

The interaction flow should run in fresh local launches with non-loopback requests terminated. Repeating it twice helps detect accidental dependence on warm process state, cached browser state, or one-off timing.

No-egress operation matters for two reasons:

  • it proves the measured state came from the sealed workspace rather than a live donor fallback;
  • it prevents the verification process from unexpectedly contacting external systems.

Every attempted external target should be visible in the proof.

The flow is operator-authored

Offline promotion should not infer a high-value journey from random clicks. The operator supplies the route, viewport, ordered selectors, and expected transitions.

The measured result can bind:

  • the exact flow bytes;
  • route, query, and fragment;
  • selector order;
  • transition fingerprints;
  • storage-seed bytes;
  • replay-runtime root;
  • two cold no-egress attempts;
  • executable request targets and body digests.

That creates a reproducible statement about one flow—not a general claim about all interactions.

Executable closure prevents substitution

The measured workspace’s executable request inventory should equal the canonical sealed JavaScript closure. Missing, extra, duplicate, or changed entries block promotion.

Without this check, a local workspace could run modified helper code or omit a route chunk while still producing a plausible state transition.

Promotion leaves capture history intact

Successful promotion can add normalized flow evidence, parity navigation, states, and a receipt. It should not rewrite the canonical donor, capture session, or network seal.

Loopback origins are normalized back to the canonical origin while preserving path, query, fragment, action order, selectors, and viewport. The receipt binds every preimage and postimage.

If publication is interrupted, a schema-validated journal can either finish an already authenticated postimage or restore the previous files. It should never follow arbitrary paths from a damaged journal.

Why older proof shapes may be rejected

An earlier workspace may contain a statement that a flow passed without the exact flow document or executable inventory now required.

Accepting that artifact through a compatibility reader would weaken the new claim. The correct response is to reacquire evidence under the stronger contract.

This is a recurring principle in evidence systems: a format can remain parseable while no longer being trustworthy enough for a new decision.

KodeCapture’s offline promotion work is intentionally narrow. It does not turn every local replay into capture authority. It establishes that one measured workspace executed the same sealed application closure, reached the same operator-declared transitions twice without external help, and published the result through a bound transaction.