Are these models really using categorical co-design?
Reviewed 6 September 2026; package-backed feedback addition 7 September 2026. Foray home · Curation record
Yes, in a bounded finite form. The implementation witnesses, ordered functionality/resources and compatibility constraints do real work. We do not claim that every arrow is a categorical operation, or that these browser apps implement a general MCDP library.
The source standard
Zardini’s Co-Design of Complex Systems (2023), Definition 3.3, separates a design problem into functionality F, implementations I, resources R, and maps exec:I→F, eval:I→R. Definition 3.17 composes these problems by retaining the tuples of component implementations whose resource requirements are met by connected functionality. The external ports then describe the whole system. The implementation set can be finite and solved by enumeration. Zardini dissertation, §§3.1–3.5.
A query asks for Min { eval(i) : f ≤ exec(i) }, optionally subject to resource ceilings. The order compares each resource separately, so several incomparable answers can be minimal. This implements the finite catalogue idea behind the monotone co-design framework. A diagram or a weighted ranking alone would not establish that relation. Censi, A Mathematical Theory of Co-Design.
What each essay implements
| Essay | Implementations and interfaces | Accurate claim |
|---|---|---|
| Staged paths | Legal action histories; start-state guards, service during work, commissioned capacity, crews and access. Each resource vector has a replayable path. | A finite design problem with implementation. The engine compiles explicit temporal constraints into a history search; it is not a general diagram compiler or feedback solver. |
| Temporary power | Whole operating battery/converter/cooling counts; energy, electrical-power and thermal requirements form a cycle. | The actual pinned Python package builds a System feedback loop and solves each supported brief. Converged least integer counts are checked against availability and an independent bounded enumeration. The browser presents the recorded atlas. |
| Programme studio | Service-plan and platform/signalling/power package tuples satisfying capability requirements; governance assumptions and four supplied schedule templates evaluate incremental cost, time, risk and possessions. | A finite compatible-tuple composition. Flat enumeration is a valid way to solve the declared relation. Its affine approvals calculation is a particular resource evaluator, not a general MCDP feedback operator. |
| Wildlife crossing | Bridge bundle, fence package and monitoring package, joined through guide-kilometre and observation-point requirements. Costs, land and annual expense are aggregated explicitly. | A finite acyclic composed design problem with full implementing tuples and resource antichains. Component regrouping is checked against an independent flattened relation. |
The studio’s existing-railway option is a baseline implementation with zero incremental programme burden when it meets the request. It is not the categorical identity morphism. The identity on an ordered interface is its order relation; those are different notions.
Where composition changes the answer
In wildlife, a bundle of N bridges requires 2N kilometres of guiding fence and 2N observation points. A fence package adds its own observation requirement. A monitoring package must cover the total. These two inequalities are the actual join conditions:
bridge.fenceNeedKm ≤ fence.km
bridge.observationNeed + fence.observationNeed ≤ monitoring.points
The two groupings (bridges + fencing) + monitoring and bridges + (fencing + monitoring) retain the same full implementation witnesses. In the second grouping, the fence/monitoring composite exposes guide length and residual observation capacity. No bridge option is discarded merely because its projected cost looks worse before its remaining obligations are met. See the frozen contract, model and independent comparison.
The staged model has an analogous reason to retain future-relevant information: temporary equipment and prepared grid work can enable a later path. Pruning is restricted to identical physical state and time, after past requirements are checked. It is justified for the declared cost/finish/peak-access query; new cumulative budgets or external calendars would require a revised contract. Staged method and proof conditions.
What the checks establish
The finite model checks compare witnesses and feasible resource sets, not merely screenshots or frontier counts. Wildlife’s independent checker rebuilds the catalogues from the written contract, enumerates all component triples and checks the complete external relation. Studio checks include the previously hidden-ceiling counterexample and a baseline already meeting the request. Staged paths retains its independent explicit-history oracle.
For a fixed model, increasing the requested functionality can only remove feasible implementations; relaxing a resource ceiling can only add them. The Pareto points themselves need not be nested. Catalogue/context changes are changes of assumptions. Fictional rail/ecological constants and programme-risk coefficients remain assumptions, even when the finite calculation is exact.
A general MCDP solver additionally addresses suitable ordered spaces, continuity and loop solving. These experiments do not establish those general algorithms or replace field evidence. Their positive claim is smaller and inspectable: explicit components or paths, valid interface constraints, complete declared resource accounting and implementing witnesses behind the resource choices.
Has the original Python package returned?
No public restoration of the original PyMCDP repository was verified in the 6 September 2026 check. The February brief’s withdrawn/refactoring note points to Censi’s PyMCDP. Its canonical AndreaCensi/mcdp repository returned 404 from GitHub’s API, and targeted repository searches did not identify a restored solver. The checked duckietown/mcdp address also returned 404. This does not establish why it is unavailable or exclude an unpublished or differently named successor.
There are distinct public resources:
| Resource | Observed status |
|---|---|
| fgolemo/mcdp | Historical2017 PyMCDP source survives. It is not evidence of a restored current canonical solver. Modern installation was not tested. |
| ACT4E/ACT4E-mcdp | Public course API, exercise and test infrastructure. Its README does not present it as the completed restored PyMCDP solver. |
| cbriat/codesign-mcdp | A separate from-scratch implementation is public and MIT-licensed. Inspected source version0.2.1 at commit97d6446 (11 August2026); latest GitHub release listing0.2.0. This is not Censi’s withdrawn repository returning. |
Repository availability, installation success and mathematical validity are separate questions. This 6 September check verified readable GitHub source, not a current PyPI inventory or a completed installation. Briat’s inspected manual also labels its temporal/sequential extensions as the author’s newer, not-yet-peer-reviewed work; its availability is not a reason to silently adopt those broader claims. The three earlier apps retain their small independently written browser models and explicit checks; the new package-backed essay is described below.
The package is now exercised in a new essay
On 7 September 2026 we installed and probed Briat’s pinned source in an isolated environment, then used its core System/Module/solve path for temporary power. It sizes circular battery, cooling and converter obligations. This is a new package-backed calculation, separate from the three earlier models. Scope, dependency and proof; explored capabilities and limits.
The original PyMCDP availability finding above remains the dated repository check. The new installation is of Briat’s different implementation.