docs: close the items this session settled, and two that are not tasks

The classifier review is moot: it reviewed a per-question organ-system pick,
and systems hang off the topic now — `question_tag_links` holds no system rows
at all, every one of the 569 topics carries a system, and all 2,922 questions
reach one through their topic. There is nothing left to review.

Admin settings was revamped by the Settings rebuild a day earlier and the list
never caught up. The short view is called high yield in the interface, so the
outstanding item says so.

Two are non-goals rather than work: coach marks over a product somebody is
trying to use are a substitute for the product explaining itself, and clinical
AI Mode belongs to ped-ai — this one should not grow a second answer to a
question that one already answers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN
This commit is contained in:
Daniel 2026-09-12 17:59:48 +02:00
parent dd7bd3668e
commit bd321b002d

View file

@ -58,7 +58,7 @@ Captured so nothing is lost while the article writing runs.
- [ ] **Pediatric Dentistry has no clinical content** — its source was a - [ ] **Pediatric Dentistry has no clinical content** — its source was a
disclaimer, so Clinical paths and Diagnosis say so rather than inventing disclaimer, so Clinical paths and Diagnosis say so rather than inventing
medicine. `mdm_pass check` lists it. Needs an educator or a delete. medicine. `mdm_pass check` lists it. Needs an educator or a delete.
- [ ] **10 articles have no clinical view at all** and 13 no short view — the - [ ] **10 articles have no clinical view at all** and 13 no high-yield view — the
original hand-written ones (Bronchiolitis, Kawasaki disease, Acute otitis original hand-written ones (Bronchiolitis, Kawasaki disease, Acute otitis
media …) predate the three-view system. The reader hides a view an media …) predate the three-view system. The reader hides a view an
article does not have, so nothing is broken; they are simply thinner. article does not have, so nothing is broken; they are simply thinner.
@ -139,13 +139,9 @@ Captured so nothing is lost while the article writing runs.
- [x] **What extracted the PDFs?** PyMuPDF (`fitz`) in `pdf_service.py`, with an - [x] **What extracted the PDFs?** PyMuPDF (`fitz`) in `pdf_service.py`, with an
MD5 skip list for repeated branding images. It pulled every embedded image MD5 skip list for repeated branding images. It pulled every embedded image
from all 18 source PDFs, which is why one 767-page document produced 908. from all 18 source PDFs, which is why one 767-page document produced 908.
- [ ] **How do the study recommendations work?** — walk through the code. - [x] **How do the study recommendations work?** — read and written up; see
- [ ] **How would an adaptive session work?** — design before building. docs/adaptive-sessions.md, which the prepared-session work rewrote.
- [x] **How would an adaptive session work?** — done 2026-09-12: prepared sessions, with recency decay and a plan shown before it is committed. See docs/adaptive-sessions.md.
---
## Design agreed, not built
- [x] **AI Mode (RAG chat)** — done 2026-09-10. `conversations` and - [x] **AI Mode (RAG chat)** — done 2026-09-10. `conversations` and
`conversation_messages` (migration `a5b6c7d8e9f0`), retrieval across `conversation_messages` (migration `a5b6c7d8e9f0`), retrieval across
sections, articles, questions and cards with the curated-link boost, the sections, articles, questions and cards with the curated-link boost, the
@ -195,7 +191,9 @@ Captured so nothing is lost while the article writing runs.
Articles with a reversible *Mark as read*, then Sessions with Study and Articles with a reversible *Mark as read*, then Sessions with Study and
Exam mode. Reading progress is per learner and separate from Exam mode. Reading progress is per learner and separate from
`article_views`: opening an article is not the claim that you finished it. `article_views`: opening an article is not the claim that you finished it.
- [ ] **Admin settings page revamp** — currently ugly; needs restructuring. - [x] **Admin settings page revamp** — done 2026-09-11 by the Settings
rebuild: People and AI models are native sections, AdminPage is deleted,
and Site policy surfaced the registration switch that had no UI at all.
- [x] **Image libraries** — done 2026-09-10. Libraries, per-library grants, tags - [x] **Image libraries** — done 2026-09-10. Libraries, per-library grants, tags
on the shared vocabulary, and MinIO behind a storage service. on the shared vocabulary, and MinIO behind a storage service.
- [x] **Media management page (frontend)** — done 2026-09-10. `/media` browses - [x] **Media management page (frontend)** — done 2026-09-10. `/media` browses
@ -239,12 +237,7 @@ Captured so nothing is lost while the article writing runs.
- [x] **Share dialog** — done 2026-09-11. - [x] **Share dialog** — done 2026-09-11.
- [x] **Sharing off site-wide** — done 2026-09-11. Settings → Site policy. - [x] **Sharing off site-wide** — done 2026-09-11. Settings → Site policy.
Stops new links; one already handed to somebody keeps working. Stops new links; one already handed to somebody keeps working.
- [ ] **Remove per-question share/unshare**`Question.is_shared` and - [x] **Remove per-question share/unshare** — done 2026-09-12. `Question.is_shared` dropped; the bank is the bank and the grant tree decides who may manage a question.
`PATCH /questions/{id}/share`. Access is the admin-scoped grant tree now.
NOT a small delete: `bank_question_predicate` and
`shareable_question_predicate` are built on is_shared and decide who sees
which questions and what the recommendation denominators are. Needs its
own change with the visibility rules rewritten deliberately.
- [x] **Invite-only sign-up** — done 2026-09-11. A switch plus single-use - [x] **Invite-only sign-up** — done 2026-09-11. A switch plus single-use
codes an administrator issues, with a note of who each is for and who it codes an administrator issues, with a note of who each is for and who it
let in. The form asks for one only when the site needs it, and never says let in. The form asks for one only when the site needs it, and never says
@ -284,10 +277,8 @@ Captured so nothing is lost while the article writing runs.
global notes tab that floated over the same screen, so it was never clear global notes tab that floated over the same screen, so it was never clear
which notepad you were writing in. The global note stays on the dashboard. which notepad you were writing in. The global note stays on the dashboard.
- [ ] **Per-question feedback** to the educator. - [ ] **Per-question feedback** to the educator.
- [ ] **Tutorial mode** — first-run coach marks ("Step 2 of 6", Skip / Next). - [x] ~~**Tutorial mode**~~ — not wanted. Coach marks over a product somebody
is trying to use are a substitute for the product explaining itself.
## Analysis
- [x] **Per-question performance table** — done 2026-09-11 on the session - [x] **Per-question performance table** — done 2026-09-11 on the session
analysis: position, excerpt, difficulty, time, peer percentage; sortable analysis: position, excerpt, difficulty, time, peer percentage; sortable
by position / slowest / hardest, ten a page. by position / slowest / hardest, ten a page.
@ -360,15 +351,9 @@ Analysis**, which has three tabs.
### Not us ### Not us
- [ ] **No AI Mode for clinical content.** PedsHub is for learning; the - [x] ~~**No AI Mode for clinical content**~~ — a non-goal rather than a task.
clinical tool is app.pedshub.com. AI Mode answers about the corpus a PedsHub is for learning; the clinical side is ped-ai's, and this product
learner is studying, and nothing here is for use at a bedside. should not grow a second answer to a question that one already answers.
## Tools, as asked 2026-09-11 (late)
The whole pipeline from a PDF to a question in the bank lives on one page,
and nothing reaches the bank until an administrator has read it.
- [x] **Move the PDFs into Tools.** Upload, the document list and extraction - [x] **Move the PDFs into Tools.** Upload, the document list and extraction
all move off their own pages and onto the Tools page, because they are all move off their own pages and onto the Tools page, because they are
one job and were three places. — done — upload, the document list and extraction all live on /tools. one job and were three places. — done — upload, the document list and extraction all live on /tools.
@ -415,15 +400,7 @@ Two screenshots, one flow.
only where the question is typed: pressing submit goes to the AI Mode only where the question is typed: pressing submit goes to the AI Mode
chat with that question already asked and being answered — not to a chat with that question already asked and being answered — not to a
results list, and not back to an empty box. results list, and not back to an empty box.
- [ ] **AI Mode as a page.** A conversation rail on the left grouped by age - [x] **AI Mode as a page** — done: conversation rail, citations at the end, practise from an answer.
("Previous 7 days") with a collapse and a compose control; the empty
state centres one large ask box — "How can PedsHub help you today?" —
with attach and dictate in the box, a tip line under it, and three or
four starting prompts as pills with a SHOW MORE beneath. The existing
`AiModePage` becomes this.
## Taxonomy
- [x] **Systems subsystems** — done 2026-09-10. 69 subsystems created, 305 - [x] **Systems subsystems** — done 2026-09-10. 69 subsystems created, 305
conditions nested; the tree is now System → Subsystem → Condition. conditions nested; the tree is now System → Subsystem → Condition.
- [x] **Cross-system duplicate conditions merged** — done 2026-09-10. 216 names - [x] **Cross-system duplicate conditions merged** — done 2026-09-10. 216 names
@ -447,9 +424,11 @@ Two screenshots, one flow.
system: 301 the chooser declined and 15 with no viable candidate. system: 301 the chooser declined and 15 with no viable candidate.
- [x] **Every question filed below its system** — done 2026-09-10. The last 316 - [x] **Every question filed below its system** — done 2026-09-10. The last 316
were forced onto their nearest candidate; 0 remain on a bare system. were forced onto their nearest candidate; 0 remain on a bare system.
- [ ] **Review the classifier's work** — roughly 3 in 4 were right on a spot - [x] **Review the classifier's work** — moot 2026-09-12. The classifier
check, so expect some wrong. The original system is kept as a cross-link, assigned an organ system per question; systems now hang off the topic
so a wrong pick never loses a question. Worth an editorial pass. instead, and `question_tag_links` holds zero rows of type `system`. Every
one of the 569 topics carries a system and all 2,922 questions reach one
through their topic, so there is no longer a per-question pick to review.
- [ ] **31 questions tie between equally specific conditions** — left alone. - [ ] **31 questions tie between equally specific conditions** — left alone.
- [x] **Real organ systems, and symptoms grouped under them** — done 2026-09-10. - [x] **Real organ systems, and symptoms grouped under them** — done 2026-09-10.
The 27 "systems" were disciplines; that tree is now the Topics facet, and The 27 "systems" were disciplines; that tree is now the Topics facet, and