Repository navigation
docs(proposal): a parameter point is a design coordinate or a sample, and the cell says which - #962
Merged
Merged
Conversation
Draft. Collision policy, leaf labels and provenance, and quantity banding each decide whether a parameter point is a labelled design condition or a sample from a stated measure, and each reads that off ParamSource -- the CLI flag -- because the cell does not carry it. The flag classifies a hand-authored grid passed via --draws as a sample, and an iid uniform design as a partition in batch run but a band in simulate. Proposes a ParamPlan of a typed design axis crossed with a sample axis (a sample cannot be built without a Measure), CellCoords in place of point_idx + point_overrides with plan_grid as the single constructor, one collision guard keyed on the kind, a manifest summary block naming what a band is over, and fit predict's sweep moved onto the grid. Seeds and resolved values are preserved, so nothing re-keys; IR and goldens are untouched. Five calls are left for the maintainer in section 10. Relates-to: gh#562, gh#572, gh#575
Every open call is decided, so the proposal ships with no open questions. The ambiguous --draws FILE splits by axis into --draws-file (a sample) and --design (design points), and a bare --draws <path> is refused naming both; simulate gains --sweep on the CLI grammar fit predict already uses; --draws uniform is a sample under a uniform-bounds measure; fit predict's sweep moves onto the grid behind a byte-identity gate; seeds and the sweep:<param> prefix stay as they are. DesignAxis becomes a sum type with Unit as its own variant, and the collision diagnostic names the design's origin. New sections set out how the user drives each axis and walk eleven workflows end to end on one SIR model. The staged plan places the flag split with the guard rework, now that the gh#572 guard is on main keyed on ParamSource. Every file:line is re-checked against ebe845a. Relates-to: gh#562, gh#572, gh#575, gh#948
Renames --design to --sweep-file, so flags pair by axis (--sweep / --sweep-file, --draws / --draws-file). Design coordinates leave the process seed, giving common random numbers across design points. Adds a normative output schema (point_id, exact sweep: values, a band column, a self-describing manifest), landed as its own stage before fit predict's grid move; a provenance sidecar for --draws-out and --draws-file, with -n subsampling a file; and refuses duplicate rows only in --sweep-file. Sampled columns are now the ones the measure varies. A scenario, --param or design value that sets one is recorded as an imposition in plain words, and --param joins the collision footprint. Quantity mode is decided per quantity, so ODE replicates and one-row samples no longer render zero-width bands. The staged plan is reordered so no stage pools design points or drops a refusal, and byte-neutral checks compare level hashes and bytes rather than run_ids, which fold the git hash. Workflows are updated and extended with --param on a swept parameter and a sidecar round trip. Follow-ups are listed to be filed. Relates-to: gh#562, gh#572, gh#575, gh#630, gh#948, gh#949
Twelve corrections from the feasibility re-review. Point versus band is now decided by the data in each group rather than by the backend: a quantity collapses to a point only when every group's realizations are bit-identical, and the band column is set per row from what actually varied. --draws-file gets no default row cap, so it keeps today's --draws FILE seeds; with -n the seed index is the position in the subsample. Stage 7 is gated on byte identity against its parent commit, and it slices one global plan by design index so partition keys stay global. Predict's design shadows and varying list land in the commit after the A/B passes; the A/B compares report.json and manifests unmasked, since they carry no version string or timestamp. Also: the ensemble axis-kind fold is an optional field, so no existing grid hash moves; the CRN test and the Stage 2 test are made able to fail; posterior varying columns fall back to non-constant columns when estimated is empty; imposition notes print once per invocation; the no-re-key baseline is main after gh#949. Relates-to: gh#562, gh#572, gh#630, gh#949
Rebased onto main with gh#949 landed; every citation is re-pinned to 15cf347. A posterior --draws-out keeps today's columns, the fit's [fixed] columns included, so a reused posterior needs no --fit; only the sidecar's varying list narrows to the estimated set. --design-from keeps dataset-index seeds as a stated exception to the design-seed rule, since its datasets are independent replicates. Stage 4 adds per-group attribution for both verbs under today's mode predicate, Stage 5 moves both to the bit-identical rule, and Stage 7's byte gate sits on a parent already on the final rule. The guard returns impositions and design shadows as separate lists. The types gain SampleProvenance, DesignRow, FitRef, PriorSource and a Seeds that holds the replicate count. The manifest becomes camdl.quantities/v2 with its remaining fields defined. simulate sorts quantity groups design-major explicitly. The --fit source check accepts the new flags, the draws reader loses its two-column minimum, and the constant-column refusal needs two or more rows. Smaller wording and interface fixes from the same review are folded in. Relates-to: gh#562, gh#572, gh#949
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposal:
docs/dev/proposals/2026-09-27-coordinate-kind-design-vs-sample.md(status: accepted, no open questions). Docs only.camdl decides whether parameter points are conditions to compare (design) or samples of one distribution from the CLI flag that produced them. It gets that wrong for hand-written grids:
simulate --draws grid.tsv --quantities-outpools three β conditions into one meaningless band (reproduced on main). The proposal replacesParamSourcewithParamPlan { design: DesignAxis, sample: SampleAxis{…, measure, varying} }; each cell carries its coordinates. Collision policy, labels and banding all read that one recorded property.User surface:
--sweep/--sweep-file(design) and--draws posterior|prior|uniform/--draws-file(sample); a bare--draws FILEis refused, naming both replacements. Design points share random numbers. Outputs gainpoint_id, round-trip coordinates, a per-rowbandcolumn and a self-describing manifest.--draws-outwrites a provenance sidecar.13 end-to-end workflows; normative output schema; 9 stages, each landable alone with a test that can fail on the bug it guards. No IR or golden change; no re-key beyond the per-build engine-version fold, with the baseline taken after gh#949.
Reviewed by five agents (three modeler personas, a code-claims check, a feasibility check), then a feasibility re-review. All findings are incorporated; the decisions are in §16.
Relates: gh#562, gh#572, gh#575, gh#949 (prerequisite, in progress).
Revised after a fresh no-context consistency review: posterior
--draws-outkeeps [fixed] columns (B1); per-stage point/band rule for both verbs (B2);--design-fromseeds by dataset index (B3); schema stringcamdl.quantities/v2; SampleProvenance; gh#949 treated as landed; citations re-pinned to main 15cf347. Replaces #950 (rebased history).