feat(ux)+fix(rings): release counter #N in the wordmark; all shared-frame rings 4->8 (#11)

Roll-forward of today-slices 6fd1d9c onto the slice-8 base, two-loop hunk dropped.

Release counter (per-build GUID read as noise; +1 per commit from git rev-list,
baseline 241 -> #13, generated by GenerateBuildStamp; GUID demotes to startup.log).
Tests pinned to Label/#N >= 13; wordmark display test asserts the Label.

Flash fix (take 14 finding): consumer holds must never outlive depth x source
period — 4 slots at high refresh lap ~27ms vs a <=50ms compositor read, so a
recycled slot flashed its new frame over the lagged old one. All shared rings 4->8
(OBS/overlay precedent for ring discipline).

Camera producer now rotates an 8-deep ring + Epoch instead of a fresh ~3.7MB
array per device frame (110-220MB/s LOH churn); WebView2 capture reuses a canvas
scratch + 8-deep output ring + a reused WriteableBitmap instead of two fresh
arrays + a fresh bitmap per 10Hz tick. Paste cache stays identity-keyed (Epoch).
This commit is contained in:
2026-09-05 14:31:03 -07:00
parent 99aeef7994
commit d35823a4a9
10 changed files with 143 additions and 34 deletions
+10 -2
View File
@@ -9,7 +9,9 @@ using ytLive.Helpers;
namespace ytLive.Tests;
/// <summary>
/// Build attribution (2026-09-04, after takes 3–6 could not be pinned to a binary):
/// Build attribution (2026-09-04): the UI carries the release counter (#N, +1 per
/// commit, from git rev-list — stable across rebuilds of one commit); the per-build
/// GUID stays in startup.log for forensics.
/// every build stamps a fresh GUID (ytLive.csproj GenerateBuildStamp), shown as the
/// wordmark superscript and logged at startup. The unit pins the stamp shape; the
/// RealApp test proves the wordmark ACTUALLY displays it (XAML wiring, live visual
@@ -20,6 +22,12 @@ public sealed class BuildStampTests
[Fact]
public void Stamp_IsAFreshHexIdAndParsableTimestamp()
{
// The UI shows the RELEASE COUNTER (creator ruling 2026-09-04: a per-build
// GUID changed on every launch and read as noise; #N ticks +1 per commit,
// started at 13 — derived from git rev-list, stable within a commit).
Assert.True(BuildStamp.Release >= 13, $"release counter regressed: {BuildStamp.Release}");
Assert.Equal(BuildStamp.Label, $"#{BuildStamp.Release}");
// The GUID survives as the forensic per-build id (startup.log only).
Assert.Matches(new Regex("^[0-9a-f]{8}$"), BuildStamp.Id);
Assert.True(DateTime.TryParseExact(BuildStamp.BuiltLocal, "yyyy-MM-dd HH:mm:ss",
null, System.Globalization.DateTimeStyles.None, out var built));
@@ -47,7 +55,7 @@ public sealed class BuildStampDisplayTests
// control, never from the window (MyMistakes: namescoped FindName).
var topBar = (UserControl)window.FindName("TopBar")!;
var stamp = (Run)topBar.FindName("BuildIdStamp")!;
Assert.Equal(BuildStamp.Id, stamp.Text);
Assert.Equal(BuildStamp.Label, stamp.Text);
Assert.Equal(BaselineAlignment.Superscript, stamp.BaselineAlignment);
}
finally