Feature status¶
This page tracks how much of each topic in this manual is actually built, and explains how we decide. Every page also carries its own badge under the title.
Note
Status reflects what is deployed, not what is merged: portal and API 1.3.21 (10 September 2026) and participant app 1.2.14 (build 87, 13 August 2026). A feature is only counted once it has reached researchers and participants.
Reviewed 10 September 2026 against the code and against the open issues in
tinnitus-api and tinnitus-app.
What the badges mean¶
🟢 Live works end-to-end in the deployed build, is covered by tests, and has no open high-severity defects.
🟠 In progress the code exists but is not fully wired, is mid-refactor, or has a known defect that blocks someone.
🔵 Portal-only built and configurable, but switched off until a researcher enables it, so a trial set up from the defaults does not get it.
⚪ Planned not built yet: a placeholder, a stub, or absent.
How we decide¶
For each topic we check, against the deployed build:
End-to-end wired? The backend serves it, the portal configures it, and the participant app renders or acts on it.
Code state. Committed and integrated, work-in-progress, a placeholder, or absent.
Tests. Does it have automated tests that pass?
App parity. Does the participant app act on the portal’s configuration, or is the behaviour hardcoded or a placeholder?
Open defects. Any open
severity:criticalorseverity:highissue against a topic keeps it out of 🟢 Live, however complete the code looks.
A topic is 🟢 Live only when all five hold. If the app is hardcoded or the work is unfinished it is 🟠 In progress; if the capability exists but nothing uses it until a researcher turns it on, it is 🔵 Portal-only; if there is nothing to use yet it is ⚪ Planned.
Every row cites a file or an issue number. A row that cites neither is an opinion.
Status by topic¶
Topic |
Status |
Notes |
|---|---|---|
Getting started |
🟢 Live |
|
About the trial |
🟢 Live |
unmodulated washout ⚪ Planned; the debrief does not reveal which arm you were on |
Core concepts |
🟢 Live |
unmodulated washout ⚪ Planned |
Setup wizard |
🟢 Live |
all 8 steps complete, each with its own readiness gate |
Step 1 Identity |
🟢 Live |
|
Step 2 Assessments |
🟢 Live |
enables schedules; see the Assessments row for what ships enabled |
Step 3 Treatment Phases |
🟢 Live |
the enrolment plan is configured on Step 4 |
Step 4 Schema |
🟢 Live |
crossover fully supported; carries the enrolment plan (targets per pathway, rate, live read-out). Editing quirks: #46, #47 |
Step 5 Sessions |
🟢 Live |
|
Step 6 Audio |
🟢 Live |
protocol values are read-only; unmodulated-washout audio ⚪ Planned |
Step 7 Compliance |
🟢 Live |
|
Step 8 Launch |
🟢 Live |
checks each required audio slot, not just the file count |
Running a trial |
🟠 In progress |
dashboard and both recruitment gates live; no adherence or compliance figures exist and there is no per-participant progress view (#50). Participants are contacted from the trial’s support address, not automatically |
Enrolment and randomisation |
🟠 In progress |
allocation and weighting work (per randomisation pathway, not per arm). #38 is fixed and live: nothing names the treatment group any more. One narrower gap remains until 1.3.22 — the assigned sound file’s name reveals the modulation band, which differs by group (#64) |
Participants and lifecycle |
🟠 In progress |
withdrawal is recorded with its cause; inactivity dropout and data deletion only run when someone runs them by hand (see Scheduled jobs). Open: #42, #43 |
Assessments |
🔵 Portal-only |
the engine, scoring and all nine questionnaires are built, but the reference configuration only enables three baselines, the blinding guess and screening. Daily check-in, before/after-listening and the final assessment ship switched off and must be enabled on Step 2 |
Participant app experience |
🟠 In progress |
last shipped 13 August 2026, before the current portal releases. Listening-rating sliders are still hardcoded; five participant-blocking defects are open (#16, #17, #18, #19, #22). Unmodulated washout ⚪ Planned |
Audio pipeline |
🟠 In progress |
matching and delivery work; one file per slot, replaced on upload. But assignment fails silently in twelve places with no logging, and the participant’s matched frequency is re-derived from a float each time rather than stored (#41). Files are served by 1-hour signed URLs, with no authenticated media endpoint. Unmodulated-washout playback ⚪ Planned |
Data export |
⚪ Planned |
there is no participant-data export. The only export in the portal is the frequency-mapping lookup table |
Notifications and reminders |
⚪ Planned |
no email, no push, no reminders. In-app messaging is a fixed banner per trial state (#23) |
Adherence and compliance |
⚪ Planned |
sessions are recorded, but nothing computes adherence, streaks or missed sessions |
Scheduled jobs |
🟠 In progress |
|
Access management |
🟢 Live |
roles and ownership transfer are covered by tests; document preview is not yet scoped to the owning trial (#45) |
Reference |
🟢 Live |
The short version¶
The researcher portal is in good shape. All eight setup steps are complete and gated, roles and access are covered by tests, and the launch check now verifies every required audio slot rather than counting files.
Three things are not what an earlier reading of this page implied.
Blinding is nearly, but not quite, closed. 1.3.21 fixed the serious part and is live: the app no longer names the treatment group anywhere, and the debrief opens only once a participant completes the trial (#38).
One narrower gap remains. The assigned sound file’s name contains the modulation band, the band differs between groups, and the frequency-to-band table is published, so someone who looks it up can work out their group. The app-side fix is merged and ships in 1.3.22; the file URL itself is tracked separately as #64.
Nobody has been affected, because nobody has enrolled yet. The thing that matters is sequencing: recruitment must not open until 1.3.22 ships.
The participant app is a release behind. It last shipped on 13 August 2026, before the portal work described here, and five participant-blocking defects are open against it. Anything on this page that depends on the app reflects that older build.
Several measures ship switched off. The daily check-in, the before/after-listening questionnaires and the final assessment are all built, but the reference configuration does not enable them. A trial created from it collects three baselines, one blinding guess and screening, and nothing else, until someone enables the rest on Step 2.
Beyond that: there is no participant-data export, no reminders or notifications of any kind, and no adherence tracking. Inactivity dropout and GDPR deletion both work but must be run by hand.
Unmodulated-washout audio remains unbuilt end to end: the model allows it, but it cannot be uploaded or played.