Skip to content

Commit 16bc5ac

Browse files
committed
docs(iwork): record media properties verification gates
1 parent d7e25e5 commit 16bc5ac

4 files changed

Lines changed: 180 additions & 192 deletions

File tree

crates/litchi-iwa/README.md

Lines changed: 45 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3393,51 +3393,48 @@ development-only edges, 11 ordered debts, and one migration host.
33933393

33943394
## 2026-09-07 Keynote media-properties ownership inventory
33953395

3396-
The focused source owner now exposes semantic `MediaProperties` with four
3397-
optional fields: hyperlink and accessibility-description strings, plus lock
3398-
and aspect-ratio-lock booleans. Source-order typed
3399-
`litchi_keynote::Package::{slide_media_properties,
3400-
edit_slide_media_properties,apply_slide_media_properties}` keeps native IDs
3401-
and wire records private. The strict private 577-byte Buffa projection uses
3402-
`keynote_media_properties_codec` (SHA-256
3403-
`3945a92dcc3f25333d6375eb68aaaf762ea00141cfd9055f71bf65cfb4f12b02`), with
3404-
zero and absent geometry represented as canonical optional geometry and
3405-
positive geometry retaining its existing ownership requirements.
3406-
3407-
The legacy host's four raw media-properties APIs and private helper remain
3408-
retained pending source-built parity oracles and the native gate. Exact
3409-
no-op, inverse, replay, locality, and budget checks are still in progress.
3410-
The native CUA attempt fails with ScreenCaptureKit error `-3802` (`Stream
3411-
failed to start`); no native media-properties fixture or retirement receipt
3412-
exists. Boundary retirement requires the absent
3413-
`MEDIA_PROPERTIES_NATIVE_VERIFIED` marker. This inventory entry records
3414-
source ownership only and does not retire a host route or close the monolith
3415-
exit.
3416-
3417-
### Current media-properties verification update (2026-09-07)
3418-
3419-
The neutral media-properties codec passes 10 cases with Clippy `-D warnings`;
3420-
the common checks pass 166 cases, the Keynote library passes 273 cases, and
3421-
the new media-properties integration slice passes 17 cases, including
3422-
unselected Audio B opaque-message preservation. Existing audio
3423-
position and movie-geometry integration passes 13 and 27 cases respectively.
3424-
The host-properties slice passes 10 cases, including all three raw-focused
3425-
parity cases and the absent-file-poster case. Exact no-op, inverse, replay,
3426-
double-inverse, locality, malformed-header, reference-limit, and budget
3427-
behavior is verified. Shared-metadata work is precharged before mutation,
3428-
and sibling validation is selected-only. Graph validation covers styles,
3429-
comments, captions, ownership, media content, and optional posters through
3430-
the existing replacement owner and residual-cap checks.
3431-
3432-
Python verification remains at 978 cases, and the full boundary scan passes
3433-
64 packages, 238 internal edges, and 11 explicit debts. An optimized ASAN
3434-
run completes 256 cases in 225 seconds without errors. The unoptimized
3435-
startup 30-second timeout was diagnosed and is not counted as a pass; the
3436-
root warm 64-case run remains pending after the final metadata-accounting
3437-
changes.
3438-
3439-
The native ScreenCaptureKit `-3802` stream failure remains. The four raw host
3440-
APIs and private helper stay retained, and the
3441-
`MEDIA_PROPERTIES_NATIVE_VERIFIED` boundary marker is absent. Full hooks,
3442-
cleanup, the final warm ASAN run, and native acceptance remain pending; this
3443-
inventory does not retire a host route.
3396+
Implementation commit `1f07df9db` adds focused `litchi-keynote` media-property
3397+
transactions. Detached `MediaProperties` retains optional hyperlink and
3398+
accessibility-description strings, lock state, and aspect-ratio lock state.
3399+
`Package::{slide_media_properties,edit_slide_media_properties,
3400+
apply_slide_media_properties}` uses typed source-order selectors for both
3401+
file movies and audio controls, keeping native identifiers private.
3402+
3403+
The private 577-byte Buffa projection has SHA-256
3404+
`3945a92dcc3f25333d6375eb68aaaf762ea00141cfd9055f71bf65cfb4f12b02`.
3405+
Its lazy codec preserves unknown bytes and distinguishes omission from
3406+
explicit empty strings and `false`. Properties admit absent or zero geometry;
3407+
the existing geometry and position owners retain their own validation.
3408+
Ownership checks cover styles, captions, comments, group/container/slide
3409+
owners, header references, and materialized media. The existing replacement
3410+
owner supplies content and optional-poster validation under residual limits.
3411+
Metadata traversal, parsing, allocation, hashing, and rewrite work are charged;
3412+
unselected media siblings retain their opaque messages.
3413+
3414+
Verification receipts:
3415+
3416+
- Neutral codec: 10 tests; common: 166; Keynote library: 273.
3417+
- Media-properties integration: 17; existing audio-position and movie-geometry
3418+
integration: 13 and 27. Checks cover exact no-op, inverse, replay,
3419+
double-inverse, locality, malformed headers, limits, and opaque siblings.
3420+
- Host-properties tests: 10, including all three raw/focused parity cases and
3421+
file media without a poster.
3422+
- Python: 978 tests. Full boundary scan: 64 workspace packages, 238 internal
3423+
dependency declarations, and 11 existing explicit debt items.
3424+
- Optimized AddressSanitizer: 256 runs in 225 seconds, followed by 64 runs in
3425+
50 seconds after the final metadata-accounting changes; both passed.
3426+
The earlier unoptimized startup timeout is not counted as a passing run.
3427+
- Normal commit hooks passed: formatting, manifest sorting, workspace
3428+
all-features library Clippy with `-D warnings`, workspace library and
3429+
integration tests, and workspace doctests.
3430+
3431+
Cleanup removed the owned scratch directory, generated standalone fuzz lock,
3432+
empty artifact directories, and approximately 3.7 GiB of sanitizer build
3433+
artifacts. Approximately 52 GiB remained free after the workspace gates.
3434+
3435+
Native acceptance remains open: Computer Use failed with ScreenCaptureKit
3436+
`-3802` (`Stream failed to start`). No native media-properties fixture or
3437+
save/actual-close/exact-reopen receipt was produced. All four raw host APIs
3438+
and their private helper remain retained. `MEDIA_PROPERTIES_NATIVE_VERIFIED`
3439+
is absent, so this increment records source ownership and does not retire
3440+
those routes or complete the monolith exit.

docs/IWORK_PROGRESS_AUDIT.md

Lines changed: 45 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -815,51 +815,48 @@ still require focused owners.
815815

816816
## 2026-09-07 focused Keynote media-properties source ownership
817817

818-
This is a bounded source-ownership record. `litchi-keynote` now has the
819-
semantic `MediaProperties` value with four optional fields: hyperlink and
820-
accessibility-description strings, plus lock and aspect-ratio-lock booleans.
821-
The source-order typed `Package::{slide_media_properties,
822-
edit_slide_media_properties,apply_slide_media_properties}` API keeps native
823-
identifiers and wire values private. Its strict private 577-byte Buffa
824-
projection (`keynote_media_properties_codec`, SHA-256
825-
`3945a92dcc3f25333d6375eb68aaaf762ea00141cfd9055f71bf65cfb4f12b02`) keeps
826-
omitted values distinct from explicit empty strings and `false` values. Zero
827-
and absent geometry remain canonical optional geometry; positive geometry
828-
retains the existing ownership requirements.
829-
830-
Exact no-op, inverse, replay, locality, and budget checks are in progress.
831-
The native CUA attempt still fails with ScreenCaptureKit error `-3802`
832-
(`Stream failed to start`), so there is no native media-properties fixture,
833-
save/actual-close/exact-reopen receipt, or retirement receipt. All four raw
834-
host APIs and their private helper remain retained with source-built parity
835-
oracles. Boundary retirement requires the
836-
`MEDIA_PROPERTIES_NATIVE_VERIFIED` marker, which is absent.
837-
838-
### Current media-properties verification update (2026-09-07)
839-
840-
The neutral media-properties codec passes 10 cases with Clippy `-D warnings`;
841-
the common checks pass 166 cases, the Keynote library passes 273 cases, and
842-
the new media-properties integration slice passes 17 cases, including
843-
unselected Audio B opaque-message preservation. Existing audio
844-
position and movie-geometry integration passes 13 and 27 cases respectively.
845-
The host-properties slice passes 10 cases, including all three raw-focused
846-
parity cases and the absent-file-poster case. Focused checks verify exact
847-
no-op, inverse, replay, double-inverse, locality, malformed-header,
848-
reference-limit, and budget behavior. Shared-metadata work is precharged
849-
before mutation, and sibling validation is selected-only. Graph validation
850-
covers styles, comments, captions, ownership, media content, and optional
851-
posters through the existing replacement owner and residual-cap checks.
852-
853-
Python verification remains at 978 cases, and the full boundary scan passes
854-
64 packages, 238 internal edges, and 11 explicit debts. An optimized ASAN
855-
run completes 256 cases in 225 seconds without errors. The unoptimized
856-
startup 30-second timeout was diagnosed and is not counted as a pass; the
857-
root warm 64-case run remains pending after the final metadata-accounting
858-
changes.
859-
860-
The native ScreenCaptureKit `-3802` stream failure remains, so no native
861-
media-properties fixture or native acceptance exists. The four raw host APIs
862-
and private helper remain retained, and the
863-
`MEDIA_PROPERTIES_NATIVE_VERIFIED` boundary marker is absent. Full hooks,
864-
cleanup, the final warm ASAN run, and the native gate remain pending for the
865-
root receipt.
818+
Implementation commit `1f07df9db` adds focused `litchi-keynote` media-property
819+
transactions. Detached `MediaProperties` retains optional hyperlink and
820+
accessibility-description strings, lock state, and aspect-ratio lock state.
821+
`Package::{slide_media_properties,edit_slide_media_properties,
822+
apply_slide_media_properties}` uses typed source-order selectors for both
823+
file movies and audio controls, keeping native identifiers private.
824+
825+
The private 577-byte Buffa projection has SHA-256
826+
`3945a92dcc3f25333d6375eb68aaaf762ea00141cfd9055f71bf65cfb4f12b02`.
827+
Its lazy codec preserves unknown bytes and distinguishes omission from
828+
explicit empty strings and `false`. Properties admit absent or zero geometry;
829+
the existing geometry and position owners retain their own validation.
830+
Ownership checks cover styles, captions, comments, group/container/slide
831+
owners, header references, and materialized media. The existing replacement
832+
owner supplies content and optional-poster validation under residual limits.
833+
Metadata traversal, parsing, allocation, hashing, and rewrite work are charged;
834+
unselected media siblings retain their opaque messages.
835+
836+
Verification receipts:
837+
838+
- Neutral codec: 10 tests; common: 166; Keynote library: 273.
839+
- Media-properties integration: 17; existing audio-position and movie-geometry
840+
integration: 13 and 27. Checks cover exact no-op, inverse, replay,
841+
double-inverse, locality, malformed headers, limits, and opaque siblings.
842+
- Host-properties tests: 10, including all three raw/focused parity cases and
843+
file media without a poster.
844+
- Python: 978 tests. Full boundary scan: 64 workspace packages, 238 internal
845+
dependency declarations, and 11 existing explicit debt items.
846+
- Optimized AddressSanitizer: 256 runs in 225 seconds, followed by 64 runs in
847+
50 seconds after the final metadata-accounting changes; both passed.
848+
The earlier unoptimized startup timeout is not counted as a passing run.
849+
- Normal commit hooks passed: formatting, manifest sorting, workspace
850+
all-features library Clippy with `-D warnings`, workspace library and
851+
integration tests, and workspace doctests.
852+
853+
Cleanup removed the owned scratch directory, generated standalone fuzz lock,
854+
empty artifact directories, and approximately 3.7 GiB of sanitizer build
855+
artifacts. Approximately 52 GiB remained free after the workspace gates.
856+
857+
Native acceptance remains open: Computer Use failed with ScreenCaptureKit
858+
`-3802` (`Stream failed to start`). No native media-properties fixture or
859+
save/actual-close/exact-reopen receipt was produced. All four raw host APIs
860+
and their private helper remain retained. `MEDIA_PROPERTIES_NATIVE_VERIFIED`
861+
is absent, so this increment records source ownership and does not retire
862+
those routes or complete the monolith exit.

docs/adr/0008-migration-and-verification.md

Lines changed: 45 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -17829,51 +17829,48 @@ still require focused owners.
1782917829

1783017830
## 2026-09-07 focused Keynote media-properties source ownership
1783117831

17832-
This is a bounded source-ownership record. `litchi-keynote` now has the
17833-
semantic `MediaProperties` value with four optional fields: hyperlink and
17834-
accessibility-description strings, plus lock and aspect-ratio-lock booleans.
17835-
The source-order typed `Package::{slide_media_properties,
17836-
edit_slide_media_properties,apply_slide_media_properties}` API keeps native
17837-
identifiers and wire values private. Its strict private 577-byte Buffa
17838-
projection (`keynote_media_properties_codec`, SHA-256
17839-
`3945a92dcc3f25333d6375eb68aaaf762ea00141cfd9055f71bf65cfb4f12b02`) keeps
17840-
omitted values distinct from explicit empty strings and `false` values. Zero
17841-
and absent geometry remain canonical optional geometry; positive geometry
17842-
retains the existing ownership requirements.
17843-
17844-
Exact no-op, inverse, replay, locality, and budget checks are in progress.
17845-
The native CUA attempt still fails with ScreenCaptureKit error `-3802`
17846-
(`Stream failed to start`), so there is no native media-properties fixture,
17847-
save/actual-close/exact-reopen receipt, or retirement receipt. All four raw
17848-
host APIs and their private helper remain retained with source-built parity
17849-
oracles. Boundary retirement requires the
17850-
`MEDIA_PROPERTIES_NATIVE_VERIFIED` marker, which is absent.
17851-
17852-
### Current media-properties verification update (2026-09-07)
17853-
17854-
The neutral media-properties codec passes 10 cases with Clippy `-D warnings`;
17855-
the common checks pass 166 cases, the Keynote library passes 273 cases, and
17856-
the new media-properties integration slice passes 17 cases, including
17857-
unselected Audio B opaque-message preservation. Existing audio
17858-
position and movie-geometry integration passes 13 and 27 cases respectively.
17859-
The host-properties slice passes 10 cases, including all three raw-focused
17860-
parity cases and the absent-file-poster case. Focused checks verify exact
17861-
no-op, inverse, replay, double-inverse, locality, malformed-header,
17862-
reference-limit, and budget behavior. Shared-metadata work is precharged
17863-
before mutation, and sibling validation is selected-only. Graph validation
17864-
covers styles, comments, captions, ownership, media content, and optional
17865-
posters through the existing replacement owner and residual-cap checks.
17866-
17867-
Python verification remains at 978 cases, and the full boundary scan passes
17868-
64 packages, 238 internal edges, and 11 explicit debts. An optimized ASAN
17869-
run completes 256 cases in 225 seconds without errors. The unoptimized
17870-
startup 30-second timeout was diagnosed and is not counted as a pass; the
17871-
root warm 64-case run remains pending after the final metadata-accounting
17872-
changes.
17873-
17874-
The native ScreenCaptureKit `-3802` stream failure remains, so no native
17875-
media-properties fixture or native acceptance exists. The four raw host APIs
17876-
and private helper remain retained, and the
17877-
`MEDIA_PROPERTIES_NATIVE_VERIFIED` boundary marker is absent. Full hooks,
17878-
cleanup, the final warm ASAN run, and the native gate remain pending for the
17879-
root receipt.
17832+
Implementation commit `1f07df9db` adds focused `litchi-keynote` media-property
17833+
transactions. Detached `MediaProperties` retains optional hyperlink and
17834+
accessibility-description strings, lock state, and aspect-ratio lock state.
17835+
`Package::{slide_media_properties,edit_slide_media_properties,
17836+
apply_slide_media_properties}` uses typed source-order selectors for both
17837+
file movies and audio controls, keeping native identifiers private.
17838+
17839+
The private 577-byte Buffa projection has SHA-256
17840+
`3945a92dcc3f25333d6375eb68aaaf762ea00141cfd9055f71bf65cfb4f12b02`.
17841+
Its lazy codec preserves unknown bytes and distinguishes omission from
17842+
explicit empty strings and `false`. Properties admit absent or zero geometry;
17843+
the existing geometry and position owners retain their own validation.
17844+
Ownership checks cover styles, captions, comments, group/container/slide
17845+
owners, header references, and materialized media. The existing replacement
17846+
owner supplies content and optional-poster validation under residual limits.
17847+
Metadata traversal, parsing, allocation, hashing, and rewrite work are charged;
17848+
unselected media siblings retain their opaque messages.
17849+
17850+
Verification receipts:
17851+
17852+
- Neutral codec: 10 tests; common: 166; Keynote library: 273.
17853+
- Media-properties integration: 17; existing audio-position and movie-geometry
17854+
integration: 13 and 27. Checks cover exact no-op, inverse, replay,
17855+
double-inverse, locality, malformed headers, limits, and opaque siblings.
17856+
- Host-properties tests: 10, including all three raw/focused parity cases and
17857+
file media without a poster.
17858+
- Python: 978 tests. Full boundary scan: 64 workspace packages, 238 internal
17859+
dependency declarations, and 11 existing explicit debt items.
17860+
- Optimized AddressSanitizer: 256 runs in 225 seconds, followed by 64 runs in
17861+
50 seconds after the final metadata-accounting changes; both passed.
17862+
The earlier unoptimized startup timeout is not counted as a passing run.
17863+
- Normal commit hooks passed: formatting, manifest sorting, workspace
17864+
all-features library Clippy with `-D warnings`, workspace library and
17865+
integration tests, and workspace doctests.
17866+
17867+
Cleanup removed the owned scratch directory, generated standalone fuzz lock,
17868+
empty artifact directories, and approximately 3.7 GiB of sanitizer build
17869+
artifacts. Approximately 52 GiB remained free after the workspace gates.
17870+
17871+
Native acceptance remains open: Computer Use failed with ScreenCaptureKit
17872+
`-3802` (`Stream failed to start`). No native media-properties fixture or
17873+
save/actual-close/exact-reopen receipt was produced. All four raw host APIs
17874+
and their private helper remain retained. `MEDIA_PROPERTIES_NATIVE_VERIFIED`
17875+
is absent, so this increment records source ownership and does not retire
17876+
those routes or complete the monolith exit.

0 commit comments

Comments
 (0)