The last substantive a11y-tagged findings (Web:S4084 ×8): playground-videos-pane ×2, lesson-video-moderation, country-detail, blog-create, blog-entry, confirm-delete, asset-approval. Videos have no subtitle/description files.
This is CONTENT + FEATURE work, not code cleanup:
Caption tracks need to be produced for platform-owned videos (lesson/playground/geography).
User-uploaded videos (blog) need a caption-upload path (or auto-transcription — the swarm has GPU capacity; whisper-class model as an EventHandler worker would fit the existing pipeline architecture).
The
Split from epic #732 (whose Sonar backlog is otherwise fully dispositioned) so the epic can close.
The last substantive a11y-tagged findings (Web:S4084 ×8): playground-videos-pane ×2, lesson-video-moderation, country-detail, blog-create, blog-entry, confirm-delete, asset-approval. Videos have no <track> subtitle/description files.
This is CONTENT + FEATURE work, not code cleanup:
1. Caption tracks need to be produced for platform-owned videos (lesson/playground/geography).
2. User-uploaded videos (blog) need a caption-upload path (or auto-transcription — the swarm has GPU capacity; whisper-class model as an EventHandler worker would fit the existing pipeline architecture).
3. The <video> templates then get <track kind="captions"> wiring.
Split from epic #732 (whose Sonar backlog is otherwise fully dispositioned) so the epic can close.
Audited at file level against origin/master — NOT DONE. 0 of 8.
git grep -n "<track" origin/master across the entire spikersoft-angular repo returns zero hits — not just in templates, in any file type. All eight media elements from the ticket are still present and track-less:
libraries/platform/clang-runtime/src/lib/playground-videos-pane.component.html:14 and :52
Remaining: all three phases — caption production, the blog caption-upload / auto-transcription path, and the <track> wiring itself.
Two observations that might help scope this:
The eight aren't equivalent, and splitting them would unblock most of the value. Three (lesson-video-moderation, asset-approval, confirm-delete) are staff/admin-only preview surfaces — they show uploaded media to a moderator, not to learners. Those arguably need a <track kind="descriptions"> or an explicit exemption rationale rather than authored captions. The learner-facing ones — the two playground-videos-pane elements, country-detail, and the two blog surfaces — are where captions actually matter for the students this platform serves.
The blog pair needs the upload path first.blog-create and blog-entry render user-supplied media, so there's nothing to caption until authors can supply a caption file (or auto-transcription exists). That's the phase-2 dependency, and it means those two can't be closed by template edits alone.
So a reasonable first slice is the four platform-owned learner-facing elements, where the video content is ours and captions can simply be authored.
Audited at file level against `origin/master` — **NOT DONE. 0 of 8.**
`git grep -n "<track" origin/master` across the **entire** spikersoft-angular repo returns **zero hits** — not just in templates, in any file type. All eight media elements from the ticket are still present and track-less:
- `libraries/platform/clang-runtime/src/lib/playground-videos-pane.component.html:14` and `:52`
- `projects/spikersoft/src/app/_components/admin/lesson-video-moderation/lesson-video-moderation.component.html:45`
- `projects/spikersoft/src/app/_components/learning/geography-explorer/country-detail/country-detail.component.html:76`
- `libraries/features/blog/src/lib/components/blog-create/blog-create.html:173`
- `libraries/features/blog/src/lib/components/blog-entry/blog-entry-component.html:228`
- `libraries/features/blog/src/lib/components/confirm-delete/confirm-delete.component.html:13`
- `projects/spikersoft/src/app/_components/asset-approval/asset-approval.component.html:10`
Exactly the ticket's list, unchanged.
**Remaining:** all three phases — caption production, the blog caption-upload / auto-transcription path, and the `<track>` wiring itself.
Two observations that might help scope this:
**The eight aren't equivalent, and splitting them would unblock most of the value.** Three (`lesson-video-moderation`, `asset-approval`, `confirm-delete`) are **staff/admin-only preview surfaces** — they show uploaded media to a moderator, not to learners. Those arguably need a `<track kind="descriptions">` or an explicit exemption rationale rather than authored captions. The learner-facing ones — the two `playground-videos-pane` elements, `country-detail`, and the two blog surfaces — are where captions actually matter for the students this platform serves.
**The blog pair needs the upload path first.** `blog-create` and `blog-entry` render user-supplied media, so there's nothing to caption until authors can supply a caption file (or auto-transcription exists). That's the phase-2 dependency, and it means those two can't be closed by template edits alone.
So a reasonable first slice is the four platform-owned learner-facing elements, where the video content is ours and captions can simply be authored.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The last substantive a11y-tagged findings (Web:S4084 ×8): playground-videos-pane ×2, lesson-video-moderation, country-detail, blog-create, blog-entry, confirm-delete, asset-approval. Videos have no subtitle/description files.
This is CONTENT + FEATURE work, not code cleanup:
Split from epic #732 (whose Sonar backlog is otherwise fully dispositioned) so the epic can close.
Audited at file level against
origin/master— NOT DONE. 0 of 8.git grep -n "<track" origin/masteracross the entire spikersoft-angular repo returns zero hits — not just in templates, in any file type. All eight media elements from the ticket are still present and track-less:libraries/platform/clang-runtime/src/lib/playground-videos-pane.component.html:14and:52projects/spikersoft/src/app/_components/admin/lesson-video-moderation/lesson-video-moderation.component.html:45projects/spikersoft/src/app/_components/learning/geography-explorer/country-detail/country-detail.component.html:76libraries/features/blog/src/lib/components/blog-create/blog-create.html:173libraries/features/blog/src/lib/components/blog-entry/blog-entry-component.html:228libraries/features/blog/src/lib/components/confirm-delete/confirm-delete.component.html:13projects/spikersoft/src/app/_components/asset-approval/asset-approval.component.html:10Exactly the ticket's list, unchanged.
Remaining: all three phases — caption production, the blog caption-upload / auto-transcription path, and the
<track>wiring itself.Two observations that might help scope this:
The eight aren't equivalent, and splitting them would unblock most of the value. Three (
lesson-video-moderation,asset-approval,confirm-delete) are staff/admin-only preview surfaces — they show uploaded media to a moderator, not to learners. Those arguably need a<track kind="descriptions">or an explicit exemption rationale rather than authored captions. The learner-facing ones — the twoplayground-videos-paneelements,country-detail, and the two blog surfaces — are where captions actually matter for the students this platform serves.The blog pair needs the upload path first.
blog-createandblog-entryrender user-supplied media, so there's nothing to caption until authors can supply a caption file (or auto-transcription exists). That's the phase-2 dependency, and it means those two can't be closed by template edits alone.So a reasonable first slice is the four platform-owned learner-facing elements, where the video content is ours and captions can simply be authored.