From ee7c65a0f252441176fc8e1558cb008512981b35 Mon Sep 17 00:00:00 2001 From: BenStullsBets Date: Tue, 30 Jun 2026 09:23:57 -0700 Subject: [PATCH] feat(credits): restore the CC BY-SA declaration as "License & reuse" (Option D1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit s0031 removed "About this work" to avoid duplicating it on the separate About page, but that section WAS the D1 compliance — it declares the altered work is a derivative offered under CC BY-SA 4.0, which is what satisfies the ShareAlike obligation for the BY-SA source clips. Without it the live site credited the BY-SA authors but never declared the derivative share-alike. Restore the declaration on the credits page, under the heading "License & reuse" instead of "About this work" so it isn't confused with the separate About page (which covers the project's intent). Tests assert the declaration is present and that the heading is NOT "About this work". Co-Authored-By: Claude Opus 4.8 (1M context) --- simulator/static/credits.html | 20 +++++++++++++++++++- simulator/unit/credits.test.js | 12 +++++++----- tests/test_e2e_credits.py | 4 +--- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/simulator/static/credits.html b/simulator/static/credits.html index 79b4646..4168485 100644 --- a/simulator/static/credits.html +++ b/simulator/static/credits.html @@ -13,12 +13,30 @@

← Back to the experience

+ +
+

License & reuse

+

+ The Human Experience Filter alters its source footage in real time + (overlays, an emotion/affect channel, and a WebGL “dream” shader), so every + frame you see is a derivative of the original clip. +

+

+ This altered work is offered under + Creative + Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0). The original sources it + builds on are credited below. This is a non-commercial art installation. +

+
+

Footage

Original video sources and their licenses. Public-domain (US-government) and CC0 clips need no attribution; the names below for CC BY / CC BY-SA clips are - required credit. All footage is altered in real time in the experience. + required credit. All footage is altered as described above.

Loading credits…

diff --git a/simulator/unit/credits.test.js b/simulator/unit/credits.test.js index 232bc5a..8ae831f 100644 --- a/simulator/unit/credits.test.js +++ b/simulator/unit/credits.test.js @@ -55,10 +55,12 @@ test("credits.html wires config.js + credits.js, the attributions container, and assert.match(html, /href="index\.html"/); // back into the experience }); -test("credits.html notes footage is altered; the work-license declaration lives on the About page", () => { +test("credits.html carries the CC BY-SA derivative declaration (Option D1)", () => { const html = fs.readFileSync(path.join(__dirname, "../static/credits.html"), "utf8"); - assert.match(html, /altered/i); // modification indicated alongside the attributions - // The CC BY-SA work-license declaration ("About this work") moved off the credits - // page onto the About page — it must NOT be duplicated here. - assert.doesNotMatch(html, /CC BY-SA 4\.0/); + assert.match(html, /CC BY-SA 4\.0/); // the altered work's own license + assert.match(html, /altered/i); // states the footage is modified + // The section is NOT titled "About this work" — that name belongs to the separate + // About page; here the declaration lives under "License & reuse". + assert.doesNotMatch(html, /About this work/i); + assert.match(html, /License & reuse/); }); diff --git a/tests/test_e2e_credits.py b/tests/test_e2e_credits.py index 8756aec..3023039 100644 --- a/tests/test_e2e_credits.py +++ b/tests/test_e2e_credits.py @@ -68,9 +68,7 @@ def test_credits_page_lists_video_attributions(browser_page): body = page.inner_text("body") assert "NASA, ESA, CSA, STScI" in body assert "Joe Mabel" in body # a CC BY-SA clip's required author credit - # The CC BY-SA work-license declaration ("About this work") moved to the About - # page — it is intentionally no longer on the credits page. - assert "CC BY-SA 4.0" not in body + assert "CC BY-SA 4.0" in body # the Option-D1 derivative declaration ("License & reuse") def test_experience_links_to_credits(browser_page):