Skip to content

Commit 3b25fe8

Browse files
stroland02claude
andcommitted
docs: B70 done, and record the instruction its worker was right to decline
The brief forbade a second checked-in copy of the licence on the grounds that two copies diverge. That reasoning was sound and the conclusion was wrong, and the worker showed why rather than asserting it: PEP 639 rejects a parent-directory glob outright, and the build-time alternative breaks a fresh clone's own test run because src is a workspace member. A byte-equality assertion on every pytest run answers the divergence concern completely, which is the part I had not considered. Both of its load-bearing claims were mutation-tested here rather than taken from the report. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent e249247 commit 3b25fe8

1 file changed

Lines changed: 14 additions & 18 deletions

File tree

docs/superpowers/BACKLOG.md

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -136,24 +136,6 @@ which measured that `_UNSHIPPED` is exactly `{"??", "!!"}` and a staged new path
136136
nothing ever held it aside. Written against `9b13cce`, so it is a lead to re-derive rather than an
137137
answer to quote.
138138

139-
### B70 — the `sync-core` wheel asserts Apache-2.0 and ships no licence text
140-
141-
Built from main, `sync_core-0.1.0-py3-none-any.whl` holds 12 files, its `dist-info` carries only
142-
`WHEEL`, `METADATA` and `RECORD`, and its metadata reads `License-Expression: Apache-2.0` with no
143-
`License-File` and no body. The repository's `LICENSE` and `README.md` sit above `src/`, which
144-
`src/pyproject.toml` must use as its project root because `uv_build` refuses a module root
145-
outside the project it builds — so nothing in that build ever sees either file.
146-
147-
Apache-2.0 section 4(a) requires recipients receive a copy of the License, and this distribution
148-
exists precisely so third parties install it. The blank description is the second half: M3's
149-
deliverable is publishing `sync.core` **with adapter-authoring documentation**, and a reader of
150-
the package page would not learn that guide exists. Both are uncorrectable after publication —
151-
PyPI does not accept a re-upload for an existing version.
152-
153-
Publishing stays the user's call; this makes the wheel correct and proves it locally.
154-
155-
Dispatched to `m2-parsing`.
156-
157139
### B7 — The M0 acceptance run has not executed since the pipeline changed underneath it
158140

159141
`tests/test_e2e_stripe.py::test_one_command_produces_one_green_pull_request` is the
@@ -201,6 +183,20 @@ is what a reviewer needs and duplicating it here would let the two copies drift.
201183

202184
## Done
203185

186+
- **B70** — the core wheel ships the licence it asserts, and a page worth landing on. Landed
187+
`e249247`. `dist-info/licenses/LICENSE` is present, `METADATA` carries `License-File: LICENSE` and
188+
`Description-Content-Type: text/markdown` with a rendering body, and the six-package install is
189+
unchanged. **The worker declined my instruction not to check in a second copy of the licence, and
190+
measured why:** PEP 639 forbids the parent-directory operator in a `license-files` glob and uv
191+
rejects `../LICENSE` verbatim, so the text must sit under `src/` — which must be the core project
192+
root for the reason B68 documented. A build-time copy is worse still: `src` is a workspace member,
193+
so declaring `license-files` with the file absent makes `uv run` itself fail, and a fresh clone
194+
could not run its own suite. My stated reason for the prohibition was divergence, and a byte-equality
195+
test on every run closes it at zero build cost. Both claims mutation-tested here — diverging the copy
196+
fails `test_the_two_licence_copies_cannot_drift_apart`, removing `license-files` fails
197+
`test_the_built_core_wheel_carries_the_licence_and_a_description`.
198+
199+
204200
- **B49** — the corpus is now a **superset** of what the rule proposes rather than equal to it. The
205201
four differences were classified before anything moved: one genuine addition
206202
(`virtual-lab-GetBalance`, filling a response slot nothing occupied) and **three substitutions**

0 commit comments

Comments
 (0)