test(fixtures): update manifest provenance, LICENSES, and parity baseline

- manifest.json: 16 assets now CC0 (verified source), 14 assets
  UNVERIFIED-REVIEW (flagged for human sign-off)
- LICENSES.md: full attribution table with per-asset category,
  source, license, and recommended remediation for residual items
- fixture-manifest.test.ts: accept UNVERIFIED-REVIEW in ALLOWED set
- phase2.json: parity baseline (13141 pass, 0 dropped)
This commit is contained in:
SnapOtter
2026-06-20 01:04:47 +08:00
parent d6975d3d46
commit 9f28f13fb6
4 changed files with 26670 additions and 137 deletions
File diff suppressed because it is too large Load Diff
+65 -42
View File
@@ -1,16 +1,35 @@
# Fixture Provenance & Licensing # Fixture Provenance & Licensing
All fixtures in `tests/fixtures/` must have verified provenance before the Phase 2 All fixtures in `tests/fixtures/` must have verified provenance. Only CC0, CC-BY,
licensing hard gate. Only CC0, CC-BY, CC-BY-SA, and public-domain assets are CC-BY-SA, and public-domain assets are permitted in the final registry. Assets
permitted in the final registry. still marked `UNVERIFIED-REVIEW` require human sign-off before the license hard
gate (Phase 2b) can close.
## Verified Assets ## Verified CC0 Assets (Category A: Regenerated / Category B: Replaced)
| Path | License | Source | Author | These assets are generated by project scripts (`gen-synthetic-content.mjs`) and
|------|---------|--------|--------| carry no third-party copyright. They are deterministic and reproducible.
| (none yet -- Phase 2 audit populates this table) | | | |
## Synthetic / Project-Generated Assets | Path | Category | Generator | Notes |
|------|----------|-----------|-------|
| `content/qr-code.png` | A | qrcode lib | Encodes `https://snapotter.com`, 400x400 |
| `content/qr-code.svg` | A | qrcode lib | Same data, SVG output |
| `content/qr-code.avif` | A | qrcode + Sharp AVIF | Same data, AVIF format |
| `content/barcode.png` | A | Code 128B encoder + Sharp | Encodes `SNAPOTTER-TEST-123`, 699x152 |
| `content/barcode.avif` | A | Code 128B encoder + Sharp | Same barcode, AVIF format |
| `content/ocr-clean.png` | A | Sharp SVG text | "The quick brown fox 12345", 800x200 |
| `content/ocr-japanese.png` | A | Sharp SVG text | Japanese writing passage, 480x172 |
| `content/alt-2page.pdf` | A | PDF byte generator | Minimal 2-page PDF with text |
| `content/multipage-6.pdf` | A | PDF byte generator | Minimal 6-page PDF with text |
| `content/audio-with-tags.mp3` | A | ffmpeg sine 440Hz | 1.2s MP3, ID3: "Test Song" / "Test Artist" |
| `content/video-with-meta.mp4` | A | ffmpeg color frame | 1s, 64x64, solid orange H.264 |
| `content/media-30s.mp4` | A | ffmpeg testsrc2 + sine | 30s, 640x360, test pattern + 440Hz tone |
| `content/media-30s.wav` | A | ffmpeg sine 440Hz | 30s, 44100Hz, mono PCM |
| `content/animated-simpsons.gif` | B | ffmpeg testsrc | 3s test pattern GIF; **replaced** Homer Simpson clip (Fox/Disney copyright) |
| `content/svg-logo.svg` | B | hand-written SVG | Geometric test fixture; **replaced** ConvertICO brand logo (third-party trademark) |
| `content/multi-face.webp` | B | Sharp oval grid | Face-placeholder grid; **replaced** Shutterstock stock photo #199321457 (watermarked, copyrighted) |
## Synthetic / Project-Generated Assets (pre-existing, not in content/)
The following were generated by project scripts or test infrastructure and carry The following were generated by project scripts or test infrastructure and carry
no third-party copyright concern: no third-party copyright concern:
@@ -24,39 +43,43 @@ no third-party copyright concern:
- `security/*` (SVG XXE test vectors) - `security/*` (SVG XXE test vectors)
- `formats/sample.*` (format samples, 35 files) - `formats/sample.*` (format samples, 35 files)
## Provenance Unverified -- Replace in Phase 2 ## NEEDS HUMAN LICENSE SIGN-OFF (Category C: UNVERIFIED-REVIEW)
The following `content/` heroes have `UNVERIFIED` license status in `manifest.json`. The following `content/` assets have unverifiable provenance. They were added
Phase 2 will either verify their provenance (CC0/CC-BY source) or replace them with during the test coverage expansion (commit `babca4cf`) or QA bug fixes (commit
properly-licensed alternatives: `d8cf979d`) without recorded source URLs. They are real-world photos, audio, or
video that require human review to either:
- `content/alt-2page.pdf` 1. Verify they are CC0/CC-BY and record the source, OR
- `content/animated-simpsons.gif` 2. Replace them with properly-licensed alternatives.
- `content/audio-with-tags.mp3`
- `content/barcode.avif` **Do NOT delete these.** Depth tests (face detection, colorization, red-eye
- `content/barcode.png` removal, transcription, stress testing) depend on real-world content.
- `content/cross-format-chat.webp`
- `content/media-30s.mp4` | Path | Size | Content Description | Why Review Is Needed |
- `content/media-30s.wav` |------|------|---------------------|---------------------|
- `content/motorcycle.heif` | `content/portrait-bw.jpeg` | 2.7 MB | B&W portrait of a woman (3775x5662) | Real photo, no EXIF source. Used for colorization tests. |
- `content/multi-face.webp` | `content/portrait-color.jpg` | 89 KB | Business portrait, man in suit (572x1024) | Likely AI-generated (has characteristic artifacts) but unconfirmed. Used for face/portrait tests. |
- `content/multipage-6.pdf` | `content/portrait-color-dup.jpg` | 89 KB | Identical to portrait-color.jpg | Deliberate duplicate for dedup testing. Same license concern. |
- `content/ocr-chat.jpeg` | `content/portrait-headshot.heic` | 1.5 MB | HEIC portrait headshot | No EXIF source. Used for HEIC format tests with face content. |
- `content/ocr-clean.png` | `content/portrait-isolated.png` | 81 KB | Same subject as portrait-color, background removed | Derived from portrait-color.jpg. Same license concern. |
- `content/ocr-japanese.png` | `content/red-eye.jpg` | 369 KB | Woman with red-eye effect (800x460) | Canon EOS 400D DIGITAL, Adobe Photoshop CS2 (2007). Real photo, no source URL. Used for red-eye removal tool. |
- `content/ocr-scanned.pdf` | `content/cross-format-chat.webp` | 182 KB | Mobile chat app screenshot (1440x3120) | Screenshot of "HeartCode" bot. Contains personal/third-party UI. Used in color-palette extraction test. |
- `content/portrait-bw.jpeg` | `content/ocr-chat.jpeg` | 1.0 MB | Same chat screenshot as above (JPEG) | Same content as cross-format-chat.webp, different format. Used for OCR tests. |
- `content/portrait-color-dup.jpg` | `content/ocr-scanned.pdf` | 1.0 MB | Scanned document PDF | Unknown scanned content. Used for OCR-on-PDF tests. |
- `content/portrait-color.jpg` | `content/stress-large.jpg` | 6.7 MB | Muay Thai boxing match (4000x3000) | Samsung Galaxy S24 Ultra photo (2026-04-11). Likely personal photo but contains identifiable people and event branding. Used for large-image stress tests. |
- `content/portrait-headshot.heic` | `content/watermark.jpg` | 87 KB | Mountain lake landscape with text watermark (720x480) | Real landscape photo with "Text Watermark Sample" overlay. Unknown source. Used for watermark removal tests. |
- `content/portrait-isolated.png` | `content/motorcycle.heif` | 224 KB | HEIF image | Content not inspectable without HEIF decoder. Used for HEIC/HEIF format processing tests. |
- `content/qr-code.avif` | `content/speech-10s.mp4` | 2.3 MB | 10-second video (640x360) | Likely contains speech for transcription tests. Content unverifiable without playback. |
- `content/qr-code.png` | `content/speech-10s.wav` | 320 KB | 10-second audio (16kHz mono) | Likely contains speech for transcription tests. Content unverifiable without playback. |
- `content/qr-code.svg`
- `content/red-eye.jpg` ### Recommended Actions for Sign-Off
- `content/speech-10s.mp4`
- `content/speech-10s.wav` - **Portraits** (5 files): If AI-generated, confirm the generator and its license terms. If stock photos, identify the source. Consider replacing with CC0 portraits from a known source.
- `content/stress-large.jpg` - **Chat screenshots** (2 files): Replace with a project-generated screenshot or a CC0 text image. The chat UI belongs to a third-party app.
- `content/svg-logo.svg` - **Red-eye photo**: Source the original from the photographer or replace with a CC0 red-eye portrait.
- `content/video-with-meta.mp4` - **Stress-large photo**: If this is a project contributor's personal photo, have them release it under CC0. Otherwise replace.
- `content/watermark.jpg` - **Watermark landscape**: Source the underlying landscape photo. The watermark overlay was likely added by the project.
- **Speech files** (2 files): Confirm content via playback. If synthetic (ffmpeg-generated), mark CC0. If real speech, identify speaker and get consent or replace.
- **Motorcycle HEIF**: Inspect via HEIF viewer and determine source.
- **OCR-scanned PDF**: Inspect document content and determine source.
+94 -94
View File
@@ -2,240 +2,240 @@
"assets": [ "assets": [
{ {
"path": "content/alt-2page.pdf", "path": "content/alt-2page.pdf",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "494c52ff3883d4fb6b019be71e0e29c4b27c5d5c48ba27e22d86295797114658", "sha256": "be8a827f8c4afee32b2c5d4339f039e3c24887284f220c3bf849210095899e75",
"bytes": 1075 "bytes": 854
}, },
{ {
"path": "content/animated-simpsons.gif", "path": "content/animated-simpsons.gif",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (ffmpeg testsrc, replaces copyrighted Simpsons clip)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "34cb66ae913c928293af2b7d6ca159eb245bd8c2fa92c208ca6975758246b0ca", "sha256": "738a6c04c1744c32bd9889372a4754dcb2d7af84586a33c9aa67e09ada8bdeb8",
"bytes": 109693 "bytes": 193823
}, },
{ {
"path": "content/audio-with-tags.mp3", "path": "content/audio-with-tags.mp3",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (ffmpeg 440Hz sine + ID3 tags)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "882c35013d3554cf32e37b0912abe14d88415efd28ade2be39e7935d7ce71a47", "sha256": "69103f0acb5b347e9a72618b531da0c1702d9bfbc5aee852b256634300ec50fb",
"bytes": 9956 "bytes": 11684
}, },
{ {
"path": "content/barcode.avif", "path": "content/barcode.avif",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (Code 128B via Sharp)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "870b71dcb8eea7cc69a612cd0dcd259f7a402220fcc3467c17ebf76dc9f52826", "sha256": "aa850fa40da9180bf493702d999e674f75942b1dbcf78f1d8c453ee6a096f375",
"bytes": 1152 "bytes": 2631
}, },
{ {
"path": "content/barcode.png", "path": "content/barcode.png",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (Code 128B via Sharp)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "50bf07d3d746c63ccdcd87f40989b5f35b1e1a6e1f6e75b6851d550574b3f5b2", "sha256": "84fafbaba2c80c347ef774530fe7def02e5555691e613a633867a7ef94fbdc6d",
"bytes": 12576 "bytes": 5980
}, },
{ {
"path": "content/cross-format-chat.webp", "path": "content/cross-format-chat.webp",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Chat app screenshot.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "de010e4433f6b20e9e7834bf8608f9a946971af5920d4fc53658194844686285", "sha256": "de010e4433f6b20e9e7834bf8608f9a946971af5920d4fc53658194844686285",
"bytes": 181960 "bytes": 181960
}, },
{ {
"path": "content/media-30s.mp4", "path": "content/media-30s.mp4",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (ffmpeg testsrc2 + 440Hz sine, 30s)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "b4504e28ddda52ee3cb9152bf32b8695f0a61f6f585042c293d3e13645aeb338", "sha256": "0313fc9ef2d763f057e53fadf047eb2876b9f3ba001f971b7a0eda3883e19af1",
"bytes": 6768813 "bytes": 7007619
}, },
{ {
"path": "content/media-30s.wav", "path": "content/media-30s.wav",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (ffmpeg 440Hz sine PCM, 30s)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "92ac8e1dcb67e1601c92cef8c9da7118e03340e17645efe9e387db63af7968ff", "sha256": "e77501db91d7d1dd6c9006a2e9b559767072e724c60fefddea6ddd3298ac809a",
"bytes": 2646078 "bytes": 2646078
}, },
{ {
"path": "content/motorcycle.heif", "path": "content/motorcycle.heif",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). HEIF photo, content unverifiable.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "90f3ae39a6ea1355f148712cd013f71111b2d74451ca07bcf8442489b0d1995e", "sha256": "90f3ae39a6ea1355f148712cd013f71111b2d74451ca07bcf8442489b0d1995e",
"bytes": 224154 "bytes": 224154
}, },
{ {
"path": "content/multi-face.webp", "path": "content/multi-face.webp",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (Sharp oval grid, replaces Shutterstock #199321457)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "a2b634fc99014bf08e924848790fe5bddff825fa56dcbd20ea71176fa3fcf334", "sha256": "58a3e4acf5d9d12612a05e19098f5ed7d122789721828a30dc01d1eecf2754c8",
"bytes": 30040 "bytes": 5194
}, },
{ {
"path": "content/multipage-6.pdf", "path": "content/multipage-6.pdf",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "f26d8cfff5ce1895a1e877bacd5bff024692085d8f30f378d7bc50d214e3fd72", "sha256": "ef047cf125592eaa857f0f1f1d1001d7575dfcf03af5f7c20038050178fa4160",
"bytes": 2239 "bytes": 1913
}, },
{ {
"path": "content/ocr-chat.jpeg", "path": "content/ocr-chat.jpeg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Chat app screenshot with personal content.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "97798605609879cbbefb4bdc94d4c8e47ac1e122d22d7951c33d37e63c5f4238", "sha256": "97798605609879cbbefb4bdc94d4c8e47ac1e122d22d7951c33d37e63c5f4238",
"bytes": 1048725 "bytes": 1048725
}, },
{ {
"path": "content/ocr-clean.png", "path": "content/ocr-clean.png",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (Sharp SVG text render)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "a07ea2e0c88f2765eb48bd6f261bf146581fc7d1a38b6d1a0384aeb0c4a7b5e7", "sha256": "b75f19fae28ac01cf9126299a68917a3d60668b831156d9600a8b4a403f9e43d",
"bytes": 9176 "bytes": 8187
}, },
{ {
"path": "content/ocr-japanese.png", "path": "content/ocr-japanese.png",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (Sharp SVG Japanese text render)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "d2bed03fd01e7a327d49a4abaa6b13c2507b585ba23a66f877ea78d68b022417", "sha256": "0203ea5fabc9a6965103d64136b17fb8abe33f6def99b8da97cf47c2091ec639",
"bytes": 10104 "bytes": 25932
}, },
{ {
"path": "content/ocr-scanned.pdf", "path": "content/ocr-scanned.pdf",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf/d8cf979d. Scanned PDF, content unverifiable.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "28d33f9f30a450943d59489345bf475b42ca0f73deffeb883df1d117d97e5d90", "sha256": "28d33f9f30a450943d59489345bf475b42ca0f73deffeb883df1d117d97e5d90",
"bytes": 1049673 "bytes": 1049673
}, },
{ {
"path": "content/portrait-bw.jpeg", "path": "content/portrait-bw.jpeg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). B&W portrait, unverifiable origin.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "0ca77a23c1af40d107f4f34eef048adef98f8b36c475723c6fe921ed3dec81bc", "sha256": "0ca77a23c1af40d107f4f34eef048adef98f8b36c475723c6fe921ed3dec81bc",
"bytes": 2731390 "bytes": 2731390
}, },
{ {
"path": "content/portrait-color-dup.jpg", "path": "content/portrait-color-dup.jpg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Identical to portrait-color.jpg (deliberate duplicate for dedup tests).",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e", "sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e",
"bytes": 89084 "bytes": 89084
}, },
{ {
"path": "content/portrait-color.jpg", "path": "content/portrait-color.jpg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Portrait photo, likely AI-generated, unverifiable.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e", "sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e",
"bytes": 89084 "bytes": 89084
}, },
{ {
"path": "content/portrait-headshot.heic", "path": "content/portrait-headshot.heic",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). HEIC portrait, unverifiable origin.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "1f59692ec10d5372e69ebc789c53ebe752f665ff87ede4d15817ce512e769732", "sha256": "1f59692ec10d5372e69ebc789c53ebe752f665ff87ede4d15817ce512e769732",
"bytes": 1489644 "bytes": 1489644
}, },
{ {
"path": "content/portrait-isolated.png", "path": "content/portrait-isolated.png",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Portrait with bg removed, same subject as portrait-color.jpg.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "8d53453a5adaecfc3b6db83e85f732cbe67adc42e7c719d4c3ae8eb7777e0a8f", "sha256": "8d53453a5adaecfc3b6db83e85f732cbe67adc42e7c719d4c3ae8eb7777e0a8f",
"bytes": 80745 "bytes": 80745
}, },
{ {
"path": "content/qr-code.avif", "path": "content/qr-code.avif",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (qrcode lib + Sharp AVIF)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "7d7d93d1f9221c434b99a8262d68aea94acd2de88d13a729eb3af1e3bf4f35c5", "sha256": "93c8268e6fe3e8a16f3c1cc028885e6b4a90887f27a2fe4525e4a928703fcdb3",
"bytes": 1487 "bytes": 1924
}, },
{ {
"path": "content/qr-code.png", "path": "content/qr-code.png",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (qrcode lib, encodes https://snapotter.com)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "a526c26245a3caab564fab64fde7f2d75d5f7c9dff53fcfe784d9119ebe5074f", "sha256": "97506d778ea20d9a42b303071f280b4f31109fcff7af00bd9e284436a0e51155",
"bytes": 2438
},
{
"path": "content/qr-code.svg",
"sourceUrl": "UNVERIFIED",
"license": "UNVERIFIED",
"toolsServed": [],
"sha256": "23ae3e41f61df60db35cd65aa06b8842c19fc06857f0711d97a42fad496b6577",
"bytes": 2191 "bytes": 2191
}, },
{
"path": "content/qr-code.svg",
"sourceUrl": "gen-synthetic-content.mjs (qrcode lib SVG output)",
"license": "CC0",
"toolsServed": [],
"sha256": "bd3128ae46d994fa5dda1345a93f17782b1d906e871b9f318e6fd0d032cc9f50",
"bytes": 1255
},
{ {
"path": "content/red-eye.jpg", "path": "content/red-eye.jpg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Canon EOS 400D DIGITAL EXIF from 2007, red-eye portrait.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "04a993def90ffb471cbb0b4bbe46bd2aa9a2d344a9ab7ad187dc22f5feca23ed", "sha256": "04a993def90ffb471cbb0b4bbe46bd2aa9a2d344a9ab7ad187dc22f5feca23ed",
"bytes": 368937 "bytes": 368937
}, },
{ {
"path": "content/speech-10s.mp4", "path": "content/speech-10s.mp4",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in d8cf979d (QA bug fixes). 10s video, likely contains speech for transcription tests.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "e3196b8eb044feb7eba7ae55d931f5be31f6694186e8d67d6fb6d412a89f25e8", "sha256": "e3196b8eb044feb7eba7ae55d931f5be31f6694186e8d67d6fb6d412a89f25e8",
"bytes": 2254674 "bytes": 2254674
}, },
{ {
"path": "content/speech-10s.wav", "path": "content/speech-10s.wav",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in d8cf979d (QA bug fixes). 10s audio, likely contains speech for transcription tests.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "dde7726a10dc469dea2e306b94462b5fd4ec9b2f62e0b22401a018c6b27270fa", "sha256": "dde7726a10dc469dea2e306b94462b5fd4ec9b2f62e0b22401a018c6b27270fa",
"bytes": 320390 "bytes": 320390
}, },
{ {
"path": "content/stress-large.jpg", "path": "content/stress-large.jpg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Samsung Galaxy S24 Ultra photo (EXIF 2026-04-11), Muay Thai event.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "53610a10526e1a4f42036a08091cbe8a79781f4522915f98f423cab14f6bca10", "sha256": "53610a10526e1a4f42036a08091cbe8a79781f4522915f98f423cab14f6bca10",
"bytes": 6678906 "bytes": 6678906
}, },
{ {
"path": "content/svg-logo.svg", "path": "content/svg-logo.svg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (geometric test SVG, replaces ConvertICO brand logo)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "7a8f5e99e26fd660babe7084290827ed8faac053ec089cce31687307d736a6ca", "sha256": "dae7668c0db8688e93cd7d6fedfd7f7121c3bfa563eee19e4492bc0dbfc73a0b",
"bytes": 2906 "bytes": 1426
}, },
{ {
"path": "content/video-with-meta.mp4", "path": "content/video-with-meta.mp4",
"sourceUrl": "UNVERIFIED", "sourceUrl": "gen-synthetic-content.mjs (ffmpeg color frame, 64x64, 1s)",
"license": "UNVERIFIED", "license": "CC0",
"toolsServed": [], "toolsServed": [],
"sha256": "77b567b9e43b15d6edac80a445f29ee3f8affa77d7835442309cb9b0417cab5b", "sha256": "f8ad87da046cd641995e86067130976a65ae99c26a8277d41ac5aadd66b08fe4",
"bytes": 13444 "bytes": 2001
}, },
{ {
"path": "content/watermark.jpg", "path": "content/watermark.jpg",
"sourceUrl": "UNVERIFIED", "sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Landscape photo with text watermark overlay.",
"license": "UNVERIFIED", "license": "UNVERIFIED-REVIEW",
"toolsServed": [], "toolsServed": [],
"sha256": "b8ddbceea01513f4a9ac6b0903b8071d8466ae88a8d5ef6fd84c33644ce22a4d", "sha256": "b8ddbceea01513f4a9ac6b0903b8071d8466ae88a8d5ef6fd84c33644ce22a4d",
"bytes": 87064 "bytes": 87064
+1 -1
View File
@@ -12,7 +12,7 @@ describe("fixture manifest is consistent with disk", () => {
// Phase 1 hard-checks bytes + sha256; license may be "UNVERIFIED" (tracked in // Phase 1 hard-checks bytes + sha256; license may be "UNVERIFIED" (tracked in
// LICENSES.md). Phase 2 does the real provenance audit and removes that tolerance. // LICENSES.md). Phase 2 does the real provenance audit and removes that tolerance.
const ALLOWED = ["CC0", "CC-BY", "CC-BY-SA", "public-domain", "UNVERIFIED"]; const ALLOWED = ["CC0", "CC-BY", "CC-BY-SA", "public-domain", "UNVERIFIED", "UNVERIFIED-REVIEW"];
it.each(manifest.assets)("$path matches sha256 + bytes and declares a license", (asset: { it.each(manifest.assets)("$path matches sha256 + bytes and declares a license", (asset: {
path: string; path: string;
bytes: number; bytes: number;