Skip to content

Bump nixpkgs from cf5e765 to cd4ea8d - #2

Open
dependabot[bot] wants to merge 114 commits into
mainfrom
dependabot/nix/nixpkgs-cd4ea8d
Open

dependabot[bot] wants to merge 114 commits into
mainfrom
dependabot/nix/nixpkgs-cd4ea8d

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 23, 2026

Copy link
Copy Markdown
Contributor

Bumps nixpkgs from cf5e765 to cd4ea8d.

Commits
  • cd4ea8d [Backport release-26.05] muffet: 2.11.5 -> 2.11.6 (#575894)
  • 7816d39 [Backport release-26.05] nixos/security/pki: distrust emSign ECC root CA - G3...
  • a6401f2 nixos/security/pki: distrust various roots with compromised intermediates
  • 96a3341 [Backport release-26.05] hugo: 0.167.0 -> 0.168.0 (#576383)
  • e7a3d19 hugo: 0.167.0 -> 0.168.0
  • 5f30be5 [Backport release-26.05] ddcci-driver: Fix build for kernel 7.2 (#559915)
  • f0cc8da [Backport release-26.05] knot-resolver_6: 6.4.2 -> 6.5.0 (#571196)
  • a48483f [Backport release-26.05] technitium-dns-server: 15.6.0 -> 15.6.2 (#576292)
  • 547c3bf [Backport release-26.05] _3proxy: switch to cmake (#576097)
  • 280c636 technitium-dns-server: 15.6.0 -> 15.6.2
  • Additional commits viewable in compare view

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)

nothingmuch and others added 30 commits October 23, 2026 05:14
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: bc1cindy <bc1cindy@proton.me>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The notebook package re-executes the notebook. Execution is
deterministic and records no timing metadata, so re-rendering the
notebook amounts to copying the build output over it, and a notebook
that is already up to date comes back byte-identical.

Only editing or executing the notebook needs the scientific python stack,
so it stays out of the default shell and the site build. The notebook
devshell has the same dependencies as the derivation, plus jupyterlab,
whose checkpoint directories are ignored. Every dependency is packaged
in nixpkgs, so no uv2nix layer is required.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The saved plots came from Colab, whose environment is not recorded
anywhere. Re-executing with the notebook derivation reproduces the
same data (the denominations table is unchanged), and the result is a
fixed point: building again from the re-rendered notebook leaves it
byte-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The last chart counted n^k ordered selections, which overstates the
number of size k combinations with replacement from n denominations,
(n+k-1 choose k), by orders of magnitude: 30,840,979,456 versus
55,525,372 for k=6. With the correct count the combinations stay below
the number of distinct integers in the range for every k.

The density axis was scaled by an invisible scatter of the densities,
which only lined up with the count axis while the combinations curve
set the top of the plot. Derive its limits from the count axis instead.

The output is rendered by the notebook derivation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Split the long conditional sentences, say what Hamming weight 1 means
for the denominations in use, and state what the notebook measures
before the asymptotic claim about the size of the denomination set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The sumsets draw k values from the denominations and 0, so they hold the
sums of every combination of size at most k. Count those combinations
the same way, (n+k choose k) less the empty combination, which makes the
two curves agree at k=1.

The counted combinations are not limited by their sum, so title the
chart by the denominations they are drawn from and attach the range to
the distinct sums and integers instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The quantile levels are i/20, so the median is i == 10. Skipping i == 5
dropped the first quartile and drew dots under the median markers.
Name the number of quantile levels and derive the median's index and
the legend's percentile step from it, so they cannot disagree again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Say which property permutations of equal values preserve and why
permutations within a sub-transaction yield no new mappings, name the
fee rates whose variance makes k:1 exchanges asymmetric, and use m for multiplicity so that k only
ever means combination size.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Describe why dense instances leave sub-transaction mappings
underdetermined without suggesting a brute force enumeration: density
survives setting any one sub-transaction aside, so it holds for the
rest of the transaction too. Open the Radix CoinJoin section by
drawing that conclusion explicitly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The book is assembled from docs/ by contrib/book.py, which only took
markdown pages as chapters. Take Jupyter notebooks too. A notebook's
frontmatter is a raw cell that opens it, holding what a markdown page's
frontmatter would. It is checked, and dropped from the notebook the book
is given, as a markdown page's is. Jupyter's autosaves under
.ipynb_checkpoints/ are neither chapters nor copied.

List the radix CoinJoin notebook in the index, under a new Drafts part,
in place of the SUMMARY.md entry it had before the book was assembled
from docs/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mdbook rewrites links to `.md` chapters into links to their `.html`
pages, and into in-page anchors on the print page, but leaves links to
`.ipynb` chapters as they are, so they lead to the raw notebook, which
isn't part of the built site.

After rendering the notebooks, the preprocessor points every relative
link that resolves to a notebook chapter at the chapter's `.md` path,
so mdbook rewrites it like any other chapter link. Links to other
`.ipynb` files, and absolute ones, are left alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mdbook lists separators as the bare string "Separator" and part titles
as {"PartTitle": ...}, and the jupyter preprocessor called .get on every
item, so a book with a separator stopped the build. It now only
descends into chapters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mdbook loads additional-js on print.html as well, so the printed book
kept only the first page of each table and showed dead page buttons.

Showing every row widens the table past the page, because the later
rows hold the longest values, so print also tightens font and padding.
The global text colour is a mid grey chosen to read on the page, but
these labels sit on the bars, where grey has almost no contrast. They
go back to black, as they were before the plot style was added.
With a transparent figure the darkest plasma fills sit directly on the
page, and on the dark themes they nearly vanish into it. A grey outline
per series keeps each silhouette visible on either theme.
The plot style turns legend frames off and makes their labels grey.
Over the dust band of this plot that left the labels unreadable on
dark pages, so this legend gets back its white frame and black labels.
…decision tree

Summarizes each concrete term of the cost function: randomization,
Sybil resistance, subset sum ambiguity, disjoint flows, consolidation,
sibling avoidance and UTXO pool diversity. Each term is specified in its
own chapter. Then gives a procedure for constructing the decision tree
the cost function evaluates.

---

- [x] Define bottom-up tree and action vocabulary
- [x] Seed the partition-refinement lattice
- [x] Allocate disjoint coin selections
- [x] Expand Radix CoinJoin or net-settlement choices
- [x] Bracket and back up values, and order commitments
- [x] Align the decision tree with the cost function chapter
- [x] Define the user-agent decision loop
- [x] Summarize the concrete terms
- [ ] Link the term chapters once they are on main
- [ ] Represent UTXO pool diversity

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the notebook's own parameters the k=6 sumset still has gaps larger
than the dust threshold, including below max_denom, so describe how
coverage varies across the range instead.

Suggested-by: bc1cindy <bc1cindy@proton.me>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
powers() dropped every power below min_denom before multiples() scaled
them, so the multiples of those powers that do reach min_denom were
missing: 2 × 3^5 = 486 and 5 × 10^2 = 500. multiples() already keeps
only the values in the denomination range, so powers() now starts at
the zeroth power.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The quantiles of the k=6 sumset start with several that are entirely
gaps of size 1, but the plot omits gaps of size 1 (min_diff = 2), so
its quantiles plateau at 2 and then at 3. The text described the
sumset as if it were the plot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…chapter

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A sum above c times max_denom does not need c copies of the largest
denomination: 100000000 + 86093442 + 20000000 exceeds the cutoff at
c = 2 with one. Since no term exceeds max_denom, it needs more than c
terms, which is what leaves it fewer free terms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nothingmuch and others added 17 commits October 23, 2026 20:29
Naive reconciliation of BEC is the base: a peer that obtains a block
requests the preimages of the hashes it refers to. Peers wait for their
neighbors' Merkle sets to quiesce before authoring a block. Sparse Merkle
sets, mutual and asymmetric knowledge, range reconciliation and rateless
streams are described as future optimizations.

Links to the contacts, transaction construction and optimistic track
chapters resolve once those follow in this series.

Co-authored-by: GPT-6 Astra <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep Fungi protocol consumers at the communication capability boundary.
Describe application-level contact, device and transport identity
management: introductions, TOFU provenance, local trust, authenticated
endpoint updates, device enrollment and rotation, and revocation that
affects cached routes and already-issued capabilities.

Draft a shared contact exchange protocol for application
interoperability, long-lived authenticated contact channels, manual
session initiation, and payment negotiation across the session
lifecycle. Wire encoding and concrete identity and transport profiles
stay open.

Links to the optimistic track and transaction construction chapters
resolve once those follow in this series.

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A parent chapter for transaction construction in the abstract: content
versus state synchronization, the phases, and what each track and the
validity proofs are for. It also holds the block DAG groundwork both
tracks share: block structure, nonce commitments and equivocation
evidence, genesis, the threshold t, causal order and frontiers.

The optimistic track, recovery track and validity proofs follow as its
sub-chapters; links to them resolve once they do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Phases close by unanimous acknowledgement, with no deadlines: each phase
closes with an echo and a closing acknowledgement, the input set is
stable before outputs, and the outputs phase closes on balance. The
chapter goes through the phases one by one, including the censorship
exception for a validator's own anonymous contributions.

It also covers sharded state and synchronization scope, the
dissemination interface, optional attested validation and
acknowledgement relay, and block publication after quiescence.

Links to the recovery track and validity proofs resolve once those
follow in this series.

Co-authored-by: GPT-6 Astra <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A stalled phase of the optimistic track turns into a recovery coalition
formation proposal. Deadlines exist only on this track. Recovery track
blocks have a reduced threshold t < n and commit unambiguously to what
they are missing; a block that contradicts itself is invalid and its
author treated as unresponsive, but an equivocating one still exposes
the author's key.

Counterparty stalls are specified as option A (blame the payer only),
with option B (blame the pair) described and left open. Also covers the
dishonest majority case, privacy, cost and a worked example.

Links to the validity proofs and protocol messages resolve once those
follow in this series.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Record the best candidate found so far for proving that outputs are
covered by inputs: input slots committed with their destinations,
anonymous registration rate-limited by a tag per slot, and output proofs
against the registered leaves, in jellyfish TurboPlonk on BN254 with a
universal setup.

The figures come from the jf-register proof of concept. Evaluation
continues; the code will be rewritten for Fungi and this document
finalized when validity proofs are needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two additions to the overview: a paragraph pointing at the channel
interfaces, and one relating per-peer trust assumptions to asymmetric
distributed trust and Flexible BFT. Kept apart from the overview itself
(PR 51) so it can be reviewed on its own.

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
List the messages peers exchange: peer introduction, gossip, sets,
public gossip, negotiation, session initialization, transaction
construction, interactive payments and blocks. For each, say who sends
it, to whom, in which setting, what it carries and what its channel
must provide.

The content comes from the peer messages draft (onwloqro) and the
concurrent PSBT and coalition formation drafts. The draft's transport
survey is left out: specs state channel properties, and choosing a
transport belongs to another layer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A terse outline of a concrete cost function term. It counts the disjoint
counterfactual routes of a coin's full amount from a source to a sink,
with one max flow per source, on the transaction graph alone. Every coin
edge and flow edge except the source's and the sinks' is capped at the
amount, and the flow divided by the amount is the number of routes,
which may be split over smaller coins.

The main use is the label iota used by the consolidation term: a coin
with enough routes from its own origins is impervious to intersections.
For coins spent together, a routes matrix gives the routes from each
origin of any of them to each of them. Intersection attacks compare its
rows.

It also covers pruning the transaction graph, which gives lower bounds,
and an approximation. Sampled blocks give degree distributions that,
with randomized coin selection, model the transaction graph as a random
acyclic network. A conservative estimate uses an upper bound on the
number of candidates, since more candidates give fewer routes. Each layer of the network (topology,
amounts, links, knowledge) is estimated separately. k is then estimated
analytically from block boundary cuts, or by Monte Carlo. Local upper
bounds and lower bounds from sampled walks are kept alongside.

To be expanded into a full chapter later.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g output penalty

Terse outlines of three draft chapters, to be expanded later.

Others' inputs subset sum density is the general discussion: effective values fixed at
the coalition formation feerate, the saddle point estimate and distinct
sum enumeration, density challenges in co-spend proposals and how
perturbation optimizes them (fungi-protocol/docs#75), and the
aggregator's search over combinations of co-spend proposals, with a
greedy prover for disjoint subsets.

Own inputs or outputs subset sum ambiguity is the concrete term. It scores how well the
complete sumset of a proposed output decomposition is covered from above
by subset sums of the other users' inputs, using a bitmap or capped
counts with satisficing per output combination and a size correction. It
also scores how the sumset of the user's own inputs overlaps with that
of the other users' inputs during coalition formation, and the same for
outputs in hindsight. It is evaluated on lower bounds in the decision
tree and on complete sets after confirmation, and its liability only
falls as inputs and outputs are learned.

The sibling output penalty heavily penalizes spending outputs of the same transaction
together, without bound.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Spending several own coins together links them, and loss from
intersection attacks compounds with each one. The term grows
exponentially with the number of linked coins, scaled by 1 - pq. Here q
comes from the labels of the counterfactual routes term, and p from the
density of the input side of the subset sum ambiguity term. Both are
required for any attenuation, and the term only vanishes when both meet
their thresholds. Density alone isn't enough, since comparing the
ancestor sets of pairs of inputs narrows down an intersection
efficiently. It is unbounded, in the decision tree and after
confirmation, so it can exceed the budget: spending a whole wallet at
once would normally let all of its origin funds be traced, but under the
right conditions even that can be safe. Imagining such a transaction
right after also evaluates a wallet state, including the objective
costs of spending all of its coins.

To be expanded into a full chapter later.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tactics keeps the preliminaries: the wallet state it starts from, the
tree it produces, and re-evaluation. The bottom-up construction, with its
specific approaches to partitioning, coin selection and change
construction, becomes a chapter of its own.

The index lists it flat after Tactics, because this branch predates
sub-chapter support. It nests under Tactics where that support is merged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The draft is published from its own repository,
fungi-protocol/docs-draft, so that nothing has to be merged into main
for it to go live. Its Pages site is served from /docs-draft/, not
/docs/. Point the 404 page's base and the link check at that path.

The Pages workflow is unchanged: it deploys on a push to that
repository's main, which is this commit.

This commit belongs on draft only. It never goes to main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `cf5e765` to `cd4ea8d`.
- [Commits](NixOS/nixpkgs@cf5e765...cd4ea8d)

---
updated-dependencies:
- dependency-name: nixpkgs
  dependency-version: cd4ea8d57de16f4810bc5f14207bac45fbf19f67
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file nix Pull requests that update nix code labels Oct 23, 2026
@yuval-block
yuval-block force-pushed the main branch 10 times, most recently from 1ee57d1 to 8e41ba2 Compare October 26, 2026 05:05
@dependabot @github

dependabot Bot commented on behalf of github Nov 1, 2026

Copy link
Copy Markdown
Contributor Author

A newer version of nixpkgs exists, but since this PR has been edited by someone other than Dependabot I haven't updated it. You'll get a PR for the updated version as normal once this PR is merged.

This branch has not been deployed

No deployments
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 nix Pull requests that update nix code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants