|
| 1 | +# Repository role and migration state — ADR-034 / ADR-035 / ADR-036 |
| 2 | + |
| 3 | +**This repository is designated the Spoken Audio Node** under ADR-034. **It is |
| 4 | +not that today**, and this file says plainly what has moved, what has not, and |
| 5 | +what each remaining step is waiting on. |
| 6 | + |
| 7 | +Role assignment lives here; the reason lives in the governance registry. Do not |
| 8 | +restate the rationale in this repository — cite the record. |
| 9 | + |
| 10 | +- [ADR-034 — split axis](https://github.com/Starisian-Technologies/sparxstar-architecture-governance-registry/blob/main/standards/decisions/ADR-034-capture-experience-vs-audio-lifecycle-split.md) |
| 11 | +- [ADR-035 — capture profiles](https://github.com/Starisian-Technologies/sparxstar-architecture-governance-registry/blob/main/standards/decisions/ADR-035-capture-profiles-not-a-platform-audio-ceiling.md) |
| 12 | +- [ADR-036 — elicitation pacing is not acoustic prosody](https://github.com/Starisian-Technologies/sparxstar-architecture-governance-registry/blob/main/standards/decisions/ADR-036-elicitation-pacing-is-not-acoustic-prosody.md) |
| 13 | + |
| 14 | +Seam contracts, which say what actually crosses each boundary: |
| 15 | + |
| 16 | +- [Capture → Ingestion](https://github.com/Starisian-Technologies/sparxstar-architecture-governance-registry/blob/main/contracts/spoken-audio-capture-to-ingestion.md) |
| 17 | +- [Asset → Records](https://github.com/Starisian-Technologies/sparxstar-architecture-governance-registry/blob/main/contracts/spoken-audio-asset-to-records.md) |
| 18 | + |
| 19 | +## What this repository will own |
| 20 | + |
| 21 | +Server-side ingestion, validation, integrity, immutable object storage, |
| 22 | +derivatives, quality measurements, bulk import, processing jobs, and authorized |
| 23 | +consumption. A service, not a set of pages. |
| 24 | + |
| 25 | +**It does not capture.** Browser microphone access, local and offline handling, |
| 26 | +the chunked-upload client and capture UX are the capture UI package's. The |
| 27 | +reviewed transcript and its translation are ESU's; acoustic measurement is |
| 28 | +ours, and interpreting what a measurement means is ESU's. |
| 29 | + |
| 30 | +**ESU** is the platform component that owns the canonical linguistic record — |
| 31 | +transcription, translation, interpretation, and human correction — and stores |
| 32 | +no audio. Its canonical name and scope live in the governance registry and in |
| 33 | +ESU's own repository; this file deliberately does not restate an expansion it |
| 34 | +cannot verify from either, and no reader should infer one from context. |
| 35 | + |
| 36 | +## What it stops owning |
| 37 | + |
| 38 | +CMS templates and shortcodes · CMS admin screens · custom-post-type and |
| 39 | +attachment persistence · a CMS custom-field plugin as its primary database · |
| 40 | +browser recorder code · CSS and frontend rendering · transcript review · |
| 41 | +prosodic interpretation. |
| 42 | + |
| 43 | +## Migration state, honestly |
| 44 | + |
| 45 | +### Done |
| 46 | + |
| 47 | +- The **manifest-driven UI package boundary** exists |
| 48 | + (`starmus-ui-packages.json`, `StarmusUiPackageResolver`). This is the |
| 49 | + mechanism that will let the plugin stop shipping its own copy of the capture |
| 50 | + JS and consume the built capture UI package instead. It is a precondition for |
| 51 | + everything below, and it landed. |
| 52 | +- The capture UI package has removed the paced reader, the transcript-sync |
| 53 | + controller, and the platform-wide audio ceiling. |
| 54 | + |
| 55 | +### Blocked, and on what |
| 56 | + |
| 57 | +1. **Removing the duplicated capture JS from `src/js/`.** Nineteen files, of |
| 58 | + which fifteen are diverged copies of files in the capture UI package. One |
| 59 | + home per capture-path source file (ADR-034). **Blocked on** the capture UI |
| 60 | + package being resolvable through the manifest as a published artifact rather |
| 61 | + than a sibling checkout. Deleting them before then breaks a shipping |
| 62 | + product. |
| 63 | +2. **Removing the prosody assets** (`src/js/prosody/`, |
| 64 | + `src/css/starmus-prosody-engine.css` and their built forms) and the |
| 65 | + `prosodyScript` / `prosodyStyle` manifest surface. **Blocked on** the |
| 66 | + elicitation pacing package being publishable: `StarmusProsodyPlayer.php` |
| 67 | + enqueues these today, and the resolver needs a URL to point at instead. |
| 68 | + Deleting the assets first takes the paced reader off every live page. |
| 69 | +3. **Standing up the ingestion service itself.** **Blocked on** the items the |
| 70 | + Capture → Ingestion contract lists as *owed*: the endpoint path and auth |
| 71 | + model, the upload metadata key set, the acknowledgement and error envelope, |
| 72 | + and confirmation that the consumer verifies `sha256` as the producer sends. |
| 73 | + **No repository implements a guess at those.** Writing endpoint paths, field |
| 74 | + names or status codes for a service that does not exist is how fabricated |
| 75 | + identifiers ship, and this organisation has shipped them before. |
| 76 | +4. **Which repository carries the CMS host product** once this one becomes a |
| 77 | + service — this repo's residue, or a new one. Explicitly left open by |
| 78 | + ADR-034. **Decide it before moving files, not during.** |
| 79 | + |
| 80 | +## Rules that already bind this repository |
| 81 | + |
| 82 | +- **No platform-wide audio ceiling** (ADR-035). A capture profile travels with |
| 83 | + the asset; an asset carrying none is *stored* and merely not admissible as a |
| 84 | + source for acoustic measurement — never rejected, because unconditional |
| 85 | + capture still holds. |
| 86 | +- **No transcoding on the ingestion path.** `import` means the received bytes |
| 87 | + are preserved. Derivatives are additional objects. |
| 88 | +- **Never hold the transcript of record.** A machine transcript may exist as a |
| 89 | + processing artifact of an asset, marked unreviewed. Consumers read ESU. |
0 commit comments