Skip to content

style: align outliers in math/base/special/fast with namespace majority patterns#11856

Draft
Planeshifter wants to merge 1 commit intodevelopfrom
philipp/drift-math-base-special-fast-2026-04-30
Draft

style: align outliers in math/base/special/fast with namespace majority patterns#11856
Planeshifter wants to merge 1 commit intodevelopfrom
philipp/drift-math-base-special-fast-2026-04-30

Conversation

@Planeshifter
Copy link
Copy Markdown
Member

Description

Aligning outliers in math/base/special/fast with namespace majority patterns (random namespace pick, seed 20260430).

Namespace summary

  • Namespace: math/base/special/fast
  • Members analyzed: 16 (all non-autogenerated)
  • Features analyzed: file tree, package.json shape, manifest.json shape, README section sequences, test/benchmark/examples filenames, public signatures, return kind, validation prologue, error construction, JSDoc shape, dependency sets
  • Features with clear majority (≥75% conformance): file-tree presence (README.md, package.json, manifest.json, binding.gyp, lib/{index,main,native}.js, src/{Makefile,addon.c,main.c}, docs/{repl.txt,types/index.d.ts,types/test.ts}, benchmark/{benchmark.js,benchmark.native.js,c/native/{Makefile,benchmark.c}}, examples/{c/{Makefile,example.c},index.js}, include.gypi, test/{test.js,test.native.js} — all 16/16); package.json top-level keys (16/16); manifest.json keys (16/16); README level-2 prefix [Usage, Notes, Examples, C APIs] (16/16); returnKind: value (16/16); empty validationPrologue (16/16, all packages use IEEE-754 / NaN conventions instead of throw-based validation); jsdocShape.hasExample: true (16/16).
  • Features without clear majority (excluded from drift detection): trailing README sections after C APIs (10/16 = 62.5% have See Also; 5/16 have nothing; 1/16 has References + See Also — under 75% threshold; the See Also section is auto-populated by tooling); test fixtures presence (varies with whether the package needs reference data); publicSignature arity (varies between 1-arg and 2-arg by mathematical purpose, no namespace-wide convention).

math/base/special/fast/absf

Relocates the C example files in math/base/special/fast/absf from the non-standard examples/c/native/ nesting to the flat examples/c/ layout — matching 15/16 (93.8%) of sibling packages in the namespace. File contents are unchanged; the nested directory was inherited drift, not a deliberate variation, as confirmed by byte-identical comparison with the sibling abs package (modulo copyright year and float/double type differences). The empty native/ subdirectory has been removed.

Validation

What was checked:

  • Structural feature extraction across all 16 namespace members (file tree, package.json / manifest.json shape, README section sequences, test/benchmark/examples filenames).
  • Semantic feature extraction across all 16 lib/main.js + lib/index.js files (public signature, return kind, validation prologue, error construction, JSDoc shape, dependency set).
  • Two-agent drift validation:
    • Cross-reference agent (opus): grep'd the absf package and the entire math/base/special/fast namespace for any reference to the old examples/c/native/ path; none found. README does not link the path; tests/benchmarks/examples don't reference it.
    • Structural-review agent (sonnet): confirmed absf's build configuration is identical to other f-suffix siblings (atanhf, hypotf, maxf, minf), none of which use a native/ subdirectory. The deviation has no semantic justification.
  • The semantic-review agent (opus) was a no-op: no semantic-feature outliers exist (return kind, validation prologue, error construction, and JSDoc shape are all uniform across the 16 members).

What was deliberately excluded:

  • Drift on README See Also sections (under 75% threshold; section is auto-populated by tooling and shouldn't be hand-edited per the section comment).
  • publicSignature arity differences (1-arg vs 2-arg reflect mathematical purpose, not drift).
  • The alpha-max-plus-beta-min package's lib/factory.js and test/test.factory.js (intentional API extension, not drift).
  • Test fixture file naming/content (varies with whether the function needs reference data; not a layout convention).

Related Issues

No.

Questions

No.

Other

Random namespace pick used seed 20260430 (deterministic). 121 candidate namespaces were eligible (≥8 non-autogenerated members under lib/node_modules/@stdlib/); none of the eligible namespaces had >50% autogenerated members. Full per-feature drift report saved alongside the run.

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 as part of an automated cross-package API drift-detection routine: the namespace was selected at random (seed 20260430), structural and semantic features were extracted across all 16 non-autogenerated members, the drift finding was validated by two parallel review agents (opus cross-reference + sonnet structural-review), and the resulting one-package fix is a pure file relocation with byte-identical contents.


@stdlib-js/reviewers


Generated by Claude Code

Relocated `examples/c/native/Makefile` to `examples/c/Makefile` and
`examples/c/native/example.c` to `examples/c/example.c`, matching the
flat C-example layout used by 15/16 (93.8%) sibling packages in the
`math/base/special/fast` namespace. File contents unchanged; the empty
`examples/c/native/` directory was removed.
@stdlib-bot stdlib-bot added the Math Issue or pull request specific to math functionality. label Apr 30, 2026
@stdlib-bot
Copy link
Copy Markdown
Contributor

Coverage Report

No coverage information available.

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

Labels

Math Issue or pull request specific to math functionality.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants