Skip to content

chore(deps-dev): bump js-yaml from 4.3.0 to 4.3.1 - #3

Closed
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/npm_and_yarn/js-yaml-4.3.1
Closed

chore(deps-dev): bump js-yaml from 4.3.0 to 4.3.1#3
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/npm_and_yarn/js-yaml-4.3.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 7, 2026

Copy link
Copy Markdown
Contributor

Bumps js-yaml from 4.3.0 to 4.3.1.

Changelog

Sourced from js-yaml's changelog.

4.3.1 - 2026-07-31

Security

  • [backport] Remove quadratic complexity from !!omap duplicate key detection.
Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.3.0 to 4.3.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.1/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.3.0...4.3.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.3.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Aug 7, 2026
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying imqueue-org with  Cloudflare Pages  Cloudflare Pages

Latest commit: 490b1c6
Status: ✅  Deploy successful!
Preview URL: https://e140c870.imqueue-org.pages.dev
Branch Preview URL: https://dependabot-npm-and-yarn-js-y.imqueue-org.pages.dev

View logs

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying imqueue-com with  Cloudflare Pages  Cloudflare Pages

Latest commit: 490b1c6
Status: ✅  Deploy successful!
Preview URL: https://5ab23fed.imqueue-com.pages.dev
Branch Preview URL: https://dependabot-npm-and-yarn-js-y.imqueue-com.pages.dev

View logs

@dependabot @github

dependabot Bot commented on behalf of github Aug 20, 2026

Copy link
Copy Markdown
Contributor Author

Looks like js-yaml is up-to-date now, so this is no longer needed.

@dependabot dependabot Bot closed this Aug 20, 2026
@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/js-yaml-4.3.1 branch August 20, 2026 14:54
Mikhus added a commit that referenced this pull request Aug 21, 2026
The corpus is built from the markdown mirrors, and the mirrors carry `# Title` plus a
Source/Published/Author block and nothing else — front matter is not in them by design. So
the two most deliberately curated relevance signals on this site were absent from its own
search: `description` was ignored in favour of each page's first paragraph, and `keywords`
was unused entirely. 186 curated phrases across 29 posts, 140 of which appear nowhere in
the indexed text.

The consequence, measured as the rank of the page each phrase was WRITTEN for:

  handle traffic spikes microservices   absent of 32  ->  #1
  nodejs backpressure microservices     absent of 32  ->  #5
  overload resilience                   absent        ->  #1
  message queue throughput              #32 of 134    ->  #3
  nodejs job queue                      #36 of 93     ->  #3
  imqueue benchmark                     #2 of 140     ->  #1

Weighted at 300 — BELOW emphasis — and scored on coverage alone: no density, no position,
no phrase bonus. A keyword list is a handful of comma-separated phrases, so
occurrences-per-token sits near 1.0 for anything that matches at all, and density would
rank by brevity while rewarding padding; order in a comma list means nothing, so position
would be noise.

That placement is the point rather than caution for its own sake. Google has ignored
<meta name="keywords"> since 2009 and Bing treats a stuffed one as a spam signal — because
neither can trust the author. A first-party index can: the author is the site. What does
not change is that a self-declared list is cheap to pad, so it sits under the signals that
cost something to fake, and check:search-ranking asserts "safeDelivery" still ranks the
symbol first — the failure mode meta keywords earned its reputation for is an identifier
query returning articles that merely list the identifier.

Plumbed through a build intermediate: src/search-frontmatter.11ty.js emits url ->
{description, keywords} and the generator reads it and DELETES it, so it never ships. A
template rather than a front-matter parse because mapping a source file back to its URL
means re-deriving permalink resolution, which Eleventy owns and which this repo has already
been bitten by duplicating; `item.url` cannot drift from what Eleventy published. Keyword
text also feeds the vocabulary, so inflections in a keyword list get lemmas like any other
word.

Tier 1 grows 65.2 -> 67.5 KB gz on org, 0.9 -> 1.1 on com.

One defect worth recording: the new record was first named `entry`, inside a loop whose
variable is the directory entry. Shadowing it in the same block is a temporal-dead-zone
error reported at the line ABOVE, which reads as readdir having failed.
Mikhus added a commit that referenced this pull request Aug 21, 2026
…e URL path

Reported from the browser, both on imqueue.org: "what is imqueue license" put the whole
COMMERCIAL (imqueue.com) group above imqueue.org's own licensing page, and "what is imqueue
licensing options are" ranked a Moleculer comparison first with /license/ third.

SITE PRIORITY IS NOW A RULE, NOT A WEIGHT

The site you are on wins: every local result precedes every peer result, the peer group
renders last whatever it scored, and a merged list sorts local first. PEER_WEIGHT = 0.8 is
gone — a multiplier expresses a preference, and com's pages are titled things like
"@imqueue — commercial license & support", so it lost outright on score. A rule has to be
enforced where the order is decided.

The cost is accepted and stated in the code: on imqueue.org, "pricing" now shows org's
licensing material above imqueue.com/pricing/ even though org has no pricing page. The peer
group is still there, labelled, one glance below. check:search-ranking asserts the invariant
over five queries and separately asserts that imqueue.com/pricing/ is still REACHABLE as
the best peer result — priority is about order, not exclusion.

DENSITY CANNOT EXCEED COVERAGE

`IMQOptions` is two tokens, so matching just "options" gave it density 1.0 and the
interface ranked FIRST for "licensing options", with the licensing page at #50. Density
measures how concentrated the matched terms are; if half the query missed, half is the most
that concentration can be worth. One line, and it is the fix with the widest reach here.

THE URL PATH IS AN ELEMENT

Weak (190), coverage plus how much of the path the query accounts for. A site's canonical
page on a subject usually has the subject in its path, which is why every search engine
uses this — /license/ matching "licensing" is the whole identity of that page.

Not for generated reference: a symbol's path is derived from its own name, so scoring it
double-counts the title, and the package segment is a bare English word — `job`, `net`,
`core`. That version lifted every @imqueue/job symbol above the article written for "nodejs
job queue", #3 to #10, which the check caught.

Measured, over eight licensing-intent phrasings:

  licensing options                      #50 -> #1
  what is imqueue licensing options are   #3 -> #1
  is imqueue free                        #91 -> #68
  can i use imqueue commercially         #34 -> #25
  what license does imqueue use           #6 -> #5

TWO THINGS TRIED AND REJECTED

A -ly rule for the lemmatizer, to reach "commercially" -> "commercial". It also produced
`reply -> rep`, `apply -> app`, `only -> on` and `fully -> ful`, and the validity check
cannot help because all four are words. That is the tell that -ly is DERIVATIONAL: it
attaches to an adjective, so reversing it needs a part of speech. Same reason -er and -est
are absent. "reply" is request/reply vocabulary on half this site.

And the front-matter intermediate is now MOVED out of the output rather than deleted.
Deleting it made the generator non-idempotent: `eleventy.after` fires on every rebuild, and
an incremental one under --serve that did not re-render that template found no file and
rewrote the index with every curated keyword silently absent. Twice I measured that as "the
keywords element has stopped working" — with numbers identical to before the feature
existed. The rest of that confusion was mine: I had silenced build output with `>/dev/null`
and `| tail -1`, so I was reading a stale index from a build I could not see fail.

Three phrasings remain weak — "is imqueue free" at #68, "can i use imqueue commercially" at
#25. Both are conversational questions whose carrying word is paraphrased, and the cause is
that "use" and "imqueue" weigh the same as "license": there is no inverse document
frequency in this ranker. That is the next real signal, not a tuning problem.
Mikhus added a commit that referenced this pull request Aug 21, 2026
…alls

The MCP switch was held back by one number: chat-shaped questions 73.3% ->
65.8%, measured over the twelve hand-written questions in that server's smoke
test. Twelve cases cannot decide a delivery, and the labelled sets that can did
not exist then. They do now, so recall.js grew --set:

  agent     99.5% vs 83.9%   +15.6   p < 0.0001   569 better / 0 worse
  question  66.1% vs 55.7%   +10.4   p = 0.0241    20 better / 8 worse
  intent    78.9% vs 73.7%    +5.3   unmeasured     4 better / 3 worse

The direction reverses: on 115 questions the switch is a significant GAIN. The
twelve were not a sample of that population.

What survives is narrower and sharper. The three intent queries the switch
loses are the three the build log named as the worst failures, and the
published ranker answers all three near the top -- expose #1 vs #7, classType
#1 vs #9, the job-delay query #3 vs #7. All three describe a symbol instead of
naming it, which is the shape the server's own instruction #1 requires.

The mechanism is now a number rather than an anecdote: of the 71 questions
whose answer is not a blog page, 17 get a blog post at #1 and 13 of those lose
the answer from the top 6. Blog FAQ headings ARE questions, so they win the
question template. Live on imqueue.org today, both consumers.

Also here:

- --ref reads a past ranker for the site side too, so the pin can be tested.
  Identical at 2d999d9: none of Phase 1's five commits moved either labelled
  set's recall@6, and the submodule pin does not change this decision.
- baseline() moves into lib/harness.js. Three runners had grown their own copy
  of the same git-show-inside-the-submodule dance.
- An MCP build with no rankEntries() export is a hard error naming the cause.
  Phase 2 replaced it with this ranker, so the script would otherwise compare
  this ranker with itself and report a flawless dead heat -- the most
  convincing wrong answer available.
- kpi:questions was declared twice in package.json; the second won.
Mikhus added a commit that referenced this pull request Aug 21, 2026
The metrics table said what each number asks and why it is there, and never once
expanded the abbreviation or gave the formula. Every table in the report is headed
with them.

So: Precision at 1, Mean Reciprocal Rank, recall at 6, normalized Discounted
Cumulative Gain at 10 — each with what it computes per query, what the @k suffix
means, and a worked table of what all four give for a target landing at #1, #2, #3,
#4, #6, #7, #10, #11 and past #50. The table is generated from lib/harness.js rather
than from the textbook, because in one respect they differ.

That respect is worth stating plainly, since anyone who knows nDCG will assume
otherwise: OURS IS NOT CUMULATIVE. Textbook DCG sums the discounted gains of every
relevant hit inside the window; evaluate() takes the single best contribution
(Math.max). It is deliberate — `also` lists ALTERNATIVES, so the ideal ranking puts
one of them first rather than all of them, and summing would reward a ranker for
returning three spellings of the same answer. The note existed before the README was
rewritten and did not survive the rewrite; this puts it back next to the definition
instead of three sections away.

Also documents the two labels that appear in the tables with no explanation anywhere:
`lost` (the target never returned, or returned past rank 50 — the deep and
unreachable buckets summed) and micro versus macro. And names where each metric goes
blind, which the numbers alone do not show: r@6 falls off a cliff between #6 and #7,
nDCG@10 reaches zero after #10, and MRR@target stops counting at rank 50 because that
is the window evaluate() scores.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants