Technical Journal — Signal Hooks, Orders, Logs, and System Calm

What I have done

Over this session, I focused on making Egis more observable, calmer, and more explainable, without refactoring core logic.

On the Signal Hooks and Orders side, I:

  • Standardized datetime formatting (short format, GMT+7) and price formatting across Admin pages, aligning everything with the User > Bot Detail > Positions rules.
  • Simplified Admin tables by removing low-signal columns (Exchange, User, TP/SL where unnecessary) and replacing verbose text with icon-based representations.
  • Added Binance Order ID visibility and search on Admin > Orders, then extended it with an explicit admin-only repair flow to fetch missing orders from Binance when a searched ID isn’t found locally.
  • Tightened the semantics: orders remain immutable facts, repairs are explicit inserts, never silent syncs.

On the logging and audit side, I:

  • Generated multiple evidence-based log reports from laravel.log, including:
    • Signal Hook activity and outcomes
    • INFO / DEBUG / ERROR aggregation
    • A deep, order-specific forensic analysis for a Binance algo order
  • Introduced daily log rotation and separate testing logs, keeping production logs readable and tests isolated.
  • Removed high-volume, low-value DEBUG spam (Binance param dumps, precision checks, throttling noise).
  • Suppressed expected-but-noisy AuthenticationException logs to keep errors meaningful.

On the testing and safety side, I:

  • Formalized test visibility by generating a complete test inventory report.
  • Enforced a process to run Feature tests one by one, fix failures incrementally, and document outcomes directly into a Markdown report.
  • Maintained strict invariants: SQLite-only tests, no Binance calls, no accidental prod/dev DB access.

Finally, I performed a deep forensic analysis of a “failed” stop-loss order by:

  • Proving, via logs, that the order did not fail to place.
  • Separating placement success from trigger execution, which are often conflated.
  • Showing that repeated log entries were audit polling, not retries or failures.

What I have learned

  1. Most “failures” are actually observability failures.
    The stop-loss order didn’t fail — the system simply didn’t have enough structured visibility to explain why it didn’t trigger. Logs told the truth once they were read correctly.
  2. Audit noise is more dangerous than missing logs.
    Excessive DEBUG logging hid real signals. Removing noise made real anomalies easier to see without adding new code paths.
  3. Explicit repair beats silent correction.
    Allowing an admin to explicitly fetch a missing Binance order preserves immutability, auditability, and trust in the data model.
  4. Consistency creates calm UX.
    Unified price and datetime formatting across Admin and User views removed cognitive friction. The system “felt” more correct without adding features.
  5. Logs are part of the domain model.
    Once logs are treated as first-class evidence (with rotation, structure, and intent), debugging becomes reasoning, not guessing.
  6. Testing discipline is architectural, not procedural.
    SQLite-only enforcement, per-test execution, and written test inventories turn “tests” into a safety system, not a checkbox.

Closing thought

This session wasn’t about adding features.
It was about reducing ambiguity.

Egis became:

  • more explainable,
  • more auditable,
  • quieter under normal operation,
  • and more trustworthy when something goes wrong.

That’s the kind of progress that compounds.