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