Repository navigation
M7-Release: Prepare the v1.0.0 release PR with go/no-go evidence - #182
Merged
Merged
Conversation
Co-Authored-By: Devin AI <devin-ai-integration[bot]@users.noreply.github.com>
Owner
Author
|
v1-acceptance.json (ok: true, V1-AC1..AC8 passed){
"ok": true,
"pytest_exit_code": 0,
"criteria": {
"V1-AC1": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_every_v1_task_is_covered",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_gated_cases_include_domain_length_other_than_one[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_gated_cases_include_domain_length_other_than_one[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_missing_gate_fails_the_check",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_broken_reference_fails_a_scientific_gate",
"outcome": "passed"
}
]
},
"V1-AC2": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutation_registry_is_non_empty",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[kepler/non-conservative-velocity-damping]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[kepler/unit-error-au-rounding]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/early-termination]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/float32-position]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/hard-coded-fixture-shortcut]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/non-conservative-damping]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/courant-not-squared]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/dirichlet-wrong-node]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/sign-error-startup]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/unstable-time-recurrence]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/update-order-overwrite]",
"outcome": "passed"
}
]
},
"V1-AC3": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab.verification import analytical-invariantlab.verification]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[import invariantlab.verification.solvers-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab.mutations.registry import REGISTRY-invariantlab.mutations.registry]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from tests.scientific.helpers import oracle-tests.scientific.helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab import verification-invariantlab.verification]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab import mutations-invariantlab.mutations]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from tests import scientific-tests.scientific]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[import invariantlab.verification_helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[from invariantlab import verification_helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[import invariantlab.mutations_extra.registry]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[from tests import scientific_helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_agent_facing_task_sources_do_not_import_trusted_evaluator",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_task_namespace_has_no_stale_m2_placeholders",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[oscillator-import solver-expected0]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[kepler-from solver import solve-expected1]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[heat1d-from tasks.heat1d.src import solver-expected2]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[wave1d-import tasks.wave1d.src.solver-expected3]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_tests_do_not_import_candidate_solver_modules",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_agent_workspace_contains_no_scientific_tests",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_normalised_body_ignores_names_constants_annotations_and_docstrings",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_normalised_body_preserves_operators_and_attribute_names[return x + v * dt-return x - v * dt]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_normalised_body_preserves_operators_and_attribute_names[return np.sin(angle)-return np.cos(angle)]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_functions_are_not_copied_into_agent_facing_code",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[import invariantlab.verification.solvers-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from invariantlab.verification.solvers import solve-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from invariantlab.verification import solvers-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from .solvers import solve-.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from . import solvers-.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[import solver-solver]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from solver.integrator import solve-solver.integrator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[import tasks.oscillator.src.solver-tasks.oscillator.src.solver]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from tasks import oscillator-tasks]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from candidate_runner import run-candidate_runner]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_allows_independent_dependencies[import numpy as np]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_allows_independent_dependencies[from scipy.integrate import solve_ivp]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_allows_independent_dependencies[from invariantlab.verification import analytical]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_modules_do_not_import_agent_facing_code",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_candidate_stage_mount_exposes_no_hidden_files",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_hidden_file_checker_rejects_pre_fix_single_mount_layout",
"outcome": "passed"
}
]
},
"V1-AC4": {
"status": "passed",
"tests": [
{
"nodeid": "tests/integration/test_v1_replay_determinism.py::test_repeated_replay_yields_identical_evaluator_outcomes[oscillator-update-order]",
"outcome": "passed"
},
{
"nodeid": "tests/integration/test_v1_replay_determinism.py::test_perturbed_replay_response_changes_evaluator_outcomes",
"outcome": "passed"
}
]
},
"V1-AC5": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_report_reconstruction.py::test_report_totals_equal_enumerated_sample_records",
"outcome": "passed"
}
]
},
"V1-AC6": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_report_reconstruction.py::test_report_tables_regenerate_offline_byte_for_byte",
"outcome": "passed"
}
]
},
"V1-AC7": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[task validation]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[replay smoke run]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[report reconstruction]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[V1 acceptance gate]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_ci_scripts_are_not_stubs",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_trigger_parser_rejects_non_pr_or_other_branch",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_stub_marker_detection",
"outcome": "passed"
}
]
},
"V1-AC8": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_exported_records_have_full_provenance",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_exported_dataset_passes_credential_scan",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[env]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[authz]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[api_key]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[sk]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[hf]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[ghp]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[github]",
"outcome": "passed"
}
]
}
},
"unknown_ids": []
} |
akurkar07
marked this pull request as ready for review
October 6, 2026 07:15
Co-Authored-By: Devin AI <devin-ai-integration[bot]@users.noreply.github.com>
Owner
Author
|
v1-acceptance.json{
"ok": true,
"pytest_exit_code": 0,
"criteria": {
"V1-AC1": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_every_v1_task_is_covered",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_reference_passes_every_scientific_gate[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_gated_cases_include_domain_length_other_than_one[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_gated_cases_include_domain_length_other_than_one[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_missing_gate_fails_the_check",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_reference_gates.py::test_broken_reference_fails_a_scientific_gate",
"outcome": "passed"
}
]
},
"V1-AC2": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutation_registry_is_non_empty",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[heat1d/discretisation-grid-spacing]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[heat1d/sixth-order-stencil-ftcs-limit]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[kepler/non-conservative-velocity-damping]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[kepler/unit-error-au-rounding]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/early-termination]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/float32-position]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/hard-coded-fixture-shortcut]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[oscillator/non-conservative-damping]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/courant-not-squared]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/dirichlet-wrong-node]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/sign-error-startup]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/unstable-time-recurrence]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_mutants.py::test_mutant_passes_weak_profile_and_fails_expected_gate[wave1d/update-order-overwrite]",
"outcome": "passed"
}
]
},
"V1-AC3": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab.verification import analytical-invariantlab.verification]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[import invariantlab.verification.solvers-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab.mutations.registry import REGISTRY-invariantlab.mutations.registry]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from tests.scientific.helpers import oracle-tests.scientific.helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab import verification-invariantlab.verification]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from invariantlab import mutations-invariantlab.mutations]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_detects_trusted_imports[from tests import scientific-tests.scientific]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[import invariantlab.verification_helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[from invariantlab import verification_helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[import invariantlab.mutations_extra.registry]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_boundary_checker_allows_benign_near_prefixes[from tests import scientific_helpers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_rejects_missing_expected_task_root[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_repository_boundary_scans_each_expected_task_source_root[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_agent_facing_task_sources_do_not_import_trusted_evaluator",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_task_namespace_has_no_stale_m2_placeholders",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[oscillator-import solver-expected0]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[kepler-from solver import solve-expected1]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[heat1d-from tasks.heat1d.src import solver-expected2]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_boundary_checker_detects_candidate_solver_imports[wave1d-import tasks.wave1d.src.solver-expected3]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_scientific_tests_do_not_import_candidate_solver_modules",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_task_boundaries.py::test_agent_workspace_contains_no_scientific_tests",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_normalised_body_ignores_names_constants_annotations_and_docstrings",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_normalised_body_preserves_operators_and_attribute_names[return x + v * dt-return x - v * dt]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_normalised_body_preserves_operators_and_attribute_names[return np.sin(angle)-return np.cos(angle)]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_functions_are_not_copied_into_agent_facing_code",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[import invariantlab.verification.solvers-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from invariantlab.verification.solvers import solve-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from invariantlab.verification import solvers-invariantlab.verification.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from .solvers import solve-.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from . import solvers-.solvers]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[import solver-solver]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from solver.integrator import solve-solver.integrator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[import tasks.oscillator.src.solver-tasks.oscillator.src.solver]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from tasks import oscillator-tasks]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_detects_forbidden_forms[from candidate_runner import run-candidate_runner]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_allows_independent_dependencies[import numpy as np]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_allows_independent_dependencies[from scipy.integrate import solve_ivp]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_import_checker_allows_independent_dependencies[from invariantlab.verification import analytical]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_oracle_modules_do_not_import_agent_facing_code",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[oscillator]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[kepler]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[heat1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_agent_workspace_exposes_no_hidden_files[wave1d]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_candidate_stage_mount_exposes_no_hidden_files",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_oracle_separation.py::test_hidden_file_checker_rejects_pre_fix_single_mount_layout",
"outcome": "passed"
}
]
},
"V1-AC4": {
"status": "passed",
"tests": [
{
"nodeid": "tests/integration/test_v1_replay_determinism.py::test_repeated_replay_yields_identical_evaluator_outcomes[oscillator-update-order]",
"outcome": "passed"
},
{
"nodeid": "tests/integration/test_v1_replay_determinism.py::test_perturbed_replay_response_changes_evaluator_outcomes",
"outcome": "passed"
}
]
},
"V1-AC5": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_report_reconstruction.py::test_report_totals_equal_enumerated_sample_records",
"outcome": "passed"
}
]
},
"V1-AC6": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_report_reconstruction.py::test_report_tables_regenerate_offline_byte_for_byte",
"outcome": "passed"
}
]
},
"V1-AC7": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[task validation]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[replay smoke run]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[report reconstruction]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_pull_request_ci_runs_required_job[V1 acceptance gate]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_ci_scripts_are_not_stubs",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_trigger_parser_rejects_non_pr_or_other_branch",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_ci_coverage.py::test_stub_marker_detection",
"outcome": "passed"
}
]
},
"V1-AC8": {
"status": "passed",
"tests": [
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_exported_records_have_full_provenance",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_exported_dataset_passes_credential_scan",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[env]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[authz]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[api_key]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[sk]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[hf]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[ghp]",
"outcome": "passed"
},
{
"nodeid": "tests/acceptance/test_v1_dataset_export.py::test_credential_scan_fails_on_injected_canary[github]",
"outcome": "passed"
}
]
}
},
"unknown_ids": []
}
|
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release metadata for v1.0.0. Only release-metadata files change; there is no feature or bug work.
CHANGELOG.md: the[Unreleased]notes move under## [1.0.0] - 2026-10-06, with a new empty## [Unreleased]above. Compare/tag links are updated. The stale "oscillator only until M5-Runner: Evaluate repair candidates through the M2 task package andinvariantlab verify, for any registered mutant #120" limitation is replaced, since M5-Runner: Evaluate repair candidates through the M2 task package andinvariantlab verify, for any registered mutant #120 landed in M5-Runner: Evaluate repair candidates through the M2 task package andinvariantlab verify, for any registered mutant #181.CITATION.cff: addsversion: 1.0.0anddate-released: 2026-10-06, replacing the placeholder comment.pyproject.toml: classifierDevelopment Status :: 3 - Alphabecomes5 - Production/Stable..github/workflows/v1-acceptance.yml: removescontinue-on-error: trueand its "remove before M7-Release: Prepare the v1.0.0 release PR with go/no-go evidence #72" comment.docs/v1-acceptance.mdanddocs/releasing.md: two sentences that described the oldcontinue-on-errorand Alpha state now match the new state.Closes #72
Go/no-go: V1 acceptance on head
07cf387917bfaefa15fc03bc8c2dab58ea0e1f93CI run: V1 Acceptance #37430960755 (job v1-acceptance, artifact
v1-acceptance). The release dry run reruns the same gate in its "V1 acceptance gate (final tags only)" step. A local run on the same SHA (Windows, real Docker) also returned94 passed,V1 acceptance gate: PASSED.tests/acceptance/test_v1_reference_gates.py(module)tests/acceptance/test_v1_mutants.py::test_mutation_registry_is_non_empty,::test_mutant_passes_weak_profile_and_fails_expected_gate[*]tests/acceptance/test_v1_oracle_separation.py,tests/acceptance/test_task_boundaries.py(modules)tests/integration/test_v1_replay_determinism.py::test_repeated_replay_yields_identical_evaluator_outcomes[oscillator-update-order],::test_perturbed_replay_response_changes_evaluator_outcomestests/acceptance/test_v1_report_reconstruction.py::test_report_totals_equal_enumerated_sample_recordstests/acceptance/test_v1_report_reconstruction.py::test_report_tables_regenerate_offline_byte_for_bytetests/acceptance/test_v1_ci_coverage.py(module)tests/acceptance/test_v1_dataset_export.py(module)The full
v1-acceptance.json("ok": true, all eightpassed) is posted as a PR comment and is also the CI artifact.Workflow runs on head SHA (all
success)continue-on-error)workflow_dispatchtag=v1.0.0dry_run=truebuildgreen: metadata check, V1 gate, wheel version matches tag, fresh-venv smoke test;releaseskipped as intended for dry runs)Acceptance criteria
main: CHANGELOG[1.0.0] - 2026-10-06, CITATIONversion: 1.0.0/date-released: 2026-10-06, classifier5 - Production/Stable,continue-on-errorremoved. Verified by the diff and bycheck_release_metadata.pybelow.uv run python scripts/check_release_metadata.py --tag v1.0.0exits 0 on the head. Run locally (OK: release metadata consistent for v1.0.0) and in the release dry run's "Check release metadata" step.uv run python scripts/check_v1_acceptance.py --report v1-acceptance.jsonexits 0, with all eight IDspassed. Run locally (exit 0) and in CI V1 Acceptance. JSON posted as a comment.success. See the table above (GET /actions/runs?head_sha=07cf387…).release.ymldry run withtag=v1.0.0is green on the head. Run 37430973005.Local test output (Windows, Python 3.12, Docker Desktop running)
Maintainer post-merge steps (agents do not create tags or releases)
git tag -a v1.0.0 <merge-sha> -m "InvariantLab v1.0.0", thengit push origin v1.0.0.dist/*(sdist and wheel) to the GitHub Release.invariantlab versionfrom the release wheel prints1.0.0, e.g.uv venv /tmp/il && uv pip install --python /tmp/il dist/invariantlab-1.0.0-py3-none-any.whl && /tmp/il/bin/invariantlab version.Recommended, not done here because it needs maintainer settings:
mainstill has no branch protection (GET /branches/main/protectionreturns 404). MakeV1 AcceptanceandTestsrequired checks, and consider cuttingv1.0.0-rc.1through the release workflow first (#121). Thedate-released/CHANGELOG date is 2026-10-06. If the tag is pushed on a later day, update both dates in a follow-up PR (check_release_metadata.pyonly checks that they are valid ISO dates).Written by Devin