Skip to content

docs: scaffold operator manual as a Quarto book#52

Open
roiguri wants to merge 1 commit into
mainfrom
claude/app-manual-contents-b5wrqq
Open

docs: scaffold operator manual as a Quarto book#52
roiguri wants to merge 1 commit into
mainfrom
claude/app-manual-contents-b5wrqq

Conversation

@roiguri

@roiguri roiguri commented Jun 11, 2026

Copy link
Copy Markdown
Owner

Set up a Quarto book under docs/manual/ that renders the operator
manual to PDF (milestone 1), with HTML configured for a future in-app
Help button from the same Markdown sources.

  • _quarto.yml: book config, PDF + HTML formats, parts/appendix structure
  • index + 8 chapters: overview, installation, hardware/LSL, Phase 1,
    Phase 2, configuration reference, troubleshooting, debug appendix
  • README with one-time Quarto/TinyTeX setup and build commands
  • gitignore _book/ and .quarto/ build output
  • link the manual from docs/README.md

Quarto is a standalone binary (not pip), so nothing is added to
requirements*.txt.

https://claude.ai/code/session_01PWymtXNS69ww3hD8wkbeMM

Set up a Quarto book under docs/manual/ that renders the operator
manual to PDF (milestone 1), with HTML configured for a future in-app
Help button from the same Markdown sources.

- _quarto.yml: book config, PDF + HTML formats, parts/appendix structure
- index + 8 chapters: overview, installation, hardware/LSL, Phase 1,
  Phase 2, configuration reference, troubleshooting, debug appendix
- README with one-time Quarto/TinyTeX setup and build commands
- gitignore _book/ and .quarto/ build output
- link the manual from docs/README.md

Quarto is a standalone binary (not pip), so nothing is added to
requirements*.txt.

https://claude.ai/code/session_01PWymtXNS69ww3hD8wkbeMM
@@ -0,0 +1,82 @@
# Installation {#sec-installation}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Installation explanation isnt correct. Should describe the expected exe planned


| Property | Value |
|---|---|
| Stream name | `NeuroneStream` |

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the app can accept different streams names

Comment on lines +42 to +46
::: callout-warning
**Sampling rate must be confirmed in the lab.** It is configured in NeurOne as
1000 Hz, but a session has been observed reporting 5000 Hz. The sampling rate
materially affects preprocessing, so verify it before a real session.
:::

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nothing to confirm 1000hz stream is a hard constraint

Comment on lines +60 to +62
`LSLReceiver` is a pure consumer — it resolves and pulls from a stream but
never publishes one. Publishing onto the network is the job of a
**`StreamSource`**:

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overly specific implementation details.

Comment on lines +72 to +80
## Units

::: callout-note
The proxy applies NeurOne's Tesla AC scaling before publishing, so LSL values
are already in **microvolts**. Whether the online preprocessing needs to
rescale these to SI volts has **not yet been verified in the lab**. Replay via
recorded BrainVision files delivers data already in SI volts, so no scaling is
applied for replay-based validation.
:::

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is unecessary - no unit issue. This is irrlevant to users


- Click **Run Evaluation**. The app scores candidate decoding timepoints and
plots an AUC curve.
- Pick a timepoint on the chart.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We pick a timepoint per decoder

Comment on lines +26 to +29
::: callout-note
On real hardware the app starts the LSL proxy as part of discovery and reuses
it for the run that follows — it is not relaunched between discovery and start.
:::

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again unnecessary callout. This part is focused on production, and we can assume this operates on real hardware

@@ -0,0 +1,77 @@
# Configuration reference {#sec-configuration}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to specify supported options for each field.

Comment on lines +9 to +11
A minimal two-decoder demo config ships as `experiment_config.yaml`; the full
configuration that trained the bundled artifact is in
`experiment_config.full.yaml`.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These aren't shipped with the app. Just examples used and shoudlnt be mentioned int he manual

Comment on lines +42 to +45
::: callout-note
The legacy `bandpass` / `resample` / `reject_criteria` sections no longer
exist. Both phases consume the same positional `online_state` produced from
this block — no channel names are carried through.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to mention legacy, this is a first version of the app

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants