{
  "schemaVersion": 1,
  "recordType": "completed-local-browser-experiment",
  "date": "2026-09-07",
  "sessionWindow": {
    "localStart": "2026-09-07T13:27:00+08:00",
    "localEnd": "2026-09-07T13:43:00+08:00",
    "timezone": "Asia/Shanghai",
    "precision": "Approximate session window supplied by the browser operator. Other tasks ran during the session; the window is not inference duration."
  },
  "environment": "Codex in-app browser on macOS arm64, viewing http://127.0.0.1:4173/linechange/ as a local static preview of the build.",
  "execution": "After the long-running progress UI was repaired, the operator separately selected each unmodified source through the visible upload control, waited for an actual line-art result, and used the tool download button. The two PNGs are original browser exports, with no crop, resize, recoloring or re-encoding.",
  "processingStatusFix": {
    "description": "The old random-percentage busy component could fall through without returning a number during a long task, crashing its rendering. The tested local build uses a stable busy-status component.",
    "scope": "The observed browser had the progress-only UI repair. Later copy/download-name changes were not included in the loaded test UI. Neither change alters the sketch model, worker, normalization, dimensional preprocessing or output conversion.",
    "deploymentBoundary": "These newly recorded runs establish behavior of the local preview. This record does not claim that the patched UI or these outputs were already tested on the public production origin.",
    "patchSource": {
      "repositoryPath": "scripts/image-runtime-patch.mjs",
      "sha256": "6d0d7967455a4fcd5155caf2d791a47413ac10d0532c8c44dfb3d8c524e3ca1a",
      "basis": "Patch source at record-writing time; not a complete identifier of the earlier progress-only script already loaded in the browser."
    }
  },
  "runtime": {
    "worker": {
      "path": "/assets/linechange.worker-0b3909b2.js",
      "bytes": 560,
      "sha256": "634f7de69eb9de45c7f3abeea976f80bf0abe4ddf4c22f3319150d03171ab56e",
      "basis": "Local dist build inspected after the UI progress fix."
    },
    "model": {
      "path": "/sketch-model.onnx",
      "bytes": 17193338,
      "sha256": "1fef40b8f7126d827e30fbebccf95ae9b0b391795df926bf9366a821bad4f498",
      "basis": "Local dist build inspected after the UI progress fix."
    },
    "backend": "ONNX Runtime Web WASM SIMD, worker requests 2 threads; effective threading is browser-dependent.",
    "settings": "Default automatic run. No line-density, threshold, style, mask or vector-output setting was changed or offered in this workflow.",
    "normalization": "RGB / 255, float32 NCHW tensor named input.",
    "dimensions": "Short edge 768. Long edge scaled by the original aspect ratio and rounded down to a multiple of 8. Source images smaller than that are enlarged.",
    "statusNotMeasurement": "A visible completed output and actual downloaded PNG are the completion evidence; there is no inference timing benchmark.",
    "releaseUiAtRecordTime": {
      "path": "/assets/index-7bb7710a.js",
      "bytes": 5497,
      "sha256": "819bf9d18b399574e1d8736b590a88b26db1057f17b942d1f720c3cae507b477",
      "basis": "Release UI file on disk at record-writing time, not a hash captured from the browser module used for these runs. The observed browser retained the earlier progress-only fix and old 1k copy/download naming."
    },
    "observedUiVersion": "Progress fix applied; later copy-only update not included in this recorded run. The loaded UI still showed the old 1k hint and used the legacy 放大 download prefix."
  },
  "sourceProvenance": "../../images/sources.json",
  "cases": [
    {
      "id": "coffee",
      "title": "Cup contours compete with wood grain and reflections",
      "inputFile": "../../images/coffee.png",
      "outputFile": "coffee-output.png",
      "sourceDimensions": [
        600,
        400
      ],
      "outputDimensions": [
        1152,
        768
      ],
      "reviewTarget": "Retain the cup opening, handle and saucer silhouette while making the still life useful as a structural drawing reference.",
      "photographer": "Rachel Michetti",
      "credit": "Coffee photograph courtesy of Pikolo Espresso Bar",
      "license": "CC0, as documented by scikit-image",
      "licenseUrl": "https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.coffee",
      "observation": "The cup opening, elliptical saucer and handle remain recognizable. The saucer has multiple adjacent rim contours. Diagonal wood grain becomes a dense field of lines, and spoon reflections become nested marks inside its outline. The result is a whole-scene raster contour interpretation with dark red and gray marks, not a subject-only black vector drawing.",
      "decision": "Accept as an inspectable first tracing reference after choosing which lines matter. Reject as a finished clean coloring page or a dimensionally accurate product drawing; background marks and reflection-derived fragments need editorial cleanup."
    },
    {
      "id": "chelsea",
      "title": "A recognizable cat can still lose its pupils",
      "inputFile": "../../images/chelsea.png",
      "outputFile": "chelsea-output.png",
      "sourceDimensions": [
        451,
        300
      ],
      "outputDimensions": [
        1152,
        768
      ],
      "reviewTarget": "Preserve the eye and nose landmarks that make the face readable without letting fur texture dominate them.",
      "photographer": "Stefan van der Walt",
      "credit": "Chelsea the cat",
      "license": "CC0, as documented by scikit-image",
      "licenseUrl": "https://scikit-image.org/docs/stable/api/skimage.data.html#skimage.data.chelsea",
      "observation": "The nose, eye surrounds and broad facial structure remain. Forehead stripes and fur produce a dense field of dark marks. The image-left pupil is reduced to a thin contour; the image-right pupil largely disappears into the white interior, changing the gaze. Several long whiskers toward image-left survive, but fine fur and whiskers are fragmented rather than uniformly preserved. The source itself crops the ears and body.",
      "decision": "Reject when the delivery requires faithful gaze or ready-to-use portrait line art. Restore pupils and select meaningful fur/whisker lines by reference to the original, or choose another workflow. Recognition of a cat is not enough to pass an identity-landmark check."
    }
  ],
  "review": {
    "method": "Source and output files visually inspected separately; Pillow and NumPy measure existing file dimensions, alpha and threshold counts without rewriting images.",
    "comparisonBoundary": "The source photographs and exports differ in resolution, so no direct pixel-error or sharpness-recovery claim is made.",
    "notMeasured": [
      "Inference speed or download speed",
      "Production-origin behavior of the patched UI",
      "Ground-truth contour geometry or vector path accuracy",
      "General line quality across photographs or devices",
      "Perceptual identity or pupil reconstruction accuracy as a numerical score"
    ]
  }
}
