diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9935e21..0b05126 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -185,10 +185,12 @@ the site.
`decisions/` is what has been settled and why, and it is not published.
The separation that matters most is between the generator and everything
-published, because only the first one is a program. Whether the design system
-ends up under a different licence from the generator is entry 1 of #1, and the
-boundary that answer would fall on is `docs/design-system.html` plus the token
-file #39 extracts from it.
+published, because only the first one is a program. The design system does carry
+a different licence from the generator, and the boundary falls inside
+`docs/design-system.html` rather than around it: the words are CC-BY-4.0 and the
+markup, stylesheet and script they sit in are not. `decisions/licensing.md` is
+the declaration, and `docs/design-tokens.json` is on the design system's side of
+it.
## What runs today
@@ -250,10 +252,12 @@ tense. Read the relevant one before arguing with a rule, because most
disagreements about a rule are disagreements with the decision behind it and
those are easier to have directly.
-Some things are deliberately not settled. Those are in #1 and are not decided in
-a pull request. The license this repository carries is no longer one of them: it
-is AGPL-3.0, in [LICENSE](LICENSE), and what remains open in entry 1 of #1 is
-whether the published pages and the design system carry different terms.
+Some things were deliberately not settled, and those were in #1 rather than in a
+pull request. Every entry of that issue now carries an answer. The licence is one
+of them: the code is AGPL-3.0-or-later, in [LICENSE](LICENSE), and the design
+system and the words on the published pages are CC-BY-4.0.
+`decisions/licensing.md` is the declaration that says which bytes are which,
+because the boundary runs inside two files rather than between them.
## Style
diff --git a/README.md b/README.md
index 237d97b..856eca1 100644
--- a/README.md
+++ b/README.md
@@ -185,40 +185,44 @@ own documentation.
## License
-The GNU Affero General Public License, version 3 or any later version. The full
-text is in [LICENSE](LICENSE), and the "or any later version" is the option the
-licence's own application notice offers rather than an addition to it.
+Two licences over one tree.
-The detector reads it:
+The code is under the GNU Affero General Public License, version 3 or any later
+version. The full text is in [LICENSE](LICENSE), and the "or any later version"
+is the option the licence's own application notice offers rather than an addition
+to it.
- gh api repos/Flowfin/hub --jq '.license.spdx_id'
- AGPL-3.0
-
-Run 2026-08-09.
+The design system and the words on the published pages are under CC-BY-4.0,
+attribution required, so that a project adopting the design system does not
+inherit a code licence with it.
### What it covers
-Every path in this repository, with no exception and no second licence anywhere
-in the tree. That is worth saying out loud because this tree holds three kinds of
-thing with three different audiences, and a reader who knows that will look for a
-boundary:
-
-| Path | What it is | Under |
-|---|---|---|
-| `manifest/`, `internal/`, `main.go` | The generator, which is a program | AGPL-3.0-or-later |
-| `docs/` | The published site, including the design system | AGPL-3.0-or-later |
-| `decisions/`, `*.md` | The documents | AGPL-3.0-or-later |
-| `sources/` | The declared source set, which is data | AGPL-3.0-or-later |
-
-The design system is prose and numbers other projects are invited to adopt, and
-adopting them means following what they say rather than copying the file, which
-the licence does not reach. Copying the file, or a client built from it, is a
-derivative and does.
-
-Whether the published pages and the design system should carry different terms
-from the generator is entry 1 of #1 and is open. A single `LICENSE` at the root
-reads as covering the whole tree, which is what the table above states, so a split
-would be a change to this rather than a reading of it.
+The boundary between the two does not run between files. Both served pages hold
+the page's own stylesheet, its markup and its script in the same bytes as the
+words a reader reads, so a table of paths would be wrong about part of every file
+it named. [`decisions/licensing.md`](decisions/licensing.md) is the declaration,
+part by part, and it is the authority rather than this section: it says which
+bytes are under which licence, what a reader who copies a whole file takes, and
+what the tree does not carry.
+
+The short of it. The generator, the site's own markup, stylesheets and script,
+the documents and the declared source set are AGPL-3.0-or-later. The words on the
+published pages, and the design system including `docs/design-tokens.json`, are
+CC-BY-4.0.
+
+Adopting the design system means following what it says rather than copying the
+file, which no licence reaches. Copying the file, or a client built from it, is a
+derivative and does, and CC-BY-4.0 is the licence that reaches it.
+
+The repository detector reads the root file and only the root file, so it reports
+one licence for a tree that grants under two:
+
+ gh api repos/Flowfin/hub --jq '.license.spdx_id'
+ AGPL-3.0
+
+Run 2026-08-25. Nothing on the platform side can be made to state both, which is
+why the declaration is a file in the tree.
The plugin repositories this catalogue lists are separate repositories under
their own terms. A catalogue listing something is not a statement about its
diff --git a/decisions/licensing.md b/decisions/licensing.md
new file mode 100644
index 0000000..f801017
--- /dev/null
+++ b/decisions/licensing.md
@@ -0,0 +1,141 @@
+# Two licences over one tree, declared by parts
+
+This tree holds a program, a published site and a design system. The program is
+under the AGPL. The design system and the words on the published pages are under
+CC-BY-4.0. The boundary between them does not run between files, so it is
+declared here, by part, and nowhere else.
+
+That is entry 1 of #1, and it is the last entry of that issue to be answered.
+
+## What was decided
+
+**The code is AGPL-3.0-or-later.** The licence was taken by the maintainer on
+2026-08-08 in entry 1 of #1 and applied to every board that carried none. The
+`or-later` half is the option the licence's own application notice offers rather
+than an addition to it, and it was made precise fleet-wide on 2026-08-09.
+
+Entry 1 carried two answers naming different variants of the same licence for a
+while: `AGPL-3.0-or-later` on 2026-08-09 and `AGPL-3.0-only` on 2026-08-11,
+neither referring to the other. That was recorded in the issue on 2026-08-11 and
+settled by the maintainer on 2026-08-24, who read the `-only` answer as a slip
+and kept the variant the tree already stated. So this file states one variant and
+does not carry a live disagreement forward.
+
+**The design system and the words on the published pages are CC-BY-4.0.**
+Decided by the maintainer on 2026-08-11, with the reason: a design system other
+projects are invited to adopt must not raise code-licence questions for the
+adopter. Attribution stays required.
+
+**The form is one declaration by parts, not a header in each file.** Decided by
+the maintainer on 2026-08-24, because the boundary does not run between files and
+a per-file header would have to claim it does.
+
+## Why a path table cannot carry it
+
+Both served pages hold the page's own stylesheet, its markup and its script in
+the same bytes as the words a reader reads. At `2a8f88a`:
+
+ grep -n '\|' docs/index.html docs/design-system.html
+ docs/index.html:5:
+ docs/design-system.html:4:
+ docs/design-system.html:411:
+
+ grep -c "" docs/index.html docs/design-system.html docs/design-tokens.json
+ docs/index.html:71
+ docs/design-system.html:447
+ docs/design-tokens.json:276
+
+Run 2026-08-25. A row saying `docs/` is under one licence is wrong about part of
+every file it names, and a header at the top of either page would be a statement
+about the whole file made in the one place a reader trusts it least.
+
+Three shapes were open when the entry was recorded on 2026-08-11: a per-file
+header, a declaration naming parts, and moving the prose into files of its own.
+The third was not chosen, so a page's words stay in the page they are read from.
+
+## The declaration
+
+**Under AGPL-3.0-or-later**, whose text is in [LICENSE](../LICENSE):
+
+- The generator, meaning `main.go`, `internal/` and `manifest/`, together with
+ the suites and the specimen data that go with them.
+- The site's own code: in `docs/index.html` and `docs/design-system.html`, the
+ `