<feed xmlns='http://www.w3.org/2005/Atom'>
<title>demo.git/training, branch main</title>
<subtitle>Vide-coded 64k demo system</subtitle>
<id>https://git.taar-o.com/demo.git/atom?h=main</id>
<link rel='self' href='https://git.taar-o.com/demo.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/'/>
<updated>2026-02-27T22:59:49Z</updated>
<entry>
<title>remove old files, add new training set</title>
<updated>2026-02-27T22:59:49Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-27T22:59:49Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=a1e2159b0ff2cb1ecf2c4bc1dc95bf576fda282b'/>
<id>urn:sha1:a1e2159b0ff2cb1ecf2c4bc1dc95bf576fda282b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor(cnn): rename cnn_effect to cnn_v1_effect for clarity</title>
<updated>2026-02-15T17:55:42Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-15T17:55:42Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=2f8810f303d06fe78dbec343553c3c97f93f9323'/>
<id>urn:sha1:2f8810f303d06fe78dbec343553c3c97f93f9323</id>
<content type='text'>
Renamed files and classes:
- cnn_effect.{h,cc} → cnn_v1_effect.{h,cc}
- CNNEffect → CNNv1Effect
- CNNEffectParams → CNNv1EffectParams
- CNNLayerParams → CNNv1LayerParams
- CNN_EFFECT.md → CNN_V1_EFFECT.md

Updated all references:
- C++ includes and class usage
- CMake source list
- Timeline (workspaces/main/timeline.seq)
- Test file (test_demo_effects.cc)
- Documentation (CLAUDE.md, PROJECT_CONTEXT.md, READMEs)

Tests: 34/34 passing (100%)
</content>
</entry>
<entry>
<title>archive(cnn): move CNN v1 to cnn_v1/ subdirectory</title>
<updated>2026-02-15T17:52:48Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-15T17:52:48Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=d4b67e2f6ab48ab9ec658140be4f1999f604559a'/>
<id>urn:sha1:d4b67e2f6ab48ab9ec658140be4f1999f604559a</id>
<content type='text'>
Consolidate CNN v1 (CNNEffect) into dedicated directory:
- C++ effect: src/effects → cnn_v1/src/
- Shaders: workspaces/main/shaders/cnn → cnn_v1/shaders/
- Training: training/train_cnn.py → cnn_v1/training/
- Docs: doc/CNN*.md → cnn_v1/docs/

Updated all references:
- CMake source list
- C++ includes (relative paths: ../../cnn_v1/src/)
- Asset paths (../../cnn_v1/shaders/)
- Documentation cross-references

CNN v1 remains active in timeline. For new work, use CNN v2 with
enhanced features (7D static, storage buffer, sigmoid activation).

Tests: 34/34 passing (100%)
</content>
</entry>
<entry>
<title>refactor(cnn): isolate CNN v2 to cnn_v2/ subdirectory</title>
<updated>2026-02-15T17:44:17Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-15T17:44:17Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=161a59fa50bb92e3664c389fa03b95aefe349b3f'/>
<id>urn:sha1:161a59fa50bb92e3664c389fa03b95aefe349b3f</id>
<content type='text'>
Move all CNN v2 files to dedicated cnn_v2/ directory to prepare for CNN v3 development. Zero functional changes.

Structure:
- cnn_v2/src/ - C++ effect implementation
- cnn_v2/shaders/ - WGSL shaders (6 files)
- cnn_v2/weights/ - Binary weights (3 files)
- cnn_v2/training/ - Python training scripts (4 files)
- cnn_v2/scripts/ - Shell scripts (train_cnn_v2_full.sh)
- cnn_v2/tools/ - Validation tools (HTML)
- cnn_v2/docs/ - Documentation (4 markdown files)

Changes:
- Update CMake source list to cnn_v2/src/cnn_v2_effect.cc
- Update assets.txt with relative paths to cnn_v2/
- Update includes to ../../cnn_v2/src/cnn_v2_effect.h
- Add PROJECT_ROOT resolution to Python/shell scripts
- Update doc references in HOWTO.md, TODO.md
- Add cnn_v2/README.md

Verification: 34/34 tests passing, demo runs correctly.

Co-Authored-By: Claude Sonnet 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>CNN v2: bilinear mip-level sampling and UI improvements</title>
<updated>2026-02-14T06:24:51Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-14T06:22:17Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=0f53ed1ed8ed7c07cd7ea8e88e21b5be5d5494e5'/>
<id>urn:sha1:0f53ed1ed8ed7c07cd7ea8e88e21b5be5d5494e5</id>
<content type='text'>
**CNN v2 Changes:**
- Replace point sampling with bilinear interpolation for mip-level features
- Add linear sampler (binding 6) to static features shader
- Update CNNv2Effect, cnn_test, and HTML tool

**HTML Tool UI:**
- Move controls to floating bottom bar in central view
- Consolidate video controls + Blend/Depth/Save PNG in single container
- Increase left panel width: 300px → 315px (+5%)
- Remove per-frame debug messages (visualization, rendering logs)

**Technical:**
- WGSL: textureSample() with linear_sampler vs textureLoad()
- C++: Create WGPUSampler with Linear filtering
- HTML: Change sampler from 'nearest' to 'linear'

handoff(Claude): CNN v2 now uses bilinear mip-level sampling across all tools
</content>
</entry>
<entry>
<title>Replace hard clamp with sigmoid activation in CNN v2</title>
<updated>2026-02-14T01:12:12Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-14T01:12:12Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=043044ae7563c2f92760c428765e35b411da82ea'/>
<id>urn:sha1:043044ae7563c2f92760c428765e35b411da82ea</id>
<content type='text'>
Fixes training collapse where p1/p2 channels saturate due to gradient
blocking at clamp boundaries. Sigmoid provides smooth [0,1] mapping
with continuous gradients.

Changes:
- Layer 0: clamp(x, 0, 1) → sigmoid(x)
- Final layer: clamp(x, 0, 1) → sigmoid(x)
- Middle layers: ReLU unchanged (already stable)

Updated files:
- training/train_cnn_v2.py: PyTorch model activations
- workspaces/main/shaders/cnn_v2/cnn_v2_compute.wgsl: WGSL shader
- tools/cnn_v2_test/index.html: HTML validation tool
- doc/CNN_V2.md: Documentation

Validation:
- Build clean (no shader errors)
- 34/36 tests pass (2 unrelated script tests fail)
- 10-epoch training: loss 0.153 → 0.088 (good convergence)
- cnn_test processes images successfully

Breaking change: Old checkpoints trained with clamp() incompatible.
Retrain from scratch required.

handoff(Claude): CNN v2 sigmoid activation implemented and validated.
</content>
</entry>
<entry>
<title>Streamline CNN v2 training pipeline output</title>
<updated>2026-02-14T00:36:30Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-14T00:36:30Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=ef091948ecb9bf83b71b28cb47d529732ad54c17'/>
<id>urn:sha1:ef091948ecb9bf83b71b28cb47d529732ad54c17</id>
<content type='text'>
- Add --quiet flag to export script (single-line summary)
- Compact validation output (all images on one line)
- Reduce noise: export 3 layers, 912 weights, 1904 bytes

Co-Authored-By: Claude Sonnet 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix CNN v2 training: always save final checkpoint, derive num_layers</title>
<updated>2026-02-14T00:33:37Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-14T00:33:37Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=4f107cc2d215a8bff69ea85eb10ee91920e797a3'/>
<id>urn:sha1:4f107cc2d215a8bff69ea85eb10ee91920e797a3</id>
<content type='text'>
- Always save final checkpoint after training completes
- Derive num_layers from kernel_sizes list when multiple values provided
- Add checkpoint validation in training pipeline script
- Quote shell variables when passing args to Python

Fixes issue where no checkpoint saved when epochs &lt; checkpoint_every.

Co-Authored-By: Claude Sonnet 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix --mix option: blend prev layer with static p4-p7, not p0-p3</title>
<updated>2026-02-14T00:04:07Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-14T00:01:52Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=1b760f3b413d28652965a51f629d3c2b8d33ce22'/>
<id>urn:sha1:1b760f3b413d28652965a51f629d3c2b8d33ce22</id>
<content type='text'>
Updated gen_identity_weights.py --mix mode to use static features
p4-p7 (uv_x, uv_y, sin20_y, bias) at channels 8-11 instead of
p0-p3 (RGB+D) at channels 4-7.

Before: 0.5*prev[i] + 0.5*static_p{i} (channels 4-7)
After:  0.5*prev[i] + 0.5*static_p{4+i} (channels 8-11)

Co-Authored-By: Claude Sonnet 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix CNN v2 static feature channel mapping (p4-p7 → channels 8-11)</title>
<updated>2026-02-14T00:00:52Z</updated>
<author>
<name>skal</name>
<email>pascal.massimino@gmail.com</email>
</author>
<published>2026-02-14T00:00:52Z</published>
<link rel='alternate' type='text/html' href='https://git.taar-o.com/demo.git/commit/?id=a29d83f6de08ace2db12347c85be959103d98db5'/>
<id>urn:sha1:a29d83f6de08ace2db12347c85be959103d98db5</id>
<content type='text'>
Fixed bug in gen_identity_weights.py --p47 mode: static features p4-p7
(uv_x, uv_y, sin20_y, bias) are at input channels 8-11, not 4-7.

Weight tensor layout:
- Channels 0-3: Previous layer output (4D RGBA)
- Channels 4-11: Static features (8D: p0-p7)

Static features:
- p0-p3 (channels 4-7): RGB+D from mip level
- p4-p7 (channels 8-11): uv_x, uv_y, sin20_y, bias

Updated:
- training/gen_identity_weights.py: Change weights[i,i+4] to weights[i,i+8]
- workspaces/main/weights/mix_p47.bin: Regenerated (not in repo)
- doc/CNN_V2.md: Add Input Channel Mapping section with full layout table

Co-Authored-By: Claude Sonnet 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
