docs: the glossary defines answers, sweeps, relations and assumptions, and no longer shows build taking a Program - #1730
Merged
Merged
Conversation
Merging this PR will not alter performance
Performance Changes
Comparing Footnotes
|
FBumann
added this pull request to stack #1735
September 24, 2026 14:02
FBumann
force-pushed
the
claude/glossary-update
branch
from
September 24, 2026 17:35
0bb5762 to
f81748f
Compare
…, and no longer shows build taking a Program Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VgkRT9Kpb2iNvL6dpV8VER
FBumann
force-pushed
the
claude/glossary-update
branch
from
September 24, 2026 18:57
f81748f to
1f3d1d1
Compare
fluxopt-release-bot Bot
added a commit
that referenced
this pull request
Sep 25, 2026
🤖 I have created a release *beep* *boop* --- ## [0.0.1-alpha.354](v0.0.1-alpha.353...v0.0.1-alpha.354) (2026-09-25) ### Refactoring * **api:** a sweep's answer is a Sweep, read back with load_sweep and scan_sweep ([#1732](#1732)) ([24b1238](24b1238)) * **api:** how each slice of a sweep terminated is runs.record, saved as record.parquet, so objective always means the number ([#1731](#1731)) ([7c14833](7c14833)) ### Documentation * the glossary defines answers, sweeps, relations and assumptions, and no longer shows build taking a Program ([#1730](#1730)) ([25d594b](25d594b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: fluxopt-release-bot[bot] <307443024+fluxopt-release-bot[bot]@users.noreply.github.com>
FBumann
added a commit
that referenced
this pull request
Sep 25, 2026
…#1738) > **Prompt:** In the records change, does each Result and Runs also have a .record property? … Add it > [!NOTE] > The following content was generated by AI. `result.record` returns the `Record` that `save()` writes to `record.parquet`: one row of the table a sweep keeps as `sweep.record`, under the same name one dimension wider. Before this, `Result` exposed only the separate fields, and the `Record` value existed only inside `save()`. `save()` now builds its row from the property, so the row has one home. <details><summary>Details, mutation table and verification</summary> **Behaviour** - `result.record` computes `model_digest()` on first use, as `save()` already did. The digest is cached, so later reads are free. - An answer read back with `load_result` or `load_archive` now keeps the `run` its record was stamped with. Before, `spec_digest`, `solved_at` and `model_digest` were carried over, but `run` was dropped. So `load_archive(...).answer.record` equals the row on disk. - `save()` still writes `run` as null. A plain save is not an archive, and `Record` documents `run` as "stamped when the archive is written and null until then". **Tests** - `test_a_result_hands_back_the_row_its_save_writes`, parametrized over LP, MIP and INFEASIBLE. The property, the saved file and a `load_result` of that file must all give one row, and `objective` must be null exactly where nothing was reached. - `test_an_archive_stamps_its_own_name_and_when_the_solve_returned` also checks that an archived answer carries its `run`, and that re-saving it plainly writes `run` as null. **Mutation table** (committed tree, restored with `git checkout --`, `__pycache__` dropped on both sides) | guard | result | |---|---| | `load_result` carries `run` (`api.py:673`, via `tools/mutate.py`) | **caught** | | `save()` writes `run` as null (`result.py:791`: `._replace(run=None)` removed, by hand) | **caught** | **Gates:** `ruff check`, `ruff format --check`, `pyrefly check`, the full suite (4033 passed, 319 skipped, 1 xfailed) and `bench/test_harness.py` (151 passed), in a `uv` environment. After #1730–#1734 merged, GitHub rebased this branch onto `main`; the resulting tree is identical to the one those gates ran on. </details> 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01VgkRT9Kpb2iNvL6dpV8VER Co-authored-by: Claude <noreply@anthropic.com>
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.
Note
The following content was generated by AI.
The glossary was last touched at alpha.334 (#1647), and several releases since then made it wrong. The worst case is the chain diagram, which drew
check ──▶ Program ──▶ build, butbuildnow refuses aProgram. This PR fixes what is wrong and defines the terms the docs use without defining them. It is the first of five stacked PRs; the four renames build on it.What changed
Wrong, now fixed
check→ Program as a side branch for reading the plan. The Spec and Program entries say to keep theSpec(lanes.pyrefuses aProgram).evaluate(name). It takes an expression.row(...)anddiagnostics()sinks. They read the model; they don't solve it.qmatrix.evaluate, one of the five verbs the architecture page lists.Mapping, notdict.Added
src/anddocs/.carry.solve_overand held/spilled move into it.check(spec, sink).Checked: every new link points to a heading that exists. The site build was not run.
🤖 Generated with Claude Code
https://claude.ai/code/session_01VgkRT9Kpb2iNvL6dpV8VER
Generated by Claude Code