Skip to content
github-actions[bot] edited this page Oct 19, 2026 · 42 revisions

Ethos

What ThoughtKnot stands for, and the rules that follow from it. Each rule says how it is checked, so anyone can see whether it holds. 16 of 24 rules checked automatically.

1. Everyone can use it

Graph notes are for every reader, whatever their sight, hands or way of reading.

Rule State Checked by
Every view of every host meets WCAG 2.2 AA in the light and the dark theme. ✅ Checked automatically wcag_aa, wcag_new_hosts, contrast_both_themes
Everything can be done with the keyboard alone. ✅ Checked automatically keyboard_reach, keyboard_any_device, a11y_keyboard_auto
Every control has a name and says its state, and every drawing has a text version. ✅ Checked automatically a11y_semantics_auto, screen_reader_text
Motion stops when asked, colour never carries meaning alone, and text can grow to twice its size. 🟡 Being built (3 of 4 proved) motion_reduced_respected, colour_never_alone, forced_colours, text_scaling

2. It speaks your language and fits your culture

A reader should never have to read in a language, a direction or a format that is not their own.

Rule State Checked by
Every word the reader sees comes from one catalogue, so it can be translated, and follows the host's language. 🟡 Being built (0 of 3 proved) words_catalogue, translations_as_files, language_follows_host
Numbers, dates, times and lists are written and sorted the reader's way. 🟡 Being built (0 of 2 proved) locale_formats, locale_sorting
Right-to-left languages read right to left, checked in test languages on every view. 🟡 Being built (1 of 4 proved) rtl_mirrors, bidi_labels, rtl_drawing_direction, pseudo_locales_checked
A language or culture setting never changes a byte of what is saved. 🟡 Being built (0 of 1 proved) locale_never_changes_bytes
Words and pictures avoid idioms, jokes, gestures and symbols that only make sense in one culture. ⚪ Not checked yet Nothing checks this yet: a word list like the plain-language jargon list is the next step.

3. Plain words

If a reader has to stop and decode a message, the message has failed. Every word is written so a reader with ADHD can scan it: in the app, in the documents and in the code. Plain words hold in every language, so a translation is plain in its own language, never English mixed in.

Rule State Checked by
What the user reads keeps to a reading grade of 9, sentences of 25 words or fewer, and no jargon. ✅ Checked automatically ux_copy_auto
Every document and code comment, in whatever language it is written, uses plain language: short sentences, short paragraphs, headings to scan by and no filler words. A file never gets worse, and a new file starts clean. ✅ Checked automatically plain_docs_auto
UK spelling in code, comments, messages and the interface. 👤 Checked by a person Reviewed in each pull request (CONTRIBUTING.md).

4. Your notes stay yours

Notes hold private thoughts. Nothing leaves the device unless the person sends it.

Rule State Checked by
No network request of its own: no analytics, no update checks, no remote images. ✅ Checked automatically offline_and_mobile_apis
AI is off until the person turns it on, they see what will be sent before it goes, and nothing goes in the background or above a note's classification. ✅ Checked automatically ai_off_until_chosen, seen_before_sent, never_in_background, never_above_ceiling, never_credential

5. The person decides

An AI may suggest, but only the person changes their graph.

Rule State Checked by
An AI's answer is a proposal, accepted or rejected by the person one change at a time. ✅ Checked automatically answers_are_proposals, person_decides, proposal_one_by_one
Where an AI helped, it says so. ✅ Checked automatically ai_disclosed

6. Checked, not promised

A rule nobody checks is a wish. Each rule here says how it is checked, so anyone can see it holds.

Rule State Checked by
Spec, then test, then code: each test is seen failing before its code is written. ✅ Checked automatically tests_first, done_means_proved
The quality figures only get better: a release that does worse fails unless the reason is written down. ✅ Checked automatically quality_ratchet
Every rule on this page names its check, or says plainly that it has none yet. ✅ Checked automatically ethos_checked

7. Open to join, closed to rip-offs

Anyone may fork it, change it and send their work back, and the name stays with the original.

Rule State Checked by
The licence (MPL-2.0) lets anyone use, fork and change the code and send a pull request, and keeps changed files open. ✅ Checked automatically mpl_licence
The name ThoughtKnot marks the original. A fork goes by its own name (TRADEMARKS.md). ✅ Checked automatically community_files
Everyone who takes part is treated with respect, and a problem can be reported in private (CODE_OF_CONDUCT.md). ✅ Checked automatically community_files
Every commit in a pull request is signed off, saying its author may send it under the licence. 👤 Checked by a person A box on the pull request template; an automatic check on each commit is the next step.
A security problem is reported in private and fixed before it is made public (SECURITY.md). ✅ Checked automatically security_policy

A name in the last column is a requirement in requirements/editor-requirements.gql, proved by the tests it names.


Made from requirements/ethos.gql at 4cb393d on 19 Oct 2026. This page is generated: change the repository, not this page, as edits here are overwritten.

Clone this wiki locally