chore: add missing keywords entries to two string/* package.json files#13235
Draft
Planeshifter wants to merge 2 commits into
Draft
chore: add missing keywords entries to two string/* package.json files#13235Planeshifter wants to merge 2 commits into
keywords entries to two string/* package.json files#13235Planeshifter wants to merge 2 commits into
Conversation
Adds the `stdlib` keyword to the `keywords` array of `@stdlib/string/num2words` so it matches the shared front-of-array metadata cluster used by 57/58 (98.3%) of the packages in `@stdlib/string/*`. `num2words` already carries every other generic descriptor from that cluster (`stdstring`, `utilities`, `utility`, `utils`, `util`, `string`, `str`), so the omission is a single-token gap against an otherwise uniform sibling template.
Adds the four generic `stdlib`-string metadata keywords `stdstring`, `utilities`, `util`, and `str` to the `keywords` array of `@stdlib/string/to-well-formed`. Each of these four sits at 57/58 (98.3%) conformance across the `@stdlib/string/*` namespace and already applies to a generic string-utility package (the target already carries `stdlib`, `string`, `utility`, `utils`). Insertions are placed adjacent to each keyword's existing cluster-mate to keep the diff minimal — no reordering of the pre-existing keyword sequence.
Contributor
Coverage Report
The above coverage report was generated for the changes in this PR. |
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.
Description
This pull request:
keywordsentries across two@stdlib/string/*package.jsonfiles so their sibling-shared metadata cluster is complete.Namespace summary
@stdlib/string(58 direct child packages; 56 leaf packages + 2 namespace aggregatorsbaseandtools, which are excluded from the semantic vote because they have nolib/main.js).package.jsontop-level key set,keywordsarray membership,directories/scripts/stdlibkey sets, README section presence and order,test//benchmark//examples/file naming,manifest.jsonshape, plus semantic-shape grep acrosslib/main.jscovering error-construction (formatusage), JSDoc@example/@returns/@throws/@parampresence, and copyright-year distribution.test/test.js,examples/index.js,lib/index.js,README.md,package.json,docs/types/index.d.ts,docs/types/test.ts(all 100%);benchmark/benchmark.js,lib/main.js,docs/repl.txt(96.6% — missing only from the two aggregators); everypackage.jsontop-level key (author,bin,bugs,contributors,dependencies,description,devDependencies,directories,engines,homepage,keywords,license,main,name,os,repository,scripts,types,version) at 84.5–100%; README sectionsUsage(100%),Examples(100%),Notes(77.6%),CLI(84.5%);bin-field presence (84.5%, perfectly correlated with theCLIREADME section — not drift);keywordsvaluesutility/utils/string(100%),stdlib/stdstring/utilities/util/str(98.3%); semantic: 55/56 leaves use@stdlib/string/formatfor error construction (100% exceptformatitself); 100% carry@example,@returns,@throwsJSDoc tags; 0% use string concatenation or template literals inthrow new *Error(...).See Also(70.7% — also generator-owned per pre-validation gate);lib/validate.jspresence (5.2% — only 3 packages use a separate validation module);manifest.jsonpresence (0%);binding.gyp/src/*.c/.npmignorepresence (0%);scriptsandstdlibpackage.jsonsubkey sets (empty across the namespace); JSDoc@examplecount per file (bimodal, no ≥75% mode).string/num2wordsFixes
keywords[0]inlib/node_modules/@stdlib/string/num2words/package.jsonfrom missing to"stdlib", matching the shared metadata template used across the namespace. Prior to this, 57/58 (98.3%)@stdlib/string/*packages carried"stdlib"as their first keyword;num2wordsalready had every other cluster keyword (stdstring,utilities,utility,utils,util,string,str) but this one. One-line diff, brings conformance to 58/58.string/to-well-formedCorrection adds
stdstring,utilities,util, andstrtoto-well-formed's keyword list — each keyword sits at 57/58 (98.3%) across@stdlib/string/*, andto-well-formedwas the lone outlier despite already carrying the cluster's siblings (stdlib,string,utility,utils). No semantic basis for the omission; insertions land next to their existing cluster-mates, no reordering.Validation
Three independent agents reviewed the candidate corrections:
confirmed-drift. Both target packages are ordinary leaf string utilities; the missing keywords apply generically and the omissions are asymmetric relative to already-present cluster-mates. No mathematical/semantic shape difference justifies the deviations.docs/repl.txt,docs/types/index.d.ts, ordocs/types/test.tsunder either outlier inspects thekeywordsarray; grep for the specific added keywords returns no matches inside the target packages; parentstring/README.mdreferences the outliers only as signature links, with no keyword contract; no keyword lint policy in.github/PULL_REQUEST_TEMPLATE.md.num2wordsinsertion position (stdlibat index 0) is unambiguous across all reference packages, and the fourto-well-formedinsertions are placed minimal-diff next to each keyword's cluster-mate without reordering the pre-existing sequence.Excluded from this run
Notessection content,See Alsolinks — either below the 75% majority threshold, or generator-owned and covered by pre-validation gate 7a.docs/repl.txtpresence gap in aggregator packagesbase/tools— generator-owned artifact per pre-validation gate 7a.benchmark/benchmark.js/lib/main.jspresence gap in aggregator packages — inapplicable per pre-validation gate 7b (namespace aggregators legitimately lack a benchmarkable single function).bin-field /CLIREADME section absence in 9 packages — presence is perfectly correlated (packages either have a CLI or don't), reflecting an intentional design difference, not drift.binkey incode-point-at/package.jsonis"from-code-point": "./bin/cli", which mismatches the package's documented CLI command name (code-point-at). This looks like a copy-paste bug but a fix would change the installed executable's name — a public behavior change — so it is flagged asneeds-humanand not touched here.Related Issues
No.
Questions
No.
Other
This PR is the output of an automated cross-package API drift detection routine over the
@stdlib/stringnamespace. Namespace was picked uniformly at random from eligible (≥8 direct child packages) namespaces. Detailed per-feature majority pattern, conformance percentages, outlier list, and validation-agent verdicts are in the local drift report (not committed to the repo). PR is intentionally left in draft state pending maintainer audit.Checklist
AI Assistance
If you answered "yes" above, how did you use AI assistance?
Disclosure
This PR was authored end-to-end by Claude Code running an automated cross-package drift-detection routine: namespace selection, structural feature extraction (Python over
package.json, README, and file trees), semantic-shape extraction (targeted grep overlib/main.jscovering error-construction, JSDoc tags, throws/returns), three-agent drift validation (opus semantic-review + opus cross-reference + sonnet structural-review), and patch application. Corrections are strictly additive metadata (keywordsarray entries) — no runtime, signature, or test behavior is touched. PR is left in draft for human audit before promotion.@stdlib-js/reviewers
Generated by Claude Code