Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 50a218193ec36dc01e65333a662ad1112fcb7bf1
parent d70dceccc4a3215a35381704782b902863fe9c44
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Mon, 21 Sep 2026 01:49:14 -0400

deliver: an id shared under another name is still shared

Dry-read of the real project (read-only, no writes to ~/reports): 163 clips,
69 confirmed, 10 incorrect, 84 unjudged, 10 confirmed clips with no file -- and
a next batch of SIX, every one of which had already gone out.

The six went out in the emancipation/Ireland set under different ids: em01,
ie01 and their siblings are a separate cut of the same moments, and nothing on
disk ties those files to b02/c08/f01/f05/h01/h02. What ties them is the
sentence the batch that followed wrote down -- "minus the 6 already shared in
the emancipation/Ireland set (b02 c08 f01 f05 h01 h02)" -- so that sentence is
read, as narrowly as prose can be read: the phrase, a parenthesis, and only the
tokens shaped like a clip id. A batch this writes phrases it the same way, so
its own list round-trips through the parser unchanged.

With it the real project reads 59 shared, 0 to ship and 10 to cut, which is the
actual next move rather than a batch of duplicates.

The fixture now carries both kinds: b01 excluded by the file name its list
gives, a02 by a sentence and nothing else.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Diffstat:
Mumtool/docs/clip-bench.md | 13++++++++++---
Mumtool/e2e/deliver.spec.ts | 23++++++++++++++++-------
Mumtool/e2e/fixtures/make-fixture.mjs | 7+++++--
Mumtool/lib/report/deliver.mjs | 18++++++++++++++++++
4 files changed, 49 insertions(+), 12 deletions(-)

diff --git a/umtool/docs/clip-bench.md b/umtool/docs/clip-bench.md @@ -387,9 +387,16 @@ python file beside one project's deliverables is not a profile the next project can reach. **Exclusions are the folders, not a list.** The next batch skips every id an -existing `share-*/LIST.md` already shipped (read back from the file NAMES it -lists, plus the `<!-- shared-ids: … -->` marker this writes) and every clip -ruled `incorrect`. A `shared.json` would have been a second record to drift. +existing `share-*/LIST.md` already shipped and every clip ruled `incorrect`. A +`shared.json` would have been a second record to drift from them. Three ways an +id counts as shipped, in order of how much they can be trusted: the file NAMES +a list gives, the `<!-- shared-ids: … -->` marker this writes, and — narrowly — +the phrase `already shared (…)`, taking only the tokens shaped like a clip id. +The last one is not decoration: six ElfpireEva clips went out in an earlier set +under DIFFERENT ids (`em01`, `ie01` — a separate cut of the same moments), and +the sentence the next batch wrote down is the only thing on disk tying the two. +Without it, the next batch re-ships all six. A batch this writes phrases it the +same way, so its own list round-trips. **Nothing rewrites prose.** `apply-manifest.py` prints the lines of `content*.py` that cite each clip the walk threw out, and the panel shows the diff --git a/umtool/e2e/deliver.spec.ts b/umtool/e2e/deliver.spec.ts @@ -133,22 +133,31 @@ test("the share batch skips every id an existing LIST.md already shipped", async existsSync(path.join(root, variant, folder, "a01_2025-01-01_A-Fixture-Stream.mp4")), `${variant}/a01`, ).toBe(true); - expect( - existsSync(path.join(root, variant, folder, "a02_2025-01-02_A-Fixture-Stream.mp4")), - `${variant}/a02`, - ).toBe(true); } - // THE EXCLUSIONS. b01 went out in share-first, and the folders are the - // record: nothing was written down anywhere else. b02 was ruled incorrect. + // THE EXCLUSIONS, and there are three kinds. + // + // b01 is in share-first by FILE NAME. a02 is in share-first only as a + // SENTENCE -- it went out in an earlier set under another id, which is the + // real project's case for six clips (em01/ie01 are a separate cut of + // b02/c08/f01/f05/h01/h02) and the only record that ties the two. b02 was + // ruled incorrect. The folders and their lists are the whole record: no + // second file to drift from them. const list = readFileSync(path.join(root, "LIST.md"), "utf8"); expect(list).toContain("a01_2025-01-01"); + expect(list).not.toContain("a02_"); expect(list).not.toContain("b01_"); expect(list).not.toContain("b02_"); - expect(list).toContain("1 already shared (b01)"); + expect(list).toContain("2 already shared (a02 b01)"); expect(list).toContain("1 ruled incorrect (b02)"); + expect( + existsSync(path.join(root, "orig", folder, "a02_2025-01-02_A-Fixture-Stream.mp4")), + ).toBe(false); expect(existsSync(path.join(root, "orig", "B-The-second-fixture-section"))).toBe(false); + // …and the list this wrote says it the same way, so the NEXT batch reading + // it back excludes all three without anybody restating them. + // The std encode is the one people download, and it is EXACTLY 1280x720. const size = execFileSync("ffprobe", [ "-v", "error", "-select_streams", "v:0", "-show_entries", "stream=width,height", diff --git a/umtool/e2e/fixtures/make-fixture.mjs b/umtool/e2e/fixtures/make-fixture.mjs @@ -1078,14 +1078,17 @@ SECTIONS = [ ); // A batch that already went out. The folders ARE the record, so the exclusion // list is read back from this rather than from a second file that would drift -// from it. +// from it -- by FILE NAME for b01, and out of the prose for a02, which is the +// real project's case: six clips went out in an earlier set under different +// ids, and the sentence naming them is the only thing that ties the two. mkdirSync(path.join(DELIVER, "share-first"), { recursive: true }); writeFileSync( path.join(DELIVER, "share-first", "LIST.md"), [ "# deliver-fixture — share batch `first`", "", - "1 clip, sent before this fixture was born.", + "1 clip, sent before this fixture was born — and 1 already shared (a02) in", + "an earlier set under another id, which is the only record that it went out.", "", "## 2. The second fixture section (`B-The-second-fixture-section/`)", "", diff --git a/umtool/lib/report/deliver.mjs b/umtool/lib/report/deliver.mjs @@ -97,6 +97,24 @@ export async function sharedIdsIn(dir) { for (const m of list.matchAll(/\b([A-Za-z]{1,3}\d{1,3})_[^\s`*]*\.mp4\b/g)) ids.add(m[1]); const marked = /<!--\s*shared-ids:\s*([^>]*?)\s*-->/.exec(list); if (marked) for (const id of marked[1].split(/[\s,]+/).filter(Boolean)) ids.add(id); + // AND THE IDS A LIST NAMES AS SHARED SOMEWHERE ELSE. + // + // Measured on the real project: six clips went out in an earlier set under + // DIFFERENT ids (em01, ie01 -- a separate cut of the same moments), and + // nothing on disk ties those files to b02/c08/f01/f05/h01/h02. What does + // tie them is the sentence the batch that followed wrote down: "minus the + // 6 already shared in the emancipation/Ireland set (b02 c08 f01 f05 h01 + // h02)". Without this the next batch re-ships all six. + // + // Prose, and read as narrowly as prose can be: the phrase, then a + // parenthesis, then only the tokens that are shaped like a clip id. The + // batches this writes phrase it the same way, so a generated list round + // trips through here unchanged. + for (const m of list.matchAll(/already shared[^(\n]*\(([^)]*)\)/gi)) { + for (const tok of m[1].split(/[\s,]+/)) { + if (/^[A-Za-z]{1,3}\d{1,3}$/.test(tok)) ids.add(tok); + } + } } // And the files themselves, for a batch assembled before anyone wrote a list. const walk = async (d) => {