Skip to content

Sharing and Cleaning JSON Sidecars

atom edited this page Sep 3, 2026 · 1 revision

Sharing and Cleaning JSON Sidecars

⚠️ FWG sidecars can contain runtime/environment and provenance information useful for support or later forensic inspection. Depending on the browser and workflow, that can include an exact page URL, local file:// path, User-Agent/browser information, source basenames, timestamps, and detailed support diagnostics.

Cleaning those optional records does not change the stored patch, Morph/render settings, custom Scanning definitions, Drawn waveform values, or reconstruction data.

Clean before authenticating

⚠️ If you intend to hash, sign or externally timestamp a sidecar, first create the final privacy-cleaned copy you intend to retain/share. Cleaning changes the JSON bytes and therefore correctly changes its SHA-256 digest. See Authenticating and Timestamping FWG Outputs.

Remove runtime/environment metadata

Current JSON normally uses .json.gz:

gzip -dc original.json.gz \
  | jq 'del(.runtime_environment)' \
  | gzip -n > cleaned.json.gz

Remove support diagnostics as well

gzip -dc original.json.gz \
  | jq 'del(.runtime_environment, .render_diagnostics)' \
  | gzip -n > cleaned.json.gz

Render Diagnostics (?render_diagnostics=a, a URL query parameter) deliberately allows oversized diagnostic JSON to be re-imported, so removing diagnostics is a privacy/size choice rather than a prerequisite for import while diagnostics mode is active.

Remove source basenames

Imported source filenames can reveal project/client names even when full paths are absent:

gzip -dc original.json.gz | jq '
  walk(
    if type == "object" then
      del(.initialised_from_file.filename, .source_filename)
    else . end
  )
' | gzip -n > cleaned.json.gz

Removing source names reduces lineage evidence but does not alter the literal Drawn waveform or patch/render settings.

Plain JSON

The same jq expressions work directly on an uncompressed .json file. Use a real JSON parser rather than sed/awk to delete nested objects.

Fractured Wavetable Generator

Start here

🎹 Workspaces

🎹 Build and shape sounds

🎹 Make and keep results

🎹 Scanning and custom trajectories

Help and reference

🔧 Advanced / technical reference

Clone this wiki locally