open-standards/wai/pack-conformance/refusals/policy/too-many-moments.toml
Transaction Science fb61bb69bd wai-pack: the policy, scene-cut segmentation and their corpus
A new crate beside wai-rs, with its own workspace and lock: the reference
packager of the packaging extension, built so far as far as a plan.

- policy.rs: wai.pack.policy/1 read in three stages (value kinds a canonical
  JSON cannot carry; the schema with every default written in; the
  constraints across members), each refusal named. The effective policy's
  canonical JSON goes through wai::jcs, and its digest is
  BLAKE3("wai:pack-policy\x01" || JCS).
- source/: Y4M to RGB8 (BT.709 limited range, integer), WAV PCM s16le.
- scenecut.rs: wai.pack.scenecut/1, one streaming segmenter with a bounded
  lookahead and the return and revisit clauses, so live and on-demand
  packing cut alike at equal lookahead; plan digest.
- classify.rs: static, synthetic, high motion, natural.
- fixture.rs: integer-generated Y4M fixtures (cuts-01, kinds-01).
- conformance.rs and wai-pack conformance regen|check.

pack-conformance/ holds the policy digests and equal-spelling pairs, a
refusal case per reason, the unit and colour conversions, and the scene-cut
vectors; pack_verify.py recomputes every one of them from the rules, with
its own TOML schema, JCS, readers, fixture generator and segmenter. It
found one defect while it was written: a millisecond bound converted to an
extreme timebase wrapped past 2^64; both conversions now saturate.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 07:33:52 -04:00

180 lines
1.7 KiB
TOML

# Refused: 33 moments.
schema = "wai.pack.policy/1"
asset_id = "r"
lead = "v"
[[component]]
id = "v"
media = "video"
timebase = { num = 25, den = 1 }
[[ladder]]
id = "b0"
component = "v"
capability = "wai.video.int_motion"
role = "base"
[[moment]]
id = "m0"
from_ms = 0
to_ms = 1
[[moment]]
id = "m1"
from_ms = 1
to_ms = 2
[[moment]]
id = "m2"
from_ms = 2
to_ms = 3
[[moment]]
id = "m3"
from_ms = 3
to_ms = 4
[[moment]]
id = "m4"
from_ms = 4
to_ms = 5
[[moment]]
id = "m5"
from_ms = 5
to_ms = 6
[[moment]]
id = "m6"
from_ms = 6
to_ms = 7
[[moment]]
id = "m7"
from_ms = 7
to_ms = 8
[[moment]]
id = "m8"
from_ms = 8
to_ms = 9
[[moment]]
id = "m9"
from_ms = 9
to_ms = 10
[[moment]]
id = "m10"
from_ms = 10
to_ms = 11
[[moment]]
id = "m11"
from_ms = 11
to_ms = 12
[[moment]]
id = "m12"
from_ms = 12
to_ms = 13
[[moment]]
id = "m13"
from_ms = 13
to_ms = 14
[[moment]]
id = "m14"
from_ms = 14
to_ms = 15
[[moment]]
id = "m15"
from_ms = 15
to_ms = 16
[[moment]]
id = "m16"
from_ms = 16
to_ms = 17
[[moment]]
id = "m17"
from_ms = 17
to_ms = 18
[[moment]]
id = "m18"
from_ms = 18
to_ms = 19
[[moment]]
id = "m19"
from_ms = 19
to_ms = 20
[[moment]]
id = "m20"
from_ms = 20
to_ms = 21
[[moment]]
id = "m21"
from_ms = 21
to_ms = 22
[[moment]]
id = "m22"
from_ms = 22
to_ms = 23
[[moment]]
id = "m23"
from_ms = 23
to_ms = 24
[[moment]]
id = "m24"
from_ms = 24
to_ms = 25
[[moment]]
id = "m25"
from_ms = 25
to_ms = 26
[[moment]]
id = "m26"
from_ms = 26
to_ms = 27
[[moment]]
id = "m27"
from_ms = 27
to_ms = 28
[[moment]]
id = "m28"
from_ms = 28
to_ms = 29
[[moment]]
id = "m29"
from_ms = 29
to_ms = 30
[[moment]]
id = "m30"
from_ms = 30
to_ms = 31
[[moment]]
id = "m31"
from_ms = 31
to_ms = 32
[[moment]]
id = "m32"
from_ms = 32
to_ms = 33