Skip to content

Prepare checkpointed bug-fix lifecycle canary - #888

Draft
ventselartur wants to merge 168 commits into
mainfrom
private/ventselartur/bugfix-production-lifecycle
Draft

ventselartur wants to merge 168 commits into
mainfrom
private/ventselartur/bugfix-production-lifecycle

Conversation

@ventselartur

Copy link
Copy Markdown
Collaborator

Summary

  • preserve the checkpointed production bug-fix lifecycle removed from Add fix-bug custom agent experiment arm #845
  • pin the complete external GitHub Actions execution path to full commit SHAs
  • add a reusable workflow interface and a Claude branch launcher that cannot run alongside the legacy evaluator
  • add rehearsal-only so checkpoint acceptance cannot launch a paid agent or summarize results
  • repair lifecycle typing and E2E dependency collection without weakening validation

Context

#845 has been restored to bd0c1d4100d618dff9fd6c3fd5daedc41a8c7d79, the exact commit evaluated successfully by workflow run 34477586948. This draft isolates the subsequent lifecycle work for validation before any live canary or promotion decision.

Validation

  • uv run pre-commit run --all-files --show-diff-on-failure --color=never
  • uv run pytest — 2049 passed, 3 skipped, 5 deselected
  • uv run pytest -m e2e --collect-only -q — 5 E2E tests collected

No workflow was dispatched and no paid agent execution occurred.

ventselartur and others added 30 commits September 2, 2026 16:46
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…vate/ventselartur/BugFixingSkillToBCBench
…vate/ventselartur/BugFixingSkillToBCBench
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ventselartur and others added 9 commits September 20, 2026 13:42
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: haoranpb <27280733+haoranpb@users.noreply.github.com>
Co-authored-by: Haoran Sun (Business Central) <haoransun@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: dayland <dayland@microsoft.com>
Copilot-Session: 08f0eec5-45eb-485a-b89d-d0de33568add
Add a branch-dispatchable Claude launcher, a no-agent rehearsal mode, full action SHA pins, and type-safe lifecycle validation fixes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

def stop(self) -> None:
if self._shutdown_failure is not None:
raise self._shutdown_failure

def stop(self) -> None:
if self._failure is not None:
raise self._failure
self._failure.__cause__ = interrupt
interrupt.add_note(str(self._failure))
raise interrupt
raise self._failure

def test_delete_shuts_down_stdio_server_and_descendants(bridge, tmp_path):
headers = _initialize(bridge)
assert requests.delete(bridge.url, headers=headers, timeout=5).status_code == 200
self._inventory_verifier = inventory_verifier
else:
if inventory_reader is None:
raise ValueError("An inventory reader is required")
def run() -> None:
try:
self._result = run_contained_process(request)
except BaseException as error: # noqa: BLE001 - transfer failure to the owning thread without logging secrets
if args.worker:
try:
_worker(args.worker)
except BaseException as error: # noqa: BLE001 - fail the worker and persist nonsecret cancellation/error evidence
)
self._evidence_store.save_checkpoint_manifest(safe_name, manifest.to_dict())
capture_completed = True
except BaseException as exc: # noqa: BLE001 - recovery must run before interrupts propagate
if staging_directory is not None:
try:
self._cleanup_staging(staging_directory, _classified_primary_error("capture", primary_error))
except BaseException as exc: # noqa: BLE001 - recovery must run after cleanup interrupts
elif capture_started and not capture_completed:
payload = self._invoke_json("capture restart", self._service_recovery_script())
self._validate_capture_recovery(payload)
except BaseException as exc: # noqa: BLE001 - aggregate recovery failures with interrupts
ventselartur and others added 20 commits September 21, 2026 10:40
Handle both synchronous and asynchronous Azure evaluation scan results without relying on incomplete SDK type stubs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Isolate Windows ctypes imports, normalize ANSI-formatted CLI errors, gate privileged ACL mutation to approved runners, and compare resolved Python paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Guard Windows-only ctypes imports so Linux type checking can validate the shared contained-process tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep shared lifecycle components cross-platform while running Windows path, identity, PowerShell, and cleanup suites only on their supported runtime.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Preserve randomized mock scenarios by default while giving matrix CI a stable experiment identity that can be summarized as one run.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep uv-managed Python as the shared default, but build privileged lifecycle environments from a pinned setup-python runtime so reparse-point safety remains fail-closed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Load the PowerShell class at parse time so lifecycle repository setup can bind its typed entry parameter in fresh runner processes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Avoid strict-mode property access for absent artifact configuration keys in lifecycle and legacy container setup.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Import BCBench utilities at module parse time so lifecycle container creation can call Write-Log in fresh runner processes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Disable strict mode only at the external helper boundary so optional BcContainerHelper configuration remains compatible while lifecycle code stays strict.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Populate absent BcContainerHelper telemetry defaults inside its module scope before external container and compiler operations.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Probe optional BcContainerHelper availability without dereferencing a missing module on hosted CI runners.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route compiler creation through the helper-config wrapper and return the exact owned compiler directory for lifecycle ACL and cleanup tracking.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Import the pinned helper globally within the short-lived setup process so lifecycle and container-management modules initialize the same configuration instance.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Initialize optional BcContainerHelper settings in the exact module that owns New-BCContainer and fail explicitly when unavailable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolve optional BcContainerHelper config through the exact container or compiler command owner and cover both wrappers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Search the external command owner and loaded BcContainerHelper modules for the actual configuration variable before applying optional defaults.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pass the pinned BcContainerHelper module into compiler setup so optional config and telemetry functions use the same session state.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy DatasetEntry and BCBenchUtils alongside BCContainerManagement before importing the module inside the Business Central container.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use a fixed auditable local-user description within Windows' 48-character limit and verify the exact argument.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

This branch has not been deployed

No deployments
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.

4 participants