Some layers of the platform are allowed to lag behind feature work: the primary development pass ships the feature, and a separate catch-up pass tops these layers off later. This file is the checkpoint record for those passes.
Each section records:
- Checkpoint — the commit (SHA, date) through which the category is known to be caught up. "Caught up through X" describes what was audited, not where the fix landed. Cross-repo categories list one checkpoint per repo.
- Scope — what the pass owns.
- Gap detection — how to compute outstanding work since the checkpoint.
- Log — one line per completed pass, newest first.
Running a catch-up pass: compute the gap over <checkpoint>..HEAD, do the
work, verify it, then update the checkpoint and append a log line.
- Checkpoint: noisemaker
ed47815/ noisedeckc674516(2026-10-01) - Scope: two translation surfaces:
- Noisemaker effect catalogs
shaders/effects/strings.{de,es,fr,it,ja,pt}.json. The English catalogstrings.en.jsonis generated from effect definitions (npm run strings) and drift-tested bynpm run test:shaders:i18n. - Noisedeck UI catalogs under
app/js/i18n/locales/{de,es,fr,it,ja,pt}/. The matchingen/slices are the hand-authored source of truth. Missing locale keys fall back to English at runtime, so gaps on both surfaces are invisible without the checks below.
- Noisemaker effect catalogs
- Gap detection:
-
Noisemaker — every key present in
strings.en.jsonand absent from a locale file needs a translation. Fromshaders/effects/:node -e 'const fs=require("fs");const en=Object.keys(JSON.parse(fs.readFileSync("strings.en.json","utf8")));for(const l of["de","es","fr","it","ja","pt"]){const t=new Set(Object.keys(JSON.parse(fs.readFileSync("strings."+l+".json","utf8"))));const m=en.filter(k=>!t.has(k));if(m.length)console.log(l+":",m.join(", "))}'Keys stay in the same (sorted) order as the English catalog. Match each locale's existing conventions — parameter labels lowercase, effect names capitalized, description tone per locale — and reuse the file's existing translation for a term before inventing a new one. Run
npm run test:shaders:i18nto enforce exact key order and non-empty values across all six translated catalogs, in addition to generated-English drift and runtime fallback behavior. -
Noisedeck — from its repository root, run the catalog-parity test. Its diff names every missing or extra leaf key by locale:
node --test --test-timeout=60000 tests/i18n.node-test.jsAdd keys to the matching area slice in English order. The test enforces non-empty string values plus every placeholder, plural leaf, and markup tag from the English catalog.
-
- Log:
- 2026-10-01 — caught up through noisemaker
ed47815/ noisedeckc674516: audited noisemaker rangef24b525..ed47815(zero diffs inshaders/effects/; all 3,677 keys remain in exact parity across all seven catalogs) and noisedeck rangede9c3ba..c674516(five commits:28d5a3f"Match loop duration to loaded video clips" addedmedia.loopLimitandmedia.matchLoop, translated in all six locales in the same commit; the remaining four commits touched no catalog strings). The delivery trigger's end SHA9d5a61awas already an ancestor of the prior checkpointde9c3ba, so nothing new was assumed from the forced range. Verified via Noisemaker gap detection (0 missing keys across all 6 locales),npm run test:shaders:i18n(5/5), the Noisemaker JS test suite (all files pass, 0 failures), Noisedecktests/i18n.node-test.js(6/6),tests/export-dialog-i18n.node-test.js,tests/menu-shortcuts-accelerators.node-test.js, andtests/downstream-workflow.node-test.js(13/13 combined), andtests/gift-menu.spec.json Chromium (2/2; Firefox/WebKit do not launch in this sandbox — the same spec run fails 10/10 on an unrelated spec too, an environment limitation, not a catalog defect). No catalog edits were required. - 2026-09-30 — caught up through noisemaker
f24b525/ noisedeckde9c3ba: audited noisemaker range6827390..f24b525(zero diffs inshaders/effects/; all 3,677 keys remain in exact parity across all seven catalogs) and noisedeck range69eadc5..de9c3ba(six commits:f48a5c5"Group app menu actions into nested submenus" added six UI string keys —menus.app.help,menus.app.account,menus.file.export,menus.file.customEffects,menus.program.editIn,menus.program.importExport— translated in all six locales in the same commit;9d5a61a"Keep canvas-related dialogs within the controls region" addedexport.common.upgrade, also translated in all six locales in the same commit; the remaining four commits touched no catalog strings). Verified via Noisemaker gap detection (0 missing keys across all 6 locales),npm run test:shaders:i18n(5/5), the Noisemaker JS test suite (200/200 passed across 9 files), Noisedecktests/i18n.node-test.js,tests/export-dialog-i18n.node-test.js,tests/menu-shortcuts-accelerators.node-test.js, andtests/downstream-workflow.node-test.js(19/19 combined). No catalog edits were required. - 2026-09-29 — caught up through noisemaker
6827390/ noisedeck69eadc5: audited noisemaker range5b81e04f..6827390(zero diffs inshaders/effects/; all 3,677 keys remain in exact parity across all seven catalogs) and noisedeck9eabfb2..69eadc5(the delivered trigger0a2a7012..69eadc5was force-pushed and0a2a7012is unreachable; the observed delivered range is the single commit69eadc5). Its only UI string addition,menus.giftNoisedeck, was already translated across all six UI locales in the same commit. Verified via Noisemaker gap detection (0 missing keys across all 6 locales),npm run test:shaders:i18n(5/5), Noisedecktests/i18n.node-test.js(6/6), andtests/standalone-account-menu.node-test.js(12/12). No catalog edits were required. - 2026-09-23 — caught up through noisemaker
5b81e04f/ noisedecka5d448b2: audited noisemaker rangedd38fdd2..5b81e04fand noisedeck697d2df9..a5d448b2(covering work queue item #425 trigger0a2a7012..df632d0a). In noisemaker, zero effect definitions or parameters were added or removed, leaving all 3,677 keys in exact parity across all seven catalogs (enandde,es,fr,it,ja,pt). In noisedeck,sync.previewPausedwas added to English (34295fbf) and translated across all six UI locales (55fa1a24), merged indf632d0a; all UI string leaf keys remain in exact parity. Verified via Noisemaker gap detection (0 missing keys across all 6 locales),npm run test:shaders:i18n(5/5), Noisemaker JS test suite (63/63 passed), Noisedecktests/i18n.node-test.js(6/6),tests/export-dialog-i18n.node-test.js(2/2),tests/menu-shortcuts-accelerators.node-test.js(7/7), andtests/downstream-workflow.node-test.js(1/1). No catalog edits were required. - 2026-09-22 — caught up through noisemaker
dd38fdd2/ noisedeck697d2df9: audited noisemaker range7ea31be3..dd38fdd2(covering work queue item #392 trigger2f855c9c..36a519a2through HEAD) and noisedeck4e412eb5..697d2df9. In noisemaker, commit36a519a2addedrender/renderLandscape3d.filtering,render/renderLandscape3d.filtering.isosurface, andrender/renderLandscape3d.filtering.voxelacross all seven effect catalogs (enandde,es,fr,it,ja,pt), bringing the active catalog to 3,677 keys in exact parity. Noisedeck had zero UI string additions or deletions across the range. Verified via Noisemaker gap detection (0 missing keys across all 6 locales),npm run test:shaders:i18n(5/5), Noisemaker JS test suite (65/65 passed), Noisedecktests/i18n.node-test.js(6/6),tests/export-dialog-i18n.node-test.js(2/2),tests/downstream-workflow.node-test.js(1/1), andtests/menu-shortcuts-accelerators.node-test.js(7/7). No catalog edits were required. - 2026-09-21 — caught up through noisemaker
7ea31be3/ noisedeck4e412eb5: audited noisemaker range1086890d..7ea31be3(covering work queue item #312 triggerc68fb3c8..2f855c9c) and noisedecke1146981..4e412eb5. In noisemaker, commit2f855c9cretiredfilter/bc,filter/colorspace, andfilter/hs, removing their 15 effect string definitions across all seven catalogs (enandde,es,fr,it,ja,pt), bringing the active catalog to 3,674 keys in exact parity. Noisedeck had zero UI string additions or deletions across the range. Verified via Noisemaker gap detection,npm run test:shaders:i18n(5/5), Noisedeck'stests/i18n.node-test.js(6/6),export-dialog-i18n(2/2),downstream-workflow(1/1), and the Noisemaker JS test suite (57/57 passed). No catalog edits were required. - 2026-09-20 — caught up through noisemaker
1086890d/ noisedecke1146981: audited noisedeck range73538a8f..e1146981(covering work queue item #293 triggeradef85dd..0a2a7012) and noisemakerda1b6985..1086890d. UI string additions in noisedeck (startup.statuses.enabled,startup.statuses.midiNoDevices,startup.statuses.midiPortFailedin0a2a7012) were already translated across all six UI locales (de,es,fr,it,ja,pt); all 3,689 Noisemaker effect strings remain in exact key parity with zero missing keys across all six translated catalogs. Verified via Noisemaker gap detection,npm run test:shaders:i18n(5/5), Noisedeck'stests/i18n.node-test.js(6/6),export-dialog-i18n(2/2),startup-backend(13/13), and the Noisemaker JS test suite (58/58 passed). No catalog edits were required. - 2026-09-17 — caught up through noisemaker
da1b6985/ noisedeck73538a8f: audited noisedeck range47b145e0..73538a8f(covering work queue item #194 triggeradef85dd) and noisemakerc68fb3c8..da1b6985. The only UI string addition in the range (menus.app.downloadAppinadef85dd) was already translated in all six UI locales (de,es,fr,it,ja,pt); all 3,689 Noisemaker effect strings remain in exact key parity with zero missing keys across all six translated catalogs. Verified via Noisemaker gap detection,npm run test:shaders:i18n(5/5), Noisedeck'stests/i18n.node-test.js(6/6),export-dialog-i18n,standalone-account-menu, and the Noisemaker JS test suite (58/58 passed). No catalog edits were required. - 2026-09-16 — caught up through noisemaker
c68fb3c8/ noisedeck47b145e0, closing the gap left by incomplete work queue item #156 (below) as well as this task's own nominal range (noisemakerff1bfbc1..c68fb3c8, noisedeck458f7758..47b145e0) — audited from the stale checkpoint forward rather than trusting #156's own narrative, per this file's "audit the target's actual state" rule. Both gap-detection commands came back clean: the noisemaker key-diff found zero missing keys in any of the six locales, and noisedeck'stests/i18n.node-test.jspassed 6/6 with no catalog-parity failures. Spot-checked that the round's three new effects (synth3d/heightmap3d,render/renderLandscape3d,points/heightGrid) already carry real, non-empty translations across all six noisemaker locales (e.g.synth3d/heightmap3d→ "Höhenkarte 3D" / "Mapa de alturas 3D" / "Carte de hauteur 3D" / "Mappa di altezza 3D" / "3D高さマップ" / "Mapa de altura 3D"), not just present-but-empty stand-ins.npm run test:shaders:i18npassed 5/5. No translation work was needed on either surface — #156's own catalog work (3,689 English keys, all six locales complete) was already correct and complete; only this checkpoint had never been advanced to reflect it. #156's Log entry below is left untouched; its remaining non-i18n items (browser/runtime fixes) are outside this section's scope. - 2026-09-12 — work queue item #156 remains incomplete. Audited Noisemaker
7d6cc7127457..ff1bfbc1740cand Noisedeck94f4d0021133..458f77583394. Removed four obsolete landscape-control keys from all seven effect catalogs. All six translations contain all 3,689 English keys. Noisedeck requires no catalog changes. Corrected Noisedeck's audio fixtures, cache teardown handling, browser-specific clipboard permissions, and Remap test interactions. Bounds checks use the accepted pointer coordinates and still require exact uniform values. Its latest Node suite reported 873 passes, one existing conditional skip, and no failures. All 40 Chromium audio tests passed. Affected browser checks reported 120 passes and three existing skips across Chromium, Firefox, and Linux WebKit with a virtual display. The WebKit viewport test exceeded its 45-second budget with two CPUs, then passed in 42.4 seconds with four CPUs and unchanged assertions. The full browser suite then exposed a Noisemaker state-expression serialization defect. The compiler and unparser fix passed the language, runtime, i18n, prescribed JavaScript, and parity-evidence checks. Browser replay of seed110457923passed all 500 mutations against the fixed source, with no skipped mutations. The published engine still needs this fix before the full browser suite can complete. Both I18n checkpoints remain unchanged. The operator authorized autonomous publication. The compiler fix is pushed asc68fb3c8. Shader CI exposed the same Linux landscape pixel failure asff1bfbc1. A same-size WebGPU presentation copy was interpolating adjacent texels. A focused GPU regression failed before selecting the nearest sampler for same-size copies, then passed on Mac and Linux. Scaled copies still use linear filtering. The Linux landscape camera test now passes exact cross-backend parity. Setting the existing test resolution before the first run also resolved the controls audit timeout; all 100 Linux audit cases passed. Mac camera parity, runtime, JavaScript, and all registered parity evidence checks passed. The follow-up fix is pushed as9a31314c. Its CI camera checks passed, but the controls audit timed out on WebGPU. A second CI run with diagnostics (b02b42ec) instead timed out during initial editor loading. The audit now starts with a simple program, selects the required 256x256 resolution, and uses a separate 60-second compilation wait. Its five-second UI action limit and exact pixel checks remain unchanged. This test fix is pushed as5fea6395; all 100 local Linux audit cases passed. Its CI run was canceled after repeated control timeouts; it did not pass. Further harness inspection found that loading the reference page started an unrelated asynchronous homepage renderer. The reference now uses an empty same-origin fixture. The editor selects its test resolution before its first frame and stops before each program change. A full audit of these changes is in progress. That audit passed 69 cases, then rapid WebGPU mode changes settled on the older selection. A completed compile callback was restoring its old DSL state while a later compile was queued. The UI now lets only the latest request restore controls and report completion. A deterministic regression failed before the fix and passed afterward. All 100 browser audit cases then passed with unchanged source hashes. Language, runtime, i18n, and lint checks passed. The fix is pushed asbb158566. Its CI passed the earlier gates, then timed out waiting for screenshot stability within five seconds. The capture now brings the editor forward and has a separate 30-second deadline; its pixel checks and control-action limits are unchanged. All four focused presentation cases passed. This harness fix is pushed as6f60c815. Its CI reached the same screenshot stability timeout at 30 seconds. The audit now captures the visible canvas rectangle and explicitly verifies unchanged geometry across capture. All four presentation cases passed. This change is pushed asf37bd787; exact-commit CI and shader release verification remain pending. A Noisedeck browser preflight passed 211 cases before exposing obsolete startup-carousel assertions. Startup now shows static resource slides; its tests now verify paging and no preview canvases. The gallery retains its live-context checks. All 15 focused cases passed across Chromium, Firefox, and Linux WebKit. Full released-engine validation is pending. A later preflight exposed a cached HTTP 429 for a Godot kit file that currently returns HTTP 200. The shared test cache now stores only successful responses and lets waiting requests recover after an uncacheable error. All five cache regressions passed, including stale-error recovery and lock contention. The real Godot archive-cancellation test then passed. - 2026-09-18 — verified the state left by the entry above. All seven
noisemaker fixes (
c68fb3c8throughf37bd787) are merged to main; CI has passed on every push since, most recently688c5146. The noisedeck fixes (origin-cache eviction of uncacheable responses, disposed-response handling after page close, browser-specific clipboard grants, pointer-rounding tolerance in the remap bounds checks, and the resource-carousel test rewrite) are committed onpreviewatc48fe396: full node suite 1046/1047 (one pre-existing skip), Chromium 73/73 (one pre-existing skip), Firefox clipboard fix passing. WebKit did not run locally — this machine's Playwright WebKit build is frozen and rejects a protocol setting Playwright now sends, unrelated to the change — so it still needs its usual Linux CI pass once pushed. This closes out the remaining non-i18n items from the 2026-09-12 entry; nothing from that entry is still open. - 2026-09-07 — caught up through noisemaker
d30d1045/ noisedeck94f4d002: audited all 20 live-capture settings, status, permission, recording-limit, and export-warning strings; all six UI translations were already complete. All six effect catalogs retain all 3,639 English keys. Generated-English drift, key order, placeholders, markup, fallback, and locale checks passed, along with Noisedeck's full 806-test Node suite and both affected toolbar/settings browser tests. No catalog edits were required. - 2026-09-07 — caught up through noisemaker
d30d1045/ noisedeck00cb87d2: all six effect catalogs contain all 3,639 English keys. Audited the new Remap editor and MIDI CC, NRPN, MPE, and audio-channel copy plus the removed Sync retry string; all six UI locales were already complete. Generated-English drift, exact key order, non-empty values, placeholders, markup, fallback, and async locale checks passed, as did Noisedeck's full 806-test Node suite. No catalog edits were required. - 2026-09-03 — caught up through noisemaker
691eea16/ noisedeck0f3917fb: verified that the updated Cell description is present in all six translated effect catalogs and that Noisedeck's insert-zone, MIDI-device, and audio-device strings are translated in all six UI locales. Revalidated exact key order, non-empty values, placeholders, markup, generated-English drift, runtime fallback, and async locale selection; no catalog edits were required in this pass. - 2026-08-31 — caught up through noisemaker
c38316a1/ noisedeck114d64f7: Noisemaker's generated English catalog and all six translated effect catalogs remained complete. Noisedeck's translations for unloaded user effects, storage save failures, and paid-feature load failures were present in all six locales; revalidated exact key parity, non-empty values, placeholders, markup, and async locale selection. No catalog edits were required in this pass. - 2026-08-29 — caught up through noisemaker
19c15cc0/ noisedeckeb3c3de6: Noisemaker's generated English catalog and all six translated effect catalogs were already complete; added 312 Noisedeck translations (52 new UI leaves in each of six locales) for shader-pipeline export, collaboration, completion, save-failure, and unloaded-user-effect copy. Added durable Noisemaker key-order/non-empty-value checks and Noisedeck key-order, non-empty-value, placeholder, and markup integrity checks. - 2026-08-19 — caught up through
1ee891a2: audited the i18n catch-up range; the English catalog was unchanged and all six locale catalogs remain complete, so no additional translations were needed in this pass. - 2026-08-14 — caught up through
712ac2cf: audited the i18n catch-up range; the English catalog was unchanged and all six locale catalogs are now complete, so no additional translations were needed in this pass. - 2026-08-14 — catch-up, 1,566 strings: 261 missing keys across all six
locales, covering the new and expanded
filter/chromethroughfilter/windeffect blocks. - 2026-07-10 — initial top-off, 37 strings:
filter/parallaxblock (5 keys, de/fr/it/ja/pt),filter/dither.type.errorDiffusionandfilter/lighting.heightMap(all six locales).
- 2026-10-01 — caught up through noisemaker
- Checkpoint: noisemaker
e1fbfd0d/ noisedeckec401c94(preview branch), 2026-10-08 - Scope: every effect must be classified for Noisedeck's large-format
(tiled print) export. Tile-aware effects consume the global
tileOffsetandfullResolutionuniforms in both GLSL and WGSL when their coordinates depend on the full canvas (packed WGSL layouts may need explicituniformLayoutslots); purely local kernels are also safe when their maximum source footprint fits inside the 1024 px overlap. Effects that cannot render tiled belong in one of noisedeck's deny-lists:app/js/utils/hasStatefulEffects.js(state textures cannot re-render at print resolution) orapp/js/utils/hasUpscaleOnlyEffects.js(would seam at the 1024 px tile overlap). An effect in none of the three states silently produces seamed prints. - Gap detection: list effects added since the checkpoint
(
git log --diff-filter=A --name-only <checkpoint>..HEAD -- 'shaders/effects/*/*/definition.js') and classify each: make it tile-aware, or route it into the appropriate deny-list. Verify tile-aware claims with noisedeck's seam harness (tests/large-format-seams/). - Log:
-
2026-10-08 — caught up through noisemaker
e1fbfd0d/ noisedeckec401c94: gap detection from058d15dcfound zero added effects. The range (the WebGPU-matches-WebGL2 campaign through 1.0.271) changed 34 definitions and the shaders of 98 effects; 58 of the 111 are in the harness scope and 53 are in a deny-list. Noisedeck's seam harness, run against bundles built ate1fbfd0d, gave 56/58 seam-pass on GLSL and the same on WGSL.render/meshRenderpasses only trivially (its default program has no mesh).filter/spookyTickerwas in neither deny-list and is not tile-aware: its ticker rows are measured from the input texture's edge in tile-local coordinates, so the harness reports it cannot-test and every tile would draw its own band. Noisedeckec401c94routes it tohasUpscaleOnlyEffects.jsand the harness'sUPSCALE_ONLY_FUNCS; its deny-list test pins it (113/113 classifier and harness tests, 1385 Node tests). -
2026-10-03 — caught up through noisemaker
058d15dc/ noisedeck7cac7e92: gap detection from1d581ffafound zero added effects. Changed definitions werefilter/degauss,render/pointsEmit, andsynth3d/cellularAutomata3d. Degauss now bindstileOffsetandfullResolutionin its packed WGSL layout; both shader backends use global coordinates and clamp the tiled displacement against a 256-pixel budget. The Noisedeck seam harness passedfilter/degausson both GLSL and WGSL against the published Noisemaker 1.0.221 bundle. The two simulation definitions changed onlyresetOnChangeUI metadata; both remain inhasStatefulEffects.js. The subsequentfilter/octaveWarphash rewrite did not change its spatial sampling, and it remains inhasUpscaleOnlyEffects.js. No Noisedeck classifier edit was needed. Verified 84/84 Noisedeck classifier and seam enumerator tests and the Noisemaker JS suite. The checkout's older ignoreddist/gave a false WGSL seam result because it lacked degauss's new uniform layout; live 1.0.221 bundles passed, anddist/was restored after the check. -
2026-09-22 — caught up through noisemaker
1d581ffa/ noisedeck697d2df9: gap detection (git log --diff-filter=A) identified zero new effects in rangeeef25e91..1d581ffa(covering work queue item #393 trigger2f855c9c..36a519a2through HEAD). Audited the one effect with changed definition in the range:render/renderLandscape3d(36a519a2), which added a pruned isosurface filtering mode. Both perspective and isometric isosurface raymarch paths derive global UV coordinates fromtileOffsetandfullResolutionacross GLSL and WGSL, preserving its tile-aware classification. No additions tohasStatefulEffects.jsorhasUpscaleOnlyEffects.jsrequired. Verified Noisemaker landscape tests (npm run test:shaders:landscape, 13/13 passing with dual WebGL2/WebGPU parity attestations forsynth3d/heightmap3dandrender/renderLandscape3d), Noisemaker JS test suite (65/65 passed), and Noisedeck classifier and seam harness tests (83/83 passed acrosshas-stateful-effects.node-test.js,has-upscale-only-effects.node-test.js, andtests/large-format-seams/enumerator.node-test.js). -
2026-09-21 — caught up through noisemaker
eef25e91/ noisedeck4e412eb5: gap detection (git log --diff-filter=A) identified zero new effects in rangeead42a5d..eef25e91(covering work queue item #313 triggerf2506d21..2f855c9c). Audited the effects changed in the range: commit2f855c9cretiredfilter/bc,filter/colorspace, andfilter/hs, none of which were in noisedeck's deny-lists (hasStatefulEffects.jsorhasUpscaleOnlyEffects.js). In noisedeck, zero classifier changes occurred acrossd6fd477a..4e412eb5. Verified 83/83 classifier and seam harness tests in noisedeck (has-stateful-effects.node-test.js,has-upscale-only-effects.node-test.js,enumerator.node-test.js). No additions tohasStatefulEffects.jsorhasUpscaleOnlyEffects.jsrequired. -
2026-09-18 — caught up through noisemaker
ead42a5d/ noisedeckd6fd477a: gap detection (git log --diff-filter=A) identified zero new effects in rangeff1bfbc1..ead42a5d. Audited the two effects with changed definitions in the range:synth3d/heightmap3dandrender/renderLandscape3d(f2506d21). Their definitions changed onlydefaultProgramto use discretewrite/readpipelines instead of inline surface parameter calls; neither shader implementation (.glsl / .wgsl) or spatial coordinate handling was modified. Both effects remain tile-safe under their established classifications (heightmap3dvolume bake pass upstream of canvas tiles;renderLandscape3dglobal-UV projection fromtileOffset/fullResolution). No additions tohasStatefulEffects.jsorhasUpscaleOnlyEffects.jsrequired. Verified 83/83 classifier and seam harness tests in noisedeck (has-stateful-effects.node-test.js,has-upscale-only-effects.node-test.js,enumerator.node-test.js). -
2026-09-15 — caught up through noisemaker
ff1bfbc1: classified the perspective/depth-sort/defocus round's 3 new and 7 changed effects.points/heightGrid(new: writes agent state via MRT like the otherpoints/*behaviors already listed) needed a newhasStatefulEffects.jsentry, mirrored in the seam harness'senumerator.js. The other 9 needed no routing change:synth3d/ heightmap3d(new) is a volume-atlas bake pass upstream of the canvas tile boundary, the same structural class already documented forpalette3d;render/renderLandscape3d(new, plus this round's own definition change for its perspective camera) correctly derives one tile-awareuvfromfullResolution/tileOffsetshared by both its isometric and new perspective branches, verified in both GLSL and WGSL;render/pointsRenderandrender/pointsBillboardRenderwere already deny-listed and this round's new perspective/depth-sort/ defocus passes don't change that;synth/remap's full zone-compositor rewrite preserved the tile-local-source-sampling / global-polygon- coordinate invariant fixed in the 2026-09-07 pass below;filter/ chrome,filter/grade, andmixer/alphaMask's premultiplied-alpha/ gradient fixes didn't touch spatial handling and remain tile-safe. Verified 23/23 classifier + harness-mirror tests (has-stateful-effects.node-test.js,enumerator.node-test.js). Ran noisedeck's live GLSL seam harness (headless Chromium) formixer/alphaMask(pass) andsynth/remap(trivial/uniform default DSL); could not run it for the two new 3D-landscape effects — this checkout has no syncedapp/js/noisemaker/vendor/, and the harness's live-CDN fallback doesn't resolve newly-published effect bundles for its effect loader. Their classification rests on direct source verification, the same determinant method this file's own scope note andhasUpscaleOnlyEffects.js's header prescribe for structural-safety claims, not live seam-harness pixels — flagged for a real render once a synced vendor/ checkout is available. Also found, untouched (out of scope): noisedeck'spreviewbranch carries a second, older stash (fix(fullscreen): restore canvas dimensions on exit for any entry path) and a large set of uncommitted working-tree changes matching the dangling work queue item #156 I18n narrative — both predate this pass and were left exactly as found. -
2026-09-07 — caught up through noisemaker
827b2e91: no new effects; rechecked the changed Remap definition and Text shader. Remap's active zones exposed a GLSL seam: source surfaces are tile-local, but sampling used global UV. Corrected the source lookup to use the packed resolution slot; polygon coordinates remain global and WGSL already uses local source sampling. Remap now has a zero-pixel source displacement and needs no deny-list entry. Both backends match full-frame captures exactly at 2048x2048 and 2048x3000 using Noisedeck's seam harness; four untiled before/after captures remain byte-identical. Added a nontrivial active-zone regression, renewed source-bound strict Remap parity evidence, and passed 33 tile checks, 126 harness/classifier tests, Shade compilation/structure, and the full non-parity JS suite. Text's external-overlay tile regression also passes. No Noisedeck routing changes were required. -
2026-09-04 — caught up through noisemaker
ee523ab9/ noisedeck539ee089: audited 25 added artistic filters and seven changed effect definitions. Classified 23 additions as tile-safe, routedspinBlurandpondRipplesto the upscale-only path, and keptextrudetiled with a pinned 768 px maximum source-dependency bound. RepairedtextWGSL to sample its external overlay in global output space and added a behavioral WebGPU full-frame/offset-tile regression. Stopped Noisedeck's animation loop during controlled captures to eliminate a WebGPU harness race and consolidated the diagnostic deny-list onto the production-synced mirror. Revalidated 124 harness/classifier tests, 31 cross-backend tile checks, all 203 shader structures, and the full shader-language suite; no stateful routing changes were required. -
2026-07-10 — post-ship catch-up: parallax tile-clamped + synth WGSL ports (noisemaker
45a34489); effects added since ship routed into deny-lists, seam-harness hardening (noisedecka12ee01e..75262325). -
2026-05-16 — feature shipped (noisemaker
f1b0a919, noisedeck913b722b).
-
- Checkpoint: noisemaker
badf1f9e(2026-10-08) - Scope: the Sphinx docs under
docs/(published to docs.noisemaker.app by.github/workflows/docs-site.yml) and the per-effectshaders/effects/*/*/help.mdfiles rendered by the live Effect Reference.help.mdis normally written in-band with the effect; this pass catches stragglers and decides which shipped features merit a narrative guide. - Gap detection:
- Effects missing
help.md: compareshaders/effects/*/*/definition.jsagainst the correspondinghelp.mdpaths. - Features shipped since the checkpoint that merit a guide under
docs/shaders/features.rst(pattern:docs/shaders/cubemaps.rst). - Narrative statements invalidated by recent commits (grep the affected
terms in
docs/).
- Effects missing
- Log:
-
2026-10-08 — caught up through
badf1f9e: auditeda1329096..badf1f9e(212 commits, including the WebGPU-matches-WebGL2 campaign through 1.0.271). All 210 definitions havehelp.md, and all 1,258 documented parameters across 200 effects match their definitions (node shaders/tests/test_effect_help_params.mjs). No shipped feature needs a narrative guide: the engine changes are parity fixes, WebGPU device limits and canvas uploads, and host APIs. Two host-facing gaps were closed:docs/shaders/integration.rstnow listsrenderer.pipeline.whenAsyncInitsSettled()(cabe6ee3) for one-off captures of async CPU effects, anddocs/shaders/pipeline.rstnow says that WebGPU also recordsERR_MISSING_RENDER_TARGETfor MRT, storage-surface and copy-output targets (5578cf7c). Canvas sizing fromwidth/height(b805b365),getMediaSteps()(632820a8) andoscKind.noise2d(4e046a2d) were documented in-band; the 128³ volume ceiling now holds on WebGPU too (6a772479), so no statement changed.sphinx-build -b dirhtml docspasses; its 19 warnings are the existing unregistereddsllexer. -
2026-10-04 — caught up through
a1329096: audited63cfbb7..a1329096, including work queue item 804's observed378c8bf8..058d15dcdelivery. Both range endpoints are ancestors of the audited mainline tip. The shipped changes are portable-effect registration, live parameter aliases and reseed hints, degauss tile coordinates, and octaveWarp hash conversion; the latter two are filter fixes, not new authoring features. The portable registration path and live-parameter behavior were documented in-band indocs/shaders/integration.rst,effects.rst, andpipeline.rst. Effect coverage is unchanged: all 210 definitions havehelp.md, and all 1,258 documented parameters across 200 effects match their definitions (test_effect_help_params.mjs). The degauss and octaveWarp help files remain consistent with their definitions; no new feature guide or Sphinx narrative correction is needed. A fresh Sphinxdirhtmlbuild succeeded with 18 existing warnings; docs static-path tests passed 4/4, ESLint passed, and the non-parity JS suite passed. -
2026-10-01 — caught up through
63cfbb7: audited the job's trigger rangedd4606e..63cfbb7(work queue item 704, delivered asa02f73e..63cfbb7; the trigger's startdd4606esits in the non-contiguous history but is an ancestor of published main). The range is already fully documented: the GAP-007 final leg (e24c844,a0e9bbf), the in-band pipeline.rst alignment (e105344), and the test-only GAP-010 commits (16c1997,ed47815) were audited by the prior pass whose own checkpoint advance is this range's end commit63cfbb7, anda02f73etouches only LEDGER i18n checkpoints. Gap detection re-run: all 210shaders/effects/*/*/definition.jshave theirhelp.md(zero missing). No new end-user feature in the range, so nodocs/shaders/features.rstguide; no narrative statements invalidated bya02f73e/63cfbb7(LEDGER-only + the prior pass's own docs edits). Verified the Sphinx docs build locally (sphinx-build -b dirhtml docs docs/_build/dirhtml: build succeeded, 18 pre-existing warnings, 0 errors), docs static asset paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint, clean), and the non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 0 failures). Measured results above are archived in the job's run evidence (Automated jobd441d8a4, evidencenoisemaker-ledger-docs-704.txt: clean full Sphinx build after removingdocs/_build/dirhtml— the "1 warning" incremental re-run in that file predates the clean rebuild and does not reflect a from-scratch build). -
2026-10-01 — caught up through
ed47815: audited range01e9d62..dd4606e(work queue item 698; the trigger's start01e9d62had been force-pushed out of upstream main, so the objects were fetched directly by SHA and the observed delivery rangesc2a19c70..dd4606e,a0e9bbffc..e24c844f,e24c844f..e105344were diffed locally; all of them plus the later test-only commits16c1997/ed47815are ancestors of published main ata02f73e, 44 commits in the audited range). Gap detection: all effect definitions still have theirhelp.md(zero missing acrossshaders/effects/*/*/definition.js), so no help.md writes were needed. No new end-user feature shipped in the range that merits adocs/shaders/features.rstguide: the range's substantive changes are GAP-007..GAP-032 fixes (diagnostics union legs, audio capture, harness and metric tooling) plus GAP-026, which makes the already-documented lifecycle-hook authoring feature actually run in the production renderer — its documentation home staysdocs/shaders/effects.rst(Lifecycle Method Contract) anddocs/shaders/pipeline.rst, not a new features page. Invalidated-statement audit edits:docs/shaders/pipeline.rst§14.2 no longer claims the pipeline has no effect-lifecycle mechanism — it now documents the managed-effect setinitLifecycleEffects()rebuilds (onInit once per pipeline lifetime, per-frame onUpdate with fallback-bound returned uniforms, dispose-time onDestroy joining the dispose error path), matching GAP-026'sinitLifecycleEffects()/_invokeUpdateHooks()/_withRuntimeUniforms()/dispose()inshaders/src/runtime/pipeline.js;docs/shaders/effects.rst's lifecycle contract now states the production invocation and the fallback uniform-binding semantics (a returned key binds only when the pass does not already resolve it, verified against_withRuntimeUniforms()), and the dimension grammar now lists the validator-accepted'input'/'resolution'keywords that resolve to screen size without a fallback diagnostic (a0e9bbff), in both thedimensionSpecJSON schema description and theresolveDimensionpseudocode. GAP-007's runtime-leg statements were already aligned in-band by e105344 (pipeline.rst + llms-full.txt); the audio capture, replaceEffect, preflight, and harness-metric changes invalidated no narrative statements (the MCP tool descriptions indocs/coding-agents.rstare unchanged by the range, and replaceEffect/ preflight remain engine-internal APIs with no Sphinx page to correct). Verified the Sphinx docs build locally (sphinx-build -b dirhtml docs docs/_build/dirhtml: build succeeded, 18 pre-existing warnings, 0 errors), docs static asset paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint, clean), and the non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 0 failures). The livenoisemaker-siteandnoisemaker-docs-sitedeployments serveed47815perdeployment-meta.json, so the pipeline.rst/effects.rst corrections in this commit reach the published docs with the next docs-site build. -
2026-09-26 — caught up through
01e9d62: audited range6a0af04d..01e9d62(work queue item 586). The range contains exactly one commit,01e9d62, which is the prior Documentation pass's own Sphinx edits (GAP-006 texture-pooling opt-in and GAP-007 structuredShaderDiagnosticunion indocs/shaders/pipeline.rstanddocs/shaders/compiler.rst) — no engine changes. Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions and all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). No new features shipped in the range, so nodocs/shaders/features.rstguide required. Invalidated-statement audit: spot-checked the documented symbols (ShaderDiagnostic/ERR_SHADER_MISSINGinshaders/src/runtime/backends/diagnostics.jsand the backends,buildTexturePoolingPlan/getResourcePlan/releaseRegroupedTextures/applyTextureAliasesinshaders/src/runtime/pipeline.js) and grepped the affected terms indocs/— every remaining "virtual ID"/"allocation map" statement is qualified by thetexturePooling: trueopt-in and matches the source; nothing invalidated. Verified the Sphinx docs build locally (sphinx-build -b dirhtml docs docs/_build/dirhtml: build succeeded, 18 pre-existing warnings, 0 errors), docs static asset paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and the non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 201 tests, 0 failures). Published-source CI and deployment evidence observed via the GitHub API:docs-site.ymlsucceeded at01e9d62(Verify docs asset paths and Dispatch static-site-release jobs both success; run 36213112409),downstream.ymlsucceeded at01e9d62(run 36213112296), and the live docs.noisemaker.app deployment servesgit_hash: 01e9d620d7ccc700cc8926a91145702dc69a8eebperdeployment-meta.json— the deployed Sphinx HTML includes this range'spipeline.rst/compiler.rstedits. The follow-up checkpoint-advance commit3968f6ctouches onlyLEDGER.md, which is outside thedocs-site.ymlpush-trigger paths (docs/**with*.mdexcluded), so no workflow run applies to it and the deployment at01e9d62already serves all this pass's.rstcontent. -
2026-09-26 — caught up through
6a0af04d: audited range6c3f9a26..6a0af04d(work queue item 571, covering trigger8eeb7b5a..6a0af04ddelivered as6c3f9a26..428ea29..9574362..6a0af04d, audited linearly in the local checkout). Gap detection confirmed zero missinghelp.mdfiles across all effect definitions. Shipped features documented in the Sphinx docs: GAP-006 texture-pooling consumption (thetexturePooling: trueopt-in,Pipeline.buildTexturePoolingPlan()grouping/aliasing, the identical-plain-2D-spec / producing-write / partial-and-non-clearing-write guard including the viewport-without-clear case from9574362, andPipeline.getResourcePlan()) indocs/shaders/pipeline.rstSections 2 and 7; GAP-007 structured diagnostics (oneShaderDiagnosticunion withbackend/stage/parsedmessages, the addedERR_SHADER_MISSINGcode row, and the enumerated still-unstructured paths) indocs/shaders/pipeline.rstSection 11 anddocs/shaders/compiler.rstFailures and Diagnostics (with a newpipeline-error-codesanchor). No new standalone guide required underdocs/shaders/features.rst— both features are pipeline/runtime internals, matching the prior pass's precedent. Invalidated statements: correcteddocs/shaders/pipeline.rstclaims that the Pipeline creates textures by virtual ID and never uses the allocation map as a pool. Verified the Sphinx docs build locally (sphinx-build -b dirhtml docs docs/_build/dirhtml: build succeeded; only the pre-existingpipeline-3d.rstdsllexer warning, unchanged), docs static asset paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and the non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-25 — caught up through
6c3f9a26: audited range69d83b80..6c3f9a26(work queue item 557, covering69d83b80..8eeb7b5aand publication evidence at6c3f9a26). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions and all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Shipped features: GAP-004 texture policies (mipmaps,persistent, 3Dfilter) indocs/shaders/effects.rstanddocs/shaders/pipeline.rst; GAP-005 pass fields (name,type,clear,samplerTypes,viewport) and dynamic dimension viewport resolution (viewportResolved) documented indocs/shaders/effects.rst(passSpec schema updated withtype,clear,samplerTypes,viewport, andconditions) anddocs/shaders/pipeline.rst(Section 9.2 added for pass-field propagation and viewport resolution). No new standalone guide required underdocs/shaders/features.rstas pass execution controls belong to core pipeline/effect schemas. Invalidated statements: correcteddocs/shaders/pipeline.rstSection 9 to state that the expander copies authoredconditionsfor per-frame dynamic pass skipping. Verified the Sphinx docs build locally (sphinx-build -b dirhtml docs docs/_build/dirhtml: build succeeded, 0 errors), docs static asset paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-25 — caught up through
69d83b80: audited rangefa4b2f02..69d83b80(work queue item 538, delivered as the observed ranges2f47612c..63349a7dandfa4b2f0..69d83b80; the trigger end is a force-push/non-contiguous delivery, so the range was diffed directly in the checkout). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions and all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). The range's Documentation-scope changes are this pass's own prior Sphinx edits (69d83b80: GAP-003validateEffectDefinitionindocs/shaders/pipeline.rstanddocs/shaders/effects.rst) plus63349a7'sdocs/releases.rstrewrite for the retired per-push SNAPSHOT release (checked against the remaining workflow narrative — accurate); no invalidated narrative statements remained. The range's engine commits (a021a28,62eb56f,2f47612, GAP-004 texture policies and backend mip handling) and closure docs (85ded3a) were audited under the AI development contract section. Invalidated-statement audit of GAP-004 updateddocs/shaders/effects.rst(textureSpec schema now documentsmipmaps,persistent, and 3Dfilter) anddocs/shaders/pipeline.rst(resize-behavior section documents both 2D allocation policies, mip-chain regeneration, persistent resample, and 3D filtering; the blanket "does not blit old surface content" sentence no longer holds for persistent textures), with no new standalone narrative guide: the policy documentation lives in the existingdocs/shaders/effects.rstanddocs/shaders/pipeline.rstsections rather than a newdocs/shaders/features.rst-linked page. Verified the Sphinx docs build locally at the exact source (sphinx-build -b dirhtml docswithdocs/sphinx-requirements.txt: build succeeded, 18 pre-existing warnings, 0 errors), docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). Published-source CI and deployment evidence observed via the GitHub API:docs-site.ymlsucceeded at69d83b80(run 36164682935) and at63349a7d(run 36174749632), withdownstream.ymlalso succeeding at both SHAs (36164683019, 36174749672); the live docs.noisemaker.app deployment servesgit_hash: 63349a7d6b95da1e97f35b8570872db82c55d7daperdeployment-meta.json—63349a7ddescends from69d83b80(verified withgit merge-base --is-ancestor), so the deployed Sphinx HTML includes the69d83b80GAP-003.rstedits. The GAP-004 texture-policy.rstdocumentation added later in this pass is not yet in that deployment; it publishes with this documentation commit's owndocs-site.ymlrun. -
2026-09-25 — caught up through
fa4b2f02: audited rangecfccdf96..fa4b2f02(covering work queue item #534 trigger60b90af3..9d3474dfthrough HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Updated Sphinx docs indocs/shaders/pipeline.rstanddocs/shaders/effects.rstto reflect GAP-003 runtime effect definition validation (validateEffectDefinitioninshaders/src/runtime/effect-validator.js), correcting earlier abridged descriptions. Confirmed zero new narrative feature guides required underdocs/shaders/features.rst. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), structure suite (npm run test:shaders:structure, 206/206 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-25 — caught up through
cfccdf96: audited range240740dd..cfccdf96(covering work queue item #522 trigger60b90af3..5f4b7c43through HEAD). Range consists entirely of documentation, ledger, and AI contract updates (5a58a325,c85db3f0,5f4b7c43,cfccdf96). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Confirmed zero new narrative feature guides required underdocs/shaders/features.rst. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-25 — caught up through
240740dd: audited rangebbdeb56c..240740dd(covering work queue item #510 trigger4891b995..60b90af3through HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Invalidation audit updateddocs/shaders/language.rstto document subchain argument separator rules, strict-mode option (subchainArguments: 'strict'), and addedP008(Unknown subchain argument key),P009(Duplicate subchain argument key), andP010(Missing ',' between subchain arguments) to the DSL diagnostics table. Audited subchain-argument validation contract (66b2c721), registered differential gate baseline (240740dd), and AI contract checkpoint (3886ecfa); confirmed zero new narrative feature guides required underdocs/shaders/features.rst. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-24 — caught up through
bbdeb56c: audited rangeaa96726d..bbdeb56c(covering work queue item #496 triggerc9ee8a04..4891b995through HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Invalidation audit updateddocs/shaders/language.rstto addP007(Invalid call expression) to the DSL diagnostics table. Audited structured call-form and expectation diagnostics (4891b995), scanner source coordinate derivation (9fa1a221), numeric coercion array coordinate derivation (fca611fd), and GAP-002 closure provenance citations (8a21c9ca/bbdeb56c); confirmed zero new narrative feature guides required underdocs/shaders/features.rst. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-24 — caught up through
aa96726d: audited range30c47030..aa96726d(covering work queue item #482 triggerc9ee8a04..13853dffthrough HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Confirmed zero narrative statements invalidated and zero new narrative feature guides required underdocs/shaders/features.rst. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-24 — caught up through
30c47030: audited rangec7e9e09d..30c47030(covering work queue item #474 triggersc9ee8a04..13fa8b54, GAP-002 subchain validation evidence741333cb, and site styling30c47030). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Invalidation audit updateddocs/shaders/language.rstto addP006(Invalid subchain) to the DSL diagnostics table. Confirmed zero new narrative feature guides required underdocs/shaders/features.rst. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-24 — caught up through
c7e9e09d: audited range65ff358f..c7e9e09d(covering work queue item #455 triggers through823bbff1and contract checkpoint advancec7e9e09d). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). VerifiedP005indocs/shaders/language.rst; confirmed zero new narrative feature guides required. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-24 — caught up through
65ff358f: audited range7d0be45c..65ff358f(covering work queue item #442 triggers9b88e567..c9ee8a04andcc1ba268through HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Invalidation audit updateddocs/shaders/language.rstto addP005(Invalid output operation) to the DSL diagnostics table. Audited structured output validation diagnostics (7a54ab38, P005 for invalid render targets, expression-context writes, and invalid write/write3d target arguments), AI development contract checkpoint advance (c9ee8a04), site header strip styling (285e50f5), and GAP-002 output validation reconciliation (65ff358f); no additional narrative feature guides underdocs/shaders/features.rstrequired. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-23 — caught up through
7d0be45c: audited rangeec952244..7d0be45c(covering work queue item #433 triggers0766743e..9b88e567and5b81e04fthrough HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Invalidation audit updateddocs/shaders/renderer-output.rstto document the optionaldeferRender()sink method andrenderer.deferredFrameCountshipped in5b81e04f. AuditedclassicNoisedeck/glitchzero-amount guards and parity attestation (9b88e567); no additional narrative feature guides underdocs/shaders/features.rstrequired. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-23 — caught up through
ec952244: audited range731b76e4..ec952244(covering work queue item #417 triggers9e188535..0766743ethrough HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Invalidation audit updateddocs/shaders/language.rstto addP004(Invalid search directive) to the DSL diagnostics table. Audited structured search directive diagnostics (0766743e, P004 inparse(tokens)/compile(source)), scoped texture size preservation onsetUniform(e2874c85/3a32b198), andclassicNoisedeck/noisezero-refract optimization and parity attestation (fde2ea40/e11f0767); none required additional narrative feature guides. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-23 — caught up through
731b76e4: audited rangeeb46047b..731b76e4(covering work queue item #402 triggers44bc4ed4..9e188535and532ed647..e32a5a4athrough HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Invalidation audit updateddocs/shaders/language.rstto addL003(Unterminated comment),L004(Output surface reference out of range), andP003(Invalid automation arguments) to the DSL diagnostics table and remove duplicateS005entry. Audited automation argument diagnostics (e32a5a4a, P003 inparse(tokens)/compile(source)forosc(),midi(),audio()), documented inllms-full.txtanddocs/plans/active-framework-gap.md. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass), ESLint (npm run lint), and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity). -
2026-09-22 — caught up through
eb46047b: audited range2779b409..eb46047b(covering work queue item #394 triggere5bd2013..44bc4ed4through HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,258 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs, incremented from 1,257 due tofilteringadded torenderLandscape3din36a519a2). Invalidation audit updateddocs/shaders/pipeline-3d.rstto documentrenderLandscape3d's new smoothisosurfacemode alongsidevoxelmode. Audited parser expectation diagnostics (44bc4ed4, P001/P002 inparse(tokens)/compile(source)), already documented inllms-full.txtanddocs/plans/active-framework-gap.md. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass) and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 65 tests pass). -
2026-09-22 — caught up through
2779b409: audited rangee5bd2013..2779b409(covering work queue item #374 triggere5bd2013..643b2be1through HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,257 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Audit of commits in the range (52ac841brecording GAP-002 column verification,b0364da0docs ledger advance,a0ff705acontract ledger advance,643b2be1exposing structured DSL lexer diagnostics, and2779b409recording GAP-002 lexer verification) confirmed no narrative statements indocs/were invalidated and no new narrative feature guides underdocs/shaders/features.rstwere required. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass) and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 64 tests pass). -
2026-09-22 — caught up through
e5bd2013: audited rangec9ca39ba..e5bd2013(covering work queue item #343 trigger62bd24bc..e5bd2013through HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,257 documented parameters across 200 effects match definitions (node shaders/tests/test_effect_help_params.mjs). Audit of commits in the range (68d37721excluding builtins from mutation introspection,256d2d46closing GAP-022 in docs plan,3001db91ledger coverage, ande5bd2013preserving source columns in DSL diagnostics) confirmed no narrative statements indocs/were invalidated and no new narrative feature guides underdocs/shaders/features.rstwere required. Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass) and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 64 tests pass). -
2026-09-21 — caught up through
c9ca39ba: audited range9d522a31..c9ca39ba(covering work queue item #327 trigger50b8f909..62bd24bcthrough HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Verified all 1,257 documented parameters across 200 effects match definitions. Invalidation audit confirmed no further documentation statements invalidated (DSL output surface range enforcement indocs/shaders/language.rstalready landed in62bd24bc). Verified docs static paths (node --test test/docs-static-paths.test.js, 4/4 pass) and non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 64 tests pass). -
2026-09-21 — caught up through
9d522a31: audited rangef61ac073..9d522a31(covering work queue item #315 trigger2f855c9c..50b8f909through HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions. Invalidation audit identified that the DSL grammar definition forOutputRefindocs/shaders/language.rstallowed unbounded digits ('o' Digit+); updated it toOutputDigit('0'…'7') and documented compile-time range enforcement (resolved by GAP-001 in50b8f909). Verifiednode --test test/docs-static-paths.test.js(4/4 pass),node shaders/tests/test_effect_help_params.mjs(1257 documented parameters across 200 effects matching definitions), andnode scripts/run-js-tests.js --skip-parity(57/57 passed). -
2026-09-21 — caught up through
f61ac073: audited rangeac8a8d90..f61ac073(covering work queue item #306 trigger8ddf9e6e..2f855c9cthrough HEAD). Gap detection confirmed zero missinghelp.mdfiles across all 210 effect definitions (accounting for the removal of expired effectsbc,colorspace, andhsin2f855c9c). Invalidation audit identified an outdated warning indocs/shaders/renderer-output.rstregarding frame-export queue reconfiguration/close accounting; corrected it to document that canceled pending frames are now accounted asdropped(resolved by GAP-028 in0139e958). Verifiednode --test test/docs-static-paths.test.js(4/4 pass),node shaders/tests/test_effect_help_params.mjs(1257 documented parameters across 200 effects matching definitions), andnode scripts/run-js-tests.js --skip-parity(57/57 passed). -
2026-09-20 — caught up through
ac8a8d90: audited rangebeabda38..ac8a8d90. Gap detection confirmed zero missinghelp.mdfiles across all 213 effect definitions. Commits in the range consist of documentation and ledger synchronizations: active framework gap resolution (b8332f16, closing GAP-031), prior Documentation checkpoint and Sphinx narrative updates (8ddf9e6e), contract snapshot re-audit (1086890d), and I18n strings checkpoint advancement (ac8a8d90). None invalidated existing Sphinx narrative indocs/or required new feature guides underdocs/shaders/features.rst. Verifiednode --test test/docs-static-paths.test.js(4/4 pass) andnode shaders/tests/test_effect_help_params.mjs(1263 documented parameters across 203 effects matching definitions). No documentation gaps to close. -
2026-09-20 — caught up through
beabda38: audited rangef90a4d2a..beabda38. Gap detection confirmed zero missinghelp.mdfiles across all 213 effect definitions. Shipped commits in the range include borrowed VideoFrame texture upload support (2df19feb), dynamic surface/texture format recreation on format changes (6e0166ce, GAP-030), and static integer 1..16 channel enforcement for legacy MIDI modes (beabda38, GAP-031). Narrative audit identified an invalidated statement indocs/shaders/midi-audio.rstregarding legacy note mode channel handling, which was corrected to reflect static integer 1–16 validation across all channel-based modes; also documented borrowedVideoFrameupload support indocs/shaders/integration.rst. Verifiednode --test test/docs-static-paths.test.js(4/4 pass) andnode shaders/tests/test_effect_help_params.mjs(1263 documented parameters across 203 effects matching definitions). -
2026-09-19 — caught up through
f90a4d2a: audited rangeead42a5d..f90a4d2a. Gap detection confirmed zero missinghelp.mdfiles across all 213 effect definitions. Shipped commits in the range include the compiler phase-2 harness nonzero exit status fix (f1d2b46a, GAP-023), related active framework gap status resolution (f90a4d2a), starter-position documentation in llms-full.txt (f3d6f9a6), agent doc unifications, and symlink ban enforcements. None invalidated existing Sphinx narrative indocs/or required new feature guides underdocs/shaders/features.rst. Verifiednode --test test/docs-static-paths.test.js(4/4 pass) andnode shaders/tests/test_effect_help_params.mjs(1263 documented parameters across 203 effects matching definitions). No documentation gaps to close. -
2026-09-18 — caught up through
ead42a5d: audited range5a142567..ead42a5d. Gap detection identified zero missinghelp.mdfiles across all 213 effect definitions. Shipped commits in the range include the WebGPU frame export row-inversion orientation fix (5ceb97ba/688c5146),defaultProgramdiscrete-chain updates forsynth3d/heightmap3dandrender/renderLandscape3d(f2506d21), and associated parity attestations (ead42a5d). None invalidated existing Sphinx narrative indocs/or required new feature guides underdocs/shaders/features.rst. Verifiednode --test test/docs-static-paths.test.js(4/4 pass). No documentation gaps to close. -
2026-09-16 — caught up through
5a142567: the range (c68fb3c8..5a142567) contains no new or changed effect definitions and no otherdocs/edits — its only doc-relevant content is this section's own prior catch-up commit (5a142567itself, the four files logged below) plus unrelated dependency bumps (Playwright, eslint, ruff, types-requests) and browser/CI test-harness fixes (WebGPU presentation sampling, landscape capture timing, renderer pruning audit) that touch no Sphinx narrative or effect-help content. Confirmed viagit diff --stat c68fb3c8..5a142567 -- docs/ 'shaders/effects/*/*/definition.js' 'shaders/effects/*/*/help.md'(only the four already-logged files) and re-ran the productiondirhtmlSphinx build: same 18 pre-existing warnings, no new ones. No gaps to close. -
2026-09-15 — caught up through
c68fb3c8: the range added three effects (synth3d/heightmap3d,render/renderLandscape3d,points/heightGrid) landing a native voxel-heightfield landscape renderer, plus a perspective camera and depth-sorted alpha/aperture defocus forpointsBillboardRender, and a full rewrite ofsynth/remap's zone compositor. Wrote the two missinghelp.mdfiles (heightmap3d,renderLandscape3d);heightGrid,pointsRender/pointsBillboardRender, andremapalready carried accurate in-bandhelp.mdupdates. Correcteddocs/shaders/smrticles.rst:pointsRender's parameter table was missingposZ/fieldOfView(present in the definition since before this checkpoint, so this was a pre-existing gap, not new this round) and still describedviewModeas flat/ortho only; added apointsBillboardRenderreference section (shape modes, blend modes, depth sort, defocus) that did not exist despite the effect predating this checkpoint, replaced a stale note claiming billboards/textured sprites were "planned for future releases" whenpointsBillboardRenderalready ships them, and addedheightGridto the behavior-middleware table. Correcteddocs/shaders/pipeline-3d.rst: addedheightmap3dto the generators list andrenderLandscape3dto the renderers table, both previously absent. Confirmed the help-table checker passes (1,263 documented parameters across 203 effects) and the production-format Sphinx dirhtml build passes with the same 18 pre-existing warnings as the prior checkpoint (allPygments lexer name 'dsl' is not known, unrelated to this pass). -
2026-09-07 — caught up through
d30d1045: verified help coverage for all 210 effects and 1,223 documented parameters across the 200 effects recognized by the table checker. Documented lossless Remap vertex formatting in the language, effect-authoring, and effect-help references. Re-audited the in-band MIDI CC, CC14, NRPN, MPE, audio-channel, and capture capability guides; no additional feature guide was needed. The existing non-parity suite, six Remap round-trip tests, and four static-asset checks passed. The production-format Sphinx dirhtml build passed with 18 warnings in unchanged documentation and configuration. -
2026-09-04 — caught up through
acb26f80: verifiedhelp.mdfile coverage for all 210 effect definitions and ran the existing parameter-table checker across the 200 definitions it recognizes. Corrected the affected shader-language narrative for mandatory namespace search, built-in I/O, current generators and namespaces, and schema-valid argument and partial-application examples. Aligned the compiler guide with its actual parse, validate, expand, allocate, graph-assembly, backend-compilation, and error contracts, and removed the same obsolete DAG, synthetic-texture, pass-field, and runtime-shape claims from the pipeline and effect-authoring guides. No effect or user-facing feature was added, so no new narrative guide was required. Revalidated the productiondirhtmlSphinx build and static-document asset checks. -
2026-09-04 — caught up through
8cad384f: verifiedhelp.mdfile coverage for all 210 effect definitions and ran the existing parameter-table checker across the 200 definitions it recognizes. Audited the documentation-only range: its refreshed AI development contract and corrected oscillator, normalized automation, selected-device, raw-audio, and nested-automation language are already reflected in the existing shader guides. No effect or user-facing feature was added, so no new narrative guide was required. Revalidated the productiondirhtmlSphinx build and static-document asset checks. -
2026-09-04 — caught up through
5b0b7aa7: verifiedhelp.mdfile coverage for all 210 effect definitions and ran the existing parameter-table checker across the 200 definitions it recognizes. Updated the existing CLI, general DSL language, and shader guides for strobe verdicts, magic-mashup input gating, normalized and nested MIDI/audio automation, selected external devices, raw audio, external-state exports, device-bound 3D volume sizing, and MRT precision fallback. The remaining dependency, ledger, localization, and tiled-text changes did not require another narrative guide. Revalidated the productiondirhtmlSphinx build and static-document asset checks. -
2026-08-19 — caught up through
1ee891a2: verifiedhelp.mdcoverage for all 210 effects and audited the shader-parity attestation infrastructure, PixelSort parity repair, JS/Python parity corrections, fixture tooling, and dependency updates in the range; updated the release workflow narrative for the new CPU parity-attestation gate, while no new effect or user-facing feature required an additional feature guide. -
2026-08-14 — caught up through
24c7053c: verifiedhelp.mdcoverage for all 210 effects and audited the renderer-output guide and navigation links, i18n catalogs, AI contract, CI, and vendored tooling in the range; the existing guide covers the only Sphinx-relevant feature, so no additional narrative changes were needed in this pass. -
2026-08-14 — caught up through
0d34e10d: verifiedhelp.mdcoverage for all 210 effects, added the renderer-output guide for sinks and bounded asynchronous frame export, and audited the in-band export-kit, static-site, effect-authoring, and repository-link changes; no other Sphinx narrative was invalidated. -
2026-08-11 — caught up through
f33b5bfb: verifiedhelp.mdcoverage for all 210 effects and audited the AI development contract refresh plus the prior documentation catch-up; neither shipped a shader feature nor invalidated Sphinx narrative, so no guide or narrative edits were needed. -
2026-08-11 — caught up through
7cc4894b: verifiedhelp.mdcoverage for all 210 effects, corrected the remaining stale pre-move repository URL in the CLI help snapshot, and audited the Playwright and Ruff dependency bumps; no additional shader feature guides needed. -
2026-08-10 — caught up through
7cdf2b6d: verifiedhelp.mdcoverage for all 210 effects (including 25 effects added since the checkpoint), corrected four stale pre-move noisemaker repository links, and audited the in-band coding-agents guide plus runtime fixes; no additional shader feature guides needed. -
2026-07-10 — initial catch-up: added
help.mdformixer/channelCombineandfilter/temporalAberration; added feature guides for parallax, the 3D pipeline, and mashup.
-
- Checkpoint: noisemaker
db2173e34223a663b08815fa32c34608ec5b4b91/ shade-mcp63e53ad89dc43526335da6e947ed31667929e43b, 2026-11-13 - Scope: compatibility between Noisemaker and Shade MCP, recorded in
this shared ledger and the hand-authored agent contract
llms-full.txt— the executable-source companion served at the site root that describes current runtime behavior across nine surfaces (DSL, effect definition, parameters/globals, passes/graph, textures, compatibility/mutation, rendered output, cross-backend parity, Shade MCP tool contracts), a fully worked validated effect and the surface × capability traceability matrix. Gap records live in repository issues. The file pins its own audited SHAs in the "Source snapshots used for this contract" block at its head. For a completed pass, that block and this checkpoint contain the same two SHAs. Exact-source CI requires a published candidate. During that CI and live readback, the candidate snapshot can lead this checkpoint. Record the candidate SHAs and pending checks in the log. Do not call the pass complete. Keep the last completed checkpoint until all checks pass. Then make the checkpoint and snapshot equal again. There is no generator. Verify every hand edit against live source.llms-full.txtstates current behavior and open gaps only. A closed gap's row is deleted, and every reference to it goes with it. Never add closure notes, audit or re-capture history, commit provenance, CI run IDs, or verification timestamps to it; record those in this section's log. The short public indexllms.txtcarries no pinned snapshot and is kept current in-band with its links, so it is not part of this pass. Work spans both repositories even when only one changed. Noisemaker owns the engine, effects, viewer, MCP configuration, and vendored integration; Shade MCP owns its parsers, analysis, knowledge, browser tools, and harness exports. Fix affected integration code in its owning repository before describing the pair as compatible. Preserve valid DSL behavior, rendered output, defaults, saved programs, step indexes, and public tool result shapes. Unrelated engine gap closure is outside this pass. - Delivery evidence: record four identities separately in each completed
pass: Noisemaker source SHA, Shade MCP source SHA, the immutable Shade MCP
commit configured in
.mcp.json, and the release tag/source SHA delivered tovendor/shade-mcp/. The MCP pin and vendored harness are independent delivery paths. A local Shade build or source fix proves neither release nor installation. Use the existing release andpull-shade-mcpprocess; never hand-edit generated vendor bundles or replace the immutable pin with a floating branch. Commit, push, release, and deployment actions still require explicit operator authorization. - Gap detection:
-
Noisemaker drift — inspect changes since this section's current Noisemaker checkpoint, including source consumed by Shade and changes to either delivery path:
git log --oneline <noisemaker-checkpoint>..HEAD -- shaders/src/ shaders/effects/ shaders/tests/ demo/shaders/ .mcp.json vendor/shade-mcp/ pull-shade-mcp .github/workflows/pull-shade-mcp.yml test/mcp-config.test.jsEach can invalidate a behavior statement, typed grammar, or validator message, catalog reference, viewer bridge, harness API, or gap status. Check Shade's consumers against these changes, re-audit the affected contract sections, and re-check gaps whose "Source evidence" changed.
-
Shade MCP drift —
.mcp.jsonrunsnpx -y github:noisedeck/shade-mcp#<sha>pinned to an immutable commit (GAP-013 closed). Check upstreamnoisefactorllc/shade-mcpfor new commits since the Shade checkpoint and for newer releases. Compare tool schemas/results, harness exports, and browser behavior with Noisemaker's viewer, vendor imports, and configured MCP. Reconcile both delivery paths with the tested Shade source and record their provenance. A newer release does not reopen GAP-013: that gap tracks immutable pinning, not freshness. -
Audit both complete checkpoint-to-source ranges. A queue trigger range is not evidence that an earlier pass completed. Missing vendor provenance, pending source fixes, undelivered releases, and unavailable checks are explicit blockers, not grounds to advance a checkpoint.
-
- Validation and completion: run Noisemaker's prescribed JS tests and
lint, Shade's typecheck and tests, relevant structure/compile/render checks
on WebGL2 and WebGPU through the configured MCP and vendored harness, and
Shade's real viewer smoke test (
NOISEMAKERset to the Noisemaker checkout,node scripts/browser-smoke.mjs). Build Shade when needed under its instructions; never build Noisemaker dist locally. Re-capture MCP initialization,tools/list, the server/protocol version triple, and the affected worked request/response from one session at the tested immutable pin. Unit tests or a tool count alone do not prove browser compatibility. Verify required CI for each changed repository's exact published commit and verify the resulting delivery state. Then update affected contract sections, the traceability matrix, and source-evidence gaps, and advance both checkpoints together with the contract's snapshot block, or advance the checkpoint to an already published candidate after its exact-source CI and live readback pass. Include all four identities and validation evidence in the log. If any part remains unverified, keep the last completed checkpoints and record remaining work here. Historical entries below do not retroactively certify these added delivery checks. - Log:
- 2026-11-13 — completed delivery pair: Noisemaker
db2173e34223a663b08815fa32c34608ec5b4b91and Shade MCP63e53ad89dc43526335da6e947ed31667929e43b. Audited the Noisemaker range6f98d26a..db2173e3. Its runtime changes arecf95f49c, which gives each further instance of a stateful effect in a chain its own privateglobal_state and sizing parameter (shaders/src/runtime/expander.js), anddb2173e3, which makes the pipeline's defaultSinkManagerpass an isolated sink error to the failing sink's optionalonError(error)(shaders/src/runtime/pipeline.js). The vendoredvendor/shade-mcp/tree is unchanged over the range,.mcp.jsonstill pins the Shade commit above, and releasev0.5.3still resolves to it. Shade MCPmainatc7a69c24ad85d1a722d8827c039b87f3aee72331differs from the pin only in dependency bumps topackage.jsonandpackage-lock.json, so the pin stays. The contract now states per-instance scoping of privateglobal_state and sizing parameters in the input, output and texture naming rules, adds the optionalSink.onErrormethod, states the default manager's reporter, and namesdb2173e3in its snapshot block. A compile of repeatedreactionDiffusionandwatercolorinstances producedglobal_rd_state_chain_0,global_rd_state_chain_0_node_1,zoom_chain_0andzoom_chain_0_node_1, andcompileGraph()reproduced the worked example's pass array. A freshnpxinstallation of the configured pin loaded SDK1.32.2and initialized servershade-mcp/0.5.3/2025-11-25with 21 tools. One configured-pin session on an Apple silicon macOS host with headless Chromium ran all eight worked calls without MCPisError. Every response matched the recorded transcript except the benchmark timings, which now hold this session's values; parity returnedmaxDiff=0withframes: 8andstateReset: true. Noisemaker checks:node scripts/run-js-tests.js --skip-parity(exit 0),npm run lint(exit 0), the fourshaders/tests/test_contract_*tests (exit 0),node shaders/tests/test_stateful_instances.js(exit 0) andnode --test test/mcp-config.test.js(exit 0). Candidate publication901c6d25cfcc26785366a43826a85473d4717518passed JavaScript CI (43433811701), CodeQL (43433810352) and site dispatch (43433811698), and static site release43433830177deployed it. The complete servedllms-full.txtmatched its published bytes with SHA-2561f3bf844cd9fd906a4a6396ea9a7a9a99631522ba3c3366dcea36f805a40c34f. The checkpoint now matches the audited runtime snapshots above. - 2026-11-06 — completed delivery pair: Noisemaker
6f98d26ab84f17ba7fb154bb74252d6362736f89and Shade MCP63e53ad89dc43526335da6e947ed31667929e43b. Audited the Noisemaker rangec0aa621a..6f98d26aand the Shade MCP range43d2b942..63e53ad8. The configured immutable MCP pin in.mcp.jsonis that Shade commit. Releasev0.5.3resolves to the same Shade source. Its downloadedshade-mcp-dist.tar.gzhas SHA-25666d61d3e5d4ecf6fb5c9524fb25dc1496dc523c9397d2da60a94d75757dab804. The automatic Noisemaker import atd4613d7dmatches the extracted release in all four vendored directories, and the vendored tree is unchanged through6f98d26a. A freshnpxinstallation of the configured pin built adistbyte-identical to the release, loaded SDK1.32.2(the lockfile also pins1.32.2), and initialized servershade-mcp/0.5.3/2025-11-25with 21 tools. Separate initializations echoed2025-11-25,2025-06-18,2025-03-26,2024-11-05and2024-10-07, and answered2025-11-25to an unlisted version. One configured-pin session ran all eight worked calls without MCPisError, on an Apple silicon macOS host with headless Chromium; the WebGPU adapter identity was not captured. Both compilers succeeded, the WebGL2 render was nonblank, parity returnedmaxDiff=0withframes: 8andstateReset: true, and the benchmark measured 60.48 FPS against a 30 FPS target. In the same sessionrunDslProgramrendered an asymmetricuvMapprogram on WebGL2 and WebGPU; the two contact sheets were byte-identical, with highuv.yat the top. The Noisemaker range changed the WebGPU canvas upload (a caller-passedcontext2d, transparent black for a canvas without a context), WebGPU device-loss recovery, demo mesh paths and effect shaders. The Shade MCP range added the program rebuild, the fixed-frame parity capture withframesandstateReset, uniform reset mode, theneqgate start value and the WebGPUrunDslProgramrow flip. The contract now states the canvas-upload change and every Shade MCP runtime change; the six-frame live warmup and its30000ms bound are removed. The device-loss, mesh-path and effect-shader changes touch no contract statement. Shade checks ran on source exported withgit archive 63e53ad:npm ci(exit 0; itspreparebuild passedcheck:distandcheck:drop, and the builtdistis byte-identical to the release),npm run typecheck(exit 0),npm test(exit 0),NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjs(exit 0, every check passed, including the genuine WebGPU DSL render and the WebGPU grid orientation) andNOISEMAKER=<noisemaker checkout> PORTABLE=<portable source> node scripts/authored-dsl-smoke.mjs(exit 0, with Portable86c638a1). Noisemaker checks:sh scripts/test-shade-mcp(exit 0),node shaders/tests/test_contract_delivery_pair.mjs(exit 0),node --test test/mcp-config.test.js(exit 0),node scripts/run-js-tests.js --skip-parity(exit 0),npm run lint(exit 0) andnode shaders/tests/test_texture_upload_source_context.mjs(exit 0, both backends). Candidate publication8902e6951c1c5915a23aa862900015c54c4d8f2dpassed JavaScript CI (42299528825), main-push analysis (42299527879), site dispatch (42299528785) and downstream notification (42299528705). The live deployment reported that candidate SHA, and the complete servedllms-full.txtmatched its published bytes with SHA-256231d84165fe944b7b0b6153f68a084f4a74e5f0bad7bae65c6921f04aa733ca3. The checkpoint now matches the audited runtime snapshots above. - 2026-11-01 — completed delivery pair: Noisemaker
c0aa621a53976729d9d598295701f895a68badb7and Shade MCP43d2b942cdba795c99e4a7a820570987d0b5437a. The configured immutable MCP pin is that Shade commit. Releasev0.5.2resolves to the same Shade source; the Noisemaker import atc0aa621amatches its downloaded release in all vendored directories. The configured Git installation built and initialized server0.5.2, protocol2025-11-25, with SDK1.32.2. The worked requests were recaptured in one session: WebGL2 and WebGPU compilation and rendering succeeded, and pixel parity returned zero maximum and mean difference.testNoPassthroughreportedskipped: Not a filter effectfor the generator; this is not a filter acceptance result. The immutable-pin and delivery/parity contract tests pass. The checkpoint-to-source audit corrected the stale replacement-cloning statement and removed an absent configuration-file citation. The prescribedscripts/test-shade-mcpconsumer gate passed with its unchanged Linux browser driver; octaveWarp returned exact GLSL/WGSL parity. Shade'sbrowser-smoke.mjsandauthored-dsl-smoke.mjspassed against this pair, including genuine WebGPU rendering. A separate NVIDIA OpenGL override experiment failed octaveWarp parity with maximum difference 233; its WebGPU adapter identity was not captured, and this pass makes no claim of cross-driver octaveWarp parity. Candidate validation also includesnode scripts/run-js-tests.js --skip-parityand the repository ESLint targets; both passed. Candidate publicationf9176fa8c309d565bb58d506920ca2b8d8b92cc7passed JavaScript CI (41274838925), main-push analysis (41274838920), site dispatch (41274838931) and downstream notification (41274838945). The live deployment reported that candidate SHA, and the complete servedllms-full.txtmatched its published bytes with SHA-25677d1df94a1189aa070e294cc31bbfac21261d69f7807c5a904440df082cf4aec. The checkpoint now matches the audited runtime snapshots above. - 2026-10-15 — completed delivery pair for work queue item 1116. Audited the
complete Noisemaker range
b319e794..7e6c6130and Shade MCP rangef36a5f62..830603b5. The source identities are Noisemaker7e6c613079b8074a7f9b0f0f7b3c7d8d87123f17and Shade MCP830603b5bc112460eb3cf0b22f28e7dd51f84895. The configured MCP pin in.mcp.jsonis830603b5bc112460eb3cf0b22f28e7dd51f84895. Releasev0.4.13points to that Shade source. Its downloadedshade-mcp-dist.tar.gzhas SHA-256e4b3069409fd62da96a0ca74f33d0861de4d5e21b424afb9ff120a0c5f067ffe. The automatic Noisemaker import at05793839matches the extracted release in all four vendored directories. The Noisemaker range retired parameter aliases, corrected shader tile behavior, and updated both delivery paths. Shade corrected DSL exemplars and enabled WebGPU browser capability fortestPixelParity. The contract now states this parity launch behavior and records the current configured-pin worked session. Shade build, typecheck, 345 unit tests, standalone-drop check, and real Noisemaker viewer smoke passed, including a WebGPU DSL render. Shade quality CI, release CI, and the Noisemaker vendor import passed. Noisemaker non-parity JS tests and lint passed. The delivered vendor passed the WebGL2 and WebGPU render gates. The configured-pin MCP initialization negotiatedshade-mcp/0.4.13/2025-11-25and listed 18 tools. One configured-pin session ran all eight worked calls. Both compilers succeeded. The WebGL2 render was nonblank. WebGPU parity returnedmaxDiff=0with two non-solid frames. The benchmark measured 60.35 FPS against a 30 FPS target. Noisemaker publication commit13eb5fb6adds this contract and its regression guard to the source pair. Its exact-source JavaScript, Shaders, Site, Docs site, Downstream, and code analysis workflows passed. The site, docs site, and shader library release workflows passed for that commit.noisemaker.appanddocs.noisemaker.appboth serve deployment metadata naming13eb5fb6. The live/llms-full.txtresponse is HTTP 200 and byte-identical to the published contract (SHA-25619152bbcf58db3be6a5cbd15267679128d004d656626877ab1919717ba43cd33). Shader library version1.0.295serves metadata naming13eb5fb6. Every one of its 229 manifest files returned HTTP 200 with the listed SHA-256 from/1.0.295/,/1.0/, and/1/. The complete pair is now delivered. This ledger-only commit advances the checkpoint to the two source SHAs in the contract snapshot block. - 2026-10-03 — completed compatibility pass (work queue item 794): audited
Noisemaker
5ff0445939d0238c51f0ab93a30baa238a6509ec..bed7da28c32063b5837d4050843fed60847b602aand the trigger ranged143cb51..058d15dc; Shade MCP remained at8e0c80a436fbe1ead57bdde3ff3b9f605d34f342. The changed browser shader isfilter/octaveWarp: its GLSL and WGSL coordinate/seed hash conversion changed, and its 64x48 parity attestation was added. The other watched changes only correct Shade-harness provenance comments and regression guards. No DSL, effect definition, viewer, or tool schema changed, so the contract's behavior statements, traceability matrix, and three open gaps remain valid. The configured immutable MCP pin isgithub:noisedeck/shade-mcp#8e0c80a436fbe1ead57bdde3ff3b9f605d34f342. Shade releasev0.3.1points to that source and publishesshade-mcp-dist.tar.gzwith SHA-256e6a29674f356350b13c2fc009c02b5fa4e6e53d7b42aa18642028a2386cfbeb7; all 34 vendored files imported at Noisemaker10386a1eremain unchanged. Noisemaker JS tests and lint passed, as did the 206-effect structure scan. The delivered vendor compiled and rendered octaveWarp with confirmed effect/backend identity on WebGL2 and WebGPU; its pixel parity hadmaxDiff=0. Shade typecheck, 257 tests, build/drop checks, and real viewer smoke (including WebGPU DSL) passed. One configured-pin MCP session negotiatedshade-mcp/0.3.1/2025-06-18, listed 18 tools, and repeated the eight workedsynth/testPatterncalls inllms-full.txt; it also checked octaveWarp structure and compiled/rendered it on both backends with nonblank frames. The worked render returned 90x90 and warned that the requested 256x256 resolution was not honored. The worked benchmark reached 60.76 FPS at the measured 90x90 resolution. - 2026-10-03 — completed compatibility pass (work queue item 774):
audited both complete checkpoint ranges and the trigger ranges through
Noisemaker source
5ff0445939d0238c51f0ab93a30baa238a6509ecand Shade MCP source8e0c80a436fbe1ead57bdde3ff3b9f605d34f342. Noisemaker's degauss tile-coordinate and WGSL uniform changes are compatible with Shade's parser and renderer. Shade now guards in-flight index invalidation and confirms effect/backend/graph identity in browser tools, reads WebGPU pixels, reports per-uniform measurements, compares filter output with its consumed input, and annotates resolution mismatch. The immutable configured MCP pin isgithub:noisedeck/shade-mcp#8e0c80a436fbe1ead57bdde3ff3b9f605d34f342. Shade releasev0.3.1points to that source; its published tarball SHA-256 ise6a29674f356350b13c2fc009c02b5fa4e6e53d7b42aa18642028a2386cfbeb7. The automatic Noisemaker import at10386a1eis byte-identical to all 34 relevant files in that tarball; the delivered vendor and configured pin therefore match Shade source. Noisemaker updated only the pin, affected vendored-source regression guards, and the current contract. Local Noisemaker non-parity JS tests, lint, 206-effect structure gate, and delivered-vendor degauss compile/render checks on WebGL2 and WebGPU passed with page-confirmed effect/backend identity. Degauss parity matched at epsilon zero. Shade typecheck, 257 tests, build/drop checks, and real viewer smoke (including WebGPU DSL) passed. One configured-pin MCP session negotiatedshade-mcp/0.3.1/2025-06-18, listed 18 tools, and ran the eight workedsynth/testPatterncalls recorded inllms-full.txt: structure, both backend compiles, render, uniform responsiveness, expected nonfilter passthrough skip, pixel parity, and benchmark. A second session compiled and rendered degauss on WebGPU and confirmed its WebGL2 input/output difference. The worked render returned 90x90 with a warning against the requested 256x256; the contract records the measured size. Shade release CI, Noisemaker vendor CI, Shaders CI, Portable CI, and the Shade deployment passed. The final Noisemaker commit's CI and noisemaker.app delivery are checked separately after publication. The contract removes resolved GAP-010, GAP-011, GAP-012, GAP-019, GAP-021, GAP-024, and GAP-029; GAP-015, GAP-017, and GAP-020 remain open. - 2026-10-03 — delivery-blocked compatibility pass (work queue item 744):
audited noisemaker
e9a357401f281405b5bf46e324238a3e160f1cd9..378c8bf80e5f61efeeaa479b0187ef92a242ff03and shade-mcp6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d..0d7c071a0cd03adece1e5c3b7e19e15de3db30b8. The Noisemaker changes include own-choice validation, uniform aliases, renderer registration, and reseed-only UI metadata; Shade's newer browser tools bind requested effect, backend, and resolution to the rendered page and repair WebGPU readback. The tested source pair is noisemaker378c8bf8and shade-mcp0d7c071; Shade's lifecycle-test mock isolation was the only edit needed in this pass. Noisemaker JS tests (--skip-parity), lint, and both 206-effect structure gates passed; Shade typecheck, 255 tests, build/drop checks, and the real viewer smoke (including WebGPU rendering) passed. Shade CI and browser quality passed at0d7c071. The configured MCP pin remainsgithub:noisedeck/shade-mcp#6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d: one fresh session negotiatedshade-mcp/0.3.0/2025-06-18, listed 18 tools, and compiledsynth/cellon WebGL2. The vendoredvendor/shade-mcp/subtrees are byte-identical to thev0.3.0release asset (tarball SHA-256f8c88ab90c297e1422663e527fb7ef9ec4528de2f8285dfcc0e23bafc57b89ea), whose source is6a7e254. Shade source0d7c071has package version0.3.1but nov0.3.1release; the newer source is therefore absent from both configured and vendored delivery. Thellms-full.txtsource snapshots and this section's checkpoints remain at the last completed pair pending release, vendor refresh, immutable pin update, and delivery qualification. - 2026-10-02 — compatibility pass auditing noisemaker
e9a357401f281405b5bf46e324238a3e160f1cd9..1fd893483c83f7602416cf8e9c48c9605a8f202cand shade-mcp6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d..bdf186638b26fad4811b7d21aec25b3571f15040(work queue item 743; both ranges diffed from the local checkouts against this checkpoint rather than trusted). The noisemaker range's watched-roots drift is empty — its commits are this ledger's and the gap register's own documentation (f8d5940..1fd8934, including the register's rework into the "Upstream Shade MCP defects" list mapping the ten former gap ids onto shade-mcp issues 27-35). The shade range is five commits:bc4a7fa(testUniformResponsiveness now reports overallokonly when every tested uniform affected output,error/skippedotherwise, with measured per-uniform default/test values and luma/max-channel deltas against the stated 0.002 threshold — the upstream fix for issues #27, the source of the former GAP-010/011),2d85160(regression-test isolation only),76d8d79(version bump 0.3.1),1aea08a(renderEffectFrame, testUniformResponsiveness and testNoPassthrough read pixels through the backend's asyncreadPixels(textureId)with Float32 conversion and WebGPU row flip when there is no GL context, instead of failing — the upstream fix for issue #28, the source of the former GAP-012), and987b14d(the three verbs drainqueue.onSubmittedWorkDone()before reading the surface and missing-renderer errors now name the pipeline backend instead ofunknown). One further commit,bdf1866, is the dependabot npm-minor-major dependency bump alone (package.json+package-lock.json, no source change); the battery below was re-run atbdf1866. None of this is delivered:git ls-remote --tagsshows the newest tag is stillv0.3.0=6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d(nov0.3.1tag or release exists — corroborated by an independent unauthenticated GitHub API lookup:refs/tags/v0.3.1returns 404, the releases list ends atv0.3.0, andreleases/latestreportstag_name v0.3.0; receiptshade-tags-public-api.txt), the.mcp.jsonpin is unchanged, and the vendoredvendor/shade-mcp/bundle therefore still matches thev0.3.0release — so no vendored module, tool schema, or public result shape changed for the delivered pair, andllms-full.txtstays accurate for it. Four identities of this pass: noisemaker source1fd8934, shade sourcebdf1866, MCP pingithub:noisedeck/shade-mcp#6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d(= releasev0.3.0), vendor deliveryv0.3.0(unchanged). No integration code change was required on either side: noisemaker's harness mirrors and wrappers (uniform-status.jsaggregate over the unchangedtested_uniformsstrings,frame-readback.jswrapper path, and the additivebackendfield on error results) remain valid at the delivered pin. The audited shade refactor is reconciled in this repository's own test guard:shaders/tests/test_passthrough_input.jspinned the vendoredtestNoPassthrough's literalrenderer.render(0)/renderer.render(1)calls, and987b14d's verb renders inside areadFrame(t)helper; the guard now accepts both eras while still requiring two distinct compared render times, so the vendor refresh that delivers the issue-#28 fix does not turn the suite red. Both checkpoints and the contract snapshot block remain unchanged at noisemakere9a3574/ shade-mcp6a7e254: thev0.3.1release (tag push), thepull-shade-mcpvendor refresh, and the.mcp.jsonpin bump are operator-authorized publication actions and stay recorded as the pending blocker. Validation battery on the exact pair: noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 9 suites, 213 tests, 0 failures) and lint (exit 0); Shade typecheck (0 errors), unit tests (28 files / 187 tests pass) and build (npm run build, self-contained dist advertising 0.3.1) atbdf1866; structure check via the vendored harness (npm run test:shaders:structure, 1258 documented parameters across 200 effects); WebGL2 render check (npm run test:shaders:render:webgl2, exit 0, 1/1,temporal_diff=0.216246, mesh/GLSL-orientation/overlay sub-tests; the external-texture test's WebGPU leg skipped after backend fallback — not GPU qualification); WebGPU render check (node shaders/tests/test-harness.js --effects synth/noise --backend webgpu --verbose, 1/1 pass,temporal_diff=0.216246, page-confirmedidentity_checkmatch, backend observedwebgpu, generation 2→4,backend_switchmatch; SwiftShader selected withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwrightchromium_headless_shell-1243bundle'svk_swiftshader_icd.json); and Shade's real viewer smoke test (NOISEMAKER=<this checkout> node scripts/browser-smoke.mjsfrom the shade-mcp checkout atbdf1866, all available checks OK including the genuine WebGPU DSL render — source- stamped re-run against the exact candidates (noisemaker41d1ead, 0 dirty files; shade-mcpbdf1866, 0 dirty files; dist advertising 0.3.1 built at shade HEAD) withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat thechromium_headless_shell-1243bundle'svk_swiftshader_icd.json; this is software-WebGPU (SwiftShader) evidence, not physical-GPU qualification; receiptshade-smoke-stamped.log). MCP session re-captured from one stdio session at the tested immutable pin6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d: servershade-mcpversion0.3.0, protocol2025-06-18when requested, the 18-tooltools/list, and a worked timedrenderEffectFrame{effect_id: "synth/noise", time: 0.5, warmup_frames: 3}returningstatus ok, WebGL2, 1024x1024,mean_rgb0.457433/0.443662/0.445664 with 1001 unique sampled colors — the same values as the 2026-10-01 pin capture, so the pinned verb is deterministic across sessions. The same session's WebGPU captures at that pin (mcp-recapture-v030-webgpu.json, drivermcp-recapture-webgpu.mjs, SwiftShader env):runDslProgram{backend: "webgpu", dsl: "search synth\nnoise(10).write(o0)"}returnsstatus ok, backend observedWebGPU, 960x540, frame 1mean_rgb0.416145/0.437018/0.469605 with 1000 unique sampled colors — WebGPU rendering works through the configured pin's batch verb; but the pinnedrenderEffectFramewithbackend: "webgpu"still returns{"status": "error", "backend": "unknown", "error": "Failed to read pixels"}— the delivered pin's GAP-012 defect (issue #28) reproduced live, exactly asllms-full.txtstates for the delivered pair. That failed configured-pin check is an outstanding blocker recorded here: the item stays pending on it until the delivered pin'srenderEffectFramepasses a WebGPU render (which the unreleased987b14dfix provides once released, vendored and pinned);shaders/tests/test_frame_readback.jsnow source-guards the vendored verb's GL-only failure path, so the suite turns red exactly when a vendor refresh delivers the upstream fix and the wrapper's WebGPU path must be re-derived. Receipts in the automation archiveledger-743:mcp-recapture-v030.json,mcp-recapture-v030-webgpu.json,mcp-recapture.mjs,mcp-recapture-webgpu.mjs, test and smoke logs). - 2026-10-01 — delivery reconciliation: Shade MCP
v0.3.0=6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476dwas released upstream (6a7e254, one commit over the audited687dbbd: the version bump), the.mcp.jsonpin was bumped to it (df62a43), and the existing vendor workflow delivered the release bundle in Noisemakerdeb4b41(recorded by the operator inf76c372). This pass re-verified the delivery itself: the freshly downloadedv0.3.0tarballshade-mcp-dist.tar.gzhas sha256f8c88ab90c297e1422663e527fb7ef9ec4528de2f8285dfcc0e23bafc57b89eaand the vendoredvendor/shade-mcp/trees (harness/ai/formats/analysis) are byte-identical to it (receiptvendor-check-030/tarball-sha256.txt); the immutable pin in.mcp.jsonselects exactly the released source commit. Both checkpoints and the contract snapshot block now advance together to noisemakere9a3574/ shade-mcp6a7e254: GAP-014's row is deleted with every reference (the timed-capture hang and the pinned time-0 redraw are fixed in the delivered verb — verified live at the pin:renderEffectFrame {time: 0.5, warmup_frames: 3}returnsstatus ok, WebGL2,mean_rgb0.457433/0.443662/0.445664 with 1001 unique sampled colors, byte-identical to this viewer's deterministic per-time frame recorded in the 2026-09-29 entry, so the redraw honors the requested time); therunDslProgramsection now documents the delivered batch verb (fresh blank page,SHADE_DSL_RENDERER_MODULE/SHADE_DSL_ASSETS_BASE/SHADE_DSL_USE_BUNDLES,effectsPortable package selection, per-capture fullImageMetrics, PNG contact sheet as MCPimagecontent, live re-capturestatus okon WebGL2 withsurfaces ["o7"], frames[1,120,600], grid 1014x212,contenttypes["text","image"], andframe.image_urialways null); the timed/untimedrenderEffectFramecapture semantics and the MCP image transport (toolResult()appendsimageblocks after the JSON text block; theisErrorrule unchanged from98253a8c) are documented; GAP-020/021/024/029 rows were re-verified against the delivered release (src/tools/tool-result.tsunchanged since98253a8c;src/knowledge/shared-instances.tsunchanged sinced6b8ab0; the GL-only readback and the unconfirmed viewport-vs-canvas dimension handling unchanged in the releasedrender.ts); the open-gap count is corrected to 10; the matrix cell and worked-instance audit were extended; and the register count sentence, snapshot block, and this checkpoint were advanced together. The released delta over the previously audited shade-mcp687dbbdis only the version bump (git diff 687dbbd..6a7e254: package.json/package-lock.json), and Noisemaker's watched-roots drift sincecb22a05is only the inert favicon-link commite9a3574(demo/shaders/index.html + index.html icon link, plus the vendor/pin/docs delivery commits). Validation battery on the exact delivered pair: noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 9 suites, 213 tests, 0 failures) and lint (exit 0); Shade typecheck (0 errors), unit tests (26 files / 175 tests pass), and build (npm run build, self-contained dist advertising 0.3.0) at6a7e254; structure check via the delivered vendored harness (npm run test:shaders:structure, 1258 documented parameters across 200 effects); WebGL2 render check (npm run test:shaders:render:webgl2, exit 0, 1/1 plus the mesh/GLSL-orientation/overlay/external-texture sub-tests); WebGPU render check (node shaders/tests/test-harness.js --effects synth/noise --backend webgpu --verbose, 1/1 pass,temporal_diff=0.216246, page-confirmedidentity_checkmatch, backend observedwebgpu, generation 2→4,backend_switchmatch; SwiftShader selected withSHADE_SWIFTSHADER=1andVK_DRIVER_FILESat the Playwrightchromium_headless_shell-1243bundle'svk_swiftshader_icd.json); and Shade's real viewer smoke test (NOISEMAKER=<this checkout> node scripts/browser-smoke.mjsfrom the shade-mcp checkout at6a7e254, all available checks OK through the genuine WebGPU DSL render and the virtual-route cleanup). Re-captured MCP initialization (servershade-mcpversion0.3.0, protocol2025-06-18when requested,2024-11-05for the legacy client used in the session captures), the 18-tooltools/list,listEffects(210 effects), workedanalyzeEffect/checkEffectStructure(synth/noise: lossy projection;status ok, passCount 1), the deliveredrunDslProgrambatch call, and the timedrenderEffectFramecall from stdio sessions at the tested immutable pin6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d(receiptspin-capture-030.json,pin-capture-2-030.json). Archived run evidence (automation archiveledger-723):*-030.log,*-030.json,pin-capture-030.mjs,pin-capture-2-030.mjs, andvendor-check-030/. - 2026-10-01 — Noise Factor AI delivery: Shade MCP
v0.3.0is released from6a7e2540b211efd2bd2f5be40aa8c2f1c0b0476d; exact-source quality CI and release passed. The immutable.mcp.jsonpin now selects that source. The existing vendor workflow delivered it in Noisemakerdeb4b413823d1ba79332337b29d53574f1b62e18; its shader/GPU CI passed. All 34 vendored files match the release asset (SHA-256f8c88ab90c297e1422663e527fb7ef9ec4528de2f8285dfcc0e23bafc57b89ea). Noisemaker source atdf62a434passed non-parity JS, lint, structure, WebGL2 rendering and page-confirmed WebGPU noise rendering. The separate external-texture test skipped its WebGPU leg after fallback; it is not GPU qualification. The configured Git pin negotiatedshade-mcp/0.3.0/2025-06-18, listed 18 tools, and completed timed captures with distinct time-0/time-0.5/live images plus WebGL2/WebGPU DSL grids. The downloaded release also passed built-in and two-effect authored browser smokes on both hardware backends. Delivery is established; the shared checkpoint remains73c15be/00340b1pending reconciliation of the contract's batch schemas, MCP image transport, timed-render guidance, matrix and GAP-014/020/024/029. GAP-012's direct effect-render WebGPU readback and the other browser verbs' identity limitations remain open. This delivery does not advance thellms-full.txtsnapshots or certify those remaining paths. - 2026-10-01 — compatibility pass auditing noisemaker
e24c844f8dada85551ab084f41db8944fbc176c8..cb22a05eff9afed99fcf22a482b944c26f43e814and shade-mcp79c2e011a2a8088bf88462aae93ea7e2e135de10..687dbbd7d37a1220067ef08dacc350abfe62ebd5(work queue item 723, jobledger-llms-contract; both trigger ranges were diffed from the local checkouts against this checkpoint rather than trusted. Noisemaker's forced starte24c844is a linear ancestor: its watched-root commitsdd4606e/a0e9bbf/e24c844(GAP-007) anded47815(GAP-010), the ledger's own documentation commits throughf5ca07c, and the Portable-registration source stepcb22a05are already audited in the entries above; sincecb22a05the watched-roots drift is empty — only the dependabot brace-expansion bump1b088ad, outside the watched roots. shade-mcp's range extends the already-audited paired candidatec641503by one commit,687dbbd, which touches onlyscripts/authored-dsl-smoke.mjs— not a vendored module, tool schema, result shape, exported harness surface, or release artifact — so no integration-code change or new regression was required on either side; no public tool schema or result shape changed.llms-full.txt'srunDslProgrampending-delivery note was refreshed to the extended unreleased range and now recordsc641503's optionaleffectsinput (Portable package selection, at most 16, registered live throughregisterPortableEffect, matching thecb22a05renderer registration audited above). Delivery remains the blocker exactly as recorded for the prior entries: the newest Shade release is stillv0.2.3=cbcab33363851016f65391fbb9ef71d66729c07f(git ls-remote --tags, receiptvendor-check/shade-tags-remote.txt), the.mcp.jsonpin is unchanged, and the vendoredvendor/shade-mcp/bundle was re-verified byte-identical to the freshly downloadedv0.2.3tarballshade-mcp-dist.tar.gz(sha2564256ea5c695f15b3eec292f599a1ae1aada03a2628e33db8b3c9864a6b11f93f; all four module trees identical,vendor-check/tarball-sha256.txt). The batch verb,c641503's Portable effects input, and687dbbd's smoke-script hardening all wait on an operator-authorized Shade release, the existingpull-shade-mcpvendor refresh, and the.mcp.jsonpin bump. Both checkpoints and the contract snapshot block remain unchanged at noisemaker73c15be/ shade-mcp00340b1. Validation battery on the exact pair: noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 9 suites, 213 tests, 0 failures, including thecb22a05portable-registration suite) and lint (exit 0); Shade typecheck (0 errors), unit tests (26 files / 175 tests pass), and build (npm run build, self-contained dist advertising 0.2.3); structure check via the vendored harness (npm run test:shaders:structure, 1258 documented parameters across 200 effects); WebGL2 render check (npm run test:shaders:render:webgl2, exit 0, 1/1,temporal_diff=0.216246, mesh/GLSL-orientation/overlay/external-texture sub-tests pass); WebGPU render check (node shaders/tests/test-harness.js --effects synth/noise --backend webgpu --verbose, 1/1 pass,temporal_diff=0.216246, page-confirmedidentity_checkmatch, backend observedwebgpu, generation 2→4,backend_switchmatch; SwiftShader selected viaSHADE_SWIFTSHADER=1andVK_DRIVER_FILESat the Playwrightchromium_headless_shell-1243bundle'svk_swiftshader_icd.json— this container's Vulkan loader 1.4.360 ignores the legacyVK_ICD_FILENAMESvariable, and withoutVK_DRIVER_FILESthe SwANGLE init fails withVK_KHR_surfaceunsupported); and Shade's real viewer smoke test (NOISEMAKER=<this checkout> node scripts/browser-smoke.mjsfrom the shade-mcp checkout at687dbbd, all 14 checks OK:compileEffect,renderEffectFrame, the DSL grid, invalid-DSL cleanup, defaults-after-failure, concurrency isolation,setContentmodule import, contact-sheet pixels, swallowed-renderer-error and backend-fallback detection, isolated secure loopback DSL page, a genuine WebGPU DSL render, and the virtual-route cleanup). Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), the 18-tooltools/list, and the worked untimedrunDslProgram(search synth/read(o0).write(o7)/render(o7)) from one stdio session at the immutable pincbcab33363851016f65391fbb9ef71d66729c07f:status ok, the pin's old one-frame shape withframe.image_uri: null, keysbackend/console_errors/frame/metrics/status, WebGL2,mean_rgb0.232998/0.407600/0.448649, 929 unique sampled colors — the pin's documented live-frame read, nondeterministic with the capture moment. Archived run evidence (automation archiveledger-723):nm-tests.log,nm-lint.log,shade-typecheck.log,shade-tests.log,shade-build.log,structure.log,webgl2-render.log,webgpu-render.log,browser-smoke.log,pin-capture.log,pin-capture.mjs,pin-capture.json, andvendor-check/. - 2026-10-01 — Noise Factor AI authored-effect source step, above Noisemaker
b30d506fand Shade MCP79c2e01. The publication carrying this entry addsCanvasRenderer.registerPortableEffectfor initial registration of loaded Portable definitions in a fresh JavaScript realm. It retainsEffectlifecycle identity, render metadata, aliases and enum behavior; protects bare built-in names; rejects duplicate names, malformed registration inputs, and prototype-control keys. Shade's paired candidate adds explicit package selection to its fresh DSL batch renderer. Local registration regressions, prescribed non-parity JS, shader language/runtime, lint, Shade typecheck, 175 unit tests and build passed. Real MCP browser checks covered two authored effects on WebGL2 and genuine WebGPU, filter contribution, repeatable frames, flat effect layout, isolated calls and malformed/missing shader failures; the existing built-in browser smoke also passed. These are source checks, not delivery qualification. Exact published-source CI, the released renderer, a Shade release, immutable MCP pin and vendored harness reconciliation remain pending. The last completed checkpoint and contract snapshot stay unchanged. - 2026-10-01 — compatibility pass auditing noisemaker
4f5e0d28bdc155700393c314e9a5aafcc4da91fd..ed478159e5a31870c318be05ff755e533c754126and shade-mcp153eebd3b08c849a3fbf20d43527ae48a9dff746..79c2e011a2a8088bf88462aae93ea7e2e135de10(work queue item 699, jobledger-llms-contract; both trigger ranges were diffed from the local checkouts against this checkpoint rather than trusted — noisemaker's force-flagged deliveries resolve to the linear watched-root driftc2a19c7→dd4606e→a0e9bbf→e24c844(GAP-007) ande105344→16c1997→ed47815(GAP-010), plus this ledger/contract's own documentation commits through89523ee; shade-mcp's range is the two commits7b7f6cb,79c2e01, linear). Noisemaker→Shade: the GAP-007 and GAP-010 statements that those commits added tollms-full.txt(theDiagnosticCollectorcodes and their queryablebackend.diagnostics/pipeline.diagnosticsrecords, the'input'/'resolution'recognized-dimension exception whose absence had madedd4606e's fallback diagnostic flagfilter/grade's legitimate'input'keyword and fail the CI GPU parity battery, and the mirroredresolveUniformGateStatus()harness gate) were re-verified statement-by-statement against the live source (shaders/src/runtime/backends/diagnostics.js,webgl2.js,webgpu.js,pipeline.js,shaders/tests/uniform-status.js,test-harness.js). Shade's parsers, analysis, knowledge, and browser tools reference none of the new surfaces (grep of Shadesrc/andscripts/forbackend.diagnostics/DiagnosticCollector/resolveDimension/uniform-status: zero relevant hits — Shade's browser wrappers keep consuming the unchanged thrown legacyShaderDiagnosticsurface, whosecode/detailfields dd4606e preserved), so no integration-code change or new Shade regression was required and no delivered tool schema or result shape changed. Shade→Noisemaker: upstream7b7f6cb/79c2e01reshaperunDslPrograminto a fresh-blank-page per-surface batch grid verb with three newSHADE_DSL_*config keys whose defaults resolve underSHADE_VIEWER_ROOT(verified compatible with this checkout's repository root and.mcp.json, which sets none of them), and widentool-result.tswith optional MCPimagecontent while theisError-marking rule is unchanged. Recorded inllms-full.txt: therunDslProgramsection gained a pending-delivery note (the delivered pin's old one-frame shape re-verified live; the batch shape is unreleased), the GAP-020 row's upstream evidence was refreshed (file last logic change still98253a8c, 2026-08-10), and the register-count sentence was corrected from 10 to the true 11 narrowed/blocked rows — the count went stale when the 2026-09-29 pass narrowed GAP-029's row without bumping it, and closing GAP-007 preserved the off-by-one; this ledger's scope sentence now matches the register. Delivery remains the blocker exactly as recorded for the prior pass: the newest Shade release is stillv0.2.3=cbcab33363851016f65391fbb9ef71d66729c07f(git ls-remote --tags, receiptvendor-source-verification.json— annotated taga1faf90dpeels to that commit), the.mcp.jsonpin is unchanged, and the vendoredvendor/shade-mcp/bundle was re-verified byte-identical to the freshly downloadedv0.2.3tarballshade-mcp-dist.tar.gz(sha2564256ea5c695f15b3eec292f599a1ae1aada03a2628e33db8b3c9864a6b11f93f; all four module trees identical, recorded per-tree in the same receipt) — the batch verb, GAP-014's upstream timed-render fixes, and the upstream GAP-012 leg all wait on an operator-authorized Shade release, the existingpull-shade-mcpvendor refresh, and the.mcp.jsonpin bump. Both checkpoints and the snapshot block are deliberately unchanged at noisemaker73c15be/ shade-mcp00340b1. Validation battery on the exact pair: noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 8 suites, 206 tests, 0 failures) and lint (exit 0, re-run at this candidate commit with the receiptnm-lint-result.jsonrecording the command, exit code, and candidate SHA); Shade MCP typecheck (0 errors) and unit tests (26 files / 174 tests pass, including the new config, dsl-batch, and tool-result regressions); structure check via the vendored harness (npm run test:shaders:structure, 1258 documented parameters across 200 effects); WebGL2 render check (npm run test:shaders:render:webgl2, exit 0, all PASS including the external-texture WebGL2 leg); WebGPU render check (node shaders/tests/test-harness.js --effects synth/noise --backend webgpu --verbose, 1/1 pass,temporal_diff=0.216246, page-confirmedidentity_checkmatch, backend observedwebgpu, generation 2→4,backend_switchmatch;SHADE_SWIFTSHADER=1withVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwrightchromium_headless_shell-1243bundle'svk_swiftshader_icd.json,PLAYWRIGHT_BROWSERS_PATH=<browser cache>holding both pinned builds — chromium-1243 for noisemaker, chromium-1234 for shade-mcp); and Shade's real viewer smoke test (NOISEMAKER=<this checkout> node scripts/browser-smoke.mjsfrom the shade-mcp checkout at79c2e01, all 14 checks OK:compileEffect,renderEffectFrame, the DSL grid with per-surface metrics and a verified PNG, invalid-DSL cleanup, defaults-after-failure, concurrency isolation,setContentmodule import, contact-sheet pixel content, swallowed-renderer-error and backend-fallback failure detection, isolated secure loopback DSL page, a genuine WebGPU DSL render, and the virtual-route cleanup). Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), the 18-tooltools/list, and the worked calls from one stdio session at the immutable pincbcab33363851016f65391fbb9ef71d66729c07f: untimedrenderEffectFrame(status ok, WebGL2,mean_rgb0.456897/0.443613/0.445983, 1013 unique sampled colors — the pin's documented live-frame read) and the pin'srunDslProgram(status ok, old one-frame shape,frame.image_uri: null, keysbackend/console_errors/frame/metrics/status). Final-acceptance evidence additions (automation archiveledger-699): exact-source CI at the audited noisemaker source tiped47815observed via the public check-runs API (archivedcheck-runs-ed47815.json) — 16 check runs, allcompletedwith conclusionsuccessorskipped, including shaders.yml'sShader testsandGPU testsat that SHA, release.yml'sPublish releaseand bundle/standalone builds, docs-site.yml'sVerify docs asset paths, and downstream.yml'snotify(site.yml's own check at that SHA is theDispatch static-site-releasedispatch; thejs.ymlworkflow does not run there by design — its path filter excludes commits touching onlyshaders/**andllms-full.txt); source-SHA mapping for the local logs (archivedsource-sha-mapping.md) — noisemaker'sshaders//js//scripts//test//demo/trees at capture time are byte-identical toed47815(git diff --stat ed478159..58953caa -- shaders/ js/ scripts/ test/ demo/is empty; the intervening commits touch only documentation, ledgers, and dependency bumps) and the shade-mcp logs ran at the checkout tip79c2e01exactly; exact-commit CI at this documentation commit58953caa0abb2071f0493d0021bfe2c6b5e029ac(archivedcheck-runs-58953ca.json) —Dispatch static-site-releasesuccess, correctly the only check (a docs-only commit runs only the Site workflow, with the source CI carried ated47815above); and deployment (archiveddeployment-readback-58953ca.jsonanddeployed-llms-full.txt) —https://noisemaker.app/deployment-meta.jsonservesgit_hash: 58953caa0abb2071f0493d0021bfe2c6b5e029acand the deployedhttps://noisemaker.app/llms-full.txtis byte-identical to this commit'sllms-full.txt(sha25690c5883dfddb3a51…on both), containing both of this pass's edits. Candidate-boundary clarifications from final acceptance: this job's shade-mcp candidate is unchanged published source (79c2e01entered this item as an already-published audited input, and no shade-mcp commit belongs to this candidate) — the delivered pin keeps the old one-framerunDslProgramsemantics and the upstream batch reshape is recorded above as pending delivery, so no shipped behavior changed through this job; reversing the already-published upstream commits is outside this pass, and their compatibility resolution is exactly the pending-delivery record. Likewise the Portable CDN/viewer qualification that ships inside upstream79c2e01(scripts/portable-browser-smoke.mjsand the README's Portable configuration) is a Portable-product concern delivered in upstream Shade before this item; this pass validated only the local Noisemaker-runtime DSL path against this checkout (verified defaults, noSHADE_DSL_*overrides) and makes no Portable claim. Archived run evidence (automation archiveledger-699):nm-tests.log,nm-lint.log,shade-typecheck.log,shade-tests.log,structure.log,webgl2-render.log,webgpu-render.log,browser-smoke.log,pin-capture.log,pin-capture.mjs,vendor-check/,check-runs-ed47815.json,check-runs-58953ca.json,source-sha-mapping.md,deployment-readback-58953ca.json,deployed-llms-full.txt,nm-lint-result.json, andvendor-source-verification.json(withshade-tags-remote.txt). - 2026-09-29 — compatibility pass auditing noisemaker
73c15be00d6888f4b5d2835d8e242ee9e840df45..682739066d3b74962febbdcdae85b5aa4d2e19f3and shade-mcp00340b148e109464b1a87d89ff29fc7622d384c9..07af4ffa392197748216f3a0beaebee365d44292(work queue item 662, jobledger-llms-contract; both triggers were force-pushed/non-contiguous, so both ranges were diffed from the local checkouts against this checkpoint rather than trusting the queue ranges — noisemaker's observed deliveries3e21906..a505910,a505910..6827390plus this ledger's ownbff453e/8fec3d0/4284359documentation commits are linear inside the checkpoint-to-HEAD audit; shade-mcp's00340b1..ed73367..ca94cfa..07af4ffais linear). Noisemaker→Shade: the watched-roots diff is exactlyshaders/src/runtime/external-input.jsandshaders/tests/test_external_input.js— the GAP-032 fix commitsa505910/6827390(whose ownllms-full.txtprose updates were re-verified statement-by-statement against the source: registration of the browser-selected device and default channels, per-requirementenumerateDevices()resolution with exact-id authority and unique-name matching re-checked at enable and every 60 ticks, per-channel splitter analysis, aggregate and per-channelrawReadyfrom the bipolar time-domain mean, uncapturable-binding warning withminfallback, and the register shrinking to 11 open gaps; that re-verification itself then surfaced one gap in the shipped warning claim — an already-captured device lacking the requested channel (or a capture freshly opened by the sync whose track delivered fewer channels than the graph selects) returned null from the channel lookup and silently evaluated tominwith no diagnostic. Fixed in this pass's follow-up commit:_syncCaptures()now runs a post-open validation pass (AudioInputManager._channelShortfall()) that warns for every selected requirement — default-device, id-selected, and name-selected alike — whose captured device does not expose the requested channel, while requirements with no capture at all keep their existing specific warnings. Final acceptance surfaced one more hole in that pass: the browser-selected capture is stored under thenullkey when the track reports no deviceId, and the default-device branch'sthis._deviceIdguard skipped exactly that capture — fixed by dropping the guard (Map.get(null)resolves the deviceless capture), with a deviceless-fixture regression (default channel 2 against a 1-channel deviceless capture warns, in-range channel 1 stays silent and resolves); red-before holds (audio-deviceless-red.log65/1 against the unpatched source,audio-channel-green.log66/0 after). Focused regression inshaders/tests/test_external_input.js(default/id/name channel-3 requirements against 2-channel fixture captures warn, in-range channel-2 requirements do not, the in-range channel resolves and the beyond-range channel does not); red-before holds (the suite fails 64/1 against the unpatched source, 65/0 after) — see the archivedaudio-channel-red.logandaudio-channel-green.log. The affectedllms-full.txtprose now includes the channel shortfall in the uncapturable-binding enumeration in both the parameters/globals surface and the Diagnose section. Shade's parsers, analysis, knowledge, and browser tools reference none of the new surfaces (grep of Shadesrc/,scripts/, and the vendoredvendor/shade-mcp/forAudioInputManager/getAudioInputRequirements/registerDefaultChannels/rawReady/enumerateDevices: zero hits outside the noisemaker demo page itself), so no integration-code change or new Shade regression was required and no tool schema or result shape changed. Shade→Noisemaker: upstreamed73367/ca94cfafix the GAP-014 hang class in the upstream verb itself (warmup while the loop is live, warmup waits bounded atsession.timeoutMswith a diagnostic, unpause in afinally) and07af4ffadds a pre-readback redraw — the audit found that redraw issued unconditionally and as a hardcodedrenderer.render(0), while noisemaker's viewer draws at therender()argument (CanvasRenderer.render(normalizedTime)→Pipeline.render(time)→updateGlobalUniforms(time, …)), so every timed capture drew the time-0 frame instead of the requested paused time and every untimed capture (historically a live-frame readback) was pinned to time 0 as well; corrected in the owning Shade checkout to a timed-only redraw at the requested time, with the regression extended to pin the redraw's time argument and the untimed no-redraw. Validation battery on the pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 8 suites, 200 tests, 0 failures) and lint (exit 0), Shade MCP typecheck (0 errors) and unit tests (25 files / 161 tests pass, including the extended timed-render regression), structure check via the vendored harness (npm run test:shaders:structure, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, all pass), WebGPU render check (node shaders/tests/test-harness.js --effects synth/noise --backend webgpu --verbose, 1/1 pass,temporal_diff=0.216246, identitymatch, generation 2→4,backend_switchmatch; run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat<browser cache>/chromium_headless_shell-1243/chrome-headless-shell-linux64/vk_swiftshader_icd.json— Playwright browsers reinstalled toPLAYWRIGHT_BROWSERS_PATH=<browser cache>(chromium-1243 for noisemaker, chromium-1234 for shade-mcp) and npm cache at<npm cache>), and the live browser smoke test against the corrected Shade build (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK). Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and the worked timedrenderEffectFramecall from one stdio session at the immutable pincbcab33363851016f65391fbb9ef71d66729c07f(time: 0, warmup_frames: 0→status ok, WebGL2, 1024×1024; the pinned verb performs no pre-readback redraw, so this reads the loop's last live frame and is nondeterministic with the capture moment — two archived runs of the identical request returnedmean_rgb0.237010/0.408313/0.446757 with 917 sampled colors and 0.245578/0.416137/0.453570 with 931; an earlier run returned 0.241492/0.412125/0.449711 with 928, and one of the discarded pre-review captures returned values byte-identical to the corrected build's controlled time-0 redraw frame — an uncontrolled live-frame read can coincide with a time-0 render when the pause lands right after the pipeline restart, which is exactly why pixel values alone cannot attribute provenance and the archived per-session logs and drivers are the provenance record). The timed requesttime: 0.5, warmup_frames: 3at that pin produced no response within 240000 ms (Error: NO RESPONSE within 240000 ms waiting for tools/call) — the GAP-014 hang is live at the pin. Through the corrected Shade build the same request completes, and a three-way probe returned three distinct frames: time 0mean_rgb0.445390/0.433124/0.469914 and time 0.5 0.457433/0.443662/0.445664 (both reproduce byte-identically across runs, deterministic per requested time), and untimed 0.446032/0.432419/0.475967 (the live loop frame; nondeterministic with the capture moment — an earlier probe run observed 0.286384/0.461296/0.503775), confirming the redraw honors the requested time. The pre-review capture log superseded here was discarded: leaked environment made it run the corrected build at time 0.5, so its values were mislabeled as a pin capture; every capture in this entry was re-run with the explicit-provenance drivers archived beside the logs. Archived run evidence (automation archiveledger-662):pin-capture-time0-run1.log,pin-capture-time0-run2.log,pin-hang-time0.5.log,corrected-build-probe.log,audio-channel-red.log,audio-channel-green.log,nm-tests.log,nm-lint.log,shade-typecheck.log,shade-tests.log,structure.log,webgl2-render.log,webgpu-render.log,browser-smoke.log,vendor-diff.txt, and thepin-capture.mjs/corrected-build-probe.mjsdrivers. Publication and delivery-state record: the Shade redraw correction is shade-mcp153eebd3b08c849a3fbf20d43527ae48a9dff746, published to main together with noisemakerc4606d1194c5fb0c6a3b27bdd542d54780da3919; exact-commit CI at those SHAs all succeeded (shade-mcpquality.ymlrun 36538519097,downstream.ymlrun 36538519252,ci.ymlrun 36538519002; noisemakersite.ymlrun 36538515092). Required CI at this publication's own commit (4d47b3fd826288077a58a95da3597dba59007fd9) likewise all succeeded — js.yml (JS tests, JS lint), shaders.yml (Shader tests, GPU tests, Bundle shaders, release dispatches), site.yml (Verify docs asset paths, notify, Dispatch static-site-release), docs-site.yml, downstream.yml, and release.yml (Publish release at tagv1.0.203, all bundle/standalone builds) — and the deployed artifact readback (archived asdeployment-readback-4d47b3f.json) showshttps://noisemaker.app/deployment-meta.jsonservinggit_hash: 4d47b3fd826288077a58a95da3597dba59007fd9(date1790672256). Earlier readbacks in this entry's history: the deployment servedgit_hash: c4606d1194c5fb0c6a3b27bdd542d54780da3919between that commit's publication and this one. Required CI at the noisemaker implementation commit682739066d3b74962febbdcdae85b5aa4d2e19f3(observed via the public check-runs API in this follow-up): 16 check runs, all success — Shaders (Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release ×3, Dispatch library-release), Release (Publish release, Build JS bundles, Build shader bundle, Build standalone Linux/Windows/macOS), Site (Verify docs asset paths, notify), plus theauto-mergeskip; thejs.ymlworkflow did not run there by design, its path filter (js/, scripts/, package files) excludes a commit touching onlyshaders/**andllms-full.txt. Delivery is the open blocker: the newest Shade release remainsv0.2.3=cbcab33363851016f65391fbb9ef71d66729c07f(git ls-remote --tags), so the.mcp.jsonpin, the vendoredvendor/shade-mcp/bundle (re-verified this pass against the freshly downloadedv0.2.3tarballshade-mcp-dist.tar.gz, sha2564256ea5c695f15b3eec292f599a1ae1aada03a2628e33db8b3c9864a6b11f93f: the four vendored module treesai/analysis/formats/harnessare byte-identical; last vendor changefa83eea, 2026-09-25), and GAP-014's upstream-fixed status all wait on an operator-authorized Shade release carryinged73367/ca94cfa/07af4ffaplus the redraw correction, followed by the existingpull-shade-mcpvendor refresh and pin bump.llms-full.txtGAP-014 row and its Act prose were updated to this verified source state with the pending delivery stated; both checkpoints are deliberately unchanged (delivery pending), so the snapshot block still pins noisemaker73c15be/ shade-mcp00340b1. Recorded observation left for the gap owners, not changed here: the repository harness wrapper's own timed capture (GAP-014's path, pre-existing) redrawsrenderer.render(0)twice before readback aftersetPausedTime(time), so a nonzero requested time draws the time-0 frame there too; no caller currently requests a nonzero time through it. Pass completion follow-up (work queue item 673): the entry's described ranges were re-diffed locally and extend exactly through noisemaker4f5e0d28bdc155700393c314e9a5aafcc4da91fd(c4606d1→4d47b3f→4f5e0d2, linear) and shade-mcp153eebd3b08c849a3fbf20d43527ae48a9dff746; both checkouts are in sync with their published mains. The validation battery was completed on the exact pair on a real-GPU macOS host (Automated joba88a5288, evidenceledger-673,host-run-note.md): the full WebGL2 render chain exits 0 (synth/noise 1/1 with page-confirmed identity,temporal_diff=0.216193, plus the mesh first-frame, GLSL y-orientationdirectMean=0.000/yFlipRatio=1.000, overlay-recompile, and external-texture-upload sub-tests), the WebGPU chain exits 0 (synth/noisebackend=webgpu1/1, sametemporal_diff=0.216193; the chain's external-texture sub-test self-reports its pre-existing "SKIP WebGPU: backend resolved to WebGL2"), and Shade's real viewer smoke test passes all 3 checks (compileEffect,renderEffectFrame, module import from asetContentpage) against the corrected153eebdbuild withNOISEMAKERat the noisemaker checkout. Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), the 18-tooltools/list, and the worked UNTIMEDrenderEffectFramecall from one stdio session at the immutable pincbcab33363851016f65391fbb9ef71d66729c07f(status ok, WebGL2, 1024×1024,mean_rgb0.450318/0.438138/0.453507, 1001 unique sampled colors — the pin's documented live-frame read, nondeterministic with the capture moment; the pin's timed-path GAP-014 hang stands as recorded above and was not re-run). The affected TIMED path was then re-captured from two further one-session stdio captures on the same GPU host (same evidence): through the corrected153eebdbuild the timed requestrenderEffectFrame {time: 0.5, warmup_frames: 3}completes —status ok, WebGL2, 1024×1024,mean_rgb0.457276/0.443470/0.445504, 1001 unique sampled colors (deterministic per requested time, matching the redraw-honors-requested-time behavior recorded above) — while the identical timed request at the immutable pincbcab33363851016f65391fbb9ef71d66729c07fagain produced no response within 240000 ms (tools/call NO RESPONSE within 240000 ms), re-running the recorded GAP-014 hang live at the pin this pass. Environment adaptations used on the host (all temporary run scaffolding, uncommitted and reverted; detailed in the evidence note): the sandbox binds only loopback ports 43117–43126, soSHADE_VIEWER_PORTwas pinned and four scripts' hardcodedacquireServer(0/undefined, …)calls were port-pinned for the run; sibling checkouts are EPERM-isolated per run, so the smoke used agit archivecopy of noisemaker4f5e0d2; and the host proxy blockshandfish.noisefactor.io, so that copy's demo page imported a locally vendored byte-copy of the CDN bundle (sha256003a8ab98a2367b852bce423a1edc4e93829676a87b47b3f1c4a268dbe717fea) — no repository file was changed for any of this. Exact-commit CI observed via the public check-runs API, with the full API responses archived beside the run logs for independent re-verification (evidenceledger-673):check-runs-4f5e0d2.json— 22 check runs at head_sha4f5e0d28bdc155700393c314e9a5aafcc4da91fd, every onecompletedwith conclusionsuccessorskipped(Shaders, JS tests/lint, Release builds, Site, notify);check-runs-153eebd.json— 6 check runs at153eebd3b08c849a3fbf20d43527ae48a9dff746(quality/ci/browser/notifysuccess, twoauto-mergeskips). The re-diffed source ranges and their exact commit lists are archived inrange-audit.txt(the noisemaker watched-roots drift is exactly the GAP-032 commitsa505910/6827390/4d47b3f/4f5e0d2and theirexternal-input.js+test_external_input.jsfiles; shade-mcp00340b1..153eebdis the four warmup/redraw commits). The live deployment readback is archived indeployment-readback-4f5e0d2.json:https://noisemaker.app/deployment-meta.jsonservinggit_hash: 4f5e0d28bdc155700393c314e9a5aafcc4da91fd(date 1790673091). Final-record verification at this documentation commit itself: the Noisemaker battery was re-run green at72b07e3(receiptsnm-tests-final.log8 suites / 200 tests / 0 failures,nm-lint-final.logexit 0,structure-final.log1258 parameters across 200 effects);72b07e3is a LEDGER.md-only commit and correctly has zero check runs — no workflow's path filter watchesLEDGER.md(the same path-filtered behavior recorded for prior documentation-only commits, which ran only the Site workflow because they touchedllms-full.txt), and the published source commits it documents carry the CI evidence above. Deployment remains at the last source commit,git_hash: 4f5e0d28bdc155700393c314e9a5aafcc4da91fd(a records-only commit ships no site artifact; the deployment readback for the published source commit stands as recorded). Deployment:https://noisemaker.app/deployment-meta.jsonservesgit_hash: 4f5e0d28bdc155700393c314e9a5aafcc4da91fd. Delivery re-check: the newest Shade release is stillv0.2.3=cbcab33363851016f65391fbb9ef71d66729c07f, so the.mcp.jsonpin, the vendored bundle, and GAP-014's delivered state all remain on the operator-authorized-release blocker recorded above; both checkpoints stay deliberately unchanged at noisemaker73c15be/ shade-mcp00340b1(delivery pending), and the snapshot block is unchanged with them. The container/host receipts for every battery leg are archived with the job (evidenceledger-673:nm-tests-green.log8 suites / 200 tests / 0 failures re-run at this documentation commit,nm-lint-green.log,structure-green.log,shade-typecheck-host.json,shade-tests.log25 files / 161 tests, thehost-*.jsonrun outputs, and the probe receipts for the host adaptations); an earlier partialnm-tests.logcapture taken before that container'snpm cifinished is superseded by the green rerun and kept only as the record of the failed attempt.73c15be00d6888f4b5d2835d8e242ee9e840df45/ shade-mcp00340b148e109464b1a87d89ff29fc7622d384c9(Automated job67ecc03a, selected existing GAP-029): the watched-root drift range73c15be..HEADis empty (the range contains only this contract's own documentation advances and eslint/ruff dependency bumps outside the watched roots), so no behavior statement, typed grammar, validator message, catalog reference, viewer bridge, harness API, or delivery path changed. The pass narrowed the GAP-029 register row inllms-full.txt: the defect and its fix live in the Shade repository'ssrc/knowledge/shared-instances.ts(invalidateSharedEffectIndex()leavesbuildingintact and an in-flight pre-change build repopulates the cache after invalidation, so a list/search immediately after a library change orgenerateManifestcan retain a pre-change index for the next five-second TTL), which noisemaker cannot write; nothing of the knowledge module is vendored here (vendor/shade-mcp/ships onlyai/analysis/formats/harness, andinvalidateSharedEffectIndexappears nowhere injs/,scripts/,shaders/,test/,demo/), so there is no repository-side surface and the row stays open, narrowed/blocked, with the existing retry-after-TTL workaround. Shade-side audit by unauthenticated remote fetch:git ls-remoteputs bothnoisefactorllc/shade-mcpandnoisedeck/shade-mcptips at00340b1; the content hash ofsrc/knowledge/shared-instances.ts— git blobc3081989adfbf4e568e31043c248d35d0ab74fbe, unchanged sinced6b8ab017bbf682055a1872e3fd86c273c28d5fc(2026-08-12) — is byte-identical at that tip, at the.mcp.jsonpincbcab33, and at the newest release tagv0.2.3(which points at that pin). Recorded limitation: no Shade-side execution of the race itself was run in this pass — fixing it is a Shade-repository commit, and Shade's own 157 passing unit tests do not cover invalidation during an in-flight build — so the upstream persistence claim rests on the content-addressed blob identity above, re-derivable from any unauthenticated clone. Verified four identities: Noisemaker source73c15be00d6888f4b5d2835d8e242ee9e840df45, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/unchanged in this pass's range (last vendor change63349a7, 2026-09-25; releasev0.2.3byte-verified against theshade-mcp-dist.tar.gzin the 2026-09-28 pass). Validation battery on the exact pair: noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 0 failures) and lint (exit 0), Shade MCP typecheck (0 errors) and unit tests (24 files / 157 tests pass on the00340b1checkout), structure check via the vendored harness (npm run test:shaders:structure, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, all pass) and WebGPU render check (node shaders/tests/test-harness.js --effects synth/noise --backend webgpu --verbose, 1/1 pass,temporal_diff=0.216246, page-confirmedidentity_checkmatch: backend observedwebgpu, generation 2→4,backend_switchmatch;SHADE_SWIFTSHADER=1withVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwrightchromium_headless_shell-1243bundle'svk_swiftshader_icd.jsonandPLAYWRIGHT_BROWSERS_PATH=<browser cache>holding both pinned Playwright browser builds — chromium-1243 for noisemaker, chromium-1234 for shade-mcp), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and the GAP-029 verbs' worked calls from one stdio session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f:listEffectsreturns 210 effects andsearchEffectsquery:"noise",limit:3returns scored hits (classicNoisedeck/cellNoise96,classicNoisedeck/noise96,classicNoisedeck/noise3d96). Gap count stands at 12 (GAP-029 narrowed/ blocked — a Shade-repository item; no newer Shade release exists). Updatedllms-full.txt(GAP-029 row narrowed with the upstream evidence and the recorded limitation) and advanced this checkpoint together. - 2026-09-28 — caught up through noisemaker
73c15be00d6888f4b5d2835d8e242ee9e840df45/ shade-mcp00340b148e109464b1a87d89ff29fc7622d384c9(work queue item 658, jobledger-llms-contract): audited watched source roots across noisemaker range296e0138c4744ed485b2e95de3eeb466c17629ee..73c15be00d6888f4b5d2835d8e242ee9e840df45. The trigger's forced starta912749is the prior entry's audited range start (its delivery ranges04e8582..c28e8fd,c28e8fdb..7aff843,7aff843..73c15beare linear inside this checkpoint-to-HEAD audit, which also contains the prior entry's own checkpoint-advance commit04e8582), so every delivered commit is covered with no gap. The range is four commits:04e8582(the prior entry's documentation-only checkpoint advance),c28e8fd(engine fix — webgl2ensureDepthBuffer()leaves the FBO unbound after initial depth allocation; the mesh render path now re-bindsgl.bindFramebuffer(gl.FRAMEBUFFER, fbo), with a focused mesh first-frame regression inshaders/tests/test_mesh_first_frame.mjs),7aff843(GAP-024 — every browser result the repository harness produces carries the additiveidentity_checkrecord built byshaders/tests/session-identity.js, the wrapper's readiness poll is identity-bound, backend switches are confirmed against the page, anddemo/shaders/index.htmlpublishes__noisemakerPipelineGeneration; mismatches gate only behind--strict-identity), and73c15be(GAP-026 — the production pipeline invokesonInit/onUpdate/onDestroyviaPipeline.initLifecycleEffects()/_invokeUpdateHooks()/_withRuntimeUniforms()with fallback uniform semantics, regressions inshaders/tests/test_lifecycle_hooks.js; no effects, catalog,.mcp.json, or vendor changes). Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(git ls-remote origin main==00340b1; newest release stillv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f). Shade's parsers, analysis, knowledge, and browser tools reference none of the new surfaces — grep of Shadesrc//scripts/and the vendoredvendor/shade-mcp/tree foronInit/onUpdate/onDestroy/ensureDepthBuffer/initLifecycleEffects/session-identity/identity_check/__noisemakerPipelineGenerationfinds zero vendor hits (Shade's ownsrc/__tests__/session-lifecycle.test.tsis its browser-session lifecycle, unrelated) — so no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged. Contract re-audit found and fixed three stale statements the range's own GAP-026 row update left behind (llms-full.txt lines 722/826-828 still claimed no production caller exists, and this section's own Scope register still listed GAP-026 among 13 open gaps): all now describe the verified state, and the worked-instance audit was extended across296e013..73c15be(the range does touch engine runtime, butsynth/testPatternis hook-less and byte-unchanged, and the webgl2 depth fix only affects mesh/depth paths it never enters). Verified four identities: Noisemaker source73c15be00d6888f4b5d2835d8e242ee9e840df45, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/byte-identical to the releasev0.2.3tarball (shade-mcp-dist.tar.gz, re-downloaded in this pass, sha2564256ea5c695f15b3eec292f599a1ae1aada03a2628e33db8b3c9864a6b11f93f, diffed forharness/,ai/,formats/,analysis/; the vendor tree last changed at13a8a04, an ancestor of this checkpoint). Validation battery on the exact pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 8 suites, 200 tests, 0 failures, including the GAP-024test_session_identity.jsand GAP-026test_lifecycle_hooks.jssuites) and lint (npm run lint, exit 0), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, exit 0, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, 1/1 pass,temporal_diff=0.216246,is_no_animation=false,is_low_variety=false), WebGPU render check (node shaders/tests/test-harness.js --effects synth/noise --backend webgpu --verbose, 1/1 pass,temporal_diff=0.216246, page-confirmedidentity_checkmatch: backend observedwebgpu, generation 2→4,backend_switchmatch— run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwright Chromium bundle'svk_swiftshader_icd.json; Playwright browsers reinstalled toPLAYWRIGHT_BROWSERS_PATH=<browser cache>— chromium-1243 for noisemaker, chromium-1234 for shade-mcp — and npm usednpm_config_cache=<npm cache>), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and the workedanalyzeEffectandcheckEffectStructurecalls witheffect_id: "synth/noise"from one stdio session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f(analyzeEffectreturns the lossy regex projection without error;checkEffectStructurereturnsstatus: "ok", passCount 1, no issues). CI evidence for the published source commits (observed via the public GitHub check-runs API in this pass): each ofc28e8fd,7aff843, and73c15beran Shaders (Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release and library-release), JS tests (JS tests, JS lint), Verify docs asset paths, notify, and Release (Publish release, Build JS bundles, Build shader bundle, Build standalone Linux/Windows/macOS) — all success; the documentation-only04e8582correctly ran only the path-filtered Site workflow (Dispatch static-site-release, success). Deployment: https://noisemaker.app/deployment-meta.json servesgit_hash: 73c15be00d6888f4b5d2835d8e242ee9e840df45; the published contract at that deployment still pins296e0138in its snapshot block because this checkpoint-advance commit is documentation-only and not yet published. Open gap count stands at 12 (GAP-026 closed at73c15be; GAP-024 narrowed repository-side, the upstream Shade verbs remain Shade-repository items; GAP-013 stays closed on immutable pinning — no newer Shade release exists). Updatedllms-full.txt(snapshot block advanced to Noisemaker73c15be00d6888f4b5d2835d8e242ee9e840df45, the stale GAP-026 narrative statements corrected against verified source, the worked-instance audit extended across296e013..73c15be, and the 2026-09-28 re-capture evidence) and advanced this checkpoint together. - 2026-09-27 — caught up through noisemaker
296e0138c4744ed485b2e95de3eeb466c17629ee/ shade-mcp00340b1(work queue item 644, jobledger-llms-contract): audited watched source roots across noisemaker range93229933b102ba82e713402be19db57207698850..296e0138c4744ed485b2e95de3eeb466c17629ee. The trigger's forced start12b4d74is the prior entry's audited range start and both observed delivery ranges (7c5f176..a912749,11d7c69..296e013) are linear inside this checkpoint-to-HEAD audit, so every delivered commit is covered with no gap. The range is four commits, all test-harness or documentation layer — no engine, effects, viewer, catalog,.mcp.json, or vendor changes:7c5f176(the prior entry's own checkpoint-advance documentation commit),a912749(GAP-019 —shaders/tests/passthrough-input.jsprobes TRUE input passthrough in-browser with a live write-blit positive control, consumed byshaders/tests/test-harness.jsonly behind the explicit--passthrough-inputopt-in; regressions inshaders/tests/test_passthrough_input.js),11d7c69(GAP-020 — one llms-full.txt line narrowing the row to the Shade-repository error envelope; nothing of the tool-result wrapper is vendored and no noisemaker module consumes the MCP envelope), and296e013(GAP-021 — the harnessrenderEffectFramewrapper annotates every resolution-bearing result with additiverequested_resolution/resolution_checkfields, pinned byshaders/tests/frame-resolution.jswith regressions inshaders/tests/test_frame_resolution.js; mismatch gates only behind the explicit--strict-resolutionopt-in; no status, frame, or metric field changes). Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(git ls-remote origin main==00340b1; newest release stillv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f). Shade's parsers, analysis, knowledge, and browser tools reference none of the new modules — grep of Shadesrc//scripts/and the vendoredvendor/shade-mcp/tree forpassthrough-input/frame-resolutionfinds zero hits; the new surfaces are repository-internal test/harness code, and the GAP-019/021 upstream verbs are explicitly left as Shade-repository items per the rows — so no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged (verified live:analyzeEffectstill returns the lossy regex projection,checkEffectStructurestillstatus: "ok"). Verified four identities: Noisemaker source296e0138c4744ed485b2e95de3eeb466c17629ee, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/byte-identical to the releasev0.2.3tarball (shade-mcp-dist.tar.gz, re-downloaded in this pass, sha2564256ea5c695f15b3eec292f599a1ae1aada03a2628e33db8b3c9864a6b11f93f, diffed forharness/,ai/,formats/,analysis/; the vendor tree last changed at9d3474d, an ancestor of this checkpoint). Validation battery on the exact pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 8 suites, 200 tests, 0 failures, including the GAP-019test_passthrough_input.jsand GAP-021test_frame_resolution.jssuites) and lint (npm run lint, exit 0), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, exit 0, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, exit 0,temporal_diff=0.216246,is_no_animation=false,is_low_variety=false), WebGPU render check (npm run test:shaders:render:webgpu, 1/1 pass,temporal_diff=0.216246,is_no_animation=false,is_low_variety=false— run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwright Chromium bundle'svk_swiftshader_icd.json; the browser cache had been pruned, so Playwright browsers were reinstalled toPLAYWRIGHT_BROWSERS_PATH=<browser cache>— chromium-1243 for noisemaker, chromium-1234 for shade-mcp), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and the workedanalyzeEffectandcheckEffectStructurecalls witheffect_id: "synth/noise"from one stdio session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f(analyzeEffectreturns the lossy regex projection without error;checkEffectStructurereturnsstatus: "ok", passCount 1, no issues). CI evidence for the published commits (observed via the public GitHub check-runs API in this pass): each ofa912749and296e013ran Shaders (Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release and library-release), JS tests (JS tests, JS lint), Verify docs asset paths, notify, and Release (Publish release, Build JS bundles, Build shader bundle, Build standalone Linux/Windows/macOS) — all success; the documentation-only7c5f176and11d7c69correctly ran only the path-filtered Site workflow (Dispatch static-site-release, success). Updatedllms-full.txt(snapshot block advanced to Noisemaker296e0138c4744ed485b2e95de3eeb466c17629ee, worked-instance audit extended across9322993..296e013, and the GAP-019/GAP-021 re-capture evidence) and advanced this checkpoint together. Open gap count stands at 13 (GAP-019 and GAP-021 narrowed repository-side; the upstream Shade verbs remain Shade-repository items, and GAP-013 stays closed on immutable pinning — no newer Shade release exists). - 2026-09-27 — caught up through noisemaker
93229933b102ba82e713402be19db57207698850/ shade-mcp00340b148e109464b1a87d89ff29fc7622d384c9(work queue item 631, jobledger-llms-contract): audited watched source roots across noisemaker range12b4d74fb4f28d5f00bb1dde107fa8673814d8b9..93229933b102ba82e713402be19db57207698850— linear, two commits:8fe3cca(documentation-only: post-publication deployed-contract evidence and the open-gap enumeration corrected to 13) and9322993(GAP-017 —shaders/tests/definition-schema.jsimports each effect's definition live and pins withauditSchemaLoss()/auditDefinitionLoss()what the real vendored regex parser drops; the harness gains the informational, no-browser--describe <patterns>mode inshaders/tests/test-harness.jsprinting each matched effect's complete schema, the upstream projection, and the loss audit; regressions inshaders/tests/test_definition_schema.jsregistered inscripts/run-js-tests.js; no engine, effects, viewer, catalog,.mcp.json, or vendor changes). Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(git ls-remote origin main==00340b1; newest release stillv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f). Shade's parsers, analysis, knowledge, and browser tools reference none of the new modules — grep of Shadesrc/and the vendoredvendor/shade-mcp/tree fordefinition-schema/runDescribeMode/auditSchemaLossfinds zero hits; the new surfaces are repository-internal test/harness code — so no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged (verified live:analyzeEffectstill returns the lossy regex projection,checkEffectStructurestillstatus: "ok"). Verified four identities: Noisemaker source93229933b102ba82e713402be19db57207698850, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/byte-identical to the releasev0.2.3tarball (shade-mcp-dist.tar.gz, re-downloaded in this pass, sha2564256ea5c695f15b3eec292f599a1ae1aada03a2628e33db8b3c9864a6b11f93f, diffed forharness/,ai/,formats/,analysis/; the vendor tree last changed at286ccf6, an ancestor of the prior checkpoint). Validation battery on the exact pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 200 tests, 0 failures, including the GAP-017test_definition_schema.jssuite) and lint (npm run lint, exit 0), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, exit 0, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, exit 0), WebGPU render check (npm run test:shaders:render:webgpu, 1/1 pass,temporal_diff=0.216246,is_no_animation=false,is_low_variety=false— run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwright Chromium bundle'svk_swiftshader_icd.json; the browser cache had been pruned, so Playwright browsers were reinstalled toPLAYWRIGHT_BROWSERS_PATH=<browser cache>— chromium-1243 for noisemaker, chromium-1234 for shade-mcp — and the MCP re-capture usednpm_config_cache=<npm cache>), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05) and 18 tools viatools/listin one stdio session, and the workedanalyzeEffectandcheckEffectStructurecalls witheffect_id: "synth/noise"in a second stdio session, both at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f(analyzeEffectreturns the lossy regex projection without error;checkEffectStructurereturnsstatus: "ok", passCount 1, no issues). CI evidence for the published source commit9322993(observed via the GitHub check-runs API in this pass): Shaders (Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release and library-release), JS tests (JS tests, JS lint), Verify docs asset paths, notify, and Release (Publish release, Build JS bundles, Build shader bundle, Build standalone Linux/Windows/macOS) — all success; the documentation-only commit8fe3ccacorrectly triggered only the Site workflow (push, success) per the repository's path-filtered workflow triggers. Updatedllms-full.txt(snapshot block advanced to Noisemaker93229933b102ba82e713402be19db57207698850, worked-instance audit extended across12b4d74..9322993, and the GAP-017 re-capture evidence recording theanalyzeEffectandcheckEffectStructureworked calls) and advanced this checkpoint together. Open gap count stands at 13 (GAP-017 narrowed repository-side at9322993; the upstream Shade definition parser remains a Shade-repository item). - 2026-09-27 — caught up through noisemaker
12b4d74fb4f28d5f00bb1dde107fa8673814d8b9/ shade-mcp00340b1(work queue item 619, jobledger-llms-contract): audited watched source roots across noisemaker range7443f6e6180300a45c5b97608459e5094504659d..12b4d74fb4f28d5f00bb1dde107fa8673814d8b9. The trigger's three observed delivery ranges (132d1bf..c2252f0,c2252f0..e73a44a,e73a44a..12b4d74) are linear;132d1bfis the prior entry's documentation-only checkpoint advance, so the checkpoint-to-HEAD audit plus the prior entry cover every delivered commit with no gap. The range is three commits:c2252f0(GAP-015 —shaders/tests/image-metrics.jsmirrors the vendored metric implementations and addsauditMetricImplementationEquivalence(), with regressions inshaders/tests/test_image_metrics.js),e73a44a(GAP-014 — the harnessrenderEffectFramewrapper (shaders/tests/test-harness.js) warms up its frames before pausing on explicit-time requests, pinned by the mirrorshaders/tests/frame-warmup.jswith regressions inshaders/tests/test_frame_warmup.js), and12b4d74(GAP-016 engine change —preflightEffect(definition, capabilities, shaders)inshaders/src/runtime/preflight.jsreports per-backend authorability, predicted MRT format demotions, and predictedmaxTextureSizeclamps before compilation;Pipeline.preflight(capabilities?)exposes it over the pipeline's own graph andPipeline.mrtFormatBytes()now delegates to the sharedmrtFormatBytes()so prediction and runtime stay in lockstep; regressions inshaders/tests/test_preflight.jsregistered innpm run test:shaders:lang). Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(git ls-remote origin main==00340b1; no release newer thanv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f). Shade's parsers, analysis, knowledge, and browser tools consume none of the new surfaces — grep of Shadesrc/and the vendoredvendor/shade-mcp/tree finds no reference topreflightEffect,mrtFormatBytes, or the new test modules; the browser tools compute their own metrics from viewer canvas globals and never import the repository's harness wrappers — so no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged. ThemrtFormatBytes()delegation is behavior-preserving (the shared implementation is byte-for-byte the former switch). Verified four identities: Noisemaker source12b4d74fb4f28d5f00bb1dde107fa8673814d8b9, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/byte-identical to the releasev0.2.3tarball (shade-mcp-dist.tar.gz, re-downloaded in this pass, sha2564256ea5c695f15b3eec292f599a1ae1aada03a2628e33db8b3c9864a6b11f93f, diffed forharness/,ai/,formats/,analysis/; the vendor tree is unchanged across the audited range). Validation battery on the exact pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 8 suites, 200 tests, 0 failures, including the GAP-014test_frame_warmup.js, GAP-015test_image_metrics.js, and GAP-016test_preflight.jssuites) and lint (npm run lint, exit 0), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, exit 0, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, exit 0), WebGPU render check (npm run test:shaders:render:webgpu, 1/1 pass,temporal_diff=0.216246,is_no_animation=false,is_low_variety=false— run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwright Chromium bundle'svk_swiftshader_icd.json), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Playwright browsers were installed toPLAYWRIGHT_BROWSERS_PATH=<browser cache>(noexec$HOMEtmpfs; chromium-1243 for noisemaker, chromium-1234 for shade-mcp) and the MCP re-capture usednpm_config_cache=<npm cache>. Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and a workedcheckEffectStructurecall witheffect_id: "synth/noise"(statusok, passCount 1, no issues) from one stdio session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f. CI evidence for the published source commits (observed via the GitHub check-runs API in this pass): each ofc2252f0,e73a44a, and12b4d74ran Shaders (Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release and library-release), JS tests (JS tests, JS lint), Verify docs asset paths, notify, and Release (Publish release, Build JS bundles, Build shader bundle, Build standalone Linux/Windows/macOS) — all success. Deployment: https://noisemaker.app/deployment-meta.json servesgit_hash: 12b4d74fb4f28d5f00bb1dde107fa8673814d8b9at the time of the audit (the deployment then still served this checkpoint-advance commit's documentation predecessor, since the checkpoint commit itself was not yet published). Post-publication delivery state, verified after the checkpoint-advance commit was pushed: https://noisemaker.app/deployment-meta.json servesgit_hash: ec457c2eec695427fdbf026bd5ce5db04456a151and https://noisemaker.app/llms-full.txt serves the advanced contract whose snapshot block pins Noisemaker12b4d74fb4f28d5f00bb1dde107fa8673814d8b9. Open gap count stands at 13 (GAP-009 closed atb35361eand GAP-016 closed repository-side; GAP-014 and GAP-015 narrowed repository-side, the upstream Shade verbs remain Shade-repository items). Updatedllms-full.txt(snapshot block, worked-instance note extended across7443f6e..12b4d74, re-capture date, open-gap enumeration corrected to the 13 register rows still open — GAP-009's closed row was wrongly still enumerated — and the post-publication deployed-contract evidence) and advanced this checkpoint together. - 2026-09-27 — caught up through noisemaker
7443f6e6/ shade-mcp00340b1(work queue item 610, jobledger-llms-contract): audited watched source roots across noisemaker range9f85687d1bafc445dcd38e28cf5f0c6dfba562f8..7443f6e6180300a45c5b97608459e5094504659d. The trigger's forced start403c2a4is the prior entry's source tip and407eb7ais its documentation-only checkpoint advance, so the checkpoint-to-HEAD audit plus the prior entry cover every delivered commit with no gap. The range is two commits, both confined to the repository's test-harness layer:7dc0f56(GAP-011 —shaders/tests/uniform-deltas.jsexportsUNIFORM_RESPONSE_THRESHOLD(0.002) and re-measures every testable uniform in the live pipeline with per-uniform{name, default_value, test_value, luma_diff, max_channel_diff, responds}deltas; the harness--uniformsrun reports them and cross-checks the upstream verdicts viaauditUniformResponsiveness(), informationally only, keeping the upstream outer-status semantics and the GAP-010 aggregate; regressions inshaders/tests/test_uniform_deltas.jsregistered inscripts/run-js-tests.js) and7443f6e(GAP-012 — the harnessrenderEffectFrameWebGPU path reads the render surface through the backend's asyncreadPixels(textureId), returning the full ImageMetrics shape plus the GAP-009 additive metrics, pinned by the auditable mirrorshaders/tests/frame-readback.js(renderSurfaceCandidateIds()/isValidPixelRead()/readRenderSurfacePixels()) with regressions inshaders/tests/test_frame_readback.js). No engine, effects, viewer, catalog,.mcp.json, or vendor changes:git logover the watched roots shows exactly these two commits. Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(git ls-remote origin main==00340b1; no release newer thanv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f). Shade's parsers, analysis, knowledge, and browser tools consume none of the new modules — they are repository-internal (shaders/tests/), referenced only byshaders/tests/test-harness.jsandscripts/run-js-tests.js, and neither the vendored bundle nor the Shadesrc/tree references them — so no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged. Verified four identities: Noisemaker source7443f6e6180300a45c5b97608459e5094504659d, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/byte-identical to the releasev0.2.3tarball (shade-mcp-dist.tar.gz, re-downloaded in this pass and diffed forharness/,ai/,formats/,analysis/; the vendor tree is unchanged across the audited range). Validation battery on the exact pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 200 tests, 0 failures, including the GAP-011test_uniform_deltas.jsand GAP-012test_frame_readback.jssuites) and lint (npm run lint, exit 0), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, exit 0, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, 1/1 pass,temporal_diff=0.216246), WebGPU render check (npm run test:shaders:render:webgpu, 1/1 pass,temporal_diff=0.216246— run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwright Chromium bundle'svk_swiftshader_icd.json), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Playwright browsers were installed toPLAYWRIGHT_BROWSERS_PATH=<browser cache>(noexec$HOMEtmpfs; chromium-1243 for noisemaker, chromium-1234 for shade-mcp) and the MCP re-capture usednpm_config_cache=<npm cache>. Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and a workedcheckEffectStructurecall witheffect_id: "synth/noise"(statusok, passCount 1, no issues) from one stdio session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f. CI evidence for the published source commits:7dc0f56ran Shaders (36281900855: Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release and library-release), JS tests (36281900856: JS tests, JS lint), Verify docs asset paths (36281900804), notify (36281900825), and Release (36282108985: Publish release, Build JS bundles, Build shader bundle, Build standalone Linux/Windows/macOS) — all success;7443f6eran Shaders (36286368540: Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release and library-release), JS tests (36286368505: JS tests, JS lint), Verify docs asset paths (36286368503), notify (36286368515), and Release (36286557153: Publish release, Build JS bundles, Build shader bundle, Build standalone Linux/Windows/macOS) — all success. Deployment: https://noisemaker.app/deployment-meta.json servesgit_hash: 7443f6e6180300a45c5b97608459e5094504659d; the published contract at that deployment still pins9f85687din its snapshot block because this checkpoint-advance commit is documentation-only and not yet published. Open gap count stands at 15 (GAP-011 and GAP-012 narrowed repository-side; the upstream Shade tools' returned objects remain Shade-repository items). Updatedllms-full.txt(snapshot block, worked-instance note extended across9f85687d..7443f6e) and advanced this checkpoint together. - 2026-09-26 — caught up through noisemaker
9f85687d/ shade-mcp00340b1(work queue item 605, jobledger-llms-contract): audited watched source roots across noisemaker range0ac5250052e2b2e683f086959451c3bad8369a68..9f85687d1bafc445dcd38e28cf5f0c6dfba562f8, which covers the trigger's forced start403c2a4bf2cb56307448ea2fc1d6fa3cd74b7d6e—403c2a4is the prior entry's source tip and0ac5250is the documentation-only checkpoint-advance commit above it, so the checkpoint-to-HEAD audit plus the prior entry cover every delivered commit with no gap. The range is two commits:9f85687(GAP-010aggregateUniformResponsiveness()inshaders/tests/uniform-status.js, the--strict-uniformsopt-in gate inshaders/tests/test-harness.js, and regressions inshaders/tests/test_uniform_status.jsregistered inscripts/run-js-tests.js) and7730ea4(docs-only llms-full.txt prose). Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(upstreammain==00340b1; no release newer thanv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f). The new noisemaker module consumes none of Shade's surfaces — it reclassifies the vendoredtestUniformResponsiveness()result shape ({status, tested_uniforms, details}withname:pass/:fail/:errorentries), verified againstvendor/shade-mcp/harness/index.js, and Shade's parsers, analysis, knowledge, and browser tools consume none of the new module — so no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged. Verified four identities: Noisemaker source9f85687d1bafc445dcd38e28cf5f0c6dfba562f8, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/byte-identical to the releasev0.2.3tarball (shade-mcp-dist.tar.gz, re-extracted in this pass and diffed forharness/,ai/,formats/,analysis/; the vendor tree is unchanged across the audited range). Validation battery on the exact pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, exit 0, zero failures, including the GAP-010test_uniform_status.jssuite) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, all checks pass, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, exit 0), WebGPU render check (npm run test:shaders:render:webgpu, 1/1 pass — run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwright Chromium bundle'svk_swiftshader_icd.json;synth/noise→temporal_diff=0.216246,is_no_animation=false,is_low_variety=false), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjsfrom the Shade checkout, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Playwright browsers were installed toPLAYWRIGHT_BROWSERS_PATH=<browser cache>(noexec$HOMEtmpfs; chromium-1243 for noisemaker, chromium-1234 for shade-mcp) and the MCP re-capture usednpm_config_cache=<npm cache>. Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and a workedcheckEffectStructurecall witheffect_id: "synth/noise"(statusok, passCount 1, no issues) from one stdio session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f. CI evidence for the published source commits:9f85687ran Release (36275489676), Shaders (36275251110), JavaScript (36275251057), Site (36275251035), Downstream (36275251021), and Docs site (36275251053) — all success;7730ea4ran Site (36276274476, success) and is docs-only. Deployment: https://noisemaker.app/deployment-meta.json servesgit_hash: 7730ea4aba56ab3101b8eac125a21361c2ff0ce8; the published contract at that deployment still pins403c2a4in its snapshot block because this checkpoint-advance commit is documentation-only and not yet published. Open gap count stands at 15 (GAP-010 narrowed repository-side; the upstream Shade tool's outer status remains a Shade-repository item). Updatedllms-full.txt(snapshot block, worked-instance note extended across403c2a4..9f85687) and advanced this checkpoint together. - 2026-09-26 — caught up through noisemaker
403c2a4/ shade-mcp00340b1(work queue item 601, jobledger-llms-contract): audited watched source roots across noisemaker rangea651c075..403c2a4(covering the trigger's8eeb7b5a..403c2a4delivery;8eeb7b5is a linear ancestor of the prior checkpointa651c075, verified withgit merge-base --is-ancestor, so the checkpoint-to-HEAD audit plus the prior entry covers every delivered commit with no gap). The range is four commits:66b8ce7(prior checkpoint advance),b35361e(GAP-009 engine change — additivetemporal_diff,is_no_animation,is_low_varietymetrics in the repository's test-harnessrenderEffectFramewrapper plus the--low-varietyopt-in gate),19fdcb5(GAP-009 closure docs), and403c2a4(GAP-008 engine change —predictReplacement()/preflightinshaders/src/lang/transform.jswith the read-onlygetParamAliases()inshaders/src/lang/paramAliases.js). Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(upstreammain==00340b1; no release newer thanv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f); Shade's parsers, analysis, knowledge, and browser tools consume none of the new surfaces —src/tools/browser/render.tscomputes its own metrics from viewer canvas globals and never imports the repository's harness wrapper, and no Shade tool callsgetCompatibleReplacements()/replaceEffect()— so no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged. Contract re-audit: updated the Compatibility-and-mutation section's typed grammar for the additivepredictions/blockedfields andpreflight/manifestoptions, the enumerated rejection strings (Replacement preflight failed: ...), the two stale GAP-008 references in the Diagnose/Validate narrative, the Compatibility-and-mutation matrix cell (now cites GAP-024 only), the GAP-008 register row (now cites the machine verification at403c2a4), and the worked-instance note (extended toa651c075..403c2a4with GAP-008/009 added to its range-change list); the GAP-009 register row and Rendered-output matrix cell were closed in-band by19fdcb5and verified against source. Verified four identities: Noisemaker source403c2a4bf2cb56307448ea2fc1d6fa3cd74b7d6e, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/byte-identical to the releasev0.2.3tarball (shade-mcp-dist.tar.gz, re-extracted and diffed forharness/,ai/,formats/,analysis/in this pass; the vendor tree is unchanged across the audited range). Validation battery on the exact pair, with the environment gaps closed as recorded: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 8 suites, 200 tests, 0 failures, including the GAP-008 preflight and GAP-009 frame-metrics regressions) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, all checks pass, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, pass, including the known WebGPU-skip intest_external_texture_upload), WebGPU render check (npm run test:shaders:render:webgpu, 1/1 pass — run withSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESat the Playwright Chromium bundle'svk_swiftshader_icd.json;synth/noise→temporal_diff=0.216246,is_no_animation=false,is_low_variety=false, matching the GAP-009 row's in-browser observation), and the live browser smoke test (NOISEMAKER=<noisemaker checkout> node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Both repositories' Playwright browsers were installed toPLAYWRIGHT_BROWSERS_PATH=<browser cache>(noexec$HOMEtmpfs; chromium-1243 for noisemaker, chromium-1234 for shade-mcp) and the MCP re-capture usednpm_config_cache=<npm cache>. Re-captured MCP initialization (servershade-mcpversion0.2.3, protocol2024-11-05), 18 tools viatools/list, and a workedcheckEffectStructurecall witheffect_id: "synth/noise"(statusok, passCount 1, no issues) from one stdio session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f. CI evidence for the published source commits: the range tip403c2a4ran Release (36263379194), Shaders (36263149990: Shader tests, GPU tests, Bundle shaders, Dispatch static-site-release and library-release), Downstream (36263149985), Site (36263150004), and Docs site (36263149987) — all success;b35361ehas no exact-commit runs (pushed inside the burst whose tip19fdcb5ran Release 36261105261, Downstream 36260869750, Docs site 36260869768, Site 36260869766, JavaScript 36260869765, and Shaders 36260869790 — all success), and19fdcb5is that tip. Deployment: https://noisemaker.app/deployment-meta.json servesgit_hash: 403c2a4bf2cb56307448ea2fc1d6fa3cd74b7d6e; the published contract at that deployment still pinsa651c075in its snapshot block because this checkpoint-advance commit is documentation-only and not yet published. Open gap count stands at 15 (GAP-008 resolved; a Shade MCP preflight verb remains a Shade-repository item, not a register entry). Updatedllms-full.txt(snapshot block, Compatibility-and-mutation section, Diagnose rejection strings, matrix cell, GAP-008 row, worked-instance note) and advanced this checkpoint together. - 2026-09-26 — caught up through noisemaker
a651c075/ shade-mcp00340b1(work queue item #570, jobledger-llms-contract): audited watched source roots across noisemaker range5e52a2a2..a651c075, which closes work queue item #570's three observed delivery ranges (27590caa..8eeb7b5a,428ea29b..9574362,9574362..6a0af04) — the trigger's forced start4891b995is a linear ancestor of27590caa, so trigger range4891b995..8eeb7b5aand this checkpoint-to-HEAD audit together cover every delivered commit with no gap. Engine drift in the range:fa83eeab(GAP-005 expanded pass-field propagation andPipeline.resolvePassViewport()),6113da00(GAP-006texturePoolingopt-in plus queryablePipeline.getResourcePlan()),95743621(viewport-write pooling guard), andf83a427e(GAP-007 structuredShaderDiagnosticunion); the remaining commits are documentation, ledger, and record updates only. Shade-side audit: upstreamnoisefactorllc/shade-mcpand the local checkout are unchanged at00340b1(upstreammain==00340b1; no release newer thanv0.2.3/cbcab33363851016f65391fbb9ef71d66729c07f), Shade's parsers, analysis, knowledge, and browser tools consume none of the new Noisemaker surfaces, andShaderDiagnosticpasses the legacy raw detail string tosuper(detail)soerr.messageand theerr.detail || err.messagefallbacks reach the Shade browser tool wrappers byte-identical — no integration-code change or new Shade regression was required, and the public tool result shapes are unchanged. Verified four identities: Noisemaker sourcea651c075bb2848b584b2bf2484f5f8a0db754b0c, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Validation battery on the exact pair: Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, all suites pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via the vendored harness (npm run test:shaders:structure, all checks pass, 1258 documented parameters across 200 effects), WebGL2 render check (npm run test:shaders:render:webgl2, pass) and WebGPU render check (npm run test:shaders:render:webgpu, 1/1 pass — run with Chromium's bundled SwiftShader Vulkan ICD selected viaSHADE_SWIFTSHADER=1andVK_ICD_FILENAMES/VK_DRIVER_FILESpointing at the Playwright Chromium bundle'svk_swiftshader_icd.json;test_external_texture_uploadstill skips its WebGPU assertion in headless), and the live browser smoke test (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import from asetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2024-11-05), 18 tools viatools/list, and a workedcheckEffectStructurecall witheffect_id: "synth/noise"(statusok, passCount 1, no issues) from one session at the tested immutable pincbcab33363851016f65391fbb9ef71d66729c07f. CI evidence: exact-commit check runs do not exist forfa83eeab,6113da00, orf83a427e(they were pushed in one burst and CI ran at the tip); the published range tip6a0af04d3c4f345ffab5e9f8e54e532216b4cdaaran the full battery — Publish release, Build JS bundles, Build shader bundle, Bundle shaders, Build standalone (Linux/Windows/macOS), GPU tests, Shader tests, JS tests, JS lint, Dispatch static-site-release, Verify docs asset paths, notify — all success; the docs pass01e9d620passed Dispatch static-site-release, Verify docs asset paths, and notify;a651c075is a LEDGER-only commit (auto-merge only, outside the site workflow's push paths). Deployment: https://noisemaker.app/llms-full.txt serves the contract including the GAP-005/006/007 closures. Updatedllms-full.txt: snapshot block advanced toa651c075/00340b1, the GAP-006 and GAP-007 "pending publication" wording replaced with the6a0af04dCI evidence, the worked-instance note replaced with the live pin re-capture, and the open-gap count corrected to 16; advanced this checkpoint together. - 2026-09-25 — caught up through noisemaker
5e52a2a2/ shade-mcp00340b1: audited watched source roots across noisemaker range69d83b80..5e52a2a2(covering work queue item #551 trigger4891b995..2f47612cthrough HEAD). Commitsa021a283,62eb56fa, and2f47612cimplemented GAP-004 authorable mipmaps/persistent/3D filter texture policies across WebGL2 and WebGPU backends, compiler, and pipeline. Commit85ded3a6closed GAP-004 with verified publication evidence for2f47612c(review 55cfba6d-bd00-477d-9ee1-f19ddf6fade9; Release v1.0.182 run 36173647198, Shaders 36172741063, Site 36172741094, Downstream 36172741064, Docs site 36172741147, JavaScript 36172741121). Commit63349a7dretired per-push snapshot releases. Commitsc6bc8e17and5e52a2a2advanced Documentation checkpoints and recorded docs deployment. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source5e52a2a2fcaeb3cd540e7bdc0328a2a009116ff5, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 19 entries (GAP-004 closed). Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, all suites pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (npm run test:shaders:structure, 206/206 pass, 1258 parameters), WebGL2 and WebGPU render checks (npm run test:shaders:render:webgl2andnpm run test:shaders:render:webgpu), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import fromsetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2024-11-05), 18 tools viatools/list, and worked tool callcheckEffectStructurewitheffect_id: "synth/noise". Updatedllms-full.txtsnapshot block and advancedLEDGER.mdcheckpoint together. - 2026-09-25 — caught up through noisemaker
69d83b80/ shade-mcp00340b1: audited watched source roots across noisemaker range5f4b7c43..69d83b80(covering work queue item #535 trigger4891b995..9d3474dfthrough HEAD). Commitsba87ffaeand9d3474dfimplemented GAP-003 runtime effect definition validation contract (validateEffectDefinitioninshaders/src/runtime/effect-validator.js) with an explicit-denominator 210/210 corpus gate wired into test suites. Commit0bd09d00recorded GAP-027 verified publication closure evidence. Commits7a643033andfa4b2f02closed GAP-003 with verified publication evidence and alignedllms-full.txtvalidator cross-references. Commits286ccf68and69d83b80advanced Documentation checkpoints throughfa4b2f02. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source69d83b80e09227195fa9810e37b96dd594713ac3, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 20 entries (GAP-003 and GAP-027 closed). Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, all suites pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (npm run test:shaders:structure, 206/206 pass, 1258 parameters), WebGL2 and WebGPU render checks (npm run test:shaders:render:webgl2andnpm run test:shaders:render:webgpu), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import fromsetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2024-11-05), 18 tools viatools/list, and worked tool callcheckEffectStructurewitheffect_id: "synth/noise". Updatedllms-full.txtsnapshot block and advancedLEDGER.mdcheckpoint together. - 2026-09-25 — caught up through noisemaker
5f4b7c43/ shade-mcp00340b1: audited watched source roots across noisemaker range60b90af3..5f4b7c43(covering work queue item #516 trigger4891b995..240740ddthrough HEAD). Commit66b2c721implemented GAP-027 subchain-argument validation contract (P008 unknown/discarded key, P009 duplicate key, P010 missing comma separator, andsubchainArguments: 'strict'opt-in rejection). Commit240740dd(v1.0.180) registered differential gate baseline against3886ecfa(0 regressions). Commits5a58a325andc85db3f0recorded published contract and gap status. Commit5f4b7c43advanced the Documentation checkpoint through240740dd. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source5f4b7c43a0201ab197cd1b27a66e6217b776bf57, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 22 entries (GAP-027 documented and active). Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, all suites pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (npm run test:shaders:structure, 206/206 pass, 1258 parameters), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import fromsetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2024-11-05), 18 tools viatools/list, and worked tool callcheckEffectStructurewitheffect_id: "synth/noise". Updatedllms-full.txtsnapshot block and advancedLEDGER.mdcheckpoint together. - 2026-09-24 — caught up through noisemaker
60b90af3/ shade-mcp00340b1: audited watched source roots across noisemaker range13853dff..60b90af3(covering work queue item #497 triggers5b81e04f..4891b995through HEAD). Commit4891b995exposed structured call-form and expectation diagnostics (P007/P001), closing GAP-002 parser throw sites. Commit9fa1a221derived parser diagnostic coordinates from source positions. Commitfca611fdderived numeric-coercion coordinates from array positions. Commits8a21c9caandbbdeb56cdocumented verified GAP-002 closure provenance and publication evidence indocs/plans/active-framework-gap.mdandllms-full.txt. Commit60b90af3advanced the Documentation checkpoint throughbbdeb56c. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source60b90af373bceaf62060346d873d4f66232c7173, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 22 entries (GAP-002 closed, GAP-027 active). Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 122/122 pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (npm run test:shaders:structure, 206/206 pass, 1258 parameters), WebGL2/WebGPU render checks (npm run test:shaders:render:webgl2andnpm run test:shaders:render:webgpu), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import fromsetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2025-11-25), 18 tools viatools/list, and worked tool callcheckEffectStructurewitheffect_id: "synth/noise". Updatedllms-full.txtsnapshot block and advancedLEDGER.mdcheckpoint together. - 2026-09-24 — caught up through noisemaker
13853dff/ shade-mcp00340b1: audited watched source roots across noisemaker range823bbff1..13853dff(covering work queue item #475 triggers5b81e04f..13fa8b54through HEAD). Commit13fa8b54narrowed GAP-002 by exposing structured parser diagnostics (P006) for explicit subchain validation sites (non-string arguments, missing body dot, empty body), preserving permissive argument keys/separators/duplicates and shared-expectation precedence. Commitsc7e9e09d(AI development contract checkpoint advance),9928905a(Documentation checkpoint advance),741333cb(GAP-002 subchain validation evidence docs),30c47030(site: white ink on magenta surfaces), and13853dff(Documentation checkpoint advance) contained site script, documentation, and contract checkpoint updates with zero engine drift. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source13853dff08f583c14edd3536774b19e41eda8364, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 23 entries (GAP-002 narrowed). Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 79 parser tests + 91 diagnostic location tests + all integration tests pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (npm run test:shaders:structure, 206/206 pass, 1258 parameters), WebGL2/WebGPU render checks (npm run test:shaders:render:webgl2andnpm run test:shaders:render:webgpu), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import fromsetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2025-11-25), 18 tools viatools/list, and worked tool callcheckEffectStructurewitheffect_id: "synth/noise". Updatedllms-full.txtsnapshot block, DSL diagnostic description, and diagnostic code table, and advancedLEDGER.mdcheckpoint together. - 2026-09-24 — caught up through noisemaker
823bbff1/ shade-mcp00340b1: audited watched source roots across noisemaker range7a54ab38..823bbff1(covering work queue item #453 triggers5b81e04f..c9ee8a04through HEAD). Commitc9ee8a04advanced AI development contract checkpoint for GAP-002 (P005). Commits285e50f5(site header strip program pixel density/AA ink),65ff358f(active-framework-gap docs reconciliation for GAP-002), and823bbff1(Documentation checkpoint advance) contained site script and documentation updates with zero engine drift across watched source roots (shaders/,demo/shaders/,.mcp.json,vendor/shade-mcp/). Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source823bbff1d17061d231cb0c7f5bf4527b3344abab, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 23 entries. Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 79 parser tests + all integration tests pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (npm run test:shaders:structure, 206/206 pass, 1258 parameters), WebGL2/WebGPU render checks (npm run test:shaders:render:webgl2andnpm run test:shaders:render:webgpu), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import fromsetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2025-11-25), and 18 tools viatools/list. Updatedllms-full.txtsnapshot block and advancedLEDGER.mdcheckpoint together. - 2026-09-23 — caught up through noisemaker
7a54ab38/ shade-mcp00340b1: audited watched source roots across noisemaker rangee11f0767..7a54ab38(covering work queue item #434 triggerse32a5a4a..5b81e04fthrough HEAD). Commit9b88e567optimizedclassicNoisedeck/glitchby guarding glitch, scanline, and snow work when amounts are zero and attested WebGL2/WebGPU pixel parity. Commit5b81e04fimplemented output sink deferral via optionaldeferRender()method on sinks, tracked inrenderer.deferredFrameCount, with error isolation incrementingstats.failed. Commits7d0be45candcc1ba268advanced documentation and ledger checkpoints. Commit7a54ab38narrowed GAP-002 by exposing structured parser diagnostics (P005) for reachable output validation sites (invalid render targets, expression-context writes, invalid write surfaces, invalid write3d texture/geo arguments). Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source7a54ab3856d71ce037f11215572e8137ad4f53c0, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 23 entries (GAP-002 narrowed). Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 79 parser tests + all integration tests pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (npm run test:shaders:structure, 206/206 pass), WebGL2/WebGPU render checks (npm run test:shaders:render:webgl2andnpm run test:shaders:render:webgpu), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK:compileEffect,renderEffectFrame, module import fromsetContentpage). Re-captured MCP initialization, server info (shade-mcp 0.2.3), protocol (2024-11-05), and 18 tools viatools/list. Updatedllms-full.txtsnapshot block,Sinkinterface, and Act/Validate subsections for sink deferral, and advancedLEDGER.mdcheckpoint together. - 2026-09-23 — caught up through noisemaker
e11f0767/ shade-mcp00340b1: audited watched source roots across noisemaker range9e188535..e11f0767(covering work queue item #415 trigger44bc4ed4..e11f0767). Commitse32a5a4a,731b76e4,0766743e, and32f818e7narrowed GAP-002 by exposing structured parser diagnostics for automation arguments (P003) and search directives (P004) with token coordinates and null spans while retaining legacy errors, updatingllms-full.txtanddocs/plans/active-framework-gap.md. Commitse2874c85and3a32b198preserved chain- and node-scoped texture sizes and pass-level precedence duringpipeline.setUniform(). Commitsfde2ea40ande11f0767optimizedclassicNoisedeck/noiseto skip refraction when zero and attested GLSL/WGSL pixel parity with refraction active. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker sourcee11f0767993ae77eab6f3e353c942cf721aa9c90, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 23 entries. Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 63 tests pass) and lint (npm run lint), Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (206/206 pass), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK). Advancedllms-full.txtsnapshot block andLEDGER.mdcheckpoint together. - 2026-09-22 — caught up through noisemaker
9e188535/ shade-mcp00340b1: audited watched source roots across noisemaker rangead60cc9b..9e188535(covering work queue item #395 triggere5bd2013..44bc4ed4through HEAD). Commits36a519a2,31ab014f, andae4e3302added pruned isosurface mode torenderLandscape3dwith coordinate fixes. Commits44bc4ed4anddd38fdd2narrowed GAP-002 by exposing structured parser expectation diagnostics (P001/P002 in parserexpect()) with token coordinates and null spans while retaining legacy errors, updatingllms-full.txtanddocs/plans/active-framework-gap.md. Commits1d581ffa,eb46047b, and9e188535advanced ledger and docs checkpoints. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker source9e188535a1736780f5318d5412f0154f4209e8b1, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 23 entries. Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 65 tests pass) and lint, Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure check via vendored harness (206/206 pass), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK). Advancedllms-full.txtsnapshot block andLEDGER.mdcheckpoint together. - 2026-09-22 — caught up through noisemaker
ad60cc9b/ shade-mcp00340b1: audited watched source roots across noisemaker rangee5bd2013..ad60cc9b(covering work queue item #375 triggere5bd2013..643b2be1through HEAD). Commit643b2be1narrowed GAP-002 by attaching structured JSON-safeerror.diagnostic(L001-L004) to thrownSyntaxErroron DSL lexer failures inshaders/src/lang/lexer.jsanddiagnostics.js, preserving legacy error messages, types, and successful token output. Commits52ac841b,b0364da0,a0ff705a,2779b409, andad60cc9brecorded gap verifications, docs and contract ledger advances. Shade MCP source unchanged at00340b1. Verified four identities: Noisemaker sourcead60cc9b62aa3b5f0674c590880898694ede5ddf(source through2779b409fc4cfcb923cfc67c771d80ad398cd2a3), Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 23 entries. Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 64 tests pass) and lint, Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), structure-only check via vendored harness (206/206 pass), and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK). Advancedllms-full.txtsnapshot block andLEDGER.mdcheckpoint together. - 2026-09-22 — caught up through noisemaker
e5bd2013/ shade-mcp00340b1: audited watched source roots across noisemaker range50b8f909..e5bd2013. Commit68d37721closed GAP-022 by excluding compiled nodes markedbuiltin: truefrom mutation introspection (listSteps,replaceEffect,getCompatibleReplacements) inshaders/src/lang/transform.js. Commite5bd2013narrowed GAP-002 by preserving source columns from parserloc.colintolocation.columninshaders/src/lang/validator.js. In shade-mcp across rangecbcab33..00340b1, commit00340b1documented paired Noisemaker compatibility and delivery checks inCLAUDE.md, with zero runtime, tool, or schema changes. Verified four identities: Noisemaker sourcee5bd2013087e54d53841db8c45a54f973aaa5174, Shade MCP source00340b148e109464b1a87d89ff29fc7622d384c9,.mcp.jsonpinned tocbcab33363851016f65391fbb9ef71d66729c07f, andvendor/shade-mcp/delivered from releasev0.2.3(cbcab33363851016f65391fbb9ef71d66729c07f). Open gap count stands at 23 entries. Verified Noisemaker non-parity JS tests (node scripts/run-js-tests.js --skip-parity, 64 tests pass) and lint, Shade MCP typecheck (npm run typecheck, 0 errors) and unit tests (npm test, 24 files / 157 tests pass), Shade MCP build and drop check, structure-only check via vendored harness, and live browser smoke test against Noisemaker viewer (NOISEMAKER=... node scripts/browser-smoke.mjs, all 3 checks OK). Advancedllms-full.txtsnapshot block andLEDGER.mdcheckpoint together. - 2026-09-21 — caught up through noisemaker
50b8f909/ shade-mcpcbcab33: audited watched source roots across noisemaker rangeea113f97..50b8f909. Commit50b8f909closed GAP-001 by enforcing DSL output surface rangeo0..o7inshaders/src/lang/lexer.js, throwing locatedSyntaxErrorbefore parsing, while preserving member segment access and other reference families. Added 6 unit tests inshaders/tests/test_output_surface_range.js. Open gap count stands at 24 entries. Shade MCP unchanged atcbcab33(18 tools, v0.2.3, protocol 2025-11-25). Verified non-parity JS test suite (node scripts/run-js-tests.js --skip-parity, 64 tests pass). Advancedllms-full.txtsnapshot block andLEDGER.mdcheckpoint together. - 2026-09-21 — caught up through noisemaker
ea113f97/ shade-mcpcbcab33: audited watched source roots across noisemaker rangebeabda38..ea113f97. Commit0139e958closed GAP-028 by accounting canceled pending frame-export queue frames asdropped. Commit7706a715/782f0726closed GAP-013 by pinning the Shade MCP package reference in.mcp.jsonto immutable commitcbcab33363851016f65391fbb9ef71d66729c07f. Commit2f855c9cremoved expired effectsbc,colorspace, andhs. Shade MCPcbcab33bumped version to 0.2.3 and migrated exemplar/catalog references toadjust(18 tools, v0.2.3, protocol 2025-11-25). Open gap count stands at 25 entries. Verified non-parity JS tests pass cleanly (57 tests, 15 nested automation tests, 4 docs tests, 1 mcp config test). Advancedllms-full.txtsnapshot block andLEDGER.mdcheckpoint together. - 2026-09-20 — caught up through noisemaker
beabda38/ shade-mcp088e1ef: audited watched source roots across noisemaker range2df19feb..beabda38. Commit6e0166ceclosed GAP-030 by enforcing backend format parity when reusing textures inpipeline.js. Commitbeabda38closed GAP-031 by requiring static integers 1..16 for legacy MIDI note mode channels invalidator.js. Updated traceability matrix inllms-full.txtto remove references to closed gaps (GAP-018, GAP-023, GAP-030, GAP-031). Shade MCP unchanged at088e1ef(18 tools, v0.2.2, protocol 2025-11-25). Verified non-parity JS tests pass cleanly (57 MIDI/audio parser tests, 15 nested automation tests, 4 docs tests). Advancedllms-full.txtsnapshot block andLEDGER.mdcheckpoint together. - 2026-09-19 — caught up through noisemaker
2df19feb(shade-mcp unchanged at088e1ef): audited watched source roots across noisemaker range0209609e..2df19feb. Commit2df19febadded borrowedVideoFramesupport inupdateTextureFromSourceon both WebGL2 and WebGPU backends (synchronous display dimension extraction, immediate queue submission without ImageBitmap conversion, synchronous caller release, and anamorphic scaling rejection on WebGL2). Updated texture surface contract inllms-full.txt. Shade MCP unchanged at088e1ef(18 tools, v0.2.2, protocol 2025-11-25). Verified Playwright VideoFrame upload tests (2/2 pass) and non-parity JS test suite pass cleanly. Advanced llms-full.txt snapshot block and LEDGER.md checkpoint together. - 2026-09-19 — caught up through noisemaker
0209609e/ shade-mcp088e1ef: audited watched source roots across noisemaker rangeead42a5d..0209609e(zero commits touched watched source roots; GAP-023 already documented as closed atf1d2b46a). In shade-mcp across range0a92bd83..088e1ef, single commit088e1efmodified CI workflow files only (.github/workflows/), with zero changes to runtime tools, schemas, dependencies, or server version (18 tools, v0.2.2, protocol 2025-11-25 unchanged). Re-audited worked effect transcript note. Verified non-parity JS tests pass cleanly. Advanced llms-full.txt snapshot block and LEDGER.md checkpoint together. - 2026-09-18 — caught up through noisemaker
ead42a5d(shade-mcp unchanged): audited watched source roots across range688c5146..ead42a5d. Single code commitf2506d21modifiedshaders/src/lang/transform.js, expanding starter-position detection inreplaceEffect(),listSteps(), andgetCompatibleReplacements()to recognize inline surface producers (registered starter effects with no pipeline predecessor flattened as a dependency of a surface parameter likeheightTex: noise()). Updated compatibility definitions and narrowed GAP-008 in the contract. Shade MCP remains at0a92bd83. Verified non-parity JS tests pass cleanly. Updated contract snapshot block and LEDGER.md checkpoint together. - 2026-09-17 — caught up through noisemaker
688c5146(shade-mcp unchanged): audited WebGPU frame export row-orientation fix (5ceb97baand688c5146). Documented that WebGPU frame export resolve inverts vertical orientation in the resolve shader (textureDimensions(sourceTexture).y - 1 - i32(position.y)) to match canvas presentation and WebGL2 parity. Verified non-parity JS tests and WebGPU frame export unit tests all pass cleanly. - 2026-09-15 — caught up through noisemaker
9a31314c(shade-mcp unchanged): re-audited the perspective/depth-sort/defocus/3D-landscape round's 7 commits touching the watched source roots. Narrowed GAP-005 —conditionsused to be on its uncopied-pass-field list;expander.jsnow copies it andPipeline.shouldSkipPass()consumes it at execution time, the mechanism this round's per-viewMode/blendModepass-cloning pattern relies on to select which cloned pass variant runs (name,viewport,clear,samplerTypes,typeremain uncopied). AddedPassSpec.definesto the typed grammar (undocumented before this pass): it does not land on the expanded pass object directly, but derives a__KEY_value-suffixed compiled-program variant merging effect- and pass-level compile-time defines. Documented that a numericPassSpec. uniformsvalue bypasses global lookup as a literal compile-time constant, thatevaluateAutomation()now roundsint-typed globals' resolved automation value, thatexpander.jsfollows volume/geometry surface dimensions throughwrite3d()/read3d()handoffs (exports, forward reads, repeated same-surface filters) instead of resetting to the 64 default, and that a custom vertex shader now receives the same#defineinjection as the fragment stage. Re-resolved the unpinned Shade MCP package to its current commit: still0a92bd83, no drift, so the MCP-side sections and worked-example transcript needed no re-capture — confirmed by source inspection that the workedsynth/testPatterneffect's own files are unchanged in this range and none of the round's expander/pipeline changes are reachable by an effect using none of those mechanisms. The full non-parity JS test suite passed. - 2026-09-07 — caught up through noisemaker
246ff57f/ shade-mcp0a92bd83: documented lossless vec4 formatting, CC/CC14, NRPN, pressure, bend, MPE selection, port inventories/lifecycle, default audio channels, and aggregate/raw cleanup. Narrowed GAP-031 to legacy note modes, extended GAP-032 to default channels, and closed GAP-018 after the tool descriptions stopped promising glob support. Rechecked changed-source engine and MCP gaps. Resolved the runtime mirror to the pinned Shade commit, built its locked dependencies, and captured the 0.2.2/2025-11-25 handshake, all 18 schemas, and eight worked calls in one session. Tool descriptions and error strings changed; argument types/defaults did not. The exact two-pass source graph reproduced, while the compile reports still demonstrate GAP-024. Noisemaker language/runtime and focused MIDI suites passed; Shade's 157 tests, typecheck, build, and standalone-drop checks passed. - 2026-09-04 — caught up through noisemaker
691eea16/ shade-mcp23258ca3: re-audited selected MIDI ports, selected audio device/channels, bipolar raw audio, recursive capture requirements, and eight-level nested automation across the changed parser, validator, unparser, external-input, and pipeline sources. Added the exact mixed-argument exception, selector validation/round-trip contract, runtime state resolution, nested-field ranges and deterministic phase integration, and host capture requirements. Opened GAP-031 for the unenforced MIDI channel range and GAP-032 because the built-in audio manager cannot populate selected-device or raw-ready state; rechecked the other changed-source gaps without closing them. Re-resolved the configured GitHub runtime to23258ca3, whose drift is README-only, and recaptured theshade-mcp/0.2.2/2025-11-25handshake and all 18 unchanged tool schemas in one fresh session. Recaptured all eight worked calls and reproduced the exact two-pass source graph. The returned responsiveness fields do not belong tosynth/testPattern, strengthening GAP-024's stale-graph finding rather than validating that response. - 2026-08-31 — caught up through noisemaker
a4701daf/ shade-mcpba407982: verified that Noisemaker's watched source roots are unchanged from the prior checkpoint, re-resolved the unpinned GitHub package to the exact Shade MCP commit, and recaptured theshade-mcp/0.2.2/2025-06-18handshake and all 18 tool signatures from the configured runtime. The tool names, input schemas, absent output schemas, and forbidden task support are unchanged. Audited the Shade MCP dependency/release changes and documented its build-time version injection plus standalone-drop handshake gate; its tests, typecheck, build, external dependency gate, and bare-drop check all passed. Rechecked every MCP-side gap; none closed. Recaptured the full eight-call worked transcript in the same0.2.2session; the seven deterministic responses were byte-for-byte unchanged, the FPS sample still passed its threshold, and the results continue to expose GAP-024 rather than proving end-to-end backend identity. The source-level worked program also reproduced its exact two-pass graph. - 2026-08-29 — caught up through noisemaker
c767e481/ shade-mcpac4c6ba1: re-audited the two watched device-limit commits and documented the expanded capability object, numeric volume-atlas clamping across graph, host, and UI paths, WebGL MRT budget probing/error cleanup, and ordered full-to-half-float MRT adaptation across WebGL2/WebGPU. Rechecked the changed-source evidence for GAP-001/004/005/006/007/016/026; none closed. Opened GAP-030 because MRT adaptation mutates graph formats without invalidating same-size reused backend textures. Reproduced the worked source graph and device-limit regression gates. Shade MCP did not move in this work queue range, so its handshake, 18 tool schemas, historical browser transcript, and MCP-side gaps remain pinned unchanged. - 2026-08-14 — caught up through noisemaker
f6b22ab3/ shade-mcpac4c6ba1: verified that no Noisemaker watched source root changed, re-resolved the unpinned MCP package, and recaptured theshade-mcp/0.2.1/2025-06-18handshake, all 18 tool schemas, the exact two-pass source graph, and the eight-call worked transcript. Re-audited the affected MCP contract sources and every MCP-side gap; documented the configurable browser/AI timeouts, headless/session lifecycle, restricted loopback/opaque-origin CORS, opt-in description image, refreshable effect index, and manifest invalidation, narrowed GAP-020 now that pixel parity also uses the sharedisErrorwrapper, and opened GAP-029 for invalidation racing an already in-flight index rebuild. - 2026-08-11 — caught up through noisemaker
e1feefa0/ shade-mcp346ee022: documented the renderer sink and bounded asynchronous frame export contracts across WebGL2/WebGPU, rechecked every changed-source gap, and opened GAP-028 for pending accepted frames canceled without a terminal queue result. Re-resolved the unpinned MCP package; recaptured theshade-mcp/0.1.4/2025-06-18handshake, all 18 tool schemas, and the eight-call worked transcript after the Node 22/SDK/Zod upgrades. - 2026-08-10 — caught up through noisemaker
7cc4894b/ shade-mcp3e531fc6: re-audited Noisemaker runtime drift; re-resolved the unpinned MCP package; recaptured theshade-mcp/0.1.4/2025-06-18handshake, all 18 tool signatures, and the worked transcript; narrowed GAP-020 for the new whole-callisErrormarker; closed GAP-025. - 2026-07-14 — contract instrumented (
dc67827b) at snapshot noisemaker75507112/ shade-mcp7fd0d975: nine surface sections, worked validated effect, 9×4 traceability matrix, 26-gap register. Audited clean through478989b6; checkpoint established at the contract's own snapshot.
- 2026-11-13 — completed delivery pair: Noisemaker
Last good source revision: 61e80cc4cc4fc40fa6c6396bd2f2da2e2ed0dc32.
The tracked AI contracts were independently audited against that source revision.
llms-full.txt:ec20487bac1532dda4b017328df86f2380fc43b0llms.txt:4571eb66007cf606c868b79e6d7103b3b39388f7
{
"version": 1,
"repository": "noisefactorllc/noisemaker",
"branch": "main",
"last_good": {
"revision": "61e80cc4cc4fc40fa6c6396bd2f2da2e2ed0dc32",
"contracts": [
{
"path": "llms-full.txt",
"sha": "ec20487bac1532dda4b017328df86f2380fc43b0"
},
{
"path": "llms.txt",
"sha": "4571eb66007cf606c868b79e6d7103b3b39388f7"
}
],
"references": [
{
"repository": "noisefactorllc/shade-mcp",
"branch": "main",
"revision": "e67a3b474a750c1f187c9b60d9da7a8964f060f9"
}
],
"verified_at": "2026-10-25T21:02:48.946Z",
"audit": {
"job_id": "11d484a0-9f4e-4e6e-b1ac-6e8b9f978bd9",
"review_id": "44e0a078-6136-448e-a0fc-c8e3cb4897e9",
"reviewer_session_id": "20261025_210119_0a5d5b"
}
}
}