Commit Graph

564 Commits

Author SHA1 Message Date
mindesbunister
e8ddd74846 Merge pull request #11 from mindesbunister/copilot/add-drift-market-discovery-script
Add Drift market discovery script for finding market indices and oracle addresses
2025-12-05 15:49:12 +01:00
mindesbunister
51b63f4a35 critical: Fix service initialization - start services BEFORE validation
CRITICAL BUG DISCOVERED (Dec 5, 2025):
- validateOpenTrades() returns early at line 111 when no trades found
- Service initialization (lines 59-72) happened AFTER validation
- Result: When no open trades, services NEVER started
- Impact: Stop hunt tracker, smart validation, blocked signal tracking all inactive

ROOT CAUSE:
- Line 43: await validateOpenTrades()
- Line 111: if (openTrades.length === 0) return  // EXIT EARLY
- Lines 59-72: Service startup code (NEVER REACHED)

FIX:
- Moved service initialization BEFORE validation
- Services now start regardless of open trades count
- Order: Start services → Clean DB → Validate → Init Position Manager

SERVICES NOW START:
- Data cleanup (4-week retention)
- Blocked signal price tracker
- Stop hunt revenge tracker
- Smart entry validation system

This explains why:
- Line 111 log appeared (validation ran, returned early)
- Line 29 log appeared (function started)
- Lines 59-72 logs NEVER appeared (code never reached)

Git commit SHA: TBD
Deployment: Requires rebuild + restart
2025-12-05 15:43:46 +01:00
copilot-swe-agent[bot]
86b69ff7c0 fix: Improve enum handling robustness in discover-drift-markets script
Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 14:43:06 +00:00
mindesbunister
a2f32eceac debug: Add logging to trace instrumentation execution 2025-12-05 15:38:31 +01:00
copilot-swe-agent[bot]
e9472175ba feat: Add Drift market discovery script for finding market indices and oracle addresses
Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 14:38:16 +00:00
mindesbunister
526a40d1ae fix: Correct indentation for stop hunt and smart validation startup
- Lines 68-72 had only 2 spaces indent (outside try block)
- Services were executing AFTER catch block
- Fixed to 4 spaces (inside try block)
- Now stop hunt tracker, blocked signal tracker, smart validation will initialize properly
2025-12-05 15:34:01 +01:00
copilot-swe-agent[bot]
830c08dfc7 Initial plan 2025-12-05 14:30:48 +00:00
mindesbunister
c0da602917 fix: TypeScript error - use undefined instead of null for signalQualityVersion 2025-12-05 15:25:52 +01:00
mindesbunister
1efd9bf577 Merge pull request #10 from mindesbunister/copilot/fix-instrumentation-hook-issue
fix: Enable Next.js instrumentation hook for startup services
2025-12-05 15:22:48 +01:00
mindesbunister
0bba1a6739 fix: Remove v9 label from 1-minute data collection
- 1-minute data is pure market sampling, not trading signals
- signalQualityVersion now null for timeframe='1'
- Other timeframes still labeled with v9
- Prevents confusion in analytics/reporting
2025-12-05 15:21:53 +01:00
copilot-swe-agent[bot]
5711fc2fec fix: Enable Next.js instrumentation hook to start critical services on startup
Add `instrumentationHook: true` to `next.config.js` experimental section.

This fixes a critical bug where the instrumentation.ts file was not being
executed on server startup, causing all startup services to not run:
- Stop Hunt Revenge Tracker (93 revenge opportunities missed)
- Position Manager (no monitoring of open trades)
- Ghost Position Cleanup
- Data Cleanup Service
- Blocked Signal Tracking
- Smart Validation Queue
- Database Sync Validator

The instrumentation.ts file existed and contained proper initialization code,
but Next.js requires explicit opt-in via the experimental.instrumentationHook
flag to enable this feature.

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 14:21:16 +00:00
copilot-swe-agent[bot]
0a768e2f5c Initial plan 2025-12-05 14:10:51 +00:00
mindesbunister
1b45d879d0 Merge pull request #9 from mindesbunister/copilot/fix-analytics-dashboard-filtering
Add indicator version filtering to analytics optimization dashboard
2025-12-05 15:10:34 +01:00
copilot-swe-agent[bot]
4f913a7ab8 feat: Add indicator version filtering to analytics dashboard
- Add version dropdown selector (v9, v8, v6, v5, all) to frontend
- Update backend API to accept ?version= query parameter
- Add version filter to all 5 broken SQL queries using Prisma parameterized queries
- Update Data Collection Status to use selected version instead of hardcoded v8
- Add version context to all recommendations
- Add URL encoding for version parameter (security best practice)
- Validate version parameter against whitelist (SQL injection protection)

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 14:01:41 +00:00
copilot-swe-agent[bot]
9fdabb20ae Analysis complete - begin implementing version filter fix
Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 13:48:33 +00:00
copilot-swe-agent[bot]
8e527cafa9 Initial plan 2025-12-05 13:43:24 +00:00
mindesbunister
d49e0feb5f docs: Add mandatory npm test requirement before Position Manager deployment
- Added STEP 1: Run tests BEFORE deployment (113 tests in ~30s)
- Added STEP 2: Validate with test trade AFTER deployment
- Why mandatory: Catch bugs (tokens vs USD, false TP1, wrong SL) before real money loss
- Tests prevent Common Pitfalls #24, #43, #45, #52, #54, #67 recurrence
- DO NOT deploy if tests fail - fix issue or update tests first
2025-12-05 14:20:32 +01:00
mindesbunister
389bcd6f4c Merge remote-tracking branch 'github/master' 2025-12-05 13:49:00 +01:00
mindesbunister
c41d46b001 Merge pull request #8 from mindesbunister/copilot/add-feature-discovery-section
Add "DO I ALREADY HAVE THIS?" Feature Discovery Section
2025-12-05 13:47:58 +01:00
mindesbunister
99bfcb9b92 Merge pull request #7 from mindesbunister/copilot/fix-npm-audit-vulnerabilities
fix: Resolve npm audit security vulnerabilities
2025-12-05 13:47:34 +01:00
copilot-swe-agent[bot]
98a68ae357 docs: Add "DO I ALREADY HAVE THIS?" Feature Discovery section
Added comprehensive feature discovery section to copilot-instructions.md:
- Quick Reference Table: 9 common scenarios with existing features
- Quick Search Commands: bash commands for feature discovery
- Feature Discovery by Category: 6 categories with 30+ features
- Decision Flowchart: 5-step verification process
- Historical Examples: why each feature was built

This helps users/AI agents discover existing features before rebuilding.

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 12:39:19 +00:00
copilot-swe-agent[bot]
2d2510f074 Initial plan 2025-12-05 12:34:40 +00:00
mindesbunister
856ccabe87 config: Remove Solana leverage override - use adaptive leverage system
- Commented out SOLANA_LEVERAGE=5 fixed override
- Adaptive leverage now applies to all SOL trades
- Quality ≥95 LONG 90 SHORT → 10x leverageor
- Quality 90-94 LONG or 80-89 SHORT → 5x leverage
- Expected: Higher leverage on high-confidence signals
2025-12-05 11:06:53 +01:00
mindesbunister
d7d8369cc7 fix: Correct BlockedSignal data contamination numbers
- Only 31 records from multi-timeframe alerts (not 11,429)
- 11,398 records are 1-minute data (kept as DATA_COLLECTION_ONLY)
- Total marked as OLD_V9_VERSION: 31 (15min/1H/4H/Daily only)
2025-12-05 10:40:02 +01:00
mindesbunister
eefee98818 docs: Document BlockedSignal data contamination from old v9 alerts
- Discovery: All TradingView alerts (5min/15min/1H/4H/Daily) attached to OLD v9 version
- Impact: 11,429 records from wrong indicator settings (confirmBars=0 vs current)
- Solution: Marked as DATA_COLLECTION_OLD_V9_VERSION to prevent analysis contamination
- Exception: 1-minute data (11,398) kept as DATA_COLLECTION_ONLY (unaffected)
- Fresh data from corrected alerts will use DATA_COLLECTION_ONLY going forward
- Old data preserved for historical reference, clearly marked
2025-12-05 10:37:01 +01:00
mindesbunister
017b5b5ff2 feat: Create v10 indicator - hybrid of v8 patience + v9 MA gap
V10 CONCEPT: Best of both worlds
- v8's proven patience (2-bar confirm, 0.8% flip threshold) that delivered 63.6% WR
- v9's MA gap convergence quality bonus (without the broken 0-bar confirm)

KEY RESTORATIONS FROM v8 (what made it work):
- confirmBars: 2 (not v9's 0) - Wait after flip to confirm trend
- flipThreshold: 0.8% (not v9's 0.5%) - Real breakouts, not noise
- adxMin: 18 (not v9's 21) - Strong trend without over-filtering
- longPosMax: 85% (not v9's 75%) - Can catch top breakouts
- shortPosMin: 15% (not v9's 20%) - Can catch bottom breakouts
- volMin: 0.7 (not v9's 1.0) - Accepts moderate volume
- RSI short filter: 30-70 RESTORED (v9 removed it incorrectly)

NEW FROM v9 (quality enhancement):
- MA50 and MA200 visualization on chart
- MA gap quality bonus (optional filter)
- MAGAP field in alert message for tracking

PERFORMANCE BASELINE:
- v8: 11 trades, 63.6% WR, +$325.76 (Nov 19-24)
- v9: 9 trades, 33.3% WR, -$373.88 (Nov 26-Dec 5)
- v10: TBD - expect v8-level performance with MA quality edge

WHY THIS SHOULD WORK:
- v8's patience filters flip-flops (2-bar confirm + 0.8% threshold)
- v9 failed because it removed patience (0-bar confirm, 0.5% threshold)
- v10 restores patience + adds MA quality gate
- MA gap convergence = trending setup confirmation

File: workflows/trading/moneyline_v10_patience_with_ma_gap.pinescript
Alert format: Includes MAGAP field for quality tracking in database
2025-12-05 10:15:39 +01:00
mindesbunister
8ec4eb0782 docs: Add Common Pitfall #72 - MFE data unit mismatch
CRITICAL LESSON LEARNED (Dec 5, 2025):
Document the data analysis disaster caused by MFE/MAE stored in mixed units.

What Happened:
- Analyzed blocked vs executed signals to improve win rate
- SQL showed executed signals: 20.15% avg MFE (appeared excellent)
- Implemented "optimizations" based on this data:
  * Tighter ATR multipliers (2.0→1.5, 4.0→3.0)
  * Higher TP1 close (60%→75%)
  * Increased leverage (1×→5×)
- User questioned: Why doesn't TP1 hit if it's 20% MFE?
- Investigation: Only 2/11 trades reached TP1 price target
- Root cause: Old records stored MFE in DOLLARS, new in PERCENTAGES
- TRUE MFE: 0.76% (long), 1.20% (short) - NOT 20%!
- 26× inflation due to unit mismatch

Why This Matters:
- This is a REAL MONEY system - wrong analysis = wrong trades = losses
- MFE/MAE used for critical decisions (exit timing, quality validation)
- Agent made "data-driven" optimizations on 26× inflated data
- All changes had to be reverted (commits a67a338, f65aae5)

MANDATORY SQL Pattern:
- ALWAYS filter by createdAt >= '2025-11-23' for MFE/MAE queries
- OR recalculate from prices (maxFavorablePrice - entryPrice)
- NEVER trust raw AVG(maxFavorableExcursion) without date filter

Prevention:
- Verify stored vs calculated values before ANY MFE/MAE analysis
- Check sample of recent vs old records to detect unit changes
- Document data format changes in Common Pitfalls immediately

Related:
- Common Pitfall #54: Original MFE/MAE units bug (Nov 23, 2025)
- Revert commit: a15f17f
- Incorrect optimization: a67a338, f65aae5
2025-12-05 10:07:06 +01:00
mindesbunister
a15f17f489 revert: Undo exit strategy optimization based on corrupted MFE data
CRITICAL DATA BUG DISCOVERED (Dec 5, 2025):
Previous commits a67a338 and f65aae5 implemented optimizations based on
INCORRECT analysis of maxFavorableExcursion (MFE) data.

Problem: Old Trade records stored MFE in DOLLARS, not PERCENTAGES
- Appeared to show 20%+ average favorable movement
- Actually only 0.76% (long) and 1.20% (short) average movement
- 26× inflation of perceived performance due to unit mismatch

Incorrect Changes Reverted:
- ATR_MULTIPLIER_TP1: 1.5 → back to 2.0
- ATR_MULTIPLIER_TP2: 3.0 → back to 4.0
- ATR_MULTIPLIER_SL: 2.5 → back to 3.0
- TAKE_PROFIT_1_SIZE_PERCENT: 75 → back to 60
- LEVERAGE: 5 → back to 1
- Safety bounds restored to original values
- TRAILING_STOP_ATR_MULTIPLIER: back to 2.5

REAL FINDINGS (after data correction):
- TP1 orders ARE being placed (tp1OrderTx populated)
- TP1 prices NOT being reached (only 2/11 trades in sample)
- Recent trades (6 total): avg MFE 0.74%, only 2/6 reached TP1
- Problem is ENTRY QUALITY, not exit timing
- Quality 90+ signals barely move favorably before reversing

See Common Pitfall #54 - MFE data stored in mixed units
Need to filter by createdAt >= '2025-11-23' for accurate analysis
2025-12-05 10:05:39 +01:00
copilot-swe-agent[bot]
df109e9b74 fix: Restore typescript dev dependency flag in package-lock.json
- Add back "dev": true property for typescript in package-lock.json
- Ensures typescript stays as devDependency (not bundled in production)
- Build verified successful after change

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 09:01:56 +00:00
mindesbunister
f65aae5eb7 docs: Document exit strategy optimization (Dec 5, 2025)
Updated copilot-instructions.md with:
- New ATR multipliers (1.5×/3.0×/2.5× vs 2.0×/4.0×/3.0×)
- Rationale: 0% TP hit rate despite 17-24% avg MFE
- Problem: Targets hit then reversed before monitoring loop detected
- Solution: Tighter targets catch moves before reversal
- 75% close at TP1 (vs 60%) to bank profit immediately
- 25% runner (vs 40%) for extended trends with tighter trail
- Leverage 5× during testing phase

This is MANDATORY documentation update per #1 priority rule.
2025-12-05 09:54:20 +01:00
mindesbunister
a67a338d18 critical: Optimize exit strategy based on data analysis (Dec 5, 2025)
PROBLEM DISCOVERED:
- Average MFE: 17-24% (massive favorable moves happening)
- But win rate only 15.8% (we capture NONE of it)
- Blocked signals analysis: avg MFE 0.49% (correctly filtered)
- Executed signals: targets being hit but reversing before monitoring loop detects

ROOT CAUSE:
- ATR multipliers too aggressive (2x/4x)
- Targets hit during spike, price reverses before 2s monitoring loop
- Position Manager software monitoring has inherent delay
- Need TIGHTER targets to catch moves before reversal

SOLUTION IMPLEMENTED:
1. ATR Multipliers REDUCED:
   - TP1: 2.0× → 1.5× (catch moves earlier)
   - TP2: 4.0× → 3.0× (still allows trends)
   - SL: 3.0× → 2.5× (tighter protection)

2. Safety Bounds OPTIMIZED:
   - TP1: 0.4-1.0% (was 0.5-1.5%)
   - TP2: 0.8-2.5% (was 1.0-3.0%)
   - SL: 0.7-1.8% (was 0.8-2.0%)

3. Position Sizing ADJUSTED:
   - TP1 close: 60% → 75% (bank more profit immediately)
   - Runner: 40% → 25% (smaller risk on extended moves)
   - Leverage: 1x → 5x (moderate increase, still safe during testing)

4. Trailing Stop TIGHTENED:
   - ATR multiplier: 2.5× → 1.5×
   - Min distance: 0.25% → 0.20%
   - Max distance: 2.5% → 1.5%

EXPECTED IMPACT:
- TP1 hit rate: 0% → 40-60% (catch moves before reversal)
- Runner protection: Tighter trail prevents giving back gains
- Lower leverage keeps risk manageable during testing
- Once TP1 hit rate improves, can increase leverage back to 10x

DATA SUPPORTING CHANGES:
- Blocked signals (80-89 quality): 16.7% WR, 0.37% avg MFE
- Executed signals (90+ quality): 15.8% WR, 20.15% avg MFE
- Problem is NOT entry selection (quality filter working)
- Problem IS exit timing (massive MFE not captured)

Files modified:
- .env: ATR multipliers, safety bounds, TP1 size, trailing config, leverage
2025-12-05 09:53:46 +01:00
copilot-swe-agent[bot]
fcc74d5b4d fix: Resolve npm audit security vulnerabilities
- Update next from 15.5.0-15.5.6 to 15.5.7 (Critical RCE fixed)
- Update glob from 10.2.0-10.4.5 to 10.5.0 (High command injection fixed)
- Update js-yaml from 4.0.0-4.1.0 to 4.1.1 (Moderate prototype pollution fixed)
- Build verified successful after updates

Remaining unfixable vulnerabilities (transitive deps in @drift-labs/sdk):
- bigint-buffer (high) - requires breaking change to SDK
- nanoid (moderate) - requires breaking change to SDK

Security: Fixes 3 of 5 vulnerabilities, remaining are in third-party SDK

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 08:53:29 +00:00
copilot-swe-agent[bot]
2a0e5df4d5 Initial plan 2025-12-05 08:45:05 +00:00
mindesbunister
a661d3817c Merge pull request #2 from mindesbunister/copilot/add-integration-tests-position-manager
Add integration test suite for Position Manager
2025-12-05 09:32:23 +01:00
mindesbunister
b187f1dc8b Merge pull request #1 from mindesbunister/copilot/extract-common-pitfalls-documentation
docs: Extract Common Pitfalls to dedicated documentation
2025-12-05 09:12:02 +01:00
mindesbunister
aee12432f5 Merge pull request #6 from mindesbunister/copilot/document-recent-prs
docs: Document 4 undocumented PRs in copilot-instructions.md
2025-12-05 09:10:12 +01:00
copilot-swe-agent[bot]
863f10dc77 docs: Improve .gitignore fix instructions in Pitfall #72
Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 07:49:22 +00:00
copilot-swe-agent[bot]
6ee29279b7 docs: Document test infrastructure, security fix, common pitfalls reorganization, and CI/CD pipeline
MANDATORY DOCUMENTATION UPDATE (4 PRs):

1. Test Infrastructure (PR #2): 113 tests, coverage requirements, how to run
2. Security Fix (PR #3): Expanded Pitfall #72 with process details
3. Common Pitfalls (PR #1): Reorganization structure and benefits
4. CI/CD Pipeline (PR #5): 4 workflows, troubleshooting, branch protection

Restores compliance with mandatory git commit + documentation workflow
(lines 217-256 of copilot-instructions.md).

Related PRs: #1, #2, #3, #5

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 07:47:51 +00:00
mindesbunister
12212502bd docs: Document dual remote setup and post-commit hook automation
- Added DUAL REMOTE SETUP section with origin (Gitea) and github (GitHub) configuration
- Documented post-commit hook location and purpose (.git/hooks/post-commit)
- Explained auto-sync to github vs manual push to origin workflow
- Added verification commands for sync status checking
- Included automation setup details and testing confirmation
- Updated commit workflow to reflect hook behavior
- Added recent example (de77cfe test commit) to demonstrate automation
2025-12-05 08:41:58 +01:00
copilot-swe-agent[bot]
1dc5778900 Initial plan 2025-12-05 07:38:18 +00:00
mindesbunister
de77cfe5fb test: Verify GitHub auto-sync hook 2025-12-05 08:02:58 +01:00
copilot-swe-agent[bot]
e06650d055 docs: Fix pitfall count to 72 in COMMON_PITFALLS.md header
Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 00:20:51 +00:00
copilot-swe-agent[bot]
011e489c8b fix: Address code review feedback
- Added explanation for logger mocking in tests/setup.ts
- Removed test files from coverage collection in jest.config.js
- Updated tests/README.md to clarify coverage approach and remove outdated threshold reference

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 00:20:11 +00:00
copilot-swe-agent[bot]
0c76bca1cc docs: Extract Common Pitfalls to dedicated documentation
- Created docs/COMMON_PITFALLS.md with all 72 pitfalls
- Organized by severity and category for better navigation
- Added quick reference table and cross-reference index
- Reduced copilot-instructions.md from 6,575 to 3,608 lines (45%)
- Kept Top 10 critical pitfalls in main instructions
- Preserved all git commits, dates, code examples
- Updated docs/README.md with references to new doc

Benefits:
- Faster AI agent context loading
- Easier maintenance and updates
- Better searchability by category
- Clear pattern recognition for similar issues
- Maintains comprehensive knowledge base

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 00:19:16 +00:00
copilot-swe-agent[bot]
1b6297b1e2 chore: Fix .gitignore - remove test file exclusions, add coverage folder
- Removed incorrect exclusion of *.test.ts and *.test.js files
- Added coverage/ folder to .gitignore
- Removed accidentally committed coverage files

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 00:16:50 +00:00
copilot-swe-agent[bot]
4f793ec22a feat: Add integration test suite for Position Manager
- Added Jest + ts-jest configuration (jest.config.js)
- Added global test setup with mocks (tests/setup.ts)
- Added trade factory helpers (tests/helpers/trade-factory.ts)
- Added 7 test suites covering Position Manager logic:
  - tp1-detection.test.ts (13 tests)
  - breakeven-sl.test.ts (9 tests)
  - adx-runner-sl.test.ts (18 tests)
  - trailing-stop.test.ts (14 tests)
  - edge-cases.test.ts (18 tests)
  - price-verification.test.ts (13 tests)
  - decision-helpers.test.ts (28 tests)
- Added test documentation (tests/README.md)
- Updated package.json with Jest dependencies and scripts
- All 113 tests pass

Co-authored-by: mindesbunister <32161838+mindesbunister@users.noreply.github.com>
2025-12-05 00:16:12 +00:00
copilot-swe-agent[bot]
52ff787352 Initial plan 2025-12-05 00:03:51 +00:00
copilot-swe-agent[bot]
bfe74df5df Initial plan 2025-12-04 23:53:40 +00:00
mindesbunister
302511293c feat: Add production logging gating (Phase 1, Task 1.1)
- Created logger utility with environment-based gating (lib/utils/logger.ts)
- Replaced 517 console.log statements with logger.log (71% reduction)
- Fixed import paths in 15 files (resolved comment-trapped imports)
- Added DEBUG_LOGS=false to .env
- Achieves 71% immediate log reduction (517/731 statements)
- Expected 90% reduction in production when deployed

Impact: Reduced I/O blocking, lower log volume in production
Risk: LOW (easy rollback, non-invasive)
Phase: Phase 1, Task 1.1 (Quick Wins - Console.log Production Gating)

Files changed:
- NEW: lib/utils/logger.ts (production-safe logging)
- NEW: scripts/replace-console-logs.js (automation tool)
- Modified: 15 lib/*.ts files (console.log → logger.log)
- Modified: .env (DEBUG_LOGS=false)

Next: Task 1.2 (Image Size Optimization)
2025-12-05 00:32:41 +01:00
mindesbunister
cc3a0a85a0 docs: Document manual trade quality bypass requirement
User mandate: Manual Telegram trades bypass quality scoring entirely.

Documentation updates:
- Added 'Manual Trade Quality Bypass' section
- Explains user requirement for instant execution
- Documents implementation details (timeframe='manual' detection)
- Clarifies that analytics check is now advisory only
- Notes --force flag no longer needed for manual trades

Context: This is part of the mandatory documentation workflow -
every code change requires corresponding documentation update.

Related commit: 0982578 (quality bypass implementation)
Date: Dec 4, 2025
2025-12-04 19:56:54 +01:00