Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 636fe19e59 | |||
| 8a847dea0a | |||
| bcab476c87 |
@@ -3,8 +3,8 @@
|
||||
Lossless conversion between **Atlassian Document Format** (ADF), an extended markdown flavour, and
|
||||
an HTML dialect.
|
||||
|
||||
**Status: pre-release — the markdown round-trip (`adfToMarkdown`, `markdownToAdf`); HTML not
|
||||
yet.**
|
||||
**Status: published — the markdown round-trip (`adfToMarkdown`, `markdownToAdf`); HTML at
|
||||
`0.3.0`.**
|
||||
Plan: `todo.md`. Decisions: `AGENTS.md`. The flavour's grammar:
|
||||
[`spec/flavour.md`](spec/flavour.md).
|
||||
|
||||
|
||||
Generated
+3
-3
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"name": "@larvit/adf-codec",
|
||||
"version": "0.0.0",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@larvit/adf-codec",
|
||||
"version": "0.0.0",
|
||||
"version": "0.1.0",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/node": "24.13.3",
|
||||
"typescript": "7.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=24"
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
|
||||
+1
-2
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"name": "@larvit/adf-codec",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"description": "Lossless conversion between Atlassian Document Format, extended markdown and HTML",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -532,3 +532,23 @@ Under **3 — `markdownToAdf` (`0.1.0`)**:
|
||||
`instrumentisto/geckodriver`, currency over size — the leg's whole worth is a real
|
||||
SpiderMonkey, which decays the moment the pin stops moving, and the smaller image was four
|
||||
Firefox majors behind with a publisher that may go quiet while Renovate stays silent.
|
||||
|
||||
## 5 — Ship `0.1.0`
|
||||
|
||||
- [ ] **5 — Ship `0.1.0`.** Only the maintainer's own acts are left (§15): make the Gitea repo
|
||||
public (§6), create the `NPM_TOKEN` secret, confirm the Actions token may push tags — the
|
||||
publish succeeds and the tag push then reddens the run, though the next push to `main`
|
||||
retries the tag alone — and open the bump PR that sets `version` to `0.1.0` and drops
|
||||
`private: true`, the guard against any earlier publish. The bump and the drop go in one
|
||||
commit: dropping `private` alone publishes `0.0.0`, which also differs from npm's nothing. `0.1.0` is the
|
||||
markdown round-trip: both markdown directions, the types, `isAdfDocument`, proved over the
|
||||
checked-in corpus.
|
||||
**Settled** (the maintainer, 2026-09-01): the round-trip proved over the checked-in corpus
|
||||
is what `0.1.0` ships on, and the open-ended proof work follows it rather than gating it —
|
||||
3k's spec suite and 4's generators and maintainer-supplied payloads are `0.2.0`, 4b's retry
|
||||
`0.1.1`. A consumer using the library is worth more than a wider proof nobody has needed
|
||||
yet, and §8's pre-1.0 rules cover what the wider proof then finds.
|
||||
|
||||
**Shipped** 2026-09-05: `@larvit/adf-codec@0.1.0` published and `v0.1.0` tagged on `8a847de`. Publishing needed a
|
||||
bypass-2FA token — the account carrying no write-2FA requirement was not enough, npm demanded an
|
||||
OTP until the token itself bypassed it.
|
||||
|
||||
@@ -5,7 +5,7 @@ milestone. A done item shrinks to its title here; its full text moves to `todo-h
|
||||
|
||||
## Milestones
|
||||
|
||||
Shipping order: 3h, 3i, 3j, 5a, 5b, 5c, 5d, 5 → `0.1.0`; 4b and 4c → `0.1.1`; 4, 3k → `0.2.0`;
|
||||
Shipping order: 3h, 3i, 3j, 5a, 5b, 5c, 5d, 5 → `0.1.0` (shipped 2026-09-05); 5e before 2027-01; 4b, 4c and 4d → `0.1.1`; 4, 3k → `0.2.0`;
|
||||
6, 7 → `0.3.0`; 9, 10, 11 → TBD.
|
||||
The numbering is the order the work was planned in, not the order it ships.
|
||||
|
||||
@@ -112,19 +112,30 @@ The numbering is the order the work was planned in, not the order it ships.
|
||||
cost, which 3i's slot parse doubles rather than changes in class, bounded by the 500-level
|
||||
guard. §11's scanning rule is the whole argument; the pipeline persona feeds documents
|
||||
nobody typed.
|
||||
- [ ] **5 — Ship `0.1.0`.** Only the maintainer's own acts are left (§15): make the Gitea repo
|
||||
public (§6), create the `NPM_TOKEN` secret, confirm the Actions token may push tags — the
|
||||
publish succeeds and the tag push then reddens the run, though the next push to `main`
|
||||
retries the tag alone — and open the bump PR that sets `version` to `0.1.0` and drops
|
||||
`private: true`, the guard against any earlier publish. The bump and the drop go in one
|
||||
commit: dropping `private` alone publishes `0.0.0`, which also differs from npm's nothing. `0.1.0` is the
|
||||
markdown round-trip: both markdown directions, the types, `isAdfDocument`, proved over the
|
||||
checked-in corpus.
|
||||
**Settled** (the maintainer, 2026-09-01): the round-trip proved over the checked-in corpus
|
||||
is what `0.1.0` ships on, and the open-ended proof work follows it rather than gating it —
|
||||
3k's spec suite and 4's generators and maintainer-supplied payloads are `0.2.0`, 4b's retry
|
||||
`0.1.1`. A consumer using the library is worth more than a wider proof nobody has needed
|
||||
yet, and §8's pre-1.0 rules cover what the wider proof then finds.
|
||||
- [ ] **4d — What the gate says while it runs (`0.1.1`).** `ci.sh` runs nine legs and announces
|
||||
none of them, so five minutes of a Gitea run read as silence and a hang cannot be told from
|
||||
a slow pull — the maintainer hit exactly this on the `0.1.0` release. Three causes, each its
|
||||
own fix. The legs need markers: `plainpages`' `ci.sh` prints a `step()` header per leg and
|
||||
this one prints nothing, so name the leg and the image before each. The longest leg is the
|
||||
quietest: `test_output=$(… npm test 2>&1)` buffers the whole Node run to replay it after,
|
||||
because the zero-test guard greps the count — stream it and grep a copy (`tee`), rather than
|
||||
trading the output for the guard. And two legs are silenced outright, `npm pack` and the
|
||||
tarball install, whose `>/dev/null` predates the offline install that made them quick and
|
||||
quiet. `publish.sh` owes the same: today it says nothing between reading `private` and the
|
||||
registry answering, which is where its `npm ci` and rebuild sit — the seconds §9 accepts
|
||||
rather than promoting the gate's `dist`, and unmeasured until the log shows them. Per-leg
|
||||
timing is what turns "slow or hung" from a guess into a reading; the browser leg's own
|
||||
5.4–7.9s against a 17s warm gate is the number that made it obviously cheap.
|
||||
- [x] **5 — Ship `0.1.0`.**
|
||||
- [ ] **5e — The publish token's deadline (before 2027-01).** `0.1.0` published only once the npm
|
||||
token carried **Bypass 2FA**: the account requiring no 2FA on writes was not enough, and npm
|
||||
answered `EOTP` until the token itself bypassed. npm retires bypass-2FA tokens for direct
|
||||
publishing around January 2027, and its replacement — trusted publishing over OIDC —
|
||||
supports GitHub Actions, GitLab CI, CircleCI and Buildkite, not Gitea or self-hosted
|
||||
runners. So the release path has an expiry date and no drop-in successor yet. Revisit before
|
||||
the deadline: whether npm has added Gitea or self-hosted OIDC, and otherwise whether the
|
||||
release moves to a human-approved staged publish — which fits badly with publish-on-merge,
|
||||
and is the trade to weigh rather than discover on a red release run.
|
||||
- [x] **5a — Rename to `@larvit/adf-codec`.**
|
||||
- [x] **5b — The consumer's error surface.**
|
||||
- [x] **5b1 — The error's source position.**
|
||||
|
||||
Reference in New Issue
Block a user