Architecture
Module map (see planning/v0.1.0a1-plan.md for the phase scope):
fresh_daugherty.instance.thesis— the transcribed Daugherty (1991) case-study reference data (Tables 5.1-5.5, horizon, objective), the anchors the reconstruction is calibrated against.fresh_daugherty.instance.reconstruct— the documented reconstruction of the case-study yield/economics model (Chapman-Richards yield + Faustmann PNV, 4% discount, price escalation), calibrated to the thesis anchors and grounded in the Umpqua LRMP CMAI culmination ages.fresh_daugherty.instance.landbases— the 18 initial forest conditions (Table 5.5) as public-safe area datasets.fresh_daugherty.model— build the case-study as a ws3ForestModel(Model I) from the reconstruction (Woodstock sections + bootstrap + optimization prep).fresh_daugherty.lp— the open-loop NPV-max harvest-scheduling LP (even-flow or target-flow harvest policy).fresh_daugherty.replan— the sequential-replanning simulator and the inconsistency metrics (the dynamic-inconsistency measurement).fresh_daugherty.experiments— the experiment runner sweeping landbases x discount rates x harvest-flow policies (occurrence/magnitude table).fresh_daugherty.cli— thin CLI wrappers over the Python APIs.fresh_daugherty.instance.discount— the E1 (P9) time-varying discount-rate path records (constant / linear / inverse-j families) and their per-period factor vectors; the constant family is bit-identical to the core scalar convention.
Design invariants:
Reuse, never re-implement: the model is built on ws3 (
ForestModel, LP machinery); ws3’s Model II path is a deferred ws3 enhancement.CLI commands are thin wrappers over Python APIs.
Typed records at boundaries; the inner problem stays linear (continuous LP).
Provenance on every input, formulation, reconstruction assumption, seed, and result.
The scanned thesis is never committed (archival, not redistributable); all tests use the public-safe reconstructed fixtures.