docs: process documents and release tooling for the 1.0-beta release - #519
Open
awatson1978 wants to merge 9 commits into
Open
awatson1978 wants to merge 9 commits into
awatson1978 wants to merge 9 commits into
Conversation
Supersedes the 2026-08-07 plan. Describes the package split, the 1.0-beta release branch, per-package staging branches, the test-first sequence for core, routing of the 33 review findings, and lockstep publishing with semantic-release. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two trivial assertions on the committed sample-sr.dcm fixture. The purpose is to exercise the CI checks on the 1.0-beta branch and prove they run and report on pull requests. See RELEASE_PLAN.md section 6, step 0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e 24 fs.readFileSync can return a small file inside a larger shared memory pool. Taking .buffer on that result hands the parser the whole pool, with the file sitting at a nonzero offset, and the DICM marker check then fails. Node 24 pools more aggressively, which is why anonymizer.test.js and data.test.js fail there today (7 tests) while Node 22 passes by luck of alignment. This adds readFileAsArrayBuffer() to testUtils and routes all 22 file-read sites through it. Typed-array .buffer uses are untouched. Same class of problem as issue #311. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ware helper The first pass converted single-line fs.readFileSync(...).buffer sites. CI on Node 24 then failed in a second population: reads assigned to a variable first, with .buffer taken on a later line. This converts those sites in data.test.js, data-options.test.js, lossless-read-write.test.js and normalizers.test.js, and drops the imports that became unused. Sites that already handle byteOffset correctly are untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ensureTestDataDir checked for the directory and then created it. Two parallel jest workers can both pass the check, and the slower mkdir then fails with EEXIST, which failed test_multiframe_1 on one CI leg. mkdirSync with recursive:true succeeds whether or not the directory exists, so the check goes away. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three process documents the release plan calls for. The style guide defines the audience (healthcare-literate, no assumed programming or imaging jargon) and bans machine-flavored prose. The PR template requires plain-language descriptions, runnable examples, test evidence, and fixture citations. DATACITATION.md records the origin and license of every committed DICOM test file, with the legacy files honestly marked as provenance-pending. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
semantic-release computes one version from conventional commits; stamp-workspace-versions.mjs writes it into every publishable workspace package.json, and pnpm -r publish releases them together under the npm beta tag. The publish workflow now also fires on 1.0-beta and release/0.5x, and passes NODE_AUTH_TOKEN for pnpm publish. Nothing publishes until the repository owner adds 1.0-beta to the publish environment allowlist. See RELEASE_PLAN.md sections 9 and 12. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adapts the rules from Cursor's unslop skill: the fuller AI-vocabulary list, filler phrases, fancy synonyms for is, vague attributions, synonym cycling, false ranges, punctuation and formatting rules (em dashes, colons, bold, sentence-case headings, straight quotes), abstract metaphor nouns, and a plain-speech section that includes the rule against over-compressed arrow-speak. Also states the boundary this guide draws that unslop does not: metaphors that teach a concept to a non-technical reader stay, metaphors that decorate go. The guide's own prose now follows its own em-dash rule. Source: https://github.com/cursor/plugins/blob/main/pstack/skills/unslop/SKILL.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the first step from the plan in #518: the documents and configuration that set the bar for everything that comes after. The three documents:
docs/WRITING_STYLE.md— who we're writing for and how. Short version: assume a smart reader who knows healthcare but not programming or DICOM, define terms the first time they show up, and skip the machine-flavored filler. Addresses language concerns raised on feat: dcmjs 1.0 rewrite — event streaming, bounded-memory large files, FHIR, video, DICOMDIR #512, and includes a concrete list of banned constructions rather than just "write plainly.".github/PULL_REQUEST_TEMPLATE.md— what a PR description needs. Small staging PRs just fill in the summary and the checklist; the one-per-package merges into1.0-betafill in everything: a runnable example, test evidence, benchmarks where performance is claimed, and fixture citations.DATACITATION.md— where each committed DICOM test file came from and under what license, following OHIF's file of the same name. The six older files are listed as "still tracing" — sorting that out is part of the planned fixtures package.The release tooling is
.releaserc.json, a forty-line script, and a workflow trigger change. The idea is that all the packages release together with one shared version number, like a newspaper edition: an editor (semantic-release) picks the edition number from the commit titles, the script stamps it on every publishable package, andpnpm -r publishprints the whole run under the npmbetatag. The publish workflow now also fires on1.0-betaandrelease/0.5x.To be clear, merging this publishes nothing yet. The
publishGitHub environment still gates the workflow, and1.0-betaisn't on its allowed-branch list until the repo owner adds it (RELEASE_PLAN.md, section 12, along with claiming the@dcmjsscope on npm).The stamp script ships has a quality control test: it stamps a scratch workspace, verifies private packages are skipped, and verifies a garbage version string is rejected without touching any file.