Skip to content

fix: Unify Schwab operational error notification bodies - #676

Draft
Pigbibi wants to merge 1 commit into
mainfrom
fix/unify-schwab-notification-format
Draft

Pigbibi wants to merge 1 commit into
mainfrom
fix/unify-schwab-notification-format

Conversation

@Pigbibi

@Pigbibi Pigbibi commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

AI assistance

OpenAI Codex (GPT-6.1 Sol). Independent review is pending with the established review-and-merge bot.

What changed

Use one bilingual asset-management error body for Schwab cycle errors with the unified flag on or off, attention alerts, receipt checks, candidate-coverage warnings, and the runtime guard. Retain unknown order state instead of inferring that no order was submitted. Exclude raw dashboard/account/provider text from the delivered body.

Preserve approved-gate classification, routine candidate deferral, execution results, existing incident reservations, and delivery acknowledgement semantics. Reset the display context on exceptions and isolate concurrent workers.

How verified

  • Full offline suite: 5174 passed, 1 skipped; 403 subtests passed.
  • Focused frozen-dependency checks: 110 passed; 4 subtests passed.
  • Eight adverse tests failed against the exact baseline and passed after the patch, including flag on/off redaction, unsafe evidence, failed-send cleanup, and concurrent display contexts.
  • Ruff, frozen shared artifact verification, documentation check, and staged diff whitespace check passed. Documentation check reports one existing README advisory and no blocking findings.
  • Initial validation encountered root filesystem inode exhaustion. A memory-backed attempt also encountered executable-file restrictions. The successful full run used a normal executable temporary directory after inode availability recovered.

Why

The producer already defers ordinary cycles, but its errors and monitor paths still used different titles and could fall back to legacy account dashboards. This implements only step 5 of the approved notification plan.

Risk

High: runtime notification presentation paths. No execution or financial gate changes. No production settings, switch, Secret, IAM, workflow, deployment, label, or merge changes. Existing ACK and restart behavior is retained; no new retry path is introduced. Runtime adoption and authentic delivery remain unproved.

Shared contract pin follow-up

The step-1 branch fix/notify-unify-1-shared-contract had no published open PR at the readback before this publication. This patch implements the plan's fixed body using the current frozen QPK localization/redaction helpers. It does not hand-edit vendor snapshots or change dependency pins. Follow up with the published step-1 formatter and its exact dependency revision through the existing synchronization path; this PR does not claim that the new shared formatter is pinned.

Publication checks

Complete tracked candidate tree: publication-check/2.0-advisory, build 83d9d1130377, advisory exit 0; 1678 findings across 1663 matching lines. This advisory does not change native CI or review gates. The reviewed diff contains no real credentials. PR text before this evidence section: 0 matches. First 20 complete-tree matches below are masked by the shared checker/display masker.

repo/.env.example:9: SCHWAB_API_KEY=<<HOST>>
repo/.env.example:10: SCHWAB_APP_SECRET=<<HOST>>
repo/.env.example:15: TELEGRAM_TOKEN=<<HOST>>
repo/.env.example:44: STRATEGY_PLUGIN_ALERT_TELEGRAM_BOT_TOKEN=<<HOST>>
repo/.github/CODEOWNERS:9: /.env.example @<PROJECT_ID>
repo/.github/CODEOWNERS:10: /.github/CODEOWNERS @<PROJECT_ID>
repo/.github/CODEOWNERS:11: /application/account_new_risk_gate_support.py @<PROJECT_ID>
repo/.github/CODEOWNERS:12: /application/execution_claim.py @<PROJECT_ID>
repo/.github/CODEOWNERS:13: /application/execution_event_accounting.py @<PROJECT_ID>
repo/.github/CODEOWNERS:14: /application/execution_intent_continuity.py @<PROJECT_ID>
repo/.github/CODEOWNERS:15: /application/execution_kernel_adapter.py @<PROJECT_ID>
repo/.github/CODEOWNERS:16: /application/execution_receipt_adapter.py @<PROJECT_ID>
repo/.github/CODEOWNERS:17: /application/execution_service.py @<PROJECT_ID>
repo/.github/CODEOWNERS:18: /application/offline_execution_event_acceptance.py @<PROJECT_ID>
repo/.github/CODEOWNERS:19: /application/paper_execution_admission.py @<PROJECT_ID>
repo/.github/CODEOWNERS:20: /application/paper_execution_command_consumer.py @<PROJECT_ID>
repo/.github/CODEOWNERS:21: /runtime_execution_policy.py @<PROJECT_ID>
repo/.github/CODEOWNERS:22: /scripts/execution_report_heartbeat.py @<PROJECT_ID>
repo/.github/CODEOWNERS:23: /scripts/inspect_schwab_token_secret_readiness.py @<PROJECT_ID>
repo/.github/CODEOWNERS:24: /scripts/run_offline_execution_event_acceptance.py @<PROJECT_ID>

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