diff --git a/.gitattributes b/.gitattributes index 72d6a0135f0..279de4f2294 100644 --- a/.gitattributes +++ b/.gitattributes @@ -184,12 +184,14 @@ src/v1/stage0/src/v1_compiler_trace.rs merge=generated-artifact src/v1/stage0/src/v1_compiler_trait_derive_emit.rs merge=generated-artifact src/v1/stage0/src/v1_compiler_workspace_members.rs merge=generated-artifact src/v1/stage0/src/v1_gunbc_occurrence_binding_parser_walk.rs merge=generated-artifact +src/v1/stage0/src/v1_interpreter_dispatch_generated.rs merge=generated-artifact src/v1/stage0/src/v1_probe_emit_interp.rs merge=generated-artifact src/v1/stage0/src/v1_rt.rs merge=generated-artifact src/v1/stage0/src/v1_std_core.rs merge=generated-artifact src/v1/stage0/src/v1_test_non_ascii_perf_fixture.rs merge=generated-artifact src/v1/stage0/src/v1_tests_claim_caret_parse_smoke_test.rs merge=generated-artifact src/v1/stage0/src/v1_tests_claim_occurrence_binding_parser_walk_witness_test.rs merge=generated-artifact +src/v1/stage0/src/v1_tests_claim_occurrence_identity_debt_receipt_test.rs merge=generated-artifact src/v1/stage0/src/v1_tests_claim_pattern_binder_declaration_node_test.rs merge=generated-artifact src/v1/stage0/src/v1_tests_claim_required_expr_newline_continuation_test.rs merge=generated-artifact src/v1/stage0/src/wt_a.rs merge=generated-artifact diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7c68ff8c54e..d35b982465e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -391,7 +391,7 @@ jobs: git config user.email gunbc-ci-auto-heal@users.noreply.github.com if ! git merge --no-edit "$BUILT_FROM"; then CONFLICTS="$(git diff --name-only --diff-filter=U)" - AUTHORED_CONFLICTS="$(git diff --name-only --diff-filter=U -- . ':(exclude).github/workflows/ci.yml' ':(exclude).github/workflows/falsifier.yml' ':(exclude).gitignore' ':(exclude).gitattributes' ':(exclude)ROADMAP.md' ':(exclude)DESIGN.md' ':(exclude).githooks/pre-push' ':(exclude).githooks/pre-commit' ':(exclude)dag/gunbc/stage0_crate_layout_generated.dag' ':(exclude)src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs' ':(exclude)dag/gunbc/stage0_crate_partition_generated.dag' ':(exclude)dag/gunbc/stage0_emit_plan_generated.dag' ':(exclude).github/live-deploy-srv1-apply.sh' ':(exclude).github/live-deploy-srv1-retract.sh' ':(exclude)docs/plans/idea-machine.md' ':(exclude)docs/plans/algebraic-rewrite-optimization.md' ':(exclude)docs/plans/dag-v2-defork-audit.md' ':(exclude)docs/plans/v2-self-hosting.md' ':(exclude)docs/plans/m5-fixture-store-consolidation.md' ':(exclude)docs/plans/model-realization-fork.md' ':(exclude)docs/plans/value-null-split.md' ':(exclude)docs/plans/ci-merge-freshness.md' ':(exclude)docs/plans/seed-debt-bundle-item-2.md' ':(exclude)docs/plans/axiom-syllogism-lens.md' ':(exclude)docs/plans/invert-hand-maintained.md' ':(exclude)docs/plans/fail-closed-lockdown.md' ':(exclude)docs/plans/format-model-reconciliation.md' ':(exclude)docs/plans/regime2-shared-emission-fold.md' ':(exclude)docs/plans/shell-emission-model.md' ':(exclude)docs/plans/construction-justification-rule.md' ':(exclude)docs/plans/emission-ingestion-inverse.md' ':(exclude)docs/plans/testgen-oracle.md' ':(exclude)docs/plans/disposition-carrier.md' ':(exclude)docs/plans/fold-ergonomics.md' ':(exclude)docs/plans/m4-universal-hermetic-corpus.md' ':(exclude)docs/plans/wiring-liveness-preflight.md' ':(exclude)docs/plans/interpreter-kernel-d.md' ':(exclude)docs/plans/inert-layer-lens.md' ':(exclude)docs/plans/compile-clean-forcecheck.md' ':(exclude)docs/plans/expressibility-frontier.md' ':(exclude)docs/plans/p1-where-clause-lowering.md' ':(exclude)docs/plans/intent-linearity-design-draft.md' ':(exclude)docs/plans/solve-higher-order-design.md' ':(exclude)docs/plans/language-target-self-host-frontier.md' ':(exclude)docs/plans/self-applying-lenses.md' ':(exclude)docs/plans/budget-tree.md' ':(exclude)docs/plans/cardinality-refinement.md' ':(exclude)docs/plans/compute-envelope-model.md' ':(exclude)docs/plans/input-envelope-roadmap.md' ':(exclude)docs/plans/ci-selection-vs-scheduling.md' ':(exclude)docs/plans/ci-process-end-to-end.md' ':(exclude)docs/plans/ci-oom-reclassification.md' ':(exclude)docs/plans/bounded-input-cost-envelope-scheduling.md' ':(exclude)docs/plans/ci-humming.md' ':(exclude)docs/plans/edge-b-rust-dag-provenance-brief.md' ':(exclude)docs/plans/resolver-type-name-collision-wall.md' ':(exclude)docs/plans/realization-measurement-loop.md' ':(exclude)docs/plans/host-effect-orchestration.md' ':(exclude)docs/plans/ci-floor-fractal-gantt.md' ':(exclude)docs/plans/resolver-pathology-profile-receipt.md' ':(exclude)docs/plans/representation-minimization.md' ':(exclude)docs/plans/reference-grounding-migration.md' ':(exclude)docs/plans/typescript-gap-census.md' ':(exclude)docs/plans/cli-run-hollowing-plan.md' ':(exclude)docs/plans/fleet-acceptance-criteria.md' ':(exclude)docs/plans/structural-quadratic-wall-coverage-audit.md' ':(exclude)docs/plans/ci-performance-tanking-evidence.md' ':(exclude)docs/plans/extdeps-modeling-preflight.md' ':(exclude)src/v1/stage0/src/compiler_tests.rs' ':(exclude)src/v1/stage0/src/extdeps_cargo.rs' ':(exclude)src/v1/stage0/src/extdeps_cargo_version.rs' ':(exclude)src/v1/stage0/src/extdeps_container_oci_digest.rs' ':(exclude)src/v1/stage0/src/extdeps_external_authority.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_dag_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_dag_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_dag_types.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_go_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_go_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_go_types.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_python_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_python_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_python_types.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_rust_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_rust_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_rust_types.rs' ':(exclude)src/v1/stage0/src/extdeps_units_dimensionless.rs' ':(exclude)src/v1/stage0/src/extdeps_units_iec_80000_13.rs' ':(exclude)src/v1/stage0/src/extdeps_units_iso8601.rs' ':(exclude)src/v1/stage0/src/extdeps_uri.rs' ':(exclude)src/v1/stage0/src/extdeps_uri_path.rs' ':(exclude)src/v1/stage0/src/extdeps_version.rs' ':(exclude)src/v1/stage0/src/extdeps_version_semver.rs' ':(exclude)src/v1/stage0/src/gunbc_rust_decl_type_overlay.rs' ':(exclude)src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs' ':(exclude)src/v1/stage0/src/gunbc_stage0_crate_partition_generated.rs' ':(exclude)src/v1/stage0/src/lib.rs' ':(exclude)src/v1/stage0/src/std_algebra.rs' ':(exclude)src/v1/stage0/src/std_coercion.rs' ':(exclude)src/v1/stage0/src/std_computation.rs' ':(exclude)src/v1/stage0/src/std_constructors.rs' ':(exclude)src/v1/stage0/src/std_content_hash.rs' ':(exclude)src/v1/stage0/src/std_currency.rs' ':(exclude)src/v1/stage0/src/std_decl_ref.rs' ':(exclude)src/v1/stage0/src/std_disposition.rs' ':(exclude)src/v1/stage0/src/std_effects.rs' ':(exclude)src/v1/stage0/src/std_emit_model.rs' ':(exclude)src/v1/stage0/src/std_error_primitives.rs' ':(exclude)src/v1/stage0/src/std_execution_mode.rs' ':(exclude)src/v1/stage0/src/std_graph.rs' ':(exclude)src/v1/stage0/src/std_http_path.rs' ':(exclude)src/v1/stage0/src/std_induction.rs' ':(exclude)src/v1/stage0/src/std_integer.rs' ':(exclude)src/v1/stage0/src/std_interface_summary.rs' ':(exclude)src/v1/stage0/src/std_iteration.rs' ':(exclude)src/v1/stage0/src/std_keyed_roster.rs' ':(exclude)src/v1/stage0/src/std_keyed_row.rs' ':(exclude)src/v1/stage0/src/std_logic.rs' ':(exclude)src/v1/stage0/src/std_machine_constraints.rs' ':(exclude)src/v1/stage0/src/std_magnitude.rs' ':(exclude)src/v1/stage0/src/std_measure.rs' ':(exclude)src/v1/stage0/src/std_nat.rs' ':(exclude)src/v1/stage0/src/std_node.rs' ':(exclude)src/v1/stage0/src/std_occurrence_binding.rs' ':(exclude)src/v1/stage0/src/std_occurrence_binding_candidates.rs' ':(exclude)src/v1/stage0/src/std_occurrence_binding_resolve.rs' ':(exclude)src/v1/stage0/src/std_occurrence_identity.rs' ':(exclude)src/v1/stage0/src/std_pareto.rs' ':(exclude)src/v1/stage0/src/std_realization_schedule.rs' ':(exclude)src/v1/stage0/src/std_roster_frontier.rs' ':(exclude)src/v1/stage0/src/std_serialization.rs' ':(exclude)src/v1/stage0/src/std_syntax.rs' ':(exclude)src/v1/stage0/src/std_termination.rs' ':(exclude)src/v1/stage0/src/std_trait_derive_shape.rs' ':(exclude)src/v1/stage0/src/std_types.rs' ':(exclude)src/v1/stage0/src/std_unicode_types.rs' ':(exclude)src/v1/stage0/src/v1_compiler_artifact.rs' ':(exclude)src/v1/stage0/src/v1_compiler_closure_stub_v2_std_integer_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_closure_stub_v2_std_text_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_coercion.rs' ':(exclude)src/v1/stage0/src/v1_compiler_compile.rs' ':(exclude)src/v1/stage0/src/v1_compiler_compiler_tests_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_complexity.rs' ':(exclude)src/v1/stage0/src/v1_compiler_dag_collect.rs' ':(exclude)src/v1/stage0/src/v1_compiler_dag_collect_support.rs' ':(exclude)src/v1/stage0/src/v1_compiler_effect_derivation.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_core_support.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_go.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_python.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_access.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_cycle.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_emit_info.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_env.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_items.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_lookup.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_method.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_occurrence_binding.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_patterns.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_resolve.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_service.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_sigs.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_types.rs' ':(exclude)src/v1/stage0/src/v1_compiler_languages.rs' ':(exclude)src/v1/stage0/src/v1_compiler_normalize.rs' ':(exclude)src/v1/stage0/src/v1_compiler_ownership.rs' ':(exclude)src/v1/stage0/src/v1_compiler_parse.rs' ':(exclude)src/v1/stage0/src/v1_compiler_resolve.rs' ':(exclude)src/v1/stage0/src/v1_compiler_runtime_go.rs' ':(exclude)src/v1/stage0/src/v1_compiler_runtime_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_stage0_crates.rs' ':(exclude)src/v1/stage0/src/v1_compiler_tokenize.rs' ':(exclude)src/v1/stage0/src/v1_compiler_trace.rs' ':(exclude)src/v1/stage0/src/v1_compiler_trait_derive_emit.rs' ':(exclude)src/v1/stage0/src/v1_compiler_workspace_members.rs' ':(exclude)src/v1/stage0/src/v1_gunbc_occurrence_binding_parser_walk.rs' ':(exclude)src/v1/stage0/src/v1_probe_emit_interp.rs' ':(exclude)src/v1/stage0/src/v1_rt.rs' ':(exclude)src/v1/stage0/src/v1_std_core.rs' ':(exclude)src/v1/stage0/src/v1_test_non_ascii_perf_fixture.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_caret_parse_smoke_test.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_occurrence_binding_parser_walk_witness_test.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_pattern_binder_declaration_node_test.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_required_expr_newline_continuation_test.rs' ':(exclude)src/v1/stage0/src/wt_a.rs' ':(exclude)src/v1/stage0/src/wt_b.rs' ':(exclude)src/v1/stage0/src/wt_common.rs')" + AUTHORED_CONFLICTS="$(git diff --name-only --diff-filter=U -- . ':(exclude).github/workflows/ci.yml' ':(exclude).github/workflows/falsifier.yml' ':(exclude).gitignore' ':(exclude).gitattributes' ':(exclude)ROADMAP.md' ':(exclude)DESIGN.md' ':(exclude).githooks/pre-push' ':(exclude).githooks/pre-commit' ':(exclude)dag/gunbc/stage0_crate_layout_generated.dag' ':(exclude)src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs' ':(exclude)dag/gunbc/stage0_crate_partition_generated.dag' ':(exclude)dag/gunbc/stage0_emit_plan_generated.dag' ':(exclude)src/v1/stage0/src/v1_interpreter_dispatch_generated.rs' ':(exclude).github/live-deploy-srv1-apply.sh' ':(exclude).github/live-deploy-srv1-retract.sh' ':(exclude)docs/plans/idea-machine.md' ':(exclude)docs/plans/algebraic-rewrite-optimization.md' ':(exclude)docs/plans/dag-v2-defork-audit.md' ':(exclude)docs/plans/v2-self-hosting.md' ':(exclude)docs/plans/m5-fixture-store-consolidation.md' ':(exclude)docs/plans/model-realization-fork.md' ':(exclude)docs/plans/value-null-split.md' ':(exclude)docs/plans/ci-merge-freshness.md' ':(exclude)docs/plans/seed-debt-bundle-item-2.md' ':(exclude)docs/plans/axiom-syllogism-lens.md' ':(exclude)docs/plans/invert-hand-maintained.md' ':(exclude)docs/plans/fail-closed-lockdown.md' ':(exclude)docs/plans/format-model-reconciliation.md' ':(exclude)docs/plans/regime2-shared-emission-fold.md' ':(exclude)docs/plans/shell-emission-model.md' ':(exclude)docs/plans/construction-justification-rule.md' ':(exclude)docs/plans/emission-ingestion-inverse.md' ':(exclude)docs/plans/testgen-oracle.md' ':(exclude)docs/plans/disposition-carrier.md' ':(exclude)docs/plans/fold-ergonomics.md' ':(exclude)docs/plans/m4-universal-hermetic-corpus.md' ':(exclude)docs/plans/wiring-liveness-preflight.md' ':(exclude)docs/plans/interpreter-kernel-d.md' ':(exclude)docs/plans/inert-layer-lens.md' ':(exclude)docs/plans/compile-clean-forcecheck.md' ':(exclude)docs/plans/expressibility-frontier.md' ':(exclude)docs/plans/p1-where-clause-lowering.md' ':(exclude)docs/plans/intent-linearity-design-draft.md' ':(exclude)docs/plans/solve-higher-order-design.md' ':(exclude)docs/plans/language-target-self-host-frontier.md' ':(exclude)docs/plans/self-applying-lenses.md' ':(exclude)docs/plans/budget-tree.md' ':(exclude)docs/plans/cardinality-refinement.md' ':(exclude)docs/plans/compute-envelope-model.md' ':(exclude)docs/plans/input-envelope-roadmap.md' ':(exclude)docs/plans/ci-selection-vs-scheduling.md' ':(exclude)docs/plans/ci-process-end-to-end.md' ':(exclude)docs/plans/ci-oom-reclassification.md' ':(exclude)docs/plans/bounded-input-cost-envelope-scheduling.md' ':(exclude)docs/plans/ci-humming.md' ':(exclude)docs/plans/edge-b-rust-dag-provenance-brief.md' ':(exclude)docs/plans/resolver-type-name-collision-wall.md' ':(exclude)docs/plans/realization-measurement-loop.md' ':(exclude)docs/plans/host-effect-orchestration.md' ':(exclude)docs/plans/ci-floor-fractal-gantt.md' ':(exclude)docs/plans/resolver-pathology-profile-receipt.md' ':(exclude)docs/plans/representation-minimization.md' ':(exclude)docs/plans/reference-grounding-migration.md' ':(exclude)docs/plans/typescript-gap-census.md' ':(exclude)docs/plans/cli-run-hollowing-plan.md' ':(exclude)docs/plans/fleet-acceptance-criteria.md' ':(exclude)docs/plans/structural-quadratic-wall-coverage-audit.md' ':(exclude)docs/plans/ci-performance-tanking-evidence.md' ':(exclude)docs/plans/extdeps-modeling-preflight.md' ':(exclude)src/v1/stage0/src/compiler_tests.rs' ':(exclude)src/v1/stage0/src/extdeps_cargo.rs' ':(exclude)src/v1/stage0/src/extdeps_cargo_version.rs' ':(exclude)src/v1/stage0/src/extdeps_container_oci_digest.rs' ':(exclude)src/v1/stage0/src/extdeps_external_authority.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_dag_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_dag_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_dag_types.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_go_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_go_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_go_types.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_python_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_python_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_python_types.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_rust_emit.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_rust_syntax.rs' ':(exclude)src/v1/stage0/src/extdeps_languages_rust_types.rs' ':(exclude)src/v1/stage0/src/extdeps_units_dimensionless.rs' ':(exclude)src/v1/stage0/src/extdeps_units_iec_80000_13.rs' ':(exclude)src/v1/stage0/src/extdeps_units_iso8601.rs' ':(exclude)src/v1/stage0/src/extdeps_uri.rs' ':(exclude)src/v1/stage0/src/extdeps_uri_path.rs' ':(exclude)src/v1/stage0/src/extdeps_version.rs' ':(exclude)src/v1/stage0/src/extdeps_version_semver.rs' ':(exclude)src/v1/stage0/src/gunbc_rust_decl_type_overlay.rs' ':(exclude)src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs' ':(exclude)src/v1/stage0/src/gunbc_stage0_crate_partition_generated.rs' ':(exclude)src/v1/stage0/src/lib.rs' ':(exclude)src/v1/stage0/src/std_algebra.rs' ':(exclude)src/v1/stage0/src/std_coercion.rs' ':(exclude)src/v1/stage0/src/std_computation.rs' ':(exclude)src/v1/stage0/src/std_constructors.rs' ':(exclude)src/v1/stage0/src/std_content_hash.rs' ':(exclude)src/v1/stage0/src/std_currency.rs' ':(exclude)src/v1/stage0/src/std_decl_ref.rs' ':(exclude)src/v1/stage0/src/std_disposition.rs' ':(exclude)src/v1/stage0/src/std_effects.rs' ':(exclude)src/v1/stage0/src/std_emit_model.rs' ':(exclude)src/v1/stage0/src/std_error_primitives.rs' ':(exclude)src/v1/stage0/src/std_execution_mode.rs' ':(exclude)src/v1/stage0/src/std_graph.rs' ':(exclude)src/v1/stage0/src/std_http_path.rs' ':(exclude)src/v1/stage0/src/std_induction.rs' ':(exclude)src/v1/stage0/src/std_integer.rs' ':(exclude)src/v1/stage0/src/std_interface_summary.rs' ':(exclude)src/v1/stage0/src/std_iteration.rs' ':(exclude)src/v1/stage0/src/std_keyed_roster.rs' ':(exclude)src/v1/stage0/src/std_keyed_row.rs' ':(exclude)src/v1/stage0/src/std_logic.rs' ':(exclude)src/v1/stage0/src/std_machine_constraints.rs' ':(exclude)src/v1/stage0/src/std_magnitude.rs' ':(exclude)src/v1/stage0/src/std_measure.rs' ':(exclude)src/v1/stage0/src/std_nat.rs' ':(exclude)src/v1/stage0/src/std_node.rs' ':(exclude)src/v1/stage0/src/std_occurrence_binding.rs' ':(exclude)src/v1/stage0/src/std_occurrence_binding_candidates.rs' ':(exclude)src/v1/stage0/src/std_occurrence_binding_resolve.rs' ':(exclude)src/v1/stage0/src/std_occurrence_identity.rs' ':(exclude)src/v1/stage0/src/std_pareto.rs' ':(exclude)src/v1/stage0/src/std_realization_schedule.rs' ':(exclude)src/v1/stage0/src/std_roster_frontier.rs' ':(exclude)src/v1/stage0/src/std_serialization.rs' ':(exclude)src/v1/stage0/src/std_syntax.rs' ':(exclude)src/v1/stage0/src/std_termination.rs' ':(exclude)src/v1/stage0/src/std_trait_derive_shape.rs' ':(exclude)src/v1/stage0/src/std_types.rs' ':(exclude)src/v1/stage0/src/std_unicode_types.rs' ':(exclude)src/v1/stage0/src/v1_compiler_artifact.rs' ':(exclude)src/v1/stage0/src/v1_compiler_closure_stub_v2_std_integer_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_closure_stub_v2_std_text_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_coercion.rs' ':(exclude)src/v1/stage0/src/v1_compiler_compile.rs' ':(exclude)src/v1/stage0/src/v1_compiler_compiler_tests_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_complexity.rs' ':(exclude)src/v1/stage0/src/v1_compiler_dag_collect.rs' ':(exclude)src/v1/stage0/src/v1_compiler_dag_collect_support.rs' ':(exclude)src/v1/stage0/src/v1_compiler_effect_derivation.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_core_support.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_go.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_python.rs' ':(exclude)src/v1/stage0/src/v1_compiler_emit_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_access.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_cycle.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_emit_info.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_env.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_items.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_lookup.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_method.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_occurrence_binding.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_patterns.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_resolve.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_service.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_sigs.rs' ':(exclude)src/v1/stage0/src/v1_compiler_infer_types.rs' ':(exclude)src/v1/stage0/src/v1_compiler_languages.rs' ':(exclude)src/v1/stage0/src/v1_compiler_normalize.rs' ':(exclude)src/v1/stage0/src/v1_compiler_ownership.rs' ':(exclude)src/v1/stage0/src/v1_compiler_parse.rs' ':(exclude)src/v1/stage0/src/v1_compiler_resolve.rs' ':(exclude)src/v1/stage0/src/v1_compiler_runtime_go.rs' ':(exclude)src/v1/stage0/src/v1_compiler_runtime_rust.rs' ':(exclude)src/v1/stage0/src/v1_compiler_stage0_crates.rs' ':(exclude)src/v1/stage0/src/v1_compiler_tokenize.rs' ':(exclude)src/v1/stage0/src/v1_compiler_trace.rs' ':(exclude)src/v1/stage0/src/v1_compiler_trait_derive_emit.rs' ':(exclude)src/v1/stage0/src/v1_compiler_workspace_members.rs' ':(exclude)src/v1/stage0/src/v1_gunbc_occurrence_binding_parser_walk.rs' ':(exclude)src/v1/stage0/src/v1_probe_emit_interp.rs' ':(exclude)src/v1/stage0/src/v1_rt.rs' ':(exclude)src/v1/stage0/src/v1_std_core.rs' ':(exclude)src/v1/stage0/src/v1_test_non_ascii_perf_fixture.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_caret_parse_smoke_test.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_occurrence_binding_parser_walk_witness_test.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_occurrence_identity_debt_receipt_test.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_pattern_binder_declaration_node_test.rs' ':(exclude)src/v1/stage0/src/v1_tests_claim_required_expr_newline_continuation_test.rs' ':(exclude)src/v1/stage0/src/wt_a.rs' ':(exclude)src/v1/stage0/src/wt_b.rs' ':(exclude)src/v1/stage0/src/wt_common.rs')" if [ -n "$AUTHORED_CONFLICTS" ]; then echo "heal refused: binary/source revision skew, and the remedy CONFLICTS in authored files" >&2 echo " conflicting paths:" >&2 @@ -447,6 +447,7 @@ jobs: if [ -e "src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs" ]; then git add "src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs"; else echo "chore-heal: registered generated artifact absent on this tree, not staging: src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs"; fi if [ -e "dag/gunbc/stage0_crate_partition_generated.dag" ]; then git add "dag/gunbc/stage0_crate_partition_generated.dag"; else echo "chore-heal: registered generated artifact absent on this tree, not staging: dag/gunbc/stage0_crate_partition_generated.dag"; fi if [ -e "dag/gunbc/stage0_emit_plan_generated.dag" ]; then git add "dag/gunbc/stage0_emit_plan_generated.dag"; else echo "chore-heal: registered generated artifact absent on this tree, not staging: dag/gunbc/stage0_emit_plan_generated.dag"; fi + if [ -e "src/v1/stage0/src/v1_interpreter_dispatch_generated.rs" ]; then git add "src/v1/stage0/src/v1_interpreter_dispatch_generated.rs"; else echo "chore-heal: registered generated artifact absent on this tree, not staging: src/v1/stage0/src/v1_interpreter_dispatch_generated.rs"; fi if [ -e ".github/live-deploy-srv1-apply.sh" ]; then git add ".github/live-deploy-srv1-apply.sh"; else echo "chore-heal: registered generated artifact absent on this tree, not staging: .github/live-deploy-srv1-apply.sh"; fi if [ -e ".github/live-deploy-srv1-retract.sh" ]; then git add ".github/live-deploy-srv1-retract.sh"; else echo "chore-heal: registered generated artifact absent on this tree, not staging: .github/live-deploy-srv1-retract.sh"; fi if [ -e "docs/plans/idea-machine.md" ]; then git add "docs/plans/idea-machine.md"; else echo "chore-heal: registered generated artifact absent on this tree, not staging: docs/plans/idea-machine.md"; fi diff --git a/ROADMAP.md b/ROADMAP.md index 43e22576548..29dd49f2b7e 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -37,11 +37,10 @@ The graph has eleven lanes: SCM compatibility · namespace · P-derive · observ - [ ] **Keep an honest list of what still depends on the old compiler** — Every module is either generated by the new compiler or explicitly kept on the old one with a reason and a plan to move. Two separate questions, kept separate: whether the list found every module, and whether every module it found has been decided. A complete list of undecided modules and a decided list that missed modules are different failures and are reported differently. Why: Turns a vague sense of 'mostly done' into a finite, countable list someone can work through. [authority](dag/gunbc/v1_deletion_plan.dag) - [ ] **Work through the remaining hand-written files the products need** — Move the hand-written files the shipping tools still depend on. Anything that genuinely has to stay gets an explicit reason. Why: The main command-line tool is itself one of these files, so 'the products still build' is not something we can honestly claim until this is done. [authority](dag/gunbc/v1_deletion_plan.dag) - [ ] **Make sure deleting the old tests loses no coverage** — Every old test file removed has equivalent coverage that would actually catch the bug it was written for. Why: A guard that stays quiet is not the same as coverage; without this, deletion silently drops real protection. [authority](dag/gunbc/v1_deletion_plan.dag) +- [ ] **Let the model, not the Rust, decide what primitives exist** — Invert the roster. Today the Rust dispatch is the authority and the roster is derived from it; here the roster becomes the authority and the interpreter's local arm identity and spelling/form lookup are GENERATED from it, leaving hand Rust to supply only the handler bodies behind an exhaustive match. The semantic question of which primitive an arm realizes stays a separate join and does not move here. Why: While the denominator lives in Rust, 'which primitives does the interpreter provide' can only be answered by reading Rust, and a new dispatch site added there is invisible to every consumer that asks. That keeps interpreter deletion a judgment call instead of a derived population, and it leaves the primitive-identity join reading a surface that can grow behind its back. [authority](dag/gunbc/v1_interpreter_primitive_surface.dag) - [ ] **Write the closing check for: Make exact prior results reusable across invocations** — One executable check states when this is done, transcribed from the node's own bar: Wrong content, a missing entry, and a full store each refuse rather than quietly falling back to recomputing. Why: Turns a prose bar into a runnable verdict, so the node it gates can be dispatched and its completion checked rather than judged. [authority](docs/plans/witness-realization-plan.md) - [ ] **Make exact prior results reusable across invocations** — Iteration-speed and runtime infrastructure: exact input identity selects a bounded materialized result that can be served after restart without compiling. The v1 exit is one consumer of this kernel, not the kernel's parent purpose. Why: Repeated invocations currently rebuild results that an exact identity could safely serve; product iteration, tests, and the v1 exit all pay that recomputation independently. [authority](docs/plans/witness-realization-plan.md) - [ ] **Prove old and new agree, by running them, not by waiting** — Run the whole test suite cold on both, compare compile results, check the self-rebuild, and record each family's outcome. Why: Confidence that comes from 'it has been fine for a while' is not evidence; this replaces it with runs someone chose to do. [authority](dag/gunbc/v1_deletion_plan.dag) — requires all: v1-materialization-kernel, v1-emitter-fixed-point -- [ ] **Write the closing check for: Let the model, not the Rust, decide what primitives exist** — One executable check states when this is done, transcribed from the node's own bar: A roster row with no Rust handler must fail COMPILATION, not a test. A Rust handler that is not reachable through a generated arm identity must not be addable as another string-dispatch path. Editing alias order or an authored spelling must not change an arm identity. One spelling under two different forms must stay representable. An accepted shape or arity is either modeled on the roster or typed as unknown -- never guessed. And no Rust-only spelling denominator may remain anywhere: if one does, this node is not done. Why: Turns a prose bar into a runnable verdict, so the node it gates can be dispatched and its completion checked rather than judged. [authority](dag/gunbc/v1_interpreter_primitive_surface.dag) - - [ ] **Let the model, not the Rust, decide what primitives exist** — Invert the roster. Today the Rust dispatch is the authority and the roster is derived from it; here the roster becomes the authority and the interpreter's local arm identity and spelling/form lookup are GENERATED from it, leaving hand Rust to supply only the handler bodies behind an exhaustive match. The semantic question of which primitive an arm realizes stays a separate join and does not move here. Why: While the denominator lives in Rust, 'which primitives does the interpreter provide' can only be answered by reading Rust, and a new dispatch site added there is invisible to every consumer that asks. That keeps interpreter deletion a judgment call instead of a derived population, and it leaves the primitive-identity join reading a surface that can grow behind its back. [authority](dag/gunbc/v1_interpreter_primitive_surface.dag) - [ ] **Write the closing check for: The expecting-red probe corpus: the floor gap becomes a counted, continuously-measured number** — One executable check states when this is done, transcribed from the node's own bar: A probe that stops expecting red without its class's wall having landed is itself a red (greening is counted); the corpus reds if any probe pair loses its executing consumer. Why: Turns a prose bar into a runnable verdict, so the node it gates can be dispatched and its completion checked rather than judged. [authority](docs/plans/compiler-guarantee-recovery-gap-analysis.md) - [ ] **The expecting-red probe corpus: the floor gap becomes a counted, continuously-measured number** — One probe pair per floor class (deliberately-bad input expected to refuse; legitimate control expected to accept), enrolled as expecting-red rows via the known-red quarantine mechanism so today's fail-open state is measured, not asserted. Every currently-legitimate map/fold/filter/flat_map/service invocation form appears as a positive control so a future wall cannot green by refusing the language. Why: Replaces anecdote (gunbc#7479's 500) with a counted deficit per class; each wall that lands flips its probes to regression controls loudly. [authority](docs/plans/compiler-guarantee-recovery-gap-analysis.md) - [ ] **The guarantee claims carrier: rung state becomes DERIVED from execution receipts, never stored** — Four carriers, measurement separated from claim: GuaranteeRequirement (class identity, domain, harm, ceiling with typed reason, next_rung_trigger); GuaranteePath (subject_grain, acceptance_boundary, realization_target per gunbc.guarantee_measurement; one row per in-scope path, population derived from the census or completeness-witnessed); GuaranteeMeasurement (executed receipts naming their consumer); and GuaranteeDisposition DERIVED per path — Unmeasured | BelowFloor | FrontierAccepted | OnLadder | OutsideModeledGuarantee — folded by below-floor dominance, then frontier, then unmeasured, then MINIMUM rung across paths. No stored current_rung field exists, so a transcribed rung is unrepresentable; the five recovered vocabularies stay orthogonal, joined by class identity. Full shape: gap analysis sec 12 Stage 1b. Why: Ends the per-conversation re-derivation of what the compiler guarantees (the operator performed the missing meta-lens by hand three times this month); grounds the enforcement-intent StandingIntent thread instead of minting beside it. [authority](docs/plans/compiler-guarantee-recovery-gap-analysis.md) diff --git a/dag/extdeps/git/publication_transport.dag b/dag/extdeps/git/publication_transport.dag new file mode 100644 index 00000000000..423b040f0ad --- /dev/null +++ b/dag/extdeps/git/publication_transport.dag @@ -0,0 +1,102 @@ +module extdeps.git.publication_transport + +import std.types { Bool, CommitSha, GitRef, Int, List, NonEmptyStr, String } +import std.decl_ref { DeclarationRef, WholeDeclaration } +import extdeps.external_authority { ExternalAuthority, ExternalModelScope, ExternalSubjectRef } +import extdeps.uri { Uri, Https } + +data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority { + uri: Uri { + scheme: Https + locator: "git-scm.com/docs/git-push" + } +} + +data git_commit_external_authority_anchor: ExternalAuthority = ExternalAuthority { + uri: Uri { + scheme: Https + locator: "git-scm.com/docs/git-commit" + } +} + +data extdeps_model_scope: ExternalModelScope = ExternalModelScope { + subject: ExternalSubjectRef { + declaration: DeclarationRef { + module_path: "extdeps.git.publication_transport", + decl_name: "PublicationTransport", + field: WholeDeclaration + } + }, + first_citation: extdeps_external_authority_anchor, + further_citations: [git_commit_external_authority_anchor] +} + +data git_publication_transport_note: String = "Modeled upstream publication write operations de-fused from git.Core. GitPushRequest and GitCommitRequest are the interface shapes; shell argv lives only in git.PublicationTransport service transport rows — no parallel free-fn argv surface. Slice 1 is model + shadow only — consumers route through tools.publication_publisher before binding a transport handler in the live slice." + +type GitRefUpdateSpec { + local_ref: GitRef + remote_ref: GitRef +} + +type GitPushRequest { + remote: NonEmptyStr + ref_updates: List +} + +type GitCommitRequest { + message: NonEmptyStr + allow_empty: Bool +} + +data git_commit_allow_empty_dispatch_note: String = "GitCommitRequest.allow_empty selects RecordEmptyCommit vs RecordCommit at transport bind — two operations, because shell argv templates cannot branch on Bool." + +service git.PublicationTransport { + operation PushRefUpdate { + input { + remote: NonEmptyStr + refspec: NonEmptyStr + } + output { + exit_code: Int from "exit_code" + stderr: String from "stderr" + success: Bool from "exit_success" + } + transport shell { argv: ["git", "push", "{remote}", "{refspec}"] } + exit { + 0 => Unit + nonzero => String "Push failed" + } + } + + operation RecordCommit { + input { + message: NonEmptyStr + } + output { + sha: CommitSha from "stdout" + success: Bool from "exit_success" + stderr: String from "stderr" + } + transport shell { argv: ["git", "commit", "-m", "{message}"] } + exit { + 0 => Unit + nonzero => String "Commit failed" + } + } + + operation RecordEmptyCommit { + input { + message: NonEmptyStr + } + output { + sha: CommitSha from "stdout" + success: Bool from "exit_success" + stderr: String from "stderr" + } + transport shell { argv: ["git", "commit", "--allow-empty", "-m", "{message}"] } + exit { + 0 => Unit + nonzero => String "Commit failed" + } + } +} diff --git a/dag/gunbc/ci_layer_roots.dag b/dag/gunbc/ci_layer_roots.dag index 8609f3709b4..7d83f0831b8 100644 --- a/dag/gunbc/ci_layer_roots.dag +++ b/dag/gunbc/ci_layer_roots.dag @@ -487,6 +487,12 @@ data witness_exclusion_frontier: List = [ reason: "the LONG-test home at dir grain (operator 5-second rule): membership is a HOME with a construction backstop — the eval deadline makes an over-budget fast-lane witness unwritable-in-place (long_lane_exclusion_note; blessed Form-C in gunbc.roster_registry)", dissolve_on: "per-witness declared cost envelopes (witness-cost-locality admission law) subsume the dir grain" }, + WitnessExclusionRow { + pattern: "compiler_frontier_per_module_probe_test.dag", + classification: OfflineLocalRecipe, + reason: "operator-ruled OFFLINE long-lane resident (PR #7697): per-module frontier_probe_emit_from_ingest over 27 modules exceeds the 5s fast-lane budget; test/claim/long/ dir grain excludes discovery but this row names the OFFLINE local recipe consumer (compiler_frontier_per_module_probe_exclusion_note)", + dissolve_on: "all 27 roster modules surveyed at HEAD, frontier.dag rows hand-authored from receipts, compiler_frontier_per_module_probe_survey_holds greens on the full host_frontier_probe_survey manifest via the local recipe, totality wall witnesses pass — then row deletes with the probe scaffold dissolution" + }, WitnessExclusionRow { pattern: "no_fake_anomalies_witness_test.dag", classification: FalsifierRehomedBinWet, @@ -712,7 +718,7 @@ fn witness_admission_fixture_exclusion_substrings() -> List { data witness_exclusion_single_authority_reconciliation_note: String = "Single-authority reconciliation (module-identity-storage-binding Phase 0(b) follow-on; the prior note's dissolve-on FIRED 2026-07-22 via the group-of-units ruling): witness_exclusion_frontier is the ONE typed discovery-exclusion roster — every row carries pattern, consumer classification (the std.witness_admission WitnessConsumerCadence authority, no minted twin), reason, and dissolve_on. The former parallel lists witness_admission_offline_exclusion_substrings / witness_admission_fixture_exclusion_substrings are now DERIVED projections (classification filters) — the hand-kept containment alignment they needed is unwritable, so the old one-way-containment witness dissolved with them; v2.test.claim.witness_exclusion_reconciliation_test now witnesses row well-formedness (no DiscoverySelection row; NoConsumer only for the synthetic admission RED-control path; nonempty reason and dissolve_on per row) and explicit-roster consistency (BinWitnessWet / rehomed / substrate-long-lane rows name files the corresponding rosters actually run). As of 2026-08-03 it is a PATH POLICY roster: exact witness admission moved to gunbc.explicit_witness_admission at function grain and a QuarantineProbeExpectRed row here is refused outright, because a substring pattern can only be checked for containment against a schedule row and containment is not identity. whole_tree_resolve_exclusion_substrings stays the ONE concat(witness_exclusion_substrings(), whole_tree_strict_resolve_exclusion_substrings) pattern authority in .dag; the host projection in cli_run.rs parses the frontier rows with the real front-end and must stay list-identical (Rust unit test witness_whole_tree_resolve_exclusion_matches_concat_authority). Strict-walk probe bins consume whole_tree_probe_exclusion_substrings() — pattern rows ∪ host-derived module-path closure (census_exclude_derive) with LiveImporterExclusion receipts; docs/probes/census_extra_excludes.txt is a historical drift witness only (not authority). The roster is enrolled in gunbc.roster_registry as a DeclaredFrontier group. Dissolves when the enforcement-intent registry absorbs the roster or floor admission consumes per-row cost and consumer declarations directly." -data witness_admission_offline_note: String = "Phase 0(b) admission invariant (module-identity-storage-binding): operator-ruled OFFLINE exclusion substrings whose witness rows carry OfflineLocalRecipe consumers — documented local recipes in the paired exclusion notes (wet_integration_offline_note, enforcement_coverage_exclusion_note, accumulator_copy_roster_gate_exclusion_note, identity_captured_navigation_roster_gate_exclusion_note, lever_a_local_receipt_witness_exclusion_note, long_lane_exclusion_note). Dissolves when each row graduates to a scheduled CI consumer or deletes." +data witness_admission_offline_note: String = "Phase 0(b) admission invariant (module-identity-storage-binding): operator-ruled OFFLINE exclusion substrings whose witness rows carry OfflineLocalRecipe consumers — documented local recipes in the paired exclusion notes (wet_integration_offline_note, enforcement_coverage_exclusion_note, accumulator_copy_roster_gate_exclusion_note, identity_captured_navigation_roster_gate_exclusion_note, lever_a_local_receipt_witness_exclusion_note, compiler_frontier_per_module_probe_exclusion_note, long_lane_exclusion_note). Dissolves when each row graduates to a scheduled CI consumer or deletes." data crate_layout_transport_exclusion_note: String = "self_host/crate_layout_witness_test.dag is excluded from hermetic discovery and consumed by v2.workflow.module_binding_supply_transport (run_module_binding_supply_gate, reached from source_root_ingest_gate) — the same posture as its siblings program_assembly/real_ingest_test.dag and self_host/compiler_closure_emit_from_ingest_test.dag, which are transport-run for the same reason. @@ -732,7 +738,9 @@ fn known_red_probe_roster() -> List { known_red_probe_corpus_roster() } -data long_lane_exclusion_note: String = "test/claim/long/ is the LONG-test home (operator 5-second rule, 2026-07-12; authority + enforcement: gunbc_ci_fast_lane_rule_note / gunbc_ci_fast_lane_witness_eval_budget in v2.workflow.ci_floor_plan): a witness whose own eval reaches 5s does not run in per-PR discovery — the executor's cooperative eval deadline REDs it by name (EvalBudgetExceeded), and the fix is moving its file here (dag/test/claim/long/, src/v2/test/claim/long/), where discovery excludes it at dir grain and it runs via the local recipe (claim_batch --source-root dag --source-root src/v2 --entry --functions ) or the scheduled lane's future enrollment. First residents (receipted): s1_closure_receipt_test (whole-closure re-parse through the interpreted v2 frontend, 90+min eval, the run-29183446733 wedge class) and self_host_module_emit_derisk_test (~31s/witness). Unlike the roster exclusions above, membership here is a HOME, not a per-file ruling: the 5s deadline makes an over-budget fast-lane witness unwritable-in-place, so the roster cannot silently grow stale (§5 construction over validation). Dissolve-on: per-witness declared cost envelopes (witness-cost-locality admission law) subsume the dir grain." +data long_lane_exclusion_note: String = "test/claim/long/ is the LONG-test home (operator 5-second rule, 2026-07-12; authority + enforcement: gunbc_ci_fast_lane_rule_note / gunbc_ci_fast_lane_witness_eval_budget in v2.workflow.ci_floor_plan): a witness whose own eval reaches 5s does not run in per-PR discovery — the executor's cooperative eval deadline REDs it by name (EvalBudgetExceeded), and the fix is moving its file here (dag/test/claim/long/, src/v2/test/claim/long/), where discovery excludes it at dir grain and it runs via the local recipe (claim_batch --source-root dag --source-root src/v2 --entry --functions ) or the scheduled lane's future enrollment. First residents (receipted): s1_closure_receipt_test (whole-closure re-parse through the interpreted v2 frontend, 90+min eval, the run-29183446733 wedge class) and self_host_module_emit_derisk_test (~31s/witness). Named consumer with file-grain exclusion row: compiler_frontier_per_module_probe_test.dag (compiler_frontier_per_module_probe_exclusion_note). Unlike the roster exclusions above, membership here is a HOME, not a per-file ruling: the 5s deadline makes an over-budget fast-lane witness unwritable-in-place, so the roster cannot silently grow stale (§5 construction over validation). Dissolve-on: per-witness declared cost envelopes (witness-cost-locality admission law) subsume the dir grain." + +data compiler_frontier_per_module_probe_exclusion_note: String = "src/v2/test/claim/long/compiler_frontier_per_module_probe_test.dag is operator-ruled OFFLINE (PR #7697, still-bat-561 msg_24f52fb6): fixture-free per-module frontier_probe_emit_from_ingest receipts over all 27 compiler modules exceed the 5s per-PR fast-lane eval budget; discovery excludes via test/claim/long/ dir grain and per-PR CI never executes these witnesses — green CI says nothing about survey numbers unless the local recipe below ran. LOCAL RECIPE (authority — no scripts/ home): (1) cargo build -p v1-compiler --bin frontier_probe_survey; (2) per module in compiler_frontier_sweep_order, target/debug/frontier_probe_survey --source-root src/v2 --module (or docs/probes/run_frontier_probe_survey_per_module.sh scaffold until transport enrolls); (3) emit manifest: target/debug/frontier_probe_survey --source-root src/v2 --emit-survey-manifest target/frontier-probe-survey/host_frontier_probe_survey_manifest.dag; (4) claim_batch --source-root src/v2 --source-root dag --source-root target/frontier-probe-survey --entry src/v2/test/claim/long/compiler_frontier_per_module_probe_test.dag --functions compiler_frontier_per_module_probe_survey_holds,compiler_frontier_gap_clustering_common_root_at_blocker_class_holds,compiler_frontier_wave2_blocker_partition_totality_holds,compiler_frontier_roster_bidirectional_totality_live_survey_holds,compiler_frontier_receipt_totality_wall_live_survey_holds,compiler_frontier_wave2_emit_surface_dominates_holds,compiler_frontier_wave2_sizing_band_a_leaf_count_holds. Interim 17/27 survey receipt at HEAD 9f978aa8df is LOCAL-ONLY evidence in docs/probes/frontier_probe_exact_head_survey_2026-08-03.tsv — not implied by per-PR CI green. Dissolve-on: all 27 roster modules surveyed at HEAD, frontier.dag rows hand-authored from receipts, compiler_frontier_per_module_probe_survey_holds greens on the full manifest via this recipe, totality wall witnesses pass — then this note, the file-grain exclusion row, and the probe scaffold delete together." data wet_integration_offline_note: String = "Four wet-integration entries above (host_effect_apply, deploy_access_privilege, ci_deploy_observed_wet, random_bytes_csprng) are OFFLINE per the hermetic-floor posture (operator 2026-07-11: integration-style witnesses must not run regularly; CI runs hermetic/mocked behavior checks). Each performs genuinely live host effects the hermetic envelope refuses by construction: host_effect_apply drives real LocalShell/SSH host effects (the 133s row atop the slow-witness census), deploy_access_privilege applies privileged shell mutations through fixture actors, ci_deploy_observed_wet shells whoami + sudo -n, random_bytes_csprng reads host entropy. Hermetic duals stay discovered where they exist (the ci_deploy split keeps the pure half; deploy_access_check(access, actor) is the mock-shaped dual). Local recipe: claim_batch --wet --source-root dag --source-root src/v2 --entry per file. Dissolve-on: the scheduled (nightly) lane un-darkens and admits wet integration rows under its own budget — then these four enroll there as declared execution rows and the exclusion rows delete." @@ -740,7 +748,7 @@ data known_red_frontier_note: String = "HOW THE KNOWN-RED FRONTIER WORKS, and th data bin_witness_wet_note: String = "The remaining excluded entries are the BIN-EXECUTION witness class: their test fns run compiled seed witness binaries via tools.host_prelude.run_witness_bin (git.Inspect.Toplevel to locate the checkout, shell.Test.IsExecutable against target/release build artifacts, then process execution) — host effects on non-commit-deterministic inputs, so the hermetic envelope refuses them by construction (audit 2026-07-12: every refusal typed as IsExecutable / Run / IsNonEmpty / Dir; the pure fns that merely read transport modules pass hermetically and stay discovered). They carry core per-PR compiler coverage, so unlike the offline four they DO keep running on every PR — as the declared bin-witness wet batch (bin_witness_wet_entries below, a Wet-profiled explicit-entry batch in v2.workflow.ci_floor_plan), never as silently-wet discovery rows. EXCEPTION (Wave 2, 2026-07-15): emit->compile->run->equals-seed self-host behavioral receipts (Gate-4 std/logic first) moved to the falsifier nightly Wet follow-on batch (falsifier_self_host_wet_entries) — per-PR stays hermetic/mocked for that class; the falsifier is the proven template lane. Dissolve-on: these files migrate under the execution-corpus scope prefix and enroll as ExecutionWitnessKind rows in gunbc.commit_workflow; then this roster and its exclusion rows delete." -data bin_witness_wet_per_row_actions_log_observation_gap_note: String = "COUNTED OBSERVATION GAP (measured 2026-08-02, PR #7698 acceptance receipt on run 30765850510 job 91544901889): per-row outcomes for bin_witness_wet_entries are not discriminable from the GitHub Actions job log after the hermetic discovery corpus completes. The ordinary floor worker may still run the wet batch afterward, but inherited worker stderr is dropped on that transport — so grep over `gh run view --job N --log` finds no ✓/PASS line for any enrolled wet row (live_rust_observation_matches_actions_subject, repo_local_git_config_actuator_sets_local_bindings_by_real_execution, or siblings). A green `ci` job therefore collapses three states into one indistinguishable surface: row executed and passed, row selection-skipped, or wet batch never reached — the absorbing-fallback shape at the observation layer (DESIGN §5: ⊤-as-answer conflated with ⊤-as-ignorance). Enrollment on bin_witness_wet_entries routes witness_admission to BinWitnessWet; it does NOT close roadmap execution contracts that require a grep-visible executed pass line. Dissolve-on: the floor coordinator replays each ordinary-worker wet-batch row outcome (entry, function, pass | fail | selection-skipped with typed cause) into coordinator stderr immediately after worker exit, so every enrolled row is observable in the job log; acceptance receipt is run 30765850510-class grep showing live_rust_observation_matches_actions_subject pass line plus independently sourced GITHUB_SHA comparison — not enrollment meta-tests alone." +data bin_witness_wet_per_row_actions_log_observation_gap_note: String = "COUNTED OBSERVATION GAP (measured 2026-08-02, PR #7698 acceptance receipt on run 30765850510 job 91544901889): per-row outcomes for bin_witness_wet_entries were not discriminable from the GitHub Actions job log after the hermetic discovery corpus completed — inherited worker stderr dropped on that transport, so grep found no ✓/PASS line for enrolled wet rows. A green `ci` job collapsed executed-and-passed, selection-skipped, and batch-not-reached into one indistinguishable surface (DESIGN §5 absorbing-fallback at the observation layer). MECHANISM LANDED: `claim_executor` writes `target/floor-wet-witness-row-outcome-receipt.tsv` on the ordinary floor worker and the coordinator replays `[wet-witness-row-outcome]` lines (outcome=passed | failed | selection-skipped) after worker exit, including on coordinator refusal paths when spawn fails. Dissolve-on: a measured CI job log grep shows `live_rust_observation_matches_actions_subject` with `outcome=passed` (or typed failed/selection-skipped) plus run/job IDs quoted in the acceptance receipt — not enrollment meta-tests alone." data falsifier_self_host_wet_note: String = "The nightly falsifier Wet follow-on batch (gunbc_falsifier_batches batch 2 in v2.workflow.ci_floor_plan): explicit ExecutionWitnessKind rows whose fns realize the emit->compile->run->equals-seed self-host behavioral receipt chain (cargo build, process execution, real gunbc emit) — too heavy and fidelity-sensitive for per-PR hermetic discovery. Gate-4 std/logic (self_host_logic_behavioral_witness_test.dag) is the inaugural template migrated out of bin_witness_wet_entries; compiler modules enroll via v2.compiler.self_host.wet_receipt_enrollment when their frontier row flips SelfEmitted (green-only — never known-red). Runs SelectionApplied (always run, not predict-only) after the hermetic affected-set falsifier sweep. Local recipe: claim_batch --wet --source-root dag --source-root src/v2 --entry --functions . Dissolve-on: per-module self-host receipts graduate to continuous CI only when the emit-on-demand / self-host cutover lane proves each module's receipt is cheap enough for per-PR admission — until then this scheduled lane is the sole live consumer." @@ -1077,6 +1085,18 @@ data falsifier_substrate_long_lane_rows: List = [ function: "vacuity_consumer_witness_shadows_reconcile_with_admitted_exceptions", reason: "sibling corpus-ingest witness in the same file as the bound consumer witness (review 47233 enrollment sweep): live-shadow reconciliation against admitted exceptions. Measured 29754ms cold", dissolve_on: "eval lands under gunbc_ci_fast_lane_witness_eval_budget on a measured run and re-enrolls per-PR discovery, or deletes as duplicate of a faster receipt" + }, + SubstrateLongLaneRow { + entry: "dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag", + function: "witness_committed_is_fixed_point", + reason: "ReadsLiveTree fixed-point receipt: reads every committed artifact from disk and asserts artifact_generate reproduces bytes byte-for-byte. Measured 1005ms warm on srv_fleet_arm64 (witness_row_cost_basis) but flaked at 5004ms in falsifier discovery-corpus batch 1 under host contention (run 30550328673, BudgetExceeded) — borderline over the 5s fast-lane budget", + dissolve_on: "eval lands under gunbc_ci_fast_lane_witness_eval_budget on a measured cold run and re-enrolls per-PR discovery, or deletes as duplicate of a faster receipt" + }, + SubstrateLongLaneRow { + entry: "dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag", + function: "witness_committed_fixed_point_red_control", + reason: "RED control paired with witness_committed_is_fixed_point (same file, same Filesystem.Read + artifact_generate cost shape)", + dissolve_on: "eval lands under gunbc_ci_fast_lane_witness_eval_budget on a measured cold run and re-enrolls per-PR discovery, or deletes as duplicate of a faster receipt" } ] diff --git a/dag/gunbc/ci_spec.dag b/dag/gunbc/ci_spec.dag index 8e0431cc03c..c105405e366 100644 --- a/dag/gunbc/ci_spec.dag +++ b/dag/gunbc/ci_spec.dag @@ -481,7 +481,7 @@ data ci_heal_generated_artifact_gate_entry: String = "dag/tools/generated_artifa data ci_heal_generated_artifact_regen_function: String = "main_wet" -data ci_heal_regen_note: String = "The heal REGEN invoke: gunbc run on the generated-artifact drift gate's main_wet, which writes each committed_generated_artifacts() projection to its path (fail-closed fold — a write error stops the line, never a partial commit). Runs on the same witness_layer_roots and released gunbc binary the deploy job consumes. Idempotent by construction: on a tree already at the fixed point the writes are byte-identical, so the downstream commit-push step sees no git diff and pushes nothing — the loop terminates in one heal. That fixed point is the enforced contract of generated_artifact_drift_test.witness_committed_is_fixed_point (committed bytes == artifact_generate), so a non-terminating heal loop is unwritable while that witness stays green." +data ci_heal_regen_note: String = "The heal REGEN invoke: gunbc run on the generated-artifact drift gate's main_wet, which writes each committed_generated_artifacts() projection to its path (fail-closed fold — a write error stops the line, never a partial commit). Runs on the same witness_layer_roots and released gunbc binary the deploy job consumes. Idempotent by construction: on a tree already at the fixed point the writes are byte-identical, so the downstream commit-push step sees no git diff and pushes nothing — the loop terminates in one heal. That fixed point is the enforced contract of generated_artifact_drift_fixed_point_witness_test.witness_committed_is_fixed_point (committed bytes == artifact_generate), so a non-terminating heal loop is unwritable while that witness stays green." fn gunbc_ci_heal_regen_invoke() -> String { concat( diff --git a/dag/gunbc/doc_graph_roots.dag b/dag/gunbc/doc_graph_roots.dag index 8ca31854596..af298306090 100644 --- a/dag/gunbc/doc_graph_roots.dag +++ b/dag/gunbc/doc_graph_roots.dag @@ -237,6 +237,13 @@ data hand_authored_doc_binds: List = [ additional_works: [], dissolution: HasTrigger { text: "the structural declaration-container overlay predicate is consumed by a self-emitted emitter and the before/after receipt is absorbed into the Gate-1 behavioral fixed-point carrier; then this probe bind deletes with the md" }, }, + HandAuthoredDocBind { + home: ProbeDoc, + slug: "frontier_probe_exact_head_survey_2026-08-03", + primary_work: DeclarationRef { module_path: "v2.compiler.self_host.frontier_probe_survey", decl_name: "frontier_probe_exact_head_interim_audit_note", field: WholeDeclaration }, + additional_works: [DeclarationRef { module_path: "v2.compiler.self_host.frontier", decl_name: "compiler_frontier_receipt_totality_wall_holds", field: WholeDeclaration }], + dissolution: HasTrigger { text: "all 27 roster modules surveyed at HEAD, frontier.dag rows hand-authored from receipts, compiler_frontier_per_module_probe_survey_holds greens on the full manifest, and totality wall witnesses pass — then this interim audit receipt deletes with this row" }, + }, HandAuthoredDocBind { home: ProbeDoc, slug: "srv2-05-native-agreement-divergence-diagnosis", @@ -398,6 +405,13 @@ data hand_authored_doc_binds: List = [ additional_works: [], dissolution: HasTrigger { text: "Nat lives only in std.nat (coproduct + Peano ops), v2.std.nat imports rather than redefines it, the 138-entry co-occurrence class is gone, and integer's GroupCompletion cites the unified type — then this per-concept census doc deletes with this row (full criteria in the doc §9)" }, }, + HandAuthoredDocBind { + home: PlanDoc, + slug: "p1-retention-vs-drain-cohort-receipt", + primary_work: DeclarationRef { module_path: "gunbc.p1_retention_cohort_receipt", decl_name: "p1_retention_cohort_receipt_reproduction_steps", field: WholeDeclaration }, + additional_works: [DeclarationRef { module_path: "gunbc.p1_retention_cohort_receipt", decl_name: "p1_retention_cohort_receipt_verdict", field: WholeDeclaration }], + dissolution: HasTrigger { text: "the redirected assembly/materialization lane this receipt's REJECT verdict points to is picked up and either supersedes this pinned measurement with a canonical carrier or the parent floor-prep-tax-program plan closes P1 outright — then this receipt and its anchor module delete together, per the same scaffold trigger named beside p1_cohort_receipt_enabled in cli_run.rs." }, + }, HandAuthoredDocBind { home: PlanDoc, slug: "push-event-affected-set-baseline-design", @@ -405,6 +419,13 @@ data hand_authored_doc_binds: List = [ additional_works: [DeclarationRef { module_path: "v2.workflow.floor_diff_observe", decl_name: "floor_observe_ci_diff_event", field: WholeDeclaration }, DeclarationRef { module_path: "gunbc.diff_baseline", decl_name: "diff_baseline_fail_closed_law", field: WholeDeclaration }], dissolution: HasTrigger { text: "the last-green baseline lands — the push baseline becomes the last main commit whose floor RAN AND WHOSE SELECTION COVERED IT (not floor job conclusion, which stops meaning coverage the moment push selection becomes real), observed fail-closed so an undeterminable answer refuses instead of falling back to the before-SHA — and the stage-1 counted receipt for unverifiable predecessor coverage reaches zero. Then the sequencing argument is spent and the surviving facts live on their carriers, so this note deletes with this row. The evidence-status table is the part that must migrate rather than evaporate: which arms are observed, which are spec-grounded, and the window each measurement came from." }, }, + HandAuthoredDocBind { + home: PlanDoc, + slug: "sole-modeled-publisher-design", + primary_work: DeclarationRef { module_path: "tools.publication_publisher", decl_name: "PublicationAuthority", field: WholeDeclaration }, + additional_works: [DeclarationRef { module_path: "tools.publication_push_shadow", decl_name: "shadow_replay_public_pushes", field: WholeDeclaration }], + dissolution: HasTrigger { text: "live slice lands: ordinary sessions lose public-write credentials, git.PublicationTransport dispatch binds to PublicationAuthority, and shadow witness becomes regression control — then register as gunbc.plan.Plan row or delete with carriers" }, + }, ] fn hand_authored_doc_graph_roots() -> List { diff --git a/dag/gunbc/extdeps_scope_frontier.dag b/dag/gunbc/extdeps_scope_frontier.dag index 956dce6640a..dd769497438 100644 --- a/dag/gunbc/extdeps_scope_frontier.dag +++ b/dag/gunbc/extdeps_scope_frontier.dag @@ -127,6 +127,7 @@ data scope_carrier_paths: List = [ "dag/extdeps/automation/playwright.dag", "dag/extdeps/browser/chromium.dag", "dag/extdeps/container/oci/digest.dag", + "dag/extdeps/git/publication_transport.dag", "dag/extdeps/github/actions_environment.dag", "dag/extdeps/os/debian.dag", "dag/extdeps/tools/wc.dag", diff --git a/dag/gunbc/floor_component_receipt.dag b/dag/gunbc/floor_component_receipt.dag index d7775e066c2..d0a17a15abc 100644 --- a/dag/gunbc/floor_component_receipt.dag +++ b/dag/gunbc/floor_component_receipt.dag @@ -55,6 +55,7 @@ import extdeps.languages.json.emit { json_object, json_kv, } +import gunbc.selection_degradation_receipt { selection_degradation_receipt_json } data floor_component_receipt_note: String = "The floor's per-COMPONENT receipt, machine-readable, written on every exit path including a red one. WHY IT EXISTS, priced: .github/workflows/falsifier-alert.yml read only the overall workflow conclusion and hardcoded one causal story for every failure — 'affected-set cold control is dark, per-PR selection UNVERIFIED, Gate-1 receipts do not execute'. On run 30509024051 all three clauses were FALSE: the predict-only affected-set control concluded Done over 5217 witnesses and the expect_red batches produced their receipts; the single failing component was the silent-pick gate, killed at its whole-receipt wall budget. An overall-red composite that erases the green state of its completed children is a state-space conflation (DESIGN section 5), and it misdirects triage every time it fires. This module is the projection that makes the alert read state instead of inferring it. THE RECORD IS NOT NEW: each component is one batch-grain Concluded std.observation.ObservationEvent — the same authority gunbc.witness_row_cost names as THE record ('not a TSV schema') — so Refused stays distinct from Failed and a budget kill is TimedOut with its budget and elapsed, not a flattened red. A bespoke status schema here would have been a second representation of that record (DESIGN section 3)." @@ -389,8 +390,17 @@ fn floor_unsuccessful_component_rows(rows: List) -> List filter(r => !floor_component_row_is_done(row: r)) } -fn floor_component_receipt_json_value(run_id: NonEmptyStr, rows: List) -> JsonValue { - json_object(members: [ +fn floor_component_receipt_json_value( + run_id: NonEmptyStr, + rows: List, + selection_present: Bool, + selection_mode_tag: NonEmptyStr, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> JsonValue { + let base = [ json_kv(key: "schema", value: json_string(s: floor_component_receipt_schema)), json_kv(key: "run_id", value: json_string(s: run_id as String)), json_kv(key: "component_count", value: json_int(n: count(rows))), @@ -401,9 +411,55 @@ fn floor_component_receipt_json_value(run_id: NonEmptyStr, rows: List map(r => floor_component_row_json(row: r)) )) - ]) + ] + if selection_present { + json_object(members: concat(base, [ + json_kv( + key: "selection_degradation", + value: selection_degradation_receipt_json( + selection_mode_tag: selection_mode_tag, + selected: selected, + total: total, + categorization_unavailable: categorization_unavailable, + categorization_reason: categorization_reason + ) + ) + ])) + } else { + json_object(members: base) + } } fn floor_component_receipt_document(run_id: NonEmptyStr, rows: List) -> String { - serialize_json(v: floor_component_receipt_json_value(run_id: run_id, rows: rows)) + serialize_json(v: floor_component_receipt_json_value( + run_id: run_id, + rows: rows, + selection_present: false, + selection_mode_tag: "off" as NonEmptyStr, + selected: 0, + total: 0, + categorization_unavailable: false, + categorization_reason: "" + )) +} + +fn floor_component_receipt_document_with_selection( + run_id: NonEmptyStr, + rows: List, + selection_mode_tag: NonEmptyStr, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> String { + serialize_json(v: floor_component_receipt_json_value( + run_id: run_id, + rows: rows, + selection_present: true, + selection_mode_tag: selection_mode_tag, + selected: selected, + total: total, + categorization_unavailable: categorization_unavailable, + categorization_reason: categorization_reason + )) } diff --git a/dag/gunbc/generated_artifact.dag b/dag/gunbc/generated_artifact.dag index 7597e4f2620..3c6850a8fec 100644 --- a/dag/gunbc/generated_artifact.dag +++ b/dag/gunbc/generated_artifact.dag @@ -19,6 +19,7 @@ type GeneratedArtifact | Stage0CrateLayoutGeneratedRsArtifact | Stage0CratePartitionGeneratedDagArtifact | Stage0EmitPlanGeneratedDagArtifact + | V1InterpreterDispatchGeneratedRsArtifact | LiveDeployApplyScriptArtifact | LiveDeployRetractScriptArtifact | AutoinstallUserDataArtifact { spec: HostAutoinstall } @@ -28,7 +29,7 @@ type GeneratedArtifact data generated_artifact_registry: List = concat( concat( concat( - [CiYamlArtifact, FalsifierYamlArtifact, GitignoreArtifact, GitattributesArtifact, RoadmapArtifact, DesignArtifact, GithooksPrePushArtifact, GithooksPreCommitArtifact, RunnerDeployArtifact, Stage0CrateLayoutGeneratedDagArtifact, Stage0CrateLayoutGeneratedRsArtifact, Stage0CratePartitionGeneratedDagArtifact, Stage0EmitPlanGeneratedDagArtifact, LiveDeployApplyScriptArtifact, LiveDeployRetractScriptArtifact], + [CiYamlArtifact, FalsifierYamlArtifact, GitignoreArtifact, GitattributesArtifact, RoadmapArtifact, DesignArtifact, GithooksPrePushArtifact, GithooksPreCommitArtifact, RunnerDeployArtifact, Stage0CrateLayoutGeneratedDagArtifact, Stage0CrateLayoutGeneratedRsArtifact, Stage0CratePartitionGeneratedDagArtifact, Stage0EmitPlanGeneratedDagArtifact, V1InterpreterDispatchGeneratedRsArtifact, LiveDeployApplyScriptArtifact, LiveDeployRetractScriptArtifact], map(fleet_autoinstall_specs, s => AutoinstallUserDataArtifact { spec: s }) ), map(fleet_install_server_specs, s => ProxyDhcpDnsmasqArtifact { spec: s }) @@ -67,6 +68,7 @@ fn artifact_path(a: GeneratedArtifact) -> String { Stage0CrateLayoutGeneratedRsArtifact => "src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs" Stage0CratePartitionGeneratedDagArtifact => "dag/gunbc/stage0_crate_partition_generated.dag" Stage0EmitPlanGeneratedDagArtifact => "dag/gunbc/stage0_emit_plan_generated.dag" + V1InterpreterDispatchGeneratedRsArtifact => "src/v1/stage0/src/v1_interpreter_dispatch_generated.rs" LiveDeployApplyScriptArtifact => ".github/live-deploy-srv1-apply.sh" LiveDeployRetractScriptArtifact => ".github/live-deploy-srv1-retract.sh" AutoinstallUserDataArtifact { spec } => concat(concat("provisioning/", spec.host), "/user-data") @@ -91,6 +93,7 @@ fn artifact_commit_policy(a: GeneratedArtifact) -> CommitPolicy { Stage0CrateLayoutGeneratedRsArtifact => CommitRequired { consumer: GitProtocol } Stage0CratePartitionGeneratedDagArtifact => CommitRequired { consumer: GitProtocol } Stage0EmitPlanGeneratedDagArtifact => CommitRequired { consumer: GitProtocol } + V1InterpreterDispatchGeneratedRsArtifact => CommitRequired { consumer: GitProtocol } LiveDeployApplyScriptArtifact => CommitRequired { consumer: HostReconciler } LiveDeployRetractScriptArtifact => CommitRequired { consumer: HostReconciler } AutoinstallUserDataArtifact { spec: _ } => NotCommitted @@ -204,6 +207,7 @@ fn artifact_eq(a: GeneratedArtifact, b: GeneratedArtifact) -> Bool { Stage0CrateLayoutGeneratedRsArtifact => match b { Stage0CrateLayoutGeneratedRsArtifact => true _ => false } Stage0CratePartitionGeneratedDagArtifact => match b { Stage0CratePartitionGeneratedDagArtifact => true _ => false } Stage0EmitPlanGeneratedDagArtifact => match b { Stage0EmitPlanGeneratedDagArtifact => true _ => false } + V1InterpreterDispatchGeneratedRsArtifact => match b { V1InterpreterDispatchGeneratedRsArtifact => true _ => false } LiveDeployApplyScriptArtifact => match b { LiveDeployApplyScriptArtifact => true _ => false } LiveDeployRetractScriptArtifact => match b { LiveDeployRetractScriptArtifact => true _ => false } AutoinstallUserDataArtifact { spec } => match b { AutoinstallUserDataArtifact { spec: spec2 } => spec.host == spec2.host _ => false } diff --git a/dag/gunbc/generated_artifact_emit.dag b/dag/gunbc/generated_artifact_emit.dag index 74b6911ad06..2cf533230dd 100644 --- a/dag/gunbc/generated_artifact_emit.dag +++ b/dag/gunbc/generated_artifact_emit.dag @@ -9,6 +9,7 @@ import gunbc.generated_artifact { Stage0CrateLayoutGeneratedDagArtifact, Stage0CrateLayoutGeneratedRsArtifact, Stage0CratePartitionGeneratedDagArtifact, Stage0EmitPlanGeneratedDagArtifact, + V1InterpreterDispatchGeneratedRsArtifact, LiveDeployApplyScriptArtifact, LiveDeployRetractScriptArtifact, artifact_path } @@ -37,6 +38,11 @@ import gunbc.stage0_emit_plan_emit { Stage0EmitPlanGenerationRefused, expected_stage0_emit_plan_generated_dag } +import gunbc.v1_interpreter_dispatch_emit { + expected_v1_interpreter_dispatch_generated_rs, + V1InterpreterDispatchGenerated, + V1InterpreterDispatchGenerationRefused, +} import gunbc.live_deploy.emit { expected_live_deploy_apply_script, expected_live_deploy_retract_script @@ -71,6 +77,11 @@ fn artifact_generate(a: GeneratedArtifact) -> ArtifactGenerationOutcome { Stage0EmitPlanGenerated { content } => artifact_generated(content: content) Stage0EmitPlanGenerationRefused => ArtifactGenerationRefused { reason: "stage0 emission plan refused" } } + V1InterpreterDispatchGeneratedRsArtifact => match expected_v1_interpreter_dispatch_generated_rs() { + V1InterpreterDispatchGenerated { content } => artifact_generated(content: content) + V1InterpreterDispatchGenerationRefused { reason } => + ArtifactGenerationRefused { reason: reason } + } LiveDeployApplyScriptArtifact => artifact_generated(content: expected_live_deploy_apply_script()) LiveDeployRetractScriptArtifact => artifact_generated(content: expected_live_deploy_retract_script()) AutoinstallUserDataArtifact { spec } => artifact_generated(content: autoinstall_user_data(payload: spec.payload)) @@ -97,6 +108,10 @@ fn artifact_extra_valid(a: GeneratedArtifact) -> Bool { ArtifactGenerated { content: _ } => true ArtifactGenerationRefused { reason: _ } => false } + V1InterpreterDispatchGeneratedRsArtifact => match artifact_generate(a: a) { + ArtifactGenerated { content: _ } => true + ArtifactGenerationRefused { reason: _ } => false + } LiveDeployApplyScriptArtifact => true LiveDeployRetractScriptArtifact => true AutoinstallUserDataArtifact { spec: _ } => true diff --git a/dag/gunbc/observation_emit_census.dag b/dag/gunbc/observation_emit_census.dag index 4600b29fac8..271beff9cf0 100644 --- a/dag/gunbc/observation_emit_census.dag +++ b/dag/gunbc/observation_emit_census.dag @@ -141,6 +141,15 @@ data witness_row_cost_drift_site: CensusedEmitSite = CensusedEmitSite { } } +data selection_degradation_site: CensusedEmitSite = CensusedEmitSite { + marker: "[selection-degradation]" as NonEmptyStr, + source_file: "src/v1/stage0/src/cli_run.rs" as NonEmptyStr, + disposition: CountedFrontierSite { + reason: "floor prep-tax P2 selection honesty receipt — selection_state, selected/total entry groups, ratio, fallback_reason on every discovery completion" as NonEmptyStr, + dissolve_on: "fold into observation receipt projection once selection degradation speaks the observation vocabulary" as NonEmptyStr + } +} + data observation_emit_roster: List = [ floor_memory_site, typecheck_attribution_site, @@ -155,7 +164,8 @@ data observation_emit_roster: List = [ resolve_split_site, assembly_split_site, witness_row_cost_site, - witness_row_cost_drift_site + witness_row_cost_drift_site, + selection_degradation_site ] data observation_emit_roster_completeness_disposition: Disposition = Scaffold { @@ -167,7 +177,7 @@ data observation_emit_roster_completeness_disposition: Disposition = Scaffold { } } -data observation_emit_roster_completeness_note: String = "Roster is bidirectional: every rostered marker must still exist in the seed, AND every known live tag family born after the initial snapshot must appear on the roster (operator finding 3, run 30142403230). Frontier count = 8 (floor-drain, gate-warm-cost, receipt, file, resolve-split, assembly-split, witness-row-cost, witness-row-cost-drift). Six families MigratedToObservation. The unmarked eprintln sites remain the per-print completeness scaffold." +data observation_emit_roster_completeness_note: String = "Roster is bidirectional: every rostered marker must still exist in the seed, AND every known live tag family born after the initial snapshot must appear on the roster (operator finding 3, run 30142403230). Frontier count = 9 (floor-drain, gate-warm-cost, receipt, file, resolve-split, assembly-split, witness-row-cost, witness-row-cost-drift, selection-degradation). Six families MigratedToObservation. The unmarked eprintln sites remain the per-print completeness scaffold." fn emit_site_is_frontier(site: CensusedEmitSite) -> Bool { match site.disposition { diff --git a/dag/gunbc/occurrence_identity_acceptance_closure.dag b/dag/gunbc/occurrence_identity_acceptance_closure.dag new file mode 100644 index 00000000000..75ae42ce804 --- /dev/null +++ b/dag/gunbc/occurrence_identity_acceptance_closure.dag @@ -0,0 +1,305 @@ +module gunbc.occurrence_identity_acceptance_closure + +import std.types { Bool, String, List } +import std.occurrence_identity { + occurrence_identity_acceptance_law_rebuilt_reference, + occurrence_identity_acceptance_law_collector_dedupe, + occurrence_identity_acceptance_law_distinct_occurrences, + occurrence_identity_acceptance_law_pattern_reachability, + occurrence_identity_acceptance_law_parser_isolation, + occurrence_identity_acceptance_laws, +} + +type OccurrenceIdentityConsumerRedDebt { + id: String + required_receipt: String + owner: String + dissolve_on: String +} + +type OccurrenceIdentityReceiptEnrollmentDebt { + id: String + receipt_functions: List + owner: String + cause: String + dissolve_on: String +} + +data occurrence_identity_consumer_red_debt_rehome_note: String = "PR 7530 rehomed five rows from namespace-canonical-binding to namespace-reference-derived-closure by their actual acceptance boundary. Four receipts are green by local execution in v1.tests.claim.occurrence_identity_debt_receipt_test, but their consumer debt rows remain until gunbc.ci_layer_roots.parser_transport_witness_entries exists on main and executes them per PR. rebuilt-reference-identity-preservation has a deliberately split load-bearing receipt: w_rebuilt_reference_identity_preservation_executes_holds proves identity reaches the canonical sidecar consumer, while the generated pipeline_occurrence_sidecar_serde_round_trip assertion proves the production compile/reconcile rebuild preserves the exact transport. occurrence_identity_receipt_enrollment_debts tracks both missing enrollment surfaces. inferred-target-anchor-identity still belongs to namespace-canonical-binding because its receipt cannot execute before the production projection sites switch over.\n\none-occurrence-collector-dedupe remains on namespace-reference-derived-closure but cannot yet climb: the rehome test asked whether it conceptually precedes production changeover and missed that no production occurrence-aware repeated-discovery collector exists to observe. merge_occurrence_transports concatenates complete authored transports and validation correctly refuses duplicate authored rows; std.occurrence_binding_resolve P1 correctly refuses duplicate supplied candidate ids; the open structural producer buckets each already-validated declaration once and exposes no repeated-observation seam. None is the collector this receipt requires. The retained row names that missing seam as its next-rung trigger rather than fabricating a test-local deduper." + +data occurrence_identity_consumer_red_debts: List = [ + OccurrenceIdentityConsumerRedDebt { + id: "rebuilt-reference-identity-preservation", + required_receipt: occurrence_identity_acceptance_law_rebuilt_reference.required_receipt, + owner: "namespace-reference-derived-closure", + dissolve_on: "DISSOLVE-ON: gunbc.ci_layer_roots.parser_transport_witness_entries exists on main, executes w_rebuilt_reference_identity_preservation_executes_holds per PR, and the rebuilt-reference production RED executes through the sidecar-consuming canonical binding boundary; delete this row in the same PR.", + }, + OccurrenceIdentityConsumerRedDebt { + id: "one-occurrence-collector-dedupe", + required_receipt: occurrence_identity_acceptance_law_collector_dedupe.required_receipt, + owner: "namespace-reference-derived-closure", + dissolve_on: "NEXT-RUNG TRIGGER: a production occurrence-aware discovery collector must expose a seam where one exact authored OccurrenceId can be observed twice before candidate supply. merge_occurrence_transports is not that seam: it concatenates complete authored transports and duplicate authored rows must refuse. P1 candidate supply is not that seam: duplicate supplied identities must refuse. The structural producer's one-pass bucket over validated declarations is not that seam either. DISSOLVE-ON: once a design-required production collector exposes repeated observation, its exact-identity dedupe RED executes through the sidecar consumer and this row deletes in the same PR.", + }, + OccurrenceIdentityConsumerRedDebt { + id: "structurally-equal-distinct-occurrences", + required_receipt: occurrence_identity_acceptance_law_distinct_occurrences.required_receipt, + owner: "namespace-reference-derived-closure", + dissolve_on: "DISSOLVE-ON: gunbc.ci_layer_roots.parser_transport_witness_entries exists on main, executes w_structurally_equal_distinct_occurrences_execute_holds per PR, and the distinct-authored-occurrences RED executes against the sidecar consumer; delete this row in the same PR.", + }, + OccurrenceIdentityConsumerRedDebt { + id: "pattern-declaration-reachability", + required_receipt: occurrence_identity_acceptance_law_pattern_reachability.required_receipt, + owner: "namespace-reference-derived-closure", + dissolve_on: "DISSOLVE-ON: gunbc.ci_layer_roots.parser_transport_witness_entries exists on main, executes w_pattern_declaration_reachability_executes_holds per PR, and the pattern-declaration reachability RED executes through the production occurrence collector; delete this row in the same PR.", + }, + OccurrenceIdentityConsumerRedDebt { + id: "inferred-target-anchor-identity", + required_receipt: "An inferred target projection remains anchored to the exact authored occurrence instead of a rebuilt shell Node, spelling, or SourceSpan.", + owner: "namespace-canonical-binding", + dissolve_on: "DISSOLVE-ON: the inferred-target anchor RED executes through the production sidecar consumer; delete this row in the same PR.", + }, + OccurrenceIdentityConsumerRedDebt { + id: "same-spelling-parser-declaration-isolation", + required_receipt: occurrence_identity_acceptance_law_parser_isolation.required_receipt, + owner: "namespace-reference-derived-closure", + dissolve_on: "DISSOLVE-ON: gunbc.ci_layer_roots.parser_transport_witness_entries exists on main, executes w_same_spelling_parser_declaration_isolation_executes_holds per PR, and the full same-spelling parser-to-binding RED matrix executes at the canonical binding boundary; delete this row in the same PR.", + }, +] + +data occurrence_identity_receipt_enrollment_debts: List = [ + OccurrenceIdentityReceiptEnrollmentDebt { + id: "namespace-parser-occurrence-receipts-per-pr-enrollment", + receipt_functions: [ + "w_rebuilt_reference_identity_preservation_executes_holds", + "w_structurally_equal_distinct_occurrences_execute_holds", + "w_pattern_declaration_reachability_executes_holds", + "w_same_spelling_parser_declaration_isolation_executes_holds", + "pipeline_occurrence_sidecar_serde_round_trip", + ], + owner: "witness-scheduling-source-root-surface", + cause: "The four DAG receipts and the generated Rust rebuild assertion are green by execution and discriminating under planted defects, but none is executed per PR on main. The DAG receipts require the scoped dag and src/v1 parser-transport batch whose parser_transport_witness_entries roster is not yet on main. The Rust test crate containing pipeline_occurrence_sidecar_serde_round_trip is cargo-checked but its tests are not executed.", + dissolve_on: "DISSOLVE-ON: gunbc.ci_layer_roots.parser_transport_witness_entries exists on main and executes the four DAG functions per PR, and pipeline_occurrence_sidecar_serde_round_trip executes per PR or its rebuild assertion migrates into an enrolled witness; prove both enrollment surfaces and narrow or delete this row in the same PR.", + }, +] + +type OccurrenceIdentityReceiptExecution + = OccurrenceIdentityReceiptPassed + | OccurrenceIdentityReceiptFailed + | OccurrenceIdentityReceiptNotExecuted + +type OccurrenceIdentityExecutingReceipt { + law_id: String + required_receipt: String + consumer: String + execution: OccurrenceIdentityReceiptExecution +} + +type OccurrenceIdentityAdmittedDeferral { + law_id: String + required_receipt: String + reason: String + next_trigger: String +} + +type OccurrenceIdentityClosingRefusal + = DuplicateAcceptanceLaw { law_id: String } + | UnknownReceiptLaw { law_id: String } + | DuplicateReceiptLaw { law_id: String } + | StaleReceiptLaw { law_id: String } + | ReceiptDidNotPass { law_id: String } + | UnknownDeferralLaw { law_id: String } + | DuplicateDeferralLaw { law_id: String } + | StaleDeferralLaw { law_id: String } + | ReceiptDeferralOverlap { law_id: String } + +type OccurrenceIdentityClosingVerdict + = OccurrenceIdentityClosingCovered { deferred_law_ids: List } + | OccurrenceIdentityClosingOpen { missing_law_ids: List } + | OccurrenceIdentityClosingRefused { refusals: List } + +data occurrence_identity_closing_check_note: String = "Validation/workflow carrier for the namespace-reference-derived-closure node; execution outcomes, admitted deferrals, and node-closing verdicts deliberately do not live in the std.occurrence_identity identity authority. The closing verdict is derived from that authority's permanent occurrence_identity_acceptance_laws rows, scoped-batch execution observations, and admitted deferrals. The law population is not a caller parameter, so deleting a debt row or passing a narrowed list cannot delete a law. A receipt counts only when its law id and exact required_receipt still match and its execution observation is Passed; the scoped witness batch must supply that observation from execution, never from a roster entry asserting its own success. Unknown, duplicate, stale, non-green, and receipt-plus-deferral rows refuse. Covered with deferred_law_ids is an explicit deferred state, not completion; only Covered with an empty deferred population closes the node. The exact-denominator census is only a hand-maintained spec-growth tripwire; this derived unmatched-law-to-Open fold is the load-bearing guarantee, and the census must be deleted rather than automated into a self-comparison. This five-law occurrence-identity acceptance family is distinct from the six candidate-producer conformance laws owned by the namespace mechanism. Synthetic Passed rows are controls for this fold only and never evidence that a production receipt executed; production integration must replace them with the live scoped execution-observation join." + +fn occurrence_identity_law_id_known( + law_id: String +) -> Bool { + occurrence_identity_acceptance_laws |> any(law => law.id == law_id) +} + +fn occurrence_identity_law_exact( + law_id: String, + required_receipt: String +) -> Bool { + occurrence_identity_acceptance_laws + |> any(law => law.id == law_id && law.required_receipt == required_receipt) +} + +fn occurrence_identity_receipt_passed( + receipt: OccurrenceIdentityExecutingReceipt +) -> Bool { + match receipt.execution { + OccurrenceIdentityReceiptPassed => true + OccurrenceIdentityReceiptFailed => false + OccurrenceIdentityReceiptNotExecuted => false + } +} + +fn occurrence_identity_closing_refusal_concat( + left: List, + right: List +) -> List { + concat(left, right) +} + +fn occurrence_identity_closing_refusals( + receipts: List, + deferrals: List +) -> List { + let duplicate_laws = occurrence_identity_acceptance_laws + |> flat_map(law => + if (occurrence_identity_acceptance_laws + |> filter(other => other.id == law.id) + |> count) > 1 { + [DuplicateAcceptanceLaw { law_id: law.id }] + } else { + [] + } + ) + let unknown_receipts = receipts + |> flat_map(receipt => + if occurrence_identity_law_id_known(law_id: receipt.law_id) { + [] + } else { + [UnknownReceiptLaw { law_id: receipt.law_id }] + } + ) + let duplicate_receipts = occurrence_identity_acceptance_laws + |> flat_map(law => + if (receipts |> filter(receipt => receipt.law_id == law.id) |> count) > 1 { + [DuplicateReceiptLaw { law_id: law.id }] + } else { + [] + } + ) + let stale_receipts = receipts + |> flat_map(receipt => + if occurrence_identity_law_id_known(law_id: receipt.law_id) && + !occurrence_identity_law_exact( + law_id: receipt.law_id, + required_receipt: receipt.required_receipt, + ) { + [StaleReceiptLaw { law_id: receipt.law_id }] + } else { + [] + } + ) + let non_green_receipts = receipts + |> flat_map(receipt => + if occurrence_identity_receipt_passed(receipt: receipt) { + [] + } else { + [ReceiptDidNotPass { law_id: receipt.law_id }] + } + ) + let unknown_deferrals = deferrals + |> flat_map(deferral => + if occurrence_identity_law_id_known(law_id: deferral.law_id) { + [] + } else { + [UnknownDeferralLaw { law_id: deferral.law_id }] + } + ) + let duplicate_deferrals = occurrence_identity_acceptance_laws + |> flat_map(law => + if (deferrals |> filter(deferral => deferral.law_id == law.id) |> count) > 1 { + [DuplicateDeferralLaw { law_id: law.id }] + } else { + [] + } + ) + let stale_deferrals = deferrals + |> flat_map(deferral => + if occurrence_identity_law_id_known(law_id: deferral.law_id) && + !occurrence_identity_law_exact( + law_id: deferral.law_id, + required_receipt: deferral.required_receipt, + ) { + [StaleDeferralLaw { law_id: deferral.law_id }] + } else { + [] + } + ) + let overlaps = occurrence_identity_acceptance_laws + |> flat_map(law => + if (receipts |> any(receipt => receipt.law_id == law.id)) && + (deferrals |> any(deferral => deferral.law_id == law.id)) { + [ReceiptDeferralOverlap { law_id: law.id }] + } else { + [] + } + ) + occurrence_identity_closing_refusal_concat( + left: occurrence_identity_closing_refusal_concat( + left: occurrence_identity_closing_refusal_concat( + left: occurrence_identity_closing_refusal_concat( + left: duplicate_laws, + right: unknown_receipts, + ), + right: duplicate_receipts, + ), + right: stale_receipts, + ), + right: occurrence_identity_closing_refusal_concat( + left: occurrence_identity_closing_refusal_concat( + left: non_green_receipts, + right: unknown_deferrals, + ), + right: occurrence_identity_closing_refusal_concat( + left: occurrence_identity_closing_refusal_concat( + left: duplicate_deferrals, + right: stale_deferrals, + ), + right: overlaps, + ), + ), + ) +} + +fn occurrence_identity_closing_verdict( + receipts: List, + deferrals: List +) -> OccurrenceIdentityClosingVerdict { + let refusals = occurrence_identity_closing_refusals( + receipts: receipts, + deferrals: deferrals, + ) + if (refusals |> count) > 0 { + OccurrenceIdentityClosingRefused { refusals: refusals } + } else { + let missing_law_ids = occurrence_identity_acceptance_laws + |> filter(law => + !(receipts |> any(receipt => receipt.law_id == law.id)) && + !(deferrals |> any(deferral => deferral.law_id == law.id)) + ) + |> map(law => law.id) + if (missing_law_ids |> count) > 0 { + OccurrenceIdentityClosingOpen { missing_law_ids: missing_law_ids } + } else { + OccurrenceIdentityClosingCovered { + deferred_law_ids: occurrence_identity_acceptance_laws + |> filter(law => deferrals |> any(deferral => deferral.law_id == law.id)) + |> map(law => law.id), + } + } + } +} + +fn occurrence_identity_closing_complete( + verdict: OccurrenceIdentityClosingVerdict +) -> Bool { + match verdict { + OccurrenceIdentityClosingCovered { deferred_law_ids: deferred_law_ids } => + (deferred_law_ids |> count) == 0 + OccurrenceIdentityClosingOpen { missing_law_ids: _ } => false + OccurrenceIdentityClosingRefused { refusals: _ } => false + } +} diff --git a/dag/gunbc/p1_retention_cohort_receipt.dag b/dag/gunbc/p1_retention_cohort_receipt.dag new file mode 100644 index 00000000000..371bc717ce3 --- /dev/null +++ b/dag/gunbc/p1_retention_cohort_receipt.dag @@ -0,0 +1,7 @@ +module gunbc.p1_retention_cohort_receipt + +import std.types { String } + +data p1_retention_cohort_receipt_reproduction_steps: String = "git checkout the commit where p1_cohort_probe.rs first lands; ctrl-build --local -- cargo build -p v1-compiler --bin p1_cohort_probe --release; run twice over the fixed 50-entry cohort in p1_cohort_roster.txt — Mode A with GUNBC_FLOOR_DRAIN_RETENTION=1 GUNBC_P1_COHORT_RECEIPT=1 (default eviction ON), Mode B additionally with GUNBC_SCHEDULE_RETENTION_EVICT=0 (retain-all pole); compare [p1-cohort] wall_ms/resolve_ms per entry over the valid overlapping range. Full receipt: docs/plans/p1-retention-vs-drain-cohort-receipt.md." + +data p1_retention_cohort_receipt_verdict: String = "REJECT — entries 2..34 (the valid Mode-B overlap before its OOM kill at entry 34/50) do not stop repaying the ~1-2s per-entry tax when schedule-derived retention eviction is disabled; mean/median wall_ms and resolve_ms are statistically indistinguishable between Mode A (eviction on) and Mode B (retain-all). Schedule-derived retention/eviction is not the cause of the tax; redirect to assembly/materialization reuse." diff --git a/dag/gunbc/public_projection.dag b/dag/gunbc/public_projection.dag new file mode 100644 index 00000000000..329720191f1 --- /dev/null +++ b/dag/gunbc/public_projection.dag @@ -0,0 +1,128 @@ +module gunbc.public_projection + +import std.types { CommitSha, FilePath, List, NonEmptyStr } +import std.content_hash { + ContentHash, + content_hash_atom, + content_hash_combine_structural, + content_hash_tagged, + serialize_content_hash, + as_content_hash_structural, +} +import gunbc.publication_policy { + AdmittedPublicationPolicy, + PublicationDisposition, + PublishPublic, + WithholdPrivate, + resolve_disposition_for_path, +} + +data public_projection_note: String = "Derived public projection plan over authored subjects. Requires AdmittedPublicationPolicy from admit_publication_policy — illegal policies are unrepresentable on this path. Never the unrestricted authored tree and never a pathname census: policy resolves each subject's disposition, included_subjects carries only PublishPublic rows, omitted_subjects carries WithholdPrivate rows, and projection_digest fingerprints the admitted set." + +type PublicationSubject { + subject_identity: ContentHash + content_identity: ContentHash + path: FilePath +} + +type PublicProjectionPlan { + source_revision: CommitSha + policy_version: NonEmptyStr + included_subjects: List + omitted_subjects: List + projection_digest: ContentHash +} + +fn publication_subject_digest(subject: PublicationSubject) -> ContentHash { + content_hash_tagged( + tag: "publication-subject", + payload: content_hash_combine_structural( + left: content_hash_atom(value: serialize_content_hash(hash: subject.subject_identity)), + right: content_hash_atom(value: serialize_content_hash(hash: subject.content_identity)), + ), + ) +} + +fn projection_digest_from_subjects(subjects: List) -> ContentHash { + let digests = map(subjects, subject => publication_subject_digest(subject: subject)) + as_content_hash_structural( + structural: fold( + sort_by(digests, digest => serialize_content_hash(hash: digest) as String), + init: content_hash_atom(value: "public-projection" as NonEmptyStr), + f: fn(acc, digest) { + content_hash_combine_structural( + left: acc, + right: content_hash_atom(value: serialize_content_hash(hash: digest)), + ) + }, + ) + ) +} + +type AuthoredSubjectPartition { + included: List + omitted: List +} + +fn partition_authored_subjects( + admitted: AdmittedPublicationPolicy, + authored_subjects: List, +) -> AuthoredSubjectPartition { + fold( + authored_subjects, + init: AuthoredSubjectPartition { included: [], omitted: [] }, + f: fn(parts, subject) { + match resolve_disposition_for_path( + policy: admitted.policy, + path: subject.path, + ) { + PublishPublic => + AuthoredSubjectPartition { + included: append(parts.included, items: [subject]), + omitted: parts.omitted, + } + WithholdPrivate => + AuthoredSubjectPartition { + included: parts.included, + omitted: append(parts.omitted, items: [subject]), + } + } + }, + ) +} + +fn derive_public_projection_plan( + admitted: AdmittedPublicationPolicy, + source_revision: CommitSha, + authored_subjects: List, +) -> PublicProjectionPlan { + let parts = partition_authored_subjects( + admitted: admitted, + authored_subjects: authored_subjects, + ) + PublicProjectionPlan { + source_revision: source_revision, + policy_version: admitted.policy.version, + included_subjects: parts.included, + omitted_subjects: parts.omitted, + projection_digest: projection_digest_from_subjects(subjects: parts.included), + } +} + +fn public_projection_includes_subject( + plan: PublicProjectionPlan, + subject_identity: ContentHash, +) -> Bool { + fold(plan.included_subjects, init: false, f: fn(found, subject) { + found || subject.subject_identity == subject_identity + }) +} + +fn public_projection_omits_subject( + plan: PublicProjectionPlan, + subject_identity: ContentHash, +) -> Bool { + fold(plan.omitted_subjects, init: false, f: fn(found, subject) { + found || subject.subject_identity == subject_identity + }) +} diff --git a/dag/gunbc/publication_admission_delta.dag b/dag/gunbc/publication_admission_delta.dag new file mode 100644 index 00000000000..d64c1a6f504 --- /dev/null +++ b/dag/gunbc/publication_admission_delta.dag @@ -0,0 +1,155 @@ +module gunbc.publication_admission_delta + +import std.types { List, NonEmptyStr } +import std.content_hash { ContentHash } +import gunbc.public_projection { + PublicationSubject, + PublicProjectionPlan, + public_projection_includes_subject, + public_projection_omits_subject, + projection_digest_from_subjects, +} + +data publication_admission_delta_note: String = "Change-local publication admission compares current published projection vs candidate derived projection. Slice-1 classifies NewlyPublic, NewlyWithheld, and PolicyChanged only. Audience widenings and private-to-public references defer until audience/reference carriers land; digest mismatch refuses at admission via CandidateDigestInconsistent, not a delta class. Whole-projection audit is a separate centrally-owned main-health job, never inherited by unrelated PRs." + +type ProjectionDeltaClass + = NewlyPublic { subject: PublicationSubject } + | NewlyWithheld { subject: PublicationSubject } + | PolicyChanged { + from_version: NonEmptyStr, + to_version: NonEmptyStr, + } + +type ChangeLocalAdmissionRequest { + current: PublicProjectionPlan? + candidate: PublicProjectionPlan +} + +type ChangeLocalRefusal + = CandidateDigestInconsistent { + expected: ContentHash, + observed: ContentHash, + } + | WholeProjectionAuditRequired { + detail: String, + } + +type ChangeLocalAdmissionOutcome + = ChangeLocalAdmitted { + delta: List, + candidate: PublicProjectionPlan, + } + | ChangeLocalRefused { + cause: ChangeLocalRefusal, + } + +fn classify_subject_delta( + current: PublicProjectionPlan?, + candidate: PublicProjectionPlan, + subject: PublicationSubject, +) -> ProjectionDeltaClass? { + let included_now = match current { + Absent => false + Present { value: plan } => public_projection_includes_subject( + plan: plan, + subject_identity: subject.subject_identity, + ) + } + let included_candidate = public_projection_includes_subject( + plan: candidate, + subject_identity: subject.subject_identity, + ) + match included_now { + true => + match included_candidate { + true => Absent + false => Present { value: NewlyWithheld { subject: subject } } + } + false => + match included_candidate { + true => Present { value: NewlyPublic { subject: subject } } + false => Absent + } + } +} + +fn subject_identity_in_list( + subjects: List, + subject_identity: ContentHash, +) -> Bool { + fold(subjects, init: false, f: fn(found, subject) { + found || subject.subject_identity == subject_identity + }) +} + +fn candidate_delta_subjects( + current: PublicProjectionPlan?, + candidate: PublicProjectionPlan, +) -> List { + let candidate_subjects = concat(candidate.included_subjects, candidate.omitted_subjects) + match current { + Absent => candidate_subjects + Present { value: plan } => + fold(plan.included_subjects, init: candidate_subjects, f: fn(acc, subject) { + if subject_identity_in_list(subjects: acc, subject_identity: subject.subject_identity) { + acc + } else { + append(acc, items: [subject]) + } + }) + } +} + +fn admit_change_local_projection( + request: ChangeLocalAdmissionRequest, +) -> ChangeLocalAdmissionOutcome { + let recomputed = projection_digest_from_subjects(subjects: request.candidate.included_subjects) + if recomputed != request.candidate.projection_digest { + ChangeLocalRefused { + cause: CandidateDigestInconsistent { + expected: recomputed, + observed: request.candidate.projection_digest, + }, + } + } else { + let delta = fold( + candidate_delta_subjects(current: request.current, candidate: request.candidate), + init: [], + f: fn(acc, subject) { + match classify_subject_delta( + current: request.current, + candidate: request.candidate, + subject: subject, + ) { + Absent => acc + Present { value: item } => append(acc, items: [item]) + } + }, + ) + let policy_delta = match request.current { + Absent => [] + Present { value: current } => + if current.policy_version == request.candidate.policy_version { + [] + } else { + [PolicyChanged { + from_version: current.policy_version, + to_version: request.candidate.policy_version, + }] + } + } + ChangeLocalAdmitted { + delta: concat(policy_delta, delta), + candidate: request.candidate, + } + } +} + +fn change_local_admission_has_delta( + outcome: ChangeLocalAdmissionOutcome, +) -> Bool { + match outcome { + ChangeLocalAdmitted { delta: delta, candidate: _ } => count(delta) > 0 + ChangeLocalRefused { cause: _ } => false + } +} diff --git a/dag/gunbc/publication_decision.dag b/dag/gunbc/publication_decision.dag new file mode 100644 index 00000000000..64fd87a6ce1 --- /dev/null +++ b/dag/gunbc/publication_decision.dag @@ -0,0 +1,56 @@ +module gunbc.publication_decision + +import std.types { NonEmptyStr, String } +import std.content_hash { ContentHash } +import gunbc.public_projection { PublicationSubject } + +data publication_decision_note: String = "Exceptional publication decisions bind to content identity, not pathnames. publication_decision_authorizes_newly_public is the single authority for whether a receipt authorizes a newly public subject: matching subject/content identity, candidate policy_version, sole publisher authority, and UniversalPublicationAudience." + +type PublicationAuthorityId = NonEmptyStr where brand("PublicationAuthorityId") + +type PublicationAudience + = UniversalPublicationAudience + | EnumeratedPublicationAudience { label: String } + +type PublicationDecisionReceipt { + subject_identity: ContentHash + content_identity: ContentHash + audience: PublicationAudience + policy_version: NonEmptyStr + authority: PublicationAuthorityId +} + +fn publication_decision_binds_content( + receipt: PublicationDecisionReceipt, + subject_identity: ContentHash, + content_identity: ContentHash, +) -> Bool { + receipt.subject_identity == subject_identity && receipt.content_identity == content_identity +} + +fn publication_decision_authorizes_newly_public( + receipt: PublicationDecisionReceipt, + subject: PublicationSubject, + policy_version: NonEmptyStr, + authority: PublicationAuthorityId, +) -> Bool { + publication_decision_binds_content( + receipt: receipt, + subject_identity: subject.subject_identity, + content_identity: subject.content_identity, + ) + && receipt.policy_version == policy_version + && receipt.authority == authority + && match receipt.audience { + UniversalPublicationAudience => true + EnumeratedPublicationAudience { label: _ } => false + } +} + +fn publication_decision_requires_refresh( + receipt: PublicationDecisionReceipt, + subject_identity: ContentHash, + content_identity: ContentHash, +) -> Bool { + receipt.subject_identity == subject_identity && receipt.content_identity != content_identity +} diff --git a/dag/gunbc/publication_policy.dag b/dag/gunbc/publication_policy.dag new file mode 100644 index 00000000000..f3abf5b43eb --- /dev/null +++ b/dag/gunbc/publication_policy.dag @@ -0,0 +1,194 @@ +module gunbc.publication_policy + +import std.types { Bool, FilePath, List, NonEmptyStr, String } + +data publication_policy_note: String = "Subtree-prefix publication policy: default WithholdPrivate; explicit SubtreePublishRule rows override by most-specific matching prefix; unknown top-level roots refuse at construction. Duplicate identical rules are idempotent; conflicting rules at the same prefix refuse at construction — never a projection-wide ambiguity at admission time." + +type PublicationDisposition + = PublishPublic + | WithholdPrivate + +type SubtreePublishRule { + prefix: FilePath + disposition: PublicationDisposition +} + +type PublicationPolicy { + version: NonEmptyStr + default_disposition: PublicationDisposition + rules: List +} + +type AdmittedPublicationPolicy { + policy: PublicationPolicy +} + +type PublicationPolicyConstructionRefusal + = UnknownTopLevelRoot { prefix: FilePath } + | ConflictingSubtreeRule { prefix: FilePath } + +type PublicationPolicyConstructionOutcome + = PublicationPolicyAccepted { admitted: AdmittedPublicationPolicy } + | PublicationPolicyRefused { cause: PublicationPolicyConstructionRefusal } + +data publication_policy_default_disposition: PublicationDisposition = WithholdPrivate + +data known_publication_roots: List = [ + "dag", + "docs", + "src", +] + +fn path_segments(path: FilePath) -> List { + split(s: path as String, delimiter: "/") +} + +fn segment_prefix_is_prefix(prefix: List, path: List) -> Bool { + match prefix.first() { + Absent => true + Present { value: ph } => match path.first() { + Absent => false + Present { value: xh } => + ph == xh && segment_prefix_is_prefix(prefix: prefix.skip(n: 1), path: path.skip(n: 1)) + } + } +} + +fn path_under_prefix(path: FilePath, prefix: FilePath) -> Bool { + segment_prefix_is_prefix(prefix: path_segments(path: prefix), path: path_segments(path: path)) +} + +fn top_level_root(path: FilePath) -> String? { + match path_segments(path: path).first() { + Absent => Absent + Present { value: root } => Present { value: root } + } +} + +fn known_publication_root(path: FilePath) -> Bool { + match top_level_root(path: path) { + Absent => false + Present { value: root } => contains(known_publication_roots, root) + } +} + +fn rule_prefix_length(rule: SubtreePublishRule) -> Int { + count(path_segments(path: rule.prefix)) +} + +fn disposition_eq(left: PublicationDisposition, right: PublicationDisposition) -> Bool { + match left { + PublishPublic => match right { PublishPublic => true, WithholdPrivate => false } + WithholdPrivate => match right { WithholdPrivate => true, PublishPublic => false } + } +} + +fn rule_eq(left: SubtreePublishRule, right: SubtreePublishRule) -> Bool { + left.prefix == right.prefix && disposition_eq(left: left.disposition, right: right.disposition) +} + +fn matching_rules_for_path( + policy: PublicationPolicy, + path: FilePath, +) -> List { + fold(policy.rules, init: [], f: fn(acc, rule) { + if path_under_prefix(path: path, prefix: rule.prefix) { + append(acc, items: [rule]) + } else { + acc + } + }) +} + +fn most_specific_rule(rules: List) -> SubtreePublishRule? { + fold(rules, init: none, f: fn(best, rule) { + match best { + Absent => Present { value: rule } + Present { value: current } => + if rule_prefix_length(rule: rule) >= rule_prefix_length(rule: current) { + Present { value: rule } + } else { + best + } + } + }) +} + +fn resolve_disposition_for_path( + policy: PublicationPolicy, + path: FilePath, +) -> PublicationDisposition { + match most_specific_rule(rules: matching_rules_for_path(policy: policy, path: path)) { + Absent => policy.default_disposition + Present { value: rule } => rule.disposition + } +} + +fn same_prefix_rule_count(rules: List, prefix: FilePath) -> Int { + fold(rules, init: 0, f: fn(count, rule) { + if rule.prefix == prefix { count + 1 } else { count } + }) +} + +fn same_prefix_rules_share_disposition( + rules: List, + prefix: FilePath, + disposition: PublicationDisposition, +) -> Bool { + fold(rules, init: true, f: fn(ok, rule) { + if rule.prefix == prefix { + ok && disposition_eq(left: rule.disposition, right: disposition) + } else { + ok + } + }) +} + +fn publication_policy_rule_conflicts(rules: List) -> PublicationPolicyConstructionRefusal? { + fold(rules, init: none, f: fn(acc, rule) { + match acc { + Present { value: _ } => acc + Absent => + if same_prefix_rule_count(rules: rules, prefix: rule.prefix) > 1 { + if same_prefix_rules_share_disposition( + rules: rules, + prefix: rule.prefix, + disposition: rule.disposition, + ) { + none + } else { + Present { value: ConflictingSubtreeRule { prefix: rule.prefix } } + } + } else { + none + } + } + }) +} + +fn publication_policy_unknown_roots(rules: List) -> PublicationPolicyConstructionRefusal? { + fold(rules, init: none, f: fn(acc, rule) { + match acc { + Present { value: _ } => acc + Absent => + if known_publication_root(path: rule.prefix) { + none + } else { + Present { value: UnknownTopLevelRoot { prefix: rule.prefix } } + } + } + }) +} + +fn admit_publication_policy(policy: PublicationPolicy) -> PublicationPolicyConstructionOutcome { + match publication_policy_unknown_roots(rules: policy.rules) { + Present { value: cause } => PublicationPolicyRefused { cause: cause } + Absent => + match publication_policy_rule_conflicts(rules: policy.rules) { + Present { value: cause } => PublicationPolicyRefused { cause: cause } + Absent => PublicationPolicyAccepted { + admitted: AdmittedPublicationPolicy { policy: policy }, + } + } + } +} diff --git a/dag/gunbc/roadmap_authority.dag b/dag/gunbc/roadmap_authority.dag index 91d80853dae..27bd73d0fca 100644 --- a/dag/gunbc/roadmap_authority.dag +++ b/dag/gunbc/roadmap_authority.dag @@ -237,7 +237,7 @@ fn observation_raw_print_retirement_execution_contract() -> WorkItemExecutionCon ) } -data v1_rust_source_observation_execution_contract_note: String = "The node closes only on the nullary wet claim that reads the runner's GITHUB_SHA independently through shell.Env.Get, observes checkout HEAD through the existing Git path, and admits only their exact match — with a grep-visible executed pass line in a real CI job log (not enrollment alone). Binding the contract to the pure fold would permit constructed constants to stand in for liveness; binding it to the older population-only witness would prove only that Git returned paths, not that the paths belonged to the workflow subject. Per-row wet-batch execution is currently unobservable in Actions job logs after discovery corpus completes (gunbc.ci_layer_roots bin_witness_wet_per_row_actions_log_observation_gap_note); dissolve-on is coordinator replay of per-row outcomes." +data v1_rust_source_observation_execution_contract_note: String = "The node closes only on the nullary wet claim that reads the runner's GITHUB_SHA independently through shell.Env.Get, observes checkout HEAD through the existing Git path, and admits only their exact match. Binding the contract to the pure fold would permit constructed constants to stand in for liveness; binding it to the older population-only witness would prove only that Git returned paths, not that the paths belonged to the workflow subject." fn v1_rust_source_observation_execution_contract() -> WorkItemExecutionContract { gunbc_claim_execution_contract( @@ -264,6 +264,15 @@ fn v1_interpreter_primitive_roster_execution_contract() -> WorkItemExecutionCont ) } +data v1_interpreter_primitive_dispatch_authority_execution_contract_note: String = "THE CLOSING CHECK FOR v1-interpreter-primitive-dispatch-authority. R1 inverts the roster: gunbc.v1_interpreter_primitive_surface v1_interpreter_authored_roster_arms is the canonical authority as authored InterpreterPrimitiveDispatchArm rows; v1_interpreter_dispatch_emit derives Rust enum variant names from arm identity and generates lookup tables. Compile-time exhaustiveness is site-scoped: single-family dispatch sites get a non-wildcard enum match; eval_call_bridge and eval_call_native_intercept share one enum per site but expand per-family subsets with a required wildcard (missing handler body is runtime unreachable!, not compile error — per-family enum split is follow-up). Structural properties that survive roster growth are asserted here; R0 discriminating controls remain in v1_interpreter_primitive_surface_witness_test." + +fn v1_interpreter_primitive_dispatch_authority_execution_contract() -> WorkItemExecutionContract { + gunbc_claim_execution_contract( + entry: "dag/test/claim/v1_interpreter_primitive_dispatch_authority_acceptance_test.dag" as FilePath, + function: "v1_interpreter_primitive_dispatch_authority_acceptance_contract_holds" as NonEmptyStr, + ) +} + data scm_p1_proof_kernel_contract_note: String = "THE SCM P1 CLOSING DISCRIMINATOR, authored only after the first P1 carrier made the node's whole completion condition executable. The validation is deliberately RED: its closed capability population is the roadmap node's own bar, and this first slice supplies only the bounded candidate-generation model check. Missing behavior is derived set difference, never a hand-maintained progress count; duplicate passing rows cannot erase it, and a false row remains missing. The contract therefore cannot green on zero progress and cannot confuse a modeled carrier with an executed proof kernel. It is enrolled QuarantineProbeExpectRed in gunbc.ci_layer_roots. Each later P1 slice adds an executing scenario check without weakening the aggregate. When the final capability greens, that same change removes the expect-red enrollment and promotes the witness to ordinary discovery ratchet." fn scm_p1_proof_kernel_execution_contract() -> WorkItemExecutionContract { @@ -1351,7 +1360,7 @@ fn declared_roadmap_nodes() -> List { handback: "The roster; three derived denominators -- dispatch sites, distinct arm identities, distinct authored spellings -- rather than one conflated count, each derived from the roster rather than pinned as a literal; row-grain enumeration provenance, since a row's provenance is a fact about that row and not about its dispatch form; a reconciliation of every quoted dispatch line in the seed file into either a row or a named non-primitive residue; a typed disposition for the Rust the scaffold adds, naming every symbol and the exact deletion condition; and witnesses whose exact assertions are grounded in named identities or controlled fixtures rather than in counts copied from the tree, each detector carrying both a discriminating red and a positive control." ) ), v1_interpreter_primitive_roster_execution_contract()), - active( + with_execution(active( identity: "rn_5PWQ9J3XZM8TKB2NHR6VD0FCAS", id: "v1-interpreter-primitive-dispatch-authority", owner: "self-host", @@ -1360,12 +1369,12 @@ fn declared_roadmap_nodes() -> List { headline: "Let the model, not the Rust, decide what primitives exist", boundary: "Invert the roster. Today the Rust dispatch is the authority and the roster is derived from it; here the roster becomes the authority and the interpreter's local arm identity and spelling/form lookup are GENERATED from it, leaving hand Rust to supply only the handler bodies behind an exhaustive match. The semantic question of which primitive an arm realizes stays a separate join and does not move here.", displaced_cost: "While the denominator lives in Rust, 'which primitives does the interpreter provide' can only be answered by reading Rust, and a new dispatch site added there is invisible to every consumer that asks. That keeps interpreter deletion a judgment call instead of a derived population, and it leaves the primitive-identity join reading a surface that can grow behind its back.", - first_slice: "Generate the arm identity and the spelling/form lookup from the roster, and make the Rust handler match exhaustive over the generated identity, so the compiler refuses the mismatch instead of a checker reporting it.", - red_control: "A roster row with no Rust handler must fail COMPILATION, not a test. A Rust handler that is not reachable through a generated arm identity must not be addable as another string-dispatch path. Editing alias order or an authored spelling must not change an arm identity. One spelling under two different forms must stay representable. An accepted shape or arity is either modeled on the roster or typed as unknown -- never guessed. And no Rust-only spelling denominator may remain anywhere: if one does, this node is not done.", - out_of_scope: "Semantic primitive identity, which stays with the identity join. Deleting the interpreter, which is downstream. Any widening of what counts as a primitive: this node changes who decides, not the population.", - handback: "The generated identity and lookup; the exhaustive handler match with its compile-time refusal demonstrated by a red control; deletion of the R0 macro authorities, the roster functions and the interpreter_dispatch_arm_rows self-reading bridge; a stated disposition for each of the two declared R0 residual rows -- either moved into the authority or retained with its own independently justified non-primitive reason; and the hand-Rust line delta the inversion removes." + first_slice: "Generate the arm identity and the spelling/form lookup from the roster, and make the Rust handler match exhaustive over the generated identity — compile-time on single-family sites, runtime unreachable! backstop on bridge/native-intercept until per-family enum split.", + red_control: "On single-family dispatch sites (eval_builtin_inner, eval_algebra_method_inner, try_v2_std_collection_map_primitive_grounding, try_parse_table_memo_dispatch), a roster row with no Rust handler must fail COMPILATION, not a test. On eval_call_bridge and eval_call_native_intercept — shared enums with per-family macro subsets — the same mismatch degrades to runtime unreachable! until per-family enum split lands (named follow-up). A Rust handler that is not reachable through a generated arm identity must not be addable as another string-dispatch path. Editing alias order or an authored spelling must not change an arm identity. One spelling under two different forms must stay representable. An accepted shape or arity is either modeled on the roster or typed as unknown -- never guessed. And no Rust-only spelling denominator may remain anywhere: if one does, this node is not done.", + out_of_scope: "Semantic primitive identity, which stays with the identity join. Deleting the interpreter, which is downstream. Any widening of what counts as a primitive: this node changes who decides, not the population. Per-family enum split for bridge/native-intercept compile-time exhaustiveness is follow-up, not a blocker for this node's narrowed bar.", + handback: "The generated identity and lookup; site-scoped exhaustive handler match — compile-time refusal on single-family sites (witnessed in interpreter_dispatch_authority.rs), runtime unreachable! backstop on bridge/native-intercept with per-family enum split named as follow-up; deletion of the R0 macro authorities, the roster functions and the interpreter_dispatch_arm_rows self-reading bridge; a stated disposition for each of the two declared R0 residual rows -- either moved into the authority or retained with its own independently justified non-primitive reason; and the hand-Rust line delta the inversion removes." ) - ), + ), v1_interpreter_primitive_dispatch_authority_execution_contract()), active( identity: "rn_J4Q81A4BJ8TXN6ZE4481RMB3Y9", id: "v1-interpreter-quarantine", diff --git a/dag/gunbc/selection_degradation_receipt.dag b/dag/gunbc/selection_degradation_receipt.dag new file mode 100644 index 00000000000..3598a68bd72 --- /dev/null +++ b/dag/gunbc/selection_degradation_receipt.dag @@ -0,0 +1,314 @@ +module gunbc.selection_degradation_receipt + +import std.types { String, Bool, NonEmptyStr } +import std.nat { Nat } +import std.measure { BasisPoint, basis_point, basis_point_count } +import std.decimal { zero_pad_left } +import extdeps.languages.json.emit { + JsonValue, + JsonKeyValue, + json_string, + json_int, + json_bool, + json_object, + json_kv, +} + +data selection_degradation_receipt_path: String = "target/floor-selection-degradation-receipt.txt" + +data selection_degradation_receipt_note: String = "P2 of the floor prep-tax program (still-moth-459, 2026-08-03): every floor discovery run publishes selection honesty — state, selected/total entry groups, ratio, and fallback_reason — so an affected run that executes the whole corpus is a COUNTED performance degradation (SelectionSuperset), never quiet success (DESIGN section 5). SelectionDegradationUnavailable is the unknown selection_mode_tag fail-closed arm only; upfront categorization_unavailable augments Applied/Superset fallback_reason, not that state. Authority for classification and receipt shape; the seed transport in cli_run.rs resolves this module and calls selection_degradation_receipt_line with measured counts only." + +data selection_degradation_receipt_marker: NonEmptyStr = "[selection-degradation]" as NonEmptyStr + +type SelectionDegradationState + = SelectionDegradationOff + | SelectionDegradationPredictOnly + | SelectionDegradationApplied + | SelectionDegradationSuperset + | SelectionDegradationUnavailable + +type SelectionDegradationReceipt { + selection_state: SelectionDegradationState + selected_entry_groups: Nat + total_entry_groups: Nat + selection_ratio_bp: BasisPoint + fallback_reason: String +} + +fn selection_degradation_mode_of_tag(tag: NonEmptyStr) -> String { + tag as String +} + +fn selection_degradation_state_tag(state: SelectionDegradationState) -> String { + match state { + SelectionDegradationOff => "SelectionOff" + SelectionDegradationPredictOnly => "SelectionPredictOnly" + SelectionDegradationApplied => "SelectionApplied" + SelectionDegradationSuperset => "SelectionSuperset" + SelectionDegradationUnavailable => "SelectionUnavailable" + } +} + +fn selection_ratio_basis_points(selected: Nat, total: Nat) -> BasisPoint { + if total == 0 { + basis_point(count: 0) + } else { + basis_point(count: (selected * 10000) / total) + } +} + +fn selection_ratio_wire(selected: Nat, total: Nat) -> String { + let bp = basis_point_count(bp: selection_ratio_basis_points(selected: selected, total: total)) + let unit = 10000 + let whole = bp / unit + let frac = bp - (whole * unit) + join( + [to_string(whole), ".", zero_pad_left(digits: to_string(frac), width: 4)], + "" + ) +} + +fn selection_degradation_fallback_reason_off() -> String { + "node_frontier_selection=SelectionOff — full corpus roster executed" +} + +fn selection_degradation_fallback_reason_predict_only() -> String { + "node_frontier_selection=SelectionPredictOnly — all witnesses run cold; divergences counted" +} + +fn selection_degradation_fallback_reason_applied_narrowed(selected: Nat, total: Nat) -> String { + concat( + "SelectionApplied: ", + concat( + concat(to_string(selected), concat(" of ", to_string(total))), + " entry groups executed (import-closure and node-frontier skip reduced the run)" + ) + ) +} + +fn selection_degradation_fallback_reason_superset(total: Nat) -> String { + concat( + "SelectionSuperset: all ", + concat( + to_string(total), + " entry groups executed — affected-set selection did not narrow the floor (counted performance degradation)" + ) + ) +} + +fn selection_degradation_fallback_reason_categorization_unavailable(detail: String) -> String { + concat( + "upfront import-closure categorization failed (", + concat(detail, "); per-shard selection is authoritative at completion") + ) +} + +fn selection_degradation_fallback_reason_unknown_mode_tag(tag: NonEmptyStr) -> String { + concat( + "SelectionUnavailable: unknown selection_mode_tag (", + concat(tag as String, "); expected off|applied|predict_only") + ) +} + +fn selection_degradation_state_of( + selection_mode_tag: NonEmptyStr, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> SelectionDegradationState { + if selection_mode_tag == ("off" as NonEmptyStr) { + SelectionDegradationOff + } else if selection_mode_tag == ("predict_only" as NonEmptyStr) { + SelectionDegradationPredictOnly + } else if selection_mode_tag == ("applied" as NonEmptyStr) { + if selected == total { + SelectionDegradationSuperset + } else { + SelectionDegradationApplied + } + } else { + SelectionDegradationUnavailable + } +} + +fn selection_degradation_fallback_reason_of( + selection_mode_tag: NonEmptyStr, + state: SelectionDegradationState, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> String { + match state { + SelectionDegradationOff => selection_degradation_fallback_reason_off() + SelectionDegradationPredictOnly => selection_degradation_fallback_reason_predict_only() + SelectionDegradationApplied => + if categorization_unavailable { + concat( + selection_degradation_fallback_reason_applied_narrowed(selected: selected, total: total), + concat( + " — ", + selection_degradation_fallback_reason_categorization_unavailable(detail: categorization_reason) + ) + ) + } else { + selection_degradation_fallback_reason_applied_narrowed(selected: selected, total: total) + } + SelectionDegradationSuperset => + if categorization_unavailable { + concat( + selection_degradation_fallback_reason_superset(total: total), + concat( + " — ", + selection_degradation_fallback_reason_categorization_unavailable(detail: categorization_reason) + ) + ) + } else { + selection_degradation_fallback_reason_superset(total: total) + } + SelectionDegradationUnavailable => + selection_degradation_fallback_reason_unknown_mode_tag(tag: selection_mode_tag) + } +} + +fn selection_degradation_receipt_of( + selection_mode_tag: NonEmptyStr, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> SelectionDegradationReceipt { + let state = selection_degradation_state_of( + selection_mode_tag: selection_mode_tag, + selected: selected, + total: total, + categorization_unavailable: categorization_unavailable, + categorization_reason: categorization_reason + ) + SelectionDegradationReceipt { + selection_state: state, + selected_entry_groups: selected, + total_entry_groups: total, + selection_ratio_bp: selection_ratio_basis_points(selected: selected, total: total), + fallback_reason: selection_degradation_fallback_reason_of( + selection_mode_tag: selection_mode_tag, + state: state, + selected: selected, + total: total, + categorization_unavailable: categorization_unavailable, + categorization_reason: categorization_reason + ) + } +} + +fn selection_degradation_receipt_line( + selection_mode_tag: NonEmptyStr, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> String { + let r = selection_degradation_receipt_of( + selection_mode_tag: selection_mode_tag, + selected: selected, + total: total, + categorization_unavailable: categorization_unavailable, + categorization_reason: categorization_reason + ) + concat( + concat( + concat(selection_degradation_receipt_marker as String, " selection_state="), + selection_degradation_state_tag(state: r.selection_state) + ), + concat( + concat( + concat( + concat(" selected_entry_groups=", to_string(r.selected_entry_groups)), + concat(" total_entry_groups=", to_string(r.total_entry_groups)) + ), + concat(" selection_ratio=", selection_ratio_wire(selected: selected, total: total)) + ), + concat(" fallback_reason=", r.fallback_reason) + ) + ) +} + +fn selection_degradation_receipt_body( + selection_mode_tag: NonEmptyStr, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> String { + let r = selection_degradation_receipt_of( + selection_mode_tag: selection_mode_tag, + selected: selected, + total: total, + categorization_unavailable: categorization_unavailable, + categorization_reason: categorization_reason + ) + concat( + concat( + concat( + concat("selection_state=", selection_degradation_state_tag(state: r.selection_state)), + concat("\nselected_entry_groups=", to_string(r.selected_entry_groups)) + ), + concat("\ntotal_entry_groups=", to_string(r.total_entry_groups)) + ), + concat( + concat("\nselection_ratio=", selection_ratio_wire(selected: selected, total: total)), + concat("\nfallback_reason=", r.fallback_reason) + ) + ) +} + +fn selection_degradation_receipt_json( + selection_mode_tag: NonEmptyStr, + selected: Nat, + total: Nat, + categorization_unavailable: Bool, + categorization_reason: String +) -> JsonValue { + let r = selection_degradation_receipt_of( + selection_mode_tag: selection_mode_tag, + selected: selected, + total: total, + categorization_unavailable: categorization_unavailable, + categorization_reason: categorization_reason + ) + json_object(members: [ + json_kv( + key: "selection_state", + value: json_string(s: selection_degradation_state_tag(state: r.selection_state)) + ), + json_kv(key: "selected_entry_groups", value: json_int(n: r.selected_entry_groups)), + json_kv(key: "total_entry_groups", value: json_int(n: r.total_entry_groups)), + json_kv( + key: "selection_ratio", + value: json_string(s: selection_ratio_wire(selected: selected, total: total)) + ), + json_kv(key: "fallback_reason", value: json_string(s: r.fallback_reason)), + json_kv(key: "categorization_unavailable", value: json_bool(b: categorization_unavailable)) + ]) +} + +fn selection_degradation_is_superset(receipt: SelectionDegradationReceipt) -> Bool { + match receipt.selection_state { + SelectionDegradationSuperset => true + SelectionDegradationOff => false + SelectionDegradationPredictOnly => false + SelectionDegradationApplied => false + SelectionDegradationUnavailable => false + } +} + +fn selection_degradation_is_applied_narrowed(receipt: SelectionDegradationReceipt) -> Bool { + match receipt.selection_state { + SelectionDegradationApplied => true + SelectionDegradationOff => false + SelectionDegradationPredictOnly => false + SelectionDegradationSuperset => false + SelectionDegradationUnavailable => false + } +} diff --git a/dag/gunbc/stage0_crate_layout_generated.dag b/dag/gunbc/stage0_crate_layout_generated.dag index 1fce54b7414..f2341efef99 100644 --- a/dag/gunbc/stage0_crate_layout_generated.dag +++ b/dag/gunbc/stage0_crate_layout_generated.dag @@ -4,7 +4,7 @@ import std.types { List, String } data stage0_crate_layout_generated_note: String = "Generated by gunbc stage0_crate_layout_emit — do not hand-edit. Authority: v2.compiler.self_host.frontier; regen via dag/tools/generated_artifact_gate.dag main_wet." -data generated_pub_mod_block: String = "\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_program_partition;\npub mod v2_compiler_tokenize;\npub mod v2_compiler_infer;" +data generated_pub_mod_block: String = "\n#[macro_use]\npub mod v1_interpreter_dispatch_generated;\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_program_partition;\npub mod v2_compiler_tokenize;\npub mod v2_compiler_infer;" data generated_pub_mod_basenames: List = [ "v1_interpreter", @@ -21,7 +21,8 @@ data generated_pub_mod_basenames: List = [ "v2_compiler_resolve", "v2_compiler_program_partition", "v2_compiler_tokenize", - "v2_compiler_infer" + "v2_compiler_infer", + "v1_interpreter_dispatch_generated" ] data generated_stage0_filenames: List = [ @@ -49,7 +50,8 @@ data generated_stage0_filenames: List = [ "v2_compiler_resolve.rs", "v2_compiler_program_partition.rs", "v2_compiler_tokenize.rs", - "v2_compiler_infer.rs" + "v2_compiler_infer.rs", + "v1_interpreter_dispatch_generated.rs" ] data generated_stage0_dirs: List = [ diff --git a/dag/gunbc/stage0_emit_plan_generated.dag b/dag/gunbc/stage0_emit_plan_generated.dag index 701391fd7c3..d4067b81272 100644 --- a/dag/gunbc/stage0_emit_plan_generated.dag +++ b/dag/gunbc/stage0_emit_plan_generated.dag @@ -120,6 +120,7 @@ data generated_stage0_files: List = [ "v1_test_non_ascii_perf_fixture.rs", "v1_tests_claim_caret_parse_smoke_test.rs", "v1_tests_claim_occurrence_binding_parser_walk_witness_test.rs", + "v1_tests_claim_occurrence_identity_debt_receipt_test.rs", "v1_tests_claim_pattern_binder_declaration_node_test.rs", "v1_tests_claim_required_expr_newline_continuation_test.rs", "wt_a.rs", @@ -243,6 +244,7 @@ data generated_stage0_paths: List = [ "src/v1/stage0/src/v1_test_non_ascii_perf_fixture.rs", "src/v1/stage0/src/v1_tests_claim_caret_parse_smoke_test.rs", "src/v1/stage0/src/v1_tests_claim_occurrence_binding_parser_walk_witness_test.rs", + "src/v1/stage0/src/v1_tests_claim_occurrence_identity_debt_receipt_test.rs", "src/v1/stage0/src/v1_tests_claim_pattern_binder_declaration_node_test.rs", "src/v1/stage0/src/v1_tests_claim_required_expr_newline_continuation_test.rs", "src/v1/stage0/src/wt_a.rs", diff --git a/dag/gunbc/v1_interpreter_dispatch_emit.dag b/dag/gunbc/v1_interpreter_dispatch_emit.dag new file mode 100644 index 00000000000..01bbb5db6a9 --- /dev/null +++ b/dag/gunbc/v1_interpreter_dispatch_emit.dag @@ -0,0 +1,284 @@ +module gunbc.v1_interpreter_dispatch_emit + +import gunbc.v1_interpreter_primitive_surface { + InterpreterPrimitiveDispatchArm, + v1_interpreter_authored_roster_arms, +} +import v2.std.algebra { fold_list } +import v2.std.collection { List } +import v2.std.text { String } + +fn escape_rust_string_literal_body(s: String) -> String { + replace(replace(replace(s, "\\", "\\\\"), "\"", "\\\""), "\n", "\\n") +} + +fn to_upper_char(ch: Int) -> String { + let cp = ch + if cp >= 97 && cp <= 122 { + from_code_point(cp: cp - 32) + } else { + from_code_point(cp: ch) + } +} + +fn capitalize_first(s: String) -> String { + let chars_list = s |> chars + if count(chars_list) == 0 { + "" + } else { + chars_list + |> enumerate + |> map(pair => + if pair.first == 0 { + to_upper_char(ch: pair.second) + } else { + from_code_point(cp: pair.second) + }) + |> join(separator: "") + } +} + +fn to_pascal_segment(segment: String) -> String { + segment + |> split(delimiter: "_") + |> map(part => capitalize_first(s: part)) + |> join(separator: "") +} + +fn arm_identity_to_rust_variant(identity: String) -> String { + identity + |> split(delimiter: ".") + |> map(segment => to_pascal_segment(segment: segment)) + |> join(separator: "") +} + +fn roster_site_key(row: InterpreterPrimitiveDispatchArm) -> String { + let symbol = concat(row.dispatch_symbol, "") + let identity = concat(row.arm.identity, "") + if symbol == "eval_call" && starts_with(s: identity, prefix: "v4_bridge.") { + "eval_call_bridge" + } else if symbol == "eval_call" && starts_with(s: identity, prefix: "native_intercept.") { + "eval_call_native_intercept" + } else { + symbol + } +} + +fn known_dispatch_emit_site_keys() -> List { + [ + "eval_builtin_inner", + "eval_algebra_method_inner", + "eval_call_bridge", + "try_v2_std_collection_map_primitive_grounding", + "eval_call_native_intercept", + "try_parse_table_memo_dispatch", + ] +} + +fn roster_row_emit_site_is_known(row: InterpreterPrimitiveDispatchArm) -> Bool { + let site = roster_site_key(row: row) + known_dispatch_emit_site_keys() |> any(k => k == site) +} + +fn roster_rows_with_unknown_emit_site() -> List { + v1_interpreter_authored_roster_arms() + |> filter(r => !roster_row_emit_site_is_known(row: r)) +} + +data dispatch_emit_site_routing_scaffold_note: String = "INTERIM ROUTING AUTHORITY: roster_site_key derives the dispatch emit site from dispatch_symbol plus string prefix conventions (v4_bridge., native_intercept.) and known_dispatch_emit_site_keys validates the result. This is a hand-rolled undeclared sum, not a modeled InterpreterDispatchSite field on each row. Dissolve-on: each InterpreterPrimitiveDispatchArm carries a closed dispatch_emit_site field; roster_site_key reads that field; prefix conventions and the parallel validator delete together." + +fn site_has_rust_variant_collision(site_rows: List) -> Bool { + count(distinct_identities(rows: site_rows)) != count(distinct_rust_variants(rows: site_rows)) +} + +fn roster_site_has_rust_variant_collision(site_key: String, rows: List) -> Bool { + site_has_rust_variant_collision(site_rows: filter_roster_site(rows: rows, site_key: site_key)) +} + +fn any_roster_site_has_rust_variant_collision(rows: List) -> Bool { + known_dispatch_emit_site_keys() + |> any(site_key => roster_site_has_rust_variant_collision(site_key: site_key, rows: rows)) +} + +fn rust_variant_collision_synthetic_red_control() -> Bool { + arm_identity_to_rust_variant(identity: "synthetic.one_two") == arm_identity_to_rust_variant(identity: "synthetic.one.two") + && !("synthetic.one_two" == "synthetic.one.two") +} + +fn dispatch_emit_site_key_is_emittable(site_key: String) -> Bool { + known_dispatch_emit_site_keys() |> any(k => k == site_key) +} + +fn site_enum_name(site_key: String) -> String { + match site_key { + "eval_builtin_inner" => "EvalBuiltinArm" + "eval_algebra_method_inner" => "EvalAlgebraMethodArm" + "eval_call_bridge" => "EvalCallBridgeArm" + "try_v2_std_collection_map_primitive_grounding" => "TryV2StdCollectionMapPrimitiveGroundingArm" + "eval_call_native_intercept" => "EvalCallNativeInterceptArm" + "try_parse_table_memo_dispatch" => "TryParseTableMemoDispatchArm" + _ => concat("UnknownSite", site_key) + } +} + +fn site_lookup_name(site_key: String) -> String { + match site_key { + "eval_builtin_inner" => "lookup_eval_builtin_inner" + "eval_algebra_method_inner" => "lookup_eval_algebra_method_inner" + "eval_call_bridge" => "lookup_eval_call_bridge" + "try_v2_std_collection_map_primitive_grounding" => "lookup_try_v2_std_collection_map_primitive_grounding" + "eval_call_native_intercept" => "lookup_eval_call_native_intercept" + "try_parse_table_memo_dispatch" => "lookup_try_parse_table_memo_dispatch" + _ => concat("lookup_unknown_", site_key) + } +} + +fn filter_roster_site(rows: List, site_key: String) -> List { + rows |> filter(r => roster_site_key(row: r) == site_key) +} + +fn distinct_strings(xs: List) -> List { + xs |> fold(init: [], f: (acc, x) => if acc |> any(y => y == x) { acc } else { acc |> concat([x]) }) +} + +fn distinct_identities(rows: List) -> List { + distinct_strings(xs: rows |> map(r => concat(r.arm.identity, ""))) +} + +fn rust_variant_for_row(row: InterpreterPrimitiveDispatchArm) -> String { + arm_identity_to_rust_variant(identity: concat(row.arm.identity, "")) +} + +fn distinct_rust_variants(rows: List) -> List { + distinct_strings(xs: rows |> map(r => rust_variant_for_row(row: r))) +} + +fn render_lookup_match_rows(rows: List, enum_name: String) -> String { + fold_list(rows, empty: "", cons: fn(acc, row) { + let escaped = escape_rust_string_literal_body(s: concat(row.authored_spelling, "")) + let variant = rust_variant_for_row(row: row) + let line = concat( + " \"", + escaped, + "\" => Some(", + enum_name, + "::", + variant, + ")," + ) + if acc == "" { + line + } else { + concat(acc, concat("\n", line)) + } + }) +} + +fn qualified_enum_variant(enum_name: String, variant: String) -> String { + concat( + "$crate::v1_interpreter_dispatch_generated::", + enum_name, + "::", + variant + ) +} + +fn render_identity_arm_rows(rows: List, enum_name: String) -> String { + let identities = distinct_identities(rows: rows) + fold_list(identities, empty: "", cons: fn(acc, identity) { + let variant = arm_identity_to_rust_variant(identity: identity) + let line = concat( + " (\"", + escape_rust_string_literal_body(s: identity), + "\") => { ", + qualified_enum_variant(enum_name: enum_name, variant: variant), + " };" + ) + if acc == "" { + line + } else { + concat(acc, concat("\n", line)) + } + }) +} + +fn render_enum_variants(variants: List) -> String { + fold_list(variants, empty: "", cons: fn(acc, variant) { + let line = concat(" ", variant, ",") + if acc == "" { + line + } else { + concat(acc, concat("\n", line)) + } + }) +} + +fn render_site_block(site_key: String, rows: List) -> String { + let enum_name = site_enum_name(site_key: site_key) + let lookup_name = site_lookup_name(site_key: site_key) + let site_rows = filter_roster_site(rows: rows, site_key: site_key) + let variants = distinct_rust_variants(rows: site_rows) + let macro_name = concat(site_key, "_arm") |> replace(old: ".", new: "_") + concat( + "#[rustfmt::skip]\n", + "#[derive(Copy, Clone, Debug, PartialEq, Eq)]\n", + "pub enum ", + enum_name, + " {\n", + render_enum_variants(variants: variants), + "\n}\n\n", + "#[rustfmt::skip]\n", + "pub fn ", + lookup_name, + "(spelling: &str) -> Option<", + enum_name, + "> {\n", + " match spelling {\n", + render_lookup_match_rows(rows: site_rows, enum_name: enum_name), + "\n _ => None,\n", + " }\n", + "}\n\n", + "#[rustfmt::skip]\n", + "macro_rules! ", + macro_name, + " {\n", + render_identity_arm_rows(rows: site_rows, enum_name: enum_name), + "\n}\n" + ) +} + +type V1InterpreterDispatchEmitOutcome + = V1InterpreterDispatchGenerated { content: String } + | V1InterpreterDispatchGenerationRefused { reason: String } + +fn render_dispatch_generated_rs(rows: List) -> String { + let site_keys = known_dispatch_emit_site_keys() + concat( + "// Generated by gunbc v1_interpreter_dispatch_emit — do not hand-edit.\n", + "// Authority: gunbc.v1_interpreter_primitive_surface v1_interpreter_authored_roster_arms(); rust_variant derived from arm identity.\n\n", + fold_list(site_keys, empty: "", cons: fn(acc, site_key) { + let block = render_site_block(site_key: site_key, rows: rows) + if acc == "" { + block + } else { + concat(acc, block) + } + }) + ) +} + +fn expected_v1_interpreter_dispatch_generated_rs() -> V1InterpreterDispatchEmitOutcome { + let rows = v1_interpreter_authored_roster_arms() + let unknown = roster_rows_with_unknown_emit_site() + if count(unknown) > 0 { + V1InterpreterDispatchGenerationRefused { + reason: "authored roster row maps to unknown dispatch emit site — every row must map to known_dispatch_emit_site_keys via roster_site_key" + } + } else if any_roster_site_has_rust_variant_collision(rows: rows) { + V1InterpreterDispatchGenerationRefused { + reason: "two distinct arm identities collapse to the same PascalCase enum variant within one dispatch emit site — arm_identity_to_rust_variant must be injective per site" + } + } else { + V1InterpreterDispatchGenerated { content: render_dispatch_generated_rs(rows: rows) } + } +} diff --git a/dag/gunbc/v1_interpreter_primitive_surface.dag b/dag/gunbc/v1_interpreter_primitive_surface.dag index e1c7df4afe6..c50af7b3642 100644 --- a/dag/gunbc/v1_interpreter_primitive_surface.dag +++ b/dag/gunbc/v1_interpreter_primitive_surface.dag @@ -17,6 +17,7 @@ type InterpreterPrimitiveArmId { type ArmEnumeration = DerivedFromDispatch + | AuthoredInRoster | DeclaredHere { dissolve_on: NonEmptyStr } type InterpreterPrimitiveDispatchArm { @@ -57,15 +58,7 @@ fn form_is_unknown(form: InterpreterDispatchForm) -> Bool { } fn v1_interpreter_derived_arms() -> List { - interpreter_dispatch_arm_rows() - |> map(r => InterpreterPrimitiveDispatchArm { - arm: InterpreterPrimitiveArmId { identity: r.arm_identity }, - form: decode_dispatch_form(label: r.dispatch_form), - authored_spelling: r.authored_spelling, - realization_module: "v1_interpreter", - dispatch_symbol: r.dispatch_symbol, - enumeration: DerivedFromDispatch, - }) + v1_interpreter_authored_roster_arms() } fn v1_interpreter_free_call_arms() -> List { @@ -109,6 +102,7 @@ fn arm_declares_dissolution_trigger(arm: InterpreterPrimitiveDispatchArm) -> Boo match arm.enumeration { DeclaredHere { dissolve_on } => string_contains(s: dissolve_on, pattern: "dissolves when") DerivedFromDispatch => false + AuthoredInRoster => false } } @@ -193,14 +187,1526 @@ fn v1_interpreter_cross_form_spellings() -> List { distinct_strings(xs: cross) } -data v1_interpreter_primitive_surface_authority_note: String = "THE V1 INTERPRETER'S PRIMITIVE DISPATCH SURFACE, MADE ENUMERABLE. Before this carrier the surface had no roster anywhere: its only authority was string match arms inside the hand-maintained seed src/v1/stage0/src/v1_interpreter.rs, so 'which primitives does the interpreter provide' was a question no consumer could ask. That is why it was the fifth surface the primitive-identity census could not read, and why v1 deletion could not be sequenced honestly: you cannot show that nothing still needs a capability you cannot enumerate.\n\nTHE SURFACE IS A CLOSED SET OF DISPATCH SYMBOLS. Measured against the tree rather than assumed: eval_builtin_inner; eval_algebra_method_inner; eval_call, which carries TWO separate mechanisms -- guard-predicated v4 std bridge families AND a native fold intercept -- both running BEFORE the free-call dispatch, which is why fold_list and the bridge names never reach the builtin registry; try_v2_std_collection_map_primitive_grounding; try_parse_table_memo_dispatch; a lookup short-circuit inside eval_method_call; and the Filesystem.Read hermetic carve-out in eval_service_call. dispatch_site_count() derives the site count from the roster rather than restating it in prose. AN EARLIER REVISION UNDERCOUNTED eval_call by modelling it as the fold intercept alone, omitting the bridge spellings; the omission was caught in review, and it is recorded here rather than quietly corrected because it is the precise failure this carrier exists to prevent -- a denominator asserted from the sites someone happened to read.\n\nMOST DISPATCH SITES ARE NOW DERIVED, NOT TRANSCRIBED. eval_builtin_inner, eval_algebra_method_inner, eval_call's bridge families, eval_call's native intercept, the map grounding and the parse-table memo each expand their dispatch AND their roster row from one macro token list, so an arm without a row and a row without an arm are both unwritable rather than reconciled afterwards (DESIGN.md 5, construction over validation). No live-tree scan of Rust source is involved and none is wanted: a regex interpreting hand-written match arms would leave the denominator in Rust while adding a second thing that can be wrong.\n\nTHE RESIDUE IS CHECKABLE BY GREP, WHICH IS THE POINT. Every primitive dispatch arm in v1_interpreter.rs now carries the token form `arm \"identity\" { \"spelling\" } =>`. What remains in the file as a BARE quoted match arm is non-primitive dispatch: pattern kinds, shell/file output channels, auth kinds, TLS postures, HTTP methods, and similar transport and value vocabulary -- not primitive names. So 'is there an unenumerated primitive arm' is answerable by looking for a bare quoted arm outside that named list, which is a far stronger position than a hand-maintained line-count reconciliation.\n\nSERVICE OPERATIONS ARE NOT ARMS, and that is a finding rather than an omission. eval_service_call resolves Service.Op against ctx.service_ops, which is built from the DECLARED .dag corpus, so that population is already enumerable as data and is deliberately outside this roster's denominator. The interpreter contributes exactly one service-name dispatch of its own -- the Filesystem.Read hermetic checkout carve-out -- plus transport realizations, which dispatch on transport and HTTP method values rather than on primitive names. Only the carve-out is a row here.\n\nROWS CARRY THE ARM'S OWN FACTS ONLY. There is deliberately no primitive-identity field, not even an optional one: an arm that joins to no known primitive must remain representable, because that population is exactly what a primitive-identity join needs to discover. A roster whose shape forbade recording an unjoined arm would be complete by construction and useless as a denominator. This carrier answers WHICH ARMS EXIST; which primitive each one realizes belongs to the join.\n\nONE ROW PER (SITE, ARM IDENTITY, SPELLING); ALIASES SHARE AN ARM IDENTITY. length, count and size are one arm under three rows, so they cannot disagree by construction. duplicate_row_keys asserts that triple is unique across the whole surface. A spelling appearing under two different arm identities at the SAME site is unreachable code, because the earlier arm always wins. A spelling appearing at two different SITES is two genuine implementations: lookup is the live specimen, dispatched both by the eval_method_call short-circuit and by the algebra arm the short-circuit shadows." +data v1_interpreter_primitive_surface_authority_note: String = "THE V1 INTERPRETER'S PRIMITIVE DISPATCH SURFACE, MADE ENUMERABLE. Before this carrier the surface had no roster anywhere: its only authority was string match arms inside the hand-maintained seed src/v1/stage0/src/v1_interpreter.rs, so 'which primitives does the interpreter provide' was a question no consumer could ask. That is why it was the fifth surface the primitive-identity census could not read, and why v1 deletion could not be sequenced honestly: you cannot show that nothing still needs a capability you cannot enumerate.\n\nTHE SURFACE IS A CLOSED SET OF DISPATCH SYMBOLS. Measured against the tree rather than assumed: eval_builtin_inner; eval_algebra_method_inner; eval_call, which carries TWO separate mechanisms -- guard-predicated v4 std bridge families AND a native fold intercept -- both running BEFORE the free-call dispatch, which is why fold_list and the bridge names never reach the builtin registry; try_v2_std_collection_map_primitive_grounding; try_parse_table_memo_dispatch; a lookup short-circuit inside eval_method_call; and the Filesystem.Read hermetic carve-out in eval_service_call. dispatch_site_count() derives the site count from the roster rather than restating it in prose. AN EARLIER REVISION UNDERCOUNTED eval_call by modelling it as the fold intercept alone, omitting the bridge spellings; the omission was caught in review, and it is recorded here rather than quietly corrected because it is the precise failure this carrier exists to prevent -- a denominator asserted from the sites someone happened to read.\n\nR1 INVERTS THE ROSTER: v1_interpreter_authored_roster_arms() is the canonical authority; gunbc.v1_interpreter_dispatch_emit derives Rust enum variants and spelling-to-variant lookup tables into src/v1/stage0/src/v1_interpreter_dispatch_generated.rs (drift-gated via gunbc.generated_artifact V1InterpreterDispatchGeneratedRsArtifact). Handler macros in v1_interpreter.rs consult the generated lookup before matching bodies on the generated enum. Exhaustiveness is site-scoped: on single-family sites (eval_builtin_inner, eval_algebra_method_inner, try_v2_std_collection_map_primitive_grounding, try_parse_table_memo_dispatch) a roster row without a handler body fails cargo build via a non-exhaustive inner match on the generated enum; on eval_call_bridge and eval_call_native_intercept — shared enums with per-family macro subsets — the same mismatch degrades to runtime unreachable! until per-family enum split lands (named follow-up). A handler identity absent from the roster cannot be reached through generated lookup without editing the roster (DESIGN.md 5, construction over validation). No live-tree scan of Rust source is involved and none is wanted.\n\nTHE RESIDUE IS CHECKABLE, WHICH IS THE POINT. Every primitive handler macro arm carries the token form `arm \"identity\" { \"spelling\" } =>` keyed to the generated enum; routing uses the generated lookup, not the macro spelling literals. What remains in the file as a BARE quoted match arm is non-primitive dispatch: pattern kinds, shell/file output channels, auth kinds, TLS postures, HTTP methods, and similar transport and value vocabulary -- not primitive names. So 'is there an unenumerated primitive arm' is answerable by looking for a bare quoted arm outside that named list.\n\nSERVICE OPERATIONS ARE NOT ARMS, and that is a finding rather than an omission. eval_service_call resolves Service.Op against ctx.service_ops, which is built from the DECLARED .dag corpus, so that population is already enumerable as data and is deliberately outside this roster's denominator. The interpreter contributes exactly one service-name dispatch of its own -- the Filesystem.Read hermetic checkout carve-out -- plus transport realizations, which dispatch on transport and HTTP method values rather than on primitive names. Only the carve-out is a row here.\n\nROWS CARRY THE ARM'S OWN FACTS ONLY. There is deliberately no primitive-identity field, not even an optional one: an arm that joins to no known primitive must remain representable, because that population is exactly what a primitive-identity join needs to discover. A roster whose shape forbade recording an unjoined arm would be complete by construction and useless as a denominator. This carrier answers WHICH ARMS EXIST; which primitive each one realizes belongs to the join.\n\nONE ROW PER (SITE, ARM IDENTITY, SPELLING); ALIASES SHARE AN ARM IDENTITY. length, count and size are one arm under three rows, so they cannot disagree by construction. duplicate_row_keys asserts that triple is unique across the whole surface. A spelling appearing under two different arm identities at the SAME site is unreachable code, because the earlier arm always wins. A spelling appearing at two different SITES is two genuine implementations: lookup is the live specimen, dispatched both by the eval_method_call short-circuit and by the algebra arm the short-circuit shadows." data arm_accepted_shape_gap_note: String = "ARITY IS NOT DERIVABLE FROM THIS DISPATCH, and ShapeDerivability is a coproduct rather than an Int so that the gap is representable instead of guessed. Arm bodies reach for positional.first(), positional.as_slice() patterns, and byte-vector coercions, so nothing structural in the arm states how many arguments it accepts. Any number written here would be a hand transcription that rots silently the first time a body changes, which is the decorative-roster failure this carrier exists to avoid. A typed absence is countable; a fabricated arity is not. DISSOLVE-ON: the R1 step where each arm list carries an explicit parameter spec beside each body, at which point arity expands from the same tokens as the spelling and ShapeDerivedFromDispatch becomes the honest answer." -data derived_versus_declared_note: String = "WHICH ROWS ARE REAL BY CONSTRUCTION, AND WHY PROVENANCE SITS ON THE ROW RATHER THAN ON THE FORM. Enumeration provenance is a fact about how a PARTICULAR row was obtained, not about its dispatch form: MethodCall rows are derived from eval_algebra_method_inner's tokens while the MethodCall lookup short-circuit is declared, and NativeSpecial rows are derived while ServiceDispatch is declared. An earlier revision derived provenance from the form, which would have reported the short-circuit row as derived and hidden exactly the staleness the field exists to expose. So ArmEnumeration is a field, DeclaredHere carries the row's OWN dissolution trigger, and v1_interpreter_declared_arm_count counts the frontier rather than describing it.\n\nThe two declared rows are the two sites that are not match arms at all: eval_method_call's lookup short-circuit is an if-guard, and eval_service_call's Filesystem.Read carve-out dispatches on a service name. Each row states what would have to change for it to dissolve via its DeclaredHere dissolve_on field. Absence from a declared row is NOT evidence that an arm does not exist." +data derived_versus_declared_note: String = "WHICH ROWS ARE REAL BY CONSTRUCTION, AND WHY PROVENANCE SITS ON THE ROW RATHER THAN ON THE FORM. Enumeration provenance is a fact about how a PARTICULAR row was obtained, not about its dispatch form. After R1, almost every row is AuthoredInRoster: authored once in v1_interpreter_authored_roster_arms() and routed through generated lookup in v1_interpreter_dispatch_generated.rs. The two DeclaredHere rows remain the frontier sites that are not match arms at all: eval_method_call's lookup short-circuit is an if-guard, and eval_service_call's Filesystem.Read carve-out dispatches on a service name. DerivedFromDispatch is a legacy uninhabited variant kept only for witness RED controls until the pre-R1 derivation model is fully retired. An earlier revision derived provenance from the form, which would have reported the short-circuit row as derived and hidden exactly the staleness the field exists to expose. So ArmEnumeration is a field, DeclaredHere carries the row's OWN dissolution trigger, and v1_interpreter_declared_arm_count counts the frontier rather than describing it.\n\nEach DeclaredHere row states what would have to change for it to dissolve via its dissolve_on field. Absence from a declared row is NOT evidence that an arm does not exist." data shadowed_spelling_semantics_note: String = "WHAT form_has_no_shadowed_spelling ACTUALLY DECIDES. A spelling reached by more than one ARM IDENTITY within one dispatch site is unreachable code, because the earlier arm always wins the match. Alias spellings are deliberately NOT this: they share one arm identity, which is precisely why length, count and size cannot disagree with each other. A spelling appearing at two different SITES is a third thing again and is not a defect at all -- it is two genuine implementations of one name, which v1_interpreter_cross_form_spellings derives and a primitive-identity join must reconcile rather than assume away. lookup, map_insert and empty_map are load-bearing cross-site specimens. Two shadows are live and both are recorded as exact expectations rather than tolerated: the two inert-lens bridges shadow their eval_builtin_inner namesakes, and method_call_short_circuit.lookup shadows method_call.lookup. Those witnesses assert an exact set, so a NEW shadow reds this file." +data v1_interpreter_authored_roster_note: String = "CANONICAL R1 AUTHORITY for interpreter dispatch arms. Each row is authored once as InterpreterPrimitiveDispatchArm in v1_interpreter_authored_roster_arms(); v1_interpreter_dispatch_emit derives Rust enum variant names from arm identity and generates lookup tables. Handler bodies remain hand Rust behind an exhaustive match. Bootstrapped from the live interpreter macro census on 2026-08-02; ongoing edits are manual at this carrier, not regenerated from Rust." + + +fn v1_interpreter_authored_roster_arms() -> List { + [ + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.parse_stage0_cargo_manifest_bins" }, + form: FreeCall, + authored_spelling: "parse_stage0_cargo_manifest_bins", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.stage0_emission_source_identities_host" }, + form: FreeCall, + authored_spelling: "stage0_emission_source_identities_host", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.to_string" }, + form: FreeCall, + authored_spelling: "to_string", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.utf8_decode_bytes" }, + form: FreeCall, + authored_spelling: "utf8_decode_bytes", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.bytes_octets" }, + form: FreeCall, + authored_spelling: "bytes_octets", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.octets_bytes" }, + form: FreeCall, + authored_spelling: "octets_bytes", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.utf8_encode_bytes" }, + form: FreeCall, + authored_spelling: "utf8_encode_bytes", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.discriminant" }, + form: FreeCall, + authored_spelling: "discriminant", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.chars_to_string" }, + form: FreeCall, + authored_spelling: "chars_to_string", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.get" }, + form: FreeCall, + authored_spelling: "get", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.parse_int" }, + form: FreeCall, + authored_spelling: "parse_int", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.record_source_chars_index_lookup" }, + form: FreeCall, + authored_spelling: "record_source_chars_index_lookup", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.trace_mark" }, + form: FreeCall, + authored_spelling: "trace_mark", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.concat" }, + form: FreeCall, + authored_spelling: "concat", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.count" }, + form: FreeCall, + authored_spelling: "count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.reverse" }, + form: FreeCall, + authored_spelling: "reverse", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.string_length" }, + form: FreeCall, + authored_spelling: "string_length", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.substring" }, + form: FreeCall, + authored_spelling: "substring", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.char_at" }, + form: FreeCall, + authored_spelling: "char_at", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.string_contains" }, + form: FreeCall, + authored_spelling: "string_contains", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.starts_with" }, + form: FreeCall, + authored_spelling: "starts_with", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.length" }, + form: FreeCall, + authored_spelling: "length", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.contains" }, + form: FreeCall, + authored_spelling: "contains", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.replace" }, + form: FreeCall, + authored_spelling: "replace", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.code_point" }, + form: FreeCall, + authored_spelling: "code_point", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.from_code_point" }, + form: FreeCall, + authored_spelling: "from_code_point", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.is_xid_start" }, + form: FreeCall, + authored_spelling: "is_xid_start", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.is_xid_continue" }, + form: FreeCall, + authored_spelling: "is_xid_continue", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.is_emoji_ident" }, + form: FreeCall, + authored_spelling: "is_emoji_ident", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.list_push" }, + form: FreeCall, + authored_spelling: "list_push", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.list_push" }, + form: FreeCall, + authored_spelling: "append", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.list_concat" }, + form: FreeCall, + authored_spelling: "list_concat", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.empty_map" }, + form: FreeCall, + authored_spelling: "empty_map", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.empty_set" }, + form: FreeCall, + authored_spelling: "empty_set", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.set_insert" }, + form: FreeCall, + authored_spelling: "set_insert", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.set_union" }, + form: FreeCall, + authored_spelling: "set_union", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.set_contains" }, + form: FreeCall, + authored_spelling: "set_contains", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.map_insert" }, + form: FreeCall, + authored_spelling: "map_insert", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.lookup" }, + form: FreeCall, + authored_spelling: "lookup", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.map_keys" }, + form: FreeCall, + authored_spelling: "map_keys", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.map_values" }, + form: FreeCall, + authored_spelling: "map_values", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.map_contains_key" }, + form: FreeCall, + authored_spelling: "map_contains_key", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.map_contains_key" }, + form: FreeCall, + authored_spelling: "map_has", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.map_is_empty" }, + form: FreeCall, + authored_spelling: "map_is_empty", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.rc_ptr_eq" }, + form: FreeCall, + authored_spelling: "rc_ptr_eq", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.rc_ptr_eq" }, + form: FreeCall, + authored_spelling: "rc_vec_ptr_eq", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.map_merge" }, + form: FreeCall, + authored_spelling: "map_merge", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.str_eq" }, + form: FreeCall, + authored_spelling: "str_eq", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.atom_identity_hash" }, + form: FreeCall, + authored_spelling: "atom_identity_hash", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.observed_peak_resident_bytes" }, + form: FreeCall, + authored_spelling: "observed_peak_resident_bytes", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.observed_monotonic_nanos" }, + form: FreeCall, + authored_spelling: "observed_monotonic_nanos", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.hash_combine" }, + form: FreeCall, + authored_spelling: "hash_combine", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.filesystem_read" }, + form: FreeCall, + authored_spelling: "filesystem_read", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.emit_host_run_transport" }, + form: FreeCall, + authored_spelling: "emit_host_run_transport", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.emit_host_run_transport_cached" }, + form: FreeCall, + authored_spelling: "emit_host_run_transport_cached", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.emit_host_native_cache_evict" }, + form: FreeCall, + authored_spelling: "emit_host_native_cache_evict", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.contiguous_loop_elementwise_kernel" }, + form: FreeCall, + authored_spelling: "contiguous_loop_elementwise_kernel", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.contiguous_loop_elementwise_float_kernel" }, + form: FreeCall, + authored_spelling: "contiguous_loop_elementwise_float_kernel", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.layer_import_facts" }, + form: FreeCall, + authored_spelling: "layer_import_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.import_resolution_facts" }, + form: FreeCall, + authored_spelling: "import_resolution_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.reference_resolution_facts" }, + form: FreeCall, + authored_spelling: "reference_resolution_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.concept_decl_facts" }, + form: FreeCall, + authored_spelling: "concept_decl_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.export_signature_facts" }, + form: FreeCall, + authored_spelling: "export_signature_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.decl_facts" }, + form: FreeCall, + authored_spelling: "decl_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.module_declaration_facts" }, + form: FreeCall, + authored_spelling: "module_declaration_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.fact_cardinality_decl_facts" }, + form: FreeCall, + authored_spelling: "fact_cardinality_decl_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.languages_consumer_census_data_decl_count" }, + form: FreeCall, + authored_spelling: "languages_consumer_census_data_decl_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.languages_consumer_census_per_language_row_count" }, + form: FreeCall, + authored_spelling: "languages_consumer_census_per_language_row_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.languages_consumer_census_format_row_count" }, + form: FreeCall, + authored_spelling: "languages_consumer_census_format_row_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.languages_consumer_census_external_consumer_count" }, + form: FreeCall, + authored_spelling: "languages_consumer_census_external_consumer_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.languages_consumer_census_is_composition_only" }, + form: FreeCall, + authored_spelling: "languages_consumer_census_is_composition_only", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.languages_consumer_census_has_external_consumer" }, + form: FreeCall, + authored_spelling: "languages_consumer_census_has_external_consumer", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.shell_materialize_operation_argv" }, + form: FreeCall, + authored_spelling: "shell_materialize_operation_argv", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.shell_transport_operation_rows" }, + form: FreeCall, + authored_spelling: "shell_transport_operation_rows", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.extdeps_qualified_name_resolves_in_derived_module_set" }, + form: FreeCall, + authored_spelling: "extdeps_qualified_name_resolves_in_derived_module_set", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.transport_script_position_facts_for_path" }, + form: FreeCall, + authored_spelling: "transport_script_position_facts_for_path", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.extdeps_shape_transport_policy_facts_for_qualified_name" }, + form: FreeCall, + authored_spelling: "extdeps_shape_transport_policy_facts_for_qualified_name", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.extdeps_external_authority_facts_for_qualified_name" }, + form: FreeCall, + authored_spelling: "extdeps_external_authority_facts_for_qualified_name", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.extdeps_external_authority_live_clean_tree_holds" }, + form: FreeCall, + authored_spelling: "extdeps_external_authority_live_clean_tree_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.extdeps_external_authority_live_roster_module_count" }, + form: FreeCall, + authored_spelling: "extdeps_external_authority_live_roster_module_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.doc_graph_orphan_count" }, + form: FreeCall, + authored_spelling: "doc_graph_orphan_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.doc_graph_admitted_root_count" }, + form: FreeCall, + authored_spelling: "doc_graph_admitted_root_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.doc_graph_dangling_link_count" }, + form: FreeCall, + authored_spelling: "doc_graph_dangling_link_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.doc_graph_doc_count" }, + form: FreeCall, + authored_spelling: "doc_graph_doc_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.compile_dag_rust_emit_check" }, + form: FreeCall, + authored_spelling: "compile_dag_rust_emit_check", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.compile_dag_diagnostic_census" }, + form: FreeCall, + authored_spelling: "compile_dag_diagnostic_census", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.witness_layer_roots_compile_clean_check" }, + form: FreeCall, + authored_spelling: "witness_layer_roots_compile_clean_check", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.witness_layer_roots_compile_clean_emit_check" }, + form: FreeCall, + authored_spelling: "witness_layer_roots_compile_clean_emit_check", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.consume_floor_compile_clean_gate_verdict" }, + form: FreeCall, + authored_spelling: "consume_floor_compile_clean_gate_verdict", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.witness_compile_clean_cli_floor_verdicts_agree" }, + form: FreeCall, + authored_spelling: "witness_compile_clean_cli_floor_verdicts_agree", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_debt_module_count" }, + form: FreeCall, + authored_spelling: "test_migration_debt_module_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_debt_total_loc" }, + form: FreeCall, + authored_spelling: "test_migration_debt_total_loc", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_debt_total_test_fns" }, + form: FreeCall, + authored_spelling: "test_migration_debt_total_test_fns", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_debt_module_names" }, + form: FreeCall, + authored_spelling: "test_migration_debt_module_names", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_debt_known_covered_module_is_not_debt" }, + form: FreeCall, + authored_spelling: "test_migration_debt_known_covered_module_is_not_debt", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_legacy_behavior_ids" }, + form: FreeCall, + authored_spelling: "test_migration_legacy_behavior_ids", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_witness_behavior_ids" }, + form: FreeCall, + authored_spelling: "test_migration_witness_behavior_ids", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_behavior_discovery_holds" }, + form: FreeCall, + authored_spelling: "test_migration_behavior_discovery_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_delete_guard_holds" }, + form: FreeCall, + authored_spelling: "test_migration_delete_guard_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.test_migration_delete_guard_uncovered_deletes" }, + form: FreeCall, + authored_spelling: "test_migration_delete_guard_uncovered_deletes", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.inert_carrier_names_live" }, + form: FreeCall, + authored_spelling: "inert_carrier_names_live", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.inert_carrier_declared_count" }, + form: FreeCall, + authored_spelling: "inert_carrier_declared_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.inert_lens_unreached_module_count" }, + form: FreeCall, + authored_spelling: "inert_lens_unreached_module_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.inert_lens_top_level_module_count" }, + form: FreeCall, + authored_spelling: "inert_lens_top_level_module_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_count" }, + form: FreeCall, + authored_spelling: "non_fold_residue_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_unrostered_count" }, + form: FreeCall, + authored_spelling: "non_fold_residue_unrostered_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_stale_roster_count" }, + form: FreeCall, + authored_spelling: "non_fold_residue_stale_roster_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_coproduct_universe_count" }, + form: FreeCall, + authored_spelling: "non_fold_residue_coproduct_universe_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.commit_witness_claim_roster_unresolvable_count" }, + form: FreeCall, + authored_spelling: "commit_witness_claim_roster_unresolvable_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.commit_witness_claim_pair_resolvable" }, + form: FreeCall, + authored_spelling: "commit_witness_claim_pair_resolvable", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_wildcard_red_fixture_holds" }, + form: FreeCall, + authored_spelling: "non_fold_residue_wildcard_red_fixture_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_total_fold_green_fixture_holds" }, + form: FreeCall, + authored_spelling: "non_fold_residue_total_fold_green_fixture_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_roster_red_fixture_holds" }, + form: FreeCall, + authored_spelling: "non_fold_residue_roster_red_fixture_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.non_fold_residue_synthetic_unrostered_red_holds" }, + form: FreeCall, + authored_spelling: "non_fold_residue_synthetic_unrostered_red_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.complexity_linearity_syntactic_finding_count" }, + form: FreeCall, + authored_spelling: "complexity_linearity_syntactic_finding_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.complexity_linearity_wildcard_facts" }, + form: FreeCall, + authored_spelling: "complexity_linearity_wildcard_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.fallback_arm_census_facts" }, + form: FreeCall, + authored_spelling: "fallback_arm_census_facts", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.fallback_arm_census_class_count" }, + form: FreeCall, + authored_spelling: "fallback_arm_census_class_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.fallback_arm_census_total" }, + form: FreeCall, + authored_spelling: "fallback_arm_census_total", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.fallback_arm_census_reconciliation_holds" }, + form: FreeCall, + authored_spelling: "fallback_arm_census_reconciliation_holds", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.complexity_linearity_syntactic_site_fired" }, + form: FreeCall, + authored_spelling: "complexity_linearity_syntactic_site_fired", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.census_corpus_roots_follow_layer_authority" }, + form: FreeCall, + authored_spelling: "census_corpus_roots_follow_layer_authority", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "free_call.resolution_divergence_silent_pick_gate_in_process" }, + form: FreeCall, + authored_spelling: "resolution_divergence_silent_pick_gate_in_process", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_builtin_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.lookup" }, + form: MethodCall, + authored_spelling: "lookup", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.map" }, + form: MethodCall, + authored_spelling: "map", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.filter" }, + form: MethodCall, + authored_spelling: "filter", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.fold" }, + form: MethodCall, + authored_spelling: "fold", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.flat_map" }, + form: MethodCall, + authored_spelling: "flat_map", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.any" }, + form: MethodCall, + authored_spelling: "any", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.all" }, + form: MethodCall, + authored_spelling: "all", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.sort_by" }, + form: MethodCall, + authored_spelling: "sort_by", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.list_push" }, + form: MethodCall, + authored_spelling: "list_push", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.concat" }, + form: MethodCall, + authored_spelling: "concat", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.concat" }, + form: MethodCall, + authored_spelling: "append", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.concat" }, + form: MethodCall, + authored_spelling: "push", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.length" }, + form: MethodCall, + authored_spelling: "length", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.length" }, + form: MethodCall, + authored_spelling: "count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.length" }, + form: MethodCall, + authored_spelling: "size", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.is_empty" }, + form: MethodCall, + authored_spelling: "is_empty", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.first" }, + form: MethodCall, + authored_spelling: "first", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.last" }, + form: MethodCall, + authored_spelling: "last", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.reverse" }, + form: MethodCall, + authored_spelling: "reverse", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.skip" }, + form: MethodCall, + authored_spelling: "skip", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.take" }, + form: MethodCall, + authored_spelling: "take", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.enumerate" }, + form: MethodCall, + authored_spelling: "enumerate", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.contains" }, + form: MethodCall, + authored_spelling: "contains", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.contains" }, + form: MethodCall, + authored_spelling: "has", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.join" }, + form: MethodCall, + authored_spelling: "join", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.chars" }, + form: MethodCall, + authored_spelling: "chars", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.map_get" }, + form: MethodCall, + authored_spelling: "map_get", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.get" }, + form: MethodCall, + authored_spelling: "get", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.map_keys" }, + form: MethodCall, + authored_spelling: "map_keys", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.map_values" }, + form: MethodCall, + authored_spelling: "map_values", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.map_contains_key" }, + form: MethodCall, + authored_spelling: "map_contains_key", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.map_contains_key" }, + form: MethodCall, + authored_spelling: "map_has", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.map_is_empty" }, + form: MethodCall, + authored_spelling: "map_is_empty", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.insert" }, + form: MethodCall, + authored_spelling: "insert", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.insert" }, + form: MethodCall, + authored_spelling: "map_insert", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.merge" }, + form: MethodCall, + authored_spelling: "merge", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.keys" }, + form: MethodCall, + authored_spelling: "keys", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.values" }, + form: MethodCall, + authored_spelling: "values", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.replace" }, + form: MethodCall, + authored_spelling: "replace", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.split" }, + form: MethodCall, + authored_spelling: "split", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.trim" }, + form: MethodCall, + authored_spelling: "trim", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.starts_with" }, + form: MethodCall, + authored_spelling: "starts_with", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.ends_with" }, + form: MethodCall, + authored_spelling: "ends_with", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.substring" }, + form: MethodCall, + authored_spelling: "substring", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.char_at" }, + form: MethodCall, + authored_spelling: "char_at", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "method_call.index_by" }, + form: MethodCall, + authored_spelling: "index_by", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_algebra_method_inner", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.resolve_type_node" }, + form: FreeCall, + authored_spelling: "resolve_type_node", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.symbol_intern_lexeme" }, + form: FreeCall, + authored_spelling: "symbol_intern_lexeme", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.symbol_lexeme" }, + form: FreeCall, + authored_spelling: "symbol_lexeme", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.qualified_name_from_dotted_string" }, + form: FreeCall, + authored_spelling: "qualified_name_from_dotted_string", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.coproduct_nullary_inhabitants" }, + form: FreeCall, + authored_spelling: "coproduct_nullary_inhabitants", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.concept_decl_facts_live" }, + form: FreeCall, + authored_spelling: "concept_decl_facts_live", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.fn_arrow_decl_facts_live" }, + form: FreeCall, + authored_spelling: "fn_arrow_decl_facts_live", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.fn_arrow_decl_substrate_is_whole_tree" }, + form: FreeCall, + authored_spelling: "fn_arrow_decl_substrate_is_whole_tree", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.corpus_dependency_view_per_pr_substrate_refuse" }, + form: FreeCall, + authored_spelling: "corpus_dependency_view_per_pr_substrate_refuse", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.data_init_decl_facts_live" }, + form: FreeCall, + authored_spelling: "data_init_decl_facts_live", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.inert_lens_unreached_module_count" }, + form: FreeCall, + authored_spelling: "inert_lens_unreached_module_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "v4_bridge.inert_lens_top_level_module_count" }, + form: FreeCall, + authored_spelling: "inert_lens_top_level_module_count", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "map_grounding.empty_map" }, + form: NativeSpecial, + authored_spelling: "empty_map_primitive_delegate", + realization_module: "v1_interpreter", + dispatch_symbol: "try_v2_std_collection_map_primitive_grounding", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "map_grounding.empty_map" }, + form: NativeSpecial, + authored_spelling: "empty_map", + realization_module: "v1_interpreter", + dispatch_symbol: "try_v2_std_collection_map_primitive_grounding", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "map_grounding.map_insert" }, + form: NativeSpecial, + authored_spelling: "map_insert", + realization_module: "v1_interpreter", + dispatch_symbol: "try_v2_std_collection_map_primitive_grounding", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "native_intercept.fold_list" }, + form: NativeSpecial, + authored_spelling: "fold_list", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "native_intercept.fold_list_right" }, + form: NativeSpecial, + authored_spelling: "fold_list_right", + realization_module: "v1_interpreter", + dispatch_symbol: "eval_call", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "parse_table_memo.parse_table_lookup" }, + form: NativeSpecial, + authored_spelling: "parse_table_lookup", + realization_module: "v1_interpreter", + dispatch_symbol: "try_parse_table_memo_dispatch", + enumeration: AuthoredInRoster, + }, + InterpreterPrimitiveDispatchArm { + arm: InterpreterPrimitiveArmId { identity: "parse_table_memo.parse_table_insert" }, + form: NativeSpecial, + authored_spelling: "parse_table_insert", + realization_module: "v1_interpreter", + dispatch_symbol: "try_parse_table_memo_dispatch", + enumeration: AuthoredInRoster, + }, + ] +} + type SeedScaffoldDisposition { scaffold: NonEmptyStr realization_module: NonEmptyStr @@ -212,7 +1718,7 @@ type SeedScaffoldDisposition { fn v1_interpreter_roster_seed_scaffold() -> SeedScaffoldDisposition { SeedScaffoldDisposition { - scaffold: "v1_interpreter_dispatch_token_authority", + scaffold: "v1_interpreter_handler_body_macros", realization_module: "v1_interpreter", carried_symbols: [ "v1_builtin_arms", @@ -221,18 +1727,11 @@ fn v1_interpreter_roster_seed_scaffold() -> SeedScaffoldDisposition { "v1_native_intercept_arms", "v1_map_grounding_arms", "v1_parse_table_arms", - "v1_builtin_arm_spellings", - "v1_algebra_arm_spellings", - "v1_bridge_arm_spellings", - "v1_native_intercept_arm_spellings", - "v1_map_grounding_arm_spellings", - "v1_parse_table_arm_spellings", - "interpreter_dispatch_arm_rows", ], - net_added_lines: 178, + net_added_lines: 0, target_roadmap_node: "v1-interpreter-primitive-dispatch-authority", - deletion_condition: "R1: the .dag roster generates the interpreter's local dispatch identity and lookup, rather than the dispatch generating the roster. At that point the six macro authorities and the six roster functions are all deleted, the interpreter_dispatch_arm_rows bridge arm is deleted with them, and the declared rows in this carrier delete too because the denominator no longer lives in Rust. The whole scaffold is deleted unconditionally and earlier if v1-interpreter-delete lands first, since the file goes with it. Neither trigger is speculative: both are roadmap rows with edges already in the authority.", + deletion_condition: "R1 roster authority lives in dag/gunbc/v1_interpreter_primitive_surface.dag v1_interpreter_authored_roster_arms(); v1_interpreter_dispatch_emit derives Rust enum variants from arm identity and generates lookup tables. interpreter_dispatch_arm_rows and spelling roster functions are deleted. Remaining residue: handler-body macro authorities until emit generates flat match arms. Dissolves when handler bodies are generated from the roster without macro token lists.", } } -data added_hand_rust_accounting_note: String = "WHAT THIS ADDED TO THE SEED, STATED PLAINLY RATHER THAN IMPLIED AWAY. v1_interpreter.rs grew from 12,167 to 12,345 lines: net +178. That number is the honest one and it is a NET of two opposite movements. Added: six macro_rules authorities, six roster functions, and one dispatch arm (interpreter_dispatch_arm_rows). Removed: nine byte-identical is_v4_*_bridge_call predicates, which collapsed into one parameterized is_v4_bridge_family, and nine hand-written *_BRIDGE_FNS const lists, which now expand from the same tokens as the dispatch they guard. Roughly 1,150 lines of existing arm bodies moved verbatim and are neither added nor removed.\n\nSO THIS CHANGE DOES NOT SHRINK THE HAND-RUST CENSUS AND MUST NOT BE COUNTED AS IF IT DID. What it buys is twofold. First, the precondition for shrinking it: v1_interpreter.rs is hand-maintained, is absent from gunbc.stage0_emit_model generated_stage0_files, and cannot be retired until what it provides can be enumerated -- which is why v1-interpreter-quarantine now depends on v1-interpreter-primitive-dispatch-authority, the node that inverts the roster; the enumeration this file lands (v1-interpreter-primitive-roster) is that node's own prerequisite. Second, a real DESIGN.md 3 defect is gone: every bridge name used to be written twice, once in the const the guard tested and once in the arm that dispatched it, with nothing to say when the two disagreed.\n\nThe added Rust is a declared scaffold with a typed disposition rather than a note: v1_interpreter_roster_seed_scaffold names every symbol it carries, the net line count, the owning roadmap node, and the exact deletion condition." +data added_hand_rust_accounting_note: String = "WHAT R1 CHANGED IN HAND-RUST, STATED PLAINLY RATHER THAN IMPLIED AWAY. The roster authority now lives in dag/gunbc/v1_interpreter_primitive_surface.dag v1_interpreter_authored_roster_arms(); gunbc.v1_interpreter_dispatch_emit derives Rust enum variants and lookup tables into src/v1/stage0/src/v1_interpreter_dispatch_generated.rs, drift-gated through gunbc.generated_artifact V1InterpreterDispatchGeneratedRsArtifact and witness_committed_is_fixed_point. Deleted from the seed: interpreter_dispatch_arm_rows, six spelling roster functions, and the self-reading bridge dispatch arm. v1_interpreter.rs now consults generated lookup_* tables before matching handler bodies; compile-time exhaustiveness is the generated enum match on the remaining handler-body macros.\n\nSO R1 CLOSES THE DUAL-AUTHORITY DEFECT the prior scaffold carried: roster edits without regenerating lookup tables now fail the generated-artifact fixed point instead of silently falling through at eval_call_native_intercept. The hand-Rust census does not shrink yet — v1_interpreter_roster_seed_scaffold still carries six macro_rules authorities until emit generates flat match arms, with net_added_lines 0 against the pre-R1 scaffold baseline. What it buys is one roster authority, generated routing, and drift enforcement rather than a second manually synced lookup table." diff --git a/dag/gunbc/witness_row_cost_basis.tsv b/dag/gunbc/witness_row_cost_basis.tsv index 64a336d43e3..ba12800361c 100644 --- a/dag/gunbc/witness_row_cost_basis.tsv +++ b/dag/gunbc/witness_row_cost_basis.tsv @@ -123,8 +123,8 @@ dag/test/claim/floor_materialization_witness_test.dag floor_index_build_has_plur dag/test/claim/floor_materialization_witness_test.dag floor_index_build_reds_without_reference_provider 1 30550328673 srv_fleet_arm64 dag/test/claim/floor_skip_discovery_witness_test.dag floor_skip_discovery_keystone_holds 644282 30550328673 srv_fleet_arm64 dag/test/claim/generated_artifact_drift_test.dag witness_all_known_committed 69 30550328673 srv_fleet_arm64 -dag/test/claim/generated_artifact_drift_test.dag witness_committed_fixed_point_red_control 717 30550328673 srv_fleet_arm64 -dag/test/claim/generated_artifact_drift_test.dag witness_committed_is_fixed_point 1005 30550328673 srv_fleet_arm64 +dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag witness_committed_fixed_point_red_control 717 30550328673 srv_fleet_arm64 +dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag witness_committed_is_fixed_point 1005 30550328673 srv_fleet_arm64 dag/test/claim/generated_artifact_drift_test.dag witness_extra_validation_wired 128 30550328673 srv_fleet_arm64 dag/test/claim/generated_artifact_drift_test.dag witness_ignored_paths_excluded 3 30550328673 srv_fleet_arm64 dag/test/claim/generated_artifact_drift_test.dag witness_per_artifact_red_receipts 2 30550328673 srv_fleet_arm64 diff --git a/dag/std/occurrence_identity.dag b/dag/std/occurrence_identity.dag index fcdc5dc28d8..08a6a0f43b3 100644 --- a/dag/std/occurrence_identity.dag +++ b/dag/std/occurrence_identity.dag @@ -127,52 +127,42 @@ type OccurrenceTransport { references: List } -type OccurrenceIdentityConsumerRedDebt { +type OccurrenceIdentityAcceptanceLaw { id: String required_receipt: String - owner: String - dissolve_on: String -} - -data occurrence_identity_consumer_red_debt_rehome_note: String = "THE SIX ROWS BELOW ALL NAMED namespace-canonical-binding AS OWNER, which was correct while that node was the single broad namespace node and is wrong now that the recut split it (operator ruling, 2026-08-01). A roadmap split leaves every row that pointed at the old node pointing at the wrong boundary, and a debt row whose owner cannot accept it is untracked in the way that matters: nobody discovering the node can tell whether the row is theirs.\n\nCLASSIFIED BY ACTUAL BOUNDARY, not by which node the row prose happens to mention. Five are parser or collector identity facts: rebuilt-reference identity preservation, one-occurrence collector dedupe, structurally-equal distinct occurrences, pattern-declaration reachability, and same-spelling parser declaration isolation. Each is decidable at the structural producer that builds candidate populations, so each is owned by namespace-reference-derived-closure. Note that one-occurrence-collector-dedupe is the SAME obligation the operator assigned to P2 candidate construction, collapsing repeated discovery of one identical full identity before the cardinality fold is called; it was already written here and simply pointed at the wrong node.\n\nONE ROW STAYS. inferred-target-anchor-identity requires an inferred target projection to stay anchored to the exact authored occurrence rather than a rebuilt shell Node, spelling, or SourceSpan. That is a property of the production projection path, not of building the candidate population, so it stays with namespace-canonical-binding, the production changeover. It is the row most likely to be re-argued, so the reasoning is written here rather than left implicit: the question that decides it is whether the receipt can execute before the production sites are switched over. For the other five it can; for this one it cannot.\n\nNo row was deleted, weakened, or given a new dissolution trigger by this rehome. Each dissolve_on still names the RED that retires it, and each still deletes in the PR that lands its receipt." - -data occurrence_identity_consumer_red_debts: List = [ - OccurrenceIdentityConsumerRedDebt { - id: "rebuilt-reference-identity-preservation", - required_receipt: "A production reference rebuild preserves the exact sidecar occurrence identity and containment path; dropping or reminting the occurrence must make the consumer RED.", - owner: "namespace-reference-derived-closure", - dissolve_on: "DISSOLVE-ON: the rebuilt-reference production RED executes through the sidecar-consuming canonical binding boundary; delete this row in the same PR.", - }, - OccurrenceIdentityConsumerRedDebt { - id: "one-occurrence-collector-dedupe", - required_receipt: "Two observations of one authored occurrence enter the collector once by exact occurrence identity, never by spelling, SourceSpan, or Node structure.", - owner: "namespace-reference-derived-closure", - dissolve_on: "DISSOLVE-ON: the occurrence-safe collector dedupe RED executes against the sidecar consumer; delete this row in the same PR.", - }, - OccurrenceIdentityConsumerRedDebt { - id: "structurally-equal-distinct-occurrences", - required_receipt: "Structurally equal and equally spelled authored occurrences with distinct IDs remain two collector entries.", - owner: "namespace-reference-derived-closure", - dissolve_on: "DISSOLVE-ON: the distinct-authored-occurrences collector RED executes against the sidecar consumer; delete this row in the same PR.", - }, - OccurrenceIdentityConsumerRedDebt { - id: "pattern-declaration-reachability", - required_receipt: "Authoritative collection reaches every parser-minted pattern declaration occurrence, including nested pattern binders.", - owner: "namespace-reference-derived-closure", - dissolve_on: "DISSOLVE-ON: the pattern-declaration reachability RED executes through the production occurrence collector; delete this row in the same PR.", - }, - OccurrenceIdentityConsumerRedDebt { - id: "inferred-target-anchor-identity", - required_receipt: "An inferred target projection remains anchored to the exact authored occurrence instead of a rebuilt shell Node, spelling, or SourceSpan.", - owner: "namespace-canonical-binding", - dissolve_on: "DISSOLVE-ON: the inferred-target anchor RED executes through the production sidecar consumer; delete this row in the same PR.", - }, - OccurrenceIdentityConsumerRedDebt { - id: "same-spelling-parser-declaration-isolation", - required_receipt: "Same-spelling declarations and references in sibling match arms, nested lets, lambdas, and parameters retain distinct authored identities and containment paths without overwrite.", - owner: "namespace-reference-derived-closure", - dissolve_on: "DISSOLVE-ON: the full same-spelling parser-to-binding RED matrix executes at the canonical binding boundary; delete this row in the same PR.", - }, +} + +data occurrence_identity_acceptance_law_rebuilt_reference: OccurrenceIdentityAcceptanceLaw = OccurrenceIdentityAcceptanceLaw { + id: "rebuilt-reference-identity-preservation", + required_receipt: "A production reference rebuild preserves the exact sidecar occurrence identity and containment path; dropping or reminting the occurrence must make the consumer RED.", +} + +data occurrence_identity_acceptance_law_collector_dedupe: OccurrenceIdentityAcceptanceLaw = OccurrenceIdentityAcceptanceLaw { + id: "one-occurrence-collector-dedupe", + required_receipt: "Two observations of one authored occurrence enter the collector once by exact occurrence identity, never by spelling, SourceSpan, or Node structure.", +} + +data occurrence_identity_acceptance_law_distinct_occurrences: OccurrenceIdentityAcceptanceLaw = OccurrenceIdentityAcceptanceLaw { + id: "structurally-equal-distinct-occurrences", + required_receipt: "Structurally equal and equally spelled authored occurrences with distinct IDs remain two collector entries.", +} + +data occurrence_identity_acceptance_law_pattern_reachability: OccurrenceIdentityAcceptanceLaw = OccurrenceIdentityAcceptanceLaw { + id: "pattern-declaration-reachability", + required_receipt: "Authoritative collection reaches every parser-minted pattern declaration occurrence, including nested pattern binders.", +} + +data occurrence_identity_acceptance_law_parser_isolation: OccurrenceIdentityAcceptanceLaw = OccurrenceIdentityAcceptanceLaw { + id: "same-spelling-parser-declaration-isolation", + required_receipt: "Same-spelling declarations and references in sibling match arms, nested lets, lambdas, and parameters retain distinct authored identities and containment paths without overwrite.", +} + +data occurrence_identity_acceptance_laws: List = [ + occurrence_identity_acceptance_law_rebuilt_reference, + occurrence_identity_acceptance_law_collector_dedupe, + occurrence_identity_acceptance_law_distinct_occurrences, + occurrence_identity_acceptance_law_pattern_reachability, + occurrence_identity_acceptance_law_parser_isolation, ] type OccurrenceTransportRefusal diff --git a/dag/test/claim/expectation_frontier_witness_test.dag b/dag/test/claim/expectation_frontier_witness_test.dag index f344078341b..57abc4d6f59 100644 --- a/dag/test/claim/expectation_frontier_witness_test.dag +++ b/dag/test/claim/expectation_frontier_witness_test.dag @@ -37,11 +37,11 @@ fn run_entry_capturing_stderr(entry: String, function: String) -> String { result.stderr } -data undeclared_subject_note: String = "generated_artifact_drift_test reaches Filesystem.Read from .dag call sites that carry no `expect:` — measured 67 undeclared dispatches at the time of writing. The COUNT is deliberately not pinned: it tracks how many artifacts the registry holds and would turn an unrelated registry edit into a red here, which is the brittle-pin failure this corpus already knows. The claim is the receipt's PRESENCE, which is the property the mechanism actually owns." +data undeclared_subject_note: String = "generated_artifact_drift_fixed_point_witness_test reaches Filesystem.Read from .dag call sites that carry no `expect:` — measured 67 undeclared dispatches at the time of writing (count tracks committed artifact registry size). The COUNT is deliberately not pinned: it tracks how many artifacts the registry holds and would turn an unrelated registry edit into a red here, which is the brittle-pin failure this corpus already knows. The claim is the receipt's PRESENCE, which is the property the mechanism actually owns." test fn undeclared_effects_emit_the_frontier_receipt_holds() -> Bool { let stderr = run_entry_capturing_stderr( - entry: "dag/test/claim/generated_artifact_drift_test.dag", + entry: "dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag", function: "witness_committed_is_fixed_point" ) string_contains(s: stderr, pattern: frontier_marker) diff --git a/dag/test/claim/generated_artifact_drift_test.dag b/dag/test/claim/generated_artifact_drift_test.dag index d5ff2c666e2..35fdb11d8ca 100644 --- a/dag/test/claim/generated_artifact_drift_test.dag +++ b/dag/test/claim/generated_artifact_drift_test.dag @@ -2,7 +2,7 @@ module test.claim.generated_artifact_drift import gunbc.generated_artifact { - GeneratedArtifact, CiYamlArtifact, FalsifierYamlArtifact, GitignoreArtifact, GitattributesArtifact, RoadmapArtifact, DesignArtifact, GithooksPrePushArtifact, GithooksPreCommitArtifact, RunnerDeployArtifact, Stage0CrateLayoutGeneratedDagArtifact, Stage0CrateLayoutGeneratedRsArtifact, Stage0CratePartitionGeneratedDagArtifact, Stage0EmitPlanGeneratedDagArtifact, LiveDeployApplyScriptArtifact, LiveDeployRetractScriptArtifact, AutoinstallUserDataArtifact, ProxyDhcpDnsmasqArtifact, PlanArtifact, + GeneratedArtifact, CiYamlArtifact, FalsifierYamlArtifact, GitignoreArtifact, GitattributesArtifact, RoadmapArtifact, DesignArtifact, GithooksPrePushArtifact, GithooksPreCommitArtifact, RunnerDeployArtifact, Stage0CrateLayoutGeneratedDagArtifact, Stage0CrateLayoutGeneratedRsArtifact, Stage0CratePartitionGeneratedDagArtifact, Stage0EmitPlanGeneratedDagArtifact, V1InterpreterDispatchGeneratedRsArtifact, LiveDeployApplyScriptArtifact, LiveDeployRetractScriptArtifact, AutoinstallUserDataArtifact, ProxyDhcpDnsmasqArtifact, PlanArtifact, RepoConsumer, GitProtocol, GithubActionsWorkflow, ProjectDocumentation, HostReconciler, CommitPolicy, CommitRequired, NotCommitted, HealPolicy, AutoPushEligible, AuthorCommitRequired, @@ -21,7 +21,6 @@ import gunbc.os_install { srv3_autoinstall_spec, fleet_autoinstall_specs, srv3_i import gunbc.gitignore_emit { path_is_ignored } import gunbc.plan_registry { all_plans } import gunbc.plans.idea_machine { idea_machine_plan } -import extdeps.filesystem.filesystem_io { Filesystem } import v2.std.live_tree { LiveTreeDisposition, ReadsLiveTree } data live_tree_disposition: LiveTreeDisposition = ReadsLiveTree @@ -49,24 +48,7 @@ test fn witness_per_artifact_red_receipts() -> Bool { && all(committed_generated_artifacts(), a => artifact_red_receipt(a: a)) } -data fixed_point_witness_note: String = "Fixed-point / byte-idempotence leg (ci-chores P0, 2026-07-22): witness_committed_is_fixed_point reads the REAL committed bytes off disk (Filesystem.Read, ReadsLiveTree) and asserts a fresh artifact_generate reproduces them byte-for-byte for every committed artifact. This is the executable form of `regen yields zero diff` — the property the automated chore commit relies on. It differs from witness_per_artifact_red_receipts (which compares generate-to-generate and so is blind to a committed-vs-generated mismatch such as the missing-trailing-newline defect P0 chased). RED control: witness_committed_fixed_point_red_control perturbs the read bytes and requires the equality to fail, so a false-green fixed point is unwritable. Note (§2): the drift gate run_generated_artifact_drift_gate_body already reads the same bytes as one conjunct; this witness ISOLATES the fixed-point property as a separately-falsifiable claim with its own control, rather than re-deriving the gate's pass/fail. Determinism of artifact_generate ACROSS processes (map-key iteration order) is a distinct property and is enforced by construction by v2.lens.determinism.determinism_compile_gate — not re-checked here." - -fn artifact_committed_matches(a: GeneratedArtifact) -> Bool { - let committed = Filesystem.Read(path: artifact_path(a: a)) - committed.success && !artifact_drifted(a: a, committed: committed.content) -} - -test fn witness_committed_is_fixed_point() -> Bool { - count(committed_generated_artifacts()) > 0 - && all(committed_generated_artifacts(), a => artifact_committed_matches(a: a)) -} - -test fn witness_committed_fixed_point_red_control() -> Bool { - let a = CiYamlArtifact - let committed = Filesystem.Read(path: artifact_path(a: a)) - committed.success - && artifact_drifted(a: a, committed: concat(committed.content, perturb)) -} +data fixed_point_witness_long_lane_note: String = "witness_committed_is_fixed_point and witness_committed_fixed_point_red_control rehomed to dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag (operator 5-second rule, 2026-08-03): measured 1005ms warm but flaked at 5004ms in falsifier discovery-corpus under host contention — see generated_artifact_drift_fixed_point_long_note there. The drift gate run_generated_artifact_drift_gate_body still reads the same bytes as one conjunct; the long-lane witness ISOLATES the fixed-point property as a separately-falsifiable claim with its own RED control." test fn witness_all_known_committed() -> Bool { artifact_is_committed(a: CiYamlArtifact) @@ -92,6 +74,7 @@ test fn witness_all_known_committed() -> Bool { && !path_is_ignored(path: "dag/gunbc/stage0_crate_layout_generated.dag") && !path_is_ignored(path: "dag/gunbc/stage0_crate_partition_generated.dag") && !path_is_ignored(path: "dag/gunbc/stage0_emit_plan_generated.dag") + && !path_is_ignored(path: "src/v1/stage0/src/v1_interpreter_dispatch_generated.rs") && !path_is_ignored(path: "src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs") && !path_is_ignored(path: "docs/plans/idea-machine.md") && !path_is_ignored(path: ".github/live-deploy-srv1-apply.sh") @@ -109,7 +92,7 @@ test fn witness_ignored_paths_excluded() -> Bool { } test fn witness_registry_complete() -> Bool { - count(generated_artifact_registry) == (15 + count(fleet_autoinstall_specs) + count(fleet_install_server_specs) + count(all_plans)) + count(generated_artifact_registry) == (16 + count(fleet_autoinstall_specs) + count(fleet_install_server_specs) + count(all_plans)) && registry_contains(a: CiYamlArtifact) && registry_contains(a: FalsifierYamlArtifact) && registry_contains(a: GitignoreArtifact) @@ -123,6 +106,7 @@ test fn witness_registry_complete() -> Bool { && registry_contains(a: Stage0CrateLayoutGeneratedRsArtifact) && registry_contains(a: Stage0CratePartitionGeneratedDagArtifact) && registry_contains(a: Stage0EmitPlanGeneratedDagArtifact) + && registry_contains(a: V1InterpreterDispatchGeneratedRsArtifact) && registry_contains(a: LiveDeployApplyScriptArtifact) && registry_contains(a: LiveDeployRetractScriptArtifact) && registry_contains(a: AutoinstallUserDataArtifact { spec: srv3_autoinstall_spec }) @@ -141,6 +125,7 @@ test fn witness_registry_complete() -> Bool { && artifact_is_committed(a: Stage0CrateLayoutGeneratedRsArtifact) && artifact_is_committed(a: Stage0CratePartitionGeneratedDagArtifact) && artifact_is_committed(a: Stage0EmitPlanGeneratedDagArtifact) + && artifact_is_committed(a: V1InterpreterDispatchGeneratedRsArtifact) && artifact_is_committed(a: LiveDeployApplyScriptArtifact) && artifact_is_committed(a: LiveDeployRetractScriptArtifact) && !artifact_is_committed(a: RunnerDeployArtifact) @@ -174,6 +159,7 @@ test fn witness_commit_policy_reasons() -> Bool { && consumer_is(a: Stage0CrateLayoutGeneratedRsArtifact, expected: GitProtocol) && consumer_is(a: Stage0CratePartitionGeneratedDagArtifact, expected: GitProtocol) && consumer_is(a: Stage0EmitPlanGeneratedDagArtifact, expected: GitProtocol) + && consumer_is(a: V1InterpreterDispatchGeneratedRsArtifact, expected: GitProtocol) && consumer_is(a: LiveDeployApplyScriptArtifact, expected: HostReconciler) && consumer_is(a: LiveDeployRetractScriptArtifact, expected: HostReconciler) && match artifact_commit_policy(a: RunnerDeployArtifact) { NotCommitted => true _ => false } @@ -221,4 +207,5 @@ test fn witness_extra_validation_wired() -> Bool { && artifact_extra_valid(a: Stage0CrateLayoutGeneratedDagArtifact) && artifact_extra_valid(a: Stage0CrateLayoutGeneratedRsArtifact) && artifact_extra_valid(a: Stage0EmitPlanGeneratedDagArtifact) + && artifact_extra_valid(a: V1InterpreterDispatchGeneratedRsArtifact) } diff --git a/dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag b/dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag new file mode 100644 index 00000000000..2289895f7e7 --- /dev/null +++ b/dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag @@ -0,0 +1,41 @@ +module test.claim.long.generated_artifact_drift_fixed_point_witness + +import gunbc.generated_artifact { + GeneratedArtifact, CiYamlArtifact, + committed_generated_artifacts, artifact_path, +} +import gunbc.generated_artifact_emit { ArtifactGenerated, ArtifactGenerationRefused, artifact_generate } +import extdeps.filesystem.filesystem_io { Filesystem } +import v2.std.live_tree { LiveTreeDisposition, ReadsLiveTree } + +data live_tree_disposition: LiveTreeDisposition = ReadsLiveTree + +data generated_artifact_drift_fixed_point_long_note: String = "Rehomed from dag/test/claim/generated_artifact_drift_test.dag (operator 5-second rule, 2026-08-03): witness_committed_is_fixed_point and its RED control read REAL committed bytes off disk (Filesystem.Read, ReadsLiveTree) and regenerate every committed artifact — measured 1005ms warm on srv_fleet_arm64 (witness_row_cost_basis.tsv) but flaked at 5004ms in falsifier discovery-corpus batch 1 under host contention (run 30550328673, BudgetExceeded). The fast witnesses (registry completeness, per-artifact generate-to-generate RED, policy rows) stay per-PR discovered in the parent file. Enrolled on falsifier_substrate_long_lane_entries (nightly falsifier batch 6, 180s eval budget). Local recipe: claim_batch --source-root dag --source-root src/v2 --entry dag/test/claim/long/generated_artifact_drift_fixed_point_witness_test.dag --functions witness_committed_is_fixed_point,witness_committed_fixed_point_red_control. Dissolve-on: eval lands under gunbc_ci_fast_lane_witness_eval_budget on a measured cold run and re-enrolls per-PR discovery." + +data fixed_point_witness_note: String = "Fixed-point / byte-idempotence leg (ci-chores P0, 2026-07-22): witness_committed_is_fixed_point reads the REAL committed bytes off disk (Filesystem.Read, ReadsLiveTree) and asserts a fresh artifact_generate reproduces them byte-for-byte for every committed artifact. This is the executable form of `regen yields zero diff` — the property the automated chore commit relies on. It differs from witness_per_artifact_red_receipts (which compares generate-to-generate and so is blind to a committed-vs-generated mismatch such as the missing-trailing-newline defect P0 chased). RED control: witness_committed_fixed_point_red_control perturbs the read bytes and requires the equality to fail, so a false-green fixed point is unwritable." + +data perturb: String = "\n# gunbc-generated-artifact-drift-receipt-perturb" + +fn artifact_drifted(a: GeneratedArtifact, committed: String) -> Bool { + match artifact_generate(a: a) { + ArtifactGenerationRefused { reason: _ } => true + ArtifactGenerated { content } => !(committed == content) + } +} + +fn artifact_committed_matches(a: GeneratedArtifact) -> Bool { + let committed = Filesystem.Read(path: artifact_path(a: a)) + committed.success && !artifact_drifted(a: a, committed: committed.content) +} + +test fn witness_committed_is_fixed_point() -> Bool { + count(committed_generated_artifacts()) > 0 + && all(committed_generated_artifacts(), a => artifact_committed_matches(a: a)) +} + +test fn witness_committed_fixed_point_red_control() -> Bool { + let a = CiYamlArtifact + let committed = Filesystem.Read(path: artifact_path(a: a)) + committed.success + && artifact_drifted(a: a, committed: concat(committed.content, perturb)) +} diff --git a/dag/test/claim/observation_emit_census_witness_test.dag b/dag/test/claim/observation_emit_census_witness_test.dag index 0cbd2a49500..1f2eece1506 100644 --- a/dag/test/claim/observation_emit_census_witness_test.dag +++ b/dag/test/claim/observation_emit_census_witness_test.dag @@ -26,6 +26,7 @@ import gunbc.observation_emit_census { assembly_split_site, witness_row_cost_site, witness_row_cost_drift_site, + selection_degradation_site, } data live_tree_disposition: LiveTreeDisposition = ReadsLiveTree @@ -132,7 +133,9 @@ test fn w_post_snapshot_live_tags_are_rostered_bidirectional() -> Bool { census_marker_present(site: witness_row_cost_site) && emit_site_is_frontier(site: witness_row_cost_site) && census_marker_present(site: witness_row_cost_drift_site) && - emit_site_is_frontier(site: witness_row_cost_drift_site) + emit_site_is_frontier(site: witness_row_cost_drift_site) && + census_marker_present(site: selection_degradation_site) && + emit_site_is_frontier(site: selection_degradation_site) } test fn w_the_raw_byte_dump_shape_is_gone_from_the_seed() -> Bool { diff --git a/dag/test/claim/occurrence_identity_acceptance_closure_witness_test.dag b/dag/test/claim/occurrence_identity_acceptance_closure_witness_test.dag new file mode 100644 index 00000000000..587cca5e655 --- /dev/null +++ b/dag/test/claim/occurrence_identity_acceptance_closure_witness_test.dag @@ -0,0 +1,287 @@ +module test.claim.occurrence_identity_acceptance_closure_witness_test + +import std.types { Bool, String, List } +import std.occurrence_identity { + OccurrenceIdentityAcceptanceLaw, + occurrence_identity_acceptance_laws, +} +import gunbc.occurrence_identity_acceptance_closure { + OccurrenceIdentityReceiptEnrollmentDebt, + occurrence_identity_consumer_red_debts, + occurrence_identity_receipt_enrollment_debts, + OccurrenceIdentityExecutingReceipt, + OccurrenceIdentityReceiptPassed, + OccurrenceIdentityReceiptFailed, + OccurrenceIdentityAdmittedDeferral, + OccurrenceIdentityClosingCovered, + OccurrenceIdentityClosingOpen, + OccurrenceIdentityClosingRefused, + UnknownReceiptLaw, + DuplicateReceiptLaw, + StaleReceiptLaw, + ReceiptDidNotPass, + ReceiptDeferralOverlap, + occurrence_identity_closing_verdict, + occurrence_identity_closing_complete, +} + +data occurrence_identity_consumer_red_debt_witness_note: String = "The expected owner and required receipt are PARAMETERS, not shared constants. Four receipts are green by local execution but retain consumer debt until parser_transport_witness_entries exists on main and executes them per PR. The census pins all six debts to their distinct acceptance nodes and exact required_receipt text, preventing a row from staying counted while silently weakening what execution must make RED." + +fn occurrence_identity_consumer_red_debt_has( + id: String, + owner: String, + required_receipt: String +) -> Bool { + occurrence_identity_consumer_red_debts + |> any(row => + row.id == id && + row.owner == owner && + row.required_receipt == required_receipt && + string_contains(row.dissolve_on, "DISSOLVE-ON:") + ) +} + +test fn occurrence_identity_consumer_red_debt_is_counted_holds() -> Bool { + (occurrence_identity_consumer_red_debts |> count) == 6 && + occurrence_identity_consumer_red_debt_has( + id: "rebuilt-reference-identity-preservation", + owner: "namespace-reference-derived-closure", + required_receipt: "A production reference rebuild preserves the exact sidecar occurrence identity and containment path; dropping or reminting the occurrence must make the consumer RED.", + ) && + occurrence_identity_consumer_red_debt_has( + id: "one-occurrence-collector-dedupe", + owner: "namespace-reference-derived-closure", + required_receipt: "Two observations of one authored occurrence enter the collector once by exact occurrence identity, never by spelling, SourceSpan, or Node structure.", + ) && + occurrence_identity_consumer_red_debt_has( + id: "structurally-equal-distinct-occurrences", + owner: "namespace-reference-derived-closure", + required_receipt: "Structurally equal and equally spelled authored occurrences with distinct IDs remain two collector entries.", + ) && + occurrence_identity_consumer_red_debt_has( + id: "pattern-declaration-reachability", + owner: "namespace-reference-derived-closure", + required_receipt: "Authoritative collection reaches every parser-minted pattern declaration occurrence, including nested pattern binders.", + ) && + occurrence_identity_consumer_red_debt_has( + id: "inferred-target-anchor-identity", + owner: "namespace-canonical-binding", + required_receipt: "An inferred target projection remains anchored to the exact authored occurrence instead of a rebuilt shell Node, spelling, or SourceSpan.", + ) && + occurrence_identity_consumer_red_debt_has( + id: "same-spelling-parser-declaration-isolation", + owner: "namespace-reference-derived-closure", + required_receipt: "Same-spelling declarations and references in sibling match arms, nested lets, lambdas, and parameters retain distinct authored identities and containment paths without overwrite.", + ) +} + +test fn occurrence_identity_receipt_enrollment_debt_is_counted_holds() -> Bool { + occurrence_identity_receipt_enrollment_debts == [ + OccurrenceIdentityReceiptEnrollmentDebt { + id: "namespace-parser-occurrence-receipts-per-pr-enrollment", + receipt_functions: [ + "w_rebuilt_reference_identity_preservation_executes_holds", + "w_structurally_equal_distinct_occurrences_execute_holds", + "w_pattern_declaration_reachability_executes_holds", + "w_same_spelling_parser_declaration_isolation_executes_holds", + "pipeline_occurrence_sidecar_serde_round_trip", + ], + owner: "witness-scheduling-source-root-surface", + cause: "The four DAG receipts and the generated Rust rebuild assertion are green by execution and discriminating under planted defects, but none is executed per PR on main. The DAG receipts require the scoped dag and src/v1 parser-transport batch whose parser_transport_witness_entries roster is not yet on main. The Rust test crate containing pipeline_occurrence_sidecar_serde_round_trip is cargo-checked but its tests are not executed.", + dissolve_on: "DISSOLVE-ON: gunbc.ci_layer_roots.parser_transport_witness_entries exists on main and executes the four DAG functions per PR, and pipeline_occurrence_sidecar_serde_round_trip executes per PR or its rebuild assertion migrates into an enrolled witness; prove both enrollment surfaces and narrow or delete this row in the same PR.", + }, + ] +} + +data occurrence_identity_closing_check_witness_note: String = "Synthetic controls for the validation/workflow closing fold, not production behavior receipts and not grounds for deleting debt. The positive control constructs Passed rows only to test the fold; it does not assert that any production consumer executed. The deferral control proves covered-with-deferral is not completion; the open control removes one law's coverage; and the refusal controls independently plant unknown, duplicate, stale, non-green, and receipt-plus-deferral rows. Production integration must replace these fixtures with observations decoded from the live scoped execution receipt." + +fn occurrence_identity_closing_receipt( + law: OccurrenceIdentityAcceptanceLaw +) -> OccurrenceIdentityExecutingReceipt { + OccurrenceIdentityExecutingReceipt { + law_id: law.id, + required_receipt: law.required_receipt, + consumer: "synthetic-closing-check-control", + execution: OccurrenceIdentityReceiptPassed, + } +} + +fn occurrence_identity_closing_exact_receipts() -> List { + occurrence_identity_acceptance_laws + |> map(law => occurrence_identity_closing_receipt(law: law)) +} + +fn occurrence_identity_closing_deferral( + law: OccurrenceIdentityAcceptanceLaw +) -> OccurrenceIdentityAdmittedDeferral { + OccurrenceIdentityAdmittedDeferral { + law_id: law.id, + required_receipt: law.required_receipt, + reason: "synthetic closing-check deferral control", + next_trigger: "synthetic trigger", + } +} + +test fn occurrence_identity_closing_exact_receipts_cover_every_law_holds() -> Bool { + occurrence_identity_acceptance_laws |> count == 5 && + occurrence_identity_closing_complete( + verdict: occurrence_identity_closing_verdict( + receipts: occurrence_identity_closing_exact_receipts(), + deferrals: [], + ) + ) +} + +test fn occurrence_identity_closing_deferral_is_covered_but_not_complete_holds() -> Bool { + let deferred_law = occurrence_identity_acceptance_laws |> first + match deferred_law { + Absent => false + Present { value: law } => + let receipts = occurrence_identity_closing_exact_receipts() + |> filter(receipt => receipt.law_id != law.id) + let verdict = occurrence_identity_closing_verdict( + receipts: receipts, + deferrals: [occurrence_identity_closing_deferral(law: law)], + ) + match verdict { + OccurrenceIdentityClosingCovered { deferred_law_ids: deferred_law_ids } => + deferred_law_ids == [law.id] && + !occurrence_identity_closing_complete(verdict: verdict) + _ => false + } + } +} + +test fn occurrence_identity_closing_missing_law_stays_open_holds() -> Bool { + let omitted_law = occurrence_identity_acceptance_laws |> first + match omitted_law { + Absent => false + Present { value: law } => + match occurrence_identity_closing_verdict( + receipts: occurrence_identity_closing_exact_receipts() + |> filter(receipt => receipt.law_id != law.id), + deferrals: [], + ) { + OccurrenceIdentityClosingOpen { missing_law_ids: missing_law_ids } => + missing_law_ids == [law.id] + _ => false + } + } +} + +test fn occurrence_identity_closing_unknown_receipt_refuses_holds() -> Bool { + let unknown = OccurrenceIdentityExecutingReceipt { + law_id: "unknown-occurrence-law", + required_receipt: "unknown", + consumer: "synthetic-closing-check-control", + execution: OccurrenceIdentityReceiptPassed, + } + match occurrence_identity_closing_verdict( + receipts: append(occurrence_identity_closing_exact_receipts(), items: [unknown]), + deferrals: [], + ) { + OccurrenceIdentityClosingRefused { refusals: refusals } => + refusals |> any(refusal => match refusal { + UnknownReceiptLaw { law_id: law_id } => law_id == "unknown-occurrence-law" + _ => false + }) + _ => false + } +} + +test fn occurrence_identity_closing_duplicate_receipt_refuses_holds() -> Bool { + let receipts = occurrence_identity_closing_exact_receipts() + let duplicate = receipts |> first + match duplicate { + Absent => false + Present { value: receipt } => + match occurrence_identity_closing_verdict( + receipts: append(receipts, items: [receipt]), + deferrals: [], + ) { + OccurrenceIdentityClosingRefused { refusals: refusals } => + refusals |> any(refusal => match refusal { + DuplicateReceiptLaw { law_id: law_id } => law_id == receipt.law_id + _ => false + }) + _ => false + } + } +} + +test fn occurrence_identity_closing_stale_receipt_refuses_holds() -> Bool { + let exact = occurrence_identity_closing_exact_receipts() + let first_exact = exact |> first + match first_exact { + Absent => false + Present { value: receipt } => + let stale = OccurrenceIdentityExecutingReceipt { + law_id: receipt.law_id, + required_receipt: "stale receipt text", + consumer: receipt.consumer, + execution: OccurrenceIdentityReceiptPassed, + } + match occurrence_identity_closing_verdict( + receipts: append( + exact |> filter(other => other.law_id != receipt.law_id), + items: [stale], + ), + deferrals: [], + ) { + OccurrenceIdentityClosingRefused { refusals: refusals } => + refusals |> any(refusal => match refusal { + StaleReceiptLaw { law_id: law_id } => law_id == receipt.law_id + _ => false + }) + _ => false + } + } +} + +test fn occurrence_identity_closing_non_green_receipt_refuses_holds() -> Bool { + let exact = occurrence_identity_closing_exact_receipts() + let first_exact = exact |> first + match first_exact { + Absent => false + Present { value: receipt } => + let failed = OccurrenceIdentityExecutingReceipt { + law_id: receipt.law_id, + required_receipt: receipt.required_receipt, + consumer: receipt.consumer, + execution: OccurrenceIdentityReceiptFailed, + } + match occurrence_identity_closing_verdict( + receipts: append( + exact |> filter(other => other.law_id != receipt.law_id), + items: [failed], + ), + deferrals: [], + ) { + OccurrenceIdentityClosingRefused { refusals: refusals } => + refusals |> any(refusal => match refusal { + ReceiptDidNotPass { law_id: law_id } => law_id == receipt.law_id + _ => false + }) + _ => false + } + } +} + +test fn occurrence_identity_closing_receipt_deferral_overlap_refuses_holds() -> Bool { + let law = occurrence_identity_acceptance_laws |> first + match law { + Absent => false + Present { value: first_law } => + match occurrence_identity_closing_verdict( + receipts: occurrence_identity_closing_exact_receipts(), + deferrals: [occurrence_identity_closing_deferral(law: first_law)], + ) { + OccurrenceIdentityClosingRefused { refusals: refusals } => + refusals |> any(refusal => match refusal { + ReceiptDeferralOverlap { law_id: law_id } => law_id == first_law.id + _ => false + }) + _ => false + } + } +} diff --git a/dag/test/claim/occurrence_identity_witness_test.dag b/dag/test/claim/occurrence_identity_witness_test.dag index 9e6c7ddf492..8d8976ded5a 100644 --- a/dag/test/claim/occurrence_identity_witness_test.dag +++ b/dag/test/claim/occurrence_identity_witness_test.dag @@ -14,7 +14,12 @@ import std.occurrence_identity { occurrence_id_eq, occurrence_id_allocator_advance_to, node_occurrence_identity_minted, - occurrence_identity_consumer_red_debts, + occurrence_identity_acceptance_law_rebuilt_reference, + occurrence_identity_acceptance_law_collector_dedupe, + occurrence_identity_acceptance_law_distinct_occurrences, + occurrence_identity_acceptance_law_pattern_reachability, + occurrence_identity_acceptance_law_parser_isolation, + occurrence_identity_acceptance_laws, } import v2.std.node { NodeOccurrenceId, @@ -127,41 +132,12 @@ test fn occurrence_identity_v2_shared_constructor_equivalence_holds() -> Bool { } } -data occurrence_identity_consumer_red_debt_owner_witness_note: String = "The expected owner is a PARAMETER, not a constant, because the roadmap recut split the single broad namespace node and the six rows no longer share one owner. Pinning each row to its own expected node is strictly stronger than the previous form, which only asserted that all six agreed with each other and would have stayed green if every row had been rehomed to the same wrong node." - -fn occurrence_identity_consumer_red_debt_has(id: String, owner: String) -> Bool { - occurrence_identity_consumer_red_debts - |> any(row => - row.id == id && - row.owner == owner && - string_contains(row.dissolve_on, "DISSOLVE-ON:") - ) -} - -test fn occurrence_identity_consumer_red_debt_is_counted_holds() -> Bool { - (occurrence_identity_consumer_red_debts |> count) == 6 && - occurrence_identity_consumer_red_debt_has( - id: "rebuilt-reference-identity-preservation", - owner: "namespace-reference-derived-closure", - ) && - occurrence_identity_consumer_red_debt_has( - id: "one-occurrence-collector-dedupe", - owner: "namespace-reference-derived-closure", - ) && - occurrence_identity_consumer_red_debt_has( - id: "structurally-equal-distinct-occurrences", - owner: "namespace-reference-derived-closure", - ) && - occurrence_identity_consumer_red_debt_has( - id: "pattern-declaration-reachability", - owner: "namespace-reference-derived-closure", - ) && - occurrence_identity_consumer_red_debt_has( - id: "inferred-target-anchor-identity", - owner: "namespace-canonical-binding", - ) && - occurrence_identity_consumer_red_debt_has( - id: "same-spelling-parser-declaration-isolation", - owner: "namespace-reference-derived-closure", - ) +test fn occurrence_identity_acceptance_law_denominator_is_exact_holds() -> Bool { + occurrence_identity_acceptance_laws == [ + occurrence_identity_acceptance_law_rebuilt_reference, + occurrence_identity_acceptance_law_collector_dedupe, + occurrence_identity_acceptance_law_distinct_occurrences, + occurrence_identity_acceptance_law_pattern_reachability, + occurrence_identity_acceptance_law_parser_isolation, + ] } diff --git a/dag/test/claim/publication_publisher_witness_test.dag b/dag/test/claim/publication_publisher_witness_test.dag new file mode 100644 index 00000000000..6b7a2a743b2 --- /dev/null +++ b/dag/test/claim/publication_publisher_witness_test.dag @@ -0,0 +1,589 @@ +module test.claim.publication_publisher_witness + +import std.types { Bool, CommitSha, FilePath, GitRef, NonEmptyStr, String } +import std.content_hash { content_hash_of_value, serialize_content_hash } +import extdeps.git.hooks { PrePushStdinRow, zero_sha } +import extdeps.git.publication_transport { + GitRefUpdateSpec, + GitPushRequest, +} +import gunbc.publication_policy { + PublicationPolicy, + SubtreePublishRule, + PublishPublic, + WithholdPrivate, + PublicationPolicyAccepted, + PublicationPolicyRefused, + UnknownTopLevelRoot, + ConflictingSubtreeRule, + admit_publication_policy, + publication_policy_default_disposition, + resolve_disposition_for_path, +} +import gunbc.public_projection { + PublicationSubject, + PublicProjectionPlan, + derive_public_projection_plan, + public_projection_includes_subject, +} +import gunbc.publication_decision { + PublicationDecisionReceipt, + PublicationAuthorityId, + PublicationAudience, + UniversalPublicationAudience, + EnumeratedPublicationAudience, + publication_decision_requires_refresh, + publication_decision_authorizes_newly_public, +} +import gunbc.publication_admission_delta { + ChangeLocalAdmissionRequest, + ChangeLocalAdmitted, + ChangeLocalRefused, + CandidateDigestInconsistent, + NewlyPublic, + NewlyWithheld, + admit_change_local_projection, +} +import tools.publication_publisher { + ModeledSessionId, + SoleModeledPublisher, + OrdinarySession, + NotTheSolePublisher, + ProjectionNotAdmitted, + DecisionReceiptMissing, + DecisionReceiptNotAuthorizing, + UnauthorizedPublicPush, + NoPushedRefsPresented, + PublicWriteAdmitted, + PublicWriteRefused, + sole_modeled_publisher_session, + sole_publication_authority_id, + session_publication_posture, + admit_public_write, + ordinary_session_lacks_public_write_authority, +} +import tools.publication_push_shadow { + ObservedPublicPush, + ShadowPushWouldRefuse, + shadow_replay_public_pushes, + shadow_refusal_count, + shadow_would_refuse_ordinary_session, +} +import v2.std.live_tree { LiveTreeDisposition, SubstrateInputsOnly } + +data live_tree_disposition: LiveTreeDisposition = SubstrateInputsOnly + +data synthetic_head: CommitSha = "synthetic-head-sha" +data synthetic_ordinary_session: ModeledSessionId = "synthetic-ordinary-session" as ModeledSessionId +data synthetic_policy_version: NonEmptyStr = "policy-v1" as NonEmptyStr + +fn synthetic_subject(path: FilePath, identity: String) -> PublicationSubject { + PublicationSubject { + subject_identity: content_hash_of_value(value: identity as NonEmptyStr), + content_identity: content_hash_of_value(value: identity as NonEmptyStr), + path: path, + } +} + +fn public_docs_policy() -> PublicationPolicy { + PublicationPolicy { + version: synthetic_policy_version, + default_disposition: publication_policy_default_disposition, + rules: [SubtreePublishRule { + prefix: "docs/plans" as FilePath, + disposition: PublishPublic, + }], + } +} + +fn admitted_public_docs_policy() -> AdmittedPublicationPolicy { + match admit_publication_policy(policy: public_docs_policy()) { + PublicationPolicyAccepted { admitted: admitted } => admitted + PublicationPolicyRefused { cause: _ } => + AdmittedPublicationPolicy { policy: public_docs_policy() } + } +} + +fn synthetic_decision_receipt(subject: PublicationSubject) -> PublicationDecisionReceipt { + PublicationDecisionReceipt { + subject_identity: subject.subject_identity, + content_identity: subject.content_identity, + audience: UniversalPublicationAudience, + policy_version: synthetic_policy_version, + authority: sole_publication_authority_id, + } +} + +fn synthetic_push() -> PrePushStdinRow { + PrePushStdinRow { + local_ref: "refs/heads/session/synthetic-ordinary-session", + local_sha: synthetic_head, + remote_ref: "refs/heads/session/synthetic-ordinary-session", + remote_sha: zero_sha, + } +} + +test fn ordinary_session_lacks_public_write_authority_holds() -> Bool { + ordinary_session_lacks_public_write_authority(session: synthetic_ordinary_session) + && match session_publication_posture(session: synthetic_ordinary_session) { + OrdinarySession { session: session } => session == synthetic_ordinary_session + SoleModeledPublisher { session: _ } => false + } +} + +test fn sole_publisher_posture_is_unique() -> Bool { + match session_publication_posture(session: sole_modeled_publisher_session) { + SoleModeledPublisher { session: session } => session == sole_modeled_publisher_session + OrdinarySession { session: _ } => false + } +} + +test fn git_push_shape_is_modeled_not_raw_argv() -> Bool { + let update = GitRefUpdateSpec { + local_ref: "refs/heads/session/example" as GitRef, + remote_ref: "refs/heads/session/example" as GitRef, + } + let request = GitPushRequest { + remote: "origin" as NonEmptyStr, + ref_updates: [update], + } + request.remote == ("origin" as NonEmptyStr) && request.ref_updates == [update] +} + +test fn publication_policy_refuses_unknown_top_level_root() -> Bool { + match admit_publication_policy(policy: PublicationPolicy { + version: synthetic_policy_version, + default_disposition: publication_policy_default_disposition, + rules: [SubtreePublishRule { + prefix: "private-overlay/secret" as FilePath, + disposition: PublishPublic, + }], + }) { + PublicationPolicyAccepted { admitted: _ } => false + PublicationPolicyRefused { cause: cause } => + match cause { + UnknownTopLevelRoot { prefix: _ } => true + ConflictingSubtreeRule { prefix: _ } => false + } + } +} + +test fn publication_policy_refuses_conflicting_prefix_rules() -> Bool { + match admit_publication_policy(policy: PublicationPolicy { + version: synthetic_policy_version, + default_disposition: WithholdPrivate, + rules: [ + SubtreePublishRule { prefix: "docs/plans" as FilePath, disposition: PublishPublic }, + SubtreePublishRule { prefix: "docs/plans" as FilePath, disposition: WithholdPrivate }, + ], + }) { + PublicationPolicyAccepted { admitted: _ } => false + PublicationPolicyRefused { cause: cause } => + match cause { + ConflictingSubtreeRule { prefix: _ } => true + UnknownTopLevelRoot { prefix: _ } => false + } + } +} + +test fn publication_policy_most_specific_rule_wins() -> Bool { + let policy = PublicationPolicy { + version: synthetic_policy_version, + default_disposition: WithholdPrivate, + rules: [ + SubtreePublishRule { prefix: "docs" as FilePath, disposition: WithholdPrivate }, + SubtreePublishRule { prefix: "docs/plans" as FilePath, disposition: PublishPublic }, + ], + } + match admit_publication_policy(policy: policy) { + PublicationPolicyAccepted { admitted: accepted } => + resolve_disposition_for_path(policy: accepted.policy, path: "docs/plans/sole-modeled-publisher-design.md" as FilePath) == PublishPublic + && resolve_disposition_for_path(policy: accepted.policy, path: "docs/other.md" as FilePath) == WithholdPrivate + PublicationPolicyRefused { cause: _ } => false + } +} + +test fn public_projection_plan_derives_from_policy_not_pathname_census() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/sole-modeled-publisher-design.md" as FilePath, + identity: "subject-docs-plan", + ) + let plan = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + public_projection_includes_subject(plan: plan, subject_identity: subject.subject_identity) + && count(plan.omitted_subjects) == 0 +} + +test fn change_local_admission_classifies_newly_public_delta() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/new.md" as FilePath, + identity: "subject-new-doc", + ) + let candidate = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + match admit_change_local_projection(request: ChangeLocalAdmissionRequest { + current: Absent, + candidate: candidate, + }) { + ChangeLocalAdmitted { delta: delta, candidate: _ } => + count(filter(delta, item => match item { + NewlyPublic { subject: admitted } => admitted.subject_identity == subject.subject_identity + _ => false + })) > 0 + ChangeLocalRefused { cause: _ } => false + } +} + +test fn change_local_admission_refuses_tampered_projection_digest() -> Bool { + let candidate = derive_public_projection_plan( + admitted: admitted_public_docs_policy(), + source_revision: synthetic_head, + authored_subjects: [synthetic_subject( + path: "docs/plans/tampered.md" as FilePath, + identity: "subject-tampered", + )], + ) + let tampered = PublicProjectionPlan { + source_revision: candidate.source_revision, + policy_version: candidate.policy_version, + included_subjects: candidate.included_subjects, + omitted_subjects: candidate.omitted_subjects, + projection_digest: content_hash_of_value(value: "tampered-digest" as NonEmptyStr), + } + match admit_change_local_projection(request: ChangeLocalAdmissionRequest { + current: Absent, + candidate: tampered, + }) { + ChangeLocalRefused { cause: cause } => + match cause { + CandidateDigestInconsistent { expected: _, observed: _ } => true + WholeProjectionAuditRequired { detail: _ } => false + } + ChangeLocalAdmitted { delta: _, candidate: _ } => false + } +} + +test fn change_local_admission_classifies_deletion_as_newly_withheld() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/deleted.md" as FilePath, + identity: "subject-deleted", + ) + let current = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + let candidate = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [], + ) + match admit_change_local_projection(request: ChangeLocalAdmissionRequest { + current: Present { value: current }, + candidate: candidate, + }) { + ChangeLocalAdmitted { delta: delta, candidate: _ } => + count(filter(delta, item => match item { + NewlyWithheld { subject: withheld } => withheld.subject_identity == subject.subject_identity + _ => false + })) > 0 + ChangeLocalRefused { cause: _ } => false + } +} + +test fn publication_decision_authorizes_matching_policy_authority_and_audience() -> Bool { + let subject = synthetic_subject( + path: "docs/plans/receipt-auth.md" as FilePath, + identity: "subject-receipt-auth", + ) + publication_decision_authorizes_newly_public( + receipt: synthetic_decision_receipt(subject: subject), + subject: subject, + policy_version: synthetic_policy_version, + authority: sole_publication_authority_id, + ) +} + +test fn sole_publisher_refuses_stale_policy_version_receipt() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/stale-receipt.md" as FilePath, + identity: "subject-stale-receipt", + ) + let candidate = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + let stale_receipt = PublicationDecisionReceipt { + subject_identity: subject.subject_identity, + content_identity: subject.content_identity, + audience: UniversalPublicationAudience, + policy_version: "stale-policy" as NonEmptyStr, + authority: sole_publication_authority_id, + } + match admit_public_write( + session: sole_modeled_publisher_session, + current: Absent, + candidate: candidate, + decisions: [stale_receipt], + pushed_refs: [synthetic_push()], + ) { + PublicWriteRefused { session: _, cause: cause } => + match cause { + DecisionReceiptNotAuthorizing { session: _, subject_identity: id, detail: _ } => + id == (serialize_content_hash(hash: subject.subject_identity) as String) + _ => false + } + PublicWriteAdmitted { authority: _ } => false + } +} + +test fn sole_publisher_refuses_wrong_authority_receipt() -> Bool { + let subject = synthetic_subject( + path: "docs/plans/wrong-authority.md" as FilePath, + identity: "subject-wrong-authority", + ) + let candidate = derive_public_projection_plan( + admitted: admitted_public_docs_policy(), + source_revision: synthetic_head, + authored_subjects: [subject], + ) + let wrong_authority_receipt = PublicationDecisionReceipt { + subject_identity: subject.subject_identity, + content_identity: subject.content_identity, + audience: UniversalPublicationAudience, + policy_version: synthetic_policy_version, + authority: "not-the-publisher" as PublicationAuthorityId, + } + match admit_public_write( + session: sole_modeled_publisher_session, + current: Absent, + candidate: candidate, + decisions: [wrong_authority_receipt], + pushed_refs: [synthetic_push()], + ) { + PublicWriteRefused { session: _, cause: cause } => + match cause { + DecisionReceiptNotAuthorizing { session: _, subject_identity: _, detail: _ } => true + _ => false + } + PublicWriteAdmitted { authority: _ } => false + } +} + +test fn sole_publisher_refuses_enumerated_audience_receipt() -> Bool { + let subject = synthetic_subject( + path: "docs/plans/narrow-audience.md" as FilePath, + identity: "subject-narrow-audience", + ) + let candidate = derive_public_projection_plan( + admitted: admitted_public_docs_policy(), + source_revision: synthetic_head, + authored_subjects: [subject], + ) + let narrow_receipt = PublicationDecisionReceipt { + subject_identity: subject.subject_identity, + content_identity: subject.content_identity, + audience: EnumeratedPublicationAudience { label: "private-team" }, + policy_version: synthetic_policy_version, + authority: sole_publication_authority_id, + } + match admit_public_write( + session: sole_modeled_publisher_session, + current: Absent, + candidate: candidate, + decisions: [narrow_receipt], + pushed_refs: [synthetic_push()], + ) { + PublicWriteRefused { session: _, cause: cause } => + match cause { + DecisionReceiptNotAuthorizing { session: _, subject_identity: _, detail: _ } => true + _ => false + } + PublicWriteAdmitted { authority: _ } => false + } +} + +test fn publication_decision_binds_content_identity_not_pathname() -> Bool { + let receipt = PublicationDecisionReceipt { + subject_identity: content_hash_of_value(value: "subject-a" as NonEmptyStr), + content_identity: content_hash_of_value(value: "content-v1" as NonEmptyStr), + audience: UniversalPublicationAudience, + policy_version: synthetic_policy_version, + authority: sole_publication_authority_id, + } + publication_decision_requires_refresh( + receipt: receipt, + subject_identity: content_hash_of_value(value: "subject-a" as NonEmptyStr), + content_identity: content_hash_of_value(value: "content-v2" as NonEmptyStr), + ) +} + +test fn ordinary_session_reds_before_projection_check() -> Bool { + let candidate = derive_public_projection_plan( + admitted: admitted_public_docs_policy(), + source_revision: synthetic_head, + authored_subjects: [synthetic_subject( + path: "docs/plans/x.md" as FilePath, + identity: "subject-x", + )], + ) + match admit_public_write( + session: synthetic_ordinary_session, + current: Absent, + candidate: candidate, + decisions: [], + pushed_refs: [synthetic_push()], + ) { + PublicWriteRefused { session: _, cause: cause } => + match cause { + NotTheSolePublisher { session: _, sole_publisher: sole } => sole == sole_modeled_publisher_session + _ => false + } + PublicWriteAdmitted { authority: _ } => false + } +} + +test fn sole_publisher_admits_change_local_projection() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/y.md" as FilePath, + identity: "subject-y", + ) + let candidate = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + match admit_public_write( + session: sole_modeled_publisher_session, + current: Absent, + candidate: candidate, + decisions: [synthetic_decision_receipt(subject: subject)], + pushed_refs: [synthetic_push()], + ) { + PublicWriteAdmitted { authority: authority } => + authority.authority_id == sole_publication_authority_id + && authority.projection.plan.source_revision == synthetic_head + PublicWriteRefused { session: _, cause: _ } => false + } +} + +test fn sole_publisher_refuses_newly_public_without_receipt() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/no-receipt.md" as FilePath, + identity: "subject-no-receipt", + ) + let candidate = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + match admit_public_write( + session: sole_modeled_publisher_session, + current: Absent, + candidate: candidate, + decisions: [], + pushed_refs: [synthetic_push()], + ) { + PublicWriteRefused { session: _, cause: cause } => + match cause { + DecisionReceiptMissing { session: _, subject_identity: id } => + id == (serialize_content_hash(hash: subject.subject_identity) as String) + _ => false + } + PublicWriteAdmitted { authority: _ } => false + } +} + +test fn sole_publisher_refuses_push_head_mismatch() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/mismatch.md" as FilePath, + identity: "subject-mismatch", + ) + let candidate = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + let bad_push = PrePushStdinRow { + local_ref: "refs/heads/session/synthetic-ordinary-session", + local_sha: "wrong-head" as CommitSha, + remote_ref: "refs/heads/session/synthetic-ordinary-session", + remote_sha: zero_sha, + } + match admit_public_write( + session: sole_modeled_publisher_session, + current: Absent, + candidate: candidate, + decisions: [synthetic_decision_receipt(subject: subject)], + pushed_refs: [bad_push], + ) { + PublicWriteRefused { session: _, cause: cause } => + match cause { + UnauthorizedPublicPush { session: _, local_ref: _, local_sha: _, detail: _ } => true + _ => false + } + PublicWriteAdmitted { authority: _ } => false + } +} + +test fn sole_publisher_refuses_empty_pushed_refs() -> Bool { + let admitted = admitted_public_docs_policy() + let subject = synthetic_subject( + path: "docs/plans/empty-push.md" as FilePath, + identity: "subject-empty-push", + ) + let candidate = derive_public_projection_plan( + admitted: admitted, + source_revision: synthetic_head, + authored_subjects: [subject], + ) + match admit_public_write( + session: sole_modeled_publisher_session, + current: Absent, + candidate: candidate, + decisions: [synthetic_decision_receipt(subject: subject)], + pushed_refs: [], + ) { + PublicWriteRefused { session: _, cause: cause } => + match cause { + NoPushedRefsPresented { session: session } => + session == sole_modeled_publisher_session + _ => false + } + PublicWriteAdmitted { authority: _ } => false + } +} + +test fn shadow_replay_counts_ordinary_session_refusals() -> Bool { + let candidate = derive_public_projection_plan( + admitted: admitted_public_docs_policy(), + source_revision: synthetic_head, + authored_subjects: [synthetic_subject( + path: "docs/plans/z.md" as FilePath, + identity: "subject-z", + )], + ) + let observed = ObservedPublicPush { + session: synthetic_ordinary_session, + head: synthetic_head, + push: synthetic_push(), + candidate: candidate, + decisions: [], + } + shadow_refusal_count(entries: shadow_replay_public_pushes(current: Absent, events: [observed])) == 1 + && shadow_would_refuse_ordinary_session(current: Absent, observed: observed) +} diff --git a/dag/test/claim/selection_degradation_receipt_witness_test.dag b/dag/test/claim/selection_degradation_receipt_witness_test.dag new file mode 100644 index 00000000000..5dbb90fbd20 --- /dev/null +++ b/dag/test/claim/selection_degradation_receipt_witness_test.dag @@ -0,0 +1,141 @@ +module test.claim.selection_degradation_receipt_witness_test + +import v2.std.live_tree { LiveTreeDisposition, SubstrateInputsOnly } +import std.types { String, Bool, NonEmptyStr } +import std.nat { Nat } +import gunbc.selection_degradation_receipt { + SelectionDegradationReceipt, + SelectionDegradationApplied, + SelectionDegradationSuperset, + SelectionDegradationOff, + selection_degradation_receipt_of, + selection_degradation_receipt_line, + selection_degradation_receipt_body, + selection_degradation_is_superset, + selection_degradation_is_applied_narrowed, + selection_degradation_state_tag, +} + +data live_tree_disposition: LiveTreeDisposition = SubstrateInputsOnly + +data sdr_witness_note: String = "Executing consumer for gunbc.selection_degradation_receipt (floor prep-tax P2). THE PAIR IS THE PROOF: a narrowed affected run must read SelectionApplied with honest counts; a whole-corpus affected run must read SelectionSuperset with an explicit fallback_reason — never quiet success. RED controls mislabel a superset as applied." + +test fn sdr_applied_narrowed_receipt() -> Bool { + let line = selection_degradation_receipt_line( + selection_mode_tag: "applied" as NonEmptyStr, + selected: 602, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + let r = selection_degradation_receipt_of( + selection_mode_tag: "applied" as NonEmptyStr, + selected: 602, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + selection_degradation_is_applied_narrowed(receipt: r) + && string_contains(s: line, pattern: "selection_state=SelectionApplied") + && string_contains(s: line, pattern: "selected_entry_groups=602") + && string_contains(s: line, pattern: "total_entry_groups=842") + && string_contains(s: line, pattern: "selection_ratio=0.7149") + && string_contains(s: line, pattern: "fallback_reason=") +} + +test fn sdr_superset_whole_corpus_is_loud() -> Bool { + let line = selection_degradation_receipt_line( + selection_mode_tag: "applied" as NonEmptyStr, + selected: 842, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + let r = selection_degradation_receipt_of( + selection_mode_tag: "applied" as NonEmptyStr, + selected: 842, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + selection_degradation_is_superset(receipt: r) + && string_contains(s: line, pattern: "selection_state=SelectionSuperset") + && string_contains(s: line, pattern: "selected_entry_groups=842") + && string_contains(s: line, pattern: "total_entry_groups=842") + && string_contains(s: line, pattern: "selection_ratio=1.0000") + && string_contains(s: line, pattern: "counted performance degradation") +} + +test fn sdr_off_mode_reports_full_run() -> Bool { + let line = selection_degradation_receipt_line( + selection_mode_tag: "off" as NonEmptyStr, + selected: 842, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + let r = selection_degradation_receipt_of( + selection_mode_tag: "off" as NonEmptyStr, + selected: 842, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + selection_degradation_state_tag(state: r.selection_state) == "SelectionOff" + && string_contains(s: line, pattern: "selection_state=SelectionOff") +} + +test fn sdr_superset_must_not_read_as_applied_red() -> Bool { + let r = selection_degradation_receipt_of( + selection_mode_tag: "applied" as NonEmptyStr, + selected: 842, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + !selection_degradation_is_applied_narrowed(receipt: r) +} + +test fn sdr_categorization_unavailable_superset_still_superset() -> Bool { + let r = selection_degradation_receipt_of( + selection_mode_tag: "applied" as NonEmptyStr, + selected: 842, + total: 842, + categorization_unavailable: true, + categorization_reason: "module graph facts absent" + ) + selection_degradation_is_superset(receipt: r) + && string_contains( + s: r.fallback_reason, + pattern: "upfront import-closure categorization failed" + ) +} + +test fn sdr_receipt_body_carries_all_five_fields() -> Bool { + let body = selection_degradation_receipt_body( + selection_mode_tag: "applied" as NonEmptyStr, + selected: 602, + total: 842, + categorization_unavailable: false, + categorization_reason: "" + ) + string_contains(s: body, pattern: "selection_state=SelectionApplied") + && string_contains(s: body, pattern: "selected_entry_groups=602") + && string_contains(s: body, pattern: "total_entry_groups=842") + && string_contains(s: body, pattern: "selection_ratio=0.7149") + && string_contains(s: body, pattern: "fallback_reason=") +} + +test fn sdr_unknown_mode_tag_is_unavailable_fail_closed() -> Bool { + let r = selection_degradation_receipt_of( + selection_mode_tag: "bogus" as NonEmptyStr, + selected: 1, + total: 2, + categorization_unavailable: false, + categorization_reason: "" + ) + selection_degradation_state_tag(state: r.selection_state) == "SelectionUnavailable" + && string_contains(s: r.fallback_reason, pattern: "unknown selection_mode_tag") + && string_contains(s: r.fallback_reason, pattern: "bogus") + && !string_contains(s: r.fallback_reason, pattern: "categorization failed") +} diff --git a/dag/test/claim/v1_interpreter_primitive_dispatch_authority_acceptance_test.dag b/dag/test/claim/v1_interpreter_primitive_dispatch_authority_acceptance_test.dag new file mode 100644 index 00000000000..60f1aa98de2 --- /dev/null +++ b/dag/test/claim/v1_interpreter_primitive_dispatch_authority_acceptance_test.dag @@ -0,0 +1,101 @@ +module test.claim.v1_interpreter_primitive_dispatch_authority_acceptance + +import v2.std.live_tree { LiveTreeDisposition, SubstrateInputsOnly } +import gunbc.v1_interpreter_dispatch_emit { + any_roster_site_has_rust_variant_collision, + dispatch_emit_site_key_is_emittable, + dispatch_emit_site_routing_scaffold_note, + expected_v1_interpreter_dispatch_generated_rs, + roster_rows_with_unknown_emit_site, + rust_variant_collision_synthetic_red_control, + V1InterpreterDispatchGenerated, + V1InterpreterDispatchGenerationRefused, +} +import gunbc.v1_interpreter_primitive_surface { + AuthoredInRoster, + DeclaredHere, + FreeCall, + MethodCall, + ServiceDispatch, + arm_declares_dissolution_trigger, + v1_interpreter_authored_roster_arms, + v1_interpreter_declared_arms, + v1_interpreter_derived_arms, + v1_interpreter_free_call_arms, + v1_interpreter_roster_seed_scaffold, +} + +data live_tree_disposition: LiveTreeDisposition = SubstrateInputsOnly + +data closing_contract_note: String = "THE CLOSING CHECK FOR v1-interpreter-primitive-dispatch-authority. R1 inverts the roster: gunbc.v1_interpreter_primitive_surface v1_interpreter_authored_roster_arms is the canonical authority; generated lookup in v1_interpreter_dispatch_generated.rs routes spellings to typed arm identities derived from arm identity, and the interpreter dispatch macros consult that lookup before matching handler bodies. The checks here are structural properties that survive roster growth -- not population pins.\n\nCOMPILE-TIME EXHAUSTIVENESS (site-scoped): on single-family sites (eval_builtin_inner, eval_algebra_method_inner, try_v2_std_collection_map_primitive_grounding, try_parse_table_memo_dispatch) a roster row without a handler macro arm fails cargo build via a non-exhaustive inner match on the generated enum — no Bool half, no wildcard. On multi-family shared-enum sites (eval_call_bridge, eval_call_native_intercept) each family guard expands only its subset of EvalCallBridgeArm / EvalCallNativeInterceptArm and requires a wildcard arm, so a roster row added to an active family without a matching handler body degrades to runtime unreachable! rather than a compile error; per-family enum split is the follow-up construction wall. EMIT-SITE COVERAGE refuses generation when any authored row maps outside known_dispatch_emit_site_keys (review 47777 class: bare eval_call site key must not silently omit rows). VARIANT COLLISION refuses generation when two distinct arm identities within one emit site collapse to the same PascalCase enum name (distinct_rust_variants must not silently deduplicate). POSITIVE CONTROLS: dispatch_emit_succeeds_on_live_roster and src/v1/stage0/tests/interpreter_dispatch_authority.rs lookup coverage per site. DISCRIMINATING REDS ENROLLED HERE: bare_eval_call_site_key_is_not_emittable_red_control and rust_variant_collision_synthetic_red_control; single-family compile-time exhaustiveness is cargo build itself, not a separate enrolled mismatch RED in the Rust integration test file.\n\nWHAT MAKES THIS ABLE TO FAIL. Reverting derived rows to DerivedFromDispatch, reintroducing the interpreter_dispatch_arm_rows bridge spelling, dropping a declared residual row's dissolution trigger, removing the generated lookup path, allowing unknown emit-site roster rows, or allowing variant-colliding identities each reds a clause." + +fn roster_rows_are_authored_in_roster_not_transcribed_from_rust() -> Bool { + count(v1_interpreter_derived_arms()) > 0 + && (v1_interpreter_derived_arms() |> all(r => r.enumeration == AuthoredInRoster)) +} + +fn self_reading_bridge_arm_is_deleted() -> Bool { + !v1_interpreter_free_call_arms() + |> any(r => r.authored_spelling == "interpreter_dispatch_arm_rows") +} + +fn declared_residual_rows_retain_independent_dispositions() -> Bool { + let expected = ["eval_method_call", "eval_service_call"] + let actual = v1_interpreter_declared_arms() |> map(r => r.dispatch_symbol) + count(actual |> filter(s => !expected |> any(e => e == s))) == 0 + && count(expected |> filter(e => !actual |> any(s => s == e))) == 0 + && (v1_interpreter_declared_arms() |> all(r => + match r.enumeration { + DeclaredHere { dissolve_on: _ } => arm_declares_dissolution_trigger(arm: r) + _ => false + })) + && (v1_interpreter_declared_arms() |> any(r => r.form == MethodCall)) + && (v1_interpreter_declared_arms() |> any(r => r.form == ServiceDispatch)) +} + +fn handler_body_scaffold_names_remaining_residue() -> Bool { + let scaffold = v1_interpreter_roster_seed_scaffold() + scaffold.target_roadmap_node == "v1-interpreter-primitive-dispatch-authority" + && string_contains(s: scaffold.deletion_condition, pattern: "v1_interpreter_primitive_surface.dag") + && string_contains(s: scaffold.deletion_condition, pattern: "arm identity") +} + +fn every_authored_roster_row_maps_to_known_emit_site() -> Bool { + count(v1_interpreter_authored_roster_arms()) > 0 + && count(roster_rows_with_unknown_emit_site()) == 0 +} + +fn dispatch_emit_succeeds_on_live_roster() -> Bool { + match expected_v1_interpreter_dispatch_generated_rs() { + V1InterpreterDispatchGenerated { content: _ } => true + V1InterpreterDispatchGenerationRefused { reason: _ } => false + } +} + +fn bare_eval_call_site_key_is_not_emittable_red_control() -> Bool { + !dispatch_emit_site_key_is_emittable(site_key: "eval_call") + && dispatch_emit_site_key_is_emittable(site_key: "eval_call_bridge") +} + +fn live_roster_has_no_rust_variant_collisions() -> Bool { + count(v1_interpreter_authored_roster_arms()) > 0 + && !any_roster_site_has_rust_variant_collision(rows: v1_interpreter_authored_roster_arms()) +} + +fn dispatch_site_routing_scaffold_names_dissolution_trigger() -> Bool { + string_contains(s: dispatch_emit_site_routing_scaffold_note, pattern: "Dissolve-on:") + && string_contains(s: dispatch_emit_site_routing_scaffold_note, pattern: "dispatch_emit_site") +} + +test fn v1_interpreter_primitive_dispatch_authority_acceptance_contract_holds() -> Bool { + roster_rows_are_authored_in_roster_not_transcribed_from_rust() + && self_reading_bridge_arm_is_deleted() + && declared_residual_rows_retain_independent_dispositions() + && handler_body_scaffold_names_remaining_residue() + && dispatch_site_routing_scaffold_names_dissolution_trigger() + && every_authored_roster_row_maps_to_known_emit_site() + && live_roster_has_no_rust_variant_collisions() + && dispatch_emit_succeeds_on_live_roster() + && bare_eval_call_site_key_is_not_emittable_red_control() + && rust_variant_collision_synthetic_red_control() +} diff --git a/dag/test/claim/v1_interpreter_primitive_roster_acceptance_test.dag b/dag/test/claim/v1_interpreter_primitive_roster_acceptance_test.dag index 997d2eba040..d8537ac5400 100644 --- a/dag/test/claim/v1_interpreter_primitive_roster_acceptance_test.dag +++ b/dag/test/claim/v1_interpreter_primitive_roster_acceptance_test.dag @@ -34,7 +34,7 @@ fn planted_row(identity: String, spelling: String, symbol: String) -> Interprete } } -fn known_dispatch_sites_derive_their_rows() -> Bool { +fn known_dispatch_sites_contribute_rows() -> Bool { let symbols = [ "eval_builtin_inner", "eval_algebra_method_inner", @@ -43,7 +43,6 @@ fn known_dispatch_sites_derive_their_rows() -> Bool { "try_parse_table_memo_dispatch", ] symbols |> all(s => v1_interpreter_derived_arms() |> any(r => r.dispatch_symbol == s)) - && (v1_interpreter_derived_arms() |> all(r => r.enumeration == DerivedFromDispatch)) } fn duplicate_row_keys_refuse() -> Bool { @@ -95,7 +94,7 @@ fn unrecognised_form_refuses_rather_than_defaulting() -> Bool { } test fn v1_interpreter_primitive_roster_acceptance_contract_holds() -> Bool { - known_dispatch_sites_derive_their_rows() + known_dispatch_sites_contribute_rows() && duplicate_row_keys_refuse() && shadows_are_exactly_the_known_named_set() && declared_rows_carry_exact_triggers() diff --git a/dag/test/claim/v1_interpreter_primitive_surface_witness_test.dag b/dag/test/claim/v1_interpreter_primitive_surface_witness_test.dag index f34c05fda22..f161c9d6952 100644 --- a/dag/test/claim/v1_interpreter_primitive_surface_witness_test.dag +++ b/dag/test/claim/v1_interpreter_primitive_surface_witness_test.dag @@ -1,6 +1,7 @@ module test.claim.v1_interpreter_primitive_surface_witness_test import gunbc.v1_interpreter_primitive_surface { + AuthoredInRoster, DerivedFromDispatch, FreeCall, InterpreterPrimitiveArmId, @@ -33,8 +34,8 @@ fn planted_row(identity: String, spelling: String, symbol: String) -> Interprete } } -test fn derived_surface_includes_its_own_reading_arm() -> Bool { - v1_interpreter_free_call_arms() |> any(r => r.authored_spelling == "interpreter_dispatch_arm_rows") +test fn derived_surface_excludes_deleted_bridge_arm() -> Bool { + !v1_interpreter_free_call_arms() |> any(r => r.authored_spelling == "interpreter_dispatch_arm_rows") } test fn stage0_source_identity_supply_scaffold_is_enumerated() -> Bool { @@ -42,14 +43,14 @@ test fn stage0_source_identity_supply_scaffold_is_enumerated() -> Bool { |> any(r => r.authored_spelling == "stage0_emission_source_identities_host") } -test fn observed_monotonic_nanos_arm_is_one_derived_free_call() -> Bool { +test fn observed_monotonic_nanos_arm_is_one_authored_roster_free_call() -> Bool { let rows = v1_interpreter_derived_arms() |> filter(r => r.authored_spelling == "observed_monotonic_nanos") count(rows) == 1 && (rows |> all(r => r.arm.identity == "free_call.observed_monotonic_nanos" && r.form == FreeCall && r.dispatch_symbol == "eval_builtin_inner" - && r.enumeration == DerivedFromDispatch + && r.enumeration == AuthoredInRoster )) } @@ -64,16 +65,16 @@ test fn every_derived_site_contributes_rows() -> Bool { symbols |> all(s => v1_interpreter_derived_arms() |> any(r => r.dispatch_symbol == s)) } -test fn method_rows_are_derived_rather_than_transcribed() -> Bool { +test fn method_rows_are_authored_in_roster_rather_than_transcribed() -> Bool { let rows = v1_interpreter_method_call_arms() |> filter(r => r.dispatch_symbol == "eval_algebra_method_inner") rows |> any(r => r.authored_spelling == "lookup") - && rows |> all(r => r.enumeration == DerivedFromDispatch) + && rows |> all(r => r.enumeration == AuthoredInRoster) } -test fn v4_bridge_rows_are_derived_rather_than_transcribed() -> Bool { +test fn v4_bridge_rows_are_authored_in_roster_rather_than_transcribed() -> Bool { let rows = v1_interpreter_derived_arms() |> filter(r => r.dispatch_symbol == "eval_call" && r.form == FreeCall) rows |> any(r => r.authored_spelling == "resolve_type_node") - && rows |> all(r => r.enumeration == DerivedFromDispatch) + && rows |> all(r => r.enumeration == AuthoredInRoster) } test fn alias_spellings_share_one_arm_identity() -> Bool { diff --git a/dag/tools/publication_publisher.dag b/dag/tools/publication_publisher.dag new file mode 100644 index 00000000000..ca24fc0361b --- /dev/null +++ b/dag/tools/publication_publisher.dag @@ -0,0 +1,321 @@ +module tools.publication_publisher + +import std.types { Bool, List, NonEmptyStr, String } +import std.content_hash { serialize_content_hash } +import extdeps.git.hooks { PrePushStdinRow } +import gunbc.public_projection { PublicProjectionPlan, PublicationSubject } +import gunbc.publication_admission_delta { + ChangeLocalAdmissionRequest, + ChangeLocalAdmissionOutcome, + ChangeLocalAdmitted, + ChangeLocalRefused, + CandidateDigestInconsistent, + WholeProjectionAuditRequired, + ProjectionDeltaClass, + NewlyPublic, + admit_change_local_projection, +} +import gunbc.publication_decision { + PublicationDecisionReceipt, + PublicationAuthorityId, + publication_decision_binds_content, + publication_decision_authorizes_newly_public, +} + +data publication_publisher_note: String = "Slice-1 sole modeled publisher (model + shadow only). Ordinary ModeledSessionId values are OrdinarySession and carry no PublicationAuthority. Exactly one sole_modeled_publisher_session may consume a change-locally admitted PublicProjectionPlan derived from PublicationPolicy — never a pathname census or placement-gate roster. Ordinary sessions do NOT yet lose live public-write capability in this slice; credentials and push machinery are unchanged." + +type ModeledSessionId = NonEmptyStr where brand("ModeledSessionId") + +type SessionPublicationPosture + = OrdinarySession { session: ModeledSessionId } + | SoleModeledPublisher { session: ModeledSessionId } + +type AdmittedPublicProjection { + plan: PublicProjectionPlan + admission: ChangeLocalAdmissionOutcome + decisions: List +} + +type PublicationAuthority { + publisher_session: ModeledSessionId + authority_id: PublicationAuthorityId + projection: AdmittedPublicProjection +} + +type PublicWriteAdmission + = PublicWriteAdmitted { authority: PublicationAuthority } + | PublicWriteRefused { + session: ModeledSessionId, + cause: PublicWriteRefusal, + } + +type PublicWriteRefusal + = NotTheSolePublisher { + session: ModeledSessionId, + sole_publisher: ModeledSessionId, + } + | ProjectionNotAdmitted { + session: ModeledSessionId, + detail: String, + } + | DecisionReceiptMissing { + session: ModeledSessionId, + subject_identity: String, + } + | DecisionReceiptNotAuthorizing { + session: ModeledSessionId, + subject_identity: String, + detail: String, + } + | UnauthorizedPublicPush { + session: ModeledSessionId, + local_ref: String, + local_sha: String, + detail: String, + } + | NoPushedRefsPresented { + session: ModeledSessionId, + } + +data sole_modeled_publisher_session: ModeledSessionId = "gunbc-publication-publisher" as ModeledSessionId + +data sole_publication_authority_id: PublicationAuthorityId = "gunbc-publication-publisher" as PublicationAuthorityId + +fn session_publication_posture(session: ModeledSessionId) -> SessionPublicationPosture { + if session == sole_modeled_publisher_session { + SoleModeledPublisher { session: session } + } else { + OrdinarySession { session: session } + } +} + +fn session_publication_posture_fold( + posture: SessionPublicationPosture, + on_ordinary: fn(ModeledSessionId) -> T, + on_sole_publisher: fn(ModeledSessionId) -> T, +) -> T { + match posture { + OrdinarySession { session: session } => on_ordinary(session) + SoleModeledPublisher { session: session } => on_sole_publisher(session) + } +} + +fn change_local_admission_detail(outcome: ChangeLocalAdmissionOutcome) -> String { + match outcome { + ChangeLocalAdmitted { delta: delta, candidate: _ } => + join(["change-local admission admitted; delta_count=", to_string(count(delta))], "") + ChangeLocalRefused { cause: cause } => + match cause { + CandidateDigestInconsistent { expected: _, observed: _ } => + "change-local admission refused: candidate projection digest inconsistent" + WholeProjectionAuditRequired { detail: detail } => detail + } + } +} + +fn receipt_authorizes_newly_public( + receipts: List, + subject: PublicationSubject, + policy_version: NonEmptyStr, + authority: PublicationAuthorityId, +) -> Bool { + fold(receipts, init: false, f: fn(found, receipt) { + found || publication_decision_authorizes_newly_public( + receipt: receipt, + subject: subject, + policy_version: policy_version, + authority: authority, + ) + }) +} + +fn receipt_binds_subject_content( + receipts: List, + subject: PublicationSubject, +) -> Bool { + fold(receipts, init: false, f: fn(found, receipt) { + found || publication_decision_binds_content( + receipt: receipt, + subject_identity: subject.subject_identity, + content_identity: subject.content_identity, + ) + }) +} + +fn newly_public_subject_receipt_refusal( + delta: List, + decisions: List, + policy_version: NonEmptyStr, + authority: PublicationAuthorityId, + session: ModeledSessionId, +) -> PublicWriteRefusal? { + fold(delta, init: none, f: fn(acc, item) { + match acc { + Present { value: _ } => acc + Absent => + match item { + NewlyPublic { subject: subject } => + if receipt_authorizes_newly_public( + receipts: decisions, + subject: subject, + policy_version: policy_version, + authority: authority, + ) { + none + } else if receipt_binds_subject_content(receipts: decisions, subject: subject) { + Present { + value: DecisionReceiptNotAuthorizing { + session: session, + subject_identity: serialize_content_hash(hash: subject.subject_identity) as String, + detail: "decision receipt does not authorize newly public subject", + }, + } + } else { + Present { + value: DecisionReceiptMissing { + session: session, + subject_identity: serialize_content_hash(hash: subject.subject_identity) as String, + }, + } + } + _ => none + } + } + }) +} + +fn pushed_refs_match_candidate( + pushed_refs: List, + candidate: PublicProjectionPlan, +) -> Bool { + if count(pushed_refs) == 0 { + false + } else { + fold(pushed_refs, init: true, f: fn(ok, push) { + ok && push.local_sha == candidate.source_revision + }) + } +} + +fn unauthorized_push_detail( + pushed_refs: List, + candidate: PublicProjectionPlan, +) -> String { + join([ + "public write refused: pushed ref head does not match candidate source_revision; push_count=", + to_string(count(pushed_refs)), + "; candidate=", + candidate.source_revision as String, + ], "") +} + +fn admit_public_write( + session: ModeledSessionId, + current: PublicProjectionPlan?, + candidate: PublicProjectionPlan, + decisions: List, + pushed_refs: List, +) -> PublicWriteAdmission { + match session_publication_posture(session: session) { + OrdinarySession { session: ordinary } => + PublicWriteRefused { + session: ordinary, + cause: NotTheSolePublisher { + session: ordinary, + sole_publisher: sole_modeled_publisher_session, + }, + } + SoleModeledPublisher { session: publisher } => + let admission = admit_change_local_projection(request: ChangeLocalAdmissionRequest { + current: current, + candidate: candidate, + }) + match admission { + ChangeLocalAdmitted { delta: delta, candidate: plan } => + match newly_public_subject_receipt_refusal( + delta: delta, + decisions: decisions, + policy_version: plan.policy_version, + authority: sole_publication_authority_id, + session: publisher, + ) { + Present { value: cause } => + PublicWriteRefused { + session: publisher, + cause: cause, + } + Absent => + if count(pushed_refs) == 0 { + PublicWriteRefused { + session: publisher, + cause: NoPushedRefsPresented { session: publisher }, + } + } else if pushed_refs_match_candidate(pushed_refs: pushed_refs, candidate: plan) { + PublicWriteAdmitted { + authority: PublicationAuthority { + publisher_session: publisher, + authority_id: sole_publication_authority_id, + projection: AdmittedPublicProjection { + plan: plan, + admission: admission, + decisions: decisions, + }, + }, + } + } else { + PublicWriteRefused { + session: publisher, + cause: UnauthorizedPublicPush { + session: publisher, + local_ref: fold(pushed_refs, init: "", f: fn(acc, push) { + if acc == "" { push.local_ref } else { acc } + }), + local_sha: fold(pushed_refs, init: "", f: fn(acc, push) { + if acc == "" { push.local_sha } else { acc } + }), + detail: unauthorized_push_detail( + pushed_refs: pushed_refs, + candidate: plan, + ), + }, + } + } + } + ChangeLocalRefused { cause: cause } => + PublicWriteRefused { + session: publisher, + cause: ProjectionNotAdmitted { + session: publisher, + detail: change_local_admission_detail(outcome: admission), + }, + } + } + } +} + +fn public_write_admission_fold( + admission: PublicWriteAdmission, + on_admitted: fn(PublicationAuthority) -> T, + on_refused: fn(ModeledSessionId, PublicWriteRefusal) -> T, +) -> T { + match admission { + PublicWriteAdmitted { authority: authority } => on_admitted(authority) + PublicWriteRefused { session: session, cause: cause } => on_refused(session, cause) + } +} + +fn public_write_admitted(admission: PublicWriteAdmission) -> Bool { + public_write_admission_fold( + admission: admission, + on_admitted: fn(authority) { true }, + on_refused: fn(session, cause) { false }, + ) +} + +fn ordinary_session_lacks_public_write_authority(session: ModeledSessionId) -> Bool { + session_publication_posture_fold( + posture: session_publication_posture(session: session), + on_ordinary: fn(ordinary) { true }, + on_sole_publisher: fn(publisher) { false }, + ) +} diff --git a/dag/tools/publication_push_shadow.dag b/dag/tools/publication_push_shadow.dag new file mode 100644 index 00000000000..446fdd271ce --- /dev/null +++ b/dag/tools/publication_push_shadow.dag @@ -0,0 +1,115 @@ +module tools.publication_push_shadow + +import std.types { Bool, Int, List, String } +import extdeps.git.hooks { PrePushStdinRow } +import gunbc.public_projection { PublicProjectionPlan } +import gunbc.publication_decision { PublicationDecisionReceipt } +import tools.publication_publisher { + ModeledSessionId, + PublicWriteAdmission, + PublicWriteRefused, + PublicWriteAdmitted, + NotTheSolePublisher, + ProjectionNotAdmitted, + DecisionReceiptMissing, + DecisionReceiptNotAuthorizing, + UnauthorizedPublicPush, + NoPushedRefsPresented, + admit_public_write, +} + +data publication_push_shadow_note: String = "Slice-1 shadow witness: read-only stopped-line-audit observer replaying observed public pushes through the modeled admission stack. Reports typed, located, counted refusals; does not green, gate, or mutate live push paths. Ordinary sessions still reach the public remote in this slice — the ledger sizes the enforcement stage." + +type ObservedPublicPush { + session: ModeledSessionId + head: String + push: PrePushStdinRow + candidate: PublicProjectionPlan + decisions: List +} + +type ShadowPushLedgerEntry + = ShadowPushWouldAdmit { + session: ModeledSessionId + head: String + push: PrePushStdinRow + } + | ShadowPushWouldRefuse { + session: ModeledSessionId + head: String + push: PrePushStdinRow + admission: PublicWriteAdmission + } + +fn shadow_push_admission( + current: PublicProjectionPlan?, + observed: ObservedPublicPush, +) -> PublicWriteAdmission { + admit_public_write( + session: observed.session, + current: current, + candidate: observed.candidate, + decisions: observed.decisions, + pushed_refs: [observed.push], + ) +} + +fn shadow_push_ledger_entry( + current: PublicProjectionPlan?, + observed: ObservedPublicPush, +) -> ShadowPushLedgerEntry { + let admission = shadow_push_admission(current: current, observed: observed) + match admission { + PublicWriteAdmitted { authority: _ } => + ShadowPushWouldAdmit { + session: observed.session, + head: observed.head, + push: observed.push, + } + PublicWriteRefused { session: session, cause: cause } => + ShadowPushWouldRefuse { + session: session, + head: observed.head, + push: observed.push, + admission: admission, + } + } +} + +fn shadow_replay_public_pushes( + current: PublicProjectionPlan?, + events: List, +) -> List { + map(events, event => shadow_push_ledger_entry(current: current, observed: event)) +} + +fn shadow_refusal_count(entries: List) -> Int { + fold(entries, init: 0, f: fn(count, entry) { + match entry { + ShadowPushWouldAdmit { session: _, head: _, push: _ } => count + ShadowPushWouldRefuse { session: _, head: _, push: _, admission: _ } => count + 1 + } + }) +} + +fn shadow_would_refuse_ordinary_session( + current: PublicProjectionPlan?, + observed: ObservedPublicPush, +) -> Bool { + match shadow_push_ledger_entry(current: current, observed: observed) { + ShadowPushWouldAdmit { session: _, head: _, push: _ } => false + ShadowPushWouldRefuse { session: _, head: _, push: _, admission: admission } => + match admission { + PublicWriteRefused { session: _, cause: cause } => + match cause { + NotTheSolePublisher { session: _, sole_publisher: _ } => true + ProjectionNotAdmitted { session: _, detail: _ } => false + DecisionReceiptMissing { session: _, subject_identity: _ } => false + DecisionReceiptNotAuthorizing { session: _, subject_identity: _, detail: _ } => false + UnauthorizedPublicPush { session: _, local_ref: _, local_sha: _, detail: _ } => false + NoPushedRefsPresented { session: _ } => false + } + PublicWriteAdmitted { authority: _ } => false + } + } +} diff --git a/docs/plans/p1-retention-vs-drain-cohort-receipt.md b/docs/plans/p1-retention-vs-drain-cohort-receipt.md new file mode 100644 index 00000000000..166ad8dd7d2 --- /dev/null +++ b/docs/plans/p1-retention-vs-drain-cohort-receipt.md @@ -0,0 +1,124 @@ +# Receipt — P1 retention vs drain cohort receipt (authoritative) + +**Status:** measurement receipt, timestamped 2026-08-03. **DESIGN.md + `docs/plans/floor-prep-tax-program.md` (PR #7721) remain authority** — this is a dated receipt, not a fact ledger. + +**Lane:** floor prep-tax program, P1 · **Subject:** does schedule-derived retention (#7129 eviction) cause the ~1s per-entry "tax" observed across the floor discovery path, or does the tax persist independent of eviction? · **Deliverable:** measurement only, ACCEPT/REJECT verdict against the parent-stated criterion. No retention-mechanism change lands in this PR. + +**Main SHA measured:** `dddc79596a9dbb9bcbe4ac1c77121a302adb6e77` — the commit where `p1_cohort_probe.rs`/`p1_cohort_roster.txt` first land in git history (the probe/instrumentation source was authored and built against this same tree state before that commit was made; the earlier `b53aec1d` — this PR's initial WIP commit, predating the probe — cannot reproduce the runs below, since `p1_cohort_probe.rs` does not exist in its tree; correction per review 47754). Reproduce from `dddc79596a9` or any later commit on this branch. + +**Vehicle:** new `p1_cohort_probe` binary (`src/v1/stage0/src/bin/p1_cohort_probe.rs`) — a thin CLI front end that calls the **same production entrypoint** `run_discovery_corpus_with_options` that `claim_executor` drives for the real floor path, with `DiscoveryWidthPolicy::Adaptive` (the governor-admitted width the fleet actually runs under — schedule-retention only arms inside this branch's width-1 special case), over an explicit fixed 50-entry cohort instead of a full-corpus scan. This is not a reimplemented/toy mechanism; it is the identical discovery-corpus/schedule-retention code `claim_executor` uses, scoped for direct entry-by-entry A/B comparability. `claim_batch` was investigated and ruled out as a vehicle: it does not call `run_discovery_corpus_with_options` at all (a different assembly-cost-decomposition harness — see `docs/plans/per-entry-assembly-decomposition-measurement.md`). + +**Cohort:** 50 entries, `src/v1/stage0/src/bin/p1_cohort_roster.txt`, sourced verbatim from `docs/plans/receipts/entry-graph-union-slice2/receipt-post-merge-representative-50.json` (`summary.entry_timings[].entry`) — the same representative-50 module-sharing cohort an earlier slice-2 receipt already established as sharing the module universe. + +**Host regime (honesty):** dashboard session container, uncapped-relative-to-fleet cgroup (see cgroup readback below); this is a regime-relative measurement, not a byte-match to the fleet width-1 receipt in `docs/plans/m2-floor-retention-measurement-receipt.md`. + +--- + +## 0 — Reproduction (verbatim invocations) + +```bash +git rev-parse HEAD # dddc79596a9dbb9bcbe4ac1c77121a302adb6e77 (or later on this branch) +CTRL_BUILD_MODE=local RUSTC_WRAPPER= CARGO_BUILD_JOBS=4 \ + ctrl-build --local -- cargo build -p v1-compiler --bin p1_cohort_probe --release +cp -f target/release/p1_cohort_probe target/release/p1_cohort_probe-snapshot +# sha256: 54566635522137569193c1e56451ccc1a38c6e4e5595cc6fca57aee2cc26943a +``` + +**Mode A — default eviction ON (production default):** + +```bash +export GUNBC_FLOOR_DRAIN_RETENTION=1 +export GUNBC_P1_COHORT_RECEIPT=1 +LOG=docs/probes/p1_retention_cohort_20260803T022255Z/mode_a_eviction_on.log +target/release/p1_cohort_probe-snapshot > "$LOG" 2>&1 +``` + +**Mode B — retain-all measurement pole:** + +```bash +export GUNBC_FLOOR_DRAIN_RETENTION=1 +export GUNBC_P1_COHORT_RECEIPT=1 +export GUNBC_SCHEDULE_RETENTION_EVICT=0 +LOG=docs/probes/p1_retention_cohort_20260803T022255Z/mode_b_retain_all.log +target/release/p1_cohort_probe-snapshot > "$LOG" 2>&1 +``` + +Raw logs and extracted `[p1-cohort]` lines are checked in under `docs/probes/p1_retention_cohort_20260803T022255Z/`. + +--- + +## 1 — Mechanism receipts (both modes armed correctly) + +Mode A: +``` +[floor-drain] schedule-retention ARMED: entries=50 modules_refcounted=711 evict_enabled=true +``` + +Mode B: +``` +[floor-drain] SCHEDULE-RETENTION EVICTION DISABLED (GUNBC_SCHEDULE_RETENTION_EVICT=0): arming + counting only, dropping NOTHING — the retain-all measurement pole (pre-M2 process-lifetime retention). schedule_evictions will be 0 BY CONSTRUCTION; unset the env to restore eviction. +[floor-drain] schedule-retention ARMED: entries=50 modules_refcounted=711 evict_enabled=false +``` + +Both modes armed over the identical 50-entry/711-module schedule. Mode B's loud diagnostic fired as required and `modules_evicted=0 graphs_evicted=0` held on every one of its 34 completed `[p1-cohort]` lines — confirms Mode B genuinely never evicted (not a partial/soft eviction). + +**Field-naming note (post-run correction):** the raw logs checked in under `docs/probes/p1_retention_cohort_20260803T022255Z/` were captured with the original field name `schedule_cache_hit`, which review 47754 correctly flagged as mislabeled — the value logged is `typecheck_compute_count()` movement (a typecheck-memo hit/miss), not schedule-retention cache occupancy. The field is renamed to `typecheck_cache_hit` in `cli_run.rs` going forward; the raw logs are left unedited (they are the actual captured evidence) and every value/analysis in this receipt reads from that same underlying signal under its corrected name — no data changed, only the label. + +--- + +## 2 — Completeness (honest accounting, not fabricated) + +**Mode A completed all 50 entries** (414 witness rows, 1 pre-existing unrelated failure — `witness_observed_hostname_reads_typed_op_hermetic`, an environment-specific hostname-observation test, not a retention/timing concern; identical failure occurs in Mode B at the same entry, confirming it is unrelated to eviction mode). + +**Mode B was killed by the OOM killer at entry 34/50** (`exit=137` / SIGKILL). Its `process_rss` climbed monotonically and unboundedly across every entry — 1.72 GB at entry 1 to 5.33 GB at entry 34, `cgroup_memory_current` reaching 8.07 GB — because retain-all, by construction, never frees a module. This is itself a first-class, expected finding of the retain-all pole (unbounded process-lifetime retention is exactly what M2's schedule-derived eviction exists to prevent), not an instrumentation bug. **Entries 35-50 have no Mode B data and none is fabricated or interpolated here.** All comparison below is restricted to the valid overlapping range, entries 1-34. + +--- + +## 3 — Quantitative A/B comparison (entries 2..34, the valid overlapping range) + +| | Mode A (eviction ON) | Mode B (retain-all) | +|---|---|---| +| mean `wall_ms` | 2045.4 | 1936.7 | +| mean `resolve_ms` | 1943.9 | 1891.6 | +| median `resolve_ms` | 1076 | 1054 | +| min `resolve_ms` | 869 | 908 | + +Per-entry, the two modes track each other almost exactly (full table computed from the raw logs, entries 1-34): + +``` +entry A_wall B_wall A_resolve B_resolve B_rss_MB + 1 2409 2247 2372 2236 1716 + 2 1155 1024 1076 1019 1716 + 3 1175 1009 1090 1001 1716 + 10 1768 1750 1728 1735 2025 + 11 13131 12397 12843 12186 2681 (heavy entry, both modes) + 18 3669 3393 3594 3363 3241 + 32 11368 10737 10378 9911 5034 (heavy entry, both modes) + 34 1140 913 1070 908 5085 +``` + +(Full 34-row table and extraction script output retained in the probe log directory.) + +The heavy entries (11, 18, 21, 27, 29, 32) are heavy in **both** modes at nearly the same magnitude — eviction is not what is driving their cost, and retain-all does not relieve them either. The steady-state ~1-1.1s-per-entry baseline (entries 2-9, 12-17, 19-20, etc.) is likewise statistically indistinguishable between A and B; if anything Mode B trends marginally faster (noise-level, consistent with slightly fewer cache-eviction/re-resolve cycles, not a collapse). + +**No entry in 2..34 shows the tax collapsing toward near-zero under Mode B.** Retaining every module for the full cohort life (growing to 5+ GB RSS) does not make entries 2..34 cheap. + +--- + +## 4 — Verdict + +**Parent's stated ACCEPT criterion:** *"ACCEPT iff entries 2..N sharing the module universe stop repaying ≈2s tax under Mode B."* + +**REJECT.** Entries 2..34 do not stop repaying the tax under Mode B — mean/median `wall_ms` and `resolve_ms` are statistically indistinguishable between Mode A (eviction on) and Mode B (retain-all, arming confirmed, zero evictions confirmed, OOM-killed only after unbounded growth at entry 34). Disabling schedule-retention eviction entirely does not collapse or materially reduce the per-entry tax on this cohort. + +Per the parent's own routing instruction, this receipt reports the result the A/B data shows, not a pre-decided answer (the earlier `claim_batch` framing that was retracted mid-task is not relied on here — this conclusion is derived solely from the floor-path A/B receipt above). **The ~1s-2s per-entry tax is not caused by schedule-derived module eviction/retention.** The redirect is to assembly/materialization reuse (as the parent's fallback routing anticipated, but arrived at here by measurement, not assumption) — consistent with the open thread in DESIGN.md's "duplicate work = the content-hash qualification of `Materialization`" and the per-entry assembly decomposition receipts already in `docs/plans/`. + +**No retention mechanism change is implemented in this PR** — per the explicit brief, this receipt's job was discrimination, not a fix. + +--- + +## 5 — Artifacts + +- `src/v1/stage0/src/bin/p1_cohort_probe.rs`, `p1_cohort_roster.txt` — the probe vehicle. **Scaffold, not a permanent second floor driver:** P1's REJECT verdict is now recorded, so per the dissolution trigger named alongside `p1_cohort_receipt_enabled` in `cli_run.rs`, this probe and its instrumentation delete once no other open lane needs cohort-scoped A/B retention receipts — not kept in tree indefinitely. +- `src/v1/stage0/src/cli_run.rs` — `[p1-cohort]` per-entry instrumentation, gated independently by `GUNBC_P1_COHORT_RECEIPT=1` (kept separate from the existing `GUNBC_FLOOR_DRAIN_RETENTION` switch — two distinct facts, two distinct toggles, DESIGN §3). The emitted field is `typecheck_cache_hit` (whether `typecheck_compute_count()` moved during the group — a typecheck-memo hit/miss signal), not a schedule-retention cache-occupancy read (schedule-retention has no per-group hit/miss concept, only the cumulative `modules_evicted`/`graphs_evicted` counters already carried on the same line); named honestly after review 47754 caught the earlier `schedule_cache_hit` label as mismatched to what it measured. +- `docs/probes/p1_retention_cohort_20260803T022255Z/` — raw Mode A/B logs and extracted `[p1-cohort]` line sets. diff --git a/docs/plans/sole-modeled-publisher-design.md b/docs/plans/sole-modeled-publisher-design.md new file mode 100644 index 00000000000..b73d795eea4 --- /dev/null +++ b/docs/plans/sole-modeled-publisher-design.md @@ -0,0 +1,62 @@ +# Sole modeled publisher — model + shadow design + +Status: DRAFT (slice 1 — model + shadow only; 2026-08-01 recut on #7591). + +**Honest framing:** ordinary dashboard sessions do **not** yet lose public-write capability in this slice. Credentials and push machinery are unchanged. Live credential removal + transport rebinding is a separate live slice; that slice's acceptance act is when an ordinary session's `git push --no-verify` finds no credential/transport. + +Origin: priority-assessment directive section 8 — publication safety outranks reveal UX. The per-file placement gate/roster is deleted (#7591); publication enforcement returns through derived projection policy, not pathname census. + +## Retained architecture (PR B) + +| artifact | role | +|---|---| +| `extdeps.git.publication_transport` | Modeled `GitPushRequest` / `GitCommitRequest`; argv only in `PublicationTransport` service rows | +| `gunbc.publication_policy` | Subtree prefix → disposition; default `WithholdPrivate`; most-specific wins | +| `gunbc.public_projection` | `PublicProjectionPlan` derived from policy over authored subjects | +| `gunbc.publication_decision` | `PublicationDecisionReceipt` binds content identity, not pathnames | +| `gunbc.publication_admission_delta` | Change-local admission (current vs candidate projection) | +| `tools.publication_publisher` | Sole publisher identity + typed refusals over admitted projection | +| `tools.publication_push_shadow` | Read-only replay ledger; reports, does not green | + +## Authority model + +**WHO:** exactly one `sole_modeled_publisher_session` (`gunbc-publication-publisher`) may consume an admitted `PublicProjectionPlan`. Slice 1 checks this by `ModeledSessionId` equality against a constant — validation, not construction; any caller can mint the same string. Live-slice acceptance bar: unforgeable publisher authority (construction wall), not a renamed brand. + +**WHAT:** `PublicationPolicy` derives inclusion from subtree rules — never `public_file_publish_grants` and never the unrestricted authored tree. + +**Receipt:** exceptional decisions use `PublicationDecisionReceipt { subject_identity, content_identity, audience, policy_version, authority }`. Changed sensitive content requires a fresh receipt. + +**Admission grain:** change-local only — newly public / newly withheld / policy changes are classified in slice 1 (`NewlyPublic`, `NewlyWithheld`, `PolicyChanged`). Audience widenings and private-to-public references defer until audience/reference carriers land. Digest mismatch refuses at admission (`CandidateDigestInconsistent`), not as a delta class. Whole-projection audit is a separate centrally-owned main-health job. + +## Deferred to live slice + +- ordinary session credential/transport removal +- content absent from public repo **object database** before admission (not merely absent from `main`) +- live receipt binding `{ source_revision, policy_version, projection_digest, destination, pushed_ref }` +- repeating an identical policy rule idempotent or refused at construction (policy carrier lands the construction wall; live transport rebind is separate) + +## Staged migration + +### Stage 0 — model + shadow (this PR) + +Model write operations, policy/projection/decision carriers, publisher authority, shadow replay ledger. + +**Trigger to Stage 1:** shadow receipt shows stable refusal taxonomy on live specimens; authorization kernel (#7586) landed. + +### Stage 1 — staging remote + +Sessions push to private staging only; publisher mirrors admitted projections. + +### Stage 2 — enforcement gate + +Bind `git.PublicationTransport` dispatch to `PublicationAuthority`. + +### Stage 3 — downstream mirror + +Public GitHub repo is generated projection only. + +## Coordination + +- **#7591 (vivid-newt-418):** deletes placement gate/roster — base branch for this recut +- **#7586 (vivid-crab-386):** authorization kernel — PR A, not this lane +- **#7552 (proud-swift-104):** belt producer wiring — out of scope for PR B diff --git a/docs/probes/diff_frontier_declared_vs_survey.sh b/docs/probes/diff_frontier_declared_vs_survey.sh new file mode 100755 index 00000000000..221b8617b56 --- /dev/null +++ b/docs/probes/diff_frontier_declared_vs_survey.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash +# Compare declared frontier.dag measured_probe facts against an independent survey TSV. +# Refuses (non-zero exit) on mismatch — oracle on each side, never writes rows. +# SCAFFOLD — dissolve-on: totality-wall witness binds roster↔manifest without this shell diff. +set -euo pipefail + +ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)" +FRONTIER="$ROOT/src/v2/compiler/self_host/frontier.dag" +TSV="${1:-$ROOT/docs/probes/frontier_probe_exact_head_survey_2026-08-03.tsv}" + +if [[ ! -f "$TSV" ]]; then + echo "diff_frontier_declared_vs_survey: missing TSV: $TSV" >&2 + exit 2 +fi +if [[ ! -f "$FRONTIER" ]]; then + echo "diff_frontier_declared_vs_survey: missing frontier: $FRONTIER" >&2 + exit 2 +fi + +python3 - "$FRONTIER" "$TSV" <<'PY' +import re +import sys +from pathlib import Path + +frontier_path, tsv_path = sys.argv[1], sys.argv[2] +text = Path(frontier_path).read_text() + +survey: dict[str, tuple[str, str, str]] = {} +with open(tsv_path) as f: + f.readline() + for line in f: + parts = line.rstrip("\n").split("\t") + if len(parts) < 5: + continue + module, _, blocker, stage, reason = parts[:5] + survey[module] = (blocker, stage, reason) + +# Extract declared measured_probe per module_path from roster rows. +declared: dict[str, dict[str, str]] = {} +row_re = re.compile( + r"data compiler_frontier_row_\w+: CompilerModuleFrontierRow = [\s\S]*?\n\)", + re.MULTILINE, +) +for block in row_re.findall(text): + path_m = re.search(r'module_path: "([^"]+)"', block) + if not path_m: + continue + path = path_m.group(1) + blocker_m = re.search(r"measured_blocker: ([^\n,]+)", block) + stage_m = re.search(r"located_stage: (ProbeStage\w+)", block) + reason_m = re.search(r"located_reason: (\^?\w+)", block) + if not blocker_m or not stage_m or not reason_m: + continue + blocker = blocker_m.group(1).strip() + if blocker == "compiler_frontier_measured_upstream_unresolved_blocker": + blocker = "UpstreamSemanticRefusal" + declared[path] = { + "blocker": blocker, + "stage": stage_m.group(1), + "reason": reason_m.group(1), + } + +mismatches = [] +missing_declared = [] +missing_survey = [] + +for module, (s_blocker, s_stage, s_reason) in sorted(survey.items()): + if module not in declared: + missing_declared.append(module) + continue + d = declared[module] + fields = [] + if d["blocker"] != s_blocker: + fields.append(f"blocker declared={d['blocker']} survey={s_blocker}") + if d["stage"] != s_stage: + fields.append(f"stage declared={d['stage']} survey={s_stage}") + d_reason = d["reason"] + if not d_reason.startswith("^"): + d_reason = f"^{d_reason}" + if d_reason != s_reason: + fields.append(f"reason declared={d_reason} survey={s_reason}") + if fields: + mismatches.append((module, fields)) + +for module in sorted(declared): + if module not in survey: + missing_survey.append(module) + +print("=== frontier declared vs survey oracle ===") +print(f"survey rows: {len(survey)}") +print(f"declared rows scanned: {len(declared)}") +print(f"mismatches: {len(mismatches)}") +for module, fields in mismatches: + print(f"MISMATCH {module}") + for f in fields: + print(f" {f}") +if missing_declared: + print(f"missing declared row for {len(missing_declared)} survey module(s)") + for m in missing_declared: + print(f" NO_ROW {m}") +if missing_survey: + print(f"survey missing {len(missing_survey)} declared module(s) (ok if partial survey)") + +if mismatches or missing_declared: + sys.exit(1) +print("OK: all surveyed modules match declared measured_probe") +PY diff --git a/docs/probes/frontier_probe_exact_head_survey_2026-08-03.md b/docs/probes/frontier_probe_exact_head_survey_2026-08-03.md new file mode 100644 index 00000000000..1a10ef69bd2 --- /dev/null +++ b/docs/probes/frontier_probe_exact_head_survey_2026-08-03.md @@ -0,0 +1,50 @@ +# Frontier probe exact-head survey (Lane E interim census) + +**Status:** INTERIM AUDIT — 17 of 27 compiler roster modules probed at HEAD; not a roster acceptance or closeout. + +**Head:** `9f978aa8df` (main at survey start, 2026-08-02) on worktree `neat-cat-330`. **Point-in-time only:** at time of writing current main is `19cc776d4e` (44 commits later); five of those commits touched the v1 emission path (#7685, #7691, #7708, #7709, #7733). Verdicts may have moved — this receipt is a dated reading, not a claim about current main. Spot-check at merged main (`d1fe52102b`, 2026-08-03): `04_infer`, `06_translate`, `materialization_carriers` still `RealizationGap`/`^parse_grammar_choice_overlap_residue` @ assemble; `03_ingest` still `NameResolutionGap`/`^resolve_module_not_found` @ assemble. + +**Harness:** `frontier_probe_survey` seed bin, per-module via `frontier_probe_emit_from_ingest` (fixture-free ingest overlay). Receipt TSV: `frontier_probe_exact_head_survey_2026-08-03.tsv`. + +**Denominator:** 27 modules in `compiler_frontier_sweep_order` (`frontier.dag`). **Surveyed:** 17. **Not surveyed in this PR:** 10 (listed below). + +## Findings (execution-measured, assemble stage only) + +| Blocker class | Count (of 17) | Located stage | Dominant located_reason | +|---------------|---------------|---------------|-------------------------| +| RealizationGap | 14 | ProbeStageAssemble | `^parse_grammar_choice_overlap_residue` | +| NameResolutionGap | 3 | ProbeStageAssemble | `^resolve_module_not_found` | + +**Not observed in this slice:** EmitSurfaceGap, UpstreamSemanticRefusal, SelfEmitReady. The probe stops at assemble for the dominant class — emit and semantic-derivation stages were not reached for these 17 modules. This is evidence about which stage blocks the probe, not an inferred emit blocker. + +### NameResolutionGap modules (3/17) + +- `src/v2/compiler/source_authority.dag` +- `src/v2/compiler/00_compile.dag` +- `src/v2/compiler/03_ingest.dag` + +### Reconciliation vs pre-7627 roster rows + +PR #7627 landed vocabulary + totality wall without a second measurement pass. Before this PR, several roster rows carried `UpstreamSemanticRefusal` / `EmitSurfaceGap` at emit/semantic stages from prior knowledge attribution. This survey **contradicted** those rows for all 17 probed modules: each refuses at **ProbeStageAssemble** with grammar residue or module-not-found, not at emit. + +**This document is an audit receipt.** In PR #7697 all **17 surveyed** `frontier.dag` rows were hand-authored from this TSV (`measured_probe` aligned; `migration_trigger` kept as authored claims). Totality-wall witnesses and the remaining **10** roster rows await a follow-up closeout PR. + +## Declared vs survey oracle (2026-08-03) + +Run: `docs/probes/diff_frontier_declared_vs_survey.sh` — refuses when `frontier.dag` measured_probe disagrees with this TSV (independent oracles; does not write rows). + +**At survey time (pre-hand-edit):** 12 mismatches among the 17 surveyed modules — declared rows still carried #7627 `UpstreamSemanticRefusal` / `EmitSurfaceGap` at emit/semantic stages while survey measured `RealizationGap` or `NameResolutionGap` at **ProbeStageAssemble** only. + +| Declared (pre-PR #7697 edit) | Survey (17/17 measured) | +|------------------------------|---------------------------| +| UpstreamSemanticRefusal @ SemanticDerivation, `^gate_a_flip_probe_unresolved_compiler_error` | RealizationGap @ Assemble, `^parse_grammar_choice_overlap_residue` (9 modules) | +| UpstreamSemanticRefusal @ SemanticDerivation | NameResolutionGap @ Assemble, `^resolve_module_not_found` (3 modules) | +| EmitSurfaceGap @ Emit, type-ref / namespace reasons | RealizationGap @ Assemble, grammar residue (2 modules) | + +**After PR #7697:** all 17 surveyed modules have hand-authored rows in `frontier.dag` aligned to this TSV; `diff_frontier_declared_vs_survey.sh` greens for 17/17. The **10 unsurveyed** modules (`03_normalize` through `program_assembly` below) were not rewritten — their rows still reflect pre-survey knowledge attribution. + +**Authoring rule:** update `frontier.dag` rows by hand using this TSV as evidence; migration triggers state what would let migration, not restate the measured located_reason. + +## Remaining modules (not surveyed; roster rows not rewritten in PR #7697) + +`03_normalize`, `03_resolve`, `03_name_resolve`, `emit_module`, `05_emit_orchestration`, `emit_semantic_decl`, `emit_host`, `emit_produced`, `03_body_producer`, `program_assembly` diff --git a/docs/probes/frontier_probe_exact_head_survey_2026-08-03.tsv b/docs/probes/frontier_probe_exact_head_survey_2026-08-03.tsv new file mode 100644 index 00000000000..5fe880f5554 --- /dev/null +++ b/docs/probes/frontier_probe_exact_head_survey_2026-08-03.tsv @@ -0,0 +1,18 @@ +module self_emit_ready blocker_class located_stage located_reason probe_error +src/v2/compiler/materialization_carriers.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/04_infer.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/05_eval.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/06_translate.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/05_emit.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/program_partition.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/02_parse.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/source_authority.dag no NameResolutionGap ProbeStageAssemble ^resolve_module_not_found +src/v2/compiler/00_compile.dag no NameResolutionGap ProbeStageAssemble ^resolve_module_not_found +src/v2/compiler/03_ingest.dag no NameResolutionGap ProbeStageAssemble ^resolve_module_not_found +src/v2/compiler/parse_engine_hooks.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/use_site_verdict.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/discovery_enumeration.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/01_tokenize.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/self_host.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/07_target_carriers.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue +src/v2/compiler/fold_lowering.dag no RealizationGap ProbeStageAssemble ^parse_grammar_choice_overlap_residue diff --git a/docs/probes/p1_retention_cohort_20260803T022255Z/mode_a_eviction_on.log b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_a_eviction_on.log new file mode 100644 index 00000000000..ac8d083bfe9 --- /dev/null +++ b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_a_eviction_on.log @@ -0,0 +1,583 @@ +p1_cohort_probe: 50 explicit cohort entr(y/ies), source_roots=["/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag", "/home/briansrls/.worktrees/gunbc/valiant-deer-205/src/v2"] +◷ governor adaptive width — budget=33578549248 source=cgroup memory.max (/sys/fs/cgroup/) max_width=128 sensors=/sys/fs/cgroup/ +[calibration] roster_import_closure_nodes=711 rows=414 (loader both-closure union, pre-resolve, no resolve/typecheck; pairs with the floor cgroup memory.peak steps — on a killed run this line plus the last [gantt] rss_mib sample are the lower-bound receipt) +◐ started compile.frontend +✓ compile.frontend done in 135ms +✓ compile.normalize done in 17ms +✓ compile.reconcile done in 386ms +✓ compile.analyses done in 12ms +02:24:21.371 [affected-set] selection off — running all 414 witness(es) across 50 entr(y/ies) +run_discovery_corpus: adaptive pool over 50 entry-group(s), 414 row(s) (governor target_width=1) +run_discovery_corpus: width=1 inline drain — reusing process_shared_index (no worker duplicate index) +run_discovery_corpus: cross_worker_store withheld (governor target_width=1) — per-index typed cache until width > 1 +[floor-drain] schedule-retention ARMED: entries=50 modules_refcounted=711 evict_enabled=true +02:24:25.098 PASS accelerator_demo_execution_lane_witnesses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag leg=InterpretedLeg) 3.3ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag' evicted_modules=10 evicted_graph=1 schedule_evictions=10 graph_evictions=1 retention_unknown=0 typed_cache=66 resolved_graphs=2 +[floor-drain] group=1/50 typed_cache=66(+48) parse_cache=66(+48) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799671808 +[p1-cohort] entry=1/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag' wall_ms=2409 resolve_ms=2372 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=10 graphs_evicted=1 process_rss=1799671808 cgroup_memory_current=2716196864 cgroup_memory_peak=4651859968 +02:24:26.208 PASS accelerator_demo_gpu_modeling_witnesses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag leg=InterpretedLeg) 1.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag' evicted_modules=6 evicted_graph=1 schedule_evictions=16 graph_evictions=2 retention_unknown=0 typed_cache=66 resolved_graphs=2 +[floor-drain] group=2/50 typed_cache=66(+0) parse_cache=66(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799671808 +[p1-cohort] entry=2/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag' wall_ms=1155 resolve_ms=1076 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=6 graphs_evicted=1 process_rss=1799671808 cgroup_memory_current=2716196864 cgroup_memory_peak=4651859968 +02:24:27.381 PASS accelerator_demo_modeling_lane_witnesses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag leg=InterpretedLeg) 0.8ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag' evicted_modules=5 evicted_graph=1 schedule_evictions=21 graph_evictions=3 retention_unknown=0 typed_cache=62 resolved_graphs=2 +[floor-drain] group=3/50 typed_cache=62(-4) parse_cache=62(-4) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799671808 +[p1-cohort] entry=3/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag' wall_ms=1175 resolve_ms=1090 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=5 graphs_evicted=1 process_rss=1799671808 cgroup_memory_current=2715918336 cgroup_memory_peak=4651859968 +02:24:28.494 PASS iam_external_source_denies (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.2ms +02:24:28.494 PASS iam_internal_prefix_mfa_permits (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.1ms +02:24:28.494 PASS iam_no_mfa_denies (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.1ms +02:24:28.495 PASS iam_wrong_prefix_denies (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=22 graph_evictions=4 retention_unknown=0 typed_cache=67 resolved_graphs=2 +[floor-drain] group=4/50 typed_cache=67(+5) parse_cache=67(+5) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799675904 +[p1-cohort] entry=4/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag' wall_ms=1040 resolve_ms=1030 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2715885568 cgroup_memory_peak=4651859968 +02:24:29.596 PASS bmc_least_privilege_via_rbac_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag leg=InterpretedLeg) 0.5ms +02:24:29.596 PASS posix_root_identification_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag' evicted_modules=2 evicted_graph=1 schedule_evictions=24 graph_evictions=5 retention_unknown=0 typed_cache=74 resolved_graphs=2 +[floor-drain] group=5/50 typed_cache=74(+7) parse_cache=74(+7) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799675904 +[p1-cohort] entry=5/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag' wall_ms=1100 resolve_ms=1091 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2717966336 cgroup_memory_peak=4651859968 +02:24:30.647 PASS auth_deficit_failure_classifies_interactive_upsert (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.4ms +02:24:30.647 PASS empty_stderr_failure_classifies_refuse_not_upsert (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.3ms +02:24:30.647 PASS infrastructure_failure_classifies_refuse_not_upsert (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:30.647 PASS successful_print_classifies_ready (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=25 graph_evictions=6 retention_unknown=0 typed_cache=82 resolved_graphs=2 +[floor-drain] group=6/50 typed_cache=82(+8) parse_cache=82(+8) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799675904 +[p1-cohort] entry=6/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag' wall_ms=1051 resolve_ms=1041 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2715844608 cgroup_memory_peak=4651859968 +02:24:31.524 PASS posix_group_can_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:24:31.524 PASS posix_other_cannot_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:24:31.524 PASS posix_owner_can_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.0ms +02:24:31.525 PASS posix_owner_cannot_execute (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:24:31.525 PASS rbac_editor_can_write (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.2ms +02:24:31.525 PASS rbac_viewer_can_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:24:31.525 PASS rbac_viewer_cannot_write (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag' evicted_modules=2 evicted_graph=1 schedule_evictions=27 graph_evictions=7 retention_unknown=0 typed_cache=81 resolved_graphs=2 +[floor-drain] group=7/50 typed_cache=81(-1) parse_cache=81(-1) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799675904 +[p1-cohort] entry=7/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag' wall_ms=928 resolve_ms=869 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2716037120 cgroup_memory_peak=4651859968 +02:24:32.497 PASS w_exact_fraction_is_authority_and_floor_is_lossy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.3ms +02:24:32.497 PASS w_red_empty_funnel_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:32.497 PASS w_red_first_invalid_stage_wins (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:32.497 PASS w_red_floor_projection_refuses_hand_built_zero_converted_forecast (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:32.497 PASS w_red_rate_above_unity_refuses_naming_the_stage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:32.497 PASS w_red_unknown_scenario_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:32.498 PASS w_red_zero_cohort_refuses_naming_the_stage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:32.498 PASS w_red_zero_entry_unit_cost_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:32.498 PASS w_red_zero_numerator_refuses_naming_the_stage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:32.498 PASS w_two_step_funnel_composes_exact_fraction_and_cost (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag' evicted_modules=2 evicted_graph=1 schedule_evictions=29 graph_evictions=8 retention_unknown=0 typed_cache=81 resolved_graphs=2 +[floor-drain] group=8/50 typed_cache=81(+0) parse_cache=81(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799675904 +[p1-cohort] entry=8/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag' wall_ms=973 resolve_ms=912 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2715906048 cgroup_memory_peak=4651859968 +02:24:33.484 PASS w_google_billable_unit_catalog_is_total_and_wire_labeled (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:33.484 PASS w_google_media_rate_is_auction_determined_with_mechanism_citation (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:33.484 PASS w_google_strategy_roster_is_the_verbatim_thirteen (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:33.485 PASS w_meta_bid_strategy_catalog_is_total_with_verbatim_wire_values (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:33.485 PASS w_meta_billing_event_catalog_is_total_with_verbatim_wire_values (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:33.485 PASS w_meta_media_rate_is_auction_determined (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:33.485 PASS w_meta_optimization_goal_axis_is_distinct_and_transcribed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:33.485 PASS w_red_answer_arm_and_ignorance_arm_stay_distinct (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:33.485 PASS w_red_meta_minimum_budget_rate_refuses_with_cause (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag' evicted_modules=7 evicted_graph=1 schedule_evictions=36 graph_evictions=9 retention_unknown=0 typed_cache=81 resolved_graphs=2 +[floor-drain] group=9/50 typed_cache=81(+0) parse_cache=81(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799675904 +[p1-cohort] entry=9/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag' wall_ms=987 resolve_ms=925 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=7 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2716176384 cgroup_memory_peak=4651859968 +02:24:35.284 PASS census_closure_frontier_rows_count_is_twenty_one (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 4.5ms +02:24:35.285 PASS census_closure_frontier_rows_well_formed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.4ms +02:24:35.285 PASS frontier_expiry_fired_row_still_present_reds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.6ms +02:24:35.286 PASS frontier_expiry_fired_trigger_absent_from_rows_is_clean (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.6ms +02:24:35.286 PASS frontier_expiry_fold_reports_all_unfired_when_no_fired_registry (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.3ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag' evicted_modules=18 evicted_graph=1 schedule_evictions=54 graph_evictions=10 retention_unknown=0 typed_cache=101 resolved_graphs=2 +[floor-drain] group=10/50 typed_cache=101(+20) parse_cache=101(+20) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=1799675904 +[p1-cohort] entry=10/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag' wall_ms=1768 resolve_ms=1728 eval_ms=6 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=18 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2717057024 cgroup_memory_peak=4651859968 +02:24:48.269 PASS anomaly_absent_reason_phrase_has_one_spelling (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 69.4ms +02:24:48.269 PASS anomaly_cleanup_refusal_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:48.269 PASS anomaly_dispatch_answer_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.269 PASS anomaly_instance_label_keeps_both_halves (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.269 PASS anomaly_producer_red_on_surface_without_callers (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:48.269 PASS anomaly_reason_empty_text_removes_the_line (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.269 PASS anomaly_reason_is_a_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:48.269 PASS anomaly_reason_red_on_title_only (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.355 PASS anomaly_reason_surface_is_styled (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 85.6ms +02:24:48.355 PASS anomaly_stage_accessible_name_keeps_label_and_state (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.355 PASS anomaly_title_stays_a_convenience (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:48.355 PASS anomaly_unreadable_answer_does_not_name_the_network (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.355 PASS anomaly_unreadable_answer_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:48.355 PASS anomaly_workflow_refusal_reason_survives_concatenation (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.355 PASS anomaly_workflow_segment_falls_closed_on_empty_detail (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:48.355 PASS anomaly_workflow_segment_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=55 graph_evictions=11 retention_unknown=0 typed_cache=255 resolved_graphs=2 +[floor-drain] group=11/50 typed_cache=255(+154) parse_cache=252(+151) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2427908096 +[p1-cohort] entry=11/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag' wall_ms=13131 resolve_ms=12843 eval_ms=155 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2427908096 cgroup_memory_current=3345248256 cgroup_memory_peak=4651859968 +02:24:49.436 PASS shell_quote_apostrophe_render_reopens_single_quote_context (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:49.436 PASS shell_quote_escapes_embedded_apostrophe (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:49.436 PASS shell_quote_plain_args_single_quoted (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=56 graph_evictions=12 retention_unknown=0 typed_cache=256 resolved_graphs=2 +[floor-drain] group=12/50 typed_cache=256(+1) parse_cache=253(+1) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2427908096 +[p1-cohort] entry=12/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag' wall_ms=991 resolve_ms=984 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2427908096 cgroup_memory_current=3345260544 cgroup_memory_peak=4651859968 +02:24:50.519 PASS artifact_store_scratch_grant_admits_gunbc_tmp_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.9ms +02:24:50.519 PASS artifact_store_scratch_grant_refusal_is_located (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.3ms +02:24:50.519 PASS artifact_store_scratch_grant_refuses_gunbc_prefix_without_separator_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:50.519 PASS artifact_store_scratch_grant_refuses_non_gunbc_tmp_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:50.520 PASS artifact_store_scratch_grant_refuses_repo_tree_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag' evicted_modules=3 evicted_graph=1 schedule_evictions=59 graph_evictions=13 retention_unknown=0 typed_cache=256 resolved_graphs=2 +[floor-drain] group=13/50 typed_cache=256(+0) parse_cache=253(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2434539520 +[p1-cohort] entry=13/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag' wall_ms=1153 resolve_ms=1072 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=2434539520 cgroup_memory_current=3351814144 cgroup_memory_peak=4651859968 +02:24:51.763 PASS derived_aggregate_matches_legacy_aggregate_for_unchanged_build (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.4ms +02:24:51.765 PASS native_realization_environment_change_cold_rebuild_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 1.1ms +02:24:51.766 PASS native_realization_toolchain_change_cold_rebuild_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 1.1ms +02:24:51.766 PASS observed_tool_identity_missing_and_duplicate_refuse (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:51.767 PASS resolved_build_context_identity_refuses_sha256_observed_tool (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.6ms +02:24:51.768 PASS store_budget_evicts_least_recent_counted_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 1.3ms +02:24:51.768 PASS store_construction_reads_eviction_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:51.768 PASS store_hit_and_stale_never_served_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.4ms +02:24:51.769 PASS store_no_eviction_under_budget_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:51.769 PASS store_put_artifact_exactly_at_budget_is_admitted_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:51.769 PASS store_put_oversized_artifact_does_not_fit_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:51.769 PASS store_put_oversized_artifact_never_evicts_itself_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:51.770 PASS store_put_oversized_artifact_preserves_warm_rows_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.4ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=60 graph_evictions=14 retention_unknown=0 typed_cache=258 resolved_graphs=2 +[floor-drain] group=14/50 typed_cache=258(+2) parse_cache=255(+2) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2440097792 +[p1-cohort] entry=14/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag' wall_ms=1187 resolve_ms=1161 eval_ms=6 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2440097792 cgroup_memory_current=3357573120 cgroup_memory_peak=4651859968 +02:24:52.840 PASS live_probe_firmware_matches_shipped_catalog_row (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:52.842 PASS live_probe_redfish_virtual_media_absent_matches_catalog (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 1.2ms +02:24:52.843 PASS live_probe_rows_cover_vm_and_nbd_get_surfaces (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.9ms +02:24:52.843 PASS shipped_row_nbd_proxy_capability_requires_ws_dry_run_receipt (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:52.843 PASS srv3_live_bmc_host_is_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=61 graph_evictions=15 retention_unknown=0 typed_cache=262 resolved_graphs=2 +[floor-drain] group=15/50 typed_cache=262(+4) parse_cache=259(+4) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2494459904 +[p1-cohort] entry=15/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag' wall_ms=1064 resolve_ms=1051 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2494459904 cgroup_memory_current=3411836928 cgroup_memory_peak=4651859968 +02:24:53.819 PASS base64_decode_accepts_unpadded_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.7ms +02:24:53.820 PASS base64_decode_rejects_cross_variant_char_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:53.820 PASS base64_decode_rejects_interior_pad_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:53.820 PASS base64_decode_rejects_invalid_char_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:53.820 PASS base64_decode_rejects_lone_sextet_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:53.821 PASS base64_octet_roundtrip_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.7ms +02:24:53.821 PASS base64_rfc4648_golden_vectors_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.4ms +02:24:53.822 PASS base64url_alphabet_golden_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:53.822 PASS base64url_roundtrip_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.3ms +02:24:53.822 PASS bytes_octets_iso_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:53.822 PASS utf8_total_direction_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=62 graph_evictions=16 retention_unknown=0 typed_cache=262 resolved_graphs=2 +[floor-drain] group=16/50 typed_cache=262(+0) parse_cache=259(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2547367936 +[p1-cohort] entry=16/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag' wall_ms=1036 resolve_ms=966 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2547367936 cgroup_memory_current=3465035776 cgroup_memory_peak=4651859968 +02:24:54.883 PASS factory_published_password_promotes_to_basic_auth_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag leg=InterpretedLeg) 0.3ms +02:24:54.884 PASS gcp_access_payload_produces_basic_auth_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=63 graph_evictions=17 retention_unknown=0 typed_cache=266 resolved_graphs=2 +[floor-drain] group=17/50 typed_cache=266(+4) parse_cache=263(+4) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2549989376 +[p1-cohort] entry=17/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag' wall_ms=1001 resolve_ms=993 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2549989376 cgroup_memory_current=3467673600 cgroup_memory_peak=4651859968 +02:24:58.509 PASS bootstrap_apis_derive_from_service_deps (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.3ms +02:24:58.509 PASS bootstrap_bindings_exclude_broad_roles (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:58.510 PASS bootstrap_bindings_least_privilege (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:58.510 PASS bootstrap_enables_only_required_apis (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag' evicted_modules=4 evicted_graph=1 schedule_evictions=67 graph_evictions=18 retention_unknown=0 typed_cache=301 resolved_graphs=2 +[floor-drain] group=18/50 typed_cache=301(+35) parse_cache=298(+35) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2756497408 +[p1-cohort] entry=18/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag' wall_ms=3669 resolve_ms=3594 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=2756497408 cgroup_memory_current=3674443776 cgroup_memory_peak=4651859968 +02:24:59.610 PASS altrad8ud_firmware_catalog_is_board_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.4ms +02:24:59.610 PASS catalog_has_no_redfish_vm_capable_firmware_today (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:59.610 PASS firmware_intent_match_crosses_as_typed_disposition (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:59.611 PASS firmware_wire_version_is_parsed_before_track_matching (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.2ms +02:24:59.611 PASS nbd_proxy_vm_capable_row_solves (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:59.611 PASS node_with_virtual_media_solves_direct (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:59.611 PASS redfish_vm_preferred_over_nbd_proxy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:59.611 PASS srv3_capabilities_are_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:59.611 PASS srv3_install_mechanism_is_nbd_proxy_after_dry_run (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.0ms +02:24:59.611 PASS update_only_row_without_vm_catalog_falls_to_pxe (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:24:59.611 PASS vm_capable_firmware_row_flips_to_update_path (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=68 graph_evictions=19 retention_unknown=0 typed_cache=302 resolved_graphs=2 +[floor-drain] group=19/50 typed_cache=302(+1) parse_cache=299(+1) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2756497408 +[p1-cohort] entry=19/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag' wall_ms=1060 resolve_ms=1044 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2756497408 cgroup_memory_current=3674447872 cgroup_memory_peak=4651859968 +02:25:00.659 PASS bmc_factory_credential_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=69 graph_evictions=20 retention_unknown=0 typed_cache=302 resolved_graphs=2 +[floor-drain] group=20/50 typed_cache=302(+0) parse_cache=299(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2809524224 +[p1-cohort] entry=20/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag' wall_ms=1104 resolve_ms=1032 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2809524224 cgroup_memory_current=3728437248 cgroup_memory_peak=4651859968 +02:25:03.382 PASS backup_manifest_identity_is_derived_from_every_manifest_field (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 12.3ms +02:25:03.383 PASS bounded_monitoring_completion_carries_the_admitted_bound (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 1.0ms +02:25:03.384 PASS delayed_temperature_rise_is_seen_inside_the_bounded_window (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:03.384 PASS digest_mismatched_backup_manifest_is_not_admitted (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:03.384 PASS duty_curve_cannot_fall_after_reaching_emergency_full_duty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:03.384 PASS empty_monitoring_window_cannot_claim_completion (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:03.384 PASS identical_bmc_on_wrong_endpoint_is_not_exact_target (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:03.384 PASS one_late_sample_cannot_claim_monitoring_coverage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:03.384 PASS semantically_equal_but_digest_different_config_is_not_live_exact (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:03.384 PASS short_monitoring_window_cannot_claim_completion (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:03.385 PASS stale_backup_manifest_generation_is_not_admitted (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:03.385 PASS sub_threshold_tach_is_a_discriminating_refusal (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:03.385 PASS successful_effect_survives_cleanup_failure_as_cleanup_debt (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:03.385 PASS threshold_satisfied_tach_is_not_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag' evicted_modules=3 evicted_graph=1 schedule_evictions=72 graph_evictions=21 retention_unknown=0 typed_cache=318 resolved_graphs=2 +[floor-drain] group=21/50 typed_cache=318(+16) parse_cache=315(+16) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2898235392 +[p1-cohort] entry=21/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag' wall_ms=2698 resolve_ms=2628 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=2898235392 cgroup_memory_current=3816665088 cgroup_memory_peak=4651859968 +02:25:05.007 PASS absent_projected_digest_admitted_config_digest_is_unavailable (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:05.009 PASS approved_exact_firmware_artifact_builds_a_typed_srv3_update_plan (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 1.8ms +02:25:05.009 PASS bmc_fan_durability_refusal_reason_surfaces_generation_mismatch (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.009 PASS both_observed_thermal_query_shapes_are_complete (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.010 PASS both_update_services_are_observed_but_neither_exposes_a_backup_bmc_image (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.013 PASS converged_curve_and_installed_tach_topology_are_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 3.4ms +02:25:05.013 PASS converged_srv4_curve_without_topology_projection_refuses_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.014 PASS desired_curve_with_stale_uninstalled_fan_input_still_builds_apply_plan (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:05.014 PASS drifted_policy_applies_without_prior_durability_evidence (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:05.014 PASS drifted_srv4_curve_builds_typed_overlay_plan_only_with_exact_projection_and_persistence (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:05.015 PASS duplicate_srv4_durability_receipts_refuse_instead_of_first_wins (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.5ms +02:25:05.015 PASS every_metal_host_uses_the_single_global_bmc_valid_state (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:05.016 PASS firmware_classification_reuses_upsert_states_and_refuses_unapproved_update (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:05.016 PASS firmware_versions_share_curve_but_not_controller_shape (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:05.017 PASS fleet_curve_engages_cooling_early_and_reaches_full_before_continuous_limit (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 1.4ms +02:25:05.017 PASS fleet_quiet_curve_admits_srv4_active_config_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.018 PASS fleet_quiet_projected_config_digest_hex_authority_executes (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:05.018 PASS fleet_quiet_projected_config_digest_sha256_equality_executes (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.018 PASS fleet_quiet_temp_soc_curve_matches_projected_config_content_identity (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.018 PASS heterogeneous_firmware_satisfies_unpinned_intent_and_pinned_detects_mismatch (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.018 PASS linux_synchronized_publication_admits_commit_barrier (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.018 PASS linux_unsynchronized_publication_refuses_commit_barrier (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.018 PASS non_fleet_curve_admitted_config_digest_is_unavailable (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.018 PASS non_fleet_quiet_curve_projected_config_digest_is_unavailable (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.019 PASS projection_firmware_mismatch_refuses_a_322_projection_on_a_306_host (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:05.019 PASS reboot_durability_evidence_refuses_non_positive_interval (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:05.019 PASS reboot_durability_evidence_refuses_relabeled_perturbation_capability_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.6ms +02:25:05.020 PASS redfish_surface_difference_is_observed_not_inferred (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.020 PASS relabeled_reboot_construction_refusal_propagates_through_classification (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:05.020 PASS semantically_converged_live_digest_mismatch_refuses_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:05.020 PASS sensor_unavailable_uses_same_duty_but_retains_cause (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.021 PASS sensors_http_success_alone_is_incomplete_red_control (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.021 PASS srv3_fan_realization_refuses_without_a_modeled_projection (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:05.021 PASS srv4_bmc_reboot_persistence_receipt_proves_same_config_and_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.5ms +02:25:05.021 PASS srv4_converged_observation_matches_projection_derived_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.021 PASS srv4_durability_admission_binds_projection_derived_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.021 PASS srv4_durability_gate_preserves_typed_linkage_refusal_verdict (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.022 PASS srv4_fixture_durability_evidence_is_constructed_not_relabelled (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.022 PASS srv4_flash_overlay_is_observed_writable_and_live_overridden (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:05.022 PASS srv4_live_receipt_is_converged_quiet_and_failsafe_clear (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:05.022 PASS srv4_receipt_cannot_qualify_a_later_perturbation_generation (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.5ms +02:25:05.023 PASS temp_soc_curve_explains_the_audible_step (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag' evicted_modules=2 evicted_graph=1 schedule_evictions=74 graph_evictions=22 retention_unknown=0 typed_cache=317 resolved_graphs=2 +[floor-drain] group=22/50 typed_cache=317(-1) parse_cache=314(-1) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2943299584 +[p1-cohort] entry=22/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag' wall_ms=1702 resolve_ms=1569 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=2943299584 cgroup_memory_current=3861716992 cgroup_memory_peak=4651859968 +02:25:06.400 PASS convergence_receipt_binds_host_realizer_readback_and_live_health (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 1.5ms +02:25:06.401 PASS duty_curve_cannot_fall_after_reaching_full_duty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:06.401 PASS fan_curve_refuses_duty_above_full (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:06.401 PASS fan_curve_refuses_minimum_above_first_step (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:06.401 PASS firmware_and_redfish_surfaces_are_literal_versioned_observations (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:06.401 PASS observed_fan_curve_is_validated_before_use (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:06.402 PASS overlay_receipt_records_literal_mount_and_write_facts_only (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:06.406 PASS proc_mounts_parser_decodes_kernel_mount_escapes (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 4.6ms +02:25:06.409 PASS proc_mounts_parser_derives_literal_overlay_paths (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 3.0ms +02:25:06.413 PASS proc_mounts_parser_refuses_multi_lower_overlay (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 3.6ms +02:25:06.414 PASS proc_mounts_parser_refuses_relative_overlay_paths (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 1.4ms +02:25:06.415 PASS restart_receipt_binds_one_literal_perturbation_generation_and_readback (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.7ms +02:25:06.415 PASS update_surface_receipts_do_not_claim_an_available_backup_image (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag' evicted_modules=4 evicted_graph=1 schedule_evictions=78 graph_evictions=23 retention_unknown=0 typed_cache=314 resolved_graphs=2 +[floor-drain] group=23/50 typed_cache=314(-3) parse_cache=311(-3) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2943303680 +[p1-cohort] entry=23/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag' wall_ms=1382 resolve_ms=1257 eval_ms=15 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=2943303680 cgroup_memory_current=3861987328 cgroup_memory_peak=4651859968 +02:25:08.081 PASS serve_command_one_shape_two_transports (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 1.2ms +02:25:08.085 PASS srv4_bmc_served_seed_carries_fleet_keys (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 3.8ms +02:25:08.086 PASS srv4_grub_cfg_boots_mirror_bulk_with_bmc_seed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 1.2ms +02:25:08.087 PASS srv4_http_boot_entry_targets_bmc (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:08.087 PASS srv4_scp_put_never_carries_a_second_forked_posture (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 0.5ms +02:25:08.088 PASS srv4_scp_put_uses_shared_ssh_posture_not_a_fork (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 0.5ms +02:25:08.090 PASS srv4_staging_manifest_stages_rendered_grub_and_seed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 2.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=79 graph_evictions=24 retention_unknown=0 typed_cache=328 resolved_graphs=2 +[floor-drain] group=24/50 typed_cache=328(+14) parse_cache=325(+14) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=2943303680 +[p1-cohort] entry=24/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag' wall_ms=1594 resolve_ms=1552 eval_ms=9 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2943303680 cgroup_memory_current=3861803008 cgroup_memory_peak=4651859968 +02:25:09.498 PASS srv4_shell_boot_sequence_direct_kernel (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag leg=InterpretedLeg) 1.3ms +02:25:09.499 PASS srv4_tftpd_serve_command_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag' evicted_modules=7 evicted_graph=1 schedule_evictions=86 graph_evictions=25 retention_unknown=0 typed_cache=324 resolved_graphs=2 +[floor-drain] group=25/50 typed_cache=324(-4) parse_cache=321(-4) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3008028672 +[p1-cohort] entry=25/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag' wall_ms=1491 resolve_ms=1375 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=7 graphs_evicted=1 process_rss=3008028672 cgroup_memory_current=3926777856 cgroup_memory_peak=4651859968 +02:25:10.885 PASS account_password_body_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:10.885 PASS boot_override_body_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.7ms +02:25:10.885 PASS gcp_secret_full_name_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:10.885 PASS netrc_content_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:10.886 PASS reset_body_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=87 graph_evictions=26 retention_unknown=0 typed_cache=327 resolved_graphs=2 +[floor-drain] group=26/50 typed_cache=327(+3) parse_cache=324(+3) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3008028672 +[p1-cohort] entry=26/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag' wall_ms=1293 resolve_ms=1269 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3008028672 cgroup_memory_current=3927207936 cgroup_memory_peak=4651859968 +02:25:13.123 PASS bmc_credential_posture_hardens_to_keyless_steady_state (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:13.123 PASS bmc_decom_does_not_roundtrip_when_inverse_is_wrong (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:13.123 PASS bmc_decom_is_two_sided_inverse_on_phase_ladder (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:13.123 PASS bmc_decom_roundtrips_canonical_on_named_quotient (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:13.124 PASS bmc_lifecycle_fold_is_complete_and_monotone (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:13.124 PASS bmc_onboard_then_decom_recovers_factory_phase (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:13.124 PASS bmc_onboarding_lifecycle_is_linear_dag (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:13.160 PASS bmc_plan_steady_state_is_keyless_wif (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 36.2ms +02:25:13.160 PASS credential_probe_maps_to_correct_phase (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:13.161 PASS srv3_plan_starts_factory_default_at_192 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:13.161 PASS srv4_plan_targets_195_with_srv4_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=88 graph_evictions=27 retention_unknown=0 typed_cache=327 resolved_graphs=2 +[floor-drain] group=27/50 typed_cache=327(+0) parse_cache=324(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3120955392 +[p1-cohort] entry=27/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag' wall_ms=2419 resolve_ms=2194 eval_ms=37 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3120955392 cgroup_memory_current=4039725056 cgroup_memory_peak=4651859968 +02:25:14.355 PASS bmc_redfish_grounding_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.6ms +02:25:14.355 PASS bmc_redfish_grounding_power_unread_is_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:14.355 PASS gibibyte_scale_factor_bytes_matches_memory_table (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:14.355 PASS memory_scale_factor_bytes_rejects_si_scale (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag' evicted_modules=3 evicted_graph=1 schedule_evictions=91 graph_evictions=28 retention_unknown=0 typed_cache=327 resolved_graphs=2 +[floor-drain] group=28/50 typed_cache=327(+0) parse_cache=324(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3120959488 +[p1-cohort] entry=28/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag' wall_ms=1104 resolve_ms=1028 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4039741440 cgroup_memory_peak=4651859968 +02:25:16.547 PASS bmc_allowlist_excludes_lockout_roles (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:16.547 PASS bmc_assimilator_least_privilege_two_scoped_roles (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:16.547 PASS bmc_assimilator_roles_within_closed_allowlist (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:16.582 PASS bmc_smoke_workflow_carries_no_pasted_key (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 34.9ms +02:25:16.582 PASS bmc_smoke_workflow_is_keyless_with_id_token_write (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:16.583 PASS bmc_wif_principal_set_pins_repo (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:16.583 PASS bmc_wif_provider_resource_is_well_formed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=92 graph_evictions=29 retention_unknown=0 typed_cache=327 resolved_graphs=2 +[floor-drain] group=29/50 typed_cache=327(+0) parse_cache=324(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3120959488 +[p1-cohort] entry=29/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag' wall_ms=2315 resolve_ms=2095 eval_ms=35 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4039753728 cgroup_memory_peak=4651859968 +02:25:17.740 PASS disk_usage_transport_becomes_typed_byte_size (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:17.740 PASS duplicate_object_mapper_matches_remain_many (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.740 PASS empty_path_transport_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.740 PASS exit_one_path_probe_with_stderr_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.740 PASS exit_three_service_probe_with_stderr_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.740 PASS exit_zero_service_probe_requires_exact_active_token (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.740 PASS failed_sensor_projection_cannot_become_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.740 PASS failed_service_state_is_preserved_in_refusal (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.740 PASS failed_threshold_transport_cannot_become_threshold_unstated (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.740 PASS false_path_probe_is_observed_not_transport_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.740 PASS inactive_service_is_observed_not_transport_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS inconsistent_success_projection_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS multiple_nonempty_paths_are_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.741 PASS nonzero_exit_cannot_become_observed_disk_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS nonzero_exit_cannot_become_observed_path_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS nonzero_exit_cannot_become_observed_time_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS nonzero_exit_cannot_become_observed_zone_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.741 PASS object_mapper_one_cardinality_is_preserved (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS object_mapper_zero_cardinality_is_preserved (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS path_transport_whitespace_becomes_one_typed_path (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:17.741 PASS ssh_failure_cannot_masquerade_as_false_path_probe (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS successful_empty_sensor_projection_is_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:17.741 PASS tach_at_controller_threshold_is_healthy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.741 PASS tach_below_controller_threshold_is_not_healthy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.742 PASS tach_health_sensor_accessor_covers_every_arm (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.742 PASS utc_epoch_seconds_become_epoch_milliseconds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.742 PASS wrong_busctl_type_cannot_become_zone_failsafe_bool (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:17.742 PASS zone_failsafe_transport_becomes_typed_bool (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag' evicted_modules=5 evicted_graph=1 schedule_evictions=97 graph_evictions=30 retention_unknown=0 typed_cache=323 resolved_graphs=2 +[floor-drain] group=30/50 typed_cache=323(-4) parse_cache=320(-4) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3120959488 +[p1-cohort] entry=30/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag' wall_ms=1078 resolve_ms=993 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=5 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4039798784 cgroup_memory_peak=4651859968 +02:25:19.061 PASS srv4_gadget_is_readonly_cdrom_on_nbd0 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 2.5ms +02:25:19.062 PASS srv4_gadget_ops_are_typed_not_scraped_from_shell (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 0.5ms +02:25:19.062 PASS srv4_nbd_client_attaches_named_export (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:19.062 PASS srv4_nbd_export_read_only_seeded_iso (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag' evicted_modules=4 evicted_graph=1 schedule_evictions=101 graph_evictions=31 retention_unknown=0 typed_cache=329 resolved_graphs=2 +[floor-drain] group=31/50 typed_cache=329(+6) parse_cache=326(+6) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3120959488 +[p1-cohort] entry=31/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag' wall_ms=1257 resolve_ms=1228 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4040024064 cgroup_memory_peak=4651859968 +02:25:29.544 PASS bmc_smoke_workflow_scopes_id_token_write_to_its_single_designated_job (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 30.8ms +02:25:29.547 PASS bootstrap_grants_zero_bindings_for_bmc_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 2.2ms +02:25:29.548 PASS chain_has_four_steps_in_delegation_order (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 1.1ms +02:25:29.548 PASS exchange_step_pins_repo_attribute_condition (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:29.548 PASS impersonation_step_targets_the_scoped_assimilator_sa (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:29.548 PASS legacy_binding_is_flagged_out_of_band_and_not_signed_by_this_pr (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:30.223 PASS main_ci_workflow_grants_no_id_token (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 674.8ms +02:25:30.224 PASS secret_access_step_targets_canary_not_bmc_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 1.1ms +02:25:30.224 PASS secret_ref_login_handler_added_beside_factory_login_not_over_it (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:30.224 PASS secret_refs_are_free_of_credential_shaped_strings (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:30.224 PASS secret_refs_carry_no_hash_material_they_are_pending (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:30.224 PASS srv3_credential_path_is_an_enumerated_option_space_not_a_binding (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:30.225 PASS threat_model_names_both_read_capabilities (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:30.225 PASS unsigned_grant_row_count_matches_zero_derived_bindings (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=102 graph_evictions=32 retention_unknown=0 typed_cache=496 resolved_graphs=2 +[floor-drain] group=32/50 typed_cache=496(+167) parse_cache=493(+167) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3685371904 +[p1-cohort] entry=32/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag' wall_ms=11368 resolve_ms=10378 eval_ms=710 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3685371904 cgroup_memory_current=4605317120 cgroup_memory_peak=4651859968 +02:25:31.471 PASS branded_list_first_content_hash_method_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:31.471 PASS branded_list_first_content_hash_method_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.4ms +02:25:31.471 PASS branded_list_first_content_hash_pipe_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:31.471 PASS branded_list_first_content_hash_pipe_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:31.471 PASS branded_list_first_string_method_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:31.471 PASS branded_list_first_string_method_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:31.471 PASS branded_list_first_string_pipe_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:31.471 PASS branded_list_first_string_pipe_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=103 graph_evictions=33 retention_unknown=0 typed_cache=496 resolved_graphs=2 +[floor-drain] group=33/50 typed_cache=496(+0) parse_cache=493(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3685687296 +[p1-cohort] entry=33/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag' wall_ms=1084 resolve_ms=1012 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3685687296 cgroup_memory_current=4605751296 cgroup_memory_peak=4651859968 +02:25:32.616 PASS witness_admission_is_construction (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.5ms +02:25:32.616 PASS witness_balance_states (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:32.616 PASS witness_conservation_residue_lens (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:32.617 PASS witness_divide_once (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:32.617 PASS witness_method_is_zero_based (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:32.617 PASS witness_reconcile_all_satisfied (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.3ms +02:25:32.617 PASS witness_reconcile_evicts_best_effort (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:32.617 PASS witness_reconcile_guaranteed_shortfall (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:32.618 PASS witness_tree_conservation_recursive (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=104 graph_evictions=34 retention_unknown=0 typed_cache=496 resolved_graphs=2 +[floor-drain] group=34/50 typed_cache=496(+0) parse_cache=493(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3685687296 +[p1-cohort] entry=34/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag' wall_ms=1140 resolve_ms=1070 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3685687296 cgroup_memory_current=4605710336 cgroup_memory_peak=4651859968 +✓ typecheck gunbc.host_effect_realize done in 4 seconds +02:25:45.958 PASS witness_absent_endpoint_is_absent_not_unknown (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 3.3ms +02:25:45.958 PASS witness_active_slot_owner_also_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 0.2ms +02:25:45.959 PASS witness_ambiguous_ownership_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 1.1ms +02:25:45.960 PASS witness_both_runner_lifecycles_refuse_at_the_verdict (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 1.2ms +02:25:45.960 PASS witness_managed_unit_owner_converges_only_on_the_intended_unit (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 0.2ms +02:25:45.961 PASS witness_placement_is_indexed_by_owner_not_by_process_count (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 0.1ms +02:25:45.961 PASS witness_retired_slot_owner_is_runner_owned_and_retired (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 0.0ms +02:25:45.961 PASS witness_undecided_owner_context_refuses_and_keeps_the_located_reason (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 0.6ms +02:25:45.962 PASS witness_unreachable_host_is_unknown_never_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag leg=InterpretedLeg) 1.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag' evicted_modules=132 evicted_graph=1 schedule_evictions=236 graph_evictions=35 retention_unknown=0 typed_cache=430 resolved_graphs=2 +[floor-drain] group=35/50 typed_cache=430(-66) parse_cache=427(-66) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3944873984 +[p1-cohort] entry=35/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag' wall_ms=13992 resolve_ms=13197 eval_ms=7 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=132 graphs_evicted=1 process_rss=3944873984 cgroup_memory_current=4865286144 cgroup_memory_peak=4866609152 +02:25:48.337 PASS witness_get_in_bounds_returns_element (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/builtin_get_resolver_test.dag leg=InterpretedLeg) 0.0ms +02:25:48.337 PASS witness_get_negative_index_is_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/builtin_get_resolver_test.dag leg=InterpretedLeg) 0.0ms +02:25:48.338 PASS witness_get_out_of_bounds_is_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/builtin_get_resolver_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/builtin_get_resolver_test.dag' evicted_modules=2 evicted_graph=1 schedule_evictions=238 graph_evictions=36 retention_unknown=0 typed_cache=430 resolved_graphs=2 +[floor-drain] group=36/50 typed_cache=430(+0) parse_cache=427(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=36/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/builtin_get_resolver_test.dag' wall_ms=1774 resolve_ms=1636 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634624000 cgroup_memory_peak=4868771840 +02:25:49.826 PASS busybox_build_is_modeled_and_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/busybox_bmc_build_witness_test.dag leg=InterpretedLeg) 1.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/busybox_bmc_build_witness_test.dag' evicted_modules=9 evicted_graph=1 schedule_evictions=247 graph_evictions=37 retention_unknown=0 typed_cache=424 resolved_graphs=2 +[floor-drain] group=37/50 typed_cache=424(-6) parse_cache=421(-6) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=37/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/busybox_bmc_build_witness_test.dag' wall_ms=1504 resolve_ms=1337 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=9 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634611712 cgroup_memory_peak=4868771840 +02:25:51.902 PASS witness_cav_no_toolchain_derives_subject_only (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.1ms +02:25:51.902 PASS witness_cav_toolchain_derives_transform (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.1ms +02:25:51.902 PASS witness_complete_green_on_sound_cited (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.1ms +02:25:51.902 PASS witness_complete_red_on_undercited (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.1ms +02:25:51.902 PASS witness_hand_authored_exempt (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.0ms +02:25:51.904 PASS witness_live_catalog_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 1.4ms +02:25:51.904 PASS witness_live_resolved_graph_complete (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.1ms +02:25:51.904 PASS witness_live_resolved_graph_derives_toolchain (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.1ms +02:25:51.904 PASS witness_native_not_exempt (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.0ms +02:25:51.904 PASS witness_no_promise_complete (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.1ms +02:25:51.904 PASS witness_promise_without_input_incomplete (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.0ms +02:25:51.904 PASS witness_verdict_holds_on_sound_cited (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.0ms +02:25:51.904 PASS witness_verdict_violation_on_undercited (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag' evicted_modules=4 evicted_graph=1 schedule_evictions=251 graph_evictions=38 retention_unknown=0 typed_cache=424 resolved_graphs=2 +[floor-drain] group=38/50 typed_cache=424(+0) parse_cache=421(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=38/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag' wall_ms=2062 resolve_ms=1896 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635201536 cgroup_memory_peak=4868771840 +02:25:53.481 PASS witness_cheap_recompute_skips_wan_layers (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 3.4ms +02:25:53.481 PASS witness_empty_plan_means_recompute_only (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 0.2ms +02:25:53.481 PASS witness_expensive_recompute_reaches_wan_layers (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 0.5ms +02:25:53.482 PASS witness_plan_orders_locality_nearest_first (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 0.2ms +02:25:53.482 PASS witness_plan_primary_and_fallback_projections (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 0.1ms +02:25:53.482 PASS witness_unavailable_backends_omitted (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 0.2ms +02:25:53.482 PASS witness_vendor_only_key_inputs_omission_is_explicit (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 0.2ms +02:25:53.482 PASS witness_vendor_transport_encoding_projection_is_honest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag' evicted_modules=8 evicted_graph=1 schedule_evictions=259 graph_evictions=39 retention_unknown=0 typed_cache=417 resolved_graphs=2 +[floor-drain] group=39/50 typed_cache=417(-7) parse_cache=414(-7) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=39/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag' wall_ms=1536 resolve_ms=1407 eval_ms=4 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=8 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635443200 cgroup_memory_peak=4868771840 +02:25:54.841 PASS witness_impure_on_divergence (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_purity_verdict_test.dag leg=InterpretedLeg) 0.4ms +02:25:54.841 PASS witness_pure_on_match (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_purity_verdict_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_purity_verdict_test.dag' evicted_modules=3 evicted_graph=1 schedule_evictions=262 graph_evictions=40 retention_unknown=0 typed_cache=417 resolved_graphs=2 +[floor-drain] group=40/50 typed_cache=417(+0) parse_cache=414(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=40/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_purity_verdict_test.dag' wall_ms=1336 resolve_ms=1242 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635521024 cgroup_memory_peak=4868771840 +02:25:56.634 PASS witness_ambiguous_high_value_collects_both_reasons (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.2ms +02:25:56.634 PASS witness_cheap_exact_match_is_ready_to_list (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:56.635 PASS witness_high_value_card_is_flagged (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:56.635 PASS witness_many_results_classify_ambiguous (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:56.635 PASS witness_near_mint_display_name_roundtrip (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:56.635 PASS witness_needs_review_disposition (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:56.635 PASS witness_ready_to_list_disposition (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:56.635 PASS witness_single_result_classifies_exact_match (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:56.635 PASS witness_threshold_price_is_flagged (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:56.635 PASS witness_unmatched_card_is_flagged (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:56.635 PASS witness_unpriced_card_is_flagged (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:56.635 PASS witness_uppercase_condition_does_not_decode (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:56.635 PASS witness_zero_results_classifies_no_match (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag' evicted_modules=14 evicted_graph=1 schedule_evictions=276 graph_evictions=41 retention_unknown=0 typed_cache=414 resolved_graphs=2 +[floor-drain] group=41/50 typed_cache=414(-3) parse_cache=411(-3) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=41/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag' wall_ms=1842 resolve_ms=1688 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=14 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635209728 cgroup_memory_peak=4868771840 +02:25:58.115 PASS edition_tokens_render (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:58.115 PASS lib_lands_on_src_lib (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:58.115 PASS module_stem_two_candidates (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:58.115 PASS other_bin_lands_under_src_bin (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:58.115 PASS package_bin_collapses_to_main (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:58.115 PASS test_example_bench_dirs (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=277 graph_evictions=42 retention_unknown=0 typed_cache=416 resolved_graphs=2 +[floor-drain] group=42/50 typed_cache=416(+2) parse_cache=413(+2) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=42/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag' wall_ms=1358 resolve_ms=1315 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635205632 cgroup_memory_peak=4868771840 +02:25:59.255 PASS w_emitter_header_prefix_uses_default (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:59.255 PASS w_min_cargo_version_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:59.255 PASS w_package_version_field_renders (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:59.255 PASS w_registry_dep_version_requirements (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag leg=InterpretedLeg) 0.1ms +02:25:59.255 PASS w_requirement_distinct_from_package_version (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:59.255 PASS w_stage0_default_package_version (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag leg=InterpretedLeg) 0.0ms +02:25:59.255 PASS w_tool_floor_distinct_from_dep_requirement (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag' evicted_modules=3 evicted_graph=1 schedule_evictions=280 graph_evictions=43 retention_unknown=0 typed_cache=414 resolved_graphs=2 +[floor-drain] group=43/50 typed_cache=414(-2) parse_cache=411(-2) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=43/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag' wall_ms=1281 resolve_ms=1124 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635201536 cgroup_memory_peak=4868771840 +02:26:01.057 PASS cheap_pool_chunk_cap_splits_at_cap (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cheap_gate_pool_test.dag leg=InterpretedLeg) 0.3ms +02:26:01.058 PASS cheap_pool_chunk_totality_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cheap_gate_pool_test.dag leg=InterpretedLeg) 0.6ms +02:26:01.058 PASS cheap_pool_chunk_totality_red_control_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cheap_gate_pool_test.dag leg=InterpretedLeg) 0.1ms +02:26:01.058 PASS cheap_pool_chunking_preserves_count (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cheap_gate_pool_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cheap_gate_pool_test.dag' evicted_modules=16 evicted_graph=1 schedule_evictions=296 graph_evictions=44 retention_unknown=0 typed_cache=405 resolved_graphs=2 +[floor-drain] group=44/50 typed_cache=405(-9) parse_cache=401(-10) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=44/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cheap_gate_pool_test.dag' wall_ms=1700 resolve_ms=1607 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=16 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635455488 cgroup_memory_peak=4868771840 +02:26:03.958 PASS absent_coverage_refuses_instead_of_vacuously_passing (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.3ms +02:26:03.958 PASS complete_exact_head_roster_and_population_admits (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.4ms +02:26:03.958 PASS complete_old_head_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:03.958 PASS complete_old_roster_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:03.958 PASS duplicate_required_gate_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:03.959 PASS duplicate_required_population_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:03.959 PASS empty_required_population_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:03.959 PASS missing_required_gate_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:03.959 PASS required_gate_failure_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:03.959 PASS running_coverage_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:03.959 PASS stale_coverage_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:03.959 PASS stopped_coverage_preserves_unexecuted_population_and_cause (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=297 graph_evictions=45 retention_unknown=0 typed_cache=405 resolved_graphs=2 +[floor-drain] group=45/50 typed_cache=405(+0) parse_cache=401(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=45/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag' wall_ms=3081 resolve_ms=2795 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635201536 cgroup_memory_peak=4868771840 +02:26:07.513 PASS witness_cap_split_runner_lt_session (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:07.513 PASS witness_floor_budget_equals_selected_target_budget_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:07.513 PASS witness_hard_cap_is_runner_cgroup_cap (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:07.515 PASS witness_live_is_fail_closed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 1.8ms +02:26:07.516 PASS witness_live_trees_conserve (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 1.2ms +02:26:07.517 PASS witness_measured_fixture_derives_positive_runner_pool (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.4ms +02:26:07.517 PASS witness_overcommit_fails_conservation (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.3ms +02:26:07.517 PASS witness_spawn_width_budget_within_per_runner_cap (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:07.517 PASS witness_srv2_symmetric_to_srv1 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:07.518 PASS witness_srv3_symmetric_to_srv1 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:07.518 PASS witness_three_way_conservation_live (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:07.518 PASS witness_two_pools_present (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:07.518 PASS witness_unknown_child_is_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag' evicted_modules=2 evicted_graph=1 schedule_evictions=299 graph_evictions=46 retention_unknown=0 typed_cache=405 resolved_graphs=2 +[floor-drain] group=46/50 typed_cache=405(+0) parse_cache=401(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=46/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag' wall_ms=3564 resolve_ms=3255 eval_ms=4 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635557888 cgroup_memory_peak=4868771840 +02:26:12.862 PASS witness_build_flag_spelling (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:12.863 PASS witness_committed_lanes_fit_live_slot_cap (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 1.0ms +02:26:12.864 PASS witness_committed_measurement_derives_multi_lane (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:12.864 PASS witness_count_or_serial_passes_measured_count (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:12.864 PASS witness_count_or_serial_refuse_falls_to_serial (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:12.864 PASS witness_force_serial_beats_wide_budget (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:12.864 PASS witness_force_serial_overrides_committed_row (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:12.864 PASS witness_live_rust_gate_uses_slot_budget_lanes (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:12.864 PASS witness_memory_budget_binds_the_count (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:12.864 PASS witness_nextest_flag_spelling (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:12.864 PASS witness_pids_budget_binds_the_count (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:12.865 PASS witness_unmeasured_still_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:12.865 PASS witness_unreadable_budget_falls_back_serial (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag' evicted_modules=13 evicted_graph=1 schedule_evictions=312 graph_evictions=47 retention_unknown=0 typed_cache=403 resolved_graphs=2 +[floor-drain] group=47/50 typed_cache=403(-2) parse_cache=399(-2) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=47/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag' wall_ms=5677 resolve_ms=5022 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=13 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634603520 cgroup_memory_peak=4868771840 +02:26:18.095 PASS ci_concurrency_cancel_expression_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_concurrency_policy_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:18.789 PASS ci_concurrency_event_scoped_stop_policy_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_concurrency_policy_witness_test.dag leg=InterpretedLeg) 693.5ms +02:26:18.789 PASS ci_concurrency_stop_policy_discriminates_merge_group (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_concurrency_policy_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_concurrency_policy_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=313 graph_evictions=48 retention_unknown=0 typed_cache=403 resolved_graphs=2 +[floor-drain] group=48/50 typed_cache=403(+0) parse_cache=399(+0) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=48/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_concurrency_policy_witness_test.dag' wall_ms=5772 resolve_ms=4566 eval_ms=693 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634607616 cgroup_memory_peak=4868771840 +02:26:24.023 PASS witness_access_host_is_srv1 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 1.4ms +02:26:24.766 PASS witness_ci_yml_deploy_job_pins_srv1_runner (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 742.7ms +02:26:24.766 PASS witness_deploy_job_not_on_ubicloud_runner (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:24.766 PASS witness_deploy_stage_pins_srv1_runner_label (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:24.766 PASS witness_local_proof_requires_host_identity (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.1ms +◐ started os.Hostname.ReadShort +✓ os.Hostname.ReadShort done in 2ms +02:26:24.769 FAIL witness_observed_hostname_reads_typed_op_hermetic (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 2.6ms +02:26:24.770 PASS witness_preflight_script_checks_target_host (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.4ms +02:26:24.770 PASS witness_srv12_runner_name_refused_for_srv1_deploy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.4ms +02:26:24.770 PASS witness_srv1_hostname_proves_target (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:24.770 PASS witness_srv2_hostname_refused_for_srv1_deploy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:24.771 PASS witness_ssh_transport_mismatch_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.2ms +02:26:24.771 PASS witness_ssh_transport_structural_proof_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:24.771 PASS witness_ubicloud_runner_name_refused_for_local_apply (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag' evicted_modules=1 evicted_graph=1 schedule_evictions=314 graph_evictions=49 retention_unknown=0 typed_cache=404 resolved_graphs=2 +[floor-drain] group=49/50 typed_cache=404(+1) parse_cache=400(+1) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=49/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag' wall_ms=5802 resolve_ms=4720 eval_ms=748 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634894336 cgroup_memory_peak=4868771840 +02:26:29.881 PASS witness_ci_spec_carries_deploy_stages (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 5.7ms +02:26:30.628 PASS witness_ci_yml_deploy_job_consumes_release_bins_artifact (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 747.2ms +02:26:30.628 PASS witness_ci_yml_deploy_job_matches_enrollment (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:30.628 PASS witness_ci_yml_deploy_job_serializes_blue_green_cutovers (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:30.628 PASS witness_deploy_access_sudo_miss_surfaces_sudoers_hint (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.3ms +02:26:30.629 PASS witness_deploy_access_sudoers_line_authority (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:30.629 PASS witness_deploy_access_uses_local_apply_on_srv1 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:30.629 PASS witness_deploy_invoke_does_not_rebuild_release_bins (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:30.629 PASS witness_deploy_invoke_runs_gunbc_wet (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.1ms +02:26:30.629 PASS witness_deploy_stage_targets_live_deploy_wet (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.0ms +02:26:30.629 PASS witness_workflow_deploy_job_matches_enrollment (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag' evicted_modules=397 evicted_graph=1 schedule_evictions=711 graph_evictions=50 retention_unknown=0 typed_cache=4 resolved_graphs=2 +[floor-drain] group=50/50 typed_cache=4(-400) parse_cache=4(-396) resolved_memo=2(+0) intern_table=80274(+0) evictions=0 peak_rss=3935985664 +[p1-cohort] entry=50/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag' wall_ms=8653 resolve_ms=4771 eval_ms=753 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=397 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635250688 cgroup_memory_peak=4868771840 +[floor-drain] receipt: groups=50 typed_cache_peak=496 parse_cache_peak=493 resolved_memo_peak=2 intern_table_peak=80274 evictions=0 schedule_evictions=711 retention_unknown=0 peak_rss=3944873984 cap_entries=4000 +p1_cohort_probe: PASS total=414 skipped=0 failures=1 resolve_ms=118126.816 eval_ms=3261.415 +p1_cohort_probe: FAIL witness_observed_hostname_reads_typed_op_hermetic (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag) returned Bool(false) diff --git a/docs/probes/p1_retention_cohort_20260803T022255Z/mode_a_p1_lines.txt b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_a_p1_lines.txt new file mode 100644 index 00000000000..ec543a648d2 --- /dev/null +++ b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_a_p1_lines.txt @@ -0,0 +1,50 @@ +[p1-cohort] entry=1/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag' wall_ms=2409 resolve_ms=2372 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=10 graphs_evicted=1 process_rss=1799671808 cgroup_memory_current=2716196864 cgroup_memory_peak=4651859968 +[p1-cohort] entry=2/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag' wall_ms=1155 resolve_ms=1076 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=6 graphs_evicted=1 process_rss=1799671808 cgroup_memory_current=2716196864 cgroup_memory_peak=4651859968 +[p1-cohort] entry=3/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag' wall_ms=1175 resolve_ms=1090 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=5 graphs_evicted=1 process_rss=1799671808 cgroup_memory_current=2715918336 cgroup_memory_peak=4651859968 +[p1-cohort] entry=4/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag' wall_ms=1040 resolve_ms=1030 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2715885568 cgroup_memory_peak=4651859968 +[p1-cohort] entry=5/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag' wall_ms=1100 resolve_ms=1091 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2717966336 cgroup_memory_peak=4651859968 +[p1-cohort] entry=6/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag' wall_ms=1051 resolve_ms=1041 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2715844608 cgroup_memory_peak=4651859968 +[p1-cohort] entry=7/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag' wall_ms=928 resolve_ms=869 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2716037120 cgroup_memory_peak=4651859968 +[p1-cohort] entry=8/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag' wall_ms=973 resolve_ms=912 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2715906048 cgroup_memory_peak=4651859968 +[p1-cohort] entry=9/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag' wall_ms=987 resolve_ms=925 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=7 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2716176384 cgroup_memory_peak=4651859968 +[p1-cohort] entry=10/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag' wall_ms=1768 resolve_ms=1728 eval_ms=6 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=18 graphs_evicted=1 process_rss=1799675904 cgroup_memory_current=2717057024 cgroup_memory_peak=4651859968 +[p1-cohort] entry=11/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag' wall_ms=13131 resolve_ms=12843 eval_ms=155 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2427908096 cgroup_memory_current=3345248256 cgroup_memory_peak=4651859968 +[p1-cohort] entry=12/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag' wall_ms=991 resolve_ms=984 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2427908096 cgroup_memory_current=3345260544 cgroup_memory_peak=4651859968 +[p1-cohort] entry=13/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag' wall_ms=1153 resolve_ms=1072 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=2434539520 cgroup_memory_current=3351814144 cgroup_memory_peak=4651859968 +[p1-cohort] entry=14/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag' wall_ms=1187 resolve_ms=1161 eval_ms=6 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2440097792 cgroup_memory_current=3357573120 cgroup_memory_peak=4651859968 +[p1-cohort] entry=15/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag' wall_ms=1064 resolve_ms=1051 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2494459904 cgroup_memory_current=3411836928 cgroup_memory_peak=4651859968 +[p1-cohort] entry=16/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag' wall_ms=1036 resolve_ms=966 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2547367936 cgroup_memory_current=3465035776 cgroup_memory_peak=4651859968 +[p1-cohort] entry=17/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag' wall_ms=1001 resolve_ms=993 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2549989376 cgroup_memory_current=3467673600 cgroup_memory_peak=4651859968 +[p1-cohort] entry=18/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag' wall_ms=3669 resolve_ms=3594 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=2756497408 cgroup_memory_current=3674443776 cgroup_memory_peak=4651859968 +[p1-cohort] entry=19/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag' wall_ms=1060 resolve_ms=1044 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2756497408 cgroup_memory_current=3674447872 cgroup_memory_peak=4651859968 +[p1-cohort] entry=20/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag' wall_ms=1104 resolve_ms=1032 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2809524224 cgroup_memory_current=3728437248 cgroup_memory_peak=4651859968 +[p1-cohort] entry=21/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag' wall_ms=2698 resolve_ms=2628 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=2898235392 cgroup_memory_current=3816665088 cgroup_memory_peak=4651859968 +[p1-cohort] entry=22/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag' wall_ms=1702 resolve_ms=1569 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=2943299584 cgroup_memory_current=3861716992 cgroup_memory_peak=4651859968 +[p1-cohort] entry=23/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag' wall_ms=1382 resolve_ms=1257 eval_ms=15 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=2943303680 cgroup_memory_current=3861987328 cgroup_memory_peak=4651859968 +[p1-cohort] entry=24/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag' wall_ms=1594 resolve_ms=1552 eval_ms=9 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=2943303680 cgroup_memory_current=3861803008 cgroup_memory_peak=4651859968 +[p1-cohort] entry=25/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag' wall_ms=1491 resolve_ms=1375 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=7 graphs_evicted=1 process_rss=3008028672 cgroup_memory_current=3926777856 cgroup_memory_peak=4651859968 +[p1-cohort] entry=26/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag' wall_ms=1293 resolve_ms=1269 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3008028672 cgroup_memory_current=3927207936 cgroup_memory_peak=4651859968 +[p1-cohort] entry=27/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag' wall_ms=2419 resolve_ms=2194 eval_ms=37 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3120955392 cgroup_memory_current=4039725056 cgroup_memory_peak=4651859968 +[p1-cohort] entry=28/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag' wall_ms=1104 resolve_ms=1028 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4039741440 cgroup_memory_peak=4651859968 +[p1-cohort] entry=29/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag' wall_ms=2315 resolve_ms=2095 eval_ms=35 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4039753728 cgroup_memory_peak=4651859968 +[p1-cohort] entry=30/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag' wall_ms=1078 resolve_ms=993 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=5 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4039798784 cgroup_memory_peak=4651859968 +[p1-cohort] entry=31/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag' wall_ms=1257 resolve_ms=1228 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=3120959488 cgroup_memory_current=4040024064 cgroup_memory_peak=4651859968 +[p1-cohort] entry=32/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag' wall_ms=11368 resolve_ms=10378 eval_ms=710 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3685371904 cgroup_memory_current=4605317120 cgroup_memory_peak=4651859968 +[p1-cohort] entry=33/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag' wall_ms=1084 resolve_ms=1012 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3685687296 cgroup_memory_current=4605751296 cgroup_memory_peak=4651859968 +[p1-cohort] entry=34/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag' wall_ms=1140 resolve_ms=1070 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3685687296 cgroup_memory_current=4605710336 cgroup_memory_peak=4651859968 +[p1-cohort] entry=35/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/build_cache_placement_observation_test.dag' wall_ms=13992 resolve_ms=13197 eval_ms=7 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=132 graphs_evicted=1 process_rss=3944873984 cgroup_memory_current=4865286144 cgroup_memory_peak=4866609152 +[p1-cohort] entry=36/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/builtin_get_resolver_test.dag' wall_ms=1774 resolve_ms=1636 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634624000 cgroup_memory_peak=4868771840 +[p1-cohort] entry=37/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/busybox_bmc_build_witness_test.dag' wall_ms=1504 resolve_ms=1337 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=9 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634611712 cgroup_memory_peak=4868771840 +[p1-cohort] entry=38/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_key_completeness_test.dag' wall_ms=2062 resolve_ms=1896 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=4 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635201536 cgroup_memory_peak=4868771840 +[p1-cohort] entry=39/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_layer_planner_test.dag' wall_ms=1536 resolve_ms=1407 eval_ms=4 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=8 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635443200 cgroup_memory_peak=4868771840 +[p1-cohort] entry=40/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cache_purity_verdict_test.dag' wall_ms=1336 resolve_ms=1242 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635521024 cgroup_memory_peak=4868771840 +[p1-cohort] entry=41/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/card_intake_risk_witness_test.dag' wall_ms=1842 resolve_ms=1688 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=14 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635209728 cgroup_memory_peak=4868771840 +[p1-cohort] entry=42/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_target_path_witness_test.dag' wall_ms=1358 resolve_ms=1315 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635205632 cgroup_memory_peak=4868771840 +[p1-cohort] entry=43/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cargo_version_witness_test.dag' wall_ms=1281 resolve_ms=1124 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=3 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635201536 cgroup_memory_peak=4868771840 +[p1-cohort] entry=44/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/cheap_gate_pool_test.dag' wall_ms=1700 resolve_ms=1607 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=16 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635455488 cgroup_memory_peak=4868771840 +[p1-cohort] entry=45/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/check_coverage_admission_witness_test.dag' wall_ms=3081 resolve_ms=2795 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635201536 cgroup_memory_peak=4868771840 +[p1-cohort] entry=46/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_budget_tree_witness_test.dag' wall_ms=3564 resolve_ms=3255 eval_ms=4 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=2 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635557888 cgroup_memory_peak=4868771840 +[p1-cohort] entry=47/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_compile_jobs_witness_test.dag' wall_ms=5677 resolve_ms=5022 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=13 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634603520 cgroup_memory_peak=4868771840 +[p1-cohort] entry=48/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_concurrency_policy_witness_test.dag' wall_ms=5772 resolve_ms=4566 eval_ms=693 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634607616 cgroup_memory_peak=4868771840 +[p1-cohort] entry=49/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_target_host_witness_test.dag' wall_ms=5802 resolve_ms=4720 eval_ms=748 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=1 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4634894336 cgroup_memory_peak=4868771840 +[p1-cohort] entry=50/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/ci_deploy_witness_test.dag' wall_ms=8653 resolve_ms=4771 eval_ms=753 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=397 graphs_evicted=1 process_rss=3935985664 cgroup_memory_current=4635250688 cgroup_memory_peak=4868771840 diff --git a/docs/probes/p1_retention_cohort_20260803T022255Z/mode_b_p1_lines.txt b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_b_p1_lines.txt new file mode 100644 index 00000000000..99361abade6 --- /dev/null +++ b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_b_p1_lines.txt @@ -0,0 +1,34 @@ +[p1-cohort] entry=1/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag' wall_ms=2247 resolve_ms=2236 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2733309952 cgroup_memory_peak=4868771840 +[p1-cohort] entry=2/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag' wall_ms=1024 resolve_ms=1019 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2757525504 cgroup_memory_peak=4868771840 +[p1-cohort] entry=3/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag' wall_ms=1009 resolve_ms=1001 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2736050176 cgroup_memory_peak=4868771840 +[p1-cohort] entry=4/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag' wall_ms=991 resolve_ms=987 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2735022080 cgroup_memory_peak=4868771840 +[p1-cohort] entry=5/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag' wall_ms=1062 resolve_ms=1058 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799704576 cgroup_memory_current=2735718400 cgroup_memory_peak=4868771840 +[p1-cohort] entry=6/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag' wall_ms=1106 resolve_ms=1101 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1838747648 cgroup_memory_current=2790842368 cgroup_memory_peak=4868771840 +[p1-cohort] entry=7/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag' wall_ms=942 resolve_ms=939 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1896140800 cgroup_memory_current=2986872832 cgroup_memory_peak=4868771840 +[p1-cohort] entry=8/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag' wall_ms=953 resolve_ms=949 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1956306944 cgroup_memory_current=3049431040 cgroup_memory_peak=4868771840 +[p1-cohort] entry=9/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag' wall_ms=956 resolve_ms=953 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2016628736 cgroup_memory_current=3110096896 cgroup_memory_peak=4868771840 +[p1-cohort] entry=10/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag' wall_ms=1750 resolve_ms=1735 eval_ms=6 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2123771904 cgroup_memory_current=3218231296 cgroup_memory_peak=4868771840 +[p1-cohort] entry=11/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag' wall_ms=12397 resolve_ms=12186 eval_ms=147 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2812178432 cgroup_memory_current=3774275584 cgroup_memory_peak=4868771840 +[p1-cohort] entry=12/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag' wall_ms=953 resolve_ms=948 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2850906112 cgroup_memory_current=3941482496 cgroup_memory_peak=4868771840 +[p1-cohort] entry=13/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag' wall_ms=1061 resolve_ms=1053 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2921746432 cgroup_memory_current=4148674560 cgroup_memory_peak=4868771840 +[p1-cohort] entry=14/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag' wall_ms=1153 resolve_ms=1140 eval_ms=5 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2997350400 cgroup_memory_current=4350750720 cgroup_memory_peak=4868771840 +[p1-cohort] entry=15/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag' wall_ms=1058 resolve_ms=1050 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3064242176 cgroup_memory_current=4490797056 cgroup_memory_peak=4868771840 +[p1-cohort] entry=16/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag' wall_ms=938 resolve_ms=931 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3124707328 cgroup_memory_current=4610211840 cgroup_memory_peak=4868771840 +[p1-cohort] entry=17/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag' wall_ms=966 resolve_ms=962 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3188400128 cgroup_memory_current=4830883840 cgroup_memory_peak=4868771840 +[p1-cohort] entry=18/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag' wall_ms=3393 resolve_ms=3363 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3399405568 cgroup_memory_current=5038252032 cgroup_memory_peak=5038252032 +[p1-cohort] entry=19/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag' wall_ms=1042 resolve_ms=1035 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3461226496 cgroup_memory_current=5116649472 cgroup_memory_peak=5116649472 +[p1-cohort] entry=20/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag' wall_ms=991 resolve_ms=985 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3525201920 cgroup_memory_current=5188435968 cgroup_memory_peak=5188435968 +[p1-cohort] entry=21/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag' wall_ms=2563 resolve_ms=2530 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3677237248 cgroup_memory_current=5357420544 cgroup_memory_peak=5357420544 +[p1-cohort] entry=22/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag' wall_ms=1597 resolve_ms=1568 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3770335232 cgroup_memory_current=5485629440 cgroup_memory_peak=5485629440 +[p1-cohort] entry=23/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag' wall_ms=1349 resolve_ms=1322 eval_ms=15 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3857342464 cgroup_memory_current=5596717056 cgroup_memory_peak=5596717056 +[p1-cohort] entry=24/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag' wall_ms=1602 resolve_ms=1579 eval_ms=9 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3958906880 cgroup_memory_current=5730258944 cgroup_memory_peak=5730258944 +[p1-cohort] entry=25/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag' wall_ms=1422 resolve_ms=1408 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4051619840 cgroup_memory_current=5865299968 cgroup_memory_peak=5865299968 +[p1-cohort] entry=26/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag' wall_ms=1334 resolve_ms=1321 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4134862848 cgroup_memory_current=6005403648 cgroup_memory_peak=6005403648 +[p1-cohort] entry=27/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag' wall_ms=2307 resolve_ms=2233 eval_ms=37 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4280246272 cgroup_memory_current=6250598400 cgroup_memory_peak=6250598400 +[p1-cohort] entry=28/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag' wall_ms=1060 resolve_ms=1054 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4339548160 cgroup_memory_current=6360211456 cgroup_memory_peak=6360211456 +[p1-cohort] entry=29/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag' wall_ms=2104 resolve_ms=2038 eval_ms=33 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4481581056 cgroup_memory_current=6614548480 cgroup_memory_peak=6614548480 +[p1-cohort] entry=30/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag' wall_ms=1021 resolve_ms=1013 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4543787008 cgroup_memory_current=6736609280 cgroup_memory_peak=6736609280 +[p1-cohort] entry=31/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag' wall_ms=1201 resolve_ms=1192 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4620443648 cgroup_memory_current=6877585408 cgroup_memory_peak=6877585408 +[p1-cohort] entry=32/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag' wall_ms=10737 resolve_ms=9911 eval_ms=683 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=5278642176 cgroup_memory_current=7972581376 cgroup_memory_peak=7972581376 +[p1-cohort] entry=33/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag' wall_ms=955 resolve_ms=951 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=5279023104 cgroup_memory_current=7996436480 cgroup_memory_peak=7996436480 +[p1-cohort] entry=34/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag' wall_ms=913 resolve_ms=908 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=5332787200 cgroup_memory_current=8073814016 cgroup_memory_peak=8073814016 diff --git a/docs/probes/p1_retention_cohort_20260803T022255Z/mode_b_retain_all.log b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_b_retain_all.log new file mode 100644 index 00000000000..1bd7375e5d0 --- /dev/null +++ b/docs/probes/p1_retention_cohort_20260803T022255Z/mode_b_retain_all.log @@ -0,0 +1,400 @@ +p1_cohort_probe: 50 explicit cohort entr(y/ies), source_roots=["/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag", "/home/briansrls/.worktrees/gunbc/valiant-deer-205/src/v2"] +◷ governor adaptive width — budget=33578549248 source=cgroup memory.max (/sys/fs/cgroup/) max_width=128 sensors=/sys/fs/cgroup/ +[calibration] roster_import_closure_nodes=711 rows=414 (loader both-closure union, pre-resolve, no resolve/typecheck; pairs with the floor cgroup memory.peak steps — on a killed run this line plus the last [gantt] rss_mib sample are the lower-bound receipt) +◐ started compile.frontend +✓ compile.frontend done in 126ms +✓ compile.normalize done in 17ms +✓ compile.reconcile done in 353ms +✓ compile.analyses done in 10ms +02:28:17.266 [affected-set] selection off — running all 414 witness(es) across 50 entr(y/ies) +run_discovery_corpus: adaptive pool over 50 entry-group(s), 414 row(s) (governor target_width=1) +run_discovery_corpus: width=1 inline drain — reusing process_shared_index (no worker duplicate index) +run_discovery_corpus: cross_worker_store withheld (governor target_width=1) — per-index typed cache until width > 1 +[floor-drain] SCHEDULE-RETENTION EVICTION DISABLED (GUNBC_SCHEDULE_RETENTION_EVICT=0): arming + counting only, dropping NOTHING — the retain-all measurement pole (pre-M2 process-lifetime retention). schedule_evictions will be 0 BY CONSTRUCTION; unset the env to restore eviction. +[floor-drain] schedule-retention ARMED: entries=50 modules_refcounted=711 evict_enabled=false +02:28:20.807 PASS accelerator_demo_execution_lane_witnesses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag leg=InterpretedLeg) 3.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=76 resolved_graphs=3 +[floor-drain] group=1/50 typed_cache=76(+58) parse_cache=76(+58) resolved_memo=3(+1) intern_table=80274(+0) evictions=0 peak_rss=1799700480 +[p1-cohort] entry=1/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_execution_witness_test.dag' wall_ms=2247 resolve_ms=2236 eval_ms=3 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2733309952 cgroup_memory_peak=4868771840 +02:28:21.832 PASS accelerator_demo_gpu_modeling_witnesses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag leg=InterpretedLeg) 1.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=82 resolved_graphs=4 +[floor-drain] group=2/50 typed_cache=82(+6) parse_cache=82(+6) resolved_memo=4(+1) intern_table=80274(+0) evictions=0 peak_rss=1799700480 +[p1-cohort] entry=2/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_gpu_witness_test.dag' wall_ms=1024 resolve_ms=1019 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2757525504 cgroup_memory_peak=4868771840 +02:28:22.842 PASS accelerator_demo_modeling_lane_witnesses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag leg=InterpretedLeg) 0.8ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=83 resolved_graphs=5 +[floor-drain] group=3/50 typed_cache=83(+1) parse_cache=83(+1) resolved_memo=5(+1) intern_table=80274(+0) evictions=0 peak_rss=1799700480 +[p1-cohort] entry=3/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/accelerator_demo_model_witness_test.dag' wall_ms=1009 resolve_ms=1001 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2736050176 cgroup_memory_peak=4868771840 +02:28:23.835 PASS iam_external_source_denies (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.2ms +02:28:23.835 PASS iam_internal_prefix_mfa_permits (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.1ms +02:28:23.835 PASS iam_no_mfa_denies (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.0ms +02:28:23.835 PASS iam_wrong_prefix_denies (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=89 resolved_graphs=6 +[floor-drain] group=4/50 typed_cache=89(+6) parse_cache=89(+6) resolved_memo=6(+1) intern_table=80274(+0) evictions=0 peak_rss=1799700480 +[p1-cohort] entry=4/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_iam_validation_test.dag' wall_ms=991 resolve_ms=987 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799700480 cgroup_memory_current=2735022080 cgroup_memory_peak=4868771840 +02:28:24.897 PASS bmc_least_privilege_via_rbac_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag leg=InterpretedLeg) 0.5ms +02:28:24.898 PASS posix_root_identification_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=98 resolved_graphs=7 +[floor-drain] group=5/50 typed_cache=98(+9) parse_cache=98(+9) resolved_memo=7(+1) intern_table=80274(+0) evictions=0 peak_rss=1799704576 +[p1-cohort] entry=5/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_layer_extension_witness_test.dag' wall_ms=1062 resolve_ms=1058 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1799704576 cgroup_memory_current=2735718400 cgroup_memory_peak=4868771840 +02:28:26.003 PASS auth_deficit_failure_classifies_interactive_upsert (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:26.004 PASS empty_stderr_failure_classifies_refuse_not_upsert (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:26.004 PASS infrastructure_failure_classifies_refuse_not_upsert (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:26.004 PASS successful_print_classifies_ready (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=107 resolved_graphs=8 +[floor-drain] group=6/50 typed_cache=107(+9) parse_cache=107(+9) resolved_memo=8(+1) intern_table=80274(+0) evictions=0 peak_rss=1838747648 +[p1-cohort] entry=6/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_token_ensure_witness_test.dag' wall_ms=1106 resolve_ms=1101 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1838747648 cgroup_memory_current=2790842368 cgroup_memory_peak=4868771840 +02:28:26.947 PASS posix_group_can_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:28:26.947 PASS posix_other_cannot_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:28:26.947 PASS posix_owner_can_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.0ms +02:28:26.947 PASS posix_owner_cannot_execute (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:28:26.947 PASS rbac_editor_can_write (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.2ms +02:28:26.947 PASS rbac_viewer_can_read (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +02:28:26.948 PASS rbac_viewer_cannot_write (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=108 resolved_graphs=9 +[floor-drain] group=7/50 typed_cache=108(+1) parse_cache=108(+1) resolved_memo=9(+1) intern_table=80274(+0) evictions=0 peak_rss=1896140800 +[p1-cohort] entry=7/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/access_validation_test.dag' wall_ms=942 resolve_ms=939 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1896140800 cgroup_memory_current=2986872832 cgroup_memory_peak=4868771840 +02:28:27.900 PASS w_exact_fraction_is_authority_and_floor_is_lossy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:27.900 PASS w_red_empty_funnel_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:27.900 PASS w_red_first_invalid_stage_wins (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:27.900 PASS w_red_floor_projection_refuses_hand_built_zero_converted_forecast (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:27.901 PASS w_red_rate_above_unity_refuses_naming_the_stage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:27.901 PASS w_red_unknown_scenario_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:27.901 PASS w_red_zero_cohort_refuses_naming_the_stage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:27.901 PASS w_red_zero_entry_unit_cost_refuses (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:27.901 PASS w_red_zero_numerator_refuses_naming_the_stage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:27.901 PASS w_two_step_funnel_composes_exact_fraction_and_cost (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=110 resolved_graphs=10 +[floor-drain] group=8/50 typed_cache=110(+2) parse_cache=110(+2) resolved_memo=10(+1) intern_table=80274(+0) evictions=0 peak_rss=1956306944 +[p1-cohort] entry=8/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/acquisition_mechanism_witness_test.dag' wall_ms=953 resolve_ms=949 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=1956306944 cgroup_memory_current=3049431040 cgroup_memory_peak=4868771840 +02:28:28.857 PASS w_google_billable_unit_catalog_is_total_and_wire_labeled (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:28.857 PASS w_google_media_rate_is_auction_determined_with_mechanism_citation (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:28.857 PASS w_google_strategy_roster_is_the_verbatim_thirteen (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:28.857 PASS w_meta_bid_strategy_catalog_is_total_with_verbatim_wire_values (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:28.858 PASS w_meta_billing_event_catalog_is_total_with_verbatim_wire_values (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:28.858 PASS w_meta_media_rate_is_auction_determined (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:28.858 PASS w_meta_optimization_goal_axis_is_distinct_and_transcribed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:28.858 PASS w_red_answer_arm_and_ignorance_arm_stay_distinct (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:28.858 PASS w_red_meta_minimum_budget_rate_refuses_with_cause (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=117 resolved_graphs=11 +[floor-drain] group=9/50 typed_cache=117(+7) parse_cache=117(+7) resolved_memo=11(+1) intern_table=80274(+0) evictions=0 peak_rss=2016628736 +[p1-cohort] entry=9/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/advertising_interface_witness_test.dag' wall_ms=956 resolve_ms=953 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2016628736 cgroup_memory_current=3110096896 cgroup_memory_peak=4868771840 +02:28:30.605 PASS census_closure_frontier_rows_count_is_twenty_one (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 4.2ms +02:28:30.606 PASS census_closure_frontier_rows_well_formed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:30.607 PASS frontier_expiry_fired_row_still_present_reds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.6ms +02:28:30.607 PASS frontier_expiry_fired_trigger_absent_from_rows_is_clean (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.6ms +02:28:30.607 PASS frontier_expiry_fold_reports_all_unfired_when_no_fired_registry (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag leg=InterpretedLeg) 0.3ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=155 resolved_graphs=12 +[floor-drain] group=10/50 typed_cache=155(+38) parse_cache=155(+38) resolved_memo=12(+1) intern_table=80274(+0) evictions=0 peak_rss=2123771904 +[p1-cohort] entry=10/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/annotation_carrier_witness_test.dag' wall_ms=1750 resolve_ms=1735 eval_ms=6 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2123771904 cgroup_memory_current=3218231296 cgroup_memory_peak=4868771840 +02:28:42.901 PASS anomaly_absent_reason_phrase_has_one_spelling (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 65.4ms +02:28:42.901 PASS anomaly_cleanup_refusal_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:42.901 PASS anomaly_dispatch_answer_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.901 PASS anomaly_instance_label_keeps_both_halves (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.901 PASS anomaly_producer_red_on_surface_without_callers (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:42.901 PASS anomaly_reason_empty_text_removes_the_line (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.901 PASS anomaly_reason_is_a_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:42.901 PASS anomaly_reason_red_on_title_only (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.982 PASS anomaly_reason_surface_is_styled (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 81.1ms +02:28:42.982 PASS anomaly_stage_accessible_name_keeps_label_and_state (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.983 PASS anomaly_title_stays_a_convenience (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:42.983 PASS anomaly_unreadable_answer_does_not_name_the_network (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.983 PASS anomaly_unreadable_answer_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:42.983 PASS anomaly_workflow_refusal_reason_survives_concatenation (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.983 PASS anomaly_workflow_segment_falls_closed_on_empty_detail (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:42.983 PASS anomaly_workflow_segment_reaches_the_surface (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=310 resolved_graphs=13 +[floor-drain] group=11/50 typed_cache=310(+155) parse_cache=307(+152) resolved_memo=13(+1) intern_table=80274(+0) evictions=0 peak_rss=2812178432 +[p1-cohort] entry=11/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/anomaly_evidence_witness_test.dag' wall_ms=12397 resolve_ms=12186 eval_ms=147 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2812178432 cgroup_memory_current=3774275584 cgroup_memory_peak=4868771840 +02:28:43.961 PASS shell_quote_apostrophe_render_reopens_single_quote_context (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:43.961 PASS shell_quote_escapes_embedded_apostrophe (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:43.961 PASS shell_quote_plain_args_single_quoted (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=312 resolved_graphs=14 +[floor-drain] group=12/50 typed_cache=312(+2) parse_cache=309(+2) resolved_memo=14(+1) intern_table=80274(+0) evictions=0 peak_rss=2850906112 +[p1-cohort] entry=12/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/argv_command_render_witness_test.dag' wall_ms=953 resolve_ms=948 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2850906112 cgroup_memory_current=3941482496 cgroup_memory_peak=4868771840 +02:28:45.022 PASS artifact_store_scratch_grant_admits_gunbc_tmp_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.8ms +02:28:45.022 PASS artifact_store_scratch_grant_refusal_is_located (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:45.022 PASS artifact_store_scratch_grant_refuses_gunbc_prefix_without_separator_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:45.023 PASS artifact_store_scratch_grant_refuses_non_gunbc_tmp_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:45.023 PASS artifact_store_scratch_grant_refuses_repo_tree_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=315 resolved_graphs=15 +[floor-drain] group=13/50 typed_cache=315(+3) parse_cache=312(+3) resolved_memo=15(+1) intern_table=80274(+0) evictions=0 peak_rss=2921746432 +[p1-cohort] entry=13/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_scratch_grant_witness_test.dag' wall_ms=1061 resolve_ms=1053 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2921746432 cgroup_memory_current=4148674560 cgroup_memory_peak=4868771840 +02:28:46.171 PASS derived_aggregate_matches_legacy_aggregate_for_unchanged_build (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:46.172 PASS native_realization_environment_change_cold_rebuild_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 1.0ms +02:28:46.173 PASS native_realization_toolchain_change_cold_rebuild_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.9ms +02:28:46.173 PASS observed_tool_identity_missing_and_duplicate_refuse (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:46.174 PASS resolved_build_context_identity_refuses_sha256_observed_tool (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.6ms +02:28:46.175 PASS store_budget_evicts_least_recent_counted_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 1.2ms +02:28:46.175 PASS store_construction_reads_eviction_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:46.176 PASS store_hit_and_stale_never_served_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:46.176 PASS store_no_eviction_under_budget_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:46.176 PASS store_put_artifact_exactly_at_budget_is_admitted_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:46.176 PASS store_put_oversized_artifact_does_not_fit_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:46.176 PASS store_put_oversized_artifact_never_evicts_itself_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:46.177 PASS store_put_oversized_artifact_preserves_warm_rows_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag leg=InterpretedLeg) 0.3ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=318 resolved_graphs=16 +[floor-drain] group=14/50 typed_cache=318(+3) parse_cache=315(+3) resolved_memo=16(+1) intern_table=80274(+0) evictions=0 peak_rss=2997350400 +[p1-cohort] entry=14/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/artifact_store_witness_test.dag' wall_ms=1153 resolve_ms=1140 eval_ms=5 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=2997350400 cgroup_memory_current=4350750720 cgroup_memory_peak=4868771840 +02:28:47.234 PASS live_probe_firmware_matches_shipped_catalog_row (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:47.235 PASS live_probe_redfish_virtual_media_absent_matches_catalog (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 1.1ms +02:28:47.236 PASS live_probe_rows_cover_vm_and_nbd_get_surfaces (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.8ms +02:28:47.236 PASS shipped_row_nbd_proxy_capability_requires_ws_dry_run_receipt (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:47.236 PASS srv3_live_bmc_host_is_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=323 resolved_graphs=17 +[floor-drain] group=15/50 typed_cache=323(+5) parse_cache=320(+5) resolved_memo=17(+1) intern_table=80274(+0) evictions=0 peak_rss=3064242176 +[p1-cohort] entry=15/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/asrock_live_probe_witness_test.dag' wall_ms=1058 resolve_ms=1050 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3064242176 cgroup_memory_current=4490797056 cgroup_memory_peak=4868771840 +02:28:48.173 PASS base64_decode_accepts_unpadded_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.7ms +02:28:48.173 PASS base64_decode_rejects_cross_variant_char_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:48.173 PASS base64_decode_rejects_interior_pad_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:48.173 PASS base64_decode_rejects_invalid_char_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:48.173 PASS base64_decode_rejects_lone_sextet_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:48.174 PASS base64_octet_roundtrip_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.7ms +02:28:48.175 PASS base64_rfc4648_golden_vectors_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:48.175 PASS base64url_alphabet_golden_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:48.175 PASS base64url_roundtrip_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:48.175 PASS bytes_octets_iso_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:48.175 PASS utf8_total_direction_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=324 resolved_graphs=18 +[floor-drain] group=16/50 typed_cache=324(+1) parse_cache=321(+1) resolved_memo=18(+1) intern_table=80274(+0) evictions=0 peak_rss=3124707328 +[p1-cohort] entry=16/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/base64_rfc4648_witness_test.dag' wall_ms=938 resolve_ms=931 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3124707328 cgroup_memory_current=4610211840 cgroup_memory_peak=4868771840 +02:28:49.142 PASS factory_published_password_promotes_to_basic_auth_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag leg=InterpretedLeg) 0.2ms +02:28:49.142 PASS gcp_access_payload_produces_basic_auth_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=329 resolved_graphs=19 +[floor-drain] group=17/50 typed_cache=329(+5) parse_cache=326(+5) resolved_memo=19(+1) intern_table=80274(+0) evictions=0 peak_rss=3188400128 +[p1-cohort] entry=17/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_auth_runtime_secret_seam_test.dag' wall_ms=966 resolve_ms=962 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3188400128 cgroup_memory_current=4830883840 cgroup_memory_peak=4868771840 +02:28:52.532 PASS bootstrap_apis_derive_from_service_deps (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:52.532 PASS bootstrap_bindings_exclude_broad_roles (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:52.532 PASS bootstrap_bindings_least_privilege (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:52.532 PASS bootstrap_enables_only_required_apis (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=368 resolved_graphs=20 +[floor-drain] group=18/50 typed_cache=368(+39) parse_cache=365(+39) resolved_memo=20(+1) intern_table=80274(+0) evictions=0 peak_rss=3399405568 +[p1-cohort] entry=18/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_bootstrap_provision_witness_test.dag' wall_ms=3393 resolve_ms=3363 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3399405568 cgroup_memory_current=5038252032 cgroup_memory_peak=5038252032 +02:28:53.579 PASS altrad8ud_firmware_catalog_is_board_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:53.579 PASS catalog_has_no_redfish_vm_capable_firmware_today (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:53.579 PASS firmware_intent_match_crosses_as_typed_disposition (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:53.579 PASS firmware_wire_version_is_parsed_before_track_matching (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:53.579 PASS nbd_proxy_vm_capable_row_solves (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:53.579 PASS node_with_virtual_media_solves_direct (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:53.579 PASS redfish_vm_preferred_over_nbd_proxy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:53.579 PASS srv3_capabilities_are_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:53.579 PASS srv3_install_mechanism_is_nbd_proxy_after_dry_run (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:53.580 PASS update_only_row_without_vm_catalog_falls_to_pxe (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:53.580 PASS vm_capable_firmware_row_flips_to_update_path (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=370 resolved_graphs=21 +[floor-drain] group=19/50 typed_cache=370(+2) parse_cache=367(+2) resolved_memo=21(+1) intern_table=80274(+0) evictions=0 peak_rss=3461226496 +[p1-cohort] entry=19/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_capability_solve_witness_test.dag' wall_ms=1042 resolve_ms=1035 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3461226496 cgroup_memory_current=5116649472 cgroup_memory_peak=5116649472 +02:28:54.571 PASS bmc_factory_credential_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=371 resolved_graphs=22 +[floor-drain] group=20/50 typed_cache=371(+1) parse_cache=368(+1) resolved_memo=22(+1) intern_table=80274(+0) evictions=0 peak_rss=3525201920 +[p1-cohort] entry=20/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_factory_credential_witness_test.dag' wall_ms=991 resolve_ms=985 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3525201920 cgroup_memory_current=5188435968 cgroup_memory_peak=5188435968 +02:28:57.129 PASS backup_manifest_identity_is_derived_from_every_manifest_field (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 11.7ms +02:28:57.130 PASS bounded_monitoring_completion_carries_the_admitted_bound (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 1.0ms +02:28:57.130 PASS delayed_temperature_rise_is_seen_inside_the_bounded_window (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:57.131 PASS digest_mismatched_backup_manifest_is_not_admitted (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:57.131 PASS duty_curve_cannot_fall_after_reaching_emergency_full_duty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:57.131 PASS empty_monitoring_window_cannot_claim_completion (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:57.131 PASS identical_bmc_on_wrong_endpoint_is_not_exact_target (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:57.131 PASS one_late_sample_cannot_claim_monitoring_coverage (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:57.131 PASS semantically_equal_but_digest_different_config_is_not_live_exact (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:57.131 PASS short_monitoring_window_cannot_claim_completion (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:57.132 PASS stale_backup_manifest_generation_is_not_admitted (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:57.132 PASS sub_threshold_tach_is_a_discriminating_refusal (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:57.132 PASS successful_effect_survives_cleanup_failure_as_cleanup_debt (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:57.132 PASS threshold_satisfied_tach_is_not_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=390 resolved_graphs=23 +[floor-drain] group=21/50 typed_cache=390(+19) parse_cache=387(+19) resolved_memo=23(+1) intern_table=80274(+0) evictions=0 peak_rss=3677237248 +[p1-cohort] entry=21/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_fan_converge_witness_test.dag' wall_ms=2563 resolve_ms=2530 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3677237248 cgroup_memory_current=5357420544 cgroup_memory_peak=5357420544 +02:28:58.716 PASS absent_projected_digest_admitted_config_digest_is_unavailable (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:58.717 PASS approved_exact_firmware_artifact_builds_a_typed_srv3_update_plan (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 1.8ms +02:28:58.718 PASS bmc_fan_durability_refusal_reason_surfaces_generation_mismatch (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.718 PASS both_observed_thermal_query_shapes_are_complete (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.718 PASS both_update_services_are_observed_but_neither_exposes_a_backup_bmc_image (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.721 PASS converged_curve_and_installed_tach_topology_are_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 3.5ms +02:28:58.722 PASS converged_srv4_curve_without_topology_projection_refuses_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.722 PASS desired_curve_with_stale_uninstalled_fan_input_still_builds_apply_plan (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:58.722 PASS drifted_policy_applies_without_prior_durability_evidence (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:58.723 PASS drifted_srv4_curve_builds_typed_overlay_plan_only_with_exact_projection_and_persistence (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:58.723 PASS duplicate_srv4_durability_receipts_refuse_instead_of_first_wins (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.5ms +02:28:58.724 PASS every_metal_host_uses_the_single_global_bmc_valid_state (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:58.724 PASS firmware_classification_reuses_upsert_states_and_refuses_unapproved_update (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:58.724 PASS firmware_versions_share_curve_but_not_controller_shape (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:58.726 PASS fleet_curve_engages_cooling_early_and_reaches_full_before_continuous_limit (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 1.1ms +02:28:58.726 PASS fleet_quiet_curve_admits_srv4_active_config_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.726 PASS fleet_quiet_projected_config_digest_hex_authority_executes (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:58.726 PASS fleet_quiet_projected_config_digest_sha256_equality_executes (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.726 PASS fleet_quiet_temp_soc_curve_matches_projected_config_content_identity (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.726 PASS heterogeneous_firmware_satisfies_unpinned_intent_and_pinned_detects_mismatch (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.726 PASS linux_synchronized_publication_admits_commit_barrier (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.726 PASS linux_unsynchronized_publication_refuses_commit_barrier (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.726 PASS non_fleet_curve_admitted_config_digest_is_unavailable (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.726 PASS non_fleet_quiet_curve_projected_config_digest_is_unavailable (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.727 PASS projection_firmware_mismatch_refuses_a_322_projection_on_a_306_host (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:58.727 PASS reboot_durability_evidence_refuses_non_positive_interval (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.3ms +02:28:58.728 PASS reboot_durability_evidence_refuses_relabeled_perturbation_capability_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.6ms +02:28:58.728 PASS redfish_surface_difference_is_observed_not_inferred (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.728 PASS relabeled_reboot_construction_refusal_propagates_through_classification (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:58.729 PASS semantically_converged_live_digest_mismatch_refuses_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +02:28:58.729 PASS sensor_unavailable_uses_same_duty_but_retains_cause (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.729 PASS sensors_http_success_alone_is_incomplete_red_control (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.729 PASS srv3_fan_realization_refuses_without_a_modeled_projection (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.2ms +02:28:58.730 PASS srv4_bmc_reboot_persistence_receipt_proves_same_config_and_noop (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.5ms +02:28:58.730 PASS srv4_converged_observation_matches_projection_derived_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.730 PASS srv4_durability_admission_binds_projection_derived_digest (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.730 PASS srv4_durability_gate_preserves_typed_linkage_refusal_verdict (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.730 PASS srv4_fixture_durability_evidence_is_constructed_not_relabelled (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.730 PASS srv4_flash_overlay_is_observed_writable_and_live_overridden (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.1ms +02:28:58.730 PASS srv4_live_receipt_is_converged_quiet_and_failsafe_clear (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.0ms +02:28:58.731 PASS srv4_receipt_cannot_qualify_a_later_perturbation_generation (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.6ms +02:28:58.731 PASS temp_soc_curve_explains_the_audible_step (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag leg=InterpretedLeg) 0.4ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=391 resolved_graphs=24 +[floor-drain] group=22/50 typed_cache=391(+1) parse_cache=388(+1) resolved_memo=24(+1) intern_table=80274(+0) evictions=0 peak_rss=3770335232 +[p1-cohort] entry=22/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_firmware_thermal_witness_test.dag' wall_ms=1597 resolve_ms=1568 eval_ms=14 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3770335232 cgroup_memory_current=5485629440 cgroup_memory_peak=5485629440 +02:29:00.069 PASS convergence_receipt_binds_host_realizer_readback_and_live_health (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 1.6ms +02:29:00.069 PASS duty_curve_cannot_fall_after_reaching_full_duty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.3ms +02:29:00.069 PASS fan_curve_refuses_duty_above_full (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:00.069 PASS fan_curve_refuses_minimum_above_first_step (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:00.070 PASS firmware_and_redfish_surfaces_are_literal_versioned_observations (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:00.070 PASS observed_fan_curve_is_validated_before_use (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:00.070 PASS overlay_receipt_records_literal_mount_and_write_facts_only (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:00.074 PASS proc_mounts_parser_decodes_kernel_mount_escapes (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 4.4ms +02:29:00.077 PASS proc_mounts_parser_derives_literal_overlay_paths (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 2.8ms +02:29:00.081 PASS proc_mounts_parser_refuses_multi_lower_overlay (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 3.4ms +02:29:00.082 PASS proc_mounts_parser_refuses_relative_overlay_paths (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 1.4ms +02:29:00.083 PASS restart_receipt_binds_one_literal_perturbation_generation_and_readback (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.7ms +02:29:00.083 PASS update_surface_receipts_do_not_claim_an_available_backup_image (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=392 resolved_graphs=25 +[floor-drain] group=23/50 typed_cache=392(+1) parse_cache=389(+1) resolved_memo=25(+1) intern_table=80274(+0) evictions=0 peak_rss=3857342464 +[p1-cohort] entry=23/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_live_receipts_witness_test.dag' wall_ms=1349 resolve_ms=1322 eval_ms=15 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3857342464 cgroup_memory_current=5596717056 cgroup_memory_peak=5596717056 +02:29:01.678 PASS serve_command_one_shape_two_transports (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 1.2ms +02:29:01.681 PASS srv4_bmc_served_seed_carries_fleet_keys (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 3.6ms +02:29:01.683 PASS srv4_grub_cfg_boots_mirror_bulk_with_bmc_seed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 1.1ms +02:29:01.683 PASS srv4_http_boot_entry_targets_bmc (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 0.3ms +02:29:01.683 PASS srv4_scp_put_never_carries_a_second_forked_posture (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 0.5ms +02:29:01.684 PASS srv4_scp_put_uses_shared_ssh_posture_not_a_fork (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 0.5ms +02:29:01.686 PASS srv4_staging_manifest_stages_rendered_grub_and_seed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag leg=InterpretedLeg) 2.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=407 resolved_graphs=26 +[floor-drain] group=24/50 typed_cache=407(+15) parse_cache=404(+15) resolved_memo=26(+1) intern_table=80274(+0) evictions=0 peak_rss=3958906880 +[p1-cohort] entry=24/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_serve_witness_test.dag' wall_ms=1602 resolve_ms=1579 eval_ms=9 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=3958906880 cgroup_memory_current=5730258944 cgroup_memory_peak=5730258944 +02:29:03.110 PASS srv4_shell_boot_sequence_direct_kernel (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag leg=InterpretedLeg) 1.3ms +02:29:03.110 PASS srv4_tftpd_serve_command_grounded (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=410 resolved_graphs=27 +[floor-drain] group=25/50 typed_cache=410(+3) parse_cache=407(+3) resolved_memo=27(+1) intern_table=80274(+0) evictions=0 peak_rss=4051619840 +[p1-cohort] entry=25/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_netboot_shell_boot_witness_test.dag' wall_ms=1422 resolve_ms=1408 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4051619840 cgroup_memory_current=5865299968 cgroup_memory_peak=5865299968 +02:29:04.444 PASS account_password_body_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.4ms +02:29:04.445 PASS boot_override_body_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.7ms +02:29:04.445 PASS gcp_secret_full_name_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:04.445 PASS netrc_content_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:04.445 PASS reset_body_shape_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=414 resolved_graphs=28 +[floor-drain] group=26/50 typed_cache=414(+4) parse_cache=411(+4) resolved_memo=28(+1) intern_table=80274(+0) evictions=0 peak_rss=4134862848 +[p1-cohort] entry=26/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboard_body_witness_test.dag' wall_ms=1334 resolve_ms=1321 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4134862848 cgroup_memory_current=6005403648 cgroup_memory_peak=6005403648 +02:29:06.708 PASS bmc_credential_posture_hardens_to_keyless_steady_state (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:06.709 PASS bmc_decom_does_not_roundtrip_when_inverse_is_wrong (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.3ms +02:29:06.709 PASS bmc_decom_is_two_sided_inverse_on_phase_ladder (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:06.709 PASS bmc_decom_roundtrips_canonical_on_named_quotient (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:06.709 PASS bmc_lifecycle_fold_is_complete_and_monotone (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.3ms +02:29:06.710 PASS bmc_onboard_then_decom_recovers_factory_phase (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:06.710 PASS bmc_onboarding_lifecycle_is_linear_dag (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:06.746 PASS bmc_plan_steady_state_is_keyless_wif (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 35.9ms +02:29:06.746 PASS credential_probe_maps_to_correct_phase (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:06.746 PASS srv3_plan_starts_factory_default_at_192 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:06.746 PASS srv4_plan_targets_195_with_srv4_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=415 resolved_graphs=29 +[floor-drain] group=27/50 typed_cache=415(+1) parse_cache=412(+1) resolved_memo=29(+1) intern_table=80274(+0) evictions=0 peak_rss=4280246272 +[p1-cohort] entry=27/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag' wall_ms=2307 resolve_ms=2233 eval_ms=37 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4280246272 cgroup_memory_current=6250598400 cgroup_memory_peak=6250598400 +02:29:07.818 PASS bmc_redfish_grounding_holds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.6ms +02:29:07.818 PASS bmc_redfish_grounding_power_unread_is_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:07.818 PASS gibibyte_scale_factor_bytes_matches_memory_table (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:07.818 PASS memory_scale_factor_bytes_rejects_si_scale (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=418 resolved_graphs=30 +[floor-drain] group=28/50 typed_cache=418(+3) parse_cache=415(+3) resolved_memo=30(+1) intern_table=80274(+0) evictions=0 peak_rss=4339548160 +[p1-cohort] entry=28/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_redfish_grounding_witness_test.dag' wall_ms=1060 resolve_ms=1054 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4339548160 cgroup_memory_current=6360211456 cgroup_memory_peak=6360211456 +02:29:09.882 PASS bmc_allowlist_excludes_lockout_roles (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:09.883 PASS bmc_assimilator_least_privilege_two_scoped_roles (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:09.883 PASS bmc_assimilator_roles_within_closed_allowlist (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:09.915 PASS bmc_smoke_workflow_carries_no_pasted_key (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 32.8ms +02:29:09.916 PASS bmc_smoke_workflow_is_keyless_with_id_token_write (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:09.916 PASS bmc_wif_principal_set_pins_repo (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:09.916 PASS bmc_wif_provider_resource_is_well_formed (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=419 resolved_graphs=31 +[floor-drain] group=29/50 typed_cache=419(+1) parse_cache=416(+1) resolved_memo=31(+1) intern_table=80274(+0) evictions=0 peak_rss=4481581056 +[p1-cohort] entry=29/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_token_federation_witness_test.dag' wall_ms=2104 resolve_ms=2038 eval_ms=33 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4481581056 cgroup_memory_current=6614548480 cgroup_memory_peak=6614548480 +02:29:10.944 PASS disk_usage_transport_becomes_typed_byte_size (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:10.944 PASS duplicate_object_mapper_matches_remain_many (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.944 PASS empty_path_transport_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.944 PASS exit_one_path_probe_with_stderr_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.945 PASS exit_three_service_probe_with_stderr_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.945 PASS exit_zero_service_probe_requires_exact_active_token (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.945 PASS failed_sensor_projection_cannot_become_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS failed_service_state_is_preserved_in_refusal (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS failed_threshold_transport_cannot_become_threshold_unstated (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS false_path_probe_is_observed_not_transport_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS inactive_service_is_observed_not_transport_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS inconsistent_success_projection_is_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS multiple_nonempty_paths_are_refused (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.945 PASS nonzero_exit_cannot_become_observed_disk_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS nonzero_exit_cannot_become_observed_path_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS nonzero_exit_cannot_become_observed_time_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS nonzero_exit_cannot_become_observed_zone_when_success_flag_is_true (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS object_mapper_one_cardinality_is_preserved (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.945 PASS object_mapper_zero_cardinality_is_preserved (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.946 PASS path_transport_whitespace_becomes_one_typed_path (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:10.946 PASS ssh_failure_cannot_masquerade_as_false_path_probe (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.946 PASS successful_empty_sensor_projection_is_absent (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:10.946 PASS tach_at_controller_threshold_is_healthy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.946 PASS tach_below_controller_threshold_is_not_healthy (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.946 PASS tach_health_sensor_accessor_covers_every_arm (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.946 PASS utc_epoch_seconds_become_epoch_milliseconds (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.946 PASS wrong_busctl_type_cannot_become_zone_failsafe_bool (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:10.946 PASS zone_failsafe_transport_becomes_typed_bool (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=420 resolved_graphs=32 +[floor-drain] group=30/50 typed_cache=420(+1) parse_cache=417(+1) resolved_memo=32(+1) intern_table=80274(+0) evictions=0 peak_rss=4543787008 +[p1-cohort] entry=30/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_typed_operations_witness_test.dag' wall_ms=1021 resolve_ms=1013 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4543787008 cgroup_memory_current=6736609280 cgroup_memory_peak=6736609280 +02:29:12.147 PASS srv4_gadget_is_readonly_cdrom_on_nbd0 (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 2.2ms +02:29:12.148 PASS srv4_gadget_ops_are_typed_not_scraped_from_shell (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 0.4ms +02:29:12.148 PASS srv4_nbd_client_attaches_named_export (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:12.148 PASS srv4_nbd_export_read_only_seeded_iso (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag leg=InterpretedLeg) 0.1ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=430 resolved_graphs=33 +[floor-drain] group=31/50 typed_cache=430(+10) parse_cache=427(+10) resolved_memo=33(+1) intern_table=80274(+0) evictions=0 peak_rss=4620443648 +[p1-cohort] entry=31/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_virtual_media_witness_test.dag' wall_ms=1201 resolve_ms=1192 eval_ms=2 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=4620443648 cgroup_memory_current=6877585408 cgroup_memory_peak=6877585408 +02:29:22.142 PASS bmc_smoke_workflow_scopes_id_token_write_to_its_single_designated_job (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 29.5ms +02:29:22.144 PASS bootstrap_grants_zero_bindings_for_bmc_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 2.0ms +02:29:22.145 PASS chain_has_four_steps_in_delegation_order (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 1.3ms +02:29:22.145 PASS exchange_step_pins_repo_attribute_condition (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:22.146 PASS impersonation_step_targets_the_scoped_assimilator_sa (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:22.146 PASS legacy_binding_is_flagged_out_of_band_and_not_signed_by_this_pr (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:22.795 PASS main_ci_workflow_grants_no_id_token (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 649.2ms +02:29:22.796 PASS secret_access_step_targets_canary_not_bmc_secret (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 1.0ms +02:29:22.796 PASS secret_ref_login_handler_added_beside_factory_login_not_over_it (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:22.796 PASS secret_refs_are_free_of_credential_shaped_strings (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:22.796 PASS secret_refs_carry_no_hash_material_they_are_pending (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:22.796 PASS srv3_credential_path_is_an_enumerated_option_space_not_a_binding (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:22.796 PASS threat_model_names_both_read_capabilities (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:22.796 PASS unsigned_grant_row_count_matches_zero_derived_bindings (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=598 resolved_graphs=34 +[floor-drain] group=32/50 typed_cache=598(+168) parse_cache=595(+168) resolved_memo=34(+1) intern_table=80274(+0) evictions=0 peak_rss=5278642176 +[p1-cohort] entry=32/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/bmc_wif_delegation_chain_witness_test.dag' wall_ms=10737 resolve_ms=9911 eval_ms=683 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=5278642176 cgroup_memory_current=7972581376 cgroup_memory_peak=7972581376 +02:29:23.847 PASS branded_list_first_content_hash_method_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:23.847 PASS branded_list_first_content_hash_method_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.3ms +02:29:23.847 PASS branded_list_first_content_hash_pipe_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:23.847 PASS branded_list_first_content_hash_pipe_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:23.848 PASS branded_list_first_string_method_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:23.848 PASS branded_list_first_string_method_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:23.848 PASS branded_list_first_string_pipe_empty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:23.848 PASS branded_list_first_string_pipe_nonempty (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag leg=InterpretedLeg) 0.0ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=599 resolved_graphs=35 +[floor-drain] group=33/50 typed_cache=599(+1) parse_cache=596(+1) resolved_memo=35(+1) intern_table=80274(+0) evictions=0 peak_rss=5279023104 +[p1-cohort] entry=33/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/branded_list_first_optional_witness_test.dag' wall_ms=955 resolve_ms=951 eval_ms=0 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=5279023104 cgroup_memory_current=7996436480 cgroup_memory_peak=7996436480 +02:29:24.760 PASS witness_admission_is_construction (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.4ms +02:29:24.760 PASS witness_balance_states (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:24.760 PASS witness_conservation_residue_lens (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:24.760 PASS witness_divide_once (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +02:29:24.760 PASS witness_method_is_zero_based (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.0ms +02:29:24.760 PASS witness_reconcile_all_satisfied (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.3ms +02:29:24.761 PASS witness_reconcile_evicts_best_effort (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:24.761 PASS witness_reconcile_guaranteed_shortfall (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.1ms +02:29:24.761 PASS witness_tree_conservation_recursive (/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag leg=InterpretedLeg) 0.2ms +[floor-drain] schedule-retention: entry='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag' evicted_modules=0 evicted_graph=0 schedule_evictions=0 graph_evictions=0 retention_unknown=0 typed_cache=600 resolved_graphs=36 +[floor-drain] group=34/50 typed_cache=600(+1) parse_cache=597(+1) resolved_memo=36(+1) intern_table=80274(+0) evictions=0 peak_rss=5332787200 +[p1-cohort] entry=34/50 name='/home/briansrls/.worktrees/gunbc/valiant-deer-205/dag/test/claim/budget_tree_witness_test.dag' wall_ms=913 resolve_ms=908 eval_ms=1 schedule_cache_hit=0 resolved_graph_hit=0 modules_evicted=0 graphs_evicted=0 process_rss=5332787200 cgroup_memory_current=8073814016 cgroup_memory_peak=8073814016 +✓ typecheck gunbc.host_effect_realize done in 3 seconds diff --git a/docs/probes/run_frontier_probe_survey_per_module.sh b/docs/probes/run_frontier_probe_survey_per_module.sh new file mode 100755 index 00000000000..2214647e839 --- /dev/null +++ b/docs/probes/run_frontier_probe_survey_per_module.sh @@ -0,0 +1,121 @@ +#!/usr/bin/env bash +# SCAFFOLD — probe one-off beside docs/probes/curated_cargo_probe_one.sh (not a general scripts/ home). +# dissolve-on: ^migrate_when_frontier_per_module_probe_receipt_binds — floor-enrolled +# v2.workflow.frontier_probe_survey_transport runs the survey without this shell loop; delete +# this script when the transport + single-process survey path is green on CI hosts without OOM. +# Runtime-present: invokes frontier_probe_survey seed bin per module (not bash-emitted workflow). +set -euo pipefail +ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +cd "$ROOT" +BIN="$ROOT/target/debug/frontier_probe_survey" +SURVEY_DIR="$ROOT/target/frontier-probe-survey" +TSV="$SURVEY_DIR/frontier_probe_survey.tsv" +MANIFEST="$SURVEY_DIR/host_frontier_probe_survey_manifest.dag" +mkdir -p "$SURVEY_DIR" + +MODULES=( + "src/v2/compiler/03_normalize.dag" + "src/v2/compiler/03_resolve.dag" + "src/v2/compiler/03_name_resolve.dag" + "src/v2/compiler/emit_module.dag" + "src/v2/compiler/05_emit_orchestration.dag" + "src/v2/compiler/emit_semantic_decl.dag" + "src/v2/compiler/emit_host.dag" + "src/v2/compiler/emit_produced.dag" + "src/v2/compiler/03_body_producer.dag" + "src/v2/compiler/source_authority.dag" + "src/v2/compiler/program_assembly.dag" + "src/v2/compiler/00_compile.dag" + "src/v2/compiler/03_ingest.dag" + "src/v2/compiler/parse_engine_hooks.dag" + "src/v2/compiler/use_site_verdict.dag" + "src/v2/compiler/discovery_enumeration.dag" + "src/v2/compiler/01_tokenize.dag" + "src/v2/compiler/self_host.dag" + "src/v2/compiler/materialization_carriers.dag" + "src/v2/compiler/07_target_carriers.dag" + "src/v2/compiler/fold_lowering.dag" + "src/v2/compiler/04_infer.dag" + "src/v2/compiler/05_eval.dag" + "src/v2/compiler/06_translate.dag" + "src/v2/compiler/05_emit.dag" + "src/v2/compiler/program_partition.dag" + "src/v2/compiler/02_parse.dag" +) + +echo "module self_emit_ready blocker_class located_stage located_reason probe_error" > "$TSV" +failures=0 +for mod in "${MODULES[@]}"; do + echo "=== probing $mod ===" >&2 + rm -f "$SURVEY_DIR/tmp_row.tsv" + if ! CTRL_BUILD_BYPASS_SHIMS=1 "$BIN" \ + --source-root src/v2 \ + --module "$mod" \ + --survey-dir "$SURVEY_DIR" \ + --emit-survey-manifest "$SURVEY_DIR/tmp_manifest.dag" \ + --emit-tsv "$SURVEY_DIR/tmp_row.tsv" >"$SURVEY_DIR/tmp_probe.log" 2>&1 + then + echo "frontier_probe_survey refused for $mod (exit $?)" >&2 + tail -20 "$SURVEY_DIR/tmp_probe.log" >&2 + rm -f "$SURVEY_DIR/tmp_row.tsv" + failures=$((failures + 1)) + continue + fi + if [[ ! -f "$SURVEY_DIR/tmp_row.tsv" ]]; then + echo "frontier_probe_survey produced no row file for $mod" >&2 + failures=$((failures + 1)) + continue + fi + tail -n +2 "$SURVEY_DIR/tmp_row.tsv" >> "$TSV" +done + +if failures -ne 0; then + echo "survey refused: $failures module probe(s) failed — TSV not promoted to manifest" >&2 + exit 1 +fi + +python3 - "$TSV" "$MANIFEST" <<'PY' +import sys +from pathlib import Path + +tsv_path, manifest_path = sys.argv[1], sys.argv[2] +rows = [] +with open(tsv_path) as f: + f.readline() + for line in f: + parts = line.rstrip("\n").split("\t") + if len(parts) < 5: + continue + module, _, blocker, stage, reason = parts[:5] + rows.append((module, blocker, stage, reason)) + +def emit_receipt(module, blocker, stage, reason): + return ( + f"FrontierProbeReceipt {{\n" + f' module_path: "{module}",\n' + f" blocker_class: {blocker},\n" + f" located_stage: {stage},\n" + f" located_reason: {reason}\n" + f"}}" + ) + +lst = "Empty" +for module, blocker, stage, reason in reversed(rows): + head = emit_receipt(module, blocker, stage, reason) + lst = f"Cons {{\n head: {head},\n tail: {lst}\n}}" + +body = ( + "// GENERATED by docs/probes/run_frontier_probe_survey_per_module.sh\n" + "module v2.test.workflow.host_frontier_probe_survey_manifest\n\n" + "import v2.compiler.self_host.frontier_probe_types { FrontierProbeReceipt }\n" + "import v2.std.algebra { Cons, Empty }\n" + "import v2.std.collection { List }\n" + "import v2.std.logic { Int }\n\n" + f"data host_frontier_probe_survey_module_count: Int = {len(rows)}\n\n" + f"data host_frontier_probe_survey: List = {lst}\n" +) +Path(manifest_path).write_text(body) +print(f"wrote {manifest_path} ({len(rows)} receipts)") +PY + +echo "Survey complete: $MANIFEST" diff --git a/src/v1/04_method.dag b/src/v1/04_method.dag index be43fd351a6..7d2361ca535 100644 --- a/src/v1/04_method.dag +++ b/src/v1/04_method.dag @@ -171,7 +171,6 @@ fn builtin_function_registry() -> Map { let m = map_insert(m, "fallback_arm_census_total", int_type) let m = map_insert(m, "fallback_arm_census_reconciliation_holds", bool_type) let m = map_insert(m, "census_corpus_roots_follow_layer_authority", bool_type) - let m = map_insert(m, "interpreter_dispatch_arm_rows", list_of_type_variable(id: "interpreter_dispatch_arm_row_elem")) let m = map_insert(m, "transport_script_position_facts_for_path", list_of_type_variable(id: "transport_script_position_fact_elem")) let m = map_insert(m, "layer_import_facts", list_of_type_variable(id: "layer_import_fact_elem")) let m = map_insert(m, "import_resolution_facts", list_of_type_variable(id: "import_resolution_fact_elem")) diff --git a/src/v1/05_emit_rust.dag b/src/v1/05_emit_rust.dag index bd0882ad2af..2ddac2e58d2 100644 --- a/src/v1/05_emit_rust.dag +++ b/src/v1/05_emit_rust.dag @@ -2315,14 +2315,35 @@ fn emit_v2_std_text_closure_stub_module() -> TextFile { } } -fn emit_lib_rs_from_files(all_module_files: List, has_compiler_tests: Bool) -> TextFile { +fn lib_rs_mod_name_from_file(f: TextFile) -> String { let src_prefix_len = string_length(s: rust_source_root()) let ext_len = string_length(s: rust_source_ext()) - let mod_decls = all_module_files |> map(f => - let path_len = string_length(s: f.path) - let mod_name = substring(s: f.path, start: src_prefix_len, end: path_len - ext_len) + let path_len = string_length(s: f.path) + substring(s: f.path, start: src_prefix_len, end: path_len - ext_len) +} + +fn emit_lib_rs_mod_decl(mod_name: String) -> String { + if mod_name == "v1_interpreter_dispatch_generated" { + "#[macro_use]\npub mod v1_interpreter_dispatch_generated;" + } else { concat(rust_visibility_prefix(), rust_items().module_keyword, " ", mod_name, ";") - ) + } +} + +fn order_lib_rs_mod_names(mod_names: List) -> List { + let without_dispatch = mod_names |> filter(n => n != "v1_interpreter_dispatch_generated") + without_dispatch |> fold(init: [], f: fn(acc, name) { + if name == "v1_interpreter" { + concat(concat(acc, ["v1_interpreter_dispatch_generated"]), [name]) + } else { + concat(acc, [name]) + } + }) +} + +fn emit_lib_rs_from_files(all_module_files: List, has_compiler_tests: Bool) -> TextFile { + let mod_names = order_lib_rs_mod_names(mod_names: all_module_files |> map(lib_rs_mod_name_from_file)) + let mod_decls = mod_names |> map(emit_lib_rs_mod_decl) let hand_maintained_mods = if has_compiler_tests { generated_pub_mod_block diff --git a/src/v1/compiler_tests_rust.dag b/src/v1/compiler_tests_rust.dag index 61a8c14dcbf..42a80c4011b 100644 --- a/src/v1/compiler_tests_rust.dag +++ b/src/v1/compiler_tests_rust.dag @@ -340,8 +340,26 @@ fn ct_pipeline_test() -> String { " path: \"occurrence_sidecar_right.dag\".to_string(),\n", " content: \"module occurrence.sidecar_right\\nfn shared(x: Int) -> Int { x }\\n\".to_string(),\n", " });\n", + " let mut expected_source_indices = im::HashMap::new();\n", + " expected_source_indices.insert(\n", + " left_source.path.clone(),\n", + " crate::v1_std_core::build_newline_index(\n", + " left_source.path.clone(),\n", + " left_source.content.clone(),\n", + " ),\n", + " );\n", + " let expected_left = crate::v1_compiler_parse::parse_with_table_in_occurrence_scope(\n", + " crate::v1_compiler_tokenize::tokenize(\n", + " left_source.content.clone(),\n", + " left_source.path.clone(),\n", + " ),\n", + " std::rc::Rc::new(expected_source_indices),\n", + " crate::v1_std_core::empty_intern_table(),\n", + " crate::std_occurrence_identity::occurrence_id_allocator_initial(),\n", + " );\n", + " assert!(expected_left.result.error.is_none());\n", " let resolved = crate::v1_compiler_compile::compile_to_resolved(\n", - " std::rc::Rc::new(im::vector![left_source, right_source]),\n", + " std::rc::Rc::new(im::vector![left_source.clone(), right_source]),\n", " );\n", " let graph = resolved\n", " .graph\n", @@ -370,6 +388,17 @@ fn ct_pipeline_test() -> String { " .expect(\"deserialize typed module occurrence sidecar\");\n", " assert_eq!(&decoded_module, typed_module);\n", " }\n\n", + " let rebuilt_left = graph.modules.iter()\n", + " .filter_map(|typed_module| typed_module.occurrence_transport.as_ref())\n", + " .find(|transport| transport.index.entries.iter().any(|entry| {\n", + " entry.projection.diagnostic_span.file == left_source.path\n", + " }))\n", + " .expect(\"compiled left module must retain its occurrence sidecar\");\n", + " assert_eq!(\n", + " rebuilt_left,\n", + " &expected_left.occurrence_transport,\n", + " \"production reference rebuild must preserve exact sidecar ids and containment paths\"\n", + " );\n\n", " let graph_bytes = serde_json::to_vec(graph)\n", " .expect(\"serialize resolved graph occurrence sidecar\");\n", " let decoded_graph: std::rc::Rc =\n", diff --git a/src/v1/stage0/Cargo.toml b/src/v1/stage0/Cargo.toml index 68d57e8bc31..4a31e43ed37 100644 --- a/src/v1/stage0/Cargo.toml +++ b/src/v1/stage0/Cargo.toml @@ -191,6 +191,10 @@ path = "src/bin/bootstrap_witness.rs" name = "floor_skip_discovery_witness" path = "src/bin/floor_skip_discovery_witness.rs" +[[bin]] +name = "p1_cohort_probe" +path = "src/bin/p1_cohort_probe.rs" + # Host-physics CI witness: regen self-host fixed-point affected-set skip. Prints # regen_not_affected_skip | run_regen for the generated ci regen step by intersecting # the merge-base diff with the [src/v1, dag] regen input closure (shared authority diff --git a/src/v1/stage0/src/bin/claim_executor.rs b/src/v1/stage0/src/bin/claim_executor.rs index 7f25438bced..b4bf88f5f09 100644 --- a/src/v1/stage0/src/bin/claim_executor.rs +++ b/src/v1/stage0/src/bin/claim_executor.rs @@ -14,13 +14,14 @@ use v1_compiler::cli_run::{ compute_histogram_data, enable_floor_compile_clean_lazy_install, heartbeat_feed_enter_batch, heartbeat_feed_entry_completed, heartbeat_feed_snapshot, install_floor_compile_clean_receipt, make_eval_context, project_witness_cost_receipt, record_resolution_divergence_phase, - reset_resolution_divergence_phase_receipt, resolution_divergence_parent_plan_capture_begin, + render_selection_degradation_receipt_body, reset_resolution_divergence_phase_receipt, + resolution_divergence_parent_plan_capture_begin, resolution_divergence_parent_plan_capture_finish, resolve_entry_graph, resolve_entry_graph_shared, run_claim, run_discovery_corpus_with_options, run_value, set_phase, top_n_slowest_witnesses, BudgetKind, ClaimOutcome, DiscoveryCorpusOptions, DiscoverySummary, DiscoveryWidthPolicy, FloorPhase, HistogramData, NodeFrontierSelectionMode, PhaseProfile, - ResolutionDivergencePhase, ResolutionDivergencePhaseState, TimingPercentiles, - DEFAULT_SLOWEST_WITNESS_ATTRIBUTION_N, + ResolutionDivergencePhase, ResolutionDivergencePhaseState, SelectionDegradationSnapshot, + TimingPercentiles, DEFAULT_SLOWEST_WITNESS_ATTRIBUTION_N, }; use v1_compiler::memory_governor::{ binding_cap_cgroup_dir, binding_high_cgroup_dir, floor_budget_below_minimum_footprint, @@ -1563,6 +1564,8 @@ struct ClaimResult { /// as data on the path that needs it. It is a projection of `ClaimOutcome::TimedOut`, /// not a second authority: nothing sets it except the `TimedOut` arm below. budget_refusal: Option, + /// Discovery batch only: finalized selection-degradation facts for floor receipts. + selection_degradation: Option, } /// The pair explaining a budget kill, kept alongside the flattened `ok`/`detail`. @@ -1774,6 +1777,7 @@ fn claim_result_for_outcome( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }, ClaimOutcome::Fail => ClaimResult { detail: { @@ -1798,6 +1802,7 @@ fn claim_result_for_outcome( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }, ClaimOutcome::NotBool { got } => ClaimResult { function, @@ -1811,6 +1816,7 @@ fn claim_result_for_outcome( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }, ClaimOutcome::RuntimeError { message } => ClaimResult { function, @@ -1824,6 +1830,7 @@ fn claim_result_for_outcome( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }, ClaimOutcome::TimedOut { elapsed_ms, @@ -1855,6 +1862,7 @@ fn claim_result_for_outcome( budget_ms, kind, }), + selection_degradation: None, }, } } @@ -2139,6 +2147,7 @@ fn run_native_bundle_unit( corpus_witnesses: 3, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }; if execution_mode != ExecutionMode::Wet { return fail( @@ -2298,6 +2307,7 @@ fn run_native_bundle_unit( corpus_witnesses: selected as usize, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, } } @@ -2333,6 +2343,7 @@ fn run_batch_unit( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }], BatchUnit::NativeBundle { entry, @@ -2467,6 +2478,7 @@ fn run_shared_entry_claims( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }) .collect(); } @@ -2535,6 +2547,7 @@ fn run_memo_shared_claims( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }) .collect(); } @@ -3081,6 +3094,7 @@ fn discovery_claim_result( function: String, ok: bool, detail: String, + selection: NodeFrontierSelectionMode, summary: &DiscoverySummary, projected: Result, String>, ) -> ClaimResult { @@ -3088,19 +3102,35 @@ fn discovery_claim_result( // incomplete row set must refuse the discovery claim (typed/located), never silently // emit a partial receipt as complete (§5 / review 43261 + review 43274). match projected { - Ok(witness_row_costs) => ClaimResult { - function, - entry: DISCOVERY_AGGREGATE_ENTRY.to_string(), - ok, - detail, - wall_nanos: 0, - resolve_nanos: 0, - corpus_resolve_nanos: summary.total_resolve_nanos, - corpus_eval_nanos: summary.total_measured_nanos, - corpus_witnesses: summary.total, - witness_row_costs, - budget_refusal: discovery_budget_refusal(summary), - }, + Ok(mut witness_row_costs) => { + for row in &summary.selection_skipped_rows { + witness_row_costs.push(( + row.entry.clone(), + row.function.clone(), + 0, + 0, + 0, + "selection-skipped".to_string(), + row.provenance.clone(), + )); + } + ClaimResult { + function, + entry: DISCOVERY_AGGREGATE_ENTRY.to_string(), + ok, + detail, + wall_nanos: 0, + resolve_nanos: 0, + corpus_resolve_nanos: summary.total_resolve_nanos, + corpus_eval_nanos: summary.total_measured_nanos, + corpus_witnesses: summary.total, + witness_row_costs, + budget_refusal: discovery_budget_refusal(summary), + selection_degradation: Some(SelectionDegradationSnapshot::from_summary( + selection, summary, + )), + } + } Err(msg) => { eprintln!("[witness-row-cost] refused: {msg}"); // Preserve the caller's failure context (e.g. "N of M discovery witness(es) @@ -3128,6 +3158,9 @@ fn discovery_claim_result( // failed to project its receipt is still a budget kill, and dropping that // here would hand it back to the substring classifier. budget_refusal: discovery_budget_refusal(summary), + selection_degradation: Some(SelectionDegradationSnapshot::from_summary( + selection, summary, + )), } } } @@ -3202,6 +3235,10 @@ fn run_discovery_batch_node( corpus_witnesses: summary.total, witness_row_costs: Vec::new(), budget_refusal: discovery_budget_refusal(&summary), + selection_degradation: Some(SelectionDegradationSnapshot::from_summary( + node_frontier_selection, + &summary, + )), }; } } @@ -3326,6 +3363,7 @@ fn run_discovery_batch_node( "expect_red probe unexpectedly green: {} witness(es) passed — un-quarantine (delete the row from gunbc.explicit_witness_admission explicit_witness_admissions, which is the single authority both known-red cadences project from) or restore the discriminating red", summary.total ), + node_frontier_selection, &summary, projected, ) @@ -3334,6 +3372,7 @@ fn run_discovery_batch_node( format!("{label} ({} witnesses)", summary.total), true, String::new(), + node_frontier_selection, &summary, projected, ) @@ -3360,6 +3399,10 @@ fn run_discovery_batch_node( corpus_witnesses: summary.total, witness_row_costs: Vec::new(), budget_refusal: discovery_budget_refusal(&summary), + selection_degradation: Some(SelectionDegradationSnapshot::from_summary( + node_frontier_selection, + &summary, + )), }; } } @@ -3375,6 +3418,7 @@ fn run_discovery_batch_node( format!("{label} (expect_red still-red OK)"), true, String::new(), + node_frontier_selection, &summary, projected, ) @@ -3388,6 +3432,7 @@ fn run_discovery_batch_node( summary.total, summary.failures.join("; ") ), + node_frontier_selection, &summary, projected, ) @@ -3422,6 +3467,7 @@ fn run_discovery_batch_node( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, } } else { ClaimResult { @@ -3439,6 +3485,7 @@ fn run_discovery_batch_node( corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, } } } @@ -4034,6 +4081,8 @@ struct BatchRecord { /// cold control is the `predict_only` component, never "batch 1" — indices shift /// when a `gunbc_falsifier_batches` enrollment flag flips. selection_tag: &'static str, + /// Wet-profiled batches (bin_witness wet corpus, falsifier wet follow-on, …). + is_wet: bool, } /// Materialization-ladder receipt: how many entry resolves this floor run actually @@ -4201,29 +4250,77 @@ fn write_floor_component_receipt_at( } } - let doc = match run_in_context_with_args( - &ctx, - "floor_component_receipt_document", - &[ - (Some("run_id".to_string()), Value::Str(run_id.clone())), - (Some("rows".to_string()), Value::List(Rc::new(rows.into()))), - ], - false, - ) { - Ok(Value::Str(s)) => s, - Ok(other) => { - eprintln!( - "claim_executor: floor component receipt REFUSED — \ - floor_component_receipt_document returned {other:?}, not Str" - ); - return false; + let doc = if let Some(snapshot) = selection_degradation_from_batch_records(batch_records) { + match run_in_context_with_args( + &ctx, + "floor_component_receipt_document_with_selection", + &[ + (Some("run_id".to_string()), Value::Str(run_id.clone())), + (Some("rows".to_string()), Value::List(Rc::new(rows.into()))), + ( + Some("selection_mode_tag".to_string()), + Value::Str(snapshot.selection_mode_tag.clone()), + ), + ( + Some("selected".to_string()), + Value::Int(snapshot.selected_entry_groups as i64), + ), + ( + Some("total".to_string()), + Value::Int(snapshot.total_entry_groups as i64), + ), + ( + Some("categorization_unavailable".to_string()), + Value::Bool(snapshot.categorization_unavailable), + ), + ( + Some("categorization_reason".to_string()), + Value::Str(snapshot.categorization_reason.clone()), + ), + ], + false, + ) { + Ok(Value::Str(s)) => s, + Ok(other) => { + eprintln!( + "claim_executor: floor component receipt REFUSED — \ + floor_component_receipt_document_with_selection returned {other:?}, not Str" + ); + return false; + } + Err(e) => { + eprintln!( + "claim_executor: floor component receipt REFUSED — \ + floor_component_receipt_document_with_selection eval: {e}" + ); + return false; + } } - Err(e) => { - eprintln!( - "claim_executor: floor component receipt REFUSED — \ - floor_component_receipt_document eval: {e}" - ); - return false; + } else { + match run_in_context_with_args( + &ctx, + "floor_component_receipt_document", + &[ + (Some("run_id".to_string()), Value::Str(run_id.clone())), + (Some("rows".to_string()), Value::List(Rc::new(rows.into()))), + ], + false, + ) { + Ok(Value::Str(s)) => s, + Ok(other) => { + eprintln!( + "claim_executor: floor component receipt REFUSED — \ + floor_component_receipt_document returned {other:?}, not Str" + ); + return false; + } + Err(e) => { + eprintln!( + "claim_executor: floor component receipt REFUSED — \ + floor_component_receipt_document eval: {e}" + ); + return false; + } } }; @@ -4343,8 +4440,8 @@ fn floor_component_row_value( } } -fn write_resolve_receipt(batch_records: &[BatchRecord]) -> bool { - write_resolve_receipt_at(std::path::Path::new("target"), batch_records) +fn write_resolve_receipt(source_roots: &[String], batch_records: &[BatchRecord]) -> bool { + write_resolve_receipt_at(std::path::Path::new("target"), source_roots, batch_records) } /// Per-batch wall receipt (THE COST WALL, Piece 3 derived clamp): typed rows — one @@ -4531,6 +4628,73 @@ fn write_witness_row_cost_receipt_at( true } +fn batch_is_wet(batch: &[Runnable]) -> bool { + batch.iter().any(|runnable| match runnable { + Runnable::DiscoveryBatch { execution_mode, .. } => *execution_mode == ExecutionMode::Wet, + Runnable::SingleClaim { profile, .. } => profile.execution_mode == ExecutionMode::Wet, + Runnable::ScopedWitnessBatch { profile, .. } => { + profile.execution_mode == ExecutionMode::Wet + } + }) +} + +fn wet_witness_row_outcome_label(outcome_variant: &str) -> &'static str { + match outcome_variant { + "Done" => "passed", + "selection-skipped" => "selection-skipped", + _ => "failed", + } +} + +fn write_floor_wet_witness_row_outcome_receipt(batch_records: &[BatchRecord]) -> bool { + write_floor_wet_witness_row_outcome_receipt_at(Path::new("target"), batch_records) +} + +fn write_floor_wet_witness_row_outcome_receipt_at( + base: &Path, + batch_records: &[BatchRecord], +) -> bool { + let mut body = String::from("batch\tentry\tfunction\toutcome\tdetail\n"); + let mut row_count = 0usize; + for rec in batch_records { + if !rec.is_wet { + continue; + } + let batch = rec.batch_index + 1; + for result in &rec.results { + for row in &result.witness_row_costs { + let outcome = wet_witness_row_outcome_label(&row.5); + let detail = scoped_wire_text(&row.6); + body.push_str(&format!( + "{}\n", + [ + batch.to_string(), + row.0.clone(), + row.1.clone(), + outcome.to_string(), + detail, + ] + .join("\t") + )); + row_count += 1; + } + } + } + let path = base.join("floor-wet-witness-row-outcome-receipt.tsv"); + if let Err(e) = std::fs::create_dir_all(base).and_then(|_| std::fs::write(&path, &body)) { + eprintln!( + "claim_executor: failed to write wet witness row-outcome receipt {}: {e} — walk fails closed here", + path.display() + ); + return false; + } + eprintln!( + "[receipt] floor wet witness row-outcome: {row_count} row(s) (TSV receipt: {})", + path.display() + ); + true +} + /// Required `host_class` on every signed basis row (`witness_row_cost_basis_host_class_note`). const WITNESS_ROW_COST_BASIS_HOST_CLASS: &str = "srv_fleet_arm64"; @@ -4992,7 +5156,52 @@ fn write_on_success_receipt( true } -fn write_resolve_receipt_at(base: &std::path::Path, batch_records: &[BatchRecord]) -> bool { +fn selection_degradation_from_batch_records( + batch_records: &[BatchRecord], +) -> Option { + batch_records + .iter() + .flat_map(|rec| &rec.results) + .find_map(|result| result.selection_degradation.clone()) +} + +fn write_selection_degradation_receipt_at( + base: &std::path::Path, + source_roots: &[String], + batch_records: &[BatchRecord], +) -> bool { + let Some(snapshot) = selection_degradation_from_batch_records(batch_records) else { + return true; + }; + let body = match render_selection_degradation_receipt_body(source_roots, &snapshot) { + Ok(body) => body, + Err(msg) => { + eprintln!("claim_executor: {msg}"); + return false; + } + }; + let path = base.join("floor-selection-degradation-receipt.txt"); + if let Err(e) = std::fs::create_dir_all(base).and_then(|_| std::fs::write(&path, &body)) { + eprintln!( + "claim_executor: failed to write selection degradation receipt {}: {e} — walk fails closed", + path.display() + ); + return false; + } + eprintln!( + "[receipt] floor selection degradation: {} entry group(s) selected of {} (receipt: {})", + snapshot.selected_entry_groups, + snapshot.total_entry_groups, + path.display() + ); + true +} + +fn write_resolve_receipt_at( + base: &std::path::Path, + source_roots: &[String], + batch_records: &[BatchRecord], +) -> bool { let mut resolves_total: u64 = 0; let mut resolve_ms_total: u128 = 0; let mut discovery_corpus_resolve_ms: u128 = 0; @@ -5008,9 +5217,22 @@ fn write_resolve_receipt_at(base: &std::path::Path, batch_records: &[BatchRecord } } let discovery_phases = v1_compiler::cli_run::take_discovery_phase_totals_receipt_rows(); - let body = format!( + let mut body = format!( "resolves_total={resolves_total}\nresolve_ms_total={resolve_ms_total}\ndiscovery_corpus_resolve_ms={discovery_corpus_resolve_ms}\ndiscovery_corpus_eval_ms={discovery_corpus_eval_ms}\n{discovery_phases}" ); + if let Some(snapshot) = selection_degradation_from_batch_records(batch_records) { + match render_selection_degradation_receipt_body(source_roots, &snapshot) { + Ok(selection_body) => { + body.push_str("\n[selection_degradation]\n"); + body.push_str(&selection_body); + body.push('\n'); + } + Err(msg) => { + eprintln!("claim_executor: resolve receipt selection degradation refused: {msg}"); + return false; + } + } + } let path = base.join("floor-resolve-receipt.txt"); if let Err(e) = std::fs::create_dir_all(base).and_then(|_| std::fs::write(&path, &body)) { eprintln!( @@ -6151,6 +6373,7 @@ fn run_walk( results: batch_results, label: label.clone(), selection_tag: batch_selection_tag(batch), + is_wet: batch_is_wet(batch), }); // LOCAL, not aggregate. This used to test the cumulative `any_failed`, so under // FullLedger every batch after the first failure was announced as "batch N had @@ -6195,8 +6418,17 @@ fn run_walk( let total_wall_nanos = walk_start.elapsed().as_nanos(); emit_gantt(&batch_records, total_wall_nanos); trace_floor_phase("resolve-receipt", "started", ""); - let resolve_receipt_ok = !emit_ordinary_floor_receipts || write_resolve_receipt(&batch_records); + let resolve_receipt_ok = + !emit_ordinary_floor_receipts || write_resolve_receipt(source_roots, &batch_records); trace_floor_phase("resolve-receipt", "completed", ""); + trace_floor_phase("selection-degradation-receipt", "started", ""); + let selection_degradation_receipt_ok = !emit_ordinary_floor_receipts + || write_selection_degradation_receipt_at( + std::path::Path::new("target"), + source_roots, + &batch_records, + ); + trace_floor_phase("selection-degradation-receipt", "completed", ""); trace_floor_phase("batch-wall-receipt", "started", ""); let batch_wall_receipt_ok = !emit_ordinary_floor_receipts || write_batch_wall_receipt(&batch_records); @@ -6209,6 +6441,10 @@ fn run_walk( let witness_row_cost_receipt_ok = !emit_ordinary_floor_receipts || write_witness_row_cost_receipt(&batch_records, falsifier_cadence); trace_floor_phase("witness-row-cost-receipt", "completed", ""); + trace_floor_phase("wet-witness-row-outcome-receipt", "started", ""); + let wet_witness_row_outcome_receipt_ok = !emit_ordinary_floor_receipts + || write_floor_wet_witness_row_outcome_receipt(&batch_records); + trace_floor_phase("wet-witness-row-outcome-receipt", "completed", ""); trace_floor_phase("witness-row-cost-drift-receipt", "started", ""); let witness_row_cost_drift_receipt_ok = if !emit_ordinary_floor_receipts { true @@ -6257,7 +6493,9 @@ fn run_walk( || !batch_wall_receipt_ok || !gate_warm_cost_receipt_ok || !witness_row_cost_receipt_ok + || !wet_witness_row_outcome_receipt_ok || !witness_row_cost_drift_receipt_ok + || !selection_degradation_receipt_ok || !floor_component_receipt_ok || !materialization_receipt_ok; // Floor finalization laws (the in-executor form of the deleted resolve/ @@ -6820,6 +7058,79 @@ const FLOOR_WORKER_TERMINAL_ENV: &str = "GUNBC_FLOOR_WORKER_TERMINAL_RECEIPT"; const FLOOR_PHASE_JOURNAL_ENV: &str = "GUNBC_FLOOR_PHASE_JOURNAL"; const SCOPED_WITNESS_BATCH_MANIFEST_PATH: &str = "target/scoped-witness-batch-manifest.tsv"; const FLOOR_WORKER_OBSERVATION_RECEIPT_PATH: &str = "target/floor-worker-observation-receipt.tsv"; +const FLOOR_WET_WITNESS_ROW_OUTCOME_RECEIPT_PATH: &str = + "target/floor-wet-witness-row-outcome-receipt.tsv"; + +fn wet_witness_row_outcome_replay_line( + batch: &str, + entry: &str, + function: &str, + outcome: &str, + detail: &str, +) -> String { + format!( + "[wet-witness-row-outcome] batch={batch} entry={entry} function={function} outcome={outcome} detail={detail}" + ) +} + +fn collect_wet_witness_row_outcome_replay_lines(path: &Path) -> Result, String> { + let body = fs::read_to_string(path).map_err(|e| { + format!( + "read wet witness row-outcome receipt {}: {e}", + path.display() + ) + })?; + let mut lines = Vec::new(); + for line in body.lines().skip(1) { + let line = line.trim(); + if line.is_empty() { + continue; + } + let parts: Vec<&str> = line.split('\t').collect(); + let (batch, entry, function, outcome, detail) = match parts.len() { + 4 => (parts[0], parts[1], parts[2], parts[3], ""), + 5 => (parts[0], parts[1], parts[2], parts[3], parts[4]), + _ => { + return Err(format!( + "malformed wet witness row-outcome line (need 4-5 cols): {line}" + )); + } + }; + lines.push(wet_witness_row_outcome_replay_line( + batch, entry, function, outcome, detail, + )); + } + Ok(lines) +} + +fn replay_floor_wet_witness_row_outcomes_from_receipt(path: &Path) -> Result { + let lines = collect_wet_witness_row_outcome_replay_lines(path)?; + for line in &lines { + eprintln!("{line}"); + } + Ok(lines.len()) +} + +fn replay_ordinary_floor_wet_witness_row_outcomes() { + let path = Path::new(FLOOR_WET_WITNESS_ROW_OUTCOME_RECEIPT_PATH); + match replay_floor_wet_witness_row_outcomes_from_receipt(path) { + Ok(count) => { + eprintln!( + "[wet-witness-row-outcome] coordinator replayed {count} row(s) from {}", + path.display() + ); + } + Err(msg) if path.exists() => { + eprintln!("claim_executor: wet witness row-outcome coordinator replay refused: {msg}"); + } + Err(_) => { + eprintln!( + "claim_executor: wet witness row-outcome receipt absent at {} — per-row wet batch outcomes unobservable", + path.display() + ); + } + } +} fn append_floor_phase_journal(phase: &str, state: &str, detail: &str) { let Some(path) = std::env::var_os(FLOOR_PHASE_JOURNAL_ENV) else { @@ -7230,6 +7541,11 @@ fn spawn_floor_worker( } }; let observed = observe_floor_worker(&worker, status, &terminal_path); + // Replay before observation persistence: worker stderr may be dropped on Actions after + // discovery, and a failed worker is the case where the log otherwise says nothing. + if worker == "ordinary" { + replay_ordinary_floor_wet_witness_row_outcomes(); + } append_floor_worker_observation(&observed)?; let outcome = floor_worker_observation_outcome(&observed); // The Actions log transport can drop the worker's inherited stderr after a @@ -7278,6 +7594,7 @@ fn maybe_run_floor_coordinator(args: &[String]) -> Option { let ordinary = match spawn_floor_worker(args, "ordinary", None, 0) { Ok(observed) => observed, Err(msg) => { + replay_ordinary_floor_wet_witness_row_outcomes(); eprintln!("claim_executor: floor coordinator ordinary-worker refusal: {msg}"); return Some(ExitCode::from(1)); } @@ -8327,6 +8644,7 @@ mod tests { unit_count: 0, label: "finalization-fixture".to_string(), selection_tag: "fixture", + is_wet: false, results: resolve_counts .iter() .map(|n| ClaimResult { @@ -8341,6 +8659,7 @@ mod tests { corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }) .collect(), } @@ -8510,6 +8829,7 @@ mod tests { results, label: "batch-under-test".to_string(), selection_tag: "off", + is_wet: false, } } @@ -8563,6 +8883,7 @@ mod tests { corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, }; let (mode, _) = batch_failure_mode_and_detail(&batch_record_for_test(vec![plain])); assert_eq!(mode, "WitnessRed"); @@ -8765,7 +9086,7 @@ mod tests { std::env::temp_dir().join(format!("claim-executor-receipt-red-{}", std::process::id())); let _ = fs::remove_file(&base); fs::write(&base, b"a file where the receipt dir should be").unwrap(); - assert!(!write_resolve_receipt_at(&base, &[])); + assert!(!write_resolve_receipt_at(&base, &[], &[])); assert!(!write_batch_wall_receipt_at(&base, &[])); let _ = fs::remove_file(&base); } @@ -8788,6 +9109,7 @@ mod tests { results: Vec::new(), label: "batch-0".to_string(), selection_tag: "off", + is_wet: false, }, BatchRecord { batch_index: 1, @@ -8797,6 +9119,7 @@ mod tests { results: Vec::new(), label: "batch-1".to_string(), selection_tag: "off", + is_wet: false, }, ]; assert!(write_batch_wall_receipt_at(&base, &clamped_records)); @@ -8816,6 +9139,7 @@ mod tests { results: Vec::new(), label: "batch-0".to_string(), selection_tag: "off", + is_wet: false, }]; assert!(write_batch_wall_receipt_at(&base, &unbudgeted_records)); let body = fs::read_to_string(base.join("floor-batch-wall-receipt.txt")).unwrap(); @@ -10376,6 +10700,110 @@ mod tests { assert!(zero.contains("zero eval_ms_basis"), "got: {zero}"); } + #[test] + /// Discriminating replay control: planted passed, failed, and selection-skipped rows + /// must surface as three distinct coordinator replay outcomes (not collapsed). + /// Evidence: `claim_executor` unit tests — the binary that gates CI floor merge. + fn wet_witness_row_outcome_replay_discriminates_passed_failed_and_selection_skipped() { + let base = + std::env::temp_dir().join(format!("claim-executor-wet-outcome-{}", std::process::id())); + let _ = fs::remove_dir_all(&base); + let records = vec![BatchRecord { + batch_index: 3, + wall_nanos: 0, + clamp_ms: None, + unit_count: 3, + label: "bin-witness-corpus".to_string(), + selection_tag: "applied", + is_wet: true, + results: vec![ClaimResult { + function: "bin-witness-corpus (3 witnesses)".to_string(), + entry: DISCOVERY_AGGREGATE_ENTRY.to_string(), + ok: false, + detail: "1 of 3 discovery witness(es) failed".to_string(), + wall_nanos: 0, + resolve_nanos: 0, + corpus_resolve_nanos: 0, + corpus_eval_nanos: 0, + corpus_witnesses: 3, + witness_row_costs: vec![ + ( + "dag/test/claim/stage0_rust_host_observation_live_witness_test.dag" + .to_string(), + "planted_pass_wet_row".to_string(), + 1_000_000, + 0, + 0, + "Done".to_string(), + String::new(), + ), + ( + "dag/test/claim/planted_fail_wet_row_test.dag".to_string(), + "planted_fail_wet_row".to_string(), + 500_000, + 0, + 0, + "Failed".to_string(), + "returned Bool(false)".to_string(), + ), + ( + "dag/other.dag".to_string(), + "planted_selection_skip_wet_row".to_string(), + 0, + 0, + 0, + "selection-skipped".to_string(), + "affected-set".to_string(), + ), + ], + budget_refusal: None, + }], + }]; + assert!(write_floor_wet_witness_row_outcome_receipt_at( + &base, &records + )); + let path = base.join("floor-wet-witness-row-outcome-receipt.tsv"); + let body = fs::read_to_string(&path).unwrap(); + assert!(body.contains("planted_pass_wet_row")); + assert!(body.contains("planted_pass_wet_row\tpassed")); + assert!(body.contains("planted_fail_wet_row")); + assert!(body.contains("planted_fail_wet_row\tfailed\t")); + assert!(body.contains("planted_selection_skip_wet_row")); + assert!(body.contains("selection-skipped")); + let lines = collect_wet_witness_row_outcome_replay_lines(&path).expect("replay lines"); + assert_eq!(lines.len(), 3); + let passed_line = lines + .iter() + .find(|line| line.contains("planted_pass_wet_row")) + .expect("passed replay line"); + let failed_line = lines + .iter() + .find(|line| line.contains("planted_fail_wet_row")) + .expect("failed replay line"); + let skipped_line = lines + .iter() + .find(|line| line.contains("planted_selection_skip_wet_row")) + .expect("selection-skipped replay line"); + assert!(passed_line.contains("outcome=passed")); + assert!(failed_line.contains("outcome=failed")); + assert!(skipped_line.contains("outcome=selection-skipped")); + assert_ne!(passed_line, failed_line); + assert_ne!(passed_line, skipped_line); + assert_ne!(failed_line, skipped_line); + let _ = fs::remove_dir_all(&base); + } + + #[test] + fn wet_witness_row_outcome_label_maps_three_distinct_values() { + assert_eq!(wet_witness_row_outcome_label("Done"), "passed"); + assert_eq!( + wet_witness_row_outcome_label("selection-skipped"), + "selection-skipped" + ); + assert_eq!(wet_witness_row_outcome_label("Failed"), "failed"); + assert_eq!(wet_witness_row_outcome_label("Refused"), "failed"); + } + /// Discovery is THE falsifier path — `resolution_divergence_silent_pick_gate_keystone_holds` /// is a discovery row — so a budget kill there must classify structurally like any other. /// @@ -10423,6 +10851,9 @@ mod tests { performance_receipts: Vec::new(), total_measured_nanos: 0, roster_closure_nodes: 0, + total_entry_groups: 0, + selected_entry_groups: 0, + selection_categorization_reason: None, }; let killed = ClaimOutcome::TimedOut { elapsed_ms: 900_001, @@ -10440,6 +10871,7 @@ mod tests { "discovery-corpus".into(), false, killed_detail.to_string(), + NodeFrontierSelectionMode::Applied, &summary_with(killed.clone()), projected, ); @@ -10456,6 +10888,7 @@ mod tests { "discovery-corpus".into(), false, "red".into(), + NodeFrontierSelectionMode::Applied, &summary_with(ClaimOutcome::Fail), Ok(Vec::new()), ); @@ -10493,12 +10926,16 @@ mod tests { performance_receipts: Vec::new(), total_measured_nanos: 0, roster_closure_nodes: 0, + total_entry_groups: 0, + selected_entry_groups: 0, + selection_categorization_reason: None, }; let prior = "1 of 1 discovery witness(es) failed: e.dag::f failed"; let result = discovery_claim_result( "probe".into(), false, prior.to_string(), + NodeFrontierSelectionMode::Applied, &summary, Err("[witness-row-cost] REFUSED: missing measured resolve parent for e.dag".into()), ); @@ -10540,6 +10977,9 @@ mod tests { performance_receipts: Vec::new(), total_measured_nanos: 0, roster_closure_nodes: 0, + total_entry_groups: 0, + selected_entry_groups: 0, + selection_categorization_reason: None, }; let (label, provenance) = scoped_witness_summary_outcome( &summary, @@ -10568,6 +11008,7 @@ mod tests { corpus_witnesses: 0, witness_row_costs: Vec::new(), budget_refusal: None, + selection_degradation: None, } } diff --git a/src/v1/stage0/src/bin/frontier_probe_survey.rs b/src/v1/stage0/src/bin/frontier_probe_survey.rs index ef01b3e867b..6d1f04290bb 100644 --- a/src/v1/stage0/src/bin/frontier_probe_survey.rs +++ b/src/v1/stage0/src/bin/frontier_probe_survey.rs @@ -404,6 +404,8 @@ fn run() -> Result { let mut survey_manifest: Option = None; let mut survey_tsv: Option = None; let mut survey_dir: Option = None; + let mut only_modules: Vec = Vec::new(); + let mut used_module_filter = false; let mut i = 1; while i < args.len() { @@ -412,6 +414,11 @@ fn run() -> Result { i += 1; source_roots.push(require_value(&args, i, "--source-root")?); } + "--module" => { + i += 1; + only_modules.push(require_value(&args, i, "--module")?); + used_module_filter = true; + } "--emit-survey-manifest" => { i += 1; survey_manifest = Some(PathBuf::from(require_value( @@ -455,18 +462,28 @@ fn run() -> Result { ExitCode::from(1) })?; - let module_paths = load_compiler_frontier_sweep_order(&source_roots).map_err(|msg| { + let mut module_paths = load_compiler_frontier_sweep_order(&source_roots).map_err(|msg| { eprintln!("frontier_probe_survey: {msg}"); ExitCode::from(1) })?; + if !only_modules.is_empty() { + module_paths = only_modules; + } if module_paths.is_empty() { - eprintln!("frontier_probe_survey: {SWEEP_ORDER_DATA} is empty"); + eprintln!("frontier_probe_survey: no module paths to probe"); return Err(ExitCode::from(1)); } - eprintln!( - "frontier_probe_survey: loaded {} module path(s) from {SWEEP_ORDER_DATA}", - module_paths.len() - ); + if used_module_filter { + eprintln!( + "frontier_probe_survey: probing {} module path(s) (--module filter)", + module_paths.len() + ); + } else { + eprintln!( + "frontier_probe_survey: probing {} module path(s) from {SWEEP_ORDER_DATA}", + module_paths.len() + ); + } let host_failure_reasons = load_host_failure_reasons(&source_roots).map_err(|msg| { eprintln!("frontier_probe_survey: {msg}"); diff --git a/src/v1/stage0/src/bin/p1_cohort_probe.rs b/src/v1/stage0/src/bin/p1_cohort_probe.rs new file mode 100644 index 00000000000..f34a5efdd47 --- /dev/null +++ b/src/v1/stage0/src/bin/p1_cohort_probe.rs @@ -0,0 +1,94 @@ +#![allow(clippy::disallowed_macros)] + +// P1 retention-vs-drain cohort receipt probe (dashboard work item +// node://adhoc-9af14fee-a7f). Calls the SAME production entrypoint +// `run_discovery_corpus_with_options` that `claim_executor` uses for the real floor +// path, with `DiscoveryWidthPolicy::Adaptive` (the governor-admitted width the fleet +// actually runs under) over an explicit fixed cohort instead of a full-corpus scan. +// This is not a reimplementation of retention/discovery logic — it is a thinner CLI +// front end onto the identical mechanism claim_executor drives, scoped to the fixed +// 50-entry cohort from `docs/plans/receipts/entry-graph-union-slice2/receipt-post-merge-representative-50.json` +// so mode A / mode B receipts stay directly comparable entry-by-entry. + +use std::process::ExitCode; +use std::sync::Arc; + +use v1_compiler::cli_run::{ + run_discovery_corpus_with_options, workspace_root, DiscoveryCorpusOptions, + DiscoveryWidthPolicy, NodeFrontierSelectionMode, +}; +use v1_compiler::memory_governor::MemoryGovernor; +use v1_compiler::v1_interpreter::ExecutionMode; + +fn cohort_relative_paths() -> Vec<&'static str> { + include_str!("p1_cohort_roster.txt") + .lines() + .map(str::trim) + .filter(|l| !l.is_empty()) + .collect() +} + +fn main() -> ExitCode { + let ws = workspace_root(); + std::env::set_current_dir(&ws).expect("chdir to workspace root"); + + let source_roots = vec![ + ws.join("dag").to_string_lossy().into_owned(), + ws.join("src/v2").to_string_lossy().into_owned(), + ]; + let explicit_entries: Vec<(String, String)> = cohort_relative_paths() + .into_iter() + .map(|rel| (ws.join(rel).to_string_lossy().into_owned(), String::new())) + .collect(); + + eprintln!( + "p1_cohort_probe: {} explicit cohort entr(y/ies), source_roots={:?}", + explicit_entries.len(), + source_roots + ); + + let governor = Arc::new(MemoryGovernor::from_environment( + std::thread::available_parallelism() + .map(|n| n.get()) + .unwrap_or(1), + )); + + let options = DiscoveryCorpusOptions { + node_frontier_selection: NodeFrontierSelectionMode::Off, + execution_authority_source_roots: source_roots.clone(), + explicit_roster_only: true, + ..Default::default() + }; + + match run_discovery_corpus_with_options( + &source_roots, + &[], + &explicit_entries, + ExecutionMode::Wet, + DiscoveryWidthPolicy::Adaptive(governor), + options, + ) { + Ok(summary) => { + eprintln!( + "p1_cohort_probe: PASS total={} skipped={} failures={} resolve_ms={:.3} eval_ms={:.3}", + summary.total, + summary.skipped, + summary.failures.len(), + summary.total_resolve_nanos as f64 / 1.0e6, + summary.total_measured_nanos as f64 / 1.0e6, + ); + if summary.failures.is_empty() { + ExitCode::SUCCESS + } else { + for f in &summary.failures { + eprintln!("p1_cohort_probe: FAIL {f}"); + } + ExitCode::from(1) + } + } + Err(msg) => { + eprintln!("p1_cohort_probe: refused: {msg}"); + ExitCode::from(1) + } + } +} diff --git a/src/v1/stage0/src/bin/p1_cohort_roster.txt b/src/v1/stage0/src/bin/p1_cohort_roster.txt new file mode 100644 index 00000000000..0a6f0c0bdaa --- /dev/null +++ b/src/v1/stage0/src/bin/p1_cohort_roster.txt @@ -0,0 +1,50 @@ +dag/test/claim/accelerator_demo_execution_witness_test.dag +dag/test/claim/accelerator_demo_gpu_witness_test.dag +dag/test/claim/accelerator_demo_model_witness_test.dag +dag/test/claim/access_iam_validation_test.dag +dag/test/claim/access_layer_extension_witness_test.dag +dag/test/claim/access_token_ensure_witness_test.dag +dag/test/claim/access_validation_test.dag +dag/test/claim/acquisition_mechanism_witness_test.dag +dag/test/claim/advertising_interface_witness_test.dag +dag/test/claim/annotation_carrier_witness_test.dag +dag/test/claim/anomaly_evidence_witness_test.dag +dag/test/claim/argv_command_render_witness_test.dag +dag/test/claim/artifact_store_scratch_grant_witness_test.dag +dag/test/claim/artifact_store_witness_test.dag +dag/test/claim/asrock_live_probe_witness_test.dag +dag/test/claim/base64_rfc4648_witness_test.dag +dag/test/claim/bmc_auth_runtime_secret_seam_test.dag +dag/test/claim/bmc_bootstrap_provision_witness_test.dag +dag/test/claim/bmc_capability_solve_witness_test.dag +dag/test/claim/bmc_factory_credential_witness_test.dag +dag/test/claim/bmc_fan_converge_witness_test.dag +dag/test/claim/bmc_firmware_thermal_witness_test.dag +dag/test/claim/bmc_live_receipts_witness_test.dag +dag/test/claim/bmc_netboot_serve_witness_test.dag +dag/test/claim/bmc_netboot_shell_boot_witness_test.dag +dag/test/claim/bmc_onboard_body_witness_test.dag +dag/test/claim/bmc_onboarding_lifecycle_witness_test.dag +dag/test/claim/bmc_redfish_grounding_witness_test.dag +dag/test/claim/bmc_token_federation_witness_test.dag +dag/test/claim/bmc_typed_operations_witness_test.dag +dag/test/claim/bmc_virtual_media_witness_test.dag +dag/test/claim/bmc_wif_delegation_chain_witness_test.dag +dag/test/claim/branded_list_first_optional_witness_test.dag +dag/test/claim/budget_tree_witness_test.dag +dag/test/claim/build_cache_placement_observation_test.dag +dag/test/claim/builtin_get_resolver_test.dag +dag/test/claim/busybox_bmc_build_witness_test.dag +dag/test/claim/cache_key_completeness_test.dag +dag/test/claim/cache_layer_planner_test.dag +dag/test/claim/cache_purity_verdict_test.dag +dag/test/claim/card_intake_risk_witness_test.dag +dag/test/claim/cargo_target_path_witness_test.dag +dag/test/claim/cargo_version_witness_test.dag +dag/test/claim/cheap_gate_pool_test.dag +dag/test/claim/check_coverage_admission_witness_test.dag +dag/test/claim/ci_budget_tree_witness_test.dag +dag/test/claim/ci_compile_jobs_witness_test.dag +dag/test/claim/ci_concurrency_policy_witness_test.dag +dag/test/claim/ci_deploy_target_host_witness_test.dag +dag/test/claim/ci_deploy_witness_test.dag diff --git a/src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs b/src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs index ab5af929040..b9988e78ac0 100644 --- a/src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs +++ b/src/v1/stage0/src/bootstrap_stage0_crate_layout_generated.rs @@ -27,7 +27,8 @@ pub const HAND_MAINTAINED_STAGE0_FILES: &[&str] = &[ "v2_compiler_resolve.rs", "v2_compiler_program_partition.rs", "v2_compiler_tokenize.rs", - "v2_compiler_infer.rs" + "v2_compiler_infer.rs", + "v1_interpreter_dispatch_generated.rs" ]; #[rustfmt::skip] diff --git a/src/v1/stage0/src/cli_run.rs b/src/v1/stage0/src/cli_run.rs index 173e58b74fc..f9ea8d41ab3 100644 --- a/src/v1/stage0/src/cli_run.rs +++ b/src/v1/stage0/src/cli_run.rs @@ -51,10 +51,11 @@ mod phase_profile; pub(crate) mod test_module_hygiene_bridge; #[doc(hidden)] pub use materialization_provider_consumer::{ - materialization_provider_ctx_build_count_for_test, reset_materialization_provider_ctx_for_test, - resolve_closure_request_key_from_digests, resolved_graph_parts_semantic_digest, - serve_resolved_graph_stored_disk_probe, serve_resolved_graph_stored_disk_probe_for_test, - ResolvedGraphProviderOutcome, OUTPUT_COMPILE_CLEAN_DIAGNOSTIC_UNION, + materialization_provider_ctx_build_count_for_test, provider_ctx_reentrancy_refusal_for_test, + reset_materialization_provider_ctx_for_test, resolve_closure_request_key_from_digests, + resolved_graph_parts_semantic_digest, serve_resolved_graph_stored_disk_probe, + serve_resolved_graph_stored_disk_probe_for_test, ResolvedGraphProviderOutcome, + OUTPUT_COMPILE_CLEAN_DIAGNOSTIC_UNION, }; pub use phase_profile::{set_phase, FloorPhase, PhaseProfile}; @@ -6731,6 +6732,22 @@ pub(crate) fn cross_process_provider_routing_suppressed() -> bool { CROSS_PROCESS_PROVIDER_ROUTING_SUPPRESSED.with(|c| c.get() > 0) } +/// Count of resolved-graph stores skipped because the provider-bootstrap window was +/// open. The skip is bounded (only the provider's own closure resolves inside that +/// window) and observable, so the deficit can never be masked by silence. +static PROVIDER_BOOTSTRAP_STORE_SKIPS: std::sync::atomic::AtomicUsize = + std::sync::atomic::AtomicUsize::new(0); + +fn record_provider_bootstrap_store_skip() { + PROVIDER_BOOTSTRAP_STORE_SKIPS.fetch_add(1, std::sync::atomic::Ordering::SeqCst); +} + +/// Observed count of bootstrap-window store skips — the countable half of the +/// disclosed refusal (§5). +pub fn provider_bootstrap_store_skip_count() -> usize { + PROVIDER_BOOTSTRAP_STORE_SKIPS.load(std::sync::atomic::Ordering::SeqCst) +} + pub(crate) fn with_cross_process_provider_routing_suppressed(f: F) -> R where F: FnOnce() -> R, @@ -8623,6 +8640,10 @@ pub struct IndexRetentionSnapshot { /// Counted `RetentionUnknown` rows: modules cached but reachability-uncomputable, /// retained (correctness-fail-closed) — visible and prioritizable, never absorbed. pub retention_unknown: u64, + /// Cumulative `resolved_graph_memo` pin drops (v1-run-stability M2 Fact #4): + /// distinct from `schedule_evictions` (per-module typed-state drops) — this + /// counts assembled-graph pin drops, the P1 receipt's `graphs_evicted` field. + pub resolved_graph_evictions: u64, pub peak_rss_bytes: Option, } @@ -8729,6 +8750,12 @@ pub fn index_retention_snapshot(index: &MultiEntryIndex) -> IndexRetentionSnapsh .as_ref() .map(|s| s.retention_unknown()) .unwrap_or(0), + resolved_graph_evictions: index + .schedule_retention + .borrow() + .as_ref() + .map(|s| s.resolved_graph_evictions()) + .unwrap_or(0), peak_rss_bytes: peak_rss_vhwm_bytes(), } } @@ -8764,6 +8791,7 @@ fn retention_snapshot_peak( schedule_releases: a.schedule_releases.max(b.schedule_releases), schedule_evictions: a.schedule_evictions.max(b.schedule_evictions), retention_unknown: a.retention_unknown.max(b.retention_unknown), + resolved_graph_evictions: a.resolved_graph_evictions.max(b.resolved_graph_evictions), peak_rss_bytes: match (a.peak_rss_bytes, b.peak_rss_bytes) { (Some(x), Some(y)) => Some(x.max(y)), (Some(x), None) => Some(x), @@ -8798,6 +8826,85 @@ fn emit_floor_drain_group_line( ); } +/// P1 retention-vs-drain cohort receipt (docs/plans/floor-prep-tax-program.md §P1): +/// per-entry-group instrumentation distinct from `emit_floor_drain_group_line`'s +/// cumulative cache-size line — this line prices the per-group wall/resolve/eval +/// tax the program's diagnosing, plus the typecheck-cache-hit / resolved-graph-hit +/// / eviction facts needed to tell "shared prep reused" from "shared prep re-paid": +/// `typecheck_cache_hit` is whether `typecheck_compute_count()` moved during this +/// group (a typecheck-memo hit/miss signal, NOT schedule-retention cache +/// occupancy — schedule-retention has no per-group hit/miss concept to read, +/// only cumulative eviction counters, which is why `modules_evicted`/ +/// `graphs_evicted` carry that side of the story instead). Gated on its own env var +/// (never folded into `GUNBC_FLOOR_DRAIN_RETENTION`) so enabling one measurement +/// mode does not silently change the other's log shape (§3 — two distinct facts, +/// two distinct switches). +/// +/// Scaffold, not a second production floor driver: this instrumentation and its +/// sole consumer, `p1_cohort_probe`, are diagnostic-only (opt-in, zero effect on +/// default eviction behavior — see `docs/plans/p1-retention-vs-drain-cohort-receipt.md`). +/// Dissolve-on: once P1 is banked and no other open lane needs cohort-scoped A/B +/// retention receipts, delete `emit_p1_cohort_entry_line`/`p1_cohort_receipt_enabled`/ +/// `p1_cohort_cgroup_memory`, `resolved_graph_evictions` on `IndexRetentionSnapshot`, +/// and `src/v1/stage0/src/bin/p1_cohort_probe.rs` together (§6 — no parallel-ledger +/// mechanism kept around past the measurement it was built for). +fn p1_cohort_receipt_enabled() -> bool { + std::env::var("GUNBC_P1_COHORT_RECEIPT") + .ok() + .as_deref() + .map(|v| matches!(v, "1" | "true" | "TRUE")) + .unwrap_or(false) +} + +#[allow(clippy::too_many_arguments)] +fn emit_p1_cohort_entry_line( + group_idx: usize, + total_groups: usize, + entry: &str, + wall_ms: u128, + resolve_ms: u128, + eval_ms: u128, + typecheck_cache_hit: bool, + resolved_graph_hit: bool, + modules_evicted: u64, + graphs_evicted: u64, + process_rss: Option, + cgroup_memory_current: Option, + cgroup_memory_peak: Option, +) { + eprintln!( + "[p1-cohort] entry={group_idx}/{total_groups} name='{entry}' wall_ms={wall_ms} \ + resolve_ms={resolve_ms} eval_ms={eval_ms} typecheck_cache_hit={} \ + resolved_graph_hit={} modules_evicted={modules_evicted} graphs_evicted={graphs_evicted} \ + process_rss={} cgroup_memory_current={} cgroup_memory_peak={}", + typecheck_cache_hit as u8, + resolved_graph_hit as u8, + process_rss + .map(|b| b.to_string()) + .unwrap_or_else(|| "unreadable".into()), + cgroup_memory_current + .map(|b| b.to_string()) + .unwrap_or_else(|| "unreadable".into()), + cgroup_memory_peak + .map(|b| b.to_string()) + .unwrap_or_else(|| "unreadable".into()), + ); +} + +/// Best-effort cgroup `memory.current` / `memory.peak` readback for the P1 cohort +/// receipt (§3 reuse of `memory_governor`'s cgroup-walk authority — no second +/// cgroup-path derivation here). `memory.peak` is absent on some kernels; that +/// arm reads `None` rather than fabricating a value (§5). +fn p1_cohort_cgroup_memory() -> (Option, Option) { + match crate::memory_governor::leaf_cgroup_dir() { + Some(dir) => ( + crate::memory_governor::read_cgroup_u64(&dir, "memory.current"), + crate::memory_governor::read_cgroup_u64(&dir, "memory.peak"), + ), + None => (None, None), + } +} + fn emit_floor_drain_receipt( index: &MultiEntryIndex, total_groups: usize, @@ -8824,6 +8931,146 @@ fn emit_floor_drain_receipt( ); } +const SELECTION_DEGRADATION_RECEIPT_ENTRY: &str = "dag/gunbc/selection_degradation_receipt.dag"; + +/// Kept so `gunbc.observation_emit_census` roster hygiene cannot go stale after the +/// raw `[selection-degradation]` receipt line dissolves into the observation projection. +#[allow(dead_code)] +pub const SELECTION_DEGRADATION_CENSUS_MARKER: &str = "[selection-degradation]"; + +fn node_frontier_selection_mode_tag(mode: NodeFrontierSelectionMode) -> &'static str { + match mode { + NodeFrontierSelectionMode::Off => "off", + NodeFrontierSelectionMode::Applied => "applied", + NodeFrontierSelectionMode::PredictOnly => "predict_only", + } +} + +/// Measured selection-degradation facts finalized at discovery completion. +#[derive(Debug, Clone)] +pub struct SelectionDegradationSnapshot { + pub selection_mode_tag: String, + pub selected_entry_groups: usize, + pub total_entry_groups: usize, + pub categorization_unavailable: bool, + pub categorization_reason: String, +} + +impl SelectionDegradationSnapshot { + pub fn from_summary(selection: NodeFrontierSelectionMode, summary: &DiscoverySummary) -> Self { + Self { + selection_mode_tag: node_frontier_selection_mode_tag(selection).to_string(), + selected_entry_groups: summary.selected_entry_groups, + total_entry_groups: summary.total_entry_groups, + categorization_unavailable: summary.selection_categorization_reason.is_some(), + categorization_reason: summary + .selection_categorization_reason + .clone() + .unwrap_or_default(), + } + } +} + +fn selection_degradation_interp_ctx( + source_roots: &[String], +) -> Result<(v1_interpreter::InterpContext, String), String> { + let entry = resolve_entry_file_under_roots(source_roots, SELECTION_DEGRADATION_RECEIPT_ENTRY) + .map_err(|_| { + format!( + "selection-degradation receipt REFUSED — {SELECTION_DEGRADATION_RECEIPT_ENTRY} \ + not found under source roots" + ) + })?; + let (graph, indices) = resolve_entry_graph_shared(source_roots, &entry) + .map_err(|e| format!("selection-degradation receipt REFUSED — resolve {entry}: {e}"))?; + Ok(( + make_eval_context(&graph, indices, v1_interpreter::ExecutionMode::Hermetic), + entry, + )) +} + +fn selection_degradation_dag_args( + snapshot: &SelectionDegradationSnapshot, +) -> Vec<(Option, v1_interpreter::Value)> { + vec![ + ( + Some("selection_mode_tag".to_string()), + v1_interpreter::Value::Str(snapshot.selection_mode_tag.clone()), + ), + ( + Some("selected".to_string()), + v1_interpreter::Value::Int(snapshot.selected_entry_groups as i64), + ), + ( + Some("total".to_string()), + v1_interpreter::Value::Int(snapshot.total_entry_groups as i64), + ), + ( + Some("categorization_unavailable".to_string()), + v1_interpreter::Value::Bool(snapshot.categorization_unavailable), + ), + ( + Some("categorization_reason".to_string()), + v1_interpreter::Value::Str(snapshot.categorization_reason.clone()), + ), + ] +} + +fn eval_selection_degradation_fn( + source_roots: &[String], + fn_name: &str, + snapshot: &SelectionDegradationSnapshot, +) -> Result { + let (ctx, entry) = selection_degradation_interp_ctx(source_roots)?; + match v1_interpreter::run_in_context_with_args( + &ctx, + fn_name, + &selection_degradation_dag_args(snapshot), + false, + ) { + Ok(v1_interpreter::Value::Str(line)) => Ok(line), + Ok(other) => Err(format!( + "selection-degradation receipt REFUSED — {fn_name} returned `{}`, expected Str \ + (entry {entry})", + ctx.format_value(&other) + )), + Err(e) => Err(format!( + "selection-degradation receipt REFUSED — {fn_name} eval: {e}" + )), + } +} + +/// Bracket-tagged stderr line for discovery completion (also embedded in `[measurement]`). +pub fn render_selection_degradation_receipt_line( + source_roots: &[String], + snapshot: &SelectionDegradationSnapshot, +) -> Result { + eval_selection_degradation_fn(source_roots, "selection_degradation_receipt_line", snapshot) +} + +/// Key=value body written to `target/floor-selection-degradation-receipt.txt` and appended to +/// `floor-resolve-receipt.txt`. +pub fn render_selection_degradation_receipt_body( + source_roots: &[String], + snapshot: &SelectionDegradationSnapshot, +) -> Result { + eval_selection_degradation_fn(source_roots, "selection_degradation_receipt_body", snapshot) +} + +/// P2 floor prep-tax receipt on stderr after every discovery completion. +pub fn emit_selection_degradation_receipt( + source_roots: &[String], + selection: NodeFrontierSelectionMode, + summary: &DiscoverySummary, +) { + let _ = SELECTION_DEGRADATION_CENSUS_MARKER; + let snapshot = SelectionDegradationSnapshot::from_summary(selection, summary); + match render_selection_degradation_receipt_line(source_roots, &snapshot) { + Ok(line) => eprintln!("{line}"), + Err(msg) => eprintln!("{msg}"), + } +} + /// Enforce the host-budget-derived entry cap on the private typed cache. Evictions /// are counted and logged — a typed, located diagnostic, never a silent widen. /// Victim selection is arbitrary (first `HashMap` key), not LRU or load-aware: @@ -10448,7 +10695,18 @@ fn resolved_graph_from_sources_with_index( ), ); } - if let Some(cache_root) = resolved_graph_cache_root_from_env() { + // The store direction of the seam obeys the SAME bootstrap suppression as the + // read direction. The flag names a window in which provider routing may not be + // re-entered at all; honouring it on the probe alone left the store calling + // `resolve_closure_request_key_from_digests` while the provider ctx was still + // mid-construction, so `materialization_provider_ctx` saw an empty memo slot and + // rebuilt the whole provider closure — a nested resolve that re-entered this same + // store, unbounded, ~1GB per level (repeat-resolve OOM, root-caused 2026-08-03). + // Counted, never silent: a suppressed store is a bounded bootstrap-window skip + // whose frequency stays observable (§5 — a failure arm must refuse, never widen). + if cross_process_provider_routing_suppressed() { + record_provider_bootstrap_store_skip(); + } else if let Some(cache_root) = resolved_graph_cache_root_from_env() { // A failed store write is a disclosed refusal, never a silent shrug — // the swallowed error hid that big closures never landed on disk (only // the prelude artifact ever existed), which mis-shaped a whole OOM @@ -15037,6 +15295,13 @@ pub struct DiscoverySummary { /// module names is a property of the source closure: independent of cache warmth, resolve order, /// and — critically for a calibration datum — of the diff under test. pub roster_closure_nodes: usize, + /// Entry-group grain of the discovery roster (`entry_row_groups`); set at completion. + pub total_entry_groups: usize, + /// Distinct entries with at least one executed witness (not selection-skipped only). + pub selected_entry_groups: usize, + /// When Applied mode could not run upfront import-closure categorization; per-shard + /// selection remains authoritative and the completion receipt still publishes counts. + pub selection_categorization_reason: Option, } #[derive(Debug, Clone)] @@ -19262,6 +19527,7 @@ pub fn run_discovery_corpus_with_options( options: DiscoveryCorpusOptions, ) -> Result { let pump_started = std::time::Instant::now(); + let selection = options.node_frontier_selection; let out = run_discovery_corpus_with_options_inner( source_roots, scan_dirs, @@ -19274,6 +19540,9 @@ pub fn run_discovery_corpus_with_options( &discovery_phase_totals::PUMP_WALL_MS, pump_started.elapsed(), ); + if let Ok(summary) = &out { + emit_selection_degradation_receipt(source_roots, selection, summary); + } out } @@ -19558,6 +19827,23 @@ fn run_discovery_corpus_with_options_inner( &diff_edits, &changed_paths, ); + let selection_categorization_reason = + if options.node_frontier_selection == NodeFrontierSelectionMode::Applied { + let declared_paths = index.module_graph_facts.declared_repo_paths(); + let touched: Vec = diff_edits.touched_entry_files.iter().cloned().collect(); + match discovery_entry_fast_skip_without_resolve( + &rows, + &index.module_graph_facts, + &declared_paths, + &touched, + &diff_edits, + ) { + Ok(_) => None, + Err(e) => Some(e), + } + } else { + None + }; // Derive every leg for the WHOLE roster here, above the width dispatch, while this // thread's shared index is warm. At width > 1 the pool hands each worker its own chunk // of rows, so priming inside `run_discovery_rows` would build one interpreter context @@ -19624,7 +19910,13 @@ fn run_discovery_corpus_with_options_inner( "[calibration] closure consistency: pre-resolve loader-closure union == post-resolve union == {} node(s)", pre_resolve_closure_nodes ); - Ok(attach_deferred_discovery_rows(summary, deferred_rows)) + Ok(finalize_discovery_summary( + summary, + &rows, + options.node_frontier_selection, + selection_categorization_reason.clone(), + deferred_rows, + )) } DiscoveryWidthPolicy::Adaptive(governor) => { // Adaptive pool: entry-groups drain through governor-admitted workers. Each worker @@ -19694,10 +19986,19 @@ fn run_discovery_corpus_with_options_inner( // Per-group arming instead gave each entry a one-entry schedule (refcount 1 on the // whole closure), evicting and cold-recomputing the shared core once per entry. index_arm_schedule_retention(&index, &rows); + let p1_cohort_detail = p1_cohort_receipt_enabled(); + let mut p1_cohort_seen_subjects: std::collections::HashSet = + std::collections::HashSet::new(); for (group_idx, group_indices) in groups.into_iter().enumerate() { let group_rows: Vec = group_indices.iter().map(|&i| rows[i].clone()).collect(); - summaries.push(run_discovery_rows( + let group_entry_label = group_rows + .first() + .map(|r| r.entry.clone()) + .unwrap_or_default(); + let group_wall_start = p1_cohort_detail.then(std::time::Instant::now); + let typecheck_misses_before = p1_cohort_detail.then(typecheck_compute_count); + let summary = run_discovery_rows( &group_rows, &index, execution_mode, @@ -19709,7 +20010,39 @@ fn run_discovery_corpus_with_options_inner( whole_tree_published_keys.clone(), options.witness_budget_policy(), style, - )?); + )?; + // The rest of this block is P1 scaffold bookkeeping (per-group wall + // timing, typecheck-memo before/after, and the resolved-graph-hit + // subject-set scan) — computed only under the same opt-in gate as + // its emission (review 47844), not on the default production path. + let (group_wall_ms, typecheck_misses_after, resolved_graph_hit) = + if p1_cohort_detail { + let group_wall_ms = group_wall_start + .expect("set above under the same p1_cohort_detail gate") + .elapsed() + .as_millis(); + let typecheck_misses_after = typecheck_compute_count(); + // Cohort-scoped "have we already resolved a closure sharing this + // subject earlier in THIS run" fact — a resolved-graph-memo hit + // proxy at the granularity the P1 receipt needs (whether entry N + // is reusing prior entries' module universe), not a raw + // `resolved_graph_memo` cache-slot read (that memo is entry-scoped + // and evicted on completion by design, so a raw post-hoc read + // cannot distinguish "reused" from "inserted then evicted"). + let resolved_graph_hit = + summary.entry_resolve_receipts.iter().any(|r| { + !p1_cohort_seen_subjects.insert(r.closure_subject.clone()) + }); + for r in &summary.entry_resolve_receipts { + p1_cohort_seen_subjects.insert(r.closure_subject.clone()); + } + (group_wall_ms, typecheck_misses_after, resolved_graph_hit) + } else { + (0, 0, false) + }; + let resolve_ms = summary.total_resolve_nanos / 1_000_000; + let eval_ms = summary.total_measured_nanos / 1_000_000; + summaries.push(summary); let snap = index_retention_snapshot(&index); if drain_detail { emit_floor_drain_group_line( @@ -19719,12 +20052,39 @@ fn run_discovery_corpus_with_options_inner( &snap, ); } + if p1_cohort_detail { + let modules_evicted = snap + .schedule_evictions + .saturating_sub(drain_prev.schedule_evictions); + let graphs_evicted = snap + .resolved_graph_evictions + .saturating_sub(drain_prev.resolved_graph_evictions); + let (cgroup_current, cgroup_peak) = p1_cohort_cgroup_memory(); + emit_p1_cohort_entry_line( + group_idx + 1, + total_groups, + &group_entry_label, + group_wall_ms, + resolve_ms, + eval_ms, + Some(typecheck_misses_after) == typecheck_misses_before, + resolved_graph_hit, + modules_evicted, + graphs_evicted, + snap.peak_rss_bytes, + cgroup_current, + cgroup_peak, + ); + } drain_peaks = retention_snapshot_peak(&drain_peaks, &snap); drain_prev = snap; } emit_floor_drain_receipt(&index, total_groups, &drain_peaks); - return Ok(attach_deferred_discovery_rows( + return Ok(finalize_discovery_summary( merge_discovery_summaries(summaries), + &rows, + options.node_frontier_selection, + selection_categorization_reason.clone(), deferred_rows, )); } @@ -19899,19 +20259,33 @@ fn run_discovery_corpus_with_options_inner( worker error — scheduler invariant violated; refusing a partial corpus" )); } - Ok(attach_deferred_discovery_rows( + Ok(finalize_discovery_summary( merge_discovery_summaries(summaries), + &rows, + options.node_frontier_selection, + selection_categorization_reason, deferred_rows, )) } }; } -fn attach_deferred_discovery_rows( +fn finalize_discovery_summary( mut summary: DiscoverySummary, + rows: &[DiscoveryRow], + _selection: NodeFrontierSelectionMode, + selection_categorization_reason: Option, deferred_rows: Vec, ) -> DiscoverySummary { summary.deferred_rows = deferred_rows; + summary.total_entry_groups = entry_row_groups(rows).len(); + summary.selected_entry_groups = summary + .witness_outcomes + .iter() + .map(|o| o.entry.as_str()) + .collect::>() + .len(); + summary.selection_categorization_reason = selection_categorization_reason; summary } @@ -19955,6 +20329,9 @@ fn merge_discovery_summaries(summaries: Vec) -> DiscoverySumma performance_receipts: Vec::new(), total_measured_nanos: 0, roster_closure_nodes: 0, + total_entry_groups: 0, + selected_entry_groups: 0, + selection_categorization_reason: None, }; for summary in summaries { merged.total += summary.total; @@ -20284,6 +20661,9 @@ fn run_discovery_rows( performance_receipts: Vec::new(), total_measured_nanos: 0, roster_closure_nodes: 0, + total_entry_groups: 0, + selected_entry_groups: 0, + selection_categorization_reason: None, }; let skip_enabled = selection != NodeFrontierSelectionMode::Off; // This shard's SUBJECT union closure, accumulated from the graphs it resolves. An ordinary @@ -24681,11 +25061,13 @@ mod moduleless_entry_skip_tests { #[cfg(test)] mod discovery_summary_merge_tests { use super::{ - compute_histogram_data, merge_discovery_summaries, project_witness_cost_receipt, + compute_histogram_data, finalize_discovery_summary, merge_discovery_summaries, + project_witness_cost_receipt, render_selection_degradation_receipt_line, repo_relative_dag_path, run_discovery_corpus_with_options, top_n_slowest_witnesses, - witness_execution_leg_cache_put, ClaimOutcome, DiscoveryCorpusOptions, DiscoverySummary, - DiscoveryWidthPolicy, DiscoveryWitnessOutcome, EntryResolveReceipt, - NodeFrontierSelectionMode, ResolveStageNanos, + witness_execution_leg_cache_put, ClaimOutcome, DiscoveryCorpusOptions, DiscoveryRow, + DiscoverySummary, DiscoveryWidthPolicy, DiscoveryWitnessOutcome, EntryResolveReceipt, + NodeFrontierSelectionMode, ResolveStageNanos, SelectionDegradationSnapshot, + SelectionSkippedDiscoveryRow, }; use crate::v1_interpreter::{ExecutionMode, PerformanceReceipt}; @@ -24774,6 +25156,9 @@ mod discovery_summary_merge_tests { ], total_measured_nanos: 56_000, roster_closure_nodes: 42, + total_entry_groups: 2, + selected_entry_groups: 2, + selection_categorization_reason: None, } } @@ -24791,6 +25176,93 @@ mod discovery_summary_merge_tests { assert_eq!(merged.roster_closure_nodes, 71); } + /// RED control: skip-before-resolve records `selection_skipped_rows` but does NOT add + /// `witness_outcomes` for those entries. `selected_entry_groups` must count executed + /// entry groups only — otherwise narrowed Applied runs mislabel as Superset. + #[test] + fn finalize_discovery_summary_selected_entry_groups_exclude_skip_before_resolve() { + let rows = vec![ + DiscoveryRow { + label: "w1".into(), + entry: "entry_a.dag".into(), + function: "f1".into(), + reads_live_tree: false, + }, + DiscoveryRow { + label: "w2".into(), + entry: "entry_b.dag".into(), + function: "f2".into(), + reads_live_tree: false, + }, + DiscoveryRow { + label: "w3".into(), + entry: "entry_c.dag".into(), + function: "f3".into(), + reads_live_tree: false, + }, + ]; + let summary = DiscoverySummary { + total: 2, + passed: 2, + skipped: 1, + deferred_rows: Vec::new(), + predicted_unaffected: Vec::new(), + selection_skipped_rows: vec![SelectionSkippedDiscoveryRow { + entry: "entry_c.dag".into(), + function: "f3".into(), + provenance: "skip-before-resolve-fast-path".into(), + }], + divergences: Vec::new(), + failures: Vec::new(), + witness_outcomes: vec![ + DiscoveryWitnessOutcome { + entry: "entry_a.dag".into(), + module_path: "test.a".into(), + function: "f1".into(), + outcome: ClaimOutcome::Pass, + execution_leg: "InterpretedLeg".into(), + }, + DiscoveryWitnessOutcome { + entry: "entry_b.dag".into(), + module_path: "test.b".into(), + function: "f2".into(), + outcome: ClaimOutcome::Pass, + execution_leg: "InterpretedLeg".into(), + }, + ], + entry_resolve_receipts: Vec::new(), + total_resolve_nanos: 0, + total_stage_nanos: ResolveStageNanos::default(), + performance_receipts: Vec::new(), + total_measured_nanos: 0, + roster_closure_nodes: 0, + total_entry_groups: 0, + selected_entry_groups: 0, + selection_categorization_reason: None, + }; + let finalized = finalize_discovery_summary( + summary, + &rows, + NodeFrontierSelectionMode::Applied, + None, + Vec::new(), + ); + assert_eq!(finalized.total_entry_groups, 3); + assert_eq!(finalized.selected_entry_groups, 2); + let snapshot = SelectionDegradationSnapshot::from_summary( + NodeFrontierSelectionMode::Applied, + &finalized, + ); + let line = + render_selection_degradation_receipt_line(&source_roots(), &snapshot).expect("receipt"); + assert!( + line.contains("selection_state=SelectionApplied"), + "skip-before-resolve must not inflate selected to total (would read Superset): {line}" + ); + assert!(line.contains("selected_entry_groups=2")); + assert!(line.contains("total_entry_groups=3")); + } + #[test] fn production_witness_cost_projection_preserves_failed_and_refused() { let mut summary = sample_summary(); diff --git a/src/v1/stage0/src/cli_run/materialization_provider_consumer.rs b/src/v1/stage0/src/cli_run/materialization_provider_consumer.rs index 429c3fc6f08..a1825c86a86 100644 --- a/src/v1/stage0/src/cli_run/materialization_provider_consumer.rs +++ b/src/v1/stage0/src/cli_run/materialization_provider_consumer.rs @@ -4,7 +4,7 @@ use crate::resolved_graph_cache::{ }; use crate::std_content_hash::fnv1a64_structural_hex_digest; use crate::v1_interpreter::{self, ExecutionMode, InterpContext, Value}; -use std::cell::RefCell; +use std::cell::{Cell, RefCell}; use std::rc::Rc; // SCAFFOLD (§7 seed-retained HAND-RUST — authority: gunbc.materialization_provider_consumer_scaffold; @@ -52,15 +52,49 @@ fn build_materialization_provider_ctx_cold() -> Result { )) } +thread_local! { + /// Open exactly while `build_materialization_provider_ctx_cold` is running. The + /// memo slot is only written AFTER the cold build returns, so during the build a + /// re-entrant demand reads an empty slot and would rebuild the provider closure — + /// each rebuild a full nested resolve that can re-enter again. That is the + /// unbounded-recursion shape behind the repeat-resolve OOM. + static MATERIALIZATION_PROVIDER_CTX_BUILDING: Cell = const { Cell::new(false) }; +} + +/// Re-entrant provider-ctx construction is a typed, located refusal — never a silent +/// rebuild that recurses. Suppressing routing at each known seam is validation (it +/// concedes the re-entrant state is writable, one missed seam away from an OOM); this +/// wall makes the recursion itself unreachable regardless of which caller re-enters +/// (§5 — correctness by construction, and a failure arm that refuses rather than +/// widens). It fails loud and located, so a new re-entrant caller surfaces as a +/// diagnostic instead of as a dead runner. fn materialization_provider_ctx() -> Result, String> { - MATERIALIZATION_PROVIDER_CTX.with(|slot| { - if let Some(ctx) = slot.borrow().clone() { - return Ok(ctx); + if let Some(ctx) = MATERIALIZATION_PROVIDER_CTX.with(|slot| slot.borrow().clone()) { + return Ok(ctx); + } + if MATERIALIZATION_PROVIDER_CTX_BUILDING.with(|b| b.get()) { + return Err( + "materialization_provider_ctx: re-entrant provider-ctx construction refused \ + (a demand for the materialization provider was raised while the provider's own \ + authority closure was still being resolved). Resolving that closure must not route \ + back through the provider — the caller is inside the bootstrap window and must \ + suppress provider routing." + .to_string(), + ); + } + struct BuildGuard; + impl Drop for BuildGuard { + fn drop(&mut self) { + MATERIALIZATION_PROVIDER_CTX_BUILDING.with(|b| b.set(false)); } - let ctx = Rc::new(build_materialization_provider_ctx_cold()?); - *slot.borrow_mut() = Some(ctx.clone()); - Ok(ctx) - }) + } + MATERIALIZATION_PROVIDER_CTX_BUILDING.with(|b| b.set(true)); + let ctx = { + let _guard = BuildGuard; + Rc::new(build_materialization_provider_ctx_cold()?) + }; + MATERIALIZATION_PROVIDER_CTX.with(|slot| *slot.borrow_mut() = Some(ctx.clone())); + Ok(ctx) } fn wire_digest_str(hex: &str) -> Result { @@ -461,6 +495,19 @@ pub fn materialization_provider_ctx_build_count_for_test() -> usize { MATERIALIZATION_PROVIDER_CTX_BUILD_COUNT.load(std::sync::atomic::Ordering::SeqCst) } +/// Drives the re-entrancy wall directly: opens the build window (as an in-flight +/// cold build does), clears the memo, and demands the ctx. The wall's discriminating +/// control — with the wall removed this rebuilds the provider closure instead of +/// refusing, which is the unbounded-recursion shape. +#[doc(hidden)] +pub fn provider_ctx_reentrancy_refusal_for_test() -> Result, String> { + MATERIALIZATION_PROVIDER_CTX.with(|slot| *slot.borrow_mut() = None); + MATERIALIZATION_PROVIDER_CTX_BUILDING.with(|b| b.set(true)); + let result = materialization_provider_ctx(); + MATERIALIZATION_PROVIDER_CTX_BUILDING.with(|b| b.set(false)); + result +} + #[doc(hidden)] pub fn reset_materialization_provider_ctx_for_test() { MATERIALIZATION_PROVIDER_CTX.with(|slot| *slot.borrow_mut() = None); diff --git a/src/v1/stage0/src/compiler_tests.rs b/src/v1/stage0/src/compiler_tests.rs index e9aef08f9e5..dced212012b 100644 --- a/src/v1/stage0/src/compiler_tests.rs +++ b/src/v1/stage0/src/compiler_tests.rs @@ -325,19 +325,33 @@ mod compiler_tests { .spawn(|| { let left_source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile { path: "occurrence_sidecar_left.dag".to_string(), - content: "module occurrence.sidecar_left\nfn shared(x: Int) -> Int { x }\n" - .to_string(), + content: "module occurrence.sidecar_left\nfn shared(x: Int) -> Int { x }\n".to_string(), }); let right_source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile { path: "occurrence_sidecar_right.dag".to_string(), - content: "module occurrence.sidecar_right\nfn shared(x: Int) -> Int { x }\n" - .to_string(), + content: "module occurrence.sidecar_right\nfn shared(x: Int) -> Int { x }\n".to_string(), }); - let resolved = - crate::v1_compiler_compile::compile_to_resolved(std::rc::Rc::new(im::vector![ - left_source, - right_source - ])); + let mut expected_source_indices = im::HashMap::new(); + expected_source_indices.insert( + left_source.path.clone(), + crate::v1_std_core::build_newline_index( + left_source.path.clone(), + left_source.content.clone(), + ), + ); + let expected_left = crate::v1_compiler_parse::parse_with_table_in_occurrence_scope( + crate::v1_compiler_tokenize::tokenize( + left_source.content.clone(), + left_source.path.clone(), + ), + std::rc::Rc::new(expected_source_indices), + crate::v1_std_core::empty_intern_table(), + crate::std_occurrence_identity::occurrence_id_allocator_initial(), + ); + assert!(expected_left.result.error.is_none()); + let resolved = crate::v1_compiler_compile::compile_to_resolved( + std::rc::Rc::new(im::vector![left_source.clone(), right_source]), + ); let graph = resolved .graph .as_ref() @@ -366,8 +380,20 @@ mod compiler_tests { assert_eq!(&decoded_module, typed_module); } - let graph_bytes = - serde_json::to_vec(graph).expect("serialize resolved graph occurrence sidecar"); + let rebuilt_left = graph.modules.iter() + .filter_map(|typed_module| typed_module.occurrence_transport.as_ref()) + .find(|transport| transport.index.entries.iter().any(|entry| { + entry.projection.diagnostic_span.file == left_source.path + })) + .expect("compiled left module must retain its occurrence sidecar"); + assert_eq!( + rebuilt_left, + &expected_left.occurrence_transport, + "production reference rebuild must preserve exact sidecar ids and containment paths" + ); + + let graph_bytes = serde_json::to_vec(graph) + .expect("serialize resolved graph occurrence sidecar"); let decoded_graph: std::rc::Rc = serde_json::from_slice(&graph_bytes) .expect("deserialize resolved graph occurrence sidecar"); diff --git a/src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs b/src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs index 141919f3c71..f628130829c 100644 --- a/src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs +++ b/src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs @@ -21,7 +21,7 @@ pub fn stage0_crate_layout_generated_note() -> String { pub fn generated_pub_mod_block() -> String { thread_local! { static CACHED: String = { - "\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_program_partition;\npub mod v2_compiler_tokenize;\npub mod v2_compiler_infer;".to_string() + "\n#[macro_use]\npub mod v1_interpreter_dispatch_generated;\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_program_partition;\npub mod v2_compiler_tokenize;\npub mod v2_compiler_infer;".to_string() }; } CACHED.with(|c: &String| c.clone()) @@ -30,7 +30,7 @@ pub fn generated_pub_mod_block() -> String { pub fn generated_pub_mod_basenames() -> Rc> { thread_local! { static CACHED: Rc> = { - Rc::new(vec!["v1_interpreter".to_string(), "cli_run".to_string(), "coproduct_reflection".to_string(), "resolved_graph_cache".to_string(), "shared_typecheck_store".to_string(), "recorded_fixture".to_string(), "memory_governor".to_string(), "module_path_index".to_string(), "usv_pilot_v2_std_algebra".to_string(), "usv_pilot_v2_std_collection".to_string(), "usv_pilot_v2_std_node".to_string(), "v2_compiler_resolve".to_string(), "v2_compiler_program_partition".to_string(), "v2_compiler_tokenize".to_string(), "v2_compiler_infer".to_string()]) + Rc::new(vec!["v1_interpreter".to_string(), "cli_run".to_string(), "coproduct_reflection".to_string(), "resolved_graph_cache".to_string(), "shared_typecheck_store".to_string(), "recorded_fixture".to_string(), "memory_governor".to_string(), "module_path_index".to_string(), "usv_pilot_v2_std_algebra".to_string(), "usv_pilot_v2_std_collection".to_string(), "usv_pilot_v2_std_node".to_string(), "v2_compiler_resolve".to_string(), "v2_compiler_program_partition".to_string(), "v2_compiler_tokenize".to_string(), "v2_compiler_infer".to_string(), "v1_interpreter_dispatch_generated".to_string()]) }; } CACHED.with(|c: &Rc>| c.clone()) @@ -39,7 +39,7 @@ pub fn generated_pub_mod_basenames() -> Rc> { pub fn generated_stage0_filenames() -> Rc> { thread_local! { static CACHED: Rc> = { - Rc::new(vec!["v1_interpreter.rs".to_string(), "cli_run.rs".to_string(), "coproduct_reflection.rs".to_string(), "resolved_graph_cache.rs".to_string(), "shared_typecheck_store.rs".to_string(), "recorded_fixture.rs".to_string(), "main.rs".to_string(), "phase_profile.rs".to_string(), "pre_push.rs".to_string(), "census_exclude_derive.rs".to_string(), "memory_governor.rs".to_string(), "std_lens_verdict.rs".to_string(), "v2_compiler_body_producer.rs".to_string(), "v2_compiler_normalize.rs".to_string(), "v2_compiler_target_carriers.rs".to_string(), "v2_compiler_discovery_enumeration.rs".to_string(), "v2_compiler_parse_engine_hooks.rs".to_string(), "v2_compiler_use_site_verdict.rs".to_string(), "usv_pilot_v2_std_algebra.rs".to_string(), "usv_pilot_v2_std_collection.rs".to_string(), "usv_pilot_v2_std_node.rs".to_string(), "v2_compiler_resolve.rs".to_string(), "v2_compiler_program_partition.rs".to_string(), "v2_compiler_tokenize.rs".to_string(), "v2_compiler_infer.rs".to_string()]) + Rc::new(vec!["v1_interpreter.rs".to_string(), "cli_run.rs".to_string(), "coproduct_reflection.rs".to_string(), "resolved_graph_cache.rs".to_string(), "shared_typecheck_store.rs".to_string(), "recorded_fixture.rs".to_string(), "main.rs".to_string(), "phase_profile.rs".to_string(), "pre_push.rs".to_string(), "census_exclude_derive.rs".to_string(), "memory_governor.rs".to_string(), "std_lens_verdict.rs".to_string(), "v2_compiler_body_producer.rs".to_string(), "v2_compiler_normalize.rs".to_string(), "v2_compiler_target_carriers.rs".to_string(), "v2_compiler_discovery_enumeration.rs".to_string(), "v2_compiler_parse_engine_hooks.rs".to_string(), "v2_compiler_use_site_verdict.rs".to_string(), "usv_pilot_v2_std_algebra.rs".to_string(), "usv_pilot_v2_std_collection.rs".to_string(), "usv_pilot_v2_std_node.rs".to_string(), "v2_compiler_resolve.rs".to_string(), "v2_compiler_program_partition.rs".to_string(), "v2_compiler_tokenize.rs".to_string(), "v2_compiler_infer.rs".to_string(), "v1_interpreter_dispatch_generated.rs".to_string()]) }; } CACHED.with(|c: &Rc>| c.clone()) diff --git a/src/v1/stage0/src/lib.rs b/src/v1/stage0/src/lib.rs index b649ba31537..6d170221452 100644 --- a/src/v1/stage0/src/lib.rs +++ b/src/v1/stage0/src/lib.rs @@ -15,8 +15,6 @@ use im::{OrdSet as BTreeSet, Vector as Vec}; -pub mod cli_run; -pub mod coproduct_reflection; pub mod extdeps_cargo; pub mod extdeps_cargo_version; pub mod extdeps_container_oci_digest; @@ -43,11 +41,6 @@ pub mod extdeps_version_semver; pub mod gunbc_rust_decl_type_overlay; pub mod gunbc_stage0_crate_layout_generated; pub mod gunbc_stage0_crate_partition_generated; -pub mod memory_governor; -pub mod module_path_index; -pub mod recorded_fixture; -pub mod resolved_graph_cache; -pub mod shared_typecheck_store; pub mod std_algebra; pub mod std_coercion; pub mod std_computation; @@ -87,9 +80,6 @@ pub mod std_termination; pub mod std_trait_derive_shape; pub mod std_types; pub mod std_unicode_types; -pub mod usv_pilot_v2_std_algebra; -pub mod usv_pilot_v2_std_collection; -pub mod usv_pilot_v2_std_node; pub mod v1_compiler_artifact; pub mod v1_compiler_closure_stub_v2_std_integer_rust; pub mod v1_compiler_closure_stub_v2_std_text_rust; @@ -132,22 +122,35 @@ pub mod v1_compiler_trace; pub mod v1_compiler_trait_derive_emit; pub mod v1_compiler_workspace_members; pub mod v1_gunbc_occurrence_binding_parser_walk; -pub mod v1_interpreter; pub mod v1_probe_emit_interp; pub mod v1_rt; pub mod v1_std_core; pub mod v1_test_non_ascii_perf_fixture; pub mod v1_tests_claim_caret_parse_smoke_test; pub mod v1_tests_claim_occurrence_binding_parser_walk_witness_test; +pub mod v1_tests_claim_occurrence_identity_debt_receipt_test; pub mod v1_tests_claim_pattern_binder_declaration_node_test; pub mod v1_tests_claim_required_expr_newline_continuation_test; +pub mod wt_a; +pub mod wt_b; +pub mod wt_common; +#[macro_use] +pub mod v1_interpreter_dispatch_generated; +pub mod cli_run; +pub mod coproduct_reflection; +pub mod memory_governor; +pub mod module_path_index; +pub mod recorded_fixture; +pub mod resolved_graph_cache; +pub mod shared_typecheck_store; +pub mod usv_pilot_v2_std_algebra; +pub mod usv_pilot_v2_std_collection; +pub mod usv_pilot_v2_std_node; +pub mod v1_interpreter; pub mod v2_compiler_infer; pub mod v2_compiler_program_partition; pub mod v2_compiler_resolve; pub mod v2_compiler_tokenize; -pub mod wt_a; -pub mod wt_b; -pub mod wt_common; pub struct NonEmptyVec(Vec); diff --git a/src/v1/stage0/src/std_occurrence_identity.rs b/src/v1/stage0/src/std_occurrence_identity.rs index 3fed178914e..3b482c896d3 100644 --- a/src/v1/stage0/src/std_occurrence_identity.rs +++ b/src/v1/stage0/src/std_occurrence_identity.rs @@ -241,30 +241,73 @@ pub struct OccurrenceTransport { } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] -pub struct OccurrenceIdentityConsumerRedDebt { +pub struct OccurrenceIdentityAcceptanceLaw { pub id: String, pub required_receipt: String, - pub owner: String, - pub dissolve_on: String, } -pub fn occurrence_identity_consumer_red_debt_rehome_note() -> String { +pub fn occurrence_identity_acceptance_law_rebuilt_reference() -> Rc +{ thread_local! { - static CACHED: String = { - "THE SIX ROWS BELOW ALL NAMED namespace-canonical-binding AS OWNER, which was correct while that node was the single broad namespace node and is wrong now that the recut split it (operator ruling, 2026-08-01). A roadmap split leaves every row that pointed at the old node pointing at the wrong boundary, and a debt row whose owner cannot accept it is untracked in the way that matters: nobody discovering the node can tell whether the row is theirs.\n\nCLASSIFIED BY ACTUAL BOUNDARY, not by which node the row prose happens to mention. Five are parser or collector identity facts: rebuilt-reference identity preservation, one-occurrence collector dedupe, structurally-equal distinct occurrences, pattern-declaration reachability, and same-spelling parser declaration isolation. Each is decidable at the structural producer that builds candidate populations, so each is owned by namespace-reference-derived-closure. Note that one-occurrence-collector-dedupe is the SAME obligation the operator assigned to P2 candidate construction, collapsing repeated discovery of one identical full identity before the cardinality fold is called; it was already written here and simply pointed at the wrong node.\n\nONE ROW STAYS. inferred-target-anchor-identity requires an inferred target projection to stay anchored to the exact authored occurrence rather than a rebuilt shell Node, spelling, or SourceSpan. That is a property of the production projection path, not of building the candidate population, so it stays with namespace-canonical-binding, the production changeover. It is the row most likely to be re-argued, so the reasoning is written here rather than left implicit: the question that decides it is whether the receipt can execute before the production sites are switched over. For the other five it can; for this one it cannot.\n\nNo row was deleted, weakened, or given a new dissolution trigger by this rehome. Each dissolve_on still names the RED that retires it, and each still deletes in the PR that lands its receipt.".to_string() + static CACHED: Rc = { + serde_json::from_value(serde_json::json!({"id": "rebuilt-reference-identity-preservation", "required_receipt": "A production reference rebuild preserves the exact sidecar occurrence identity and containment path; dropping or reminting the occurrence must make the consumer RED."})) + .expect("valid data definition") }; } - CACHED.with(|c: &String| c.clone()) + CACHED.with(|c: &Rc| c.clone()) +} + +pub fn occurrence_identity_acceptance_law_collector_dedupe() -> Rc +{ + thread_local! { + static CACHED: Rc = { + serde_json::from_value(serde_json::json!({"id": "one-occurrence-collector-dedupe", "required_receipt": "Two observations of one authored occurrence enter the collector once by exact occurrence identity, never by spelling, SourceSpan, or Node structure."})) + .expect("valid data definition") + }; + } + CACHED.with(|c: &Rc| c.clone()) +} + +pub fn occurrence_identity_acceptance_law_distinct_occurrences( +) -> Rc { + thread_local! { + static CACHED: Rc = { + serde_json::from_value(serde_json::json!({"id": "structurally-equal-distinct-occurrences", "required_receipt": "Structurally equal and equally spelled authored occurrences with distinct IDs remain two collector entries."})) + .expect("valid data definition") + }; + } + CACHED.with(|c: &Rc| c.clone()) } -pub fn occurrence_identity_consumer_red_debts() -> Rc>> { +pub fn occurrence_identity_acceptance_law_pattern_reachability( +) -> Rc { thread_local! { - static CACHED: Rc>> = { - serde_json::from_value(serde_json::json!([{"id": "rebuilt-reference-identity-preservation", "required_receipt": "A production reference rebuild preserves the exact sidecar occurrence identity and containment path; dropping or reminting the occurrence must make the consumer RED.", "owner": "namespace-reference-derived-closure", "dissolve_on": "DISSOLVE-ON: the rebuilt-reference production RED executes through the sidecar-consuming canonical binding boundary; delete this row in the same PR."}, {"id": "one-occurrence-collector-dedupe", "required_receipt": "Two observations of one authored occurrence enter the collector once by exact occurrence identity, never by spelling, SourceSpan, or Node structure.", "owner": "namespace-reference-derived-closure", "dissolve_on": "DISSOLVE-ON: the occurrence-safe collector dedupe RED executes against the sidecar consumer; delete this row in the same PR."}, {"id": "structurally-equal-distinct-occurrences", "required_receipt": "Structurally equal and equally spelled authored occurrences with distinct IDs remain two collector entries.", "owner": "namespace-reference-derived-closure", "dissolve_on": "DISSOLVE-ON: the distinct-authored-occurrences collector RED executes against the sidecar consumer; delete this row in the same PR."}, {"id": "pattern-declaration-reachability", "required_receipt": "Authoritative collection reaches every parser-minted pattern declaration occurrence, including nested pattern binders.", "owner": "namespace-reference-derived-closure", "dissolve_on": "DISSOLVE-ON: the pattern-declaration reachability RED executes through the production occurrence collector; delete this row in the same PR."}, {"id": "inferred-target-anchor-identity", "required_receipt": "An inferred target projection remains anchored to the exact authored occurrence instead of a rebuilt shell Node, spelling, or SourceSpan.", "owner": "namespace-canonical-binding", "dissolve_on": "DISSOLVE-ON: the inferred-target anchor RED executes through the production sidecar consumer; delete this row in the same PR."}, {"id": "same-spelling-parser-declaration-isolation", "required_receipt": "Same-spelling declarations and references in sibling match arms, nested lets, lambdas, and parameters retain distinct authored identities and containment paths without overwrite.", "owner": "namespace-reference-derived-closure", "dissolve_on": "DISSOLVE-ON: the full same-spelling parser-to-binding RED matrix executes at the canonical binding boundary; delete this row in the same PR."}])) + static CACHED: Rc = { + serde_json::from_value(serde_json::json!({"id": "pattern-declaration-reachability", "required_receipt": "Authoritative collection reaches every parser-minted pattern declaration occurrence, including nested pattern binders."})) .expect("valid data definition") }; } - CACHED.with(|c: &Rc>>| c.clone()) + CACHED.with(|c: &Rc| c.clone()) +} + +pub fn occurrence_identity_acceptance_law_parser_isolation() -> Rc +{ + thread_local! { + static CACHED: Rc = { + serde_json::from_value(serde_json::json!({"id": "same-spelling-parser-declaration-isolation", "required_receipt": "Same-spelling declarations and references in sibling match arms, nested lets, lambdas, and parameters retain distinct authored identities and containment paths without overwrite."})) + .expect("valid data definition") + }; + } + CACHED.with(|c: &Rc| c.clone()) +} + +pub fn occurrence_identity_acceptance_laws() -> Rc>> { + thread_local! { + static CACHED: Rc>> = { + Rc::new(vec![occurrence_identity_acceptance_law_rebuilt_reference(), occurrence_identity_acceptance_law_collector_dedupe(), occurrence_identity_acceptance_law_distinct_occurrences(), occurrence_identity_acceptance_law_pattern_reachability(), occurrence_identity_acceptance_law_parser_isolation()]) + }; + } + CACHED.with(|c: &Rc>>| c.clone()) } #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] diff --git a/src/v1/stage0/src/v1_compiler_compiler_tests_rust.rs b/src/v1/stage0/src/v1_compiler_compiler_tests_rust.rs index 33150364929..8ac6122aed5 100644 --- a/src/v1/stage0/src/v1_compiler_compiler_tests_rust.rs +++ b/src/v1/stage0/src/v1_compiler_compiler_tests_rust.rs @@ -53,7 +53,7 @@ pub fn ct_parse_tests() -> String { } pub fn ct_pipeline_test() -> String { - v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(" #[test]\n".to_string(), " fn pipeline_trivial_module() {\n".to_string()), " let result = std::thread::Builder::new()\n".to_string()), " .stack_size(16 * 1024 * 1024)\n".to_string()), " .spawn(|| {\n".to_string()), " let source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile {\n".to_string()), " path: \"test.dag\".to_string(),\n".to_string()), " content: \"module test\\ntype Foo { x: Int, name: String }\\nfn add(a: Int, b: Int) -> Int { a + b }\\n\".to_string(),\n".to_string()), " });\n".to_string()), " let result = crate::v1_compiler_compile::compile_sources(std::rc::Rc::new(im::vector![source]), crate::v1_compiler_artifact::RenderTarget::Rust);\n\n".to_string()), " assert!(\n".to_string()), " !result.files.is_empty(),\n".to_string()), " \"compile_sources should produce output files, got none\"\n".to_string()), " );\n\n".to_string()), " let errors: Vec<_> = result.diagnostics.iter()\n".to_string()), " .filter(|d| crate::v1_std_core::is_error_diagnostic(d.diagnostic.clone()))\n".to_string()), " .collect();\n".to_string()), " assert!(\n".to_string()), " errors.is_empty(),\n".to_string()), " \"compile_sources should produce no errors, got {:?}\",\n".to_string()), " errors\n".to_string()), " );\n\n".to_string()), " let has_content = result.files.iter().any(|f| !f.content.is_empty());\n".to_string()), " assert!(\n".to_string()), " has_content,\n".to_string()), " \"at least one output file should have non-empty content\"\n".to_string()), " );\n".to_string()), " })\n".to_string()), " .expect(\"failed to spawn thread\")\n".to_string()), " .join();\n".to_string()), " result.expect(\"pipeline_trivial_module test panicked\");\n".to_string()), " }\n\n".to_string()), " #[test]\n".to_string()), " fn pipeline_occurrence_sidecar_serde_round_trip() {\n".to_string()), " let result = std::thread::Builder::new()\n".to_string()), " .stack_size(16 * 1024 * 1024)\n".to_string()), " .spawn(|| {\n".to_string()), " let left_source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile {\n".to_string()), " path: \"occurrence_sidecar_left.dag\".to_string(),\n".to_string()), " content: \"module occurrence.sidecar_left\\nfn shared(x: Int) -> Int { x }\\n\".to_string(),\n".to_string()), " });\n".to_string()), " let right_source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile {\n".to_string()), " path: \"occurrence_sidecar_right.dag\".to_string(),\n".to_string()), " content: \"module occurrence.sidecar_right\\nfn shared(x: Int) -> Int { x }\\n\".to_string(),\n".to_string()), " });\n".to_string()), " let resolved = crate::v1_compiler_compile::compile_to_resolved(\n".to_string()), " std::rc::Rc::new(im::vector![left_source, right_source]),\n".to_string()), " );\n".to_string()), " let graph = resolved\n".to_string()), " .graph\n".to_string()), " .as_ref()\n".to_string()), " .expect(\"production compile must preserve a resolved graph\");\n".to_string()), " assert_eq!(graph.modules.len(), 2);\n".to_string()), " let mut occurrence_ids = std::collections::HashSet::new();\n".to_string()), " for typed_module in graph.modules.iter() {\n".to_string()), " let transport = typed_module\n".to_string()), " .occurrence_transport\n".to_string()), " .as_ref()\n".to_string()), " .expect(\"typed module must preserve occurrence transport\");\n".to_string()), " assert!(!transport.index.entries.is_empty());\n".to_string()), " assert!(!transport.declarations.is_empty());\n".to_string()), " assert!(!transport.references.is_empty());\n".to_string()), " for entry in transport.index.entries.iter() {\n".to_string()), " assert!(\n".to_string()), " occurrence_ids.insert(entry.projection.occurrence.value),\n".to_string()), " \"graph-scoped occurrence ids must remain disjoint across modules\"\n".to_string()), " );\n".to_string()), " }\n".to_string()), " let module_bytes = serde_json::to_vec(typed_module)\n".to_string()), " .expect(\"serialize typed module occurrence sidecar\");\n".to_string()), " let decoded_module: std::rc::Rc =\n".to_string()), " serde_json::from_slice(&module_bytes)\n".to_string()), " .expect(\"deserialize typed module occurrence sidecar\");\n".to_string()), " assert_eq!(&decoded_module, typed_module);\n".to_string()), " }\n\n".to_string()), " let graph_bytes = serde_json::to_vec(graph)\n".to_string()), " .expect(\"serialize resolved graph occurrence sidecar\");\n".to_string()), " let decoded_graph: std::rc::Rc =\n".to_string()), " serde_json::from_slice(&graph_bytes)\n".to_string()), " .expect(\"deserialize resolved graph occurrence sidecar\");\n".to_string()), " assert_eq!(&decoded_graph, graph);\n".to_string()), " for (before, after) in graph.modules.iter().zip(decoded_graph.modules.iter()) {\n".to_string()), " assert_eq!(after.occurrence_transport, before.occurrence_transport);\n".to_string()), " }\n\n".to_string()), " let resolved_bytes = serde_json::to_vec(&resolved)\n".to_string()), " .expect(\"serialize resolved pipeline occurrence sidecar\");\n".to_string()), " let decoded: std::rc::Rc =\n".to_string()), " serde_json::from_slice(&resolved_bytes)\n".to_string()), " .expect(\"deserialize resolved pipeline occurrence sidecar\");\n".to_string()), " assert_eq!(decoded, resolved);\n".to_string()), " })\n".to_string()), " .expect(\"failed to spawn thread\")\n".to_string()), " .join();\n".to_string()), " result.expect(\"pipeline_occurrence_sidecar_serde_round_trip panicked\");\n".to_string()), " }\n\n".to_string()) + v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(v1_rt::concat(" #[test]\n".to_string(), " fn pipeline_trivial_module() {\n".to_string()), " let result = std::thread::Builder::new()\n".to_string()), " .stack_size(16 * 1024 * 1024)\n".to_string()), " .spawn(|| {\n".to_string()), " let source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile {\n".to_string()), " path: \"test.dag\".to_string(),\n".to_string()), " content: \"module test\\ntype Foo { x: Int, name: String }\\nfn add(a: Int, b: Int) -> Int { a + b }\\n\".to_string(),\n".to_string()), " });\n".to_string()), " let result = crate::v1_compiler_compile::compile_sources(std::rc::Rc::new(im::vector![source]), crate::v1_compiler_artifact::RenderTarget::Rust);\n\n".to_string()), " assert!(\n".to_string()), " !result.files.is_empty(),\n".to_string()), " \"compile_sources should produce output files, got none\"\n".to_string()), " );\n\n".to_string()), " let errors: Vec<_> = result.diagnostics.iter()\n".to_string()), " .filter(|d| crate::v1_std_core::is_error_diagnostic(d.diagnostic.clone()))\n".to_string()), " .collect();\n".to_string()), " assert!(\n".to_string()), " errors.is_empty(),\n".to_string()), " \"compile_sources should produce no errors, got {:?}\",\n".to_string()), " errors\n".to_string()), " );\n\n".to_string()), " let has_content = result.files.iter().any(|f| !f.content.is_empty());\n".to_string()), " assert!(\n".to_string()), " has_content,\n".to_string()), " \"at least one output file should have non-empty content\"\n".to_string()), " );\n".to_string()), " })\n".to_string()), " .expect(\"failed to spawn thread\")\n".to_string()), " .join();\n".to_string()), " result.expect(\"pipeline_trivial_module test panicked\");\n".to_string()), " }\n\n".to_string()), " #[test]\n".to_string()), " fn pipeline_occurrence_sidecar_serde_round_trip() {\n".to_string()), " let result = std::thread::Builder::new()\n".to_string()), " .stack_size(16 * 1024 * 1024)\n".to_string()), " .spawn(|| {\n".to_string()), " let left_source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile {\n".to_string()), " path: \"occurrence_sidecar_left.dag\".to_string(),\n".to_string()), " content: \"module occurrence.sidecar_left\\nfn shared(x: Int) -> Int { x }\\n\".to_string(),\n".to_string()), " });\n".to_string()), " let right_source = std::rc::Rc::new(crate::v1_compiler_compile::SourceFile {\n".to_string()), " path: \"occurrence_sidecar_right.dag\".to_string(),\n".to_string()), " content: \"module occurrence.sidecar_right\\nfn shared(x: Int) -> Int { x }\\n\".to_string(),\n".to_string()), " });\n".to_string()), " let mut expected_source_indices = im::HashMap::new();\n".to_string()), " expected_source_indices.insert(\n".to_string()), " left_source.path.clone(),\n".to_string()), " crate::v1_std_core::build_newline_index(\n".to_string()), " left_source.path.clone(),\n".to_string()), " left_source.content.clone(),\n".to_string()), " ),\n".to_string()), " );\n".to_string()), " let expected_left = crate::v1_compiler_parse::parse_with_table_in_occurrence_scope(\n".to_string()), " crate::v1_compiler_tokenize::tokenize(\n".to_string()), " left_source.content.clone(),\n".to_string()), " left_source.path.clone(),\n".to_string()), " ),\n".to_string()), " std::rc::Rc::new(expected_source_indices),\n".to_string()), " crate::v1_std_core::empty_intern_table(),\n".to_string()), " crate::std_occurrence_identity::occurrence_id_allocator_initial(),\n".to_string()), " );\n".to_string()), " assert!(expected_left.result.error.is_none());\n".to_string()), " let resolved = crate::v1_compiler_compile::compile_to_resolved(\n".to_string()), " std::rc::Rc::new(im::vector![left_source.clone(), right_source]),\n".to_string()), " );\n".to_string()), " let graph = resolved\n".to_string()), " .graph\n".to_string()), " .as_ref()\n".to_string()), " .expect(\"production compile must preserve a resolved graph\");\n".to_string()), " assert_eq!(graph.modules.len(), 2);\n".to_string()), " let mut occurrence_ids = std::collections::HashSet::new();\n".to_string()), " for typed_module in graph.modules.iter() {\n".to_string()), " let transport = typed_module\n".to_string()), " .occurrence_transport\n".to_string()), " .as_ref()\n".to_string()), " .expect(\"typed module must preserve occurrence transport\");\n".to_string()), " assert!(!transport.index.entries.is_empty());\n".to_string()), " assert!(!transport.declarations.is_empty());\n".to_string()), " assert!(!transport.references.is_empty());\n".to_string()), " for entry in transport.index.entries.iter() {\n".to_string()), " assert!(\n".to_string()), " occurrence_ids.insert(entry.projection.occurrence.value),\n".to_string()), " \"graph-scoped occurrence ids must remain disjoint across modules\"\n".to_string()), " );\n".to_string()), " }\n".to_string()), " let module_bytes = serde_json::to_vec(typed_module)\n".to_string()), " .expect(\"serialize typed module occurrence sidecar\");\n".to_string()), " let decoded_module: std::rc::Rc =\n".to_string()), " serde_json::from_slice(&module_bytes)\n".to_string()), " .expect(\"deserialize typed module occurrence sidecar\");\n".to_string()), " assert_eq!(&decoded_module, typed_module);\n".to_string()), " }\n\n".to_string()), " let rebuilt_left = graph.modules.iter()\n".to_string()), " .filter_map(|typed_module| typed_module.occurrence_transport.as_ref())\n".to_string()), " .find(|transport| transport.index.entries.iter().any(|entry| {\n".to_string()), " entry.projection.diagnostic_span.file == left_source.path\n".to_string()), " }))\n".to_string()), " .expect(\"compiled left module must retain its occurrence sidecar\");\n".to_string()), " assert_eq!(\n".to_string()), " rebuilt_left,\n".to_string()), " &expected_left.occurrence_transport,\n".to_string()), " \"production reference rebuild must preserve exact sidecar ids and containment paths\"\n".to_string()), " );\n\n".to_string()), " let graph_bytes = serde_json::to_vec(graph)\n".to_string()), " .expect(\"serialize resolved graph occurrence sidecar\");\n".to_string()), " let decoded_graph: std::rc::Rc =\n".to_string()), " serde_json::from_slice(&graph_bytes)\n".to_string()), " .expect(\"deserialize resolved graph occurrence sidecar\");\n".to_string()), " assert_eq!(&decoded_graph, graph);\n".to_string()), " for (before, after) in graph.modules.iter().zip(decoded_graph.modules.iter()) {\n".to_string()), " assert_eq!(after.occurrence_transport, before.occurrence_transport);\n".to_string()), " }\n\n".to_string()), " let resolved_bytes = serde_json::to_vec(&resolved)\n".to_string()), " .expect(\"serialize resolved pipeline occurrence sidecar\");\n".to_string()), " let decoded: std::rc::Rc =\n".to_string()), " serde_json::from_slice(&resolved_bytes)\n".to_string()), " .expect(\"deserialize resolved pipeline occurrence sidecar\");\n".to_string()), " assert_eq!(decoded, resolved);\n".to_string()), " })\n".to_string()), " .expect(\"failed to spawn thread\")\n".to_string()), " .join();\n".to_string()), " result.expect(\"pipeline_occurrence_sidecar_serde_round_trip panicked\");\n".to_string()), " }\n\n".to_string()) } pub fn ct_self_parse_all_test() -> String { diff --git a/src/v1/stage0/src/v1_compiler_emit_rust.rs b/src/v1/stage0/src/v1_compiler_emit_rust.rs index 131b9381de5..5a8e14f23fa 100644 --- a/src/v1/stage0/src/v1_compiler_emit_rust.rs +++ b/src/v1/stage0/src/v1_compiler_emit_rust.rs @@ -5296,40 +5296,90 @@ pub fn emit_v2_std_text_closure_stub_module() -> Rc { }) } -pub fn emit_lib_rs_from_files( - all_module_files: Rc>>, - has_compiler_tests: bool, -) -> Rc { +pub fn lib_rs_mod_name_from_file(f: Rc) -> String { { let src_prefix_len = v1_rt::string_length(&rust_source_root()); let ext_len = v1_rt::string_length(&rust_source_ext()); - let mod_decls = Rc::new({ + let path_len = v1_rt::string_length(&f.path.clone()); + v1_rt::substring( + &f.path.clone(), + src_prefix_len.clone(), + (path_len.clone() - ext_len.clone()), + ) + } +} + +pub fn emit_lib_rs_mod_decl(mod_name: String) -> String { + if (mod_name.clone() == "v1_interpreter_dispatch_generated".to_string()) { + "#[macro_use]\npub mod v1_interpreter_dispatch_generated;".to_string() + } else { + v1_rt::concat( + v1_rt::concat( + v1_rt::concat( + v1_rt::concat( + rust_visibility_prefix(), + rust_items().module_keyword.clone(), + ), + " ".to_string(), + ), + mod_name.clone(), + ), + ";".to_string(), + ) + } +} + +pub fn order_lib_rs_mod_names(mod_names: Rc>) -> Rc> { + { + let without_dispatch = Rc::new({ let mut __result = Vec::new(); - for f in all_module_files.clone().iter().cloned() { - __result.push({ - let path_len = v1_rt::string_length(&f.path.clone()); - let mod_name = v1_rt::substring( - &f.path.clone(), - src_prefix_len.clone(), - (path_len.clone() - ext_len.clone()), - ); + for n in mod_names.clone().iter().cloned() { + if (n.clone() != "v1_interpreter_dispatch_generated".to_string()) { + __result.push(n); + } + } + __result + }); + without_dispatch.clone().iter().cloned().fold( + Rc::new(vec![]), + |acc: Rc>, name: String| { + if (name.clone() == "v1_interpreter".to_string()) { v1_rt::concat( v1_rt::concat( - v1_rt::concat( - v1_rt::concat( - rust_visibility_prefix(), - rust_items().module_keyword.clone(), - ), - " ".to_string(), - ), - mod_name.clone(), + acc.clone(), + Rc::new(vec!["v1_interpreter_dispatch_generated".to_string()]), ), - ";".to_string(), + Rc::new(vec![name.clone()]), ) - }); - } - __result - }); + } else { + v1_rt::concat(acc.clone(), Rc::new(vec![name.clone()])) + } + }, + ) + } +} + +pub fn emit_lib_rs_from_files( + all_module_files: Rc>>, + has_compiler_tests: bool, +) -> Rc { + { + let mod_names = order_lib_rs_mod_names(Rc::new( + all_module_files + .clone() + .iter() + .cloned() + .map(lib_rs_mod_name_from_file) + .collect::>(), + )); + let mod_decls = Rc::new( + mod_names + .clone() + .iter() + .cloned() + .map(emit_lib_rs_mod_decl) + .collect::>(), + ); let hand_maintained_mods = if has_compiler_tests.clone() { generated_pub_mod_block() } else { diff --git a/src/v1/stage0/src/v1_compiler_infer_method.rs b/src/v1/stage0/src/v1_compiler_infer_method.rs index 2c4078648cf..9fddd6e4591 100644 --- a/src/v1/stage0/src/v1_compiler_infer_method.rs +++ b/src/v1/stage0/src/v1_compiler_infer_method.rs @@ -536,11 +536,6 @@ pub fn builtin_function_registry() -> Rc>> { "census_corpus_roots_follow_layer_authority".to_string(), bool_type(), ); - let m = v1_rt::rc_map_insert( - m.clone(), - "interpreter_dispatch_arm_rows".to_string(), - list_of_type_variable("interpreter_dispatch_arm_row_elem".to_string()), - ); let m = v1_rt::rc_map_insert( m.clone(), "transport_script_position_facts_for_path".to_string(), diff --git a/src/v1/stage0/src/v1_interpreter.rs b/src/v1/stage0/src/v1_interpreter.rs index fe8b3d70c12..47117dcb5e1 100644 --- a/src/v1/stage0/src/v1_interpreter.rs +++ b/src/v1/stage0/src/v1_interpreter.rs @@ -3295,14 +3295,10 @@ fn match_pattern( } } -/// SINGLE AUTHORITY for the v1 interpreter's v4 std-bridge dispatch. -/// -/// Before this, every bridge name was written TWICE -- once in a -/// `*_BRIDGE_FNS` const that the guard predicate tested, once in the match -/// arm that dispatched it -- so a name could sit in one and not the other and -/// nothing would say so. The const list, the dispatch, and the enumerable -/// roster now all expand from these tokens, so they cannot disagree -/// (DESIGN.md §3 single authority, §5 construction over validation). +/// Handler bodies for v4 std-bridge dispatch. Roster authority is +/// `v1_interpreter_authored_roster_arms()` in `.dag`; generated +/// `lookup_eval_call_bridge` routes spellings before this macro matches on +/// the generated enum variant for each arm identity. macro_rules! v1_bridge_family_arms { ($cb:ident, $fname:ident, $args:ident, $node:ident, $ctx:ident) => { $cb! { @@ -3356,43 +3352,31 @@ macro_rules! v1_bridge_family_arms { /// Expansion 1: the name lists the guard predicate tests. macro_rules! v1_bridge_consts { ($f:ident, $a:ident, $n:ident, $c:ident; - $(family $cname:ident $module:literal { $(arm $id:literal { $lit:literal } => $body:expr ,)* })*) => { + $(family $cname:ident $module:literal { $(arm $id:tt { $lit:literal } => $body:expr ,)* })*) => { $( pub(crate) const $cname: &[&str] = &[$($lit),*]; )* }; } v1_bridge_family_arms!(v1_bridge_consts, func_name, args, node, ctx); -/// Expansion 2: the dispatch itself. macro_rules! v1_bridge_dispatch { ($f:ident, $a:ident, $n:ident, $c:ident; - $(family $cname:ident $module:literal { $(arm $id:literal { $lit:literal } => $body:expr ,)* })*) => { + $(family $cname:ident $module:literal { $(arm $id:tt { $lit:literal } => $body:expr ,)* })*) => { $( if is_v4_bridge_family($c, &$f, $cname, $module) { - return match $f.as_str() { - $($lit => $body,)* - _ => unreachable!("bridge fn set mismatch: {}", $module), + return match $crate::v1_interpreter_dispatch_generated::lookup_eval_call_bridge(&$f) { + Some(arm) => match arm { + $( eval_call_bridge_arm!($id) => $body , )* + _ => unreachable!("bridge family guard/lookup mismatch for {}", $module), + }, + None => unreachable!("bridge fn set mismatch: {}", $module), }; } )* }; } -/// Expansion 3: the roster, from the same tokens. -macro_rules! v1_bridge_roster { - ($f:ident, $a:ident, $n:ident, $c:ident; - $(family $cname:ident $module:literal { $(arm $id:literal { $lit:literal } => $body:expr ,)* })*) => { - &[$($(($id, $lit, $module)),*),*] - }; -} - -/// The v4 std-bridge dispatch surface, enumerated: (arm identity, authored -/// spelling, declaring .dag module). -pub fn v1_bridge_arm_spellings() -> &'static [(&'static str, &'static str, &'static str)] { - v1_bridge_family_arms!(v1_bridge_roster, func_name, args, node, ctx) -} - -/// One guard for every bridge family. This replaced nine byte-identical +/// One guard for every bridge family. /// predicates that differed only in their name list and module string. fn is_v4_bridge_family(ctx: &InterpContext, func_name: &str, names: &[&str], module: &str) -> bool { if !names.contains(&func_name) { @@ -3403,9 +3387,9 @@ fn is_v4_bridge_family(ctx: &InterpContext, func_name: &str, names: &[&str], mod .is_some_and(|info| info.module_name == module) } -/// SINGLE AUTHORITY for the v2.std.collection map grounding. This site -/// carried the same name fork the bridges did: each spelling appeared in the -/// const the guard tested AND in the match that mapped it to a builtin. +/// Handler bodies for v2.std.collection map grounding. Roster authority is +/// `v1_interpreter_authored_roster_arms()`; generated lookup routes spellings +/// before this macro matches on the generated enum variant. macro_rules! v1_map_grounding_arms { ($cb:ident, $fname:ident) => { $cb! { @@ -3418,35 +3402,25 @@ macro_rules! v1_map_grounding_arms { /// Expansion 1: the name list the guard predicate tests. macro_rules! v1_map_grounding_names { - ($f:ident; $(arm $id:literal { $($lit:literal)|+ } => $body:expr ,)*) => { + ($f:ident; $(arm $id:tt { $($lit:literal)|+ } => $body:expr ,)*) => { const STD_COLLECTION_MAP_GROUNDED_FNS: &[&str] = &[$($($lit),+),*]; }; } v1_map_grounding_arms!(v1_map_grounding_names, name); -/// Expansion 2: the spelling -> builtin mapping. +/// Expansion 2: the spelling -> builtin mapping (R1: roster-generated lookup). macro_rules! v1_map_grounding_dispatch { - ($f:ident; $(arm $id:literal { $($lit:literal)|+ } => $body:expr ,)*) => { - match $f { - $($($lit)|+ => $body,)* - _ => return None, + ($f:ident; $(arm $id:tt { $($lit:literal)|+ } => $body:expr ,)*) => { + match $crate::v1_interpreter_dispatch_generated::lookup_try_v2_std_collection_map_primitive_grounding($f) { + Some(arm) => match arm { + $( try_v2_std_collection_map_primitive_grounding_arm!($id) => $body , )* + }, + None => return None, } }; } -/// Expansion 3: the roster, from the same tokens. -macro_rules! v1_map_grounding_roster { - ($f:ident; $(arm $id:literal { $($lit:literal)|+ } => $body:expr ,)*) => { - &[$(($id, &[$($lit),+])),*] - }; -} - -/// The map-grounding surface, enumerated. -pub fn v1_map_grounding_arm_spellings() -> &'static [(&'static str, &'static [&'static str])] { - v1_map_grounding_arms!(v1_map_grounding_roster, name) -} - const V2_STD_COLLECTION_MODULE: &str = "v2.std.collection"; pub fn std_node_bridge_fn_names() -> &'static [&'static str] { @@ -3509,9 +3483,10 @@ fn try_v2_std_collection_map_primitive_grounding( } } -/// SINGLE AUTHORITY for the two native fold intercepts. These run BEFORE the -/// free-call dispatch, which is why `fold_list` never reaches the builtin -/// registry and was invisible to every roster that read the registry alone. +/// Handler bodies for native fold intercepts (run before free-call dispatch). +/// Roster authority is `v1_interpreter_authored_roster_arms()`; generated +/// `lookup_eval_call_native_intercept` routes spellings before this macro +/// matches on the generated enum variant. macro_rules! v1_native_intercept_arms { ($cb:ident, $fname:ident, $args:ident, $env:ident, $ctx:ident) => { $cb! { @@ -3524,28 +3499,17 @@ macro_rules! v1_native_intercept_arms { }; } -/// Expansion 1: the dispatch. macro_rules! v1_native_intercept_dispatch { - ($f:ident, $a:ident, $e:ident, $c:ident; $(arm $id:literal { $lit:literal } => $body:expr ,)*) => { - match $f.as_str() { - $($lit => $body,)* - _ => {} + ($f:ident, $a:ident, $e:ident, $c:ident; $(arm $id:tt { $lit:literal } => $body:expr ,)*) => { + match $crate::v1_interpreter_dispatch_generated::lookup_eval_call_native_intercept(&$f) { + Some(arm) => match arm { + $( eval_call_native_intercept_arm!($id) => $body , )* + }, + None => {} } }; } -/// Expansion 2: the roster, from the same tokens. -macro_rules! v1_native_intercept_roster { - ($f:ident, $a:ident, $e:ident, $c:ident; $(arm $id:literal { $lit:literal } => $body:expr ,)*) => { - &[$(($id, $lit)),*] - }; -} - -/// The native intercept surface, enumerated. -pub fn v1_native_intercept_arm_spellings() -> &'static [(&'static str, &'static str)] { - v1_native_intercept_arms!(v1_native_intercept_roster, func_name, args, env, ctx) -} - fn eval_call(node: &Rc, env: &Rc, ctx: &InterpContext) -> InterpResult { let func_name = { let key = Rc::as_ptr(node) as usize; @@ -3823,7 +3787,9 @@ fn parse_table_memo_scope_and_key( Some((grammar_digest, token_stream_digest, position, production)) } -/// SINGLE AUTHORITY for the parse-table memo dispatch. +/// Handler bodies for parse-table memo dispatch. Roster authority is +/// `v1_interpreter_authored_roster_arms()`; generated lookup routes spellings +/// before this macro matches on the generated enum variant. macro_rules! v1_parse_table_arms { ($cb:ident, $func_name:ident, $ctx:ident, $fn_node:ident, $args:ident, $env:ident) => { $cb! { @@ -3878,26 +3844,16 @@ macro_rules! v1_parse_table_arms { /// Expansion 1: the dispatch. macro_rules! v1_parse_table_dispatch { - ($f:ident, $c:ident, $fnn:ident, $a:ident, $e:ident; $(arm $id:literal { $lit:literal } => $body:expr ,)*) => { - match $f { - $($lit => $body,)* - _ => Ok(None), + ($f:ident, $c:ident, $n:ident, $a:ident, $e:ident; $(arm $id:tt { $lit:literal } => $body:expr ,)*) => { + match $crate::v1_interpreter_dispatch_generated::lookup_try_parse_table_memo_dispatch(&$f) { + Some(arm) => match arm { + $( try_parse_table_memo_dispatch_arm!($id) => $body , )* + }, + None => Ok(None), } }; } -/// Expansion 2: the roster, from the same tokens. -macro_rules! v1_parse_table_roster { - ($f:ident, $c:ident, $fnn:ident, $a:ident, $e:ident; $(arm $id:literal { $lit:literal } => $body:expr ,)*) => { - &[$(($id, $lit)),*] - }; -} - -/// The parse-table memo surface, enumerated. -pub fn v1_parse_table_arm_spellings() -> &'static [(&'static str, &'static str)] { - v1_parse_table_arms!(v1_parse_table_roster, func_name, ctx, fn_node, args, env) -} - fn try_parse_table_memo_dispatch( ctx: &InterpContext, func_name: &str, @@ -5040,9 +4996,9 @@ fn eval_algebra_method( result } -/// SINGLE AUTHORITY for the v1 interpreter's method dispatch surface, same -/// shape as `v1_builtin_arms`: the dispatch and the roster are two expansions -/// of these tokens, so neither can drift from the other. +/// Handler bodies for algebra method dispatch. Roster authority is +/// `v1_interpreter_authored_roster_arms()`; generated `lookup_eval_algebra_method_inner` +/// routes spellings before this macro matches on the generated enum variant. macro_rules! v1_algebra_method_arms { ($cb:ident, $method:ident, $receiver:ident, $args:ident, $env:ident, $ctx:ident) => { $cb! { @@ -5554,30 +5510,20 @@ macro_rules! v1_algebra_method_arms { }; } -/// Expansion 1: the dispatch. +/// Dispatch via roster-generated lookup + exhaustive enum match (R1). macro_rules! v1_algebra_dispatch { - ($m:ident, $r:ident, $a:ident, $e:ident, $c:ident; $(arm $id:literal { $($lit:literal)|+ } => $body:expr ,)*) => { - match $m { - $($($lit)|+ => $body,)* - _ => Err(InterpError::Unimplemented { + ($m:ident, $r:ident, $a:ident, $e:ident, $c:ident; $(arm $id:tt { $($lit:literal)|+ } => $body:expr ,)*) => { + match $crate::v1_interpreter_dispatch_generated::lookup_eval_algebra_method_inner($m) { + Some(arm) => match arm { + $( eval_algebra_method_inner_arm!($id) => $body , )* + }, + None => Err(InterpError::Unimplemented { what: format!("method '{}'", $m), }), } }; } -/// Expansion 2: the roster, from the same tokens. -macro_rules! v1_algebra_roster { - ($m:ident, $r:ident, $a:ident, $e:ident, $c:ident; $(arm $id:literal { $($lit:literal)|+ } => $body:expr ,)*) => { - &[$(($id, &[$($lit),+])),*] - }; -} - -/// The method dispatch surface, enumerated. -pub fn v1_algebra_arm_spellings() -> &'static [(&'static str, &'static [&'static str])] { - v1_algebra_method_arms!(v1_algebra_roster, method, receiver, args, env, ctx) -} - fn eval_algebra_method_inner( method: &str, receiver: Value, @@ -10209,14 +10155,10 @@ fn eval_builtin( result } -/// SINGLE AUTHORITY for the v1 interpreter's free-call primitive surface. -/// -/// The arm list below is the only place a free-call builtin is named. Both the -/// dispatch (`v1_builtin_dispatch`) and the machine-readable roster -/// (`v1_builtin_roster`, surfaced as `v1_builtin_arm_spellings`) are expansions -/// of THESE tokens, so an arm cannot exist without a roster entry and a roster -/// entry cannot exist without an arm: the drift DESIGN.md 3 calls a fork is -/// unwritable here rather than checked afterwards. +/// Handler bodies for free-call builtin dispatch. Roster authority is +/// `v1_interpreter_authored_roster_arms()` in `.dag`; generated +/// `lookup_eval_builtin_inner` routes spellings before this macro matches on +/// the generated enum variant for each arm identity. /// /// Call-site locals are passed in as identifiers (`$name`, `$positional`, /// `$ctx`) because macro_rules hygiene would otherwise not resolve them: arm @@ -10233,83 +10175,6 @@ macro_rules! v1_builtin_arms { $cb! { $name, $positional, $ctx; - // The surface reading itself. This arm is inside the arm list, so it - // appears in its own answer -- the roster is self-inclusive rather than - // describing a surface it stands outside of. - // - // One row per (form, authored spelling). Alias spellings do not collapse - // into a nested list; they share an `arm_identity`, so `contains` as a - // free call and `contains` as a method stay two rows while `length`, - // `count` and `size` stay one arm under three rows. - arm "free_call.interpreter_dispatch_arm_rows" { "interpreter_dispatch_arm_rows" } => { - // EVERY primitive dispatch site the interpreter owns, one row per - // (site, arm identity, spelling). The identity comes from each - // site's macro authority rather than from spelling order, so - // reordering an alias group or renaming a user-facing spelling - // leaves it untouched. - // - // Not enumerated here, and deliberately: the `lookup` - // short-circuit in `eval_method_call` is an `if`, not a match - // arm, and the `Filesystem.Read` hermetic carve-out dispatches - // on a service name. Both stay declared in the .dag carrier, - // counted, with their own dissolution triggers. - let mut rows: Vec<(&str, &str, &str, &str)> = Vec::new(); - for (form, symbol, roster) in [ - ("FreeCall", "eval_builtin_inner", v1_builtin_arm_spellings()), - ( - "MethodCall", - "eval_algebra_method_inner", - v1_algebra_arm_spellings(), - ), - ( - "NativeSpecial", - "try_v2_std_collection_map_primitive_grounding", - v1_map_grounding_arm_spellings(), - ), - ] { - for (arm_identity, spellings) in roster { - for spelling in spellings.iter() { - rows.push((form, symbol, arm_identity, spelling)); - } - } - } - for (arm_identity, spelling, _module) in v1_bridge_arm_spellings() { - rows.push(("FreeCall", "eval_call", arm_identity, spelling)); - } - for (form, symbol, roster) in [ - ( - "NativeSpecial", - "eval_call", - v1_native_intercept_arm_spellings(), - ), - ( - "NativeSpecial", - "try_parse_table_memo_dispatch", - v1_parse_table_arm_spellings(), - ), - ] { - for (arm_identity, spelling) in roster { - rows.push((form, symbol, arm_identity, spelling)); - } - } - let items: Vec = rows - .into_iter() - .map(|(form, symbol, arm_identity, spelling)| Value::Record { - type_name: $ctx.sym("InterpreterDispatchArmRow"), - fields: Rc::new(sorted_fields(vec![ - ($ctx.sym("arm_identity"), Value::Str(arm_identity.to_string())), - ( - $ctx.sym("authored_spelling"), - Value::Str(spelling.to_string()), - ), - ($ctx.sym("dispatch_form"), Value::Str(form.to_string())), - ($ctx.sym("dispatch_symbol"), Value::Str(symbol.to_string())), - ])), - }) - .collect(); - Ok(Some(list_value(items))) - }, - arm "free_call.parse_stage0_cargo_manifest_bins" { "parse_stage0_cargo_manifest_bins" } => { let manifest = expect_str( $positional.first().copied(), @@ -11587,35 +11452,18 @@ macro_rules! v1_builtin_arms { }}; } -/// Expansion 1 of `v1_builtin_arms`: the dispatch itself. +/// Dispatch via roster-generated lookup + exhaustive enum match (R1). macro_rules! v1_builtin_dispatch { - ($n:ident, $p:ident, $c:ident; $(arm $id:literal { $($lit:literal)|+ } => $body:expr ,)*) => { - match $n { - $($($lit)|+ => $body,)* - _ => Ok(None), + ($n:ident, $p:ident, $c:ident; $(arm $id:tt { $($lit:literal)|+ } => $body:expr ,)*) => { + match $crate::v1_interpreter_dispatch_generated::lookup_eval_builtin_inner($n) { + Some(arm) => match arm { + $( eval_builtin_inner_arm!($id) => $body , )* + }, + None => Ok(None), } }; } -/// Expansion 2 of `v1_builtin_arms`: the roster, derived from the same tokens. -/// Arm bodies are matched but not emitted, so they are never name-resolved here. -macro_rules! v1_builtin_roster { - ($n:ident, $p:ident, $c:ident; $(arm $id:literal { $($lit:literal)|+ } => $body:expr ,)*) => { - &[$(($id, &[$($lit),+])),*] - }; -} - -/// The free-call primitive surface, enumerated. One entry per dispatch arm; the -/// inner slice holds that arm's spellings, so alias groups stay visible rather -/// than being flattened into a name set. -pub fn v1_builtin_arm_spellings() -> &'static [(&'static str, &'static [&'static str])] { - // `name` exists only to satisfy the shared `let name = $name;` above; the - // roster expansion matches the arm bodies but never emits them, so nothing - // else in this scope is read. - let name = ""; - v1_builtin_arms!(v1_builtin_roster, name, positional, ctx) -} - fn eval_builtin_inner( name: &str, args: &[(Option, Value)], diff --git a/src/v1/stage0/src/v1_interpreter_dispatch_generated.rs b/src/v1/stage0/src/v1_interpreter_dispatch_generated.rs new file mode 100644 index 00000000000..f58b6cc62e2 --- /dev/null +++ b/src/v1/stage0/src/v1_interpreter_dispatch_generated.rs @@ -0,0 +1,635 @@ +// Generated by gunbc v1_interpreter_dispatch_emit — do not hand-edit. +// Authority: gunbc.v1_interpreter_primitive_surface v1_interpreter_authored_roster_arms(); rust_variant derived from arm identity. + +#[rustfmt::skip] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum EvalBuiltinArm { + FreeCallParseStage0CargoManifestBins, + FreeCallStage0EmissionSourceIdentitiesHost, + FreeCallToString, + FreeCallUtf8DecodeBytes, + FreeCallBytesOctets, + FreeCallOctetsBytes, + FreeCallUtf8EncodeBytes, + FreeCallDiscriminant, + FreeCallCharsToString, + FreeCallGet, + FreeCallParseInt, + FreeCallRecordSourceCharsIndexLookup, + FreeCallTraceMark, + FreeCallConcat, + FreeCallCount, + FreeCallReverse, + FreeCallStringLength, + FreeCallSubstring, + FreeCallCharAt, + FreeCallStringContains, + FreeCallStartsWith, + FreeCallLength, + FreeCallContains, + FreeCallReplace, + FreeCallCodePoint, + FreeCallFromCodePoint, + FreeCallIsXidStart, + FreeCallIsXidContinue, + FreeCallIsEmojiIdent, + FreeCallListPush, + FreeCallListConcat, + FreeCallEmptyMap, + FreeCallEmptySet, + FreeCallSetInsert, + FreeCallSetUnion, + FreeCallSetContains, + FreeCallMapInsert, + FreeCallLookup, + FreeCallMapKeys, + FreeCallMapValues, + FreeCallMapContainsKey, + FreeCallMapIsEmpty, + FreeCallRcPtrEq, + FreeCallMapMerge, + FreeCallStrEq, + FreeCallAtomIdentityHash, + FreeCallObservedPeakResidentBytes, + FreeCallObservedMonotonicNanos, + FreeCallHashCombine, + FreeCallFilesystemRead, + FreeCallEmitHostRunTransport, + FreeCallEmitHostRunTransportCached, + FreeCallEmitHostNativeCacheEvict, + FreeCallContiguousLoopElementwiseKernel, + FreeCallContiguousLoopElementwiseFloatKernel, + FreeCallLayerImportFacts, + FreeCallImportResolutionFacts, + FreeCallReferenceResolutionFacts, + FreeCallConceptDeclFacts, + FreeCallExportSignatureFacts, + FreeCallDeclFacts, + FreeCallModuleDeclarationFacts, + FreeCallFactCardinalityDeclFacts, + FreeCallLanguagesConsumerCensusDataDeclCount, + FreeCallLanguagesConsumerCensusPerLanguageRowCount, + FreeCallLanguagesConsumerCensusFormatRowCount, + FreeCallLanguagesConsumerCensusExternalConsumerCount, + FreeCallLanguagesConsumerCensusIsCompositionOnly, + FreeCallLanguagesConsumerCensusHasExternalConsumer, + FreeCallShellMaterializeOperationArgv, + FreeCallShellTransportOperationRows, + FreeCallExtdepsQualifiedNameResolvesInDerivedModuleSet, + FreeCallTransportScriptPositionFactsForPath, + FreeCallExtdepsShapeTransportPolicyFactsForQualifiedName, + FreeCallExtdepsExternalAuthorityFactsForQualifiedName, + FreeCallExtdepsExternalAuthorityLiveCleanTreeHolds, + FreeCallExtdepsExternalAuthorityLiveRosterModuleCount, + FreeCallDocGraphOrphanCount, + FreeCallDocGraphAdmittedRootCount, + FreeCallDocGraphDanglingLinkCount, + FreeCallDocGraphDocCount, + FreeCallCompileDagRustEmitCheck, + FreeCallCompileDagDiagnosticCensus, + FreeCallWitnessLayerRootsCompileCleanCheck, + FreeCallWitnessLayerRootsCompileCleanEmitCheck, + FreeCallConsumeFloorCompileCleanGateVerdict, + FreeCallWitnessCompileCleanCliFloorVerdictsAgree, + FreeCallTestMigrationDebtModuleCount, + FreeCallTestMigrationDebtTotalLoc, + FreeCallTestMigrationDebtTotalTestFns, + FreeCallTestMigrationDebtModuleNames, + FreeCallTestMigrationDebtKnownCoveredModuleIsNotDebt, + FreeCallTestMigrationLegacyBehaviorIds, + FreeCallTestMigrationWitnessBehaviorIds, + FreeCallTestMigrationBehaviorDiscoveryHolds, + FreeCallTestMigrationDeleteGuardHolds, + FreeCallTestMigrationDeleteGuardUncoveredDeletes, + FreeCallInertCarrierNamesLive, + FreeCallInertCarrierDeclaredCount, + FreeCallInertLensUnreachedModuleCount, + FreeCallInertLensTopLevelModuleCount, + FreeCallNonFoldResidueCount, + FreeCallNonFoldResidueUnrosteredCount, + FreeCallNonFoldResidueStaleRosterCount, + FreeCallNonFoldResidueCoproductUniverseCount, + FreeCallCommitWitnessClaimRosterUnresolvableCount, + FreeCallCommitWitnessClaimPairResolvable, + FreeCallNonFoldResidueWildcardRedFixtureHolds, + FreeCallNonFoldResidueTotalFoldGreenFixtureHolds, + FreeCallNonFoldResidueRosterRedFixtureHolds, + FreeCallNonFoldResidueSyntheticUnrosteredRedHolds, + FreeCallComplexityLinearitySyntacticFindingCount, + FreeCallComplexityLinearityWildcardFacts, + FreeCallFallbackArmCensusFacts, + FreeCallFallbackArmCensusClassCount, + FreeCallFallbackArmCensusTotal, + FreeCallFallbackArmCensusReconciliationHolds, + FreeCallComplexityLinearitySyntacticSiteFired, + FreeCallCensusCorpusRootsFollowLayerAuthority, + FreeCallResolutionDivergenceSilentPickGateInProcess, +} + +#[rustfmt::skip] +pub fn lookup_eval_builtin_inner(spelling: &str) -> Option { + match spelling { + "parse_stage0_cargo_manifest_bins" => Some(EvalBuiltinArm::FreeCallParseStage0CargoManifestBins), + "stage0_emission_source_identities_host" => Some(EvalBuiltinArm::FreeCallStage0EmissionSourceIdentitiesHost), + "to_string" => Some(EvalBuiltinArm::FreeCallToString), + "utf8_decode_bytes" => Some(EvalBuiltinArm::FreeCallUtf8DecodeBytes), + "bytes_octets" => Some(EvalBuiltinArm::FreeCallBytesOctets), + "octets_bytes" => Some(EvalBuiltinArm::FreeCallOctetsBytes), + "utf8_encode_bytes" => Some(EvalBuiltinArm::FreeCallUtf8EncodeBytes), + "discriminant" => Some(EvalBuiltinArm::FreeCallDiscriminant), + "chars_to_string" => Some(EvalBuiltinArm::FreeCallCharsToString), + "get" => Some(EvalBuiltinArm::FreeCallGet), + "parse_int" => Some(EvalBuiltinArm::FreeCallParseInt), + "record_source_chars_index_lookup" => Some(EvalBuiltinArm::FreeCallRecordSourceCharsIndexLookup), + "trace_mark" => Some(EvalBuiltinArm::FreeCallTraceMark), + "concat" => Some(EvalBuiltinArm::FreeCallConcat), + "count" => Some(EvalBuiltinArm::FreeCallCount), + "reverse" => Some(EvalBuiltinArm::FreeCallReverse), + "string_length" => Some(EvalBuiltinArm::FreeCallStringLength), + "substring" => Some(EvalBuiltinArm::FreeCallSubstring), + "char_at" => Some(EvalBuiltinArm::FreeCallCharAt), + "string_contains" => Some(EvalBuiltinArm::FreeCallStringContains), + "starts_with" => Some(EvalBuiltinArm::FreeCallStartsWith), + "length" => Some(EvalBuiltinArm::FreeCallLength), + "contains" => Some(EvalBuiltinArm::FreeCallContains), + "replace" => Some(EvalBuiltinArm::FreeCallReplace), + "code_point" => Some(EvalBuiltinArm::FreeCallCodePoint), + "from_code_point" => Some(EvalBuiltinArm::FreeCallFromCodePoint), + "is_xid_start" => Some(EvalBuiltinArm::FreeCallIsXidStart), + "is_xid_continue" => Some(EvalBuiltinArm::FreeCallIsXidContinue), + "is_emoji_ident" => Some(EvalBuiltinArm::FreeCallIsEmojiIdent), + "list_push" => Some(EvalBuiltinArm::FreeCallListPush), + "append" => Some(EvalBuiltinArm::FreeCallListPush), + "list_concat" => Some(EvalBuiltinArm::FreeCallListConcat), + "empty_map" => Some(EvalBuiltinArm::FreeCallEmptyMap), + "empty_set" => Some(EvalBuiltinArm::FreeCallEmptySet), + "set_insert" => Some(EvalBuiltinArm::FreeCallSetInsert), + "set_union" => Some(EvalBuiltinArm::FreeCallSetUnion), + "set_contains" => Some(EvalBuiltinArm::FreeCallSetContains), + "map_insert" => Some(EvalBuiltinArm::FreeCallMapInsert), + "lookup" => Some(EvalBuiltinArm::FreeCallLookup), + "map_keys" => Some(EvalBuiltinArm::FreeCallMapKeys), + "map_values" => Some(EvalBuiltinArm::FreeCallMapValues), + "map_contains_key" => Some(EvalBuiltinArm::FreeCallMapContainsKey), + "map_has" => Some(EvalBuiltinArm::FreeCallMapContainsKey), + "map_is_empty" => Some(EvalBuiltinArm::FreeCallMapIsEmpty), + "rc_ptr_eq" => Some(EvalBuiltinArm::FreeCallRcPtrEq), + "rc_vec_ptr_eq" => Some(EvalBuiltinArm::FreeCallRcPtrEq), + "map_merge" => Some(EvalBuiltinArm::FreeCallMapMerge), + "str_eq" => Some(EvalBuiltinArm::FreeCallStrEq), + "atom_identity_hash" => Some(EvalBuiltinArm::FreeCallAtomIdentityHash), + "observed_peak_resident_bytes" => Some(EvalBuiltinArm::FreeCallObservedPeakResidentBytes), + "observed_monotonic_nanos" => Some(EvalBuiltinArm::FreeCallObservedMonotonicNanos), + "hash_combine" => Some(EvalBuiltinArm::FreeCallHashCombine), + "filesystem_read" => Some(EvalBuiltinArm::FreeCallFilesystemRead), + "emit_host_run_transport" => Some(EvalBuiltinArm::FreeCallEmitHostRunTransport), + "emit_host_run_transport_cached" => Some(EvalBuiltinArm::FreeCallEmitHostRunTransportCached), + "emit_host_native_cache_evict" => Some(EvalBuiltinArm::FreeCallEmitHostNativeCacheEvict), + "contiguous_loop_elementwise_kernel" => Some(EvalBuiltinArm::FreeCallContiguousLoopElementwiseKernel), + "contiguous_loop_elementwise_float_kernel" => Some(EvalBuiltinArm::FreeCallContiguousLoopElementwiseFloatKernel), + "layer_import_facts" => Some(EvalBuiltinArm::FreeCallLayerImportFacts), + "import_resolution_facts" => Some(EvalBuiltinArm::FreeCallImportResolutionFacts), + "reference_resolution_facts" => Some(EvalBuiltinArm::FreeCallReferenceResolutionFacts), + "concept_decl_facts" => Some(EvalBuiltinArm::FreeCallConceptDeclFacts), + "export_signature_facts" => Some(EvalBuiltinArm::FreeCallExportSignatureFacts), + "decl_facts" => Some(EvalBuiltinArm::FreeCallDeclFacts), + "module_declaration_facts" => Some(EvalBuiltinArm::FreeCallModuleDeclarationFacts), + "fact_cardinality_decl_facts" => Some(EvalBuiltinArm::FreeCallFactCardinalityDeclFacts), + "languages_consumer_census_data_decl_count" => Some(EvalBuiltinArm::FreeCallLanguagesConsumerCensusDataDeclCount), + "languages_consumer_census_per_language_row_count" => Some(EvalBuiltinArm::FreeCallLanguagesConsumerCensusPerLanguageRowCount), + "languages_consumer_census_format_row_count" => Some(EvalBuiltinArm::FreeCallLanguagesConsumerCensusFormatRowCount), + "languages_consumer_census_external_consumer_count" => Some(EvalBuiltinArm::FreeCallLanguagesConsumerCensusExternalConsumerCount), + "languages_consumer_census_is_composition_only" => Some(EvalBuiltinArm::FreeCallLanguagesConsumerCensusIsCompositionOnly), + "languages_consumer_census_has_external_consumer" => Some(EvalBuiltinArm::FreeCallLanguagesConsumerCensusHasExternalConsumer), + "shell_materialize_operation_argv" => Some(EvalBuiltinArm::FreeCallShellMaterializeOperationArgv), + "shell_transport_operation_rows" => Some(EvalBuiltinArm::FreeCallShellTransportOperationRows), + "extdeps_qualified_name_resolves_in_derived_module_set" => Some(EvalBuiltinArm::FreeCallExtdepsQualifiedNameResolvesInDerivedModuleSet), + "transport_script_position_facts_for_path" => Some(EvalBuiltinArm::FreeCallTransportScriptPositionFactsForPath), + "extdeps_shape_transport_policy_facts_for_qualified_name" => Some(EvalBuiltinArm::FreeCallExtdepsShapeTransportPolicyFactsForQualifiedName), + "extdeps_external_authority_facts_for_qualified_name" => Some(EvalBuiltinArm::FreeCallExtdepsExternalAuthorityFactsForQualifiedName), + "extdeps_external_authority_live_clean_tree_holds" => Some(EvalBuiltinArm::FreeCallExtdepsExternalAuthorityLiveCleanTreeHolds), + "extdeps_external_authority_live_roster_module_count" => Some(EvalBuiltinArm::FreeCallExtdepsExternalAuthorityLiveRosterModuleCount), + "doc_graph_orphan_count" => Some(EvalBuiltinArm::FreeCallDocGraphOrphanCount), + "doc_graph_admitted_root_count" => Some(EvalBuiltinArm::FreeCallDocGraphAdmittedRootCount), + "doc_graph_dangling_link_count" => Some(EvalBuiltinArm::FreeCallDocGraphDanglingLinkCount), + "doc_graph_doc_count" => Some(EvalBuiltinArm::FreeCallDocGraphDocCount), + "compile_dag_rust_emit_check" => Some(EvalBuiltinArm::FreeCallCompileDagRustEmitCheck), + "compile_dag_diagnostic_census" => Some(EvalBuiltinArm::FreeCallCompileDagDiagnosticCensus), + "witness_layer_roots_compile_clean_check" => Some(EvalBuiltinArm::FreeCallWitnessLayerRootsCompileCleanCheck), + "witness_layer_roots_compile_clean_emit_check" => Some(EvalBuiltinArm::FreeCallWitnessLayerRootsCompileCleanEmitCheck), + "consume_floor_compile_clean_gate_verdict" => Some(EvalBuiltinArm::FreeCallConsumeFloorCompileCleanGateVerdict), + "witness_compile_clean_cli_floor_verdicts_agree" => Some(EvalBuiltinArm::FreeCallWitnessCompileCleanCliFloorVerdictsAgree), + "test_migration_debt_module_count" => Some(EvalBuiltinArm::FreeCallTestMigrationDebtModuleCount), + "test_migration_debt_total_loc" => Some(EvalBuiltinArm::FreeCallTestMigrationDebtTotalLoc), + "test_migration_debt_total_test_fns" => Some(EvalBuiltinArm::FreeCallTestMigrationDebtTotalTestFns), + "test_migration_debt_module_names" => Some(EvalBuiltinArm::FreeCallTestMigrationDebtModuleNames), + "test_migration_debt_known_covered_module_is_not_debt" => Some(EvalBuiltinArm::FreeCallTestMigrationDebtKnownCoveredModuleIsNotDebt), + "test_migration_legacy_behavior_ids" => Some(EvalBuiltinArm::FreeCallTestMigrationLegacyBehaviorIds), + "test_migration_witness_behavior_ids" => Some(EvalBuiltinArm::FreeCallTestMigrationWitnessBehaviorIds), + "test_migration_behavior_discovery_holds" => Some(EvalBuiltinArm::FreeCallTestMigrationBehaviorDiscoveryHolds), + "test_migration_delete_guard_holds" => Some(EvalBuiltinArm::FreeCallTestMigrationDeleteGuardHolds), + "test_migration_delete_guard_uncovered_deletes" => Some(EvalBuiltinArm::FreeCallTestMigrationDeleteGuardUncoveredDeletes), + "inert_carrier_names_live" => Some(EvalBuiltinArm::FreeCallInertCarrierNamesLive), + "inert_carrier_declared_count" => Some(EvalBuiltinArm::FreeCallInertCarrierDeclaredCount), + "inert_lens_unreached_module_count" => Some(EvalBuiltinArm::FreeCallInertLensUnreachedModuleCount), + "inert_lens_top_level_module_count" => Some(EvalBuiltinArm::FreeCallInertLensTopLevelModuleCount), + "non_fold_residue_count" => Some(EvalBuiltinArm::FreeCallNonFoldResidueCount), + "non_fold_residue_unrostered_count" => Some(EvalBuiltinArm::FreeCallNonFoldResidueUnrosteredCount), + "non_fold_residue_stale_roster_count" => Some(EvalBuiltinArm::FreeCallNonFoldResidueStaleRosterCount), + "non_fold_residue_coproduct_universe_count" => Some(EvalBuiltinArm::FreeCallNonFoldResidueCoproductUniverseCount), + "commit_witness_claim_roster_unresolvable_count" => Some(EvalBuiltinArm::FreeCallCommitWitnessClaimRosterUnresolvableCount), + "commit_witness_claim_pair_resolvable" => Some(EvalBuiltinArm::FreeCallCommitWitnessClaimPairResolvable), + "non_fold_residue_wildcard_red_fixture_holds" => Some(EvalBuiltinArm::FreeCallNonFoldResidueWildcardRedFixtureHolds), + "non_fold_residue_total_fold_green_fixture_holds" => Some(EvalBuiltinArm::FreeCallNonFoldResidueTotalFoldGreenFixtureHolds), + "non_fold_residue_roster_red_fixture_holds" => Some(EvalBuiltinArm::FreeCallNonFoldResidueRosterRedFixtureHolds), + "non_fold_residue_synthetic_unrostered_red_holds" => Some(EvalBuiltinArm::FreeCallNonFoldResidueSyntheticUnrosteredRedHolds), + "complexity_linearity_syntactic_finding_count" => Some(EvalBuiltinArm::FreeCallComplexityLinearitySyntacticFindingCount), + "complexity_linearity_wildcard_facts" => Some(EvalBuiltinArm::FreeCallComplexityLinearityWildcardFacts), + "fallback_arm_census_facts" => Some(EvalBuiltinArm::FreeCallFallbackArmCensusFacts), + "fallback_arm_census_class_count" => Some(EvalBuiltinArm::FreeCallFallbackArmCensusClassCount), + "fallback_arm_census_total" => Some(EvalBuiltinArm::FreeCallFallbackArmCensusTotal), + "fallback_arm_census_reconciliation_holds" => Some(EvalBuiltinArm::FreeCallFallbackArmCensusReconciliationHolds), + "complexity_linearity_syntactic_site_fired" => Some(EvalBuiltinArm::FreeCallComplexityLinearitySyntacticSiteFired), + "census_corpus_roots_follow_layer_authority" => Some(EvalBuiltinArm::FreeCallCensusCorpusRootsFollowLayerAuthority), + "resolution_divergence_silent_pick_gate_in_process" => Some(EvalBuiltinArm::FreeCallResolutionDivergenceSilentPickGateInProcess), + _ => None, + } +} + +#[rustfmt::skip] +macro_rules! eval_builtin_inner_arm { + ("free_call.parse_stage0_cargo_manifest_bins") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallParseStage0CargoManifestBins }; + ("free_call.stage0_emission_source_identities_host") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallStage0EmissionSourceIdentitiesHost }; + ("free_call.to_string") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallToString }; + ("free_call.utf8_decode_bytes") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallUtf8DecodeBytes }; + ("free_call.bytes_octets") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallBytesOctets }; + ("free_call.octets_bytes") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallOctetsBytes }; + ("free_call.utf8_encode_bytes") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallUtf8EncodeBytes }; + ("free_call.discriminant") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallDiscriminant }; + ("free_call.chars_to_string") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCharsToString }; + ("free_call.get") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallGet }; + ("free_call.parse_int") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallParseInt }; + ("free_call.record_source_chars_index_lookup") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallRecordSourceCharsIndexLookup }; + ("free_call.trace_mark") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTraceMark }; + ("free_call.concat") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallConcat }; + ("free_call.count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCount }; + ("free_call.reverse") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallReverse }; + ("free_call.string_length") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallStringLength }; + ("free_call.substring") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallSubstring }; + ("free_call.char_at") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCharAt }; + ("free_call.string_contains") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallStringContains }; + ("free_call.starts_with") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallStartsWith }; + ("free_call.length") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLength }; + ("free_call.contains") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallContains }; + ("free_call.replace") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallReplace }; + ("free_call.code_point") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCodePoint }; + ("free_call.from_code_point") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallFromCodePoint }; + ("free_call.is_xid_start") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallIsXidStart }; + ("free_call.is_xid_continue") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallIsXidContinue }; + ("free_call.is_emoji_ident") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallIsEmojiIdent }; + ("free_call.list_push") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallListPush }; + ("free_call.list_concat") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallListConcat }; + ("free_call.empty_map") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallEmptyMap }; + ("free_call.empty_set") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallEmptySet }; + ("free_call.set_insert") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallSetInsert }; + ("free_call.set_union") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallSetUnion }; + ("free_call.set_contains") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallSetContains }; + ("free_call.map_insert") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallMapInsert }; + ("free_call.lookup") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLookup }; + ("free_call.map_keys") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallMapKeys }; + ("free_call.map_values") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallMapValues }; + ("free_call.map_contains_key") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallMapContainsKey }; + ("free_call.map_is_empty") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallMapIsEmpty }; + ("free_call.rc_ptr_eq") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallRcPtrEq }; + ("free_call.map_merge") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallMapMerge }; + ("free_call.str_eq") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallStrEq }; + ("free_call.atom_identity_hash") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallAtomIdentityHash }; + ("free_call.observed_peak_resident_bytes") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallObservedPeakResidentBytes }; + ("free_call.observed_monotonic_nanos") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallObservedMonotonicNanos }; + ("free_call.hash_combine") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallHashCombine }; + ("free_call.filesystem_read") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallFilesystemRead }; + ("free_call.emit_host_run_transport") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallEmitHostRunTransport }; + ("free_call.emit_host_run_transport_cached") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallEmitHostRunTransportCached }; + ("free_call.emit_host_native_cache_evict") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallEmitHostNativeCacheEvict }; + ("free_call.contiguous_loop_elementwise_kernel") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallContiguousLoopElementwiseKernel }; + ("free_call.contiguous_loop_elementwise_float_kernel") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallContiguousLoopElementwiseFloatKernel }; + ("free_call.layer_import_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLayerImportFacts }; + ("free_call.import_resolution_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallImportResolutionFacts }; + ("free_call.reference_resolution_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallReferenceResolutionFacts }; + ("free_call.concept_decl_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallConceptDeclFacts }; + ("free_call.export_signature_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallExportSignatureFacts }; + ("free_call.decl_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallDeclFacts }; + ("free_call.module_declaration_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallModuleDeclarationFacts }; + ("free_call.fact_cardinality_decl_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallFactCardinalityDeclFacts }; + ("free_call.languages_consumer_census_data_decl_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLanguagesConsumerCensusDataDeclCount }; + ("free_call.languages_consumer_census_per_language_row_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLanguagesConsumerCensusPerLanguageRowCount }; + ("free_call.languages_consumer_census_format_row_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLanguagesConsumerCensusFormatRowCount }; + ("free_call.languages_consumer_census_external_consumer_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLanguagesConsumerCensusExternalConsumerCount }; + ("free_call.languages_consumer_census_is_composition_only") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLanguagesConsumerCensusIsCompositionOnly }; + ("free_call.languages_consumer_census_has_external_consumer") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallLanguagesConsumerCensusHasExternalConsumer }; + ("free_call.shell_materialize_operation_argv") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallShellMaterializeOperationArgv }; + ("free_call.shell_transport_operation_rows") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallShellTransportOperationRows }; + ("free_call.extdeps_qualified_name_resolves_in_derived_module_set") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallExtdepsQualifiedNameResolvesInDerivedModuleSet }; + ("free_call.transport_script_position_facts_for_path") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTransportScriptPositionFactsForPath }; + ("free_call.extdeps_shape_transport_policy_facts_for_qualified_name") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallExtdepsShapeTransportPolicyFactsForQualifiedName }; + ("free_call.extdeps_external_authority_facts_for_qualified_name") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallExtdepsExternalAuthorityFactsForQualifiedName }; + ("free_call.extdeps_external_authority_live_clean_tree_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallExtdepsExternalAuthorityLiveCleanTreeHolds }; + ("free_call.extdeps_external_authority_live_roster_module_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallExtdepsExternalAuthorityLiveRosterModuleCount }; + ("free_call.doc_graph_orphan_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallDocGraphOrphanCount }; + ("free_call.doc_graph_admitted_root_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallDocGraphAdmittedRootCount }; + ("free_call.doc_graph_dangling_link_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallDocGraphDanglingLinkCount }; + ("free_call.doc_graph_doc_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallDocGraphDocCount }; + ("free_call.compile_dag_rust_emit_check") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCompileDagRustEmitCheck }; + ("free_call.compile_dag_diagnostic_census") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCompileDagDiagnosticCensus }; + ("free_call.witness_layer_roots_compile_clean_check") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallWitnessLayerRootsCompileCleanCheck }; + ("free_call.witness_layer_roots_compile_clean_emit_check") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallWitnessLayerRootsCompileCleanEmitCheck }; + ("free_call.consume_floor_compile_clean_gate_verdict") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallConsumeFloorCompileCleanGateVerdict }; + ("free_call.witness_compile_clean_cli_floor_verdicts_agree") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallWitnessCompileCleanCliFloorVerdictsAgree }; + ("free_call.test_migration_debt_module_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationDebtModuleCount }; + ("free_call.test_migration_debt_total_loc") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationDebtTotalLoc }; + ("free_call.test_migration_debt_total_test_fns") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationDebtTotalTestFns }; + ("free_call.test_migration_debt_module_names") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationDebtModuleNames }; + ("free_call.test_migration_debt_known_covered_module_is_not_debt") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationDebtKnownCoveredModuleIsNotDebt }; + ("free_call.test_migration_legacy_behavior_ids") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationLegacyBehaviorIds }; + ("free_call.test_migration_witness_behavior_ids") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationWitnessBehaviorIds }; + ("free_call.test_migration_behavior_discovery_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationBehaviorDiscoveryHolds }; + ("free_call.test_migration_delete_guard_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationDeleteGuardHolds }; + ("free_call.test_migration_delete_guard_uncovered_deletes") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallTestMigrationDeleteGuardUncoveredDeletes }; + ("free_call.inert_carrier_names_live") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallInertCarrierNamesLive }; + ("free_call.inert_carrier_declared_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallInertCarrierDeclaredCount }; + ("free_call.inert_lens_unreached_module_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallInertLensUnreachedModuleCount }; + ("free_call.inert_lens_top_level_module_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallInertLensTopLevelModuleCount }; + ("free_call.non_fold_residue_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueCount }; + ("free_call.non_fold_residue_unrostered_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueUnrosteredCount }; + ("free_call.non_fold_residue_stale_roster_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueStaleRosterCount }; + ("free_call.non_fold_residue_coproduct_universe_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueCoproductUniverseCount }; + ("free_call.commit_witness_claim_roster_unresolvable_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCommitWitnessClaimRosterUnresolvableCount }; + ("free_call.commit_witness_claim_pair_resolvable") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCommitWitnessClaimPairResolvable }; + ("free_call.non_fold_residue_wildcard_red_fixture_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueWildcardRedFixtureHolds }; + ("free_call.non_fold_residue_total_fold_green_fixture_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueTotalFoldGreenFixtureHolds }; + ("free_call.non_fold_residue_roster_red_fixture_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueRosterRedFixtureHolds }; + ("free_call.non_fold_residue_synthetic_unrostered_red_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallNonFoldResidueSyntheticUnrosteredRedHolds }; + ("free_call.complexity_linearity_syntactic_finding_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallComplexityLinearitySyntacticFindingCount }; + ("free_call.complexity_linearity_wildcard_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallComplexityLinearityWildcardFacts }; + ("free_call.fallback_arm_census_facts") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallFallbackArmCensusFacts }; + ("free_call.fallback_arm_census_class_count") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallFallbackArmCensusClassCount }; + ("free_call.fallback_arm_census_total") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallFallbackArmCensusTotal }; + ("free_call.fallback_arm_census_reconciliation_holds") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallFallbackArmCensusReconciliationHolds }; + ("free_call.complexity_linearity_syntactic_site_fired") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallComplexityLinearitySyntacticSiteFired }; + ("free_call.census_corpus_roots_follow_layer_authority") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallCensusCorpusRootsFollowLayerAuthority }; + ("free_call.resolution_divergence_silent_pick_gate_in_process") => { $crate::v1_interpreter_dispatch_generated::EvalBuiltinArm::FreeCallResolutionDivergenceSilentPickGateInProcess }; +} +#[rustfmt::skip] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum EvalAlgebraMethodArm { + MethodCallLookup, + MethodCallMap, + MethodCallFilter, + MethodCallFold, + MethodCallFlatMap, + MethodCallAny, + MethodCallAll, + MethodCallSortBy, + MethodCallListPush, + MethodCallConcat, + MethodCallLength, + MethodCallIsEmpty, + MethodCallFirst, + MethodCallLast, + MethodCallReverse, + MethodCallSkip, + MethodCallTake, + MethodCallEnumerate, + MethodCallContains, + MethodCallJoin, + MethodCallChars, + MethodCallMapGet, + MethodCallGet, + MethodCallMapKeys, + MethodCallMapValues, + MethodCallMapContainsKey, + MethodCallMapIsEmpty, + MethodCallInsert, + MethodCallMerge, + MethodCallKeys, + MethodCallValues, + MethodCallReplace, + MethodCallSplit, + MethodCallTrim, + MethodCallStartsWith, + MethodCallEndsWith, + MethodCallSubstring, + MethodCallCharAt, + MethodCallIndexBy, +} + +#[rustfmt::skip] +pub fn lookup_eval_algebra_method_inner(spelling: &str) -> Option { + match spelling { + "lookup" => Some(EvalAlgebraMethodArm::MethodCallLookup), + "map" => Some(EvalAlgebraMethodArm::MethodCallMap), + "filter" => Some(EvalAlgebraMethodArm::MethodCallFilter), + "fold" => Some(EvalAlgebraMethodArm::MethodCallFold), + "flat_map" => Some(EvalAlgebraMethodArm::MethodCallFlatMap), + "any" => Some(EvalAlgebraMethodArm::MethodCallAny), + "all" => Some(EvalAlgebraMethodArm::MethodCallAll), + "sort_by" => Some(EvalAlgebraMethodArm::MethodCallSortBy), + "list_push" => Some(EvalAlgebraMethodArm::MethodCallListPush), + "concat" => Some(EvalAlgebraMethodArm::MethodCallConcat), + "append" => Some(EvalAlgebraMethodArm::MethodCallConcat), + "push" => Some(EvalAlgebraMethodArm::MethodCallConcat), + "length" => Some(EvalAlgebraMethodArm::MethodCallLength), + "count" => Some(EvalAlgebraMethodArm::MethodCallLength), + "size" => Some(EvalAlgebraMethodArm::MethodCallLength), + "is_empty" => Some(EvalAlgebraMethodArm::MethodCallIsEmpty), + "first" => Some(EvalAlgebraMethodArm::MethodCallFirst), + "last" => Some(EvalAlgebraMethodArm::MethodCallLast), + "reverse" => Some(EvalAlgebraMethodArm::MethodCallReverse), + "skip" => Some(EvalAlgebraMethodArm::MethodCallSkip), + "take" => Some(EvalAlgebraMethodArm::MethodCallTake), + "enumerate" => Some(EvalAlgebraMethodArm::MethodCallEnumerate), + "contains" => Some(EvalAlgebraMethodArm::MethodCallContains), + "has" => Some(EvalAlgebraMethodArm::MethodCallContains), + "join" => Some(EvalAlgebraMethodArm::MethodCallJoin), + "chars" => Some(EvalAlgebraMethodArm::MethodCallChars), + "map_get" => Some(EvalAlgebraMethodArm::MethodCallMapGet), + "get" => Some(EvalAlgebraMethodArm::MethodCallGet), + "map_keys" => Some(EvalAlgebraMethodArm::MethodCallMapKeys), + "map_values" => Some(EvalAlgebraMethodArm::MethodCallMapValues), + "map_contains_key" => Some(EvalAlgebraMethodArm::MethodCallMapContainsKey), + "map_has" => Some(EvalAlgebraMethodArm::MethodCallMapContainsKey), + "map_is_empty" => Some(EvalAlgebraMethodArm::MethodCallMapIsEmpty), + "insert" => Some(EvalAlgebraMethodArm::MethodCallInsert), + "map_insert" => Some(EvalAlgebraMethodArm::MethodCallInsert), + "merge" => Some(EvalAlgebraMethodArm::MethodCallMerge), + "keys" => Some(EvalAlgebraMethodArm::MethodCallKeys), + "values" => Some(EvalAlgebraMethodArm::MethodCallValues), + "replace" => Some(EvalAlgebraMethodArm::MethodCallReplace), + "split" => Some(EvalAlgebraMethodArm::MethodCallSplit), + "trim" => Some(EvalAlgebraMethodArm::MethodCallTrim), + "starts_with" => Some(EvalAlgebraMethodArm::MethodCallStartsWith), + "ends_with" => Some(EvalAlgebraMethodArm::MethodCallEndsWith), + "substring" => Some(EvalAlgebraMethodArm::MethodCallSubstring), + "char_at" => Some(EvalAlgebraMethodArm::MethodCallCharAt), + "index_by" => Some(EvalAlgebraMethodArm::MethodCallIndexBy), + _ => None, + } +} + +#[rustfmt::skip] +macro_rules! eval_algebra_method_inner_arm { + ("method_call.lookup") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallLookup }; + ("method_call.map") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallMap }; + ("method_call.filter") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallFilter }; + ("method_call.fold") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallFold }; + ("method_call.flat_map") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallFlatMap }; + ("method_call.any") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallAny }; + ("method_call.all") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallAll }; + ("method_call.sort_by") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallSortBy }; + ("method_call.list_push") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallListPush }; + ("method_call.concat") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallConcat }; + ("method_call.length") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallLength }; + ("method_call.is_empty") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallIsEmpty }; + ("method_call.first") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallFirst }; + ("method_call.last") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallLast }; + ("method_call.reverse") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallReverse }; + ("method_call.skip") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallSkip }; + ("method_call.take") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallTake }; + ("method_call.enumerate") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallEnumerate }; + ("method_call.contains") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallContains }; + ("method_call.join") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallJoin }; + ("method_call.chars") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallChars }; + ("method_call.map_get") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallMapGet }; + ("method_call.get") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallGet }; + ("method_call.map_keys") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallMapKeys }; + ("method_call.map_values") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallMapValues }; + ("method_call.map_contains_key") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallMapContainsKey }; + ("method_call.map_is_empty") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallMapIsEmpty }; + ("method_call.insert") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallInsert }; + ("method_call.merge") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallMerge }; + ("method_call.keys") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallKeys }; + ("method_call.values") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallValues }; + ("method_call.replace") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallReplace }; + ("method_call.split") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallSplit }; + ("method_call.trim") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallTrim }; + ("method_call.starts_with") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallStartsWith }; + ("method_call.ends_with") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallEndsWith }; + ("method_call.substring") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallSubstring }; + ("method_call.char_at") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallCharAt }; + ("method_call.index_by") => { $crate::v1_interpreter_dispatch_generated::EvalAlgebraMethodArm::MethodCallIndexBy }; +} +#[rustfmt::skip] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum EvalCallBridgeArm { + V4BridgeResolveTypeNode, + V4BridgeSymbolInternLexeme, + V4BridgeSymbolLexeme, + V4BridgeQualifiedNameFromDottedString, + V4BridgeCoproductNullaryInhabitants, + V4BridgeConceptDeclFactsLive, + V4BridgeFnArrowDeclFactsLive, + V4BridgeFnArrowDeclSubstrateIsWholeTree, + V4BridgeCorpusDependencyViewPerPrSubstrateRefuse, + V4BridgeDataInitDeclFactsLive, + V4BridgeInertLensUnreachedModuleCount, + V4BridgeInertLensTopLevelModuleCount, +} + +#[rustfmt::skip] +pub fn lookup_eval_call_bridge(spelling: &str) -> Option { + match spelling { + "resolve_type_node" => Some(EvalCallBridgeArm::V4BridgeResolveTypeNode), + "symbol_intern_lexeme" => Some(EvalCallBridgeArm::V4BridgeSymbolInternLexeme), + "symbol_lexeme" => Some(EvalCallBridgeArm::V4BridgeSymbolLexeme), + "qualified_name_from_dotted_string" => Some(EvalCallBridgeArm::V4BridgeQualifiedNameFromDottedString), + "coproduct_nullary_inhabitants" => Some(EvalCallBridgeArm::V4BridgeCoproductNullaryInhabitants), + "concept_decl_facts_live" => Some(EvalCallBridgeArm::V4BridgeConceptDeclFactsLive), + "fn_arrow_decl_facts_live" => Some(EvalCallBridgeArm::V4BridgeFnArrowDeclFactsLive), + "fn_arrow_decl_substrate_is_whole_tree" => Some(EvalCallBridgeArm::V4BridgeFnArrowDeclSubstrateIsWholeTree), + "corpus_dependency_view_per_pr_substrate_refuse" => Some(EvalCallBridgeArm::V4BridgeCorpusDependencyViewPerPrSubstrateRefuse), + "data_init_decl_facts_live" => Some(EvalCallBridgeArm::V4BridgeDataInitDeclFactsLive), + "inert_lens_unreached_module_count" => Some(EvalCallBridgeArm::V4BridgeInertLensUnreachedModuleCount), + "inert_lens_top_level_module_count" => Some(EvalCallBridgeArm::V4BridgeInertLensTopLevelModuleCount), + _ => None, + } +} + +#[rustfmt::skip] +macro_rules! eval_call_bridge_arm { + ("v4_bridge.resolve_type_node") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeResolveTypeNode }; + ("v4_bridge.symbol_intern_lexeme") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeSymbolInternLexeme }; + ("v4_bridge.symbol_lexeme") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeSymbolLexeme }; + ("v4_bridge.qualified_name_from_dotted_string") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeQualifiedNameFromDottedString }; + ("v4_bridge.coproduct_nullary_inhabitants") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeCoproductNullaryInhabitants }; + ("v4_bridge.concept_decl_facts_live") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeConceptDeclFactsLive }; + ("v4_bridge.fn_arrow_decl_facts_live") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeFnArrowDeclFactsLive }; + ("v4_bridge.fn_arrow_decl_substrate_is_whole_tree") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeFnArrowDeclSubstrateIsWholeTree }; + ("v4_bridge.corpus_dependency_view_per_pr_substrate_refuse") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeCorpusDependencyViewPerPrSubstrateRefuse }; + ("v4_bridge.data_init_decl_facts_live") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeDataInitDeclFactsLive }; + ("v4_bridge.inert_lens_unreached_module_count") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeInertLensUnreachedModuleCount }; + ("v4_bridge.inert_lens_top_level_module_count") => { $crate::v1_interpreter_dispatch_generated::EvalCallBridgeArm::V4BridgeInertLensTopLevelModuleCount }; +} +#[rustfmt::skip] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum TryV2StdCollectionMapPrimitiveGroundingArm { + MapGroundingEmptyMap, + MapGroundingMapInsert, +} + +#[rustfmt::skip] +pub fn lookup_try_v2_std_collection_map_primitive_grounding(spelling: &str) -> Option { + match spelling { + "empty_map_primitive_delegate" => Some(TryV2StdCollectionMapPrimitiveGroundingArm::MapGroundingEmptyMap), + "empty_map" => Some(TryV2StdCollectionMapPrimitiveGroundingArm::MapGroundingEmptyMap), + "map_insert" => Some(TryV2StdCollectionMapPrimitiveGroundingArm::MapGroundingMapInsert), + _ => None, + } +} + +#[rustfmt::skip] +macro_rules! try_v2_std_collection_map_primitive_grounding_arm { + ("map_grounding.empty_map") => { $crate::v1_interpreter_dispatch_generated::TryV2StdCollectionMapPrimitiveGroundingArm::MapGroundingEmptyMap }; + ("map_grounding.map_insert") => { $crate::v1_interpreter_dispatch_generated::TryV2StdCollectionMapPrimitiveGroundingArm::MapGroundingMapInsert }; +} +#[rustfmt::skip] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum EvalCallNativeInterceptArm { + NativeInterceptFoldList, + NativeInterceptFoldListRight, +} + +#[rustfmt::skip] +pub fn lookup_eval_call_native_intercept(spelling: &str) -> Option { + match spelling { + "fold_list" => Some(EvalCallNativeInterceptArm::NativeInterceptFoldList), + "fold_list_right" => Some(EvalCallNativeInterceptArm::NativeInterceptFoldListRight), + _ => None, + } +} + +#[rustfmt::skip] +macro_rules! eval_call_native_intercept_arm { + ("native_intercept.fold_list") => { $crate::v1_interpreter_dispatch_generated::EvalCallNativeInterceptArm::NativeInterceptFoldList }; + ("native_intercept.fold_list_right") => { $crate::v1_interpreter_dispatch_generated::EvalCallNativeInterceptArm::NativeInterceptFoldListRight }; +} +#[rustfmt::skip] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum TryParseTableMemoDispatchArm { + ParseTableMemoParseTableLookup, + ParseTableMemoParseTableInsert, +} + +#[rustfmt::skip] +pub fn lookup_try_parse_table_memo_dispatch(spelling: &str) -> Option { + match spelling { + "parse_table_lookup" => Some(TryParseTableMemoDispatchArm::ParseTableMemoParseTableLookup), + "parse_table_insert" => Some(TryParseTableMemoDispatchArm::ParseTableMemoParseTableInsert), + _ => None, + } +} + +#[rustfmt::skip] +macro_rules! try_parse_table_memo_dispatch_arm { + ("parse_table_memo.parse_table_lookup") => { $crate::v1_interpreter_dispatch_generated::TryParseTableMemoDispatchArm::ParseTableMemoParseTableLookup }; + ("parse_table_memo.parse_table_insert") => { $crate::v1_interpreter_dispatch_generated::TryParseTableMemoDispatchArm::ParseTableMemoParseTableInsert }; +} diff --git a/src/v1/stage0/src/v1_tests_claim_occurrence_identity_debt_receipt_test.rs b/src/v1/stage0/src/v1_tests_claim_occurrence_identity_debt_receipt_test.rs new file mode 100644 index 00000000000..991faf9e9d2 --- /dev/null +++ b/src/v1/stage0/src/v1_tests_claim_occurrence_identity_debt_receipt_test.rs @@ -0,0 +1,626 @@ +// Generated by v1 compiler -- do not edit. +// Source module: v1.tests.claim.occurrence_identity_debt_receipt_test + +pub use crate::std_occurrence_binding::OccurrenceBindingResult; +use crate::std_occurrence_binding::OccurrenceBindingResult::{OccurrenceBound, OccurrenceUnbound}; +pub use crate::std_occurrence_binding_resolve::resolve_reference_occurrence_binding; +pub use crate::std_occurrence_binding_resolve::OccurrenceReferenceBindingOutcome; +use crate::std_occurrence_binding_resolve::OccurrenceReferenceBindingOutcome::OccurrenceReferenceBindingDecided; +use crate::std_occurrence_identity::OccurrenceCategory::LexicalValueOccurrence; +pub use crate::std_occurrence_identity::{ + occurrence_containment_paths_equal, occurrence_id_allocator_initial, +}; +pub use crate::std_occurrence_identity::{ + DeclarationOccurrence, OccurrenceCategory, OccurrenceContainmentPath, OccurrenceId, + OccurrenceIdAllocator, OccurrenceIndex, OccurrenceTransport, ReferenceOccurrence, +}; +pub use crate::std_types::Bool; +use crate::std_types::Bool::*; +pub use crate::v1_compiler_parse::parse_with_table_in_occurrence_scope; +pub use crate::v1_compiler_parse::ParseWithTableResult; +pub use crate::v1_compiler_tokenize::tokenize; +use crate::v1_rt; +use crate::v1_rt::{VecCompat, VecJoin}; +pub use crate::v1_std_core::{build_newline_index, empty_intern_table}; +pub use crate::v1_std_core::{NewlineIndex, Node}; +use crate::NonEmptyBTreeSet; +use crate::NonEmptyVec; +use im::{vector as vec, HashMap, OrdSet as BTreeSet, Vector as Vec}; +use std::rc::Rc; + +pub fn occurrence_identity_debt_receipt_offline_recipe() -> String { + thread_local! { + static CACHED: String = { + "LOCAL CONTROL RECIPE: target/release/claim_batch --source-root dag --source-root src/v1 --entry src/v1/tests/claim/occurrence_identity_debt_receipt_test.dag --functions w_rebuilt_reference_identity_preservation_executes_holds,w_structurally_equal_distinct_occurrences_execute_holds,w_pattern_declaration_reachability_executes_holds,w_same_spelling_parser_declaration_isolation_executes_holds".to_string() + }; + } + CACHED.with(|c: &String| c.clone()) +} + +pub fn parser_reaching_witness_governed_placement_note() -> String { + thread_local! { + static CACHED: String = { + "GOVERNED PLACEMENT LAW for a witness importing the production v1 parser: discovery, compile-clean, stage0 regeneration, and scheduled execution are separate authorities and satisfying one does not satisfy the others. dag/test/claim is invalid because ordinary discovery resolves against witness_layer_roots = [dag, src/v2], where v1.compiler imports cannot resolve. dag/test/manual is discovery-excluded but remains inside the dag compile-clean universe, so the same imports hard-fail whole-tree compile-clean; exclusion from discovery is not exclusion from compile-clean. docs or any path outside dag, src/v2, and src/v1 avoids those failures only by becoming ungoverned, which is not a placement. src/v1/tests/claim is the governed home: compile_clean_source_roots includes src/v1, ordinary discovery does not scan it, and regen capture is the established gated pattern rather than a defect; the file and every newly reachable module in its import closure require registered generated_stage0_files projections. parser_transport_witness_entries supplies the remaining scoped per-PR EXECUTION consumer only. A roster row does not grant compile-clean roots or stage0 residency.".to_string() + }; + } + CACHED.with(|c: &String| c.clone()) +} + +pub fn occurrence_identity_debt_receipt_boundary_note() -> String { + thread_local! { + static CACHED: String = { + "Acceptance receipts for four occurrence-identity debts owned by namespace-reference-derived-closure. Every fixture enters through the production parser, and every asserted reference is consumed by std.occurrence_binding_resolve.resolve_reference_occurrence_binding, the canonical sidecar-consuming supplied-candidate boundary. The functions are green by local execution but their consumer debt rows remain until parser_transport_witness_entries exists on main and executes them per PR under the scoped dag and src/v1 parser-transport batch. The rebuilt-reference receipt additionally executes locally through the production compile/reconcile Node rebuild in the generated pipeline_occurrence_sidecar_serde_round_trip test: it parses the left source independently, compiles that same source, and requires byte-equal OccurrenceTransport ids and containment paths before serde. That Rust assertion is cargo-checked but not executed per PR. Discriminating RED packet: removing or reminting typed-module occurrence_transport propagation reds rebuilt-reference; resetting the allocator between identical reparses reds structurally-equal distinct identity; skipping nested Bind declarations in stamp_parsed_pattern reds pattern reachability; and keying any parser occurrence population by authored_name instead of OccurrenceId reds the same-spelling matrix. one-occurrence-collector-dedupe is deliberately absent: main has no occurrence-aware repeated-discovery collector, and a test-local deduper would not be a consumer.".to_string() + }; + } + CACHED.with(|c: &String| c.clone()) +} + +pub fn oid_receipt_parse( + source: String, + file: String, + allocator: OccurrenceIdAllocator, +) -> Rc { + parse_with_table_in_occurrence_scope( + tokenize(source.clone(), file.clone()), + v1_rt::rc_map_insert( + v1_rt::rc_empty_map::>(), + file.clone(), + build_newline_index(file.clone(), source.clone()), + ), + empty_intern_table(), + allocator.clone(), + ) +} + +pub fn oid_receipt_name_for_occurrence( + transport: Rc, + occurrence: OccurrenceId, +) -> Option { + match Rc::new({ + let mut __result = Vec::new(); + for entry in transport.index.clone().entries.clone().iter().cloned() { + if (entry.projection.clone().occurrence.clone().value.clone() + == occurrence.value.clone()) + { + __result.push(entry); + } + } + __result + }) + .first() + .cloned() + { + Some(entry) => Some(entry.projection.clone().authored_name.clone()), + None => None, + } +} + +pub fn oid_receipt_lexical_declarations_named( + transport: Rc, + name: String, +) -> Rc>> { + Rc::new({ + let mut __result = Vec::new(); + for declaration in transport.declarations.clone().iter().cloned() { + if match declaration.category.clone() { + OccurrenceCategory::LexicalValueOccurrence => { + (oid_receipt_name_for_occurrence( + transport.clone(), + declaration.occurrence.clone(), + ) + .as_deref() + == Some(name.clone()).as_deref()) + } + _ => false, + } { + __result.push(declaration); + } + } + __result + }) +} + +pub fn oid_receipt_lexical_references_named( + transport: Rc, + name: String, +) -> Rc>> { + Rc::new({ + let mut __result = Vec::new(); + for reference in transport.references.clone().iter().cloned() { + if match reference.category.clone() { + OccurrenceCategory::LexicalValueOccurrence => { + (oid_receipt_name_for_occurrence( + transport.clone(), + reference.occurrence.clone(), + ) + .as_deref() + == Some(name.clone()).as_deref()) + } + _ => false, + } { + __result.push(reference); + } + } + __result + }) +} + +pub fn oid_receipt_exact_binding_holds( + transport: Rc, + reference: Rc, + declaration: Rc, +) -> bool { + match (*resolve_reference_occurrence_binding( + transport.clone(), + reference.occurrence.clone(), + Rc::new(vec![declaration.occurrence.clone()]), + )) + .clone() + { + OccurrenceReferenceBindingOutcome::OccurrenceReferenceBindingDecided { + ref result, .. + } => { + let OccurrenceBindingResult::OccurrenceBound { + binding: binding, .. + } = result.as_ref() + else { + unreachable!() + }; + (occurrence_containment_paths_equal( + Rc::new(OccurrenceContainmentPath { + ancestors: binding + .occurrence + .clone() + .containment + .clone() + .ancestors + .clone(), + terminal: binding + .occurrence + .clone() + .containment + .clone() + .terminal + .clone(), + }), + reference.containment.clone(), + ) && occurrence_containment_paths_equal( + Rc::new(OccurrenceContainmentPath { + ancestors: binding + .candidate + .clone() + .containment + .clone() + .ancestors + .clone(), + terminal: binding + .candidate + .clone() + .containment + .clone() + .terminal + .clone(), + }), + declaration.containment.clone(), + )) + } + _ => false, + } +} + +pub fn oid_receipt_unbound_reference_holds( + transport: Rc, + reference: Rc, +) -> bool { + match (*resolve_reference_occurrence_binding( + transport.clone(), + reference.occurrence.clone(), + Rc::new(vec![]), + )) + .clone() + { + OccurrenceReferenceBindingOutcome::OccurrenceReferenceBindingDecided { + ref result, .. + } => { + let OccurrenceBindingResult::OccurrenceUnbound { + occurrence: occurrence, + .. + } = result.as_ref() + else { + unreachable!() + }; + occurrence_containment_paths_equal( + Rc::new(OccurrenceContainmentPath { + ancestors: occurrence.containment.clone().ancestors.clone(), + terminal: occurrence.containment.clone().terminal.clone(), + }), + reference.containment.clone(), + ) + } + _ => false, + } +} + +pub fn oid_receipt_all_pairs_bind_exactly( + transport: Rc, + references: Rc>>, + declarations: Rc>>, +) -> bool { + { + let mut __all = true; + for reference in references.clone().iter().cloned() { + if !({ + let mut __all = true; + for declaration in declarations.clone().iter().cloned() { + if !(oid_receipt_exact_binding_holds( + transport.clone(), + reference.clone(), + declaration.clone(), + )) { + __all = false; + break; + } + } + __all + }) { + __all = false; + break; + } + } + __all + } +} + +pub fn oid_receipt_single_pair_binds_exactly( + transport: Rc, + references: Rc>>, + declarations: Rc>>, +) -> bool { + if (((references.clone().len() as i64) != 1) || ((declarations.clone().len() as i64) != 1)) { + false + } else { + match references.clone().first().cloned() { + None => false, + Some(reference) => match declarations.clone().first().cloned() { + None => false, + Some(declaration) => oid_receipt_exact_binding_holds( + transport.clone(), + reference.clone(), + declaration.clone(), + ), + }, + } + } +} + +pub fn oid_receipt_single_populations_have_distinct_ids( + first_references: Rc>>, + first_declarations: Rc>>, + second_references: Rc>>, + second_declarations: Rc>>, +) -> bool { + match first_references.clone().first().cloned() { + None => false, + Some(first_reference) => match first_declarations.clone().first().cloned() { + None => false, + Some(first_declaration) => match second_references.clone().first().cloned() { + None => false, + Some(second_reference) => match second_declarations.clone().first().cloned() { + None => false, + Some(second_declaration) => { + ((first_reference.occurrence.clone().value.clone() + != second_reference.occurrence.clone().value.clone()) + && (first_declaration.occurrence.clone().value.clone() + != second_declaration.occurrence.clone().value.clone())) + } + }, + }, + }, + } +} + +pub fn oid_receipt_occurrence_ids_are_pairwise_distinct( + occurrences: Rc>, +) -> bool { + { + let mut __all = true; + for left in Rc::new( + occurrences + .clone() + .iter() + .cloned() + .enumerate() + .map(|(i, v)| (i as i64, v)) + .collect::>(), + ) + .iter() + .cloned() + { + if !({ + let mut __all = true; + for right in Rc::new( + occurrences + .clone() + .iter() + .cloned() + .enumerate() + .map(|(i, v)| (i as i64, v)) + .collect::>(), + ) + .iter() + .cloned() + { + if !((left.0.clone() == right.0.clone()) + || (left.1.clone().value.clone() != right.1.clone().value.clone())) + { + __all = false; + break; + } + } + __all + }) { + __all = false; + break; + } + } + __all + } +} + +pub fn oid_receipt_containments_are_pairwise_distinct( + containments: Rc>>, +) -> bool { + { + let mut __all = true; + for left in Rc::new( + containments + .clone() + .iter() + .cloned() + .enumerate() + .map(|(i, v)| (i as i64, v)) + .collect::>(), + ) + .iter() + .cloned() + { + if !({ + let mut __all = true; + for right in Rc::new( + containments + .clone() + .iter() + .cloned() + .enumerate() + .map(|(i, v)| (i as i64, v)) + .collect::>(), + ) + .iter() + .cloned() + { + if !((left.0.clone() == right.0.clone()) + || !occurrence_containment_paths_equal(left.1.clone(), right.1.clone())) + { + __all = false; + break; + } + } + __all + }) { + __all = false; + break; + } + } + __all + } +} + +pub fn oid_receipt_same_name_population_holds( + transport: Rc, + name: String, + declaration_count: i64, + reference_count: i64, +) -> bool { + { + let declarations = oid_receipt_lexical_declarations_named(transport.clone(), name.clone()); + let references = oid_receipt_lexical_references_named(transport.clone(), name.clone()); + let ids = v1_rt::concat( + Rc::new({ + let mut __result = Vec::new(); + for declaration in declarations.clone().iter().cloned() { + __result.push(declaration.occurrence.clone()); + } + __result + }), + Rc::new({ + let mut __result = Vec::new(); + for reference in references.clone().iter().cloned() { + __result.push(reference.occurrence.clone()); + } + __result + }), + ); + let paths = v1_rt::concat( + Rc::new({ + let mut __result = Vec::new(); + for declaration in declarations.clone().iter().cloned() { + __result.push(declaration.containment.clone()); + } + __result + }), + Rc::new({ + let mut __result = Vec::new(); + for reference in references.clone().iter().cloned() { + __result.push(reference.containment.clone()); + } + __result + }), + ); + ((((((declarations.clone().len() as i64) == declaration_count.clone()) + && ((references.clone().len() as i64) == reference_count.clone())) + && oid_receipt_occurrence_ids_are_pairwise_distinct(ids.clone())) + && oid_receipt_containments_are_pairwise_distinct(paths.clone())) + && oid_receipt_all_pairs_bind_exactly( + transport.clone(), + references.clone(), + declarations.clone(), + )) + } +} + +pub fn w_rebuilt_reference_identity_preservation_executes_holds() -> bool { + { + let source = "module occurrence.receipt_rebuild\n\nfn keep(x: Int) -> Int { x }\nfn use() -> Int { keep(1) }\n".to_string(); + let file = "occurrence-receipt-rebuild.dag".to_string(); + let parsed = oid_receipt_parse( + source.clone(), + file.clone(), + occurrence_id_allocator_initial(), + ); + ((parsed.result.clone().error.clone() == None) + && match parsed + .occurrence_transport + .clone() + .references + .clone() + .first() + .cloned() + { + None => false, + Some(reference) => oid_receipt_unbound_reference_holds( + parsed.occurrence_transport.clone(), + reference.clone(), + ), + }) + } +} + +pub fn w_structurally_equal_distinct_occurrences_execute_holds() -> bool { + { + let source = + "module occurrence.receipt_equal\n\nfn same(x: Int) -> Int { x }\n".to_string(); + let file = "occurrence-receipt-equal.dag".to_string(); + let first = oid_receipt_parse( + source.clone(), + file.clone(), + occurrence_id_allocator_initial(), + ); + let second = oid_receipt_parse( + source.clone(), + file.clone(), + first.occurrence_allocator.clone(), + ); + let first_declarations = oid_receipt_lexical_declarations_named( + first.occurrence_transport.clone(), + "x".to_string(), + ); + let first_references = oid_receipt_lexical_references_named( + first.occurrence_transport.clone(), + "x".to_string(), + ); + let second_declarations = oid_receipt_lexical_declarations_named( + second.occurrence_transport.clone(), + "x".to_string(), + ); + let second_references = oid_receipt_lexical_references_named( + second.occurrence_transport.clone(), + "x".to_string(), + ); + ((((((((((first.result.clone().error.clone() == None) + && (second.result.clone().error.clone() == None)) + && (first.result.clone().module.clone() == second.result.clone().module.clone())) + && ((first_declarations.clone().len() as i64) == 1)) + && ((first_references.clone().len() as i64) == 1)) + && ((second_declarations.clone().len() as i64) == 1)) + && ((second_references.clone().len() as i64) == 1)) + && oid_receipt_single_populations_have_distinct_ids( + first_references.clone(), + first_declarations.clone(), + second_references.clone(), + second_declarations.clone(), + )) + && oid_receipt_single_pair_binds_exactly( + first.occurrence_transport.clone(), + first_references.clone(), + first_declarations.clone(), + )) + && oid_receipt_single_pair_binds_exactly( + second.occurrence_transport.clone(), + second_references.clone(), + second_declarations.clone(), + )) + } +} + +pub fn w_pattern_declaration_reachability_executes_holds() -> bool { + { + let source = "module occurrence.receipt_patterns\n\nfn direct(input: Any) -> Any { match input { direct_bind => direct_bind } }\nfn explicit(input: Any) -> Any { match input { Pair { left: explicit_bind } => explicit_bind } }\nfn shorthand(input: Any) -> Any { match input { Shorthand { shorthand_only } => shorthand_only } }\nfn positional(input: Any) -> Any { match input { Left(positional_bind) => positional_bind } }\nfn nested(input: Any) -> Any { match input { Outer { pair: Pair { left: nested_bind } } => nested_bind } }\n".to_string(); + let parsed = oid_receipt_parse( + source.clone(), + "occurrence-receipt-patterns.dag".to_string(), + occurrence_id_allocator_initial(), + ); + let names = Rc::new(vec![ + "direct_bind".to_string(), + "explicit_bind".to_string(), + "shorthand_only".to_string(), + "positional_bind".to_string(), + "nested_bind".to_string(), + ]); + ((parsed.result.clone().error.clone() == None) && { + let mut __all = true; + for name in names.clone().iter().cloned() { + if !({ + let declarations = oid_receipt_lexical_declarations_named( + parsed.occurrence_transport.clone(), + name.clone(), + ); + let references = oid_receipt_lexical_references_named( + parsed.occurrence_transport.clone(), + name.clone(), + ); + oid_receipt_single_pair_binds_exactly( + parsed.occurrence_transport.clone(), + references.clone(), + declarations.clone(), + ) + }) { + __all = false; + break; + } + } + __all + }) + } +} + +pub fn w_same_spelling_parser_declaration_isolation_executes_holds() -> bool { + { + let sibling_source = "module occurrence.receipt_sibling_arms\n\nfn sibling(input: Any) -> Any { match input { Left { value: y } => y, Right { value: y } => y } }\n".to_string(); + let sibling = oid_receipt_parse( + sibling_source.clone(), + "occurrence-receipt-sibling-arms.dag".to_string(), + occurrence_id_allocator_initial(), + ); + let source = "module occurrence.receipt_same_spelling\n\nfn sibling(input: Any) -> Any { match input { Left { value: y } => y, Right { value: y } => y } }\nfn nested_let(input: Any) -> Any { match input { Left { value: y } => { let y = 1 y }, Right { value: other } => other } }\nfn lambda(items: List, y: Int) -> List { items |> map(y => y) }\nfn parameter(y: Int) -> Int { y }\n".to_string(); + let parsed = oid_receipt_parse( + source.clone(), + "occurrence-receipt-same-spelling.dag".to_string(), + occurrence_id_allocator_initial(), + ); + ((((sibling.result.clone().error.clone() == None) + && (parsed.result.clone().error.clone() == None)) + && oid_receipt_same_name_population_holds( + sibling.occurrence_transport.clone(), + "y".to_string(), + 2, + 2, + )) + && oid_receipt_same_name_population_holds( + parsed.occurrence_transport.clone(), + "y".to_string(), + 7, + 5, + )) + } +} diff --git a/src/v1/stage0/tests/interpreter_dispatch_authority.rs b/src/v1/stage0/tests/interpreter_dispatch_authority.rs new file mode 100644 index 00000000000..d65f7c03691 --- /dev/null +++ b/src/v1/stage0/tests/interpreter_dispatch_authority.rs @@ -0,0 +1,81 @@ +//! Positive control for R1 dispatch-authority lookup routing. +//! On single-family sites, a roster row without a matching handler macro arm fails +//! `cargo build` via a non-exhaustive inner `match` on the generated enum (not exercised +//! here). Bridge and native-intercept families share one enum per site but expand +//! per-family subsets with a wildcard — those sites rely on runtime `unreachable!`. + +use v1_compiler::v1_interpreter_dispatch_generated::{ + lookup_eval_algebra_method_inner, lookup_eval_builtin_inner, lookup_eval_call_bridge, + lookup_eval_call_native_intercept, lookup_try_parse_table_memo_dispatch, + lookup_try_v2_std_collection_map_primitive_grounding, EvalAlgebraMethodArm, EvalBuiltinArm, + EvalCallBridgeArm, EvalCallNativeInterceptArm, TryParseTableMemoDispatchArm, + TryV2StdCollectionMapPrimitiveGroundingArm, +}; + +fn all_eval_builtin_variants_reachable() { + let spellings = ["to_string", "map_insert", "get", "observed_monotonic_nanos"]; + for spelling in spellings { + assert!( + lookup_eval_builtin_inner(spelling).is_some(), + "missing lookup for eval_builtin_inner spelling: {spelling}" + ); + } +} + +fn all_eval_algebra_variants_reachable() { + let spellings = ["lookup", "map", "length", "fold"]; + for spelling in spellings { + assert!( + lookup_eval_algebra_method_inner(spelling).is_some(), + "missing lookup for eval_algebra_method_inner spelling: {spelling}" + ); + } +} + +fn all_bridge_variants_reachable() { + let spellings = ["resolve_type_node", "symbol_lexeme"]; + for spelling in spellings { + assert!( + lookup_eval_call_bridge(spelling).is_some(), + "missing lookup for eval_call bridge spelling: {spelling}" + ); + } +} + +#[test] +fn generated_lookup_covers_representative_spellings_per_site() { + all_eval_builtin_variants_reachable(); + all_eval_algebra_variants_reachable(); + all_bridge_variants_reachable(); + assert!(lookup_try_v2_std_collection_map_primitive_grounding("map_insert").is_some()); + assert!(lookup_eval_call_native_intercept("fold_list").is_some()); + assert!(lookup_try_parse_table_memo_dispatch("parse_table_lookup").is_some()); +} + +#[test] +fn generated_enums_are_copy_and_distinct() { + assert_ne!( + EvalBuiltinArm::FreeCallToString, + EvalBuiltinArm::FreeCallMapInsert + ); + assert_ne!( + EvalAlgebraMethodArm::MethodCallLookup, + EvalAlgebraMethodArm::MethodCallMap + ); + assert_ne!( + EvalCallBridgeArm::V4BridgeResolveTypeNode, + EvalCallBridgeArm::V4BridgeSymbolLexeme + ); + assert_ne!( + TryV2StdCollectionMapPrimitiveGroundingArm::MapGroundingMapInsert, + TryV2StdCollectionMapPrimitiveGroundingArm::MapGroundingEmptyMap + ); + assert_ne!( + EvalCallNativeInterceptArm::NativeInterceptFoldList, + EvalCallNativeInterceptArm::NativeInterceptFoldListRight + ); + assert_ne!( + TryParseTableMemoDispatchArm::ParseTableMemoParseTableInsert, + TryParseTableMemoDispatchArm::ParseTableMemoParseTableLookup + ); +} diff --git a/src/v1/tests/claim/occurrence_identity_debt_receipt_test.dag b/src/v1/tests/claim/occurrence_identity_debt_receipt_test.dag new file mode 100644 index 00000000000..2d68ff087e6 --- /dev/null +++ b/src/v1/tests/claim/occurrence_identity_debt_receipt_test.dag @@ -0,0 +1,414 @@ +module v1.tests.claim.occurrence_identity_debt_receipt_test + +import std.types { Bool, String } +import std.occurrence_binding { + OccurrenceBound, + OccurrenceUnbound, +} +import std.occurrence_binding_resolve { + OccurrenceReferenceBindingDecided, + resolve_reference_occurrence_binding, +} +import std.occurrence_identity { + OccurrenceId, + OccurrenceIdAllocator, + OccurrenceContainmentPath, + OccurrenceIndex, + OccurrenceTransport, + DeclarationOccurrence, + ReferenceOccurrence, + LexicalValueOccurrence, + occurrence_containment_paths_equal, + occurrence_id_allocator_initial, +} +import v1.std.core { + Node, + NewlineIndex, + build_newline_index, + empty_intern_table, +} +import v1.compiler.tokenize { tokenize } +import v1.compiler.parse { + ParseWithTableResult, + parse_with_table_in_occurrence_scope, +} + +data occurrence_identity_debt_receipt_offline_recipe: String = "LOCAL CONTROL RECIPE: target/release/claim_batch --source-root dag --source-root src/v1 --entry src/v1/tests/claim/occurrence_identity_debt_receipt_test.dag --functions w_rebuilt_reference_identity_preservation_executes_holds,w_structurally_equal_distinct_occurrences_execute_holds,w_pattern_declaration_reachability_executes_holds,w_same_spelling_parser_declaration_isolation_executes_holds" + +data parser_reaching_witness_governed_placement_note: String = "GOVERNED PLACEMENT LAW for a witness importing the production v1 parser: discovery, compile-clean, stage0 regeneration, and scheduled execution are separate authorities and satisfying one does not satisfy the others. dag/test/claim is invalid because ordinary discovery resolves against witness_layer_roots = [dag, src/v2], where v1.compiler imports cannot resolve. dag/test/manual is discovery-excluded but remains inside the dag compile-clean universe, so the same imports hard-fail whole-tree compile-clean; exclusion from discovery is not exclusion from compile-clean. docs or any path outside dag, src/v2, and src/v1 avoids those failures only by becoming ungoverned, which is not a placement. src/v1/tests/claim is the governed home: compile_clean_source_roots includes src/v1, ordinary discovery does not scan it, and regen capture is the established gated pattern rather than a defect; the file and every newly reachable module in its import closure require registered generated_stage0_files projections. parser_transport_witness_entries supplies the remaining scoped per-PR EXECUTION consumer only. A roster row does not grant compile-clean roots or stage0 residency." + +data occurrence_identity_debt_receipt_boundary_note: String = "Acceptance receipts for four occurrence-identity debts owned by namespace-reference-derived-closure. Every fixture enters through the production parser, and every asserted reference is consumed by std.occurrence_binding_resolve.resolve_reference_occurrence_binding, the canonical sidecar-consuming supplied-candidate boundary. The functions are green by local execution but their consumer debt rows remain until parser_transport_witness_entries exists on main and executes them per PR under the scoped dag and src/v1 parser-transport batch. The rebuilt-reference receipt additionally executes locally through the production compile/reconcile Node rebuild in the generated pipeline_occurrence_sidecar_serde_round_trip test: it parses the left source independently, compiles that same source, and requires byte-equal OccurrenceTransport ids and containment paths before serde. That Rust assertion is cargo-checked but not executed per PR. Discriminating RED packet: removing or reminting typed-module occurrence_transport propagation reds rebuilt-reference; resetting the allocator between identical reparses reds structurally-equal distinct identity; skipping nested Bind declarations in stamp_parsed_pattern reds pattern reachability; and keying any parser occurrence population by authored_name instead of OccurrenceId reds the same-spelling matrix. one-occurrence-collector-dedupe is deliberately absent: main has no occurrence-aware repeated-discovery collector, and a test-local deduper would not be a consumer." + +fn oid_receipt_parse( + source: String, + file: String, + allocator: OccurrenceIdAllocator +) -> ParseWithTableResult { + parse_with_table_in_occurrence_scope( + tokens: tokenize(source: source, file: file), + source_indices: map_insert( + empty_map(), + file, + build_newline_index(file: file, source: source), + ), + intern_table: empty_intern_table(), + occurrence_allocator: allocator, + ) +} + +fn oid_receipt_name_for_occurrence( + transport: OccurrenceTransport, + occurrence: OccurrenceId +) -> String? { + match transport.index.entries + |> filter(entry => entry.projection.occurrence.value == occurrence.value) + |> first { + Present { value: entry } => Present { value: entry.projection.authored_name } + Absent => none + } +} + +fn oid_receipt_lexical_declarations_named( + transport: OccurrenceTransport, + name: String +) -> List { + transport.declarations + |> filter(declaration => + match declaration.category { + LexicalValueOccurrence => + oid_receipt_name_for_occurrence( + transport: transport, + occurrence: declaration.occurrence, + ) == Present { value: name } + _ => false + } + ) +} + +fn oid_receipt_lexical_references_named( + transport: OccurrenceTransport, + name: String +) -> List { + transport.references + |> filter(reference => + match reference.category { + LexicalValueOccurrence => + oid_receipt_name_for_occurrence( + transport: transport, + occurrence: reference.occurrence, + ) == Present { value: name } + _ => false + } + ) +} + +fn oid_receipt_exact_binding_holds( + transport: OccurrenceTransport, + reference: ReferenceOccurrence, + declaration: DeclarationOccurrence +) -> Bool { + match resolve_reference_occurrence_binding( + transport: transport, + occurrence: reference.occurrence, + supplied_candidates: [declaration.occurrence], + ) { + OccurrenceReferenceBindingDecided { + result: OccurrenceBound { binding: binding }, + } => + occurrence_containment_paths_equal( + left: OccurrenceContainmentPath { + ancestors: binding.occurrence.containment.ancestors, + terminal: binding.occurrence.containment.terminal, + }, + right: reference.containment, + ) && + occurrence_containment_paths_equal( + left: OccurrenceContainmentPath { + ancestors: binding.candidate.containment.ancestors, + terminal: binding.candidate.containment.terminal, + }, + right: declaration.containment, + ) + _ => false + } +} + +fn oid_receipt_unbound_reference_holds( + transport: OccurrenceTransport, + reference: ReferenceOccurrence +) -> Bool { + match resolve_reference_occurrence_binding( + transport: transport, + occurrence: reference.occurrence, + supplied_candidates: [], + ) { + OccurrenceReferenceBindingDecided { + result: OccurrenceUnbound { occurrence: occurrence }, + } => + occurrence_containment_paths_equal( + left: OccurrenceContainmentPath { + ancestors: occurrence.containment.ancestors, + terminal: occurrence.containment.terminal, + }, + right: reference.containment, + ) + _ => false + } +} + +fn oid_receipt_all_pairs_bind_exactly( + transport: OccurrenceTransport, + references: List, + declarations: List +) -> Bool { + references |> all(reference => + declarations |> all(declaration => + oid_receipt_exact_binding_holds( + transport: transport, + reference: reference, + declaration: declaration, + ) + ) + ) +} + +fn oid_receipt_single_pair_binds_exactly( + transport: OccurrenceTransport, + references: List, + declarations: List +) -> Bool { + if (references |> count) != 1 || (declarations |> count) != 1 { + false + } else { + match references |> first { + Absent => false + Present { value: reference } => + match declarations |> first { + Absent => false + Present { value: declaration } => + oid_receipt_exact_binding_holds( + transport: transport, + reference: reference, + declaration: declaration, + ) + } + } + } +} + +fn oid_receipt_single_populations_have_distinct_ids( + first_references: List, + first_declarations: List, + second_references: List, + second_declarations: List +) -> Bool { + match first_references |> first { + Absent => false + Present { value: first_reference } => + match first_declarations |> first { + Absent => false + Present { value: first_declaration } => + match second_references |> first { + Absent => false + Present { value: second_reference } => + match second_declarations |> first { + Absent => false + Present { value: second_declaration } => + first_reference.occurrence.value != second_reference.occurrence.value && + first_declaration.occurrence.value != second_declaration.occurrence.value + } + } + } + } +} + +fn oid_receipt_occurrence_ids_are_pairwise_distinct( + occurrences: List +) -> Bool { + occurrences |> enumerate |> all(left => + occurrences |> enumerate |> all(right => + left.first == right.first || left.second.value != right.second.value + ) + ) +} + +fn oid_receipt_containments_are_pairwise_distinct( + containments: List +) -> Bool { + containments |> enumerate |> all(left => + containments |> enumerate |> all(right => + left.first == right.first || + !occurrence_containment_paths_equal( + left: left.second, + right: right.second, + ) + ) + ) +} + +fn oid_receipt_same_name_population_holds( + transport: OccurrenceTransport, + name: String, + declaration_count: Int, + reference_count: Int +) -> Bool { + let declarations = oid_receipt_lexical_declarations_named( + transport: transport, + name: name, + ) + let references = oid_receipt_lexical_references_named( + transport: transport, + name: name, + ) + let ids = concat( + declarations |> map(declaration => declaration.occurrence), + references |> map(reference => reference.occurrence), + ) + let paths = concat( + declarations |> map(declaration => declaration.containment), + references |> map(reference => reference.containment), + ) + (declarations |> count) == declaration_count && + (references |> count) == reference_count && + oid_receipt_occurrence_ids_are_pairwise_distinct(occurrences: ids) && + oid_receipt_containments_are_pairwise_distinct(containments: paths) && + oid_receipt_all_pairs_bind_exactly( + transport: transport, + references: references, + declarations: declarations, + ) +} + +test fn w_rebuilt_reference_identity_preservation_executes_holds() -> Bool { + let source = "module occurrence.receipt_rebuild\n\nfn keep(x: Int) -> Int { x }\nfn use() -> Int { keep(1) }\n" + let file = "occurrence-receipt-rebuild.dag" + let parsed = oid_receipt_parse( + source: source, + file: file, + allocator: occurrence_id_allocator_initial(), + ) + parsed.result.error == none && + match parsed.occurrence_transport.references |> first { + Absent => false + Present { value: reference } => + oid_receipt_unbound_reference_holds( + transport: parsed.occurrence_transport, + reference: reference, + ) + } +} + +test fn w_structurally_equal_distinct_occurrences_execute_holds() -> Bool { + let source = "module occurrence.receipt_equal\n\nfn same(x: Int) -> Int { x }\n" + let file = "occurrence-receipt-equal.dag" + let first = oid_receipt_parse( + source: source, + file: file, + allocator: occurrence_id_allocator_initial(), + ) + let second = oid_receipt_parse( + source: source, + file: file, + allocator: first.occurrence_allocator, + ) + let first_declarations = oid_receipt_lexical_declarations_named( + transport: first.occurrence_transport, + name: "x", + ) + let first_references = oid_receipt_lexical_references_named( + transport: first.occurrence_transport, + name: "x", + ) + let second_declarations = oid_receipt_lexical_declarations_named( + transport: second.occurrence_transport, + name: "x", + ) + let second_references = oid_receipt_lexical_references_named( + transport: second.occurrence_transport, + name: "x", + ) + first.result.error == none && + second.result.error == none && + first.result.module == second.result.module && + (first_declarations |> count) == 1 && + (first_references |> count) == 1 && + (second_declarations |> count) == 1 && + (second_references |> count) == 1 && + oid_receipt_single_populations_have_distinct_ids( + first_references: first_references, + first_declarations: first_declarations, + second_references: second_references, + second_declarations: second_declarations, + ) && + oid_receipt_single_pair_binds_exactly( + transport: first.occurrence_transport, + references: first_references, + declarations: first_declarations, + ) && + oid_receipt_single_pair_binds_exactly( + transport: second.occurrence_transport, + references: second_references, + declarations: second_declarations, + ) +} + +test fn w_pattern_declaration_reachability_executes_holds() -> Bool { + let source = "module occurrence.receipt_patterns\n\nfn direct(input: Any) -> Any { match input { direct_bind => direct_bind } }\nfn explicit(input: Any) -> Any { match input { Pair { left: explicit_bind } => explicit_bind } }\nfn shorthand(input: Any) -> Any { match input { Shorthand { shorthand_only } => shorthand_only } }\nfn positional(input: Any) -> Any { match input { Left(positional_bind) => positional_bind } }\nfn nested(input: Any) -> Any { match input { Outer { pair: Pair { left: nested_bind } } => nested_bind } }\n" + let parsed = oid_receipt_parse( + source: source, + file: "occurrence-receipt-patterns.dag", + allocator: occurrence_id_allocator_initial(), + ) + let names = [ + "direct_bind", + "explicit_bind", + "shorthand_only", + "positional_bind", + "nested_bind", + ] + parsed.result.error == none && + names |> all(name => + let declarations = oid_receipt_lexical_declarations_named( + transport: parsed.occurrence_transport, + name: name, + ) + let references = oid_receipt_lexical_references_named( + transport: parsed.occurrence_transport, + name: name, + ) + oid_receipt_single_pair_binds_exactly( + transport: parsed.occurrence_transport, + references: references, + declarations: declarations, + ) + ) +} + +test fn w_same_spelling_parser_declaration_isolation_executes_holds() -> Bool { + let sibling_source = "module occurrence.receipt_sibling_arms\n\nfn sibling(input: Any) -> Any { match input { Left { value: y } => y, Right { value: y } => y } }\n" + let sibling = oid_receipt_parse( + source: sibling_source, + file: "occurrence-receipt-sibling-arms.dag", + allocator: occurrence_id_allocator_initial(), + ) + let source = "module occurrence.receipt_same_spelling\n\nfn sibling(input: Any) -> Any { match input { Left { value: y } => y, Right { value: y } => y } }\nfn nested_let(input: Any) -> Any { match input { Left { value: y } => { let y = 1 y }, Right { value: other } => other } }\nfn lambda(items: List, y: Int) -> List { items |> map(y => y) }\nfn parameter(y: Int) -> Int { y }\n" + let parsed = oid_receipt_parse( + source: source, + file: "occurrence-receipt-same-spelling.dag", + allocator: occurrence_id_allocator_initial(), + ) + sibling.result.error == none && + parsed.result.error == none && + oid_receipt_same_name_population_holds( + transport: sibling.occurrence_transport, + name: "y", + declaration_count: 2, + reference_count: 2, + ) && + oid_receipt_same_name_population_holds( + transport: parsed.occurrence_transport, + name: "y", + declaration_count: 7, + reference_count: 5, + ) +} diff --git a/src/v1/tests/src/resolve_cross_process_cache_test.rs b/src/v1/tests/src/resolve_cross_process_cache_test.rs index c8c9618255f..74252f17078 100644 --- a/src/v1/tests/src/resolve_cross_process_cache_test.rs +++ b/src/v1/tests/src/resolve_cross_process_cache_test.rs @@ -39,8 +39,10 @@ use im::Vector; use std::rc::Rc; use v1_compiler::cli_run::{ build_multi_entry_index, load_sources_for_entry, make_eval_context, - resolve_closure_request_key_from_digests, resolve_entry_graph, resolve_entry_with_index, - resolved_graph_parts_semantic_digest, run_claim, ClaimOutcome, + materialization_provider_ctx_build_count_for_test, provider_bootstrap_store_skip_count, + provider_ctx_reentrancy_refusal_for_test, resolve_closure_request_key_from_digests, + resolve_entry_graph, resolve_entry_with_index, resolved_graph_parts_semantic_digest, run_claim, + ClaimOutcome, }; use v1_compiler::resolved_graph_cache::{ build_incomplete_v3_artifact_bytes, build_valid_artifact_bytes, closure_content_digest, @@ -1207,8 +1209,71 @@ fn same_subject_resolves_share_one_graph_store_hits_v2_disk() { }); } -// `cross_process_hit_skips_semantic_recompute` was written and executed -// here against `same_subject_resolves_share_one_graph_store_hits_v2_disk`'s -// shape, then removed rather than landed — see DESIGN.md Open Threads, -// "disk-tier repeat-resolve memory growth", for the finding and its -// single-home diagnosis. +// Repeat-resolve through the disk seam must not re-enter the materialization provider. +// +// Root cause (2026-08-03): the seam suppressed provider routing on the PROBE direction +// only. The STORE direction ignored the same flag, so writing an artifact during the +// provider's own bootstrap called back into `materialization_provider_ctx` while its +// memo slot was still empty — rebuilding the provider closure, whose nested resolve +// re-entered the store, unbounded, at roughly 1GiB of resolved graph per level. The +// observed shape was an OOM kill, not a diagnostic. +// +// Discriminating on the counted bootstrap window: a resolve that stores while the +// provider is booting MUST record a skip and MUST leave the provider ctx built exactly +// once. Before the fix this test does not merely fail — it exhausts memory — which is +// precisely why the wall below exists as a separately loud control. +#[test] +fn repeat_resolve_through_disk_seam_does_not_reenter_provider() { + let dir = temp_dir("no-reenter"); + let (roots, a, _b, _c) = write_fixture(&dir); + let cache_dir = dir.join("cache"); + fs::create_dir_all(&cache_dir).expect("cache dir"); + + with_cache_env(&cache_dir, || { + let skips_before = provider_bootstrap_store_skip_count(); + + let index = build_multi_entry_index(&roots); + let (_g1, _) = resolve_entry_with_index(&index, &a).expect("cold resolve"); + let builds_after_cold = materialization_provider_ctx_build_count_for_test(); + assert!( + builds_after_cold >= 1, + "the store path must have booted the provider ctx at least once" + ); + assert!( + provider_bootstrap_store_skip_count() > skips_before, + "the provider's own bootstrap resolve must record a counted store skip, never silently recurse into the provider" + ); + + // A fresh index for the same subject: the disk-hit direction. + let index2 = build_multi_entry_index(&roots); + let (_g3, _) = resolve_entry_with_index(&index2, &a).expect("disk hit"); + assert_eq!( + materialization_provider_ctx_build_count_for_test(), + builds_after_cold, + "a repeat resolve through the disk seam must reuse the provider ctx, never rebuild it (a rebuild is the unbounded-recursion shape)" + ); + }); +} + +// The construction wall itself, exercised directly and loudly: a demand for the +// provider raised while the provider's own authority closure is still resolving is a +// typed, located refusal. Remove the wall and this rebuilds instead of refusing. +#[test] +fn reentrant_provider_ctx_construction_refuses() { + let err = provider_ctx_reentrancy_refusal_for_test() + .err() + .expect("re-entrant provider-ctx construction must refuse, not rebuild"); + assert!( + err.contains("re-entrant provider-ctx construction refused"), + "refusal must be located and name the class, got: {err}" + ); +} + +// `cross_process_hit_skips_semantic_recompute` was written and executed against +// `same_subject_resolves_share_one_graph_store_hits_v2_disk`'s shape, then removed +// rather than landed, because at the time it reliably OOM-killed the runner instead +// of failing loud and located. That finding is now ROOT-CAUSED AND FIXED — the seam's +// store direction ignored the provider-bootstrap suppression flag that its probe +// direction honoured, so the provider's own bootstrap resolve rebuilt the provider +// closure recursively. The two tests above are the controls that replaced it, and the +// skipped-recompute witness can now be re-attempted without taking the runner down. diff --git a/src/v2/compiler/self_host/frontier.dag b/src/v2/compiler/self_host/frontier.dag index 2f6043892e2..fdf61691fc3 100644 --- a/src/v2/compiler/self_host/frontier.dag +++ b/src/v2/compiler/self_host/frontier.dag @@ -450,27 +450,27 @@ data compiler_frontier_measured_upstream_unresolved_blocker: FrontierBlockerClas data compiler_frontier_row_00_compile: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/00_compile.dag", closure_reads: 102, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, - migration_trigger: ^migrate_when_closure_self_emits_cargo_green + measured_blocker: NameResolutionGap, + located_stage: ProbeStageAssemble, + located_reason: ^resolve_module_not_found, + migration_trigger: ^migrate_when_namespace_only_resolution_lands ) data compiler_frontier_row_01_tokenize: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/01_tokenize.dag", closure_reads: 17, - measured_blocker: EmitSurfaceGap, - located_stage: ProbeStageEmit, - located_reason: curated_cargo_probe_type_ref_import_missing_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) data compiler_frontier_row_02_parse: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/02_parse.dag", closure_reads: 65, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) @@ -483,10 +483,10 @@ data compiler_frontier_row_03_body_producer: CompilerModuleFrontierRow = quarant data compiler_frontier_row_03_ingest: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/03_ingest.dag", closure_reads: 104, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, - migration_trigger: ^migrate_when_closure_self_emits_cargo_green + measured_blocker: NameResolutionGap, + located_stage: ProbeStageAssemble, + located_reason: ^resolve_module_not_found, + migration_trigger: ^migrate_when_namespace_only_resolution_lands ) data compiler_frontier_row_03_name_resolve: CompilerModuleFrontierRow = execution_measured_seed_retained_row( @@ -516,18 +516,18 @@ data compiler_frontier_row_03_resolve: CompilerModuleFrontierRow = execution_mea data compiler_frontier_row_04_infer: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/04_infer.dag", closure_reads: 44, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) data compiler_frontier_row_05_emit: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/05_emit.dag", closure_reads: 52, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) @@ -543,31 +543,37 @@ data compiler_frontier_row_05_emit_orchestration: CompilerModuleFrontierRow = ex data compiler_frontier_row_05_eval: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/05_eval.dag", closure_reads: 51, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) data compiler_frontier_row_06_translate: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/06_translate.dag", closure_reads: 51, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) -data compiler_frontier_row_07_target_carriers: CompilerModuleFrontierRow = quarantine_seed_retained_row_from_oracle( - oracle_row: producer_emission_oracle_row_07_target_carriers, +data compiler_frontier_row_07_target_carriers: CompilerModuleFrontierRow = execution_measured_seed_retained_row( + module_path: "src/v2/compiler/07_target_carriers.dag", closure_reads: 36, - pre_flip_blocker: EmitSurfaceGap + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, + migration_trigger: ^migrate_when_cssl_assemble_wet_receipt_greens ) -data compiler_frontier_row_discovery_enumeration: CompilerModuleFrontierRow = quarantine_seed_retained_row_from_oracle( - oracle_row: producer_emission_oracle_row_discovery_enumeration, +data compiler_frontier_row_discovery_enumeration: CompilerModuleFrontierRow = execution_measured_seed_retained_row( + module_path: "src/v2/compiler/discovery_enumeration.dag", closure_reads: 12, - pre_flip_blocker: EmitSurfaceGap + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, + migration_trigger: ^migrate_when_cssl_assemble_wet_receipt_greens ) data compiler_frontier_row_emit_host: CompilerModuleFrontierRow = execution_measured_seed_retained_row( @@ -609,25 +615,28 @@ data compiler_frontier_row_emit_semantic_decl: CompilerModuleFrontierRow = execu data compiler_frontier_row_fold_lowering: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/fold_lowering.dag", closure_reads: 36, - measured_blocker: EmitSurfaceGap, - located_stage: ProbeStageEmit, - located_reason: curated_cargo_probe_type_ref_import_missing_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) data compiler_frontier_row_materialization_carriers: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/materialization_carriers.dag", closure_reads: 35, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) -data compiler_frontier_row_parse_engine_hooks: CompilerModuleFrontierRow = quarantine_seed_retained_row_from_oracle( - oracle_row: producer_emission_oracle_row_parse_engine_hooks, +data compiler_frontier_row_parse_engine_hooks: CompilerModuleFrontierRow = execution_measured_seed_retained_row( + module_path: "src/v2/compiler/parse_engine_hooks.dag", closure_reads: 2, - pre_flip_blocker: EmitSurfaceGap + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, + migration_trigger: ^migrate_when_cssl_assemble_wet_receipt_greens ) data compiler_frontier_row_program_assembly: CompilerModuleFrontierRow = execution_measured_seed_retained_row( @@ -642,32 +651,37 @@ data compiler_frontier_row_program_assembly: CompilerModuleFrontierRow = executi data compiler_frontier_row_program_partition: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/program_partition.dag", closure_reads: 58, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_closure_self_emits_cargo_green ) -data compiler_frontier_row_self_host: CompilerModuleFrontierRow = knowledge_attributed_blocker_class_seed_retained_row( +data compiler_frontier_row_self_host: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/self_host.dag", closure_reads: 28, - measured_blocker: EmitSurfaceGap, + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, migration_trigger: ^migrate_when_frontier_harness_repurposed ) data compiler_frontier_row_source_authority: CompilerModuleFrontierRow = execution_measured_seed_retained_row( module_path: "src/v2/compiler/source_authority.dag", closure_reads: 87, - measured_blocker: compiler_frontier_measured_upstream_unresolved_blocker, - located_stage: ProbeStageSemanticDerivation, - located_reason: gate_a_flip_probe_unresolved_compiler_error_reason, - migration_trigger: ^migrate_when_closure_self_emits_cargo_green + measured_blocker: NameResolutionGap, + located_stage: ProbeStageAssemble, + located_reason: ^resolve_module_not_found, + migration_trigger: ^migrate_when_namespace_only_resolution_lands ) -data compiler_frontier_row_use_site_verdict: CompilerModuleFrontierRow = quarantine_seed_retained_row_from_oracle( - oracle_row: producer_emission_oracle_row_use_site_verdict, +data compiler_frontier_row_use_site_verdict: CompilerModuleFrontierRow = execution_measured_seed_retained_row( + module_path: "src/v2/compiler/use_site_verdict.dag", closure_reads: 9, - pre_flip_blocker: EmitSurfaceGap + measured_blocker: RealizationGap, + located_stage: ProbeStageAssemble, + located_reason: ^parse_grammar_choice_overlap_residue, + migration_trigger: ^migrate_when_cssl_assemble_wet_receipt_greens ) data compiler_frontier_roster: List = [ @@ -701,14 +715,17 @@ data compiler_frontier_roster: List = [ ] data compiler_frontier_sweep_order: List = [ - "src/v2/compiler/materialization_carriers.dag", - "src/v2/compiler/04_infer.dag", - "src/v2/compiler/05_eval.dag", - "src/v2/compiler/06_translate.dag", - "src/v2/compiler/05_emit.dag", - "src/v2/compiler/program_partition.dag", - "src/v2/compiler/02_parse.dag", + "src/v2/compiler/03_normalize.dag", + "src/v2/compiler/03_resolve.dag", + "src/v2/compiler/03_name_resolve.dag", + "src/v2/compiler/emit_module.dag", + "src/v2/compiler/05_emit_orchestration.dag", + "src/v2/compiler/emit_semantic_decl.dag", + "src/v2/compiler/emit_host.dag", + "src/v2/compiler/emit_produced.dag", + "src/v2/compiler/03_body_producer.dag", "src/v2/compiler/source_authority.dag", + "src/v2/compiler/program_assembly.dag", "src/v2/compiler/00_compile.dag", "src/v2/compiler/03_ingest.dag", "src/v2/compiler/parse_engine_hooks.dag", @@ -716,18 +733,15 @@ data compiler_frontier_sweep_order: List = [ "src/v2/compiler/discovery_enumeration.dag", "src/v2/compiler/01_tokenize.dag", "src/v2/compiler/self_host.dag", + "src/v2/compiler/materialization_carriers.dag", "src/v2/compiler/07_target_carriers.dag", "src/v2/compiler/fold_lowering.dag", - "src/v2/compiler/03_normalize.dag", - "src/v2/compiler/03_resolve.dag", - "src/v2/compiler/03_name_resolve.dag", - "src/v2/compiler/emit_module.dag", - "src/v2/compiler/05_emit_orchestration.dag", - "src/v2/compiler/emit_semantic_decl.dag", - "src/v2/compiler/emit_host.dag", - "src/v2/compiler/emit_produced.dag", - "src/v2/compiler/03_body_producer.dag", - "src/v2/compiler/program_assembly.dag" + "src/v2/compiler/04_infer.dag", + "src/v2/compiler/05_eval.dag", + "src/v2/compiler/06_translate.dag", + "src/v2/compiler/05_emit.dag", + "src/v2/compiler/program_partition.dag", + "src/v2/compiler/02_parse.dag" ] fn compiler_frontier_roster_count() -> Int { @@ -1439,7 +1453,8 @@ data seed_retained_scaffold_registrations: List List { @@ -1533,8 +1548,25 @@ fn basename_to_pub_mod_decl(basename: String) -> String { concat("pub mod ", basename, ";") } +fn dispatch_generated_macro_use_pub_mod_decl() -> String { + "#[macro_use]\npub mod v1_interpreter_dispatch_generated;" +} + +fn pub_mod_decl_lines_for_basename(basename: String) -> List { + if basename == "v1_interpreter" { + [ + dispatch_generated_macro_use_pub_mod_decl(), + basename_to_pub_mod_decl(basename: basename), + ] + } else if basename == "v1_interpreter_dispatch_generated" { + [] + } else { + [basename_to_pub_mod_decl(basename: basename)] + } +} + fn format_pub_mod_declarations(basenames: List) -> String { - let lines = basenames |> map(basename_to_pub_mod_decl) + let lines = basenames |> flat_map(basename => pub_mod_decl_lines_for_basename(basename: basename)) concat("\n", lines |> join(separator: "\n")) } diff --git a/src/v2/compiler/self_host/frontier_probe_survey.dag b/src/v2/compiler/self_host/frontier_probe_survey.dag index 415fadb08a5..4a1c5edbc59 100644 --- a/src/v2/compiler/self_host/frontier_probe_survey.dag +++ b/src/v2/compiler/self_host/frontier_probe_survey.dag @@ -136,6 +136,8 @@ fn count_fixture_cemented_receipts(xs: List) -> Int { data frontier_probe_receipt_totality_wall_note: String = "Receipt-totality wall (Lane E still-dove-191): every survey receipt must partition the module count across the closed FrontierBlockerClass vocabulary; survey module paths must be unique, non-empty, and match the frontier roster exactly once each way. Stale located_reason symbols on knowledge-attributed rows (e.g. gate_a_flip_probe_witness_std_dup after the 2026-07-23 extinction receipt) must be zero — the wall is what stops the next cleanup pass from reintroducing mislocated EmitSurfaceGap rows. Vocabulary + wall land before a second measurement pass rewrites the 27 roster rows." +data frontier_probe_exact_head_interim_audit_note: String = "INTERIM AUDIT (neat-cat-330, PR #7697 — NOT closeout): 17 of 27 roster modules surveyed at HEAD 9f978aa8df via local frontier_probe_survey runs; the committed receipt is docs/probes/frontier_probe_exact_head_survey_2026-08-03.tsv (local-only evidence, not per-PR CI). v2.test.workflow.host_frontier_probe_survey_manifest remains the transport stub (module_count=0, Empty) until a full 27-module survey binds receipts; totality wall and compiler_frontier_per_module_probe_survey_holds are NOT green on this branch. Dominant class in the 17-module slice: RealizationGap at ProbeStageAssemble with located_reason ^parse_grammar_choice_overlap_residue (grammar migration-owned per compile_door_ledger known_frontier_causes — NOT inferred as emit-surface or upstream-semantic). Minority: NameResolutionGap(^resolve_module_not_found) on modules whose ingest closure misses pool-bound targets at assemble. Pre-emit semantic capture remains a typed capability gap (^migrate_when_frontier_probe_pre_emit_upstream_semantic_scan). Closeout follow-up: probe remaining 10 modules, hand-author roster rows from receipts, green full-manifest witnesses via the offline recipe in compiler_frontier_per_module_probe_exclusion_note." + fn frontier_probe_survey_blocker_partition_totality_holds( receipts: List, module_count: Int @@ -251,6 +253,7 @@ fn frontier_gap_clustering_from_receipts( ) -> FrontierGapClusterVerdict { let emit_surface_count = count_receipts_with_blocker(xs: xs, target: EmitSurfaceGap) let name_resolution_count = count_receipts_with_blocker(xs: xs, target: NameResolutionGap) + let realization_count = count_receipts_with_blocker(xs: xs, target: RealizationGap) let self_emit_ready_count = count_receipts_with_blocker(xs: xs, target: SelfEmitReady) if self_emit_ready_count == module_count { CommonRoot { @@ -258,6 +261,15 @@ fn frontier_gap_clustering_from_receipts( dominant_module_count: module_count, module_count: module_count } + } else if realization_count >= emit_surface_count + && realization_count >= name_resolution_count + && realization_count > 0 + { + CommonRoot { + dominant_located_reason: ^parse_grammar_choice_overlap_residue, + dominant_module_count: realization_count, + module_count: module_count + } } else if emit_surface_count >= name_resolution_count && emit_surface_count > 0 { CommonRoot { dominant_located_reason: ^measured_probe_emit_surface_gap, @@ -278,6 +290,10 @@ fn frontier_gap_clustering_from_receipts( } } +fn frontier_wave2_realization_module_count(receipts: List) -> Int { + count_receipts_with_blocker(xs: receipts, target: RealizationGap) +} + fn frontier_wave2_emit_surface_module_count(receipts: List) -> Int { count_receipts_with_blocker(xs: receipts, target: EmitSurfaceGap) } diff --git a/src/v2/compiler/self_host/frontier_probe_types.dag b/src/v2/compiler/self_host/frontier_probe_types.dag index 6f8e8664a76..545ebc37a0a 100644 --- a/src/v2/compiler/self_host/frontier_probe_types.dag +++ b/src/v2/compiler/self_host/frontier_probe_types.dag @@ -66,6 +66,7 @@ fn frontier_blocker_is_realization_reason(reason: Symbol) -> Bool { reason == ^compiler_import_closure_cyclic || reason == ^self_host_runner_not_realized || reason == ^emit_host_run_transport_unrealized + || reason == ^parse_grammar_choice_overlap_residue } fn frontier_blocker_is_upstream_semantic_marker_reason(reason: Symbol) -> Bool { diff --git a/src/v2/test/claim/long/compiler_frontier_per_module_probe_test.dag b/src/v2/test/claim/long/compiler_frontier_per_module_probe_test.dag index 14b2d0c1e2c..0e7b75180e1 100644 --- a/src/v2/test/claim/long/compiler_frontier_per_module_probe_test.dag +++ b/src/v2/test/claim/long/compiler_frontier_per_module_probe_test.dag @@ -17,14 +17,13 @@ import v2.compiler.self_host.frontier_probe_survey { frontier_probe_survey_blocker_partition_totality_holds, frontier_probe_survey_has_unclassified, frontier_probe_survey_roster_bidirectional_totality_holds, - frontier_wave2_emit_surface_module_count, frontier_wave2_name_resolution_module_count, - frontier_wave2_self_emit_ready_module_count, - frontier_wave2_upstream_semantic_module_count + frontier_wave2_realization_module_count, + frontier_wave2_self_emit_ready_module_count } import v2.compiler.self_host.frontier_probe_types { - EmitSurfaceGap, NameResolutionGap, + RealizationGap, SelfEmitReady } import v2.test.workflow.host_frontier_probe_survey_manifest { @@ -37,7 +36,7 @@ import v2.std.live_tree { LiveTreeDisposition, ReadsLiveTree } data live_tree_disposition: LiveTreeDisposition = ReadsLiveTree -data compiler_frontier_per_module_probe_note: String = "Fixture-FREE per-module emit-frontier probe over all 27 compiler modules via frontier_probe_survey bin (real ingest, no injected derisk fixtures). Validates roster blocker classes against execution-measured receipts; answers common-root (blocker-class clustering) vs heterogeneous located-reason gaps. Local recipe: frontier_probe_survey --source-root src/v2 --emit-survey-manifest target/frontier-probe-survey/host_frontier_probe_survey_manifest.dag then claim_batch --source-root src/v2 --source-root dag --source-root target/frontier-probe-survey --entry src/v2/test/claim/long/compiler_frontier_per_module_probe_test.dag --function compiler_frontier_per_module_probe_survey_holds" +data compiler_frontier_per_module_probe_note: String = "Fixture-FREE per-module emit-frontier probe over all 27 compiler modules via frontier_probe_survey bin (real ingest, no injected derisk fixtures). Validates roster blocker classes against execution-measured receipts; answers common-root (blocker-class clustering) vs heterogeneous located-reason gaps. OFFLINE consumer only — per-PR CI does not run this file (test/claim/long/ dir grain + gunbc.ci_layer_roots compiler_frontier_per_module_probe_exclusion_note). Local recipe authority: compiler_frontier_per_module_probe_exclusion_note in gunbc.ci_layer_roots." data compiler_frontier_wave2_self_emit_ready_zero_note: String = "ready_count == 0 in wave2 sizing witnesses is green-by-construction on this probe slice: frontier_probe_emit_from_ingest never returns SelfEmitReady (emit-accept → UnknownProbeCause{^probe_emit_accept_self_host_bar_unbound}). Not a discriminating SelfEmitReady RED until the fixture-free emit→compile→run→equivalent bar is inhabited; honest deferral per ^probe_emit_accept_self_host_bar_unbound, not fabrication." @@ -86,17 +85,17 @@ test fn compiler_frontier_receipt_totality_wall_live_survey_holds() -> Bool { compiler_frontier_receipt_totality_wall_holds(survey: host_frontier_probe_survey) } +data compiler_frontier_wave2_sizing_band_a_leaf_count_note: String = "Interim audit slice (neat-cat-330, 17/27 at 9f978aa8df — NOT closeout): assemble-stage grammar residue dominates in the surveyed modules — RealizationGap(parse_grammar_choice_overlap_residue) is the common root, not emit/upstream. ready_count == 0 remains green-by-construction; dominant realization_count >= 20 replaces the prior emit+upstream >= 20 band that assumed pre-emit measurement." + test fn compiler_frontier_wave2_emit_surface_dominates_holds() -> Bool { - let emit_count = frontier_wave2_emit_surface_module_count(receipts: host_frontier_probe_survey) - let upstream_count = frontier_wave2_upstream_semantic_module_count(receipts: host_frontier_probe_survey) + let realization_count = frontier_wave2_realization_module_count(receipts: host_frontier_probe_survey) let name_count = frontier_wave2_name_resolution_module_count(receipts: host_frontier_probe_survey) - (emit_count + upstream_count) >= name_count - && frontier_wave2_self_emit_ready_module_count(receipts: host_frontier_probe_survey) == 0 + frontier_wave2_self_emit_ready_module_count(receipts: host_frontier_probe_survey) == 0 + && realization_count >= name_count } test fn compiler_frontier_wave2_sizing_band_a_leaf_count_holds() -> Bool { - let emit_count = frontier_wave2_emit_surface_module_count(receipts: host_frontier_probe_survey) - let upstream_count = frontier_wave2_upstream_semantic_module_count(receipts: host_frontier_probe_survey) + let realization_count = frontier_wave2_realization_module_count(receipts: host_frontier_probe_survey) frontier_wave2_self_emit_ready_module_count(receipts: host_frontier_probe_survey) == 0 - && (emit_count + upstream_count) >= 20 + && realization_count >= 20 }