Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Deferred-decision register

Every item here was deliberately deferred with a stated trigger rather than decided. A deferral that nobody revisits is an omission, so each row carries the observable trigger, a check that can be run, an owner, and the date the check is next due.

ColumnMeaning
R-NNRow id. Cited from ADRs and from issues; ids are never reused.
itemWhat was deferred, in one line.
ADRThe decision record that deferred it, or — when the deferral is a blueprint position with no separate record.
triggerThe observable event that ends the deferral. Not a date.
checkHow to tell whether the trigger has fired. A cell starting with $ is a shell command that scripts/check_register.py --due runs and reports; anything else is a manual check.
ownerWho answers for the row.
last-checkedThe date the check was last actually run.
next-checkWhen it is due again. Monthly for automatable checks; phase-gated otherwise.
statusopen (deferred, waiting), watch (trigger may fire soon), closed (decided — the ADR that decided it is in the ADR column).

scripts/check_register.py --lint runs in governance / adr-lint: it validates the dates, checks that every referenced ADR exists, and fails when a row that is not closed has a next-check in the past. register-review.yml runs --due on a monthly cron and opens or updates one Register review YYYY-MM issue from its output, including whatever the shell checks printed. A row is closed by the ADR that decides it, never by deleting it.

R-NNitemADRtriggercheckownerlast-checkednext-checkstatus
R-01Proposed: salsa for finer dependency tracking (§14.3)ADR-0042complete per-instance reuse has met R-22, but measured preparation still requires finer automatically tracked dependenciesmanual: compare declared-input memo and salsa on the same semantic outputs and cancellation contract; no adoption measurement exists yetpaul-heyse2026-09-132027-01-15open
R-02LogicalPlan::Extension rule nodes for per-rule attribution (§14.2 rule 8)ADR-0025the §22.4 diff report or agent tooling needs rule attribution inside a plan renderingmanual: is a plan rendering in the diff report on the current slice’s scope?paul-heyse2026-09-132027-01-15open
R-03datafusion-tracing and instrumented-object-store (§23.1)ADR-0037a release matching the pinned DataFusion 55.1.0 exists$ python3 -c "import json,urllib.request as u; print(json.load(u.urlopen('https://crates.io/api/v1/crates/datafusion-tracing'))['crate']['max_version'])"paul-heyse2026-09-132026-10-13watch
R-04datafusion-ffi for compiled third-party kernel packages (§3.3, §22)ADR-0037the §22 extension model admits compiled third-party kernel packagesmanual: has a third-party kernel package been proposed?paul-heyse2026-09-132027-03-01open
R-05feos-core / feos provider, blocked on num-dual 0.15 (§9.8)ADR-0022feos-core releases a version depending on num-dual 0.15$ cargo info feos-corepaul-heyse2026-09-132026-10-13watch
R-06egglog equality-saturation rewrites (§3.3, phase 4)ADR-0037a cross-process, cross-version extraction-determinism test passesmanual: run the determinism spike before any phase-4 adoptionpaul-heyse2026-09-132027-03-01open
R-07declared MSRV floors of the pre-1.0 crates re-checked at every upgrade (§3.1, §26)ADR-0018any Cargo.lock change$ cargo metadata --locked --format-version 1 --no-depspaul-heyse2026-09-132026-10-13open
R-08Ipopt / HSL / MUMPS build recipe per platform (§26, §18.3)ADR-0028phase 1 exit, or a macOS or Windows recipe fails to reproduce$ ls docker/solvers/checksums.sha256paul-heyse2026-09-132026-12-01open
R-09wheel solver linkage: bundle Ipopt/MUMPS versus runtime libloadingADR-0028the first wheel that must ship the native backendmanual: does a release need pse-py built with the ipopt feature?paul-heyse2026-09-132026-12-01open
R-10object_store multi-writer commit coordination (§20.1, §26)—any deployment that is not single-writer localmanual: re-validate the ref CAS against the target object store backendpaul-heyse2026-09-132027-03-01open
R-11Proposed: canonical plan-byte contract beyond diagnostic encodings (§14.2)ADR-0044a consumer requires canonical plan bytes or upstream supplies a usable versioned byte-stability contractmanual: review need and codec/engine compatibility at dependency changes; E5 refutes sorted-insertion determinism; current diagnostic bytes stay noncanonicalpaul-heyse2026-09-132026-10-13open
R-12Miri re-adoption (dropped: no unsafe outside the FFI crates)—the first unsafe block outside the four allowlisted crates$ cargo tree --workspace --depth 0paul-heyse2026-09-132026-12-01open
R-13Renovate as the fallback for DependabotADR-0035Dependabot cannot express a grouping the family rule needsmanual: has a family-group PR arrived ungrouped?paul-heyse2026-09-132026-12-01open
R-14Python API documentation tool (mkdocstrings or equivalent)ADR-0036python/pse grows a public surface beyond open/compile/solve/build_info$ ls python/psepaul-heyse2026-09-132026-12-01open
R-15crates.io release tooling: release-plz versus cargo-workspacesADR-0002phase-0 exit, when the library crates first flip publishmanual: decide by ADR before the first v0.1.0 tagpaul-heyse2026-09-132026-12-01open
R-16a project board and a triage rotationADR-0034a second contributor$ gh api repos/paul-heyse/pse-arrow/collaborators --jq lengthpaul-heyse2026-09-132027-03-01open
R-17Windows symlink policy for .claude/skills -> .codex/skillsADR-0034the first Windows contributor, or a Windows CI job that checks out the agent config$ git config --get core.symlinkspaul-heyse2026-09-132027-03-01open
R-18promote cargo shear / cargo machete from advisory to a PR gateADR-0038every crate has code — the phase-0 skeleton declares its blueprint dependencies before using them, so unused-dependency tools would fail the whole workspace$ cargo shearpaul-heyse2026-09-132026-12-01open
R-19Python pins for CPython 3.11: numpy 2.5.3, scipy 1.18.1 and pint 0.26.1 declare requires-python >= 3.12, so pyproject carries an exact second pin per library under python_full_version < '3.12' (numpy 2.4.6, scipy 1.17.1, pint 0.25.3)ADR-0024either raise requires-python to 3.12 (abi3-py312, parity 3.12–3.13) by ADR, or keep the split once parity on 3.11 is exercised in phase 1manualpaul-heyse2026-09-132026-12-01open
R-20cargo xtask doc-lint is a stub (exit 2) and rust / doc-lint is continue-on-error until the path indexes under docs/capability-maps/facts/ existADR-0031the first just evidence-regen run that writes docs/capability-maps/facts/*.paths.txt.zst$ ls docs/capability-maps/factspaul-heyse2026-09-132026-11-01open
R-21the solver-image pin pull request needs PIN_PR_TOKEN (a fine-grained PAT with contents, pull requests and workflows write) because GITHUB_TOKEN cannot touch .github/workflows; until it is set the workflow prints the manual pin commandADR-0028the secret is created, or the pin moves to a repository variable read through vars.SOLVER_IMAGE (decided by ADR)$ gh secret list --repo paul-heyse/pse-arrowpaul-heyse2026-09-132026-11-01open
R-22Proposed: complete per-instance memoization before any finer dependency framework (§14.3)ADR-0042representative cold/warm measurements show whole-stage recomputation dominates total preparation, and a complete finer input bundle passes incremental-versus-clean checksmanual: compare complete outputs, lineage, preparation time and memory on the same slice; report conditions and the changed dependency matrixpaul-heyse2026-09-132027-01-15open
R-23Proposed: larger canonical relation envelope or deterministic fixed-boundary streams (§5.3)ADR-0045a supported workload exceeds the phase-1 row/byte/offset envelope and measurements justify a larger formatmanual: measure process/reservation peaks; design the next canonical version and metamorphic/round-trip compatibility fixtures before adoptionpaul-heyse2026-09-132027-01-15open
R-24Proposed: Parquet pruning and bounded transfer coalescing (§5.4, §21.1)ADR-0048a representative scan or stream-transfer cost is material and the candidate improves total cost under identical semantic resultsmanual: compare full results/multiplicities, decoded bytes, allocations, process/pool peaks and wall time; qualify each optimization separatelypaul-heyse2026-09-132027-01-15open
R-25Proposed: predicate preimages for computed-column analytics (§14.2)ADR-0048a repeated analytic predicate has an exact supported preimage and measurement shows reduced total scan costmanual: prove or exhaustively characterize equivalent replacement semantics including half-open endpoints, nulls and floating bounds; compare against an unpruned query before measuring savingspaul-heyse2026-09-132027-01-15open
R-26mmap for IPC artifacts in pse-catalog (read via get_opts → Bytes → zero-copy Buffer in phase 0)ADR-0046a measured artifact-read cost that dominates a representative open/query pathmanual: compare read-copy versus mmap on the golden stores under recorded conditions; an adoption needs an ADR and an unsafe-allowlist entrypaul-heyse2026-09-132027-01-15open
R-27generate the Rust manifest struct from the registry ManifestSpec (hand-written in phase 0 with a parity test)ADR-0051wave 2 starts, or the parity test between the hand-written struct and ManifestSpec fails$ ls crates/pse-catalog/src/store/manifest.rspaul-heyse2026-09-132026-12-01open