Compare commits

..
Author SHA1 Message Date
dtourolle eed49e43c1 docs: record the second AR-024 exception, and that the invariant is now checked
The exceptions table gains the calibration's own near-duplicate dedup.
It is not a close call in either direction: at 1 - 1e-7 it tests vector
identity rather than similarity, and it runs on the fit's input, so a
calibrated comparison there would have to be calibrated by the fit it is
feeding.

More importantly, the invariant now has the enforcement its register row
always claimed. check_raw_cosine.py blocks in CI, and it caught a live
violation on its first run -- the identity matcher's no-calibration
fallback, which thresholded raw cosine distance and then fed
max(0, cosine) into the Bayesian accumulation as a posterior, past a
contract that says in terms it cannot be handed an uncalibrated number.

The note is explicit about what a pass does not prove: the check cannot
follow a cosine through a variable across statements, and says nothing
about the GEMM similarity matrix. Both remain conventions backed by
review. Writing that down is the point -- a checker trusted for more
than it does is how the raw-cosine fallback survived being read past.

TRACES: AR-024 | SR-002
2026-08-05 17:52:34 +02:00
dtourolle e1a9aad83c chore: ignore the benchmark corpus and derived data
hero/ and dvu-hero/ are ~140 MB of film clips, DVU annotations and the
gallery built from them. All reproducible via scripts/fetch_dvu.sh plus the
DVU movie.shots set, and the replay fixtures derived from them ship through
the artifact registry — so none of it belongs in git.
2026-08-04 14:15:09 +02:00
dtourolleandClaude Opus 5 413785f8be docs: PR-005 has software rows now, and the rollup should say so
The matrix section still claimed PR-005 "has no software row at all" and could
be verified only by prohibition. jRay's register has carried four rows against
it since the schema-v2 landing: JR-038 (Done), JR-034 and JR-039 (both High,
both T1, both still Planned), and JR-040 (T4). jRay is the component that
actually performs egress, so that is where the goal became verifiable rather
than merely preserved.

Three of the four are untagged in the matrix. That is unbuilt work, not a
broken chain, and saying so here keeps the rollup from reading as an
inconsistency. The structural guarantees still hold PR-005 from the other
side; nothing about SR-004 or GR-005 changes.

jRay/SPEC.md already stated this in the past tense. The vendored copy under
jRay/scripts/vendor/jray-project is a nested checkout of this repo, so it
follows on the next vendor bump rather than needing its own edit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

TRACES: JR-034, JR-039 | PR-005
2026-07-31 17:11:54 +02:00
dtourolleandClaude Opus 5 bddaddac5d docs: CC0 for the system spec and shared tooling
The README asserted "GPLv3, matching the Jellyfin plugin it serves" with no
LICENSE file behind it. That answer conflicts with the architecture the same
README describes forty lines earlier, in two ways.

This repository is vendored *into* the other three, which carry three different
licences (MIT, GPL-3.0, GPL-3.0-or-later). Copyleft here pushes obligations
downstream into repositories that did not choose them, for the sake of a build
script. The dependency also runs inward, so "matching the plugin" had the
direction backwards — this repo does not serve the plugin, the plugin consumes
it. CC0 imposes nothing on any of the three.

A specification also has to be freely implementable. The design assumes third
parties reimplement it: the audio-signature conformance fixture exists so that
"an implementation can be written from that file alone", and federation is
worthless if only one server implementation may exist. A software licence on a
specification invites the question of whether an implementation written from it
is a derivative work; CC0 removes the question rather than answering it.

Same reasoning as the CC0 licence on contributed manifests (JRay-public-server
UR-019): where an artefact's whole purpose is to be copied and reimplemented,
asserting rights over it costs more than it protects.

Text from creativecommons.org, not transcribed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 10:44:14 +02:00
5 changed files with 187 additions and 7 deletions
+12
View File
@@ -18,3 +18,15 @@ traces-report.json
*.swp
*~
.DS_Store
# Benchmark corpus and derived data — distributed as artifacts, never in git.
# hero/ is ~130 MB of film clips and dvu-hero/ the DVU annotations and gallery
# built from them. Both are reproducible: scripts/fetch_dvu.sh pulls the
# annotations and mugshots, and the clips come from the DVU movie.shots set.
# Replay fixtures derived from them ship via
# scene-actor-extraction/scripts/artifacts/push_artifacts.sh replay-fixtures
hero/
dvu-hero/
# Local agent session state
.claude/
+12
View File
@@ -38,6 +38,18 @@ this reason include `track_max_embed_dist`, `cut_revive_sim`,
| Where | Why |
|---|---|
| `GR-008` — distributional outlier check on an actor's own references | The sigmoid is a monotonic squash: right for *decisions*, wrong for characterising a *distribution*, since it compresses exactly the tails where outliers live. Shape is a property of the metric space. Scope is analysis only — every match decision still goes through the calibration. |
| `calibrate_gallery` — per-actor near-duplicate dedup at `1 - 1e-7` | Two reasons, either sufficient. It asks whether two vectors are **the same vector** — at that threshold it catches one source image embedded twice, and no pair of distinct photographs lands there — so it is not a decision and there is nothing for a probability to mean. And structurally, it runs on the calibration fit's *input*: a calibrated comparison there would have to be calibrated by the fit it is feeding. |
**The invariant is now enforced, not just asserted.**
`scene-actor-extraction/scripts/ci/check_raw_cosine.py` runs in the traceability
workflow and fails the build on a bare cosine with no recorded exception. It
found one immediately — the identity matcher's no-calibration fallback, which
thresholded raw cosine distance *and* fed `max(0, cosine)` into the Bayesian
accumulation as a posterior.
Know what it does not cover: it cannot follow a cosine through a variable across
statements, and it says nothing about the GEMM similarity matrix. Those remain
conventions backed by review. A pass is evidence, not proof.
### Every model gets the input it was trained for
+121
View File
@@ -0,0 +1,121 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
+32 -1
View File
@@ -187,4 +187,35 @@ are batched, so these ship together rather than piecemeal.
## Licence
GPLv3, matching the Jellyfin plugin it serves.
**This repository — the system spec, the working notes, and the traceability
tooling — is [CC0 1.0](LICENSE).** Public domain dedication: no attribution
required, no conditions.
That is deliberate, and it is not the licence the components use:
| Repository | Licence |
|---|---|
| **This one** (specs + shared tooling) | **CC0 1.0** |
| `scene-actor-extraction` | MIT, with a model/third-party addendum |
| `jRay` | GPL-3.0 |
| `JRay-public-server` | GPL-3.0-or-later (code) · CC0 1.0 (contributed manifests) |
Two reasons, both structural rather than philosophical:
- **This repository is vendored *into* the other three**, as described above —
and they carry three different licences. CC0 is the only choice that imposes
nothing on any of them: no attribution to propagate, no copyleft reaching into
an MIT repository, no aggregation question to answer. A copyleft licence here
would push obligations downstream into repositories that did not choose them,
for the sake of a build script.
- **A specification has to be freely implementable.** The design assumes third
parties reimplement it — the audio-signature conformance fixture exists
precisely so that "an implementation can be written from that file alone", and
federation is worthless if only one server implementation may exist. Licensing
the spec under a software licence invites the question of whether an
implementation written from it is a derivative work. CC0 removes the question
rather than answering it.
The same reasoning produced the CC0 licence on contributed manifests
(`JRay-public-server` SPEC §5b): where the artefact's whole purpose is to be
copied and reimplemented, asserting rights over it costs more than it protects.
+10 -6
View File
@@ -472,9 +472,13 @@ misread as gaps:
- **`DP-*` and `VR-*` trace to no system requirement.** Deployment and parameter
studies are single-repo concerns serving `PR-004` and `PR-002` directly. This
is correct.
- **`PR-005` (leak nothing) has no software row at all.** It is satisfied
*structurally* — `SR-004` (server holds no binary) and `GR-005` (gallery never
leaves the instance) — rather than by any component doing something. It cannot
be verified by pointing at code, and it dies the moment either prohibition is
relaxed. A goal preserved only by prohibitions needs watching precisely because
nothing traces to it.
- **`PR-005` (leak nothing) will look thinly covered, and that is the true
picture.** It had no software row anywhere; jRay is the component that
actually performs egress, so four rows now carry it — `JR-038` (exchange
off by default, Done), `JR-034` (contribution strips `movie` and
`jellyfin_id`, posts only to contribute-enabled servers) and `JR-039`
(batch `exists` capped at 100, sweeps paced), both High and T1, and
`JR-040` (the config page states the per-server exposure, T4). Three are
untagged because they are unbuilt, not because the chain is broken. The
structural guarantees — `SR-004` and `GR-005` — still hold the goal from
the other side, and it still dies the moment either prohibition is relaxed.