Skip to content

docs: functional/CI lessons — compile-fatal cascades, private-service get(), per-file coverage, JIT-off for functional, per-leg resolution - #118

Merged
CybotTM merged 1 commit into
mainfrom
docs/b71-functional-lessons
Aug 5, 2026
Merged

docs: functional/CI lessons — compile-fatal cascades, private-service get(), per-file coverage, JIT-off for functional, per-leg resolution#118
CybotTM merged 1 commit into
mainfrom
docs/b71-functional-lessons

Conversation

@CybotTM

@CybotTM CybotTM commented Aug 5, 2026

Copy link
Copy Markdown
Member

What

Six promoted learnings (/retro promote, batch 7) across five references:

  • test-environment-guards.md: the setUp-error cascade shape also comes from a PHP compile fatal — PHPUnit exit 255 is a bootstrap fatal, never flaky infra; gh run rerun replays the original SHA so it cannot disprove a since-fixed break; the self-referencing-constant trap after literal→const sweeps.
  • functional-testing.md: FunctionalTestCase::get() resolves private services (the private_container fixture registers them into a public locator) — never public: true just for tests; verified 45→27 public services, zero test changes. Plus: combined-run coverage under-counts mock-exercised classes — measure per test file (measured: 0/12 combined vs 11/12 isolated) before any test-architecture decision.
  • test-runners.md (corrects existing guidance): container PHP with opcache.jit=1255 segfaults silently (exit 139) during functional bootstrap on valid source — run functional suites JIT-less (PHP_FUNCTIONAL_OPTS without JIT), keep JIT for the static tools. Includes the probe/stash-bisect diagnosis pattern.
  • quality-tools.md: the no-plugins fallback without explicit includes produces spurious InvocationStubber::with() PHPStan errors — verify via controlled stash baseline.
  • ci-cd.md: no-lock libraries resolve per PHP matrix leg — re-resolve per leg (composer config platform.php …) before claiming green.

Came from /retro: yes

…rvice get(), per-file coverage, JIT-off for functional, per-leg resolution

- exit 255 cascades are one compile fatal, never flaky infra; rerun
  replays the old SHA; self-referencing-const trap after literal
  extraction
- FunctionalTestCase::get() resolves private services via the
  private_container fixture — never public:true just for tests
  (45->27 publics verified green)
- combined-run coverage under-counts mock-exercised classes — measure
  per file before any architecture decision
- functional suites segfault silently under opcache.jit=1255 (exit
  139); run them JIT-less, keep JIT for static tools
- fresh-worktree no-plugins PHPStan: spurious InvocationStubber errors,
  stash-baseline verification
- no-lock libraries resolve per PHP matrix leg — re-resolve per leg
  before claiming green

Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
Copilot AI lite review requested due to automatic review settings August 5, 2026 20:05
@github-actions github-actions Bot added documentation Improvements or additions to documentation skill labels Aug 5, 2026
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@sonarqubecloud

sonarqubecloud Bot commented Aug 5, 2026

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@CybotTM
CybotTM merged commit b079c99 into main Aug 5, 2026
23 of 24 checks passed
@CybotTM
CybotTM deleted the docs/b71-functional-lessons branch August 5, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation skill

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants