Cannabis Freedom Index

Changelog c920f71tree, with Claude Opus 5.5

README: shorter, and without counts that go out of date

Drops the figures that kept needing updates (number of countries, articles, typical scores, the weights table) and the per-script reference, and points to the methodology and the docs for detail. Adds the guides for expanding countries and AGENTS.md under Contributing.

1 file of code, design or docs +45 −98 lines

Code, design and documents 1 file

README.md +45 −98
@@ -1,5 +1,7 @@
 # Cannabis Freedom Index
 
-A 0–100 score of personal cannabis freedom for every country — what you may carry, grow, share and use, and what happens to you if you do. Each score comes with a written explanation and linked sources.
+A 0–100 score of personal cannabis freedom for every country: what an adult may carry, grow,
+share and use, and what happens to them if they do. Every score comes with a written explanation
+and its sources.
 
 **Live site:** https://cannabisfreedom.fyi/
@@ -7,26 +9,17 @@ A 0–100 score of personal cannabis freedom for every country — what you may
 ## What's on the site
 
-- **The index:** 214 countries, territories and dependencies scored, with state-by-state scores for the United States, Canada and Australia, a world map that can be coloured by any segment or context section (seeds and clones, clubs, driving, visitors, cannabis use), rankings and side-by-side comparison.
-- **History:** the laws, rulings and treaties that moved each score since 1900, with a yearly score for every place rebuilt from them. More than 500 events have a full article.
-- **Culture:** a cultural atlas of words for the plant, traditions and the people who changed the law.
-- **State of Cannabis:** a yearly, pseudonymous community survey of how people use, grow and think about cannabis.
-- **Sources:** every source the index cites, including the books it draws on.
+- **The index:** a score for every country and territory, and for the states and provinces of
+  federations, with a world map, rankings and side-by-side comparison.
+- **Country profiles:** the rules behind each score, penalty tables, and context the score leaves
+  out: medical use, hemp, clubs, driving, visitors, culture, research and more.
+- **History:** the laws, rulings and treaties that shaped each country's score, with longer
+  articles on the key events.
+- **Culture:** a cultural atlas of words for the plant, traditions and people.
+- **State of Cannabis:** a yearly, pseudonymous community survey.
+- **Data:** everything downloadable as CSV and JSON, free to reuse.
 
-## How the score works
-
-Six segments, each scored 0–10 and combined by weight:
-
-| Segment | Weight |
-|---|---|
-| Possession | 25% |
-| Personal cultivation | 25% |
-| Punishment & enforcement | 20% |
-| Sharing & gifting | 10% |
-| Consumption | 10% |
-| Legal access | 10% |
-
-A 10 means no cannabis-specific rule at all — treated like tomatoes. Every cap, licence and registry costs points, so even the most liberal countries land around 50.
-
-Scores over time are rebuilt from each country's history in `changes.yaml`. Before its first rule on cannabis a country scores **100**: no rule at all, the tomato standard. The first rule that limited cannabis counts as the first change, even if it was not a cannabis law as such (a poisons or pharmacy act naming it, licences to sell or grow, a state monopoly, a ban on growing, a colonial power's drug law extended to a territory). A country with no known first law gets an estimated one, spread across 1925–1961.
+How the score is made is explained on the site's [methodology](https://cannabisfreedom.fyi/#methodology):
+six segments scored 0–10 and combined by weight (`segments.yaml`), where a 10 means no
+cannabis-specific rule at all. Scores over time are rebuilt from each country's history.
 
 ## Run it
@@ -40,5 +33,7 @@ npm run build    # static site in dist/
 ```
 
-Built with [Astro](https://astro.build). Pushing to `main` deploys to GitHub Pages.
+Built with [Astro](https://astro.build). Pushing to `main` deploys to GitHub Pages. The build checks
+every data file against a schema (`src/content.config.ts`) and fails with a clear message when
+something is wrong.
 
 ## Where things are
@@ -46,91 +41,43 @@ Built with [Astro](https://astro.build). Pushing to `main` deploys to GitHub Pag
 | Path | What |
 |---|---|
-| `countries/de.yaml` | Everything about one country: scores, summary, explanations, sources, and optionally its seed and clone law (unscored) |
-| `countries/us/` | A federation: `index.yaml` for the country, one file per state |
-| `segments.yaml` | The six segments, their weights and level descriptions |
-| `changes.yaml` | The History page: laws and events that moved a country's score, with the scores before, plus treaties; the home page shows the latest four |
-| `articles/` | Longer articles on single history entries, one Markdown file each, named after the entry |
-| `culture/` | The cultural atlas: `language/`, `traditions/` and `people/`, one Markdown file per entry |
-| `prices.yaml` | Sourced flower prices by country, date and market (street or medical) |
-| `survey/` | The State of Cannabis questionnaire (`2026.yaml`) and its published, counted results |
-| `src/` | The website: pages, components, styles |
-| `docs/DATA-MAINTENANCE.md` | How the country profiles and the history are checked and extended, and what is still open |
-| `docs/WRITING.md` | How to write history titles, descriptions and articles so they read well |
-| `docs/CULTURE.md` | What belongs in each part of the cultural atlas and how to write an entry |
-| `docs/BOOKS.md`, `docs/books.yaml` | How the research books are read and cited, and the catalogue of what has been read; the books themselves sit in `books/`, which is not in Git |
-| `docs/research/` | Dated research notes behind new entries and changes |
-| `source-archive.json` | Internet Archive copies of the cited sources |
-| `scripts/` | Helpers for that work: see below |
-
-Helper scripts, run from the project root:
-
-| Command | What |
-|---|---|
-| `node scripts/data-status.cjs` | Where the data stands: unchecked history entries, estimates, thin profiles, sections not yet researched |
-| `node scripts/history-batch.cjs` | Apply a batch of history edits from a JSON file |
-| `npm run articles:backlog` | Which history entries most deserve an article next |
-| `npm run books:status` / `books:check` | Reading status of the research books; `books:report` rewrites `docs/BOOK-RESEARCH.md` |
-| `node scripts/archive-sources.cjs` | Save new sources to the Internet Archive and update `source-archive.json` |
-| `node scripts/book-covers.cjs` | Fetch covers for the books listed on the Sources page |
-| `node scripts/survey-collect.cjs` | Decrypt and count submitted survey answers into `survey/results-<year>.json` (needs the project's secret key) |
-
-The build checks every data file against a schema (`src/content.config.ts`) and fails with a clear message if, say, a score is out of range or a segment cites a source that isn't defined.
+| `countries/` | One profile per country (`de.yaml`); federations have a folder with one file per state |
+| `changes.yaml`, `articles/` | The history, and longer articles on single entries |
+| `culture/` | The cultural atlas |
+| `glossary.yaml` | Words explained wherever they appear on the site |
+| `segments.yaml` | The six scored segments and their weights |
+| `datasets/` | Outside data shown on the profiles |
+| `src/` | The website |
+| `docs/` | How the data is kept and written (start below) |
+| `scripts/` | Helpers for that work |
 
 ## Contributing
 
-Corrections are welcome — laws change and many entries rest on secondary sources. To fix a country, edit its file in `countries/`:
-
-```yaml
-updated: 2026-10-04        # change this when you edit
-scores:
-  possession: 5            # 0–10, see segments.yaml for what each level means
-segments:
-  possession:
-    text: Adults may carry up to 25 g in public…
-    sources: [bmg]         # keys from the `sources` block below
-sources:
-  bmg:
-    title: Bundesgesundheitsministerium — FAQ zum Cannabisgesetz
-    url: https://…
-```
-
-Please include a source link or a complete bibliographic citation. Or just [open an issue](https://github.com/burningtree/cannabis-freedom-index/issues).
+Corrections are welcome: laws change, and many entries rest on secondary sources. Edit the
+country's file in `countries/` with a source for every claim, or
+[open an issue](https://github.com/burningtree/cannabis-freedom-index/issues).
 
-### Contributing flower prices
-
-Prices are still incomplete, so the site hides them unless it is built with `PUBLIC_SHOW_PRICES=true` (see `.env.example`).
-
-Add sourced per-gram observations to `prices.yaml`. Only two markets are used: `street` for
-illicit or non-prescribed flower, and `medical` for prescribed flower. Keep the original currency,
-add the normalized USD value, and append new dates instead of deleting historical observations.
-
-See [the price-data instructions](docs/DATA-MAINTENANCE.md#adding-prices) for the complete field
-example, source-quality rules, currency conversion and validation checklist.
+- `docs/DATA-MAINTENANCE.md`: how profiles, history and sources work.
+- `docs/WRITING.md`: how texts should read.
+- `docs/EXPAND-COUNTRY.md` and `docs/EXPAND-COUNTRIES.md`: how to research and fill in a country,
+  or a batch of them. `AGENTS.md` is the short version for AI agents.
+- `docs/CULTURE.md`: how to write an atlas entry.
 
 ## Disclaimer
 
-Scores are editorial estimates, not legal advice. Check current local law before travelling with, buying or growing cannabis.
+Scores are editorial estimates, not legal advice. Check current local law before travelling with,
+buying or growing cannabis.
 
 ## Privacy
 
-The site uses [Plausible](https://plausible.io/) for visitor statistics: no cookies and no personal data. Survey answers are signed with a key made in the respondent's browser and encrypted so that only the respondent and the project can read them; only counts are published.
-
-## Data for research
-
-- `/data/panel.csv`: a score for every place in every year since 1900, with the six segment scores, rebuilt from the history. The `basis` column separates recorded years from assumptions.
-- `/data/history.csv`, `/data/scores.csv`: every history entry with its sources, and today's scores with ISO numeric codes for joining.
-- `/data/prices.csv` and `/data/survey.json`: the sourced flower prices, and the counted survey results.
-- Every file is also available as JSON (`/data/panel.json`, `/data/scores.json`, …).
-- `source-archive.json`: copies of the sources in the Internet Archive, kept up to date with `node scripts/archive-sources.cjs`.
-
-- `/llms.txt` and `/llms-full.txt`: a guide for language models, and the methodology with every country profile as one Markdown file. Both are generated from the data at build time (`src/lib/llms.js`).
-
-See the [data page](https://cannabisfreedom.fyi/data/) for the columns and how to cite.
… 17 more lines

    ↑↓ to move, ↵ to open.