Fragmenta, Blast Fragmentation Prediction Where the Learned Arms Explain Nothing on an Unseen Site
Twelve arms predict the mean fragment size of a bench blast over sixteen cases and are scored under three ways of splitting the same table: six classical closed forms (Kuznetsov, Kuz-Ram, Swebrec, crush-zone, two published regressions) and six learned (a back-propagation network, support-vector regression, random forest, gradient boosting, a stack, a refit of the published regression). The result the product exists to report is negative: under leave-one-site-out not one of the six learned arms explains any variance, the best scoring -0.034 against a null model at -0.216, while the only two arms that stay positive on a site they have never seen are the two with fixed coefficients, the published regression at 0.802 and Kuznetsov at 0.311. The engine is the separately published blastfrag package. Lifecycle: building.
Business Context
A blast engineer choosing a predictor for a new site wants to know which arm to trust before the first shot. Fragmenta answers with the honest protocol: on a site the model has never seen, the fitted arms are not skill, and the two fixed-coefficient formulas are the only ones that stay positive; the classical arm improves under leave-one-site-out, from negative on a random split, because it has nothing to overfit. The kill criterion, requiring both a positive score and a 0.10 margin, was rewritten after an earlier version had declared success on two failures, and it fired. Reproducibility is stated precisely: byte-identical within an environment, better than 3e-08 relative across operating systems, because two builds of the same pinned numpy reduce a dot product in a different order; both halves are gated in CI.
Strategic Value
Fragmenta is the Faena member that reports a negative result as its headline and keeps it on the front page. The 0.03.000 release audited the frontend against the quantified ADR floors after its owner flagged the left rail: the rail had been 1,717 px tall in an 800 px viewport, the case control sixteen chips under six headings, the instrument 0.22 to 0.32 of the screen; every route now composes the shared shell, the case control is a select with groups, the rail ends inside the viewport, and 204 browser checks run over the deployed site. Its hub lifecycle is building: deployed is a fact, at-bar is its owner's call, and the card says so.
The Challenge
Fragmentation prediction has a published ladder from Kuznetsov in 1973 to stacking ensembles, and most learned papers report a random split of blasts from the same site, where a model that memorises the site looks skilful. The question a mine planner needs answered is different: what does a method know about a site it has never seen? Answering it requires the same table scored three ways, a kill criterion written down before the run, and arms that refuse rather than guess when an input is missing. The source articles that hold the measured blasts are copyrighted and cannot be redistributed, so the corpus has to be reused as cited experimental facts with the PDFs kept out of the repository by a guard.
Our Approach
Sixteen cases across six categories, from a corpus of 97 published bench blasts (doi:10.1002/nag.957), a 14-blast published hold-out (doi:10.1007/s10706-012-9496-3) and 5 open-access field blasts (doi:10.3390/app15031254, CC BY). Twelve arms appear on every case with either a number or a refusal that names the missing input: Kuznetsov, Kuz-Ram, Swebrec, the crush-zone model and two published regressions on the classical side; a Levenberg-Marquardt back-propagation network, support-vector regression, random forest, gradient boosting, a stack and a refit of the published regression on the learned side. Three split protocols score the same table: random, the published hold-out, and leave-one-site-out. The science lives upstream in blastfrag, a separately published package consumed as a pinned dependency (from PyPI since 0.04.005, with numbers identical to the git-tag pin); the product declares no package of its own and a CI guard fails the build if a project table ever appears. The bake runs through nine stages and a release gate that re-reads and re-hashes what it wrote and fails on a single unexplained abstention; a browser gate walks every route, six workbench tabs, three viewports and both themes over the built site before the deploy publishes it.
Key Performance Indicators
| KPI | Baseline | Result | Impact |
|---|---|---|---|
| The honest protocol | A random split of blasts from the same site: memorising the site looks like skill | Leave-one-site-out: best learned arm -0.034 against a null at -0.216; published regression 0.802 and Kuznetsov 0.311 the only positives | The fitted arms are not skill on a site they have not seen |
| A kill criterion that fired | An earlier version declared success on two failures | Both a positive score and a 0.10 margin required, written down before the run; the learned arms fail it | The site reports the failure instead of the margin |
| Reproducibility stated as measured | A hash match or nothing | Byte-identical within an environment; better than 3e-08 relative across operating systems over all sixteen cases; both gated in CI | The pin can change and the diff decides |
Architecture
fragmenta pipeline
Technology Stack
Application Screenshots

