Skip to content

Tests: Wave 5 — library/Tiger kernel (coverage 37.9% → 59.2%)#65

Merged
WebTigers merged 1 commit into
mainfrom
test/wave5-collect
Jul 24, 2026
Merged

Tests: Wave 5 — library/Tiger kernel (coverage 37.9% → 59.2%)#65
WebTigers merged 1 commit into
mainfrom
test/wave5-collect

Conversation

@WebTigers

Copy link
Copy Markdown
Owner

Seven parallel agents drove the platform kernel (library/Tiger/*) to coverage — the dominant remaining gap. +~584 tests (861 → 1445 combined green). Overall line coverage 37.9% → 59.2%; library/Tiger 32% → 66%.

Per-subpackage lines (before → after)

Model 51→97 Service 57→89 Ajax 70→89 Controller 16→77
Admin 0→81 Session 0→96 View 0→98 OpenApi 0→94
Generator 0→100 Policy 85→100 Acl 85→89 Location 7→84
I18n→95 Validate 21→74 Media(lib) 25→~85 Backup 0→~90
Code(lib) 44→~85 Agent(lib) 3→~72 Google 0→29 Application 0→60

Approach

Everything network-free: provider/location/google adapters covered by stubbing each transport seam (real request-build + response-parse, no HTTP); AWS SigV4 signature verified by independent re-derivation; Forge/Scout permission gating driven against the real shipped ACL; OpenApi + docblock Generator via reflection over fixtures; the DB session save-handler + all controller plugins + Admin registries against real rows.

No behavioral bugs found. The remaining kernel gap (~3,150 lines) is genuinely-hard live I/O — Tiger_Application_Bootstrap::_init* boot orchestration, Update_Composer/Update_Core (composer proc_open + atomic vendor/ swap), provider/authority/GA/reCAPTCHA HTTP, ClamAV/Rekognition scanners, AWS-SDK S3 — all functional/live territory.

One forward-compat source fix (a test flagged it)

Tiger_Model_AgentMessage::append() used implicit-nullable array $meta = null (deprecated in PHP 8.5, an error in PHP 9) → ?array. The docblock already said array|null.

Also

  • CI coverage floor MIN_COVERAGE 35 → 55 (the ratchet).
  • gitignore the test-runtime /var/ (docs-generated / backup / schedule artifacts).
  • Cross-test isolation footguns the agents surfaced (each guarded locally, recorded in COVERAGE-PLAN §9 for future waves): Org::$_siteOrgId must reset to exactly null; a Zend_Translate set-to-null in the registry needs offsetUnset; Tiger_Application::defineConstants() mints MODULES_PATH so the app-boot test runs #[RunInSeparateProcess].

Next (drive to 90%)

Wave 6 = the remaining modules (~2,700 reachable lines): agent module (now that Tiger_Agent_* is ~72%, the seams exist), cms, system remainder, code, and core/controllers (needs a dispatch harness).

🤖 Generated with Claude Code

Seven parallel agents by sub-package, collected + verified together on one DB:
+~584 tests (861 → 1445 combined green). library/Tiger 32% → 66%.

Per-subpackage lines: Model 51→97 · Service 57→89 · Ajax 70→89 · Controller 16→77 ·
Admin 0→81 · Session 0→96 · View 0→98 · OpenApi 0→94 · Generator 0→100 · Policy→100 ·
Acl→89 · Location 7→84 · I18n→95 · Validate→74 · Media(lib)→85 · Backup→90 · Code(lib)→85 ·
Agent(lib) 3→72 · Application→60. No behavioral bugs.

Adapters/providers covered by stubbing each transport seam (no live HTTP); AWS SigV4
verified by independent re-derivation; Forge/Scout gating driven against the real ACL;
OpenApi/Generator via reflection over fixtures. The remaining kernel gap (~3,150 lines)
is genuinely-hard live I/O: Application boot orchestration, Update composer/vendor-swap,
provider/authority/GA/reCAPTCHA HTTP, ClamAV/Rekognition, AWS-SDK S3.

One forward-compat source fix (a test flagged it): Tiger_Model_AgentMessage::append()
implicit-nullable `array $meta = null` → `?array` (PHP 8.5 deprecation → error in PHP 9).

CI coverage floor MIN_COVERAGE 35 → 55. gitignore test-runtime /var/. Cross-test
isolation footguns the agents surfaced are recorded in COVERAGE-PLAN §9.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@WebTigers
WebTigers merged commit d2396d3 into main Jul 24, 2026
11 checks passed
@WebTigers
WebTigers deleted the test/wave5-collect branch July 24, 2026 22:48
WebTigers added a commit that referenced this pull request Jul 24, 2026
…tie) (#68)

messages_append_and_transcript_reads_oldest_first appended two messages in the same
millisecond, so neither created_at (second precision) nor the time-ordered v7 message_id
could order them deterministically — transcript()'s message_id-DESC tiebreak fell to the
v7 random bits, and the order flipped ~intermittently (green in #65, red in #67's CI run).
Real conversation turns are seconds apart; force a created_at gap so the oldest-first
assertion is deterministic. Verified stable across repeated runs. No source change — the
model's ordering is correct for real use.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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