Skip to content

Commit ff3b0da

Browse files
LeadGoEngineerPaperclip-Paperclip
andcommitted
docs: add LICENSING.md referenced by README (follow-up to #37)
PR #37 promised LICENSING.md but the file was not actually included in the merge. README already links to it. This commit adds the file: - Records the v0.1.0–v1.0.1 GPL-2.0 history (gocronometer-linked) and the v1.1.0 MIT-clean cut. - Documents the clean-room ground rules used in the QUA-37 rewrite (public API surface only, no `gocronometer` source consulted). - Provides reproducibility steps (`go mod why`, `go list -m all`). Satisfies QUA-37 acceptance criterion #2 (LICENSING.md discloses GPL history and MIT-clean cut). Co-Authored-By: Paperclip <noreply@paperclip.ing>
1 parent 04aaae9 commit ff3b0da

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

LICENSING.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Licensing history
2+
3+
`crono-export-cli` is released under the MIT licence (see [LICENSE](LICENSE)).
4+
This file records the licensing history of the project so that downstream
5+
consumers can reason about which releases are MIT-clean.
6+
7+
## Summary
8+
9+
- **v1.1.0 and later — MIT-clean.** The CLI talks to Cronometer through an
10+
in-tree, fresh-authored HTTP client under [`internal/cronoapi/`](internal/cronoapi).
11+
Every transitive dependency reported by `go list -m all` is MIT, BSD, or
12+
Apache-2.0. No GPL code is linked into the binary.
13+
- **v0.1.0 through v1.0.1 — linked GPL-2.0 code.** These releases imported
14+
[`github.com/jrmycanady/gocronometer`](https://github.com/jrmycanady/gocronometer)
15+
(GPL-2.0) as the Cronometer client and were therefore subject to GPL-2.0
16+
obligations at distribution time. Users who built from those tags should
17+
treat the resulting binaries as GPL-2.0.
18+
19+
The earlier release notes have been amended to point at v1.1.0 as the first
20+
MIT-clean cut.
21+
22+
## Clean-room replacement (QUA-12 / QUA-37)
23+
24+
The replacement Cronometer client in `internal/cronoapi/` was written from a
25+
specification, not from the GPL source. The ground rules followed during the
26+
rewrite:
27+
28+
- **Inputs allowed.** `gocronometer`'s *public* API surface (exported names
29+
and signatures, visible via `go doc`) and Cronometer's own observable HTTP
30+
behaviour, captured against a real account into redacted fixtures.
31+
- **Inputs not allowed.** `gocronometer`'s source code, internal helpers, or
32+
unexported identifiers.
33+
- **Spec doc.** [`docs/cronometer-protocol.md`](docs/cronometer-protocol.md)
34+
describes the Cronometer endpoints, GWT request/response shapes, and the
35+
authentication handshake that the new client implements.
36+
- **Fixtures.** Recorded HTTP traces live under
37+
[`internal/cronoapi/testdata/`](internal/cronoapi/testdata/) and were
38+
redacted before commit (`tools/wirecap/`).
39+
- **Tests.** Unit tests for the new client exercise the fixtures only; they
40+
do not import `gocronometer` and never have.
41+
42+
The implementation PR ([#37](https://github.com/quantcli/crono-export-cli/pull/37))
43+
states explicitly that no `gocronometer` source was consulted during the
44+
rewrite.
45+
46+
## Verifying MIT-cleanliness
47+
48+
```sh
49+
# Confirms gocronometer is not in the build graph.
50+
go mod why github.com/jrmycanady/gocronometer
51+
# Expected: "(main module does not need package github.com/jrmycanady/gocronometer)"
52+
53+
# Lists every module in the build graph; review for licences.
54+
go list -m all
55+
```
56+
57+
If you discover a transitive GPL (or other copyleft) dependency in a
58+
v1.1.0+ release, please open an issue against `quantcli/crono-export-cli`
59+
so we can either drop or replace it.

0 commit comments

Comments
 (0)