Skip to content

Chemical Safety AssistantDecisions, glossary, specification

A Thai-language web application that answers from one plant's own Safety Data Sheets, works with no network, and never writes a safety sentence of its own.

Read this first

This repository is documentation and decisions. The two application directories under app/ are gitlinks to independent repositories, and both now point at product commits: the Handler-facing application and the curator's workbench are built, and both repositories' gates are green. What is still unbuilt, and what is waiting on a person rather than on a ticket, is in Current state & blockers — which names the command behind every number it gives.

If you are here to review the design, start at The content split. It is the decision every other decision bends around.

The one rule this site follows

A guide page never states a decision. Rulings live in docs/adr/ and the guide links to them. A guide page says what question an area answers, draws how the pieces fit, and points at the document that decides.

The reason is mechanical rather than stylistic. The repository's traceability gate (scripts/coverage-check.sh) scans the research notes, the ADRs, the specification and the glossary — it does not scan the guide. A guide page that paraphrased a ruling would be a second source of truth that nothing watches, and on a product where a paraphrase can change which glove a person wears, that is the exact failure the design already refuses in its runtime.

So the guide is thin on purpose, and ignoreDeadLinks is set to false: link to an ADR and the build fails the day that ADR is renamed or removed.

How this site is organised

SectionWhat it answers
The content splitWhich output may be generated, which may not, and why the line is where it is
CurationWhere every irreversible judgement in the product is made
The Corpus lifecycleHow a document becomes an answer on a device with no signal
Identification & RoutingHow a user gets from a drum in front of them to the right record
System architectureWhat runs where, and what never crosses the network
Data modelWhat a Chemical Record is made of, and what is deliberately not merged
Sources & dataWhat the design was derived from, and what the built application is actually fed
CostWhere the money and the time go, and which of the two decides the schedule
Current state & blockersWhat is decided, what is built, and what is waiting on a person
Decision indexAll 75 ADRs with status, superseded ones included

The source documents

DocumentRole
CONTEXT.mdThe glossary, and nothing else. Every term used anywhere must appear here.
SpecificationThe spec: user stories, implementation decisions, testing seams, declared gaps.
ADRsThe rulings. Accepted ones are binding; superseding requires a new document.
AGENTS.mdHow work is done in this repository.
Session handoffState-of-now for the next session. Read before anything but ./init.sh.

A note on the numbers

Terms in this documentation are capitalised when they are glossary terms — Corpus, Source Span, Curation, Not Stated, Study Area. Each one is defined in CONTEXT.md and used in exactly that sense. Decision ids (D-nn), research findings (R-nn) and user stories (US-nn) are permanent and are never renumbered or reused.