# Proposal §29 Repository Evidence — Link Validation and Symbol-Level Record (YSD-0102)

Validated 2026-07-18 at commit `0808b8cb5b` (working tree). Every link in
proposal Section 29 was resolved from `docs/proposals/` and every §29.3
primitive was opened and its exact export surface recorded, replacing
directory-level claims with named symbols.

## Link validation result

All 30 links resolve — 5 ADRs (§29.1), 10 domain docs (§29.2), 15 implementation
primitives (§29.3). **No stale paths; no replacements required.** Re-run the
check with the command recorded in the evidence log (YSD-0102 entry).

## §29.3 exact reusable symbols, services, and contracts

### Aja reference-video (`apps/aja/svc-reference-video/src/`)

- `types.ts` — 87 exports. Branded IDs + generators: `VideoId`, `SegmentId`,
  `AnnotationId`, `ClipId`, `CategoryId`, `TagId`, `WorkspaceId`, `UserId`,
  `CommentId`, `ReviewId`, `AssignmentId`, `VersionId`, `EmbeddingId` with
  `generate*Id()` factories. Media identity: `VideoCodec`, `AudioCodec`,
  `ContainerFormat`, `ColorSpace`, `PixelFormat`, `VideoStreamMetadata`,
  `AudioStreamMetadata`, `VideoMetadata`, `VideoRendition`, `ThumbnailSprite`,
  `Video`, `VideoSourceType`, `VideoStatus`. Analysis: `DetectedScene`,
  `SceneDetectionAlgorithm`, `SceneTransitionType`, `SceneDetectionConfig`,
  `SceneDetectionResult`, `DetectedPerson`, `ActivityClassification`,
  `SkeletonJoint`, `SkeletonPose`, `BoundingBox`, `PolygonPoint`. Study objects:
  `Segment`, `SegmentType`, `Annotation`, `AnnotationType`, `Clip`, `Category`,
  `Tag`, `VideoEmbedding`, `EmbeddingType`, `SearchQuery`, `SearchResult`.
  Collaboration: `Workspace`, `WorkspaceRole`, `WorkspaceMember`, `Comment`,
  `Review`, `ReviewStatus`, `Assignment`, `Version`. Upload: `UploadRequest`,
  `BatchUploadRequest`, `UploadProgress`. Errors: `ReferenceVideoErrorCode`,
  `ReferenceVideoError`. **Reuse posture:** the type vocabulary is a strong
  starting shape for YSD-2020–2052 contracts, but IDs are service-local (no
  tenant scoping), rights are absent, and review states do not match the
  YSD-2005 vocabulary — treat as input, not as the shared contract.
- `scene-detection.ts` — `SceneDetectionService`, `MotionSegmentationService`,
  `HSVColor`, `FrameStats`, `FrameDifference`, configs (`DEFAULT_SCENE_CONFIG`,
  `CONTENT_AWARE_CONFIG`, `ADAPTIVE_CONFIG`, `THRESHOLD_CONFIG`), factories
  `createSceneDetectionService`, `createMotionSegmentationService`,
  `detectScenes`. **Caveat:** frame statistics and scene changes are _simulated_
  (`generateSimulatedFrameStats`/`generateSimulatedSceneChanges`, lines
  271–334); the algorithmic scaffolding (HSV histogram diffing, threshold
  configs) is real but has no real frame source. Per YSD-1007 wrap behind the
  Aja adapter as `unsupported`/`unavailable` until real decoding exists.
- `metadata-extraction.ts` — `MetadataExtractor`, `ThumbnailGenerator`,
  `MetadataExtractionConfig`, `ThumbnailConfig`, defaults, factories,
  `extractVideoMetadata`. **Caveat:** FFprobe execution is simulated from the
  filename (`getSimulatedFFprobeOutput`, lines 259–282/508–511; marked
  `stub:legitimate` V2-deferred per V1-P2-0331). Same adapter posture as above.

### Yemaya creative agents (`libs/yemaya/agents/src/creative/`)

- `performance-reference-library.ts` — `PerformanceReferenceLibrary` (class),
  `createPerformanceReferenceLibrary`, `PerformanceReferenceClip`,
  `BenchmarkPerformance`, `StyleExemplar`, `PerformanceDimension` (facial /
  vocal / timing / chemistry / intention / subtext dimensions),
  `PerformanceDimensionScores`, `PerformanceReferenceSearch`,
  `PerformanceCalibrationProfile`, `PerformanceComparisonInput/Result`.
  **Caveats:** storage is in-memory `Map`s (lines 183–185); rights are a
  four-value enum (line 36). The _dimension vocabulary_ is the reusable part.
- Study-relevant analyzers (each a `.ts` module with a primary class):
  `facial-expression-analyzer`, `vocal-performance-analyzer`,
  `timing-rhythm-analyzer`, `chemistry-analyzer`, `body-language-evaluator`,
  `scene-intention-analyzer`, `subtext-analysis-communication-engine`,
  `emotional-arc-tracker`, `emotional-mapping-engine`, `take-comparison-matrix`,
  `comparative-take-analyzer`, `take-ranking-system`, `best-segment-extractor`,
  `performance-highlight-extractor`, `segment-boundary-detector`,
  `continuity-violation-detector`, `timing-rhythm-analyzer`. **Caveat:** these
  analyzers largely consume pre-extracted features; none owns reliable media
  extraction (proposal §5.2).
- **Prohibited-inference risk (flag for YSD-4052/YSD-9 lens work):**
  `eye-contact-gaze-monitor`, `fatigue-stress-detector`,
  `engagement-authenticity-scorer`, `actor-response-detection-system` infer real
  internal states (gaze, fatigue/stress, authenticity). Reusing them as-is in
  the study workspace would violate the proposal's prohibition on real-state
  emotion inference and biometric-truth claims; they require
  behavior-observation reframing or exclusion, decided per-lens during Section 9
  work — do not import them via a blanket adapter.
- The directory also contains ~60 production-direction modules (`ai-director-*`,
  drone display, scheduling, reshoot workflow, writers' agents) that are out of
  study-workspace scope.

### Sophia transcript ingestion (`libs/sophia/ingestion/src/adapters/video-transcript.ts`)

- `VideoTranscriptAdapter implements SourceAdapter`, `VideoTranscriber`
  (interface seam for real ASR), `VideoTranscriptEnvelope`, `VideoSegment`,
  `VideoAdapterOptions`, `VIDEO_ADAPTER_VERSION = '1.0.0'`. **Reuse posture:**
  the proposal's cited timestamp-anchored evidence pattern; the `SourceAdapter`
  contract it implements is the integration point for YSD-2029 anchors.

### Metis learning (`libs/metis/adaptive/src/`)

- `profiling/knowledge-tracker.ts` — `KnowledgeTracker` (Bayesian mastery over a
  prerequisite graph), `KnowledgeObservation`, `PrerequisiteEdge`,
  `KnowledgeTrackerConfig`, factories `createKnowledgeTracker`,
  `createKnowledgeTrackerWithDecay`, `createStrictKnowledgeTracker`. Maps to
  YSD-2047 MasteryRecord and YSD-14xxx mastery flows.
- `path/fsrs.ts` — `FSRS` (FSRS-5 scheduler), `FSRSCard`, `FSRSConfig`,
  `FSRSRating`, `FSRSState`, `FSRS5_DEFAULT_WEIGHTS`, `DECAY`, `FACTOR`,
  factories `createFSRS`, `createHighRetentionFSRS`, `createRelaxedFSRS`. Direct
  fit for YSD-2048 SpacedReviewItem scheduling (scheduler version = FSRS-5
  weights vector).

### Shared content signing (`libs/shared/content-signing/src/`)

- `index.ts` — `ED25519_ALGORITHM`, `sha256Hex`,
  `generateEd25519SigningKeyPair`, `ed25519Sign`, `ed25519Verify`,
  `ed25519SignBase64`, `ed25519VerifyBase64`, `ClaimSigner`, `ClaimVerifier`
  (interfaces), `Ed25519ClaimSigner`, `Ed25519ClaimVerifier`; `browser.ts`
  provides the browser-side verifier. Fit for YSD-4125/4126 signed study packs
  and YSD-5008 signed session manifests.

### Nisaba standards (`libs/nisaba/standards/src/reference-linked-data.ts`)

- CTS/citation machinery: `CTSUrn`, `CTSTextGroup`, `CTSWork`, `CTSEdition`,
  `CTSTranslation`, `CTSPassage`, `CTS_NAMESPACE_REGISTRY`, `parseCTSUrn`,
  `formatCTSUrn`, `validateCTSUrn`, `buildGetPassageRequest`,
  `buildGetValidReffRequest`, `buildGetCapabilitiesRequest`, `parseCTSResponse`;
  bibliography contracts `BibTeXEntry(+Type/Database)`, `RISRecord`,
  `CSLName/CSLDate/CSLItemType`. **Caveat (YSD-0113):** the edition model here
  is philology-shaped (critical editions of texts, CTS URNs); it proves Nisaba's
  durable-citation competence but is not a media cut/build model. The
  bibliography/citation exports are directly reusable for YSD-15xxx citation
  formats.

### Aphrodite game replay (`libs/aphrodite/game-runtime/src/replay/`)

- `input-recorder.ts` — `InputRecorder`, `createInputRecorder{,30fps,120fps}`.
- `replay-player.ts` — `ReplayPlayer`,
  `createReplayPlayer/createSlowMotionPlayer/createFastForwardPlayer`.
- `state-snapshotter.ts` — `StateSnapshotter`, `computeDiff`, `applyDiff`,
  `createStateSnapshotter/createFrequentSnapshotter/createSparseSnapshotter`.
- `replay-system.ts` — `ReplayFile`, `ReplayFileHeader`,
  `ReplayFileMagic = 'OSHRPLY'`, `ReplayFileVersion = 1`,
  `CompressedInputFrame`, `ReplayCameraMode`, `ReplayFindingSeverity`.
- `replay-exporter.ts` — `ReplayExporter`. **Reuse posture:** deterministic
  input-replay + snapshot/diff primitives for YSD-2077 replay identity and
  Section 12 Tier B/C study; product-specific (aphrodite), so consumed via the
  Bellona/product-runtime adapter boundary (YSD-0158), not imported directly.

### V2 player-behavior heatmaps (`apps/v2/player-behavior-heatmaps/src/`)

- `buildV2PlayerBehaviorHeatmapsSurface`, `V2PlayerBehaviorHeatmapsSurface`,
  `V2PlayerBehaviorHeatmapMap/Cell/Voxel`, `V2PlayerBehaviorPositionSample`,
  `V2PlayerBehaviorHeatmapEventKind = 'movement' | 'death' | 'linger'`,
  binding/policy IDs (`v2.telemetry.player-behavior-heatmaps`,
  `v2-player-behavior-heatmaps-v1`). Telemetry-aggregation shape for Section 12
  instrumented study; per-title, so again adapter-mediated.

### Fixture-backed Studio/product surfaces (interaction concepts only)

- `apps/oshun/web/src/components/studio/StudioHathorDirectorPerformanceReplaySystemPanel.tsx`
  — fixture-driven replay/readiness panel; reusable as interaction reference for
  Section 8, not as a primitive.
- `apps/yemaya/studio-web/src/pages/AnimationLearningPage.tsx` — hard-coded
  learning material.
- `apps/yemaya/studio-web/src/pages/DailiesReviewPage.tsx` — fixture-backed
  review interaction.

## Notes feeding later items

- The YSD-4052 conflict list above (gaze/fatigue/authenticity analyzers) must be
  carried into the Section 4.4 safeguards and the Section 9 lens decisions.
- The reuse-versus-wrap-versus-replace decision per primitive is YSD-0103's
  ledger, which builds on this record.
