Skip to content

feat(rate-of-closure): stream capability optimizer samples - #4283

Merged
dieterolson merged 18 commits into
feat/4199-wind-workflowfrom
feat/4197-capability-observer
Aug 9, 2026
Merged

feat(rate-of-closure): stream capability optimizer samples#4283
dieterolson merged 18 commits into
feat/4199-wind-workflowfrom
feat/4197-capability-observer

Conversation

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor

Summary

  • stream one immutable capability-sample-observation/v1 record for every optimizer attempt
  • add cooperative cancellation before evaluator calls without bloating OptimizationResult
  • adapt the stream into bounded scalar-ensemble/v1 datasets in Python and TypeScript
  • preserve all valid scalar flight metrics, provenance, target diagnostics, failed/no-impact nulls, and deterministic ordering
  • harden cross-runtime serialization and observation validation against IEEE rounding edges, Unicode casing drift, delimiter collisions, malformed statuses, and hostile evaluator results
  • update both Rate-of-Closure handoffs with exact parent, validation, blockers, and next steps

Architecture

The shared flight layer owns the lossless observation and optimizer hook contracts. Rate-owned adapters consume those observations and build the reusable scalar ensemble. Existing optimizer callers and compact results remain source-compatible. Sink errors propagate; cancellation is typed; no raw evaluator exception text is exposed.

Validation

  • Python flight plus capability adapter: 135 passed, 4 skipped only for the absent optional tools_core wheel
  • React: 96 files, 584 tests passed
  • TypeScript type-check, zero-warning ESLint, and Vite production build passed
  • Python 3.12 mypy, Ruff, Ruff format, Black, structural budgets, and git diff --check passed
  • stable ASCII and Unicode cross-runtime digests remain identical
  • adversarial tests cover half rounding, exponent thresholds, negative zero, non-finite values, Unicode labels, delimiter-bearing declarations, and status/metric matrices

Stack

Base branch: feat/4199-wind-workflow at 6e3c102 (draft PR #4282). Do not retarget or merge this child ahead of its protected parent stack.

Tracks #4197

@github-actions

github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ SPEC.md Update Required

Source files were modified in this PR but SPEC.md was not updated.

Per the Specification-Driven Development Policy:

  • Any PR that adds, removes, or changes functionality must update SPEC.md
  • Update the relevant sections (features, architecture, tests, dependencies, etc.)
  • Bump the Spec Version if making substantive changes

To resolve:

  1. Update SPEC.md to reflect your changes, OR
  2. Add the spec-exempt label if this PR genuinely doesn't affect the spec (e.g., pure refactor with no behavior change)

This check is enforced by the spec-check CI workflow.

dieterolson and others added 3 commits August 8, 2026 10:20
…n workspaces

Expose the qualified Waterloo/Penner capability optimizer as a primary
Shot Optimizer module in both clients: strict cross-runtime
capability-optimization-workflow/v1 authoring and persistence,
off-UI-thread execution with truthful progress and cooperative
cancellation, complete scalar-ensemble/v1 cohort retention, ranked
alternatives, stage-qualified scatter axes, bounded raw-row paging,
spreadsheet-safe CSV, and stable JSON. The React panel is lazy-loaded
so the main Vite chunk stays under the 500 kB warning threshold, and
saved v1 layouts reveal newly registered modules. Handoff documents are
updated in this implementation commit per fleet policy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…t reveal

Add PyQt workflow/worker/GUI suites and React workflow, worker-client,
run, panel, and results tests for the Shot Optimizer slice; extend
primary-navigation coverage so saved layouts reveal newly registered
modules and the new tab registers exactly once in both clients.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… gates

Add the SPEC 1.14.6 change-log row, document the end-user workflow in
the capability optimization spec, and update the campaign handoff with
the recovered slice and its verified gate evidence.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
dieterolson and others added 9 commits August 8, 2026 10:23
No material source change; handoff pointer update only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…cess

The dict-splat construction of CapabilityWorkflowInputs failed the
hosted delta-mypy gate because **dict[str, float] cannot be proven
against the integer fields. Build the snapshot with explicit typed
keyword arguments instead; behavior is unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Handoff update for implementation commit 101020b per fleet policy;
no source change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The prior note wrongly framed the 3.10 StrEnum ImportError as a
stack-wide defect to fix in source. requires-python is >=3.11 and only
quality-gate and tests (3.11) are required checks, so the 3.10 lane is
a stale-matrix artifact. No source change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The observation contract has only complete/no_impact/failed members, so a
horizon nonconvergence is normalized into failed. Reporting a bare
"failed N" reads as numerical breakage when the retained reason says the
flight simply did not reach the ground inside the configured horizon.
Both clients now append the retained reason codes with counts, which is
data the adapter already carries per row.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A descending launch starts at z=0 and is already below ground once the
t > dt guard permits the crossing check, so the interpolation ratio went
negative and extrapolated the crossing to a negative sample time. That
raised RangeError: timeS must be nonnegative, which the observation
layer absorbed as an untyped evaluator_exception on 12 of 96 samples of
a default driver search while Python reported none. Clamping the ratio
to [0, 1] keeps the crossing inside the detecting step, so these samples
report nonconverged and match the Python runtime.

Also builds _lerp_vector's 3-tuple explicitly instead of carrying an
unused type: ignore, and coerces _curve to float, clearing the hosted
delta-mypy gate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Brings in the evaluator branch descending-launch and delta-mypy repairs.
Resolves the two documentation conflicts by keeping both slices: SPEC.md
retains the 1.14.6 workspace row above the amended 1.14.5 evaluator row
at header version 1.14.6, and the tool handoff keeps the workspace
completion record ahead of the evaluator repair entry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(rate-of-closure): matched PyQt6/React capability optimization workspaces
feat(rate-of-closure): bind optimizer to full flight
@dieterolson
dieterolson merged commit c1827bb into feat/4199-wind-workflow Aug 9, 2026
15 checks passed
d-sorgcodexagent Bot pushed a commit that referenced this pull request Aug 9, 2026
The per-slice stacked-branch cautions described the stack while it was
open and now read as active constraints, so state plainly that #4283,
#4289, and #4294 are merged onto this branch, how they were folded, what
was verified here (1426 Python, 624 React), and that the incomplete CI
matrix reflects 25 of 28 org runners being offline rather than failures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant