Repository navigation
Fix minor issues found in the 1.0.0 release - #17
Merged
Merged
Conversation
Ship a 1.0.1 patch off 1.0.0 (no API changes) bundling the fixes and polish found after release: - NuGet package readme now renders the logo — a Markdown image instead of the bare <img> HTML NuGet strips, packaged as a dedicated icon.png. - Docs site shows the Graph1x logo in the navbar instead of the default DocFX logo. - Both READMEs gain CI and coverage badges and a "How this was built" disclosure; CI now publishes coverage to Codecov. - Add the milestone issue template. - Bump the version to 1.0.1 and add the CHANGELOG entry. Kept at the 1.0 feature set and 830-test count — no 1.1.0 content in a patch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Brandes' path counting is only valid when every vertex settles after all of its shortest-path predecessors. Dijkstra guarantees that for strictly positive weights, but a zero-weight edge ties predecessor and successor at the same distance, so the priority queue can settle them in either order. When the successor won, relaxing the edge hit the settled-neighbor short circuit and its path count was never added, silently understating sigma and producing wrong scores. A graph of n zero-weight middles between one source and one sink, where each middle provably sits on 1 of n shortest paths, scored [0.5, 0, ..., 0, 0.5] instead of 1/n each: some middles vanished, others inflated 2.5x. Prefer a loud failure over plausible-looking wrong numbers, which callers have no way to detect. Correcting sigma alone would not be enough anyway: the settle order can also place a vertex ahead of its own predecessor, breaking the invariant the reverse accumulation phase depends on. Proper zero-weight support needs equal-distance vertices ordered topologically over the zero-weight subgraph, which is minor-release work; throwing now keeps that a compatible widening later. Positive weights are unaffected, as are the hop-count overloads, which count paths breadth-first and never consult a weight. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mermaid treats '#' as the introducer of an entity escape, and the exporter emitted quotes as "#quot;" without escaping '#' itself. Any label containing a '#' therefore rendered as text the caller never wrote, and the escaping was not injective: the literal label 'say #quot;hi#quot;' produced output byte-identical to 'say "hi"'. Escape '#' as '#35;' before the other cases, which makes the class doc's promise that arbitrary vertex strings are safe actually true. Quotes still emit '#quot;' directly rather than through the escaper, so existing output for quoted labels is unchanged. Labels are export-only, so this was a fidelity bug rather than an injection one: a forged entity could alter the rendered text but not break out of its node. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jul 16, 2026
Welcome to Codecov 🎉Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests. ℹ️ You can also turn on project coverage checks and project coverage reporting on Pull Request comment Thanks for integrating Codecov - We've got you covered ☂️ |
This was referenced Jul 16, 2026
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.
Summary
1.0.1 patch off the 1.0.0 release: correctness and packaging fixes found after release. No API surface changes.
Correctness
BetweennessCentralitynow throwsNegativeWeightExceptionon zero or negative weights instead of silently returning wrong scores — Brandes' path counting requires strictly positive weights, and a zero-weight edge could invert the settle order and drop shortest paths from the counts. Hop-count overloads were never affected. Closes Weighted betweenness centrality returns wrong scores when an edge weight is zero #18ToMermaidescapes#as#35;in vertex and edge labels, so labels containing#render literally and entity escapes cannot be forged. Closes Mermaid export renders labels containing '#' as different text #19Packaging / docs
<img>HTML that NuGet strips — and the package ships a dedicatedicon.png. Closes NuGet package readme does not render the logo #15_appLogoPath+ logo published as a resource; docfx build clean under--warningsAsErrors). Closes Documentation site shows the default DocFX logo #16CODECOV_TOKENalready configured).[1.0.1]CHANGELOG section.Kept honest as a patch: the 1.0 feature set and test-count wording, no 1.1.0 content.
🤖 Generated with Claude Code