| R1 |
after-based action ordering is not implemented. The possession model advances the carrier across a frame's actions in array order, not by resolving each action's optional after dependency field. |
A spec-legal document that reorders actions purely via after (a dependent action placed earlier in the array than its prerequisite) can produce a false-positive BALL_CARRIER_MISMATCH. |
Documented as out-of-scope for v1 (design doc §7); tracked as a v1.1 follow-up. Both TS and Python must adopt the same ordering model together to preserve conformance parity — this is not a per-language fix. |
| R2 |
Geometric interpolation of variant moves without an explicit to is unimplemented. END_STATE_DISAGREE only checks actions with an explicit endpoint; moves with e.g. only a speed/direction are skipped rather than guessed. |
Some genuinely inconsistent end_state values on non-explicit moves will not be caught — a silent gap, not a false positive. |
Deliberate design choice (guessing risks false positives, worse than a coverage gap). Revisit once the model design settles geometric interpolation semantics. |
| R3 |
No auto-merge safety net for schema sync, but also no forcing function to actually review it. sync-from-spec.yml opens a PR and relies entirely on a human noticing and reviewing it — there's no reminder/escalation if the PR sits unreviewed. |
A schema PR could go stale, and if a second spec_released event fires before the first is merged, the automation could open a second, conflicting PR (behavior not explicitly handled by the workflow). |
Consider adding a check for an already-open sync PR before opening another, if this becomes an issue in practice. Currently unaddressed — flagged here as debt, not fixed speculatively. |
| R4 |
SPEC_REPO_TOKEN fallback to github.token. If the spec repo ever requires a token with broader scope (e.g. because it becomes private, or Contents API access needs elevated permissions), the silent fallback to the default github.token will produce a 403/404 at sync time rather than a clear configuration error. |
Sync workflow fails with a somewhat opaque API error instead of "missing SPEC_REPO_TOKEN secret." |
Acceptable for now since the spec repo is public; would need an explicit check if the spec repo's visibility/access model changes. |
| R5 |
Architecture documentation (this arc42 set, plus the earlier design doc) can drift from the vendored schema and code. Observed repeatedly: the original design doc referenced schema commit 5e18b5d; the vendored schema then moved to c1871aa, and again to spec v1.2.0 (sport scoping), each time before the docs were updated in lockstep. Also, ADR-0003 initially omitted the operational requirements that actually make the sync work (documented in ADR-0004). |
Newcomers or the LLM assistant itself can reason from stale architectural assumptions unless docs are deliberately kept current. |
No automated staleness check exists. Mitigation is process, not tooling: update docs/arc42/ and shared/schema/PROVENANCE.md together whenever the schema or CI workflows change. |
| R6 |
Python package structure intentionally diverges from TS (rules.py vs. rules/ subpackage) — a deliberate but unenforced convention. |
Nothing technical prevents someone from over-mirroring or under-mirroring structure between languages in future changes, since only behavioral parity is CI-enforced. |
Acceptable risk — documented in §8.9 as an explicit, intentional choice rather than an oversight. |