Jan 20, 11-12 PM (34)
Jan 20, 12-1 PM (82)
Jan 20, 1-2 PM (73)
Jan 20, 2-3 PM (31)
Jan 20, 3-4 PM (32)
Jan 20, 4-5 PM (40)
Jan 20, 5-6 PM (36)
Jan 20, 6-7 PM (11)
Jan 20, 7-8 PM (20)
Jan 20, 8-9 PM (17)
Jan 20, 9-10 PM (16)
Jan 20, 10-11 PM (31)
Jan 20, 11-12 AM (22)
Jan 21, 12-1 AM (4)
Jan 21, 1-2 AM (5)
Jan 21, 2-3 AM (2)
Jan 21, 3-4 AM (4)
Jan 21, 4-5 AM (8)
Jan 21, 5-6 AM (3)
Jan 21, 6-7 AM (6)
Jan 21, 7-8 AM (16)
Jan 21, 8-9 AM (36)
Jan 21, 9-10 AM (58)
Jan 21, 10-11 AM (54)
Jan 21, 11-12 PM (52)
Jan 21, 12-1 PM (42)
Jan 21, 1-2 PM (32)
Jan 21, 2-3 PM (36)
Jan 21, 3-4 PM (26)
Jan 21, 4-5 PM (18)
Jan 21, 5-6 PM (11)
Jan 21, 6-7 PM (14)
Jan 21, 7-8 PM (27)
Jan 21, 8-9 PM (27)
Jan 21, 9-10 PM (6)
Jan 21, 10-11 PM (28)
Jan 21, 11-12 AM (25)
Jan 22, 12-1 AM (9)
Jan 22, 1-2 AM (12)
Jan 22, 2-3 AM (10)
Jan 22, 3-4 AM (6)
Jan 22, 4-5 AM (4)
Jan 22, 5-6 AM (2)
Jan 22, 6-7 AM (11)
Jan 22, 7-8 AM (21)
Jan 22, 8-9 AM (12)
Jan 22, 9-10 AM (19)
Jan 22, 10-11 AM (38)
Jan 22, 11-12 PM (27)
Jan 22, 12-1 PM (23)
Jan 22, 1-2 PM (39)
Jan 22, 2-3 PM (14)
Jan 22, 3-4 PM (43)
Jan 22, 4-5 PM (40)
Jan 22, 5-6 PM (22)
Jan 22, 6-7 PM (6)
Jan 22, 7-8 PM (16)
Jan 22, 8-9 PM (17)
Jan 22, 9-10 PM (14)
Jan 22, 10-11 PM (37)
Jan 22, 11-12 AM (32)
Jan 23, 12-1 AM (8)
Jan 23, 1-2 AM (16)
Jan 23, 2-3 AM (6)
Jan 23, 3-4 AM (6)
Jan 23, 4-5 AM (4)
Jan 23, 5-6 AM (5)
Jan 23, 6-7 AM (6)
Jan 23, 7-8 AM (16)
Jan 23, 8-9 AM (35)
Jan 23, 9-10 AM (50)
Jan 23, 10-11 AM (54)
Jan 23, 11-12 PM (129)
Jan 23, 12-1 PM (30)
Jan 23, 1-2 PM (30)
Jan 23, 2-3 PM (35)
Jan 23, 3-4 PM (55)
Jan 23, 4-5 PM (16)
Jan 23, 5-6 PM (37)
Jan 23, 6-7 PM (46)
Jan 23, 7-8 PM (33)
Jan 23, 8-9 PM (13)
Jan 23, 9-10 PM (8)
Jan 23, 10-11 PM (26)
Jan 23, 11-12 AM (24)
Jan 24, 12-1 AM (28)
Jan 24, 1-2 AM (4)
Jan 24, 2-3 AM (11)
Jan 24, 3-4 AM (4)
Jan 24, 4-5 AM (3)
Jan 24, 5-6 AM (0)
Jan 24, 6-7 AM (4)
Jan 24, 7-8 AM (2)
Jan 24, 8-9 AM (1)
Jan 24, 9-10 AM (2)
Jan 24, 10-11 AM (7)
Jan 24, 11-12 PM (4)
Jan 24, 12-1 PM (2)
Jan 24, 1-2 PM (1)
Jan 24, 2-3 PM (10)
Jan 24, 3-4 PM (12)
Jan 24, 4-5 PM (5)
Jan 24, 5-6 PM (13)
Jan 24, 6-7 PM (3)
Jan 24, 7-8 PM (3)
Jan 24, 8-9 PM (6)
Jan 24, 9-10 PM (3)
Jan 24, 10-11 PM (25)
Jan 24, 11-12 AM (23)
Jan 25, 12-1 AM (0)
Jan 25, 1-2 AM (3)
Jan 25, 2-3 AM (0)
Jan 25, 3-4 AM (1)
Jan 25, 4-5 AM (1)
Jan 25, 5-6 AM (1)
Jan 25, 6-7 AM (1)
Jan 25, 7-8 AM (1)
Jan 25, 8-9 AM (1)
Jan 25, 9-10 AM (3)
Jan 25, 10-11 AM (0)
Jan 25, 11-12 PM (1)
Jan 25, 12-1 PM (7)
Jan 25, 1-2 PM (6)
Jan 25, 2-3 PM (12)
Jan 25, 3-4 PM (12)
Jan 25, 4-5 PM (2)
Jan 25, 5-6 PM (1)
Jan 25, 6-7 PM (2)
Jan 25, 7-8 PM (9)
Jan 25, 8-9 PM (5)
Jan 25, 9-10 PM (6)
Jan 25, 10-11 PM (21)
Jan 25, 11-12 AM (22)
Jan 26, 12-1 AM (11)
Jan 26, 1-2 AM (13)
Jan 26, 2-3 AM (15)
Jan 26, 3-4 AM (8)
Jan 26, 4-5 AM (4)
Jan 26, 5-6 AM (0)
Jan 26, 6-7 AM (4)
Jan 26, 7-8 AM (9)
Jan 26, 8-9 AM (48)
Jan 26, 9-10 AM (34)
Jan 26, 10-11 AM (16)
Jan 26, 11-12 PM (23)
Jan 26, 12-1 PM (44)
Jan 26, 1-2 PM (29)
Jan 26, 2-3 PM (33)
Jan 26, 3-4 PM (21)
Jan 26, 4-5 PM (27)
Jan 26, 5-6 PM (18)
Jan 26, 6-7 PM (16)
Jan 26, 7-8 PM (12)
Jan 26, 8-9 PM (19)
Jan 26, 9-10 PM (10)
Jan 26, 10-11 PM (29)
Jan 26, 11-12 AM (37)
Jan 27, 12-1 AM (14)
Jan 27, 1-2 AM (4)
Jan 27, 2-3 AM (4)
Jan 27, 3-4 AM (20)
Jan 27, 4-5 AM (2)
Jan 27, 5-6 AM (1)
Jan 27, 6-7 AM (9)
Jan 27, 7-8 AM (22)
Jan 27, 8-9 AM (26)
Jan 27, 9-10 AM (28)
Jan 27, 10-11 AM (47)
Jan 27, 11-12 PM (0)
3,085 commits this week Jan 20, 2026 - Jan 27, 2026
chore(deps): Bump webiny/action-conventional-commits from 1.3.0 to 1.3.1
Bumps [webiny/action-conventional-commits](https://github.com/webiny/action-conventional-commits) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/webiny/action-conventional-commits/releases)
- [Commits](https://github.com/webiny/action-conventional-commits/compare/v1.3.0...v1.3.1)

---
updated-dependencies:
- dependency-name: webiny/action-conventional-commits
  dependency-version: 1.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): Bump actions/checkout from 6.0.1 to 6.0.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
chore(deps): Bump github.com/gdamore/tcell/v2 from 2.13.7 to 2.13.8
Bumps [github.com/gdamore/tcell/v2](https://github.com/gdamore/tcell) from 2.13.7 to 2.13.8.
- [Release notes](https://github.com/gdamore/tcell/releases)
- [Changelog](https://github.com/gdamore/tcell/blob/main/CHANGESv3.md)
- [Commits](https://github.com/gdamore/tcell/compare/v2.13.7...v2.13.8)

---
updated-dependencies:
- dependency-name: github.com/gdamore/tcell/v2
  dependency-version: 2.13.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
test(uplc-evaluator): add 26 integration tests covering full interface
Validate service behavior across all specified scenarios: textual and flat-encoded programs, error handling (empty files, invalid syntax, malformed UUIDs), file filtering (.uplc.txt vs other extensions), measurement data validation, concurrent job processing, whitespace handling, and processed file marker lifecycle.

Tests verify both successful evaluation paths and error conditions, ensuring robust operation under various input conditions.
test(uplc-evaluator): add integration test infrastructure
Create test harness for spawning service instances with temporary directories, managing process lifecycle, and coordinating file-based interactions. Includes helper functions for program submission, result polling, and JSON parsing with timeout handling.

Configure test suite for sequential execution (-N1) to avoid race conditions in file system operations and process cleanup.
feat(uplc-evaluator): implement file-based evaluation service
Create polling service that monitors input directory for UPLC programs, evaluates them with randomized parameters, collects performance metrics, and writes JSON results. Supports textual UPLC programs with UUID v4 job identification and automatic file lifecycle management (rename to .processed after evaluation).

Service includes basic validation, error handling, and configurable poll intervals for production deployment.