|
| 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