Skip to content

fix: restore public smoke contract parity - #4355

Merged
huangruiteng merged 1 commit into
mainfrom
codex/smoke-repair-3475
Sep 14, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/smoke-repair-3475

Conversation

@huangruiteng

@huangruiteng huangruiteng commented Sep 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Repair current-main public smoke regressions across heartbeat/bootstrap prompt contracts, capability-gate projection, status capability readback, CLI help/output budgets, monitor/todo routing, onboarding, installer/configure-goal fixtures, and Reward Memory actor-scoped recall/writeback.

The implementation reuses the existing typed capability and provider boundaries. Reward-memory outcome staging is localized to the quota helper, and repeated installer fixture runs skip only the already-covered optional extension scan so the smoke remains inside the suite timeout budget.

Validation

  • Focused control-plane and Reward Memory pytest suites: 126 passed.
  • All changed Python files compiled; git diff --check passed.
  • Repaired public smoke set passed, including install-local-smoke in 94 seconds.
  • Public/private boundary scan over all 23 changed files: clean.
  • Change-quality receipt cqr_fe410a11884a80091866 recorded and verified against the exact committed diff; strict receipt policy is valid.

Premerge status

The risk-based premerge gate still reports two run failures in this host: the catalog runner resolves the installed checkout and times out its stale install-local invocation at the 120-second runner budget, while catalog-run-e2e-smoke was a transient failure and passed on direct rerun. Direct changed-file checks and the boundary run passed. No manual holds or tracked side effects were reported.

This is a multi-surface runtime/control-plane change; it is submitted for normal maintainer review and is not self-merged.

Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
@huangruiteng
huangruiteng merged commit 4e73428 into main Sep 14, 2026
27 of 28 checks passed
@huangruiteng
huangruiteng deleted the codex/smoke-repair-3475 branch September 14, 2026 01:41
songoow added a commit to songoow/loopx that referenced this pull request Sep 14, 2026
…esive owners

loopx-project#4355 froze quota.py (1118) and support_control.py (1015) at their baselines
while each cohesive extraction lands. This lands those two extractions and
retires both pins:

- quota_failure_report.py owns the honest failure and validation payloads:
  what gets logged, what the operator sees, and how a rejected request is
  reported without inventing success. Moved verbatim; the handler keeps only
  the renamed imports. quota.py returns to 922 lines.
- support_control_chat.py owns the chat and dashboard registration pair, which
  launch the same local presentation surface with different defaults.
  support_control.py returns to 889 lines.

No behavior change: the quota failure path renders the same payloads, and the
chat/dashboard parsers register identically.

Validation: module-size and help-manpage smokes pass with both pins removed;
57 quota settlement CLI tests pass except two sqlite closeout cases that fail
identically on unmodified main; chat/dashboard --help and a quota should-run
failure path render unchanged; Ruff clean on all four files.

Signed-off-by: song <liusongstep@gmail.com>
songoow added a commit to songoow/loopx that referenced this pull request Sep 14, 2026
…esive owners

loopx-project#4355 pinned `quota.py` (1118) and `support_control.py` (1015) at their current
baseline while cohesive extractions land. This retires both pins by moving two
genuinely cohesive owner groups out:

* `quota_failure_report.py` (273) owns what gets logged, what the operator sees,
  and how a rejected request is reported without inventing success.
* `support_control_chat.py` (155) owns the chat/dashboard parser registration.

`quota.py` and `support_control.py` drop to 923 and 899 lines, both back under
the default 1000-line budget, so the temporary pins are removed from the
module-size smoke.

Review follow-ups on the previous head:

* Deleted two unused settlement-identity helpers
  (`_heartbeat_receipt_settlement_bindings`,
  `_effective_spend_turn_instance_id`) that had been copied into the new module
  while the live definitions stayed in `quota.py`. They had no caller, and a
  second copy of the quota settlement identity rule would drift on the next
  change to it. Their now-unused imports went with them.
* Moved the `support_control_chat` import back into the module import block;
  it sat after `SUPPORT_CONTROL_COMMANDS`, which Ruff reported as `E402`.

Verified: the module-size, support-control and control-plane modularization
smokes pass; `chat`, `dashboard` and `quota` parse their arguments; the
cli_commands suite is 72/72; the quota failure path renders unchanged; Ruff is
clean on all four files.

Signed-off-by: song <liusongstep@gmail.com>
songoow added a commit to songoow/loopx that referenced this pull request Sep 14, 2026
…esive owners

loopx-project#4355 pinned `quota.py` (1118) and `support_control.py` (1015) at their current
baseline while cohesive extractions land. This retires both pins by moving two
genuinely cohesive owner groups out:

* `quota_failure_report.py` (273) owns what gets logged, what the operator sees,
  and how a rejected request is reported without inventing success.
* `support_control_chat.py` (155) owns the chat/dashboard parser registration.

`quota.py` and `support_control.py` drop to 923 and 899 lines, both back under
the default 1000-line budget, so the temporary pins are removed from the
module-size smoke.

Review follow-ups on the previous head:

* Deleted two unused settlement-identity helpers
  (`_heartbeat_receipt_settlement_bindings`,
  `_effective_spend_turn_instance_id`) that had been copied into the new module
  while the live definitions stayed in `quota.py`. They had no caller, and a
  second copy of the quota settlement identity rule would drift on the next
  change to it. Their now-unused imports went with them.
* Moved the `support_control_chat` import back into the module import block;
  it sat after `SUPPORT_CONTROL_COMMANDS`, which Ruff reported as `E402`.

Verified: the module-size, support-control and control-plane modularization
smokes pass; `chat`, `dashboard` and `quota` parse their arguments; the
cli_commands suite is 72/72; the quota failure path renders unchanged; Ruff is
clean on all four files.

Signed-off-by: song <liusongstep@gmail.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