Microsoft Outlook
Jun 19 12:18 AM
Notification: You're invited to share this calendar
Fake Microsoft Outlook calendar invite from spoofed domain with Chinese currency exchange solicitation.
Cloudflare
Jun 19 12:01 AM
[Action required] Validate dialsight.ai to renew SSL certificates
⚠ PHISHING: phishing subject pattern: 'Action required' from external sender notify.cloudflare.com
LG Account
Jun 18 7:44 PM
[LG Account] Notification of termination of the Social Login service using SNS
LG Electronics discontinuing Amazon login service for US users.
Andrew Riehle via Docusign
Jun 18 5:58 PM
Reminder: Please DocuSign: Audinate Ultimo Subscription Agreement - KanexPro
Andrew Riehle via Docusign: Reminder: Please DocuSign: Audinate Ultimo Subscription Agre
Sydnee Agent (AI)
Jun 18 5:39 PM
[Calibration Daily] 2026-06-19
Sydnee Agent (AI): [Calibration Daily] 2026-06-19
Sydnee Agent (AI)
Jun 18 5:30 PM
Sydnee algo daily — dev $-1,955 · prod $+0 · 6d window
Sydnee Agent (AI): Sydnee algo daily — dev $-1,955 · prod $+0 · 6d window
[email protected]
Jun 18 3:27 PM
ACTION REQUIRED: Your ticket vouchers are pending
⚠ PHISHING: phishing subject pattern: 'ACTION REQUIRED' from external sender vacationoffer.com
Jun 18 2:37 PM
Check Remit Payment Service Request - Action Alert [Ref ID f9ce510727c903d15b6458f566e10120f9e6f21b
Fake DocuSign alert impersonating kanexpro.com; credential theft attempt.
Aarti Gupta
Jun 18 2:24 PM
Fw: Kanex Pro Bank Details
Aarti Gupta: Fw: Kanex Pro Bank Details
Aarti Gupta
Jun 18 1:02 PM
Re: Request for More Info: EXT-USBC2XI-100M - Dual-Host USB 3.2 Gen 1 Extender over CAT6a — USB-C & USB-B Inputs, 100m/328ft
Aarti Gupta: Re: Request for More Info: EXT-USBC2XI-100M - Dual-Host USB
CashPro Alerts
Jun 18 1:01 PM
CashPro: ACH Payments - Processed by Bank
ACH payment processed for Kanex Pro account via CashPro.
Linda
Jun 18 11:56 AM
Limited Time Discount: 30% OFF Premium RGB Gaming Keyboard Set
Unsolicited gaming keyboard promotion with bulk discount offer.
Linda
Jun 18 11:56 AM
Limited Time Discount: 30% OFF Premium RGB Gaming Keyboard Set
Gaming keyboard bulk discount promotion from external vendor.
Linda
Jun 18 11:55 AM
Limited Time Discount: 30% OFF Premium RGB Gaming Keyboard Set
Gaming keyboard promotional offer with bulk discount.
Interactive Brokers
Jun 18 11:47 AM
Annual Meeting Notice: Bit Digital, Inc. (310321847840)
Bit Digital annual meeting notice; voting deadline July 28, 2026.
Attia, Demetrius R
Jun 18 11:38 AM
RE: Quick intro
Goldman Sachs banker offering network access and potential investment banking connections.
Mahroo Afrooz
Jun 18 11:35 AM
RE: SP-HDCAT1X4
Vendor inquiry: ADI doesn't carry SP-HDCAT1X4 product; follow-up needed.
Christina Knudsen
Jun 18 11:32 AM
Re: Kanex Pro Bank Details
Christina Knudsen: Re: Kanex Pro Bank Details
Christina Knudsen
Jun 18 11:28 AM
Re: SP-HDCAT1X4
Christina Knudsen: Re: SP-HDCAT1X4
Christina Knudsen
Jun 18 11:20 AM
Re: Email Template For New Audio Dante Series
Christina Knudsen: Re: Email Template For New Audio Dante Series
eBay
Jun 18 11:16 AM
Up to 50% off eBay Refurbished finds, Kelvin
eBay: Up to 50% off eBay Refurbished finds, Kelvin
[email protected]
Jun 18 11:11 AM
Blue Shield of California AutoPay setup confirmation
Blue Shield AutoPay enrollment confirmation for subscriber account.
[email protected]
Jun 18 11:09 AM
Blue Shield of California Payment Processed
Blue Shield CA payment of $102 processed successfully.
Aarti Gupta
Jun 18 11:08 AM
Re: Kanex Pro Bank Details
Aarti Gupta: Re: Kanex Pro Bank Details
TAnthony Patino
Jun 18 11:08 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino asks to check with Candy re: Edison utility bills.
Christina Knudsen
Jun 18 10:57 AM
Product question
Christina Knudsen: Product question
TAnthony Patino
Jun 18 10:53 AM
[Teams oneOnOne] (Teams DM)
Teams DM acknowledgment from Anthony Patino.
TAnthony Patino
Jun 18 10:53 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino confirms he hasn't seen recent items.
TAnthony Patino
Jun 18 10:52 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino asking about missing statement via Teams.
Kevin Price
Jun 18 10:23 AM
KanexPro
Kevin Price: KanexPro
Mahroo Afrooz
Jun 18 10:19 AM
RE: SP-HDCAT1X4
MetroBit partner requesting pricing after submitting partnership form.
Kevin Price
Jun 18 10:17 AM
KanexPro
Kevin Price: KanexPro
Aarti Gupta
Jun 18 10:12 AM
Re: SP-HDCAT1X4
Aarti Gupta: Re: SP-HDCAT1X4
Zendesk Team
Jun 18 10:03 AM
Important Zendesk update: Password policy security updates for team members
Fake Zendesk password update targeting KanexPro domain credentials.
Aarti Gupta
Jun 18 9:59 AM
Re: Email Template For New Audio Dante Series
Aarti Gupta: Re: Email Template For New Audio Dante Series
CashPro Alerts
Jun 18 9:47 AM
CashPro: ACH Payments - Pending Approval
ACH payment pending approval for Kanex Pro requires immediate review.
TAnthony Patino
Jun 18 9:46 AM
[Teams oneOnOne] (Teams DM)
Payment approval needed for legal retainer to Vatani Heinz Law APC.
IBKR FYI
Jun 18 9:46 AM
FYI: Upcoming Exchange Holidays
NASDAQ, NYSE, MIAX closed June 19 for exchange holiday.
Mahroo Afrooz
Jun 18 9:38 AM
SP-HDCAT1X4
Metrobit requesting quote for KanexPro HDMI splitter product.
David McDonough
Jun 18 9:14 AM
RE: KanexPro/Tower Bi-Weekly meeting follow up
David McDonough: RE: KanexPro/Tower Bi-Weekly meeting follow up
Matt Pourcho and Anthony DeLorenzo
Jun 18 9:09 AM
Offers Due June 30th: 100% NNN Leased Industrial | 5.6 WALT | San Diego, CA
⚠ PHISHING: employee impersonation: display name matches 'anthony' but sender is cbre.com
Christina Knudsen
Jun 18 9:02 AM
Re: KanexPro/Tower Bi-Weekly meeting follow up
Christina Knudsen: Re: KanexPro/Tower Bi-Weekly meeting follow up
IBKR FYI
Jun 18 9:02 AM
FYI: Upcoming Exchange Holidays
Exchange holiday notification for NASDAQ/MIAX on June 19.
David McDonough
Jun 18 8:36 AM
RE: KanexPro/Tower Bi-Weekly meeting follow up
David McDonough: RE: KanexPro/Tower Bi-Weekly meeting follow up
Arlie Kearney via Aeries Communications
Jun 18 8:24 AM
Class of 2029 – Lancer Days Information
School announcement about sophomore year Lancer Days information for Class of 2029.
Arlie Kearney via Aeries Communications
Jun 18 8:16 AM
Class of 2027 Seniors – Lancer Days & Senior Portrait Information
Sunny Hills High School senior portrait and Lancer Days information for Class of 2027.
Bart van Vreedendaal (KlankBart)
Jun 18 7:49 AM
PO2026061801
Purchase order for HDMI splitter and Dante audio interface equipment.
Emma Roberts
Jun 18 6:24 AM
RE: 40 hours free AI development for KanexPro
Emma Roberts (Data Doers) proposing call next week re: 40 hours free AI dev.
Interactive Brokers Client Services
Jun 18 5:13 AM
Message Center Notification
Interactive Brokers account notification about ETF product description.
IBKR FYI
Jun 18 5:07 AM
FYI: Option Expiration Notification
Option expiration notification for MU positions expiring today.
Sydnee nightly — persistence audit 2026-06-05 — 0P0 2P1 2R
AI verdict
employee
high
· confidence: high
· by internal-exempt
“Sydnee Agent (AI): Sydnee nightly — persistence audit 2026-06-05 — 0P0 2P1 2R”
Reasoning: @sydnee.ai is a protected domain — hard exemption
Sydnee nightly — persistence audit — 2026-06-05
P0 findings: 0 P1 findings: 2 Risks: 2
- Area: Persistence
- Bugs found (P0 / P1): 0 / 2 (both carried — no new bugs tonight)
- Risks noted: 2 (both carried)
---
Full report (dev branch): https://github.com/kanex1/sydnee.signals/blob/dev/docs/audit_2026-06-05_persistence.md
Reply FROM [email protected] to [email protected] to request fixes, e.g.:
"code_task on sydnee-signals-dev: apply fix for the P0 about RVOL threshold in bot.py"
Sydnee Agent will propose + you APPROVE (or plain 'approve') + auto-push to dev.
--- Full audit below (first 12 KB) ---
# Nightly Audit 2026-06-05 — PERSISTENCE
## Summary
- Area: Persistence
- Bugs found (P0 / P1): 0 / 2 (both carried — no new bugs tonight)
- Risks noted: 2 (both carried)
---
## Findings
### BUG [P1] CARRIED (from 2026-06-04): `_tv_scale_state` not persisted — scale-in silently abandoned on restart
**File:** `bot.py:4201-4202` (init), `bot.py:4230` (only in-memory write)
**Evidence:**
```python
# bot.py:4201-4202 — resets to {} on every restart
if not hasattr(self, "_tv_scale_state"):
self._tv_scale_state = {}
# bot.py:4230 — in-memory write only; no Redis setex, no DB column
self._tv_scale_state[sym] = st
# bot.py:4026-4031 — _scale_active gate requires sym in _tv_scale_state
_scale_active = (
os.environ.get("TV_BXT_SCALE_IN", "").lower() in ("1", "true", "yes")
and hasattr(self, "_tv_scale_state")
and sym in self._tv_scale_state # ← False on restart
...
and self._tv_scale_state[sym].get("slots_done", 10) < 10)
if not _scale_active:
return # → slots 2-10 silently abandoned
```
**Status vs 2026-06-04 audit:** No fix shipped. Slot-advance-on-skip commit (ec7ed26) makes the counter even more important: `st["slots_done"] = slot_n` now increments on EVERY call (fill or skip), so a restart at slot 5 loses all slot progress AND the `parent_trade_id` needed to resume.
**Impact:** `TV_BXT_SCALE_IN=true` on dev as of 2026-06-04 re-enable. Any mid-session restart leaves position at whatever fraction of 10 slots had filled. Parent trade is correctly persisted in DB (shares/entry_price updated via `_update_trade_field`); only the scale-in *control plane* is lost. Safe but undersized.
**Fix (unchanged from 2026-06-04):**
```python
# At bot.py:4230 — persist after every mutation:
self._tv_scale_state[sym] = st
if getattr(self, "_regime_redis", None):
try:
self._regime_redis.setex(
f"tv_scale_state:{sym}", 660,
json.dumps(st))
except Exception:
pass
# At bot.py:4201-4202 — restore on init:
if not hasattr(self, "_tv_scale_state"):
self._tv_scale_state = {}
_r = getattr(self, "_regime_redis", None)
if _r:
for _sym in self._tv_bxt_active_syms():
_raw = _r.get(f"tv_scale_state:{_sym}")
if _raw:
try:
self._tv_scale_state[_sym] = json.loads(
_raw.decode() if isinstance(_raw, bytes) else _raw)
except Exception:
pass
```
---
### BUG [P1] CARRIED (from 2026-05-28): `tv_bxt_signal` no-TTL + `_tv_confirm_state` not persisted
**File:** `bot.py:12533-12534` (no-TTL set), `bot.py:4113-4114` (`_tv_confirm_state`)
**Evidence:**
```python
# bot.py:12533-12534 — plain r.set(), no TTL (unchanged since filing)
r.set(f"tv_bxt_signal:{sym}", sig)
r.set(f"tv_bxt_signal_ts:{sym}", str(int(time.time())))
# bot.py:4113-4114 — flow-confirm retry counter, in-memory only
if not hasattr(self, "_tv_confirm_state"):
self._tv_confirm_state = {} # ← resets to {} on every restart
```
**Status vs 2026-06-04 audit:** Unchanged. `TV_BXT_SCALE_IN=true` on dev bypasses `_tv_confirm_state` for the scale path; concern is still active for the single-shot flow-confirm path when scale-in is off. No-TTL `tv_bxt_signal:{sym}` remains active for both paths: a stale signal survives indefinitely and can trigger a fresh 10-slot scale window (or 10-attempt confirm window) on a signal that is 15+ minutes old.
**Impact / Fix:** Unchanged from 2026-05-28 filing. Apply `r.setex(f"tv_bxt_signal:{sym}", 900, sig)` and `r.setex(f"tv_bxt_signal_ts:{sym}", 900, ...)` at bot.py:12533-12534. Persist `_tv_confirm_state` to Redis with TTL.
---
### RISK: `_fri_flat_queued` not persisted — RTH force-flat dedup missed on restart (CARRIED from 2026-05-22 → 2026-05-28 → 2026-06-04)
**File:** `bot.py:4610-4615`
**Evidence:**
```python
if getattr(t, '_fri_flat_queued', False):
continue
t._fri_flat_queued = True # ← no _update_trade_field
self._deferred_closes.append((t, f"Friday FLAT: ..."))
```
**Status:** Unchanged. `is_open` guard in `_close_trade` provides secondary protection; narrow window (Friday only, 3:50–3:51 ET); no financial harm observed on paper so far.
**Fix:** Add `fri_flat_queued BOOLEAN DEFAULT FALSE` to `ensure_trade_state_columns`; persist with `_update_trade_field(t.trade_id, fri_flat_queued=True)` at line 4615; restore in `_load_trades_from_db` alongside `fri_ah_close_queued`.
---
### RISK: `_bxt1m_last_bar` not persisted — BXt-1m dedup replays last bar on restart (CARRIED from 2026-05-22 → 2026-05-28 → 2026-06-04)
**File:** `bot.py:3915-3916`, `bot.py:4431`
**Evidence:**
```python
# bot.py:3915-3916 — always empty on restart
if not hasattr(self, "_bxt1m_last_bar"):
self._bxt1m_last_bar = {}
# bot.py:4431 — in-memory only
self._bxt1m_last_bar[sym] = idx[-1] # no Redis write
```
**Status:** Unchanged. Risk is dormant if `BXT_1M_NAKED_SYMBOLS` is unset (empty by default); dev currently sets it.
**Fix (unchanged):** `_regime_redis.setex(f"bxt1m_last_bar:{sym}", 120, str(last_ts))` at bot.py:4431; restore on init.
---
## OK (checked, working or recently fixed)
**Recent commits reviewed — 3b0d6ac (scale-in redesign), ec7ed26 (slot-advance-on-skip), 82c80de (RTH pre-market re-open), 6c73277 (strategy docs), 44aec76 (DISABLE_DAILY_LOSS_LIMIT):**
- **`_tv_scale_add_shares` DB write** — `parent.shares` and `parent.entry_price` mutated via `_update_trade_field(parent.trade_id, shares=new_shares, entry_price=...)` (bot.py:4345-4347). Correct columns, correct call site. ✓
- **Slot-advance-on-skip (ec7ed26)** — `st["slots_done"] = slot_n` at bot.py:4258. Mutates the dict in-place (same reference as `_tv_scale_state[sym]`); in-memory state is consistent. Only persistence gap is the existing P1 that `_tv_scale_state` is never written to Redis. ✓ (no new issue)
- **OBV-trail close path (bot.py:4002-4006)** — missing `_tv_scale_state.pop(sym, None)` vs Friday EOD / FLAT / close-opposite paths. Harmless: `_tv_bxt_signal_clear` at line 4006 deletes both Redis signal keys; next TV webhook re-initializes state via sig_ts mismatch at line 4211. No trading impact. ✓
- **TV_BXT_RTH_ONLY pre-market re-open (82c80de)** — pure `_in_session` window change (`240 <= _t_min < 960`). No new in-memory state. ✓
- **DISABLE_DAILY_LOSS_LIMIT (44aec76)** — pure env-flag wrap in `core/risk.py`. No new state or persistence concern. ✓
- **`_tv_confirm_state` bypass under scale-in** — confirmed: `TV_BXT_SCALE_IN=true` path hits `_tv_scale_step` at line 4076 and returns without reaching the `_tv_confirm_state` block at 4112. Code path is exclusive. ✓
- **`sydnee:paused` no-TTL (bot.py:13532)** — intentional. Startup at line 17737-17738 restores pause state from Redis; no TTL correct so pause persists across restarts. ✓
- **`consec_losses` rebuild** — `_rebuild_consec_losses()` called at bot.py:825, restores from DB tail of closed trades. No regression. ✓
- **`obv_trail:{trade_id}` Redis TTL** — `r.setex(..., 604800, ...)` at bot.py:3812. 7-day TTL, restored in `_load_trades_from_db` at lines 1173-1192. ✓
- **All `_update_trade_field` columns** — all 7 items confirmed by 8845a24 (oracle TTL, consec_losses, tick_peak, tick_fire_ts, fri_ah_close_queued, signal_price/time) plus force_trim_pending/2, pending_reversal, extreme_since_trim, eod_trimmed, obv_be_applied — all present in `ensure_trade_state_columns` and restored in `_load_trades_from_db`. No regressions from recent commits. ✓
- **`_tv_block_logged` dict** — cosmetic only (dashboard log dedup); no trading impact on restart. ✓