Skip to content

Complete private runtime reports and saved-run acceptance - #345

Merged
rng1995 merged 16 commits into
mainfrom
naren/private-runtime-reports
Nov 5, 2026
Merged

rng1995 merged 16 commits into
mainfrom
naren/private-runtime-reports

Conversation

@rng1995

@rng1995 rng1995 commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Private runs already collect loading, MCP, behavior and comparison evidence, but cannot show those facts consistently or replay them after temporary artifacts are removed. This implements split-plan item 24 with one passive runtime projection and a retained display snapshot. Public activation remains item 25.

  • Render loading strength, arm/activation coverage, routing/tool/argument/order/handoff/conflict signals, MCP proof/call outcomes, paired intervals and exclusions, eligibility, recorded costs and measured context through the existing six formats. Preserve unknowns, unsupported expectations and omission counts; reuse shared sanitization and table rendering.
  • Atomically save a versioned, bounded plugin_runtime_report.json before private cleanup and caller publication. Offline replay uses fixed-file, no-follow, bounded JSON/schema validation, requires no source tree or optional runtime dependencies, and performs no probes or regrading. Storage failures remain advisory and cannot suppress caller publication or cleanup.
  • Fix a classification seam exposed by assembled acceptance: comparisons now consume the context's existing canonical cross-component set. The previous signal-only case view strips that flag and incorrectly left five valid cross-component cases out of the comparison split. No statistical formula or eligibility gate is relaxed.

The ordinary reporter/CLI entrypoints remain unchanged. Snapshot replay is an explicit private API; older runs without a snapshot report it unavailable. Private usage and the implementation design are documented in the included contributor notes.

Verification

  • Familiar with the contributing guidelines; commits signed off.
  • Added focused regressions and completed independent review; both review findings fixed and re-reviewed.
  • 98 passed across projection, replay, runtime/static rendering and existing lifecycle checks.
  • 6 assembled acceptance cases passed: default service/runner, five cross-component cases × two attempts × four arms, source removal and six-format replay, missing load/trace evidence, publication failures and ordinary-run isolation.
  • make lint, changed-file formatting, make build, OSS-boundary scan, Fern check (0 errors, 1 warning), and staged/new-commit secret scans passed.
  • Ran full make test: 22,125 passed, 60 skipped, 27 failed with an initially unlocked environment/system Python. The failing test and owning source files are unchanged from the task base. All 27 previously failing cases passed after syncing locked dependencies and selecting the project Python on PATH (85.54s). The original failed full run is retained; this is not a claim that the initial full run was green.
  • Exact-wheel base-only installation: all 247 Python/Jinja/JSON package files match checkout, wheel, source archive and installation. Six-format offline replay and three installed CLI help checks passed; optional runtime/provider packages and public activation flags remain absent.
  • No credentials, private datasets or proprietary benchmark content added.

Acceptance substitutes external provider/container execution with local deterministic fixtures and runs emitted setup/census scripts. It exercises real discovery, validation, preparation, service/runner orchestration, evidence, comparisons, publication and cleanup. It does not qualify live agents, providers, remote backends or MCP services.

CI full test jobs passed on Python 3.12, 3.13 and 3.14 for the implementation commit. Windows exposed an oversized pytest parameter ID; the follow-up gives the fixture short IDs (21 replay checks passed locally) and the latest CI run is pending. Product code is unchanged by that follow-up.

Review follow-up

Three verified inline findings are fixed in 37bdd247 and their threads are replied to and resolved:

  • Enforce the final sanitized replay size in the shared validator, removing the redundant save-only check.
  • Publish canonical logical-case coverage alongside attempt coverage, including skipped, partial, early-stopped and recovered cases.
  • Retain bounded per-comparison policy exclusions for two-/three-arm runs without a ladder, with duplicate suppression.

Post-merge compatibility: 111 passed, including the real four-arm workflow and saved replay. The extended affected run recorded 1,899 passed, 6 skipped and 4 subprocess deadline failures; all four passed in a serial rerun at the original limits. Lint, builds, installed base-only replay, 247 Python/Jinja/JSON byte comparisons, three CLI help checks and secret scans passed. Independent re-review found no new actionable issue. The concurrent remote merge is preserved; the latest CI run is pending.

Release Impact

  • Updated CHANGELOG.md and private API usage notes.
  • Public CLI/configuration/detection/exports and installed public workflow acceptance remain item 25.

@rng1995
rng1995 marked this pull request as ready for review November 5, 2026 16:57

@rng1995 rng1995 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Self-review: reproduced a replay output-bound mismatch; regression coverage and a fix will follow.

@rng1995 rng1995 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Self-review: two producer/consumer gaps reproduced in case coverage and comparison exclusions. Fixes and regressions will follow.

@rng1995 rng1995 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review: 5 findings (0 P1, 0 P2, 5 P3); 5 posted inline.

rng1995 and others added 4 commits November 5, 2026 10:39
Address review 5789863421 on #345:

- Read the engine's `error` alias only when `execution_errors` is absent,
  so each execution error is listed once and later limitations are not
  pushed out of the 64-row diagnostics budget.
- Settle sanitization to a fixed point in the shared validator and return
  the validated payload from the projection. The live report, its
  provenance copy and the saved snapshot are now the same bytes, including
  multi-line diagnostics with redacted keys.
- Import the atomic writer only when saving, so replay needs no tier3
  modules.
- Make the completeness tests start from a complete baseline, cover the
  snapshot completeness/omission/top-level/row-bound checks, and run the
  real loader with optional packages blocked under a generous timeout.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Narendran Raghavan <[email protected]>
The offline replay check blocked a hand-picked package list that missed
the tier3, publisher and dashboard extras (mcp, jwt, oauthlib, dotenv,
streamlit) and the security scanners. List the top-level import names of
every optional extra in pyproject.toml so a module-level import of any of
them in the replay path fails the test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Narendran Raghavan <[email protected]>
Resolve the CHANGELOG.md conflict by keeping both new "Added" entries:
private runtime reports (this branch) and tier3 feedback chat (main).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Narendran Raghavan <[email protected]>
@rng1995
rng1995 enabled auto-merge (squash) November 5, 2026 21:59
rng1995 and others added 3 commits November 5, 2026 14:00
Report text cut while settling sanitization as truncated, so a cell that a
later redaction pass pushes past the display bound is not silently shortened.
Pin the fixed-point loop with an input that needs three sanitizer passes and
check every retained string is already settled. Block cryptography and httpx
in the replay dependency test; optional extras pull them in and no base
dependency provides them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Narendran Raghavan <[email protected]>
A hand-kept list of blocked extras misses packages the extras pull in
(requests, aiohttp, tiktoken and others). Refuse every module that is not
standard library, skillevaluator, a base dependency or already loaded at
interpreter startup, so any new optional import fails the test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Narendran Raghavan <[email protected]>
@rng1995
rng1995 merged commit 55d8b8d into main Nov 5, 2026
22 checks passed
@rng1995
rng1995 deleted the naren/private-runtime-reports branch November 5, 2026 23:15
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