Wildlife monitoring power loop data contract
The declared values in contract.json define the current monitoring model. There are 98 briefs (7 power values × 7 durations × 2 conditions) and eight fixed-family architectures per brief. Power and energy now use W and Wh; costs use GBP and the second resource is allocated cabinet volume in L. The migration and synthetic volume relation are explicit in scenarioMapping. Per-pack heat is a synthetic thermal design allowance, not a claim about measured heat at fixed load. Usable Wh is net DC energy after cell-internal losses; cooling electricity and converter loss are additional demands. atlas.json is generated by the actual pinned Python package and contains all 784 calculations, including catalogue-unavailable outcomes.
Query and architecture keys
Brief: {powerW:750,durationHours:8,condition:"hot"}, ID p750-h8-hot. Default is this brief. Architecture ID is {batteryId}-{converterId}-{coolerId}, e.g. standard-efficient-liquid. Families are standard|compact, standard|efficient, air|liquid, respectively. All eight records remain visible, including ties. Resource minimisation uses {capitalGBP,volumeL} componentwise.
Atlas schema
schemaVersion,title,domain,default,catalogueCaps,catalogues,conditions,interfaces,traceColumns,boundary,physicalAssumptions,unitContract,scenarioMappingcopy the visible declared model.provenancecontains package version, GitHub source URL and pinned commit, hashes of actual imported package sources,modelSha256,contractSha256,generatorSha256, and deterministic build information. No time-dependent fields.architectures: eight{id,label,battery,converter,cooler}objects; family fields are IDs.queries: 98{id,powerW,durationHours,condition,frontier,results}objects.frontieris an array of architecture IDs for all catalogue-feasible nondominated designs; equal cost/volume tuples retain every architecture ID.results: eight objects witharchitectureId,calculation_status,catalogue_feasible,verified_complete,iterations,witness,service_only,trace, andcatalogueChecks.calculation_statusis the package status string. Successful builds requireconvergedand exact interface checks. Amax_iterordivergedresult aborts the build and must never be labelled catalogue infeasibility.catalogue_feasiblemeans the complete least count vector fits all three declared availability caps.verified_completemeans its three physical model interfaces have been independently checked by direct arithmetic after package convergence; it does not mean the availability caps are met or that the design is field validated.witnessandservice_onlyhave the same shape:{counts:{batteries,converters,coolers},resources:{capitalGBP,volumeL},values:{energyWh,outputW,heatW,coolingW,drawW,lossW},checks:[{id,label,unit,required,provided,margin,satisfied}],complete}.catalogueChecks:[{component,count,limit,satisfied}], in battery/converter/cooler order.traceis an array of integer arrays, each ordered bytraceColumns:[iteration,batteries,converters,coolers,heatW,coolingW,drawW,lossW,capitalGBP,volumeL]. The seed is row zero. Counts and component quantities come from the actual package trace; time and floating deltas are omitted. The converged duplicate final row is retained.summarycounts all cases, statuses, feasible results, and maximum iterations.
Meaning of the comparison
service_only sizes batteries from H×P and converters from P, then sizes cooling for those initial components’ heat. It stops without enlarging the batteries/converters to cover cooling draw and converter losses. Its exact three interface checks expose any undersizing. It is a deliberately incomplete once-through comparator, not another solver or a safe configuration. witness is the cold-start package feedback result.
Availability and UI ceilings
Modules calculate unbounded non-negative integer counts by exact ceiling division. Their declared extended-natural input posets also contain top (+infinity); each module explicitly maps top demand to all-resource top through the normal Module wrapper. This mathematical boundary does not add any supported outer power/duration value. module_boundary_tests.py checks the direct module calls, zero and first rating boundaries. After convergence the least count vector is checked against the explicit catalogue caps 32/12/20. Because the monotone count map starts at zero, its fixed point is componentwise no larger than every compatible count vector within the same architecture. Exceeding a cap therefore proves no available implementation of that architecture exists. This avoids the package’s partial-top/divergence behaviour when a module returns an empty antichain.
UI capital and cabinet volume ceilings filter only records with calculation_status="converged", verified_complete=true and catalogue_feasible=true. Retain family IDs and all ties. Such upper-resource ceilings preserve any admissible point’s componentwise dominators, so the global frontier may be filtered directly. If displaying all remaining architectures, recomputing its two-resource Pareto subset is merely post-filtering package results, not running a JS co-design solver.
Embedding and reproduction
The UI embeds the exact JSON in a script with id="mcdp-atlas" and type application/json; no network or Python browser dependency is needed. build_atlas.py writes only atlas.json; it does not edit the app. build_atlas.py --check regenerates and byte-compares the atlas. Install requirements.txt in an isolated environment. The independent oracle is maintained separately and imports no model sizing or transition helpers.
Route and unit boundary
The active page is monitoring-power-loop.html, schema monitoring-power-loop-1, record format monitoring-power-loop-comparison-1. New share links use powerW and volume query parameters. The historical rail-power-loop.html route is a static notice with no script, redirect or query forwarding. It links to the new default and to the immutable historical source. Its saved railway queries are never interpreted as monitoring watts. The legacy documentation directory is retained for stable source links; its current files describe the new monitoring contract.