Skip to content

Triage plan (agent-assisted) — for @jeswr sign-off #824

Description

@jeswr

Note: this issue was generated by an agent (Jesse's Fable assistant), acting per the process described in #823. It is a proposal only — nothing gets closed, merged, or changed until @jeswr (and any co-maintainer who wants to weigh in) signs off. If you're reading this near a weekend: there is absolutely no expectation of a response, fast or otherwise.

Hi! Following up on #823, I went through all 212 open issues and 34 open PRs and this is the consolidated triage plan for sign-off. Tick a box to approve that line, strike it out or comment to veto — partial sign-off is fine, and anything unticked simply stays as it is.

How items were assessed: items marked runtime-verified were reproduced (or confirmed fixed) against rdflib v2.4.0 with small scripts; the rest were assessed by reading the thread plus the current source. If any proposed closure looks wrong, that's exactly what this review step is for.

Summary: propose closing 110 (21 already fixed, 77 stale/obsolete/answered, 12 duplicates) · 5 need info from the reporter · 11 quick fixes · 49 actionable bugs · 32 enhancements · 5 docs · 34 PRs dispositioned · plus a modernization section at the end.


1. Proposed closures (110 issues)

1a. Already fixed — close with a short "fixed in current release" comment (21)

1b. Stale / obsolete / answered — close politely, invite reopening with a fresh repro (77)

1c. Duplicates — close with a link to the canonical issue (12)


2. Needs info — friendly ping to the reporter, close later if no reply (5)


3. Actionable bugs, ranked (49)

Recurring themes, for context: Turtle/N3 conformance (#329 umbrella: #214, #626, #647), fetcher correctness (#204, #617, #296, #461, #295/#348, #585), serializer output (#251 + prefix family, #546, #561, #749), update-manager/PATCH (#659/#313, #479), booleans (#147/#772), and packaging/bundlers (#657 umbrella: #449, #515, #665, #685).

High severity (5)

Medium severity (27)

Low severity (17)


4. Actionable enhancements (32) and docs (5)

No action needed on these now — this is just confirming they stay open as the curated backlog.

Enhancements / design decisions

Documentation


5. Open PRs (34)

Mergeable now (2) — green checks; just need a maintainer merge

Needs rebase, still wanted (3)

Needs work / maintainer decision (11)

Supersede with fresh PRs, crediting the author (3)

Propose closing (15) — code paths rewritten or change already on main


6. Modernization proposals (current setup reviewed; all opt-in)

I read the current eslint.config.mjs, .github/workflows/ci.yml, and package.json at v2.4.0. The bones are good — CI matrix on Node 22/24, OIDC npm publish with a prerelease gate, typedoc to gh-pages. Proposals, each of which can be its own small PR:

  • Enforce lint in CI. npm run lint exists but is not in the CI job, and the flat config only sets two rules (semi, no-console) as warnings on **/*.js — TypeScript files are effectively unlinted. Propose: add typescript-eslint recommended (warnings-only at first, autofix what's safe), and add a non-blocking lint step to CI so new code sees it.
  • Coverage in CI. Add nyc/c8 over the mocha run and publish a coverage summary on PRs (no threshold gate initially, just visibility).
  • Conformance suites as CI jobs (allowed-to-fail at first): the W3C Turtle harness from Failing RDF Turtle 1.1 conformance cases #329 and the JSON-LD manifests from Add standard JSONLD parser tests #391, plus the Playwright browser e2e from Add e2e for browser #713. This turns three long-standing issues into tracked, visible numbers.
  • Release flow. Releases are manual npm version + the publish workflow. Propose release-please (or changesets) with conventional commits going forward → automatic CHANGELOG and GitHub Releases (Create Releases with minified versions for greater adoption #49 asked for this in 2014!). Squash-merge with conventional titles keeps contributor friction near zero.
  • Node/TS policy. Add engines + .nvmrc (Add a dot nvmrc file #340), state the support policy in the README (e.g. "active LTS"), and schedule the TS 6 migration deliberately rather than via dependabot (Bump typescript from 5.9.3 to 6.0.3 #803).
  • Dependency hygiene. npm audit --omit=dev as a non-blocking CI step; group dependabot updates monthly to reduce PR noise.
  • Packaging health check. The “/esm” directory cannot load via a “module” import. #657 (broken esm build) is really a CI gap: add a smoke test that imports the built esm/ and lib/ outputs in a bare Node process and a bundler.

7. Quick-fix draft PRs I'd open next (pending sign-off on this plan)

All verified against v2.4.0 source at the stated locations; each PR will be draft, clearly agent-authored, with a regression test:

  1. Serializer contains misspelling of 'this.keyords' --> 'this.keywords' #742this.keyordsthis.keywords (src/serializer.js:682; restores the k flag)
  2. NTriples serializer misspelled rdf:nill #750rdf:nillrdf:nil (src/serializer.js:309)
  3. Turtle serializer mis‑normalizes xsd:boolean literal "true" as "false" #772 — boolean lexical form "true" serialized as "false" (src/serializer.js:580; melvincarvalho's suggested fix + tests, also touches Boolean literals parsed as "0", "1" #147)
  4. Mime-Type for N-Triples #110 — accept application/n-triples in parse() (src/parse.ts; supersedes PR Closes #110: Added support for application/n-triples #220 with credit)
  5. Typescript: first argument of serialize() should be optional #450 — allow undefined first argument in serialize() typings (src/serialize.ts; supersedes PR Allow falsy targets to be passed to the serializer #237 with credit)

Remaining quick-fix backlog for a second round: #148, #205, #275, #319 (+PR #281), #340, #741.

  • OK to open the five draft PRs above

Thanks for reading this far — again, no rush whatsoever. Comment inline, tick what you agree with, and I'll only act on what's approved. 🤖

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions