Adopt the config-driven extractor
🏗️ Build Plugin / build (push) Successful in 28s
Latest Release / latest-release (push) Successful in 41s
🧪 Test Plugin / test (push) Successful in 25s

jray-project replaced the extractor's per-repo CLI flags with a traceability.toml
at each component root, so the invocation this repo documented -- --types,
--suffixes, --scan-roots -- no longer exists. Bumps the submodule to 17106f3 and
moves those settings into config.

The gate is now `extract_traces.py --root . --format coverage`, with nothing
per-repo on the command line to drift between a developer's shell and CI.

Two settings carry reasons worth keeping. Source roots are listed individually
rather than as "scripts", because the latter walks scripts/vendor and harvests
the AR-nnn examples in the extractor's own docstrings as orphan tags.
ci_executable_tiers omits T4: tiers are per-repo now, but T4 keeps the meaning
it has in scene-actor-extraction -- "no CI host can run this" -- so a tier
number reads the same across repos.

Drops the note about the tool expecting jRay to use UR/DR. Its example config
now names jRay: ["JR"], so the prefix is settled in all three repos.

Same numbers as before the change: 21 tags, 25/46, 0 orphans.

TRACES: JR-021 | PR-004

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 21:20:57 +02:00
co-authored by Claude Opus 5
parent 2d043aeee3
commit f4e8fb5dea
3 changed files with 58 additions and 34 deletions
+31
View File
@@ -0,0 +1,31 @@
# traceability.toml — per-repo configuration for the shared trace extractor.
# The extractor itself is vendored at scripts/vendor/jray-project.
# Flat, rather than split by theme as scene-actor-extraction is. The plugin is
# one deployable with one audience, and JRay-public-server already ships UR/DR
# — a second repo using those prefixes would make UR-007 ambiguous across
# registers, and UR-007 is precisely the ID the server asks this register to
# cross-reference (see JR-025).
requirement_types = ["JR"]
languages = ["csharp", "javascript"]
# The static checks carry TRACES tags of their own. An enforcement script is
# evidence for a requirement exactly as a unit test is — JR-021 is a
# prohibition, and a prohibition can only be verified by absence.
source_suffixes = [".sh"]
# Explicit roots rather than "scripts", which would walk scripts/vendor and
# harvest the AR-nnn examples in the extractor's own docstrings as orphan tags.
source_roots = [
"Jellyfin.Plugin.JRay",
"Jellyfin.Plugin.JRay.Tests",
"scripts/checks",
]
# jRay has two CI tiers and one live tier. T3 is deliberately unused: T4 keeps
# the meaning it has in scene-actor-extraction — "no CI host can run this" —
# so a tier number means the same thing when read across repos.
ci_executable_tiers = ["T1", "T2", "static"]
system_spec = "scripts/vendor/jray-project/SPEC.md"