mod occupancy

module occupancy

Occupancy leave. Not Hyperband successive-halving.

Packing identity (DECAF)

Per-center SOAP class histograms. Two structures share a book cell iff (|h-h’|_1 le) crate::catalog::PACKING_MERGE (= 0.20). A cell is not a packing: a live LJ75 book holds tens of icosahedral cells.

A packing is a single-linkage community of cells at crate::catalog::PACKING_LINK (= 0.35), and a structure belongs to the community it chains to. No radius around one reference can do this job. Measured on 69 quenched LJ75 icosahedral isomers within (8varepsilon) of the ico floor (examples/decaf_packing_separator): the shelf reaches L1 (0.56) from its own reference while ico-Marks is (0.4267), so the shelf spread straddles the gap. Under single linkage the shelf chains into one community and Marks stands alone, and the same radius keeps 153 of 154 LJ38 shelf isomers with ico and Oh on its own.

Inverted Gelman–Rubin

On the family-label series of assigned walks, (hat R <) crate::catalog::MIXED_RHAT (= 1.01) (Vehtari et al. 2021) with (n_{mathrm{assigned}} ge 2) is collapse: extras Leave. Distinct packing labels are unmixed and do not force Leave.

Ranking

Champion of a family: lowest energy. Keep (lfloor n_{mathrm{extra}} / eta rfloor) extras, (eta =) crate::catalog::REDUCTION_FACTOR (= 3). Surplus Leave. Rank as soon as DECAF assigns a family. This is a keep fraction, not a Li–Jamieson resource schedule.

Superbasin

Chatterjee–Voter AS-KMC: an intra-well hop with bias height (v_i ge N_f w_0) is frequent. Refuse the accept with probability (1/2) ((alpha = 2)). That is the well exit. A Feynman–Kac epoch later resamples with the same ranking; it is not the exit.

Leave start

Another packing community already on file and packing not saturated: take a catalog representative of the least-occupied community. Cells of one packing are a superbasin; they are not OtherFamily, and a draw that only clears the cell grain hands the extra an isomer of the packing it is leaving. Champion leftover walks those isomers.

Extra ArchiveHole is a rung of the Leave ladder (crate::known_basin::leave_packing_rung): a covering direction of the DECAF feature, pointed away from the packings on file, pulled back through (J_mu). Its size is one rung, not a grain. Wales and Doye put the LJ75 ico-Marks barriers at 8.69 and 7.48 (varepsilon), so a quench from a Cartesian 0.35 cap is a projector onto the packing it started in, whatever direction it took. A rung whose quench lands back in the same packing is not refused into another hole of the same size: the hop loop walks the rest of the ladder (crate::known_basin::leave_packing_ladder) with the invert armed and reports a refusal only when the ladder is spent. Occupancy extras do not draw a random cluster.

Modes

Serial recommended: independent seeds, each tries to find the published GM. Hit rate (58/72 Oh) is that mode. Occupancy: the ensemble divides the PES. Each DECAF family has one champion (lowest energy) that walks isomers. Extras of that family Leave. Success is find-and-certify the putative GM, not every replica landing on it.

Stop

A mixing certificate names a putative: uniquely deepest, occupant mixed. A mixed competitor is required only when a competitor is on file. A lone mixed floor is Gelman–Rubin on the sampled mode. MixingCertified on two packing families still needs leftover dwell. A mixed ico floor plus a mixed shallower competitor is not MixingCertified on that pair alone. Unseen funnels are leftover-dwell and EI, not a second R-hat. Packing Good–Turing names completeness of the seen codebook (packing_saturated). Leftover-SOAP arrivals stay the hole generator; leftover Good–Turing is not the stop. Hop re-observes of the same well are not draws. A saturated packing census of shallow families is not retire: extras keep Leaving so an unseen funnel can still appear. Replicas retire when a mixing putative is certified and that packing census is saturated and leftover SOAP has dwelt under the unseen-mass ceiling (or the packing book holds one family) and FunnelModel EI on the seen packings is exhausted and the rematched family floor is met. After the book exists, single linkage at crate::catalog::PACKING_LINK folds cells of one packing into one community. Leave continues only while that compacted book still has holes: a community with no well arrivals, or Chao1 incomplete on the merged well counts. A one-community book is answered by the cells it folds, since Good–Turing on a single type has (n_1=0) whatever the sample is and certifies nothing. Leftover FES modes of one packing are not a packing hole. The floor is the Fiedler split of the hop graph after DECAF labels the sides, the packing community count of the book, or the book-map FES basin count. A Franzblau primitive-ring floor is reported beside it and does not retire. CATALOG_MIN_FAMILIES is an override. Occupant (hat R) uses crate::catalog::CERTIFY_MIN_SAMPLES traces; two-point quenches on two random-start families are not a certificate. A published energy (Cambridge or otherwise) is a score, not a stop. Leftover-SOAP saturation on one family is collapse, not completeness.

Variables

const CHAMPION_RANK: u32

Champion of the occupied packing has no TIS interface.

const COMPACT_RMAX_OVER_CBRT: f64

Hop contain sphere in units of (sigma N^{1/3}). Published compact minima are (0.46)–(0.63); a straight chain is (sim 2.5).

const DEFAULT_MIN_OCCUPIED_FAMILIES: usize

Default floor on rematched occupied families. 1 is Good–Turing alone: stop when no new packings appear.

const ESTY_Z95: f64

Esty (1983), Ann. Statist. 11:905-912, one-sided 95% normal quantile (Phi^{-1}(0.95)).

const INTERFACE_HORIZON: f64

Fixed leftover-SOAP horizon for the TIS ladder. Unit leftover descriptors sit in a ball of diameter 2. Live max(lambda) is not a horizon: it collapses every interface onto the well.

const LEAVE_CROSSING_HOPS: usize

Measured LJ75 Marks crossings sit at hops 4160, 6226, and 4411 of about 11000. A 4000-hop floor expires before every named hit.

const LEAVE_REFUSAL_DWELL: usize

Consecutive refused Leaves after which an extra goes back to hopping.

A Leave that returns the replica to the packing it started in has installed nothing, and the checkpoint it spent is a checkpoint plain hopping did not get. On LJ75 that is every Leave: the book shows one community for the whole run, so extras keep drawing holes, and no walk out of the sealed icosahedral minimum leaves it at all – twenty-four raw quenches dropped along a transformed trajectory reaching four times the DECAF distance to Marks every one returned to the floor.

Three rather than one, because a Leave may legitimately need a second arm at a wider rung, and because the packing test is a threshold on a histogram distance and one reading either side of it is not evidence.

const LEFTOVER_SAT_DWELL: usize

Consecutive leftover-sat samples required before leftover dwell. Live leftover_dwell is leftover_dwell_from_census: a one-shot leftover-SOAP nick does not flip the dwell bit.

const OCCUPANCY_EI_MIN_OBS: usize

Bank and CSA turn FunnelModel EI on at three observed morphologies.

const OCCUPANCY_SEAM_CONDUCTANCE: f64

Bridge referee seam, kept as a named report threshold. It is not a family-floor witness: without (lambda_2) a positive conductance is one community (Hop.no_spectrum_is_one_community).

const PITMAN_YOR_DISCOUNT: f64

Default Pitman–Yor discount. (d=0) is the Dirichlet process.

const PITMAN_YOR_THETA: f64

Default Pitman–Yor concentration. Not a retire knob.

Functions

fn assign_interfaces(extras: &[(u32, f64)], horizon: f64) -> Vec<InterfaceSeat>

Assign extras increasing leftover-SOAP interfaces. Champion is omitted. Seats are ordered by leftover-SOAP (lambda), not replica id.

fn hops_per_core_hour(hops: u64, wall_secs: f64, cores: u32) -> Option<f64>

Hop throughput on one worker. Serial LJ75 was about 75000; occupancy talking about 200.

fn in_interface_ensemble(max_lambda: f64, threshold: f64) -> bool

Whether this sample belongs in interface ensemble (i).

fn interface_ladder(n_extras: usize, horizon: f64) -> Vec<f64>

TIS ladder: (n) interfaces equally spaced out to horizon.

fn is_occupancy_leave_action(action: &str) -> bool

Actions that must land off the occupied leftover-SOAP well.

fn leave_crossing_slices(checkpoint_interval: usize) -> usize

Quiet checkpoint slices a replica must walk before the first Leave.

fn leave_defers(quiet: usize, patience: usize, crossing_slices: usize) -> bool

Defer Leave while the replica is inside its recovered quiet stretch or the measured crossing floor, whichever is longer.

fn leave_shot_accepted(family_changed: bool, trial_lambda: f64, threshold: f64) -> bool

Leave accepts a DECAF family change or an interface crossing.

fn leftover_birth_probability(n: u64, k: u64) -> f64

pitman_yor_p_new at the default ((theta, d)).

fn leftover_dwell_from_census(saturated: bool, esty_stable: bool, sat_streak: u32) -> bool

Live leftover dwell from a leftover-SOAP census nick plus the consecutive saturated-sample streak.

Leftover SOAP saturates after a handful of leftover-well arrivals. A one-shot hatch-stable nick would re-open Leave before the measured Marks crossings. The streak is independent leftover samples, not repeated diagnostic reports.

fn leftover_esty_stable(n: u64, n1: u64, n2: u64, ceiling: f64) -> bool

Leftover dwell: hatch-stable and the Esty upper bound sits under the ceiling. (n_1=0) has variance 0, so the bound is 0.

fn leftover_esty_upper(n: u64, n1: u64, n2: u64) -> Option<f64>

One-sided Esty upper bound (hat p_0 + z_{0.95}sqrt{mathrm{Var}}).

fn leftover_esty_var(n: u64, n1: u64, n2: u64) -> Option<f64>

Esty variance of the Good–Turing unseen-mass estimator: (n_1/n^2 + 2n_2/n^2 - n_1^2/n^3).

fn leftover_hatch_stable(n: u64, n1: u64, ceiling: f64) -> bool

Hatch-stable leftover dwell from the Good–Turing increment.

Good, I. J. (1953), Biometrika 40:237-264. A new singleton sends (nmapsto n+1), (n_1mapsto n_1+1) and (hat p_0’=(n_1+1)/(n+1)). Under (n_1le n) the hatch is the larger estimator, so dwell is exactly (hat p_0’ <) ceiling (Hop.hatch_stable_iff_next). No consecutive-record count.

fn leftover_lambda(current: &[f64], centroid: &[f64]) -> f64

Leftover-SOAP order parameter: distance from the occupied-well centroid.

fn leftover_sat_dwell(consecutive: &[bool]) -> bool

Leftover dwell from consecutive leftover-sat bits, newest last.

The last LEFTOVER_SAT_DWELL samples must all be saturated. A one-shot nick, or a nick then a hatch, is not a dwell.

fn lens_ring_displacement(coordinates: &[f64], dr: &mut [f64])

Scale a Cartesian increment so leave-ring atoms move more.

Champion leftover SOAP does not call this. Occupancy archive holes and packing kicks do. A uniform ring support is a global scale; the hop’s RMS cap removes it.

fn occupancy_book_holes(communities: usize, community_wells: &[u64], fes_minima: usize, cells: super::packing::GoodTuringSample) -> bool

Whether the sparsified book still has holes extras should Leave into.

A packing community with no well arrivals is a hole. FES basins reopen a hole only while a second community exists: leftover wells of one packing stay one Chao1 sample even when the leftover cloud has more than one density mode.

One community is the case that lied. A single merged bin has (n_1=0) by construction, so Chao1 called it complete while the raw DECAF cells underneath still carried half their mass in singletons. Good–Turing on one type carries no information about unseen types, so a one-community book falls back to the completeness of the finer codebook it was folded from: while new cells keep arriving, packings may still be arriving too.

fn occupancy_compact(coordinates: &[f64]) -> Option<OccupancyCompact>

Compactness census at the Franzblau first-neighbour cutoff.

fn occupancy_complete(mixing_certified: bool, catalog_saturated: bool, n_occupied_families: usize) -> Option<OccupancyCertificate>

Generic occupancy completeness. n_occupied_families is the DECAF packing count, not leftover-SOAP basin count. Leftover dwell is unknown here, so two-family MixingCertified is not emitted.

fn occupancy_complete_at(mixing_certified: bool, catalog_saturated: bool, leftover_dwell: bool, n_occupied_families: usize, min_occupied_families: usize) -> Option<OccupancyCertificate>

Completeness at an explicit family floor. MixingCertified needs leftover dwell unless the book has one packing family (Hop.leftoverOk). A mixed ico floor plus a mixed shallower competitor is not MixingCertified on that pair alone.

fn occupancy_ei_exhausted(max_ei: f64, n_obs: usize, noise: f64) -> bool

Jones, Schonlau & Welch (1998), J. Global Optim. 13:455-492: (mathrm{EI}tomax(f_{min}-mu,0)) as (sigmato 0), so (sigma=0) and (muge f_{min}) give (mathrm{EI}=0) at observed sites. Unseen families are leftover-dwell, not a far-field GP probe. Exhausted when the FunnelModel has the bank observation floor and the largest EI at observed packings is at most the model’s noise.

fn occupancy_family_floor(conductance: Option<f64>, algebraic_connectivity: Option<f64>, n_left: usize, n_right: usize, distinct_packing_sides: bool) -> usize

Family floor from the landscape Fiedler split after DECAF labels the sides.

The hop-graph Fiedler vector names two leftover-SOAP communities. Two when both live sides are nonempty, DECAF labels them as distinct packings, and the cut is a bottleneck: conductance is zero (disconnected) or strictly below algebraic connectivity. On the normalised Laplacian (lambda_2in[0,2]), (c<lambda_2) implies the Cheeger bound (c^2<2lambda_2) (Hop.code_cut_is_cheeger). A missing (lambda_2) is not a substitute cut. A superbasin, a one-sided split, or a well-mixed graph is one community. CATALOG_MIN_FAMILIES remains an override.

fn occupancy_fes(xy: &[[f64; 2]], weights: Option<&[f64]>) -> Result<OccupancyFes, OccupancyFesError>

Map free energy from landfold points, optional per-point weights.

Density is a Gaussian KDE. (F_i/kT = -ln(rho_i/rho_{max})). Minima of (F) are continuous maxima of (rho), located by mean shift from every observed point and merged at a scale-relative tolerance. Bandwidth is (max(mathrm{medianNN}, mathrm{diameter}/3)), broad enough that a connected interpolant chain remains a single basin.

Returns an error for non-finite coordinates, malformed weights, or a non-empty sample with no positive density mass.

fn occupancy_fes_delta(counts: &[u64]) -> Option<f64>

Discrete packing (Delta F/kT = ln(n_{max}/n_2)) from leftover-well counts. None when fewer than two occupied families have wells.

fn occupancy_fes_from_histograms(histograms: &[Vec<f64>]) -> Result<OccupancyFes, OccupancyFesError>

Landfold map of DECAF histograms, then occupancy_fes.

fn occupancy_is_cluster(coordinates: &[f64]) -> bool

Whether the coordinates are one compact cluster, not a chain or fragments.

fn occupancy_landfold_floor(histograms: &[Vec<f64>], family: &[usize]) -> usize

Torgerson 2-D map of DECAF histograms under L1, then occupancy_map_floor.

fn occupancy_landfold_split(histograms: &[Vec<f64>], family: &[usize]) -> (usize, usize, usize)

Landfold floor and 2-means side counts of DECAF histograms.

fn occupancy_leave_adopt(action: &str, walked_off: bool) -> Option<OccupancyLeaveAdopt>

Occupancy Leave that walked away from the known packing mean (mu_k) is taken. A catalog_leave that sits at (mu_k) is refused. DECAF isomer grain is not this bit: ico isomers already split at super::packing::PACKING_MERGE and a raw polish of those walks back onto the occupied packing. Reseeds take the new start even when the invert span did not rise.

fn occupancy_leave_by_birth(other_family_in_catalog: bool, packing_saturated: bool, packing_communities: usize, ei_exhausted: bool, p_new: f64, draw: f64, leftover_dwell: bool) -> OccupancyLeaveTarget

occupancy_leave_by_ei with a leftover birth draw.

Birth reopens ArchiveHole only after leftover SOAP has hatched. While leftover is unsaturated the extra Walks: a Pitman–Yor draw must not interrupt the long chain that finds Marks.

fn occupancy_leave_by_ei(other_family_in_catalog: bool, packing_saturated: bool, packing_communities: usize, ei_exhausted: bool, leftover_dwell: bool) -> OccupancyLeaveTarget

occupancy_leave_target with the FunnelModel EI bit.

A one-community book is Walk only once EI on the seen packings is exhausted: the hole then has no remaining improvement to chase. While leftover SOAP is still hatching, extras Walk: Marks is a long uninterrupted walk, not an ArchiveHole or OtherFamily draw. Two communities with exhausted EI Walk: amorphous packings above the floor are not worth occupying.

fn occupancy_leave_new_class(origin: &[f64], trial: &[f64]) -> bool

Leave has found a new class: a different DECAF family, or a different Franzblau ring histogram on the same SOAP merge radius.

The cell grain. Isomers of one packing clear it, so it names a book cell and is not the Leave accept. occupancy_leave_new_packing is.

fn occupancy_leave_new_packing(origin: &[f64], trial: &[f64]) -> bool

Leave has installed a packing: the quenched trial chains to no packing on file, the origin included.

Single linkage at crate::catalog::PACKING_LINK over a throwaway book of the origin, the published references and the trial. Measured on 69 quenched LJ75 icosahedral isomers, occupancy_leave_new_class adopts 6 of them on a ring-count change alone and adopts every one whose cell L1 clears the merge grain, which is how a run counts 47 distinct energies and no Marks. Ring counts stay out of the accept: the shelf reaches ring-share L1 0.0789 from its own reference while ico-Marks is 0.0824, and a 0.0035 margin does not decide a packing.

fn occupancy_leave_target(other_family_in_catalog: bool, packing_saturated: bool, packing_communities: usize) -> OccupancyLeaveTarget

Leave destination. OtherFamily is a draw from another packing community on the sparsified book (communities >= 2). Leftover wells of one packing (communities < 2) stay ArchiveHole even when DECAF split them. After packing saturation OtherFamily only rematches communities on file. Packing saturation does not disable that draw: ArchiveHole is only for a one-community book.

fn occupancy_map_floor(xy: &[[f64; 2]], family: &[usize]) -> usize

Secondary family floor from a 2-D folding of packing histograms.

Torgerson MDS of DECAF L1, then a 2-means split. Two when the sides rematch to distinct packings and the centroids do not overlap. Live rematch is the wrong input: fold the packing book so a family extras have Left still sits on the map. A 2-means split is a bipartition, not a leftover-cloud count; FES maxima stay the landfold figure path. occupancy_sparsify_book merges leftover wells on the same side and names holes. The hop-graph Fiedler split stays the live floor; this count is the book floor.

fn occupancy_map_fold(histograms: &[Vec<f64>], fold: OccupancyFold) -> Option<(Vec<[f64; 2]>, [f64; 2])>

Torgerson map and the two leading eigenvalues of the Gram matrix.

fn occupancy_map_from_histograms(histograms: &[Vec<f64>]) -> Option<Vec<[f64; 2]>>

Torgerson (1952) classical MDS of DECAF L1 after a Ceriotti switch.

Raw L1 stretches a leftover-family chain so 2-means splits the ends. The switch (F(d)=1-1/(1+(d/sigma)^2)) with (sigma) the median pairwise L1 keeps intra-funnel distances short.

fn occupancy_map_split(xy: &[[f64; 2]], family: &[usize]) -> (usize, usize, usize)

Map floor and the 2-means side counts.

fn occupancy_min_families() -> usize

Occupied-family floor. Spectral split unless CATALOG_MIN_FAMILIES is set.

fn occupancy_retire(certificate: OccupancyCertificate, catalog_saturated: bool, leftover_dwell: bool, ei_exhausted: bool, n_occupied_families: usize) -> bool

Replica retire. Mixing certified, packing Good–Turing, leftover dwell (or one packing family on the book), FunnelModel EI exhausted on seen packings, and the rematched family floor. CatalogSaturated names census completeness and does not retire: extras keep Leaving. catalog_saturated is packing-family saturation, not leftover-SOAP. leftover_dwell is consecutive saturated independent leftover samples, not repeated diagnostic reports or a one-shot leftover nick. Required whenever the packing book holds more than one family (Hop.leftover_unsaturated_does_not_retire). A single book family is Boender–Rinnooy Kan on one cell (Hop.one_book_family_waives_leftover): leftover-SOAP hatches are intra-well and do not block. Live rematch of last candidates after extras Leave is not that count. A one-community Fiedler floor with many DECAF packings is not that case. ei_exhausted is Jones remaining improvement on observed FunnelModel morphologies, not a far-field GP probe. n_occupied_families is the packing-book occupied-family count (visits > 0), not live rematch of last candidates and not a leftover-SOAP basin count. One book family is Boender–Rinnooy Kan on one cell. Many book families with extras already Left is not.

fn occupancy_retire_at(certificate: OccupancyCertificate, catalog_saturated: bool, leftover_dwell: bool, ei_exhausted: bool, n_occupied_families: usize, min_occupied_families: usize) -> bool

Retire at an explicit family floor. Good–Turing alone is floor 1. Leftover dwell is required unless the book has one packing family (Hop.leftoverOk: leftover_dwell || n_occupied_families < 2).

fn occupancy_ring_census(coordinates: &[f64]) -> Option<crate::structure::RingCensus>

Franzblau census of one structure, or None below three atoms.

fn occupancy_ring_class_changed(origin: &[f64], trial: &[f64]) -> bool

Franzblau (1991), Phys. Rev. B 44:4925: a new ring class is a packing signal SOAP (L^1) merge can miss. Icosahedra are 5-ring rich; octahedra and Marks are not.

fn occupancy_ring_floor(profiles: &[(usize, usize, usize)]) -> usize

Secondary family floor from Franzblau primitive-ring profiles.

One (triangles, squares, pentagons) per occupied DECAF family. Two when two occupied families differ in those counts; one when every occupied family shares a profile, so leftover ico wells of one packing stay one community. This is not the hop-graph Fiedler split and it does not retire.

fn occupancy_ring_profile(coordinates: &[f64]) -> Option<(usize, usize, usize)>

Franzblau (tri, sq, pent) at crate::structure::RING_CUTOFF_SCALE times the structure’s median nearest-neighbour distance.

fn occupancy_ring_split(profiles: &[(usize, usize, usize)]) -> (usize, usize, usize)

Ring floor, distinct-profile count, and profile count.

fn occupancy_sparsify_book(histograms: &[Vec<f64>], family: &[usize], wells: &[u64]) -> OccupancyBookMap

Compact the book into packing communities.

Single linkage at super::packing::PACKING_LINK over the DECAF cells, so isomers of one packing chain together and a packing that chains to nothing on file stands alone. The landfold Torgerson plane stays the figure and the reported floor; it is no longer what counts packings, since a forced 2-means bipartition of an isomer cloud has only ever one answer. Leave continues while OccupancyBookMap::holes.

fn occupancy_sparsify_packing(book: &super::packing::PackingBook) -> OccupancyBookMap

Landfold-sparsify the occupied packing book.

fn packing_role(same_family: bool, energy: f64, best_of_family: Option<f64>) -> PackingRole

Per-family energy class, not the catalog-wide incumbent. Equal energy to the family best is Champion here; the coordinator keeps one replica via family_champion_replicas so extras Leave.

fn pitman_yor_p_new(n: u64, k: u64, theta: f64, discount: f64) -> f64

Lijoi–Mena–Prunster / Pitman–Yor discovery probability ((theta + d K)/(n + theta)).

Leave birth on leftover arrivals. Packing Good–Turing stays the census. Not an estimator of (F).

fn promote_one_sided(seats: &mut [InterfaceSeat]) -> bool

Promote an extra that already cleared the next threshold, without waiting for the neighbor to cross this one.

fn published_energy_score(best: f64, published: Option<f64>) -> bool

Published energy match. A score for known hurdles, never a stop.

fn retis_exchange_adjacent(seats: &mut [InterfaceSeat]) -> bool

Swap adjacent interface seats when both extras have crossed and the higher (lambda) sits on the lower interface. The ordering guard is what makes the move settle: two samples that each satisfy the other’s interface would otherwise trade seats on every request.

fn retis_should_swap(lambda_a: f64, thresh_a: f64, lambda_b: f64, thresh_b: f64) -> bool

RETIS swap: each sample already satisfies the other’s interface.

fn ring_leave_weight(origin: (usize, usize, usize), atom: [u32; 3]) -> f64

Atom weight when leaving origin.

Five-rings, when the occupied packing has them, are the Franzblau fivefold signature: extras move those atoms. Otherwise extras move three-rings. Uniform incidence is a global scale and does not steer.

fn ring_novelty(origin: (usize, usize, usize), trial: (usize, usize, usize)) -> usize

L1 of two Franzblau profiles. Leave prefers a larger value.

fn seat_extras(previous: &[InterfaceSeat], extras: &[(u32, f64)], horizon: f64) -> Vec<InterfaceSeat>

Seat extras on the TIS ladder, keeping the rank each replica already holds in previous. An interface is an ensemble a replica owns until an exchange move hands it on: ranking every request by live (lambda) leaves retis_exchange_adjacent and promote_one_sided with an ordering they can never repair, and discards their result on the next request. Unseated extras take the free ranks in (lambda) order, so an empty previous is the fresh ladder.

Enums

enum OccupancyCertificate

Why occupancy may retire a replica.

MixingCertified

Occupant chains mixed onto a uniquely deepest attractor. A competitor, when one exists, must be mixed and less occupied.

CatalogSaturated

Packing Good–Turing unseen mass is small, and the rematched family count meets the measured Fiedler-and-DECAF floor.

Implementations

impl OccupancyCertificate

Functions

fn as_str(self) -> &'static str

Stable token for worker logs (mixing or saturated).

enum OccupancyFesError

Invalid input to the continuous occupancy free-energy estimator.

NonFinitePoint

A landfold coordinate is NaN or infinite.

index: usize

Zero-based point index.

WeightCountMismatch

A weight vector must have one entry per landfold point.

points: usize

Number of landfold points.

weights: usize

Number of supplied weights.

InvalidWeight

Weights are finite and non-negative.

index: usize

Zero-based weight index.

NoPositiveWeight

A non-empty sample needs positive density mass.

MapUnavailable

The histograms do not define a finite Torgerson map.

enum OccupancyFold

How DECAF L1 becomes the Torgerson metric.

OccupancyFold::Switch is the production floor. Far L1 pairs share one value (Lean sat_far_cannot_tell), so a packing fork collapses to a line. OccupancyFold::Asinh keeps far L1 ordered.

Switch

(F(d)=1-1/(1+(d/sigma)^2)). Intra-funnel short; far pairs saturate.

Asinh

(F(d)=mathrm{asinh}(d/sigma)/(2,mathrm{asinh},1)). Unbounded.

Identity

Raw L1. No transfer.

enum OccupancyLeaveAdopt

How an occupancy Leave updates the live chain.

Quench

Take the quenched trial as the live minimum.

HoleStep

The quench sat in the occupied packing. Keep the unquenched hole step.

Refuse

Same-packing hole with the ladder spent. Do not adopt; the extra stays put and the hop loop draws another Leave.

enum OccupancyLeaveTarget

Where an occupancy extra goes when it Leaves.

OtherFamily is a draw from another packing community on the sparsified book. That is how Leave divides the surface once there is something to divide, and the draw has to clear the packing grain: a candidate that only clears the cell grain is an isomer of the packing the extra is leaving. ArchiveHole is a rung of the packing ladder in the DECAF (nu=3) feature (the same local_nu3_z rows as packing identity), not SOAP leftover (p_i-mu) and not a named morphology.

Walk is what a one-packing book asks for. An extra Leaves so the ensemble stops spending two replicas on one funnel, and that trade is only worth making when the Leave has somewhere to go. Measured on the sealed LJ75 icosahedral minimum: a packing-ladder rung, sized by bisection to spend exactly its barrier, quenches back to the floor it started on at every rung from 1.32 to 42.3 (varepsilon), which is five times the ico-Marks barrier in one displacement. So with one community on the book an ArchiveHole is a move with no measured yield, and the replica taking it is not exploring, it is idling. Meanwhile the walk does cross: 3 of 64 independent LJ75 walks at 400k evaluations reached the Marks minimum, each at hop 4160, 6226 and 4411 of about 11000. Coordination earns its keep by keeping walks off each other’s basins through the shared bias and the catalog, not by standing 47 of 48 replicas still against a single funnel.

OtherFamily

Coordinator has a representative of a different packing community.

ArchiveHole

First rung of the packing ladder in the DECAF (nu=3) feature.

Walk

Nothing to divide yet: keep walking, and let the shared bias hold this replica off the basins the others are on.

enum PackingRole

Role of one walk against DECAF packing families.

FamilyChampion

Lowest energy occupant of this family. Isomer walk.

FamilyExtra

Same family, not the champion. Leave or keep-fraction extra.

NovelFamily

No catalog or live walk shares this packing.

Structs and Unions

struct InterfaceSeat

One leftover-SOAP interface seat owned by the catalog RPC.

replica: u32

Replica that holds this seat.

rank: u32

Interface rank. CHAMPION_RANK is the A-ensemble isomer walk.

threshold: f64

Threshold (lambda_i) this extra must reach.

lambda: f64

Highest leftover-SOAP (lambda) this replica has posted.

Implementations

impl InterfaceSeat

Functions

fn champion(replica: u32) -> Self

Occupied-packing champion: no interface, isomer walk only.

fn extra(replica: u32, rank: u32, threshold: f64) -> Self

Extra on interface rank with threshold (lambda_i).

struct LeaveFrame

One frame on the occupancy Leave path.

coordinates: Vec<f64>

Cartesian coordinates at this frame.

leftover: Vec<f64>

Leftover-SOAP descriptor at this frame.

lambda: f64

Leftover-SOAP (lambda) from the occupied centroid.

struct LeavePath

Path the extra shoots from. OPS keeps the furthest frame; a failed quench does not throw away the climb toward the interface.

Implementations

impl LeavePath

Functions

fn clear(&mut self)

Drop the climbing window. Once the Leave is issued the frames that led to it describe a funnel the chain has left, and a later shoot taken from them re-enters it.

fn max_lambda(&self) -> f64

Highest leftover-SOAP (lambda) on the path.

fn push(&mut self, coordinates: Vec<f64>, leftover: Vec<f64>, lambda: f64)

Append one checkpoint. The path is a short climbing window.

fn shoot_coordinates(&self) -> Option<&[f64]>

Coordinates to shoot from.

fn shoot_index(&self) -> Option<usize>

Interior frame with the highest (lambda), else the last frame.

fn shoot_leftover(&self) -> Option<&[f64]>

Leftover-SOAP descriptor at the shoot frame.

struct OccupancyBookMap

Landfold-sparsified occupancy book.

Leftover DECAF wells that land on the same side of a floor-1 split are one packing. Floor-2 keeps two communities. Self::holes is whether Leave should continue: a second community on the map with no well arrivals, more FES basins than occupied well-sides, or Chao1 incomplete on the merged well counts.

points: Vec<OccupancyLandfoldPoint>

Occupied book cells in family-index order.

floor: usize

Landfold floor (1 or 2).

left: usize

2-means left count.

right: usize

2-means right count.

communities: usize

Sparsified community count.

community_wells: Vec<u64>

Merged leftover-well counts, one entry per community.

occupied_communities: usize

Communities that have had a well arrival.

Self::communities counts cells that have not chained, and with a handful of cells that is almost always more than one: two icosahedral cells count as two packings until an intermediate cell arrives to join them. Single linkage separates a cloud, not a pair, which is what Hop.component_avoids says. A packing an extra can be sent to is one a walk has actually arrived in.

cells: super::packing::GoodTuringSample

Good–Turing sample of the raw DECAF cells the communities fold. A one-community book is certified against this, not against its own single merged bin.

fes_minima: usize

Book-map FES basin count (occupancy_fes on the Torgerson plane).

fes_delta: Option<f64>

(Delta F/kT) between the two deepest book-map FES basins.

holes: bool

Continue Leave while this is set.

Implementations

impl OccupancyBookMap

Functions

fn entropy(&self) -> f64

Shannon entropy (H=-sum p_kln p_k) of the arrivals across packing communities, in nats.

Hole counting says how many communities have never been reached. It says nothing about how the arrivals are spread over the ones that have, and that spread is what a double funnel is: a run can hold every community on the book and still put all but a handful of its arrivals in one of them. H measures that directly, and Self::entropy_ceiling is what it would be if the arrivals were even.

fn entropy_ceiling(&self) -> f64

(ln F) over occupied communities: the entropy an even spread would have, and the ceiling Self::entropy is measured against.

fn most_surprising(&self) -> Option<usize>

The community an extra should Leave for: the most surprising one.

Ties go to the earlier community, which is the one discovered first, so a run does not oscillate between two equally rare packings while neither gets sampled.

fn sample(&self) -> super::packing::GoodTuringSample

Good–Turing sample of the sparsified well counts.

fn saturated(&self) -> bool

Chao1 completeness of the sparsified communities.

fn surprisal(&self) -> Vec<f64>

Surprisal (-ln p_k) of each community, in nats, in Self::community_wells order.

This is what ranks a Leave target. A community holding three wells and one holding three thousand are equally present on the book and are not equally worth leaving for; the surprisal separates them, and a community with no arrivals is infinitely surprising, which is the hole the count already finds.

struct OccupancyCompact

Contact-graph compactness of one quenched structure.

A cluster is one connected first-neighbour component with a cycle (Franzblau ring, or at least N contacts). A path or a forest is not a cluster: (ele N-c) and no primitive ring. A straight chain saturates (R_g^2=a^2(N^2-1)/12). GMIN’s spherical container is the same refusal of evaporated or unravelled atoms.

n: usize

Atom count.

components: usize

First-neighbour connected components.

edges: usize

Undirected contact edges.

rings: usize

Franzblau 3-, 4- and 5-rings summed.

rg2: f64

Squared radius of gyration.

path_rg2: f64

Straight-path (R_g^2) at the structure’s median NN.

rmax_over_cbrt: f64

Largest atom–COM distance over (N^{1/3}). Published LJ minima sit in (0.46)–(0.63); the hop container is (0.9).

Implementations

impl OccupancyCompact

Functions

fn is_cluster(&self) -> bool

Connected contact graph with a cycle, inside the hop container. Not a chain, not fragments, not an unravelled ring.

fn is_pathlike(&self) -> bool

One component, a forest, no primitive ring: a path or a tree.

struct OccupancyFes

Occupancy free energy. (F/kT = -ln(rho/rho_{max})).

Discrete packing FES uses leftover-well counts per DECAF family. The landfold-map FES uses a Gaussian KDE on the Torgerson plane. Equal occupancy is (Delta F = 0), not a DECAF L1 split. This does not retire.

minima: usize

Local minima of (F/kT).

delta: Option<f64>

(Delta F/kT) between the two deepest minima.

struct OccupancyLandfoldPoint

One occupied book cell on the landfold plane.

family: usize

Packing-book family index.

community: usize

Sparsified landfold community (0 or 1).

xy: [f64; 2]

Torgerson coordinates after the Ceriotti switch.

wells: u64

Leftover-well arrivals credited to this family.