Skip to content

[ops]: refactor Pester into a readiness/execution/evidence service model #2069

Description

@svelderrainruiz

Technical debt surfaced during local iteration

The service-model pilot exposed concrete debt that should stay visible on this standing issue.

Debt now captured locally on the pilot branch

  • Receipt coupling was too weak: execution only trusted readiness_status and did not validate the actual readiness receipt artifact.
    • Local fix is now on codex/pester-service-model-pilot at 265593ac.
  • Execution uploaded raw artifacts before the execution receipt existed.
    • This made evidence classification depend on heuristics instead of a first-class execution contract.
    • Local fix is also on 265593ac.
  • Evidence classification was still overly summary-centric.
    • It now needs the execution receipt to distinguish seam-defect from ordinary test failures.
    • Local fix is on 265593ac.
  • The pilot had no trusted PR entrypoint.
    • Local fix is now on codex/pester-service-model-pilot at 5d133cd3 via .github/workflows/pester-service-model-on-label.yml.
    • The new entrypoint uses pull_request_target plus same-owner gating so self-hosted execution never runs untrusted cross-owner fork code.
  • The service-model workflows did not accept explicit checkout repository/ref inputs, so the pilot could not prove PR head truth safely.
    • Local fix is on 5d133cd3 via explicit checkout_repository / checkout_ref threading through readiness and execution.

Debt still open

  • .github/workflows/pester-reusable.yml remains the active monolith and still couples:
    • preflight
    • host/bootstrap debt
    • execution
    • evidence generation
  • .github/workflows/test-pester.yml still routes directly to the monolith, so the required gate has not been promoted to the service model yet.
  • Host-plane/bootstrap debt is still being paid in the monolith path instead of being fully owned by readiness receipts.
  • The current pilot does not yet define named execution packs strongly enough to separate:
    • merge-gate deterministic coverage
    • release certification coverage
    • diagnostics/characterization coverage
  • The trusted pilot router is not proven remotely yet; the next job is to exercise it on PRs without changing the required gate.

Standing direction

  • Keep the issue focused on replacing the monolith with a readiness/execution/evidence service model.
  • Keep surfacing technical debt here as it is discovered locally.
  • Do not switch the required gate until the additive path proves equivalent or better behavior on a trusted trigger path.

Evidence

  • pilot PR: Introduce Pester service-model pilot #2068
  • local receipt-driven execution cut: 265593ac
  • local trusted PR entrypoint cut: 5d133cd3
  • latest monolith evidence sample: full self-hosted dispatcher can remain live without pester-summary.json while event logging stops at execution start

Remote proof on 2026-03-31

  • Direct pester-gate.yml dispatch on upstream branch issue/2069-pester-service-model produced a real additive proof run: 23802276898.
  • The split itself worked remotely:
    • pester-run / normalize completed successfully
    • pester-evidence / evidence downloaded and classified outputs successfully before failing closed at Propagate gate outcome
  • The concrete failure class was not generic anymore. Evidence classified the run as seam-defect because the gate/evidence handoff lost execution context on the skip path:
    • readiness_status arrived empty
    • execution_job_result arrived as success
    • raw execution artifact download failed because no execution artifact existed
    • execution receipt was missing
  • That exposed a real contract flaw in the pilot: reusable-workflow outputs were collapsing when execution never started.
  • Local fix is now on codex/pester-service-model-pilot at c2df2843.
    • pester-run.yml now has an always-on finalize job that emits execution_status, dispatcher_exit_code, and raw_artifact_name even when the execution job is skipped.
    • pester-gate.yml now passes fallback-bearing readiness and execution status into evidence.
    • pester-evidence.yml now records raw artifact download outcome explicitly instead of hiding that context.
  • Remaining open debt after this slice:
    • pester-service-model-on-label.yml still is not proven remotely as a trusted PR router; direct gate dispatch is the only proven remote path so far.
    • vi-history-scenarios-windows-plan instability on #2068 is still unrelated background noise on the pilot PR surface.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciCI/CD, workflows, and pipeline changesgovernancePolicy, approvals, and operating modelstanding-priorityCurrent top objective for automation agents

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions