Cannabis Freedom Index

Changelog d76f3c0

Fix national quick answers for jurisdiction differences (#31)

4 country profiles edited4 files of code, design or docs +137 −8 lines

Countries and states 4 files

Australia countries/au/index.yaml

answers › carry › answer

limited

answers › carry › label

Depends on jurisdiction

answers › carry › text

ACT adults have a local small-possession exemption; elsewhere charges remain possible, and Commonwealth law also applies

Canada countries/ca/index.yaml

answers › grow › answer

limited

answers › grow › text

Up to four plants per household under federal law; Quebec bans personal growing and other provinces add conditions

China countries/cn.yaml

sources

China — Public Security Administration Punishments Law as revised on 27 June 2025, in force 1 January 2026, Articles 83 and 84 (State Administration for Market Regulation) China — Public Security Administration Punishments Law as revised on 27 June 2025, in force 1 January 2026, Articles 83 and 84 (Wikisource) 10 unchanged

answers › carry › answer

no

answers › carry › text

Small amounts bring an administrative offence with detention or a fine; larger amounts can be criminal

answers › grow › answer

no

answers › grow › text

Small-scale drug cultivation can bring administrative penalties; larger cultivation can be a crime

answers › public › answer

no

answers › public › text

Use can bring administrative detention and a fine, including use in private

answers › caught › answer

no

answers › caught › label

Administrative detention

answers › caught › text

Small possession can bring 10–15 days of administrative detention and a fine; larger amounts can bring criminal charges

United States countries/us/index.yaml

segments › possession › sources

norml, ncsl, possession844

sources

US Code — 21 USC 844(a), penalties for simple possession 23 unchanged

answers › carry › answer

limited

answers › carry › label

Depends on jurisdiction

answers › carry › text

State rules vary; possession can be a crime under state and federal law, even where a state permits it

answers › grow › answer

limited

answers › grow › text

State rules vary; some allow home growing, while others treat even one plant as a crime

Code, design and documents 4 files

docs/DATA-MAINTENANCE.md +7 −0
@@ -451,4 +451,11 @@ is a pharmacy, a club, a state shop or a coffeeshop. So:
   Questions: `carry` (possession), `grow` (cultivation), `buy` (access), `public` (consumption),
   `caught` (enforcement). When the law changes, update the answer with the segment.
+- **National estimates do not describe a single jurisdiction.** Where state/provincial rules
+  or federal and local laws diverge, provide an explicit answer naming that distinction. The US
+  possession score must never imply that criminal charges are generally unavailable. Audit
+  Canada and Australia alongside it; Canada’s federal growing permission still has a Quebec
+  exception. Check administrative detention separately from criminal punishment, as in China.
+  The same overrides feed the profile, `/can-i/` and search-engine FAQs. Federation profiles
+  link from the quick answers to their state/province picker.
 - **`npm run answers:test`** checks every answer against its profile: prescription without a
   medical programme, "legal" where recreational cannabis is not, "use itself is a crime" where the

docs/research/issue-31-quick-answers-2026-10-25.md +44 −0
@@ -0,0 +1,44 @@
+# Issue 31: national quick answers and administrative detention
+
+Reviewed 25 October 2026 against DATA-MAINTENANCE.md's quick-answer rules and WRITING.md.
+The recent `0b03109` rewrite removed the old “Not a crime” answer and added explicit
+profile overrides. It did not give the United States its own possession answer: the
+national possession score of four still produced “Usually no criminal charge”.
+
+This fix uses those existing overrides, shared by country pages, `/can-i/` and FAQ
+structured data. No numeric scores or historical score chains change.
+
+- **US:** explicitly name possible state and federal criminal liability, including where
+  state law permits possession. Also make home-growing depend on state law. Add the
+  official [21 USC 844(a)](https://uscode.house.gov/us/usc/119-118/t21/s844/) source to the
+  possession explanation. Its first-offence provision permits up to a year in prison.
+  The [DEA rescheduling page](https://www.dea.gov/marijuana-rescheduling-regulatory-actions)
+  was opened as context; this fix does not reinterpret the profile's rescheduling history.
+- **Australia:** explicitly name the ACT's local adult exemption, possible charges
+  elsewhere and continuing Commonwealth law. [ACT Policing's current guidance](https://police.act.gov.au/community-safety/alcohol-and-drugs/drugs-and-the-law)
+  was read: the cannabis rules and final Commonwealth-law paragraph support this wording.
+- **Canada:** the generic adult possession permission remains appropriate. The cultivation
+  answer did hide Quebec's ban; now explicitly name that exception and provincial conditions,
+  using the existing sourced cultivation account. The profile cites LégisQuébec section 10;
+  its direct endpoint returned 502 during this pass. Health Canada's laws/regulations landing
+  page was opened; no new Canadian legal claim or score change is introduced.
+- **China (issue comment):** make small possession's administrative offence and detention
+  explicit, with criminal liability distinguished for larger amounts. Also align cultivation,
+  consumption and the “caught” label with the same distinction in the detailed profile.
+  Read the official [2025 Public Security Administration Punishments Law](https://www.samr.gov.cn/zw/zfxxgk/fdzdgknr/bgt/art/2025/art_8a1c722747214869b28c0ad7a0f8bb7a.html),
+  especially articles 3, 10, 83, 84 and 144. Replace the Wikisource URL with that official
+  reproduction. This does not imply that administrative detention is a harmless warning.
+
+Federation quick-answer sections now link directly to the existing state/province selector.
+Regression tests cover the US national distinction, Australia, Canada's Quebec growing
+exception and China's administrative penalties. Browser checks cover profile answers,
+`/can-i/`, FAQ data and the picker links at desktop and mobile widths.
+
+The initial shared-checkout build was blocked by invalid source types in an unrelated
+uncommitted Singapore history edit. Verify a snapshot of HEAD plus only this issue's files,
+leaving that history edit and the background source archive outside this commit.
+
+Validation: 13 answer/profile regression tests passed. The clean-snapshot build and
+Chrome checks at 1280 px and 390 px verified all four country pages, FAQ data and
+`/can-i/`; federation picker links work and no horizontal overflow was found. The four
+numeric score objects were also compared directly with HEAD and are unchanged.

scripts/answers.test.mjs +31 −0
@@ -96,2 +96,33 @@ test("Italy: use is not called an offence, and being caught does not mean a fine
   assert.doesNotMatch(said(it.caught), /\bfine\b/i);
 });
+
+// Issue #31: a national estimate is not a single jurisdiction's legal rule.
+test("US national possession names both state and federal criminal exposure", () => {
+  const us = placeOf('us').result;
+  assert.equal(us.carry.own, true);
+  assert.equal(us.carry.answer, 'limited');
+  assert.match(us.carry.text, /state and federal law/i);
+  assert.match(us.carry.text, /can be a crime/);
+  assert.doesNotMatch(us.carry.text, /not a crime|usually no criminal charge/i);
+  assert.match(us.grow.text, /one plant.*crime/);
+});
+
+test("the federation audit keeps Australia conditional and Canada's Quebec growing exception visible", () => {
+  const au = placeOf('au').result, ca = placeOf('ca').result;
+  assert.match(au.carry.text, /ACT.*exemption/);
+  assert.match(au.carry.text, /charges.*Commonwealth/);
+  assert.equal(ca.carry.answer, 'yes'); // the national adult quantity permission is real
+  assert.equal(ca.grow.answer, 'limited');
+  assert.match(ca.grow.text, /Quebec bans/);
+});
+
+test("China's small-possession answer describes administrative detention rather than a criminal conviction", () => {
+  const cn = placeOf('cn').result;
+  assert.equal(cn.carry.answer, 'no');
+  assert.match(cn.carry.text, /administrative offence.*detention/);
+  assert.match(cn.carry.text, /larger amounts can be criminal/);
+  assert.doesNotMatch(cn.carry.text, /It is a crime|not a crime, but you can be fined/);
+  assert.equal(cn.caught.label, 'Administrative detention');
+  assert.match(cn.grow.text, /administrative penalties/);
+  assert.match(cn.public.text, /administrative detention/);
+});

src/components/CountryArticle.astro +2 −1
@@ -119,5 +119,5 @@ const culture = cultureOf(c);
       <label class="field sub-select">
         <span>{group.label}</span>
-        <select data-subunit-select aria-label={`Choose a ${group.label.toLowerCase()} of ${c.name}`}>
+        <select id="subunit-choice" data-subunit-select aria-label={`Choose a ${group.label.toLowerCase()} of ${c.name}`}>
           <option value={countryUrl} selected={!sub}>All of {c.name} (national estimate)</option>
           {byName.map((x) => <option value={unitUrl(x)} selected={sub?.id === x.id}>{x.name} · {x.score}</option>)}
@@ -170,4 +170,5 @@ const culture = cultureOf(c);
       ))}
     </ul>
+    {group && !sub && <p class="d-hint"><a href="#subunit-choice">Choose a {group.label.toLowerCase()} for its local rules ↑</a></p>}
     <p class="d-hint">A rough guide read from the scores and the rules below, not legal advice. The details and the exceptions are in each segment: select an answer to jump to it.</p>
   </div>

    ↑↓ to move, ↵ to open.