Skip to content

chore: correct cross-package drift in blas/base README and package.json files#13063

Draft
Planeshifter wants to merge 7 commits into
developfrom
philipp/drift-blas-base-2026-06-22
Draft

chore: correct cross-package drift in blas/base README and package.json files#13063
Planeshifter wants to merge 7 commits into
developfrom
philipp/drift-blas-base-2026-06-22

Conversation

@Planeshifter

Copy link
Copy Markdown
Member

Description

This pull request:

  • Corrects seven cross-package drift findings in @stdlib/blas/base, surfaced by majority-vote analysis across the 107 non-namespace-aggregator leaf packages in the namespace.

Namespace summary

  • Members analyzed: 107 leaf packages (the assert, ndarray, and wasm sub-namespace aggregator packages were excluded since they aggregate other packages rather than implement a routine).
  • Features analyzed: file tree, package.json top-level / scripts / directories / keywords shape, README ##/### section list, manifest.json shape, test//benchmark//examples/ filename sets.
  • Features with a clear majority (≥75%): every package.json top-level key and every directories sub-key (100%); four universal keywords (stdlib, blas, array, ndarray); the canonical file tree (README.md, package.json, lib/{index,main}.js, test/test.js, examples/index.js, docs/types/{index.d.ts,test.ts}, docs/repl.txt, benchmark/benchmark.js); the canonical ## Usage / ## Notes / ## Examples README sections.
  • Features excluded for no clear majority: the optional __stdlib__ config block (60% prevalence, split evenly between {} and {"wasm": false}); gypfile (47%); browser (40%); the ## Notes heading on enum-utility packages (intentionally empty); the ## See Also content (auto-populated).

Per outlier package

blas/base/drotg

README.md opens the <section class="examples"> block but jumps straight to the code fence without the ## Examples heading. The heading is present in 105/107 (98%) of siblings — including the analogous dasum, ccopy, dswap READMEs — and is a structural template element, not a content judgment. Heading restored.

blas/base/srotg

Same drift as drotg: the <section class="examples"> block is missing the ## Examples heading present in 105/107 (98%) of siblings. Same restoration applied.

blas/base/dnrm2

package.json keywords lacked ndarray despite the package shipping a working .ndarray method (lib/ndarray.js, c_dnrm2_ndarray). The keyword is present in 99/107 (93%) of siblings and in every level-1 strided-vector peer (dasum, daxpy, dswap, ...). Keyword added.

blas/base/snrm2

Same omission as dnrm2: .ndarray method ships but ndarray was missing from the keywords. Present in single-precision peers (sasum, saxpy, sswap). Keyword added.

blas/base/gnrm2

Same omission for the generic variant: .ndarray method ships, peer gasum carries ndarray. Keyword added.

blas/base/gswap

Same omission for the generic swap: .ndarray method ships, typed peers dswap and sswap carry ndarray. Keyword added.

blas/base/zcopy

README.md jumped directly from <!-- /.c --> to the links section, with no <section class="related"></section> scaffold. The empty scaffold is the hook the related-links auto-populator keys off, and it is present in 106/107 (99%) of siblings — ccopy, dcopy, scopy all carry it. Only the empty scaffold (plus the surrounding HTML comments) was added; the inner content remains generator-owned.

Related Issues

Does this pull request have any related issues?

None.

Questions

Any questions for reviewers of this pull request?

No.

Other

Validation

  • Structural extraction: per-package walk of file tree, package.json shape, README section list, manifest.json shape, and test//benchmark//examples/ filenames; majority computed at the 75% threshold (⌈107 × 0.75⌉ = 81).
  • Three-agent drift validation (run in parallel against the 7 candidate corrections):
    • Opus semantic-review — confirm the deviation is not justified by a difference in what the package does.
    • Opus cross-reference — confirm tests/examples do not rely on the deviation and applying the fix does not break a documented contract.
    • Sonnet structural-review — confirm the majority pattern is what should be applied (and not an inapplicable element).
  • All seven candidates returned confirmed-drift / safe-to-fix from every reviewer and advanced.

Deliberately excluded from the run:

  • The __stdlib__ config block split (60% prevalence, no clear majority shape).
  • Missing benchmark/benchmark.js in dgemm/sgemm/ggemm: these packages benchmark across 40 parameter-combination files instead, by design.
  • Missing benchmark/benchmark.js and docs/repl.txt in shared/xerbla: these are utility packages (shared include dir, BLAS error handler) with no public computation to benchmark or REPL-document.
  • The ## Notes heading on enum-utility packages (diagonal-types, layout-resolve-str, ...): the <section class="notes"> element is present but intentionally empty, which is the convention for the enum family.
  • The <!-- <related-links> --> placeholder in the links section (only 25% prevalence — no majority).
  • ## See Also content in <section class="related">: auto-populated by the related-links generator, exempt from manual edits.

A local report with the full audit trail (feature distributions, dropped candidates and rationale, namespace random seed) lives at ~/drift-reports/drift-blas-base-2026-06-22.md.

Checklist

AI Assistance

  • Yes
  • No

If you answered "yes" above, how did you use AI assistance?

  • Code generation (e.g., when writing an implementation or fixing a bug)
  • Test/benchmark generation
  • Documentation (including examples)
  • Research and understanding

Disclosure

This PR was authored by Claude Code running as a scheduled cross-package drift-detection routine: structural features were extracted across all 107 non-aggregator leaf packages of @stdlib/blas/base, deviations from the ≥75% majority pattern were surfaced, three reviewer agents (semantic, cross-reference, structural) validated each candidate fix in parallel, and the resulting one-line README and package.json corrections were applied per-package. A human will audit and promote the PR out of draft.


@stdlib-js/reviewers


Generated by Claude Code

claude added 7 commits June 22, 2026 16:15
Add the conventional `## Examples` heading inside the
`<section class="examples">` block. Present in 105/107 (98%) of sibling
packages in `@stdlib/blas/base`; absence here appears to be an
oversight shared with the `srotg` twin.
Add the conventional `## Examples` heading inside the
`<section class="examples">` block. Present in 105/107 (98%) of sibling
packages in `@stdlib/blas/base`; absence here mirrors the `drotg` twin.
Add `ndarray` to the keywords array. Present in 99/107 (93%) of sibling
packages and in every level-1 strided-vector sibling (dasum, daxpy,
dswap, ...); `dnrm2` ships an `.ndarray` method so the keyword applies.
Add `ndarray` to the keywords array. Present in 99/107 (93%) of sibling
packages and in single-precision peers (sasum, saxpy, sswap);
`snrm2` ships an `.ndarray` method so the keyword applies.
Add `ndarray` to the keywords array. Present in 99/107 (93%) of sibling
packages and in the generic `gasum` peer; `gnrm2` ships an `.ndarray`
method so the keyword applies.
Add `ndarray` to the keywords array. Present in 99/107 (93%) of sibling
packages and in the typed `dswap`/`sswap` peers; `gswap` ships an
`.ndarray` method so the keyword applies.
Add the empty `<section class="related"></section>` placeholder block
before the links section, matching the convention used by 106/107
(99%) of sibling packages in `@stdlib/blas/base`. The scaffold is the
hook that the related-links auto-populator keys off; the inner content
remains generator-owned.
@stdlib-bot stdlib-bot added the BLAS Issue or pull request related to Basic Linear Algebra Subprograms (BLAS). label Jun 22, 2026
@stdlib-bot

Copy link
Copy Markdown
Contributor

Coverage Report

Package Statements Branches Functions Lines
blas/base/dnrm2 $\\color{green}430/430$
$\\color{green}+100.00\\%$
$\\color{green}34/34$
$\\color{green}+100.00\\%$
$\\color{green}4/4$
$\\color{green}+100.00\\%$
$\\color{green}430/430$
$\\color{green}+100.00\\%$
blas/base/drotg $\\color{green}206/206$
$\\color{green}+100.00\\%$
$\\color{green}12/12$
$\\color{green}+100.00\\%$
$\\color{green}2/2$
$\\color{green}+100.00\\%$
$\\color{green}206/206$
$\\color{green}+100.00\\%$
blas/base/gnrm2 $\\color{green}288/288$
$\\color{green}+100.00\\%$
$\\color{green}29/29$
$\\color{green}+100.00\\%$
$\\color{green}3/3$
$\\color{green}+100.00\\%$
$\\color{green}288/288$
$\\color{green}+100.00\\%$
blas/base/gswap $\\color{green}424/424$
$\\color{green}+100.00\\%$
$\\color{green}49/49$
$\\color{green}+100.00\\%$
$\\color{green}3/3$
$\\color{green}+100.00\\%$
$\\color{green}424/424$
$\\color{green}+100.00\\%$
blas/base/snrm2 $\\color{green}431/431$
$\\color{green}+100.00\\%$
$\\color{green}33/33$
$\\color{green}+100.00\\%$
$\\color{green}4/4$
$\\color{green}+100.00\\%$
$\\color{green}431/431$
$\\color{green}+100.00\\%$
blas/base/srotg $\\color{green}207/207$
$\\color{green}+100.00\\%$
$\\color{green}12/12$
$\\color{green}+100.00\\%$
$\\color{green}2/2$
$\\color{green}+100.00\\%$
$\\color{green}207/207$
$\\color{green}+100.00\\%$
blas/base/zcopy $\\color{green}394/394$
$\\color{green}+100.00\\%$
$\\color{green}17/17$
$\\color{green}+100.00\\%$
$\\color{green}4/4$
$\\color{green}+100.00\\%$
$\\color{green}394/394$
$\\color{green}+100.00\\%$

The above coverage report was generated for the changes in this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BLAS Issue or pull request related to Basic Linear Algebra Subprograms (BLAS).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants