From 311b303744d17774c1069520f0cbd3d9703fd723 Mon Sep 17 00:00:00 2001 From: fy59 Date: Thu, 3 Sep 2026 09:42:47 +0200 Subject: [PATCH] fix: repair calibration solver bundle evidence --- docs/roadmap/roadmap.md | 2 + prompt/02_CURRENT_FROZEN_STATE.md | 1 + prompt/12_CALIBRATION.md | 1 + .../calibration_evidence_solver | Bin 172744 -> 173264 bytes .../calibration_evidence_solver.cpp | 146 ++++++++++++++---- 5 files changed, 117 insertions(+), 33 deletions(-) diff --git a/docs/roadmap/roadmap.md b/docs/roadmap/roadmap.md index 636d84a..edce667 100644 --- a/docs/roadmap/roadmap.md +++ b/docs/roadmap/roadmap.md @@ -525,6 +525,8 @@ The solver session contract now also requires explicit measured `white_border >= `CALIBRATION_SOLVER_PER_VIEW_EVIDENCE_V1=PASS/FROZEN`: `detection.json` now retains the exact per-view Science v1 classifications and residual-support evidence required by the future workflow coordinator; downstream code must consume rather than recompute them. +`CALIBRATION_SOLVER_BUNDLE_REPAIR_V1=PASS/FROZEN`: retained per-view fields are now present in the actual solver output, `producer.json` is valid canonical JSON, solver-configuration records contain real line feeds, and the deterministic self-test checks these contents rather than byte identity alone. + A bounded Tooling correction aligned planarity handling with Calibration Science v1: Science v1 defines a categorical physical planarity attestation, not a numeric flatness threshold. Tooling therefore rejects invented finite `target_flatness_mm` values. `L3DCALB1` v1 and Calibration diff --git a/prompt/02_CURRENT_FROZEN_STATE.md b/prompt/02_CURRENT_FROZEN_STATE.md index efa7ff8..04e33b7 100644 --- a/prompt/02_CURRENT_FROZEN_STATE.md +++ b/prompt/02_CURRENT_FROZEN_STATE.md @@ -30,6 +30,7 @@ Calibration Evidence Solver v1 IMPLEMENTED/VALIDATED Calibration solver white-border evidence PASS/FROZEN Calibration solver producer identity PASS/FROZEN Calibration solver per-view evidence PASS/FROZEN +Calibration solver bundle repair PASS/FROZEN Calibration Tooling planarity alignment PASS/FROZEN ``` diff --git a/prompt/12_CALIBRATION.md b/prompt/12_CALIBRATION.md index 40916ac..039abe3 100644 --- a/prompt/12_CALIBRATION.md +++ b/prompt/12_CALIBRATION.md @@ -11,6 +11,7 @@ CALIBRATION_EVIDENCE_SOLVER_V1=IMPLEMENTED/VALIDATED CALIBRATION_SOLVER_WHITE_BORDER_V1=PASS/FROZEN CALIBRATION_SOLVER_PRODUCER_IDENTITY_V1=PASS/FROZEN CALIBRATION_SOLVER_PER_VIEW_EVIDENCE_V1=PASS/FROZEN +CALIBRATION_SOLVER_BUNDLE_REPAIR_V1=PASS/FROZEN CALIBRATION_WORKFLOW=IN_PROGRESS CURRENT_CALIBRATION_NEXT=WORKFLOW_COORDINATOR ``` diff --git a/tools/calibration_evidence_solver/calibration_evidence_solver b/tools/calibration_evidence_solver/calibration_evidence_solver index 8dd35396784c8b8b52f436c6625c315edcbd5f89..79ab57b314e9e23770f556ade43131ff076d0ce9 100755 GIT binary patch delta 67953 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 delta 63691 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 }xmhuJU(e_HU!G$>x(x(*Ajq?aSF*eZ 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 R#5H image; std::vector object; std::vector residuals; + size_t high_residual_count = 0; double occupancy = 0, angle = 0, distance = 0, rmse = 0, max_residual = 0; double image_conversion_max = 0, object_conversion_max = 0; double pre_solve_corner_rms = -1, clipping_fraction = -1; @@ -231,9 +232,9 @@ bool residuals(std::vector* views,const std::vector& indices, std::string* why) { long double sum=0; size_t n=0; *maximum=0; *high=0; if(s.rvec.size()!=indices.size()||s.tvec.size()!=indices.size()){*why="pose count";return false;} - for(size_t j=0;j1.0)++*high;sum+=static_cast(d)*d;++n;} + if(!finite(e.x)||!finite(e.y)){*why="nonfinite residual";return false;}const double d=cv::norm(e);v.residuals.push_back(e);v.rmse+=d*d;v.max_residual=std::max(v.max_residual,d);*maximum=std::max(*maximum,d);if(d>1.0){++v.high_residual_count;++*high;}sum+=static_cast(d)*d;++n;} if(v.object.empty()){*why="empty view";return false;}v.rmse=std::sqrt(v.rmse/static_cast(v.object.size()));} if(n==0){*why="no residuals";return false;}*count=n;*rms=std::sqrt(static_cast(sum/static_cast(n)));return true; } @@ -251,19 +252,20 @@ bool exact_solve(const Solve& a, const Solve& b) { } std::string number(double x) { std::ostringstream o; o.imbue(std::locale::classic()); o<=.135?1:0)+(p.y>=.105?2:0)]=1;d<<(q[0]+q[1]+q[2]+q[3])<<",\"coordinate_equivalence\":{\"comparison_points\":"<( + (point.x >= .135 ? 1 : 0) + (point.y >= .105 ? 2 : 0)); + target_mask |= 1u << quadrant; + } + unsigned target_quadrants = 0; + for (unsigned bit = 0; bit < 4; ++bit) { + target_quadrants += (target_mask >> bit) & 1u; + } + + d << "{\"source_sha256\":\"" << hex(v.hash) + << "\",\"orientation\":" << v.orientation + << ",\"oriented_width\":" << v.width + << ",\"oriented_height\":" << v.height + << ",\"decision\":\"" << (v.accepted ? "accepted" : "rejected") + << "\",\"reason\":\"" << (v.reject.empty() ? "-" : v.reject) + << "\",\"frame_region\":" << v.quadrant + << ",\"distance_band\":" << v.distance_band + << ",\"holdout\":" << (v.holdout ? "true" : "false") + << ",\"target_occupancy\":\"" << number(v.occupancy) + << "\",\"normal_angle_degrees\":\"" << number(v.angle) + << "\",\"measured_distance_metres\":\"" << number(v.distance) + << "\",\"pre_solve_corner_rms_px\":\"" << number(v.pre_solve_corner_rms) + << "\",\"clipping_fraction\":\"" << number(v.clipping_fraction) + << "\",\"physical_target_quadrants\":" << target_quadrants + << ",\"target_corner_quadrant_mask\":" << target_mask + << ",\"corner_count\":" << v.ids.size() + << ",\"residual_count\":" << v.residuals.size() + << ",\"high_residual_count\":" << v.high_residual_count + << ",\"reprojection_rmse_px\":\"" << number(v.rmse) + << "\",\"maximum_residual_px\":\"" << number(v.max_residual) + << "\",\"coordinate_equivalence\":{\"comparison_points\":" + << v.coordinate_comparison_count + << ",\"max_abs_dx_px\":\"" << number(v.coordinate_dx_max) + << "\",\"max_abs_dy_px\":\"" << number(v.coordinate_dy_max) + << "\",\"pass\":" << (v.coordinate_ok ? "true" : "false") + << "},\"corners\":["; + + for (size_t j = 0; j < v.ids.size(); ++j) { + if (j) d << ','; + d << "{\"id\":" << v.ids[j] + << ",\"x\":\"" << number(v.image[j].x) + << "\",\"y\":\"" << number(v.image[j].y) << "\"}"; + } + d << "]}" << (i + 1 == views.size() ? "\n" : " ,\n"); + } d<<"]\n}\n";d.close();if(!d)return fail("detection write"); std::ofstream s(temp/"solve.json",std::ios::binary);if(!s)return fail("solve output"); s<<"{\n\"format\":\"L3DCAL_SOLVE_V1\",\n\"runs\":[\n";for(int run=0;run<3;++run){const Solve&z=full[run];s<<"{\"run\":"<(high)/static_cast(count))<<"\",\n\"holdout\":{\"rmse_px\":\""<&v,const Solve&s,double independent_rms, @@ -322,7 +373,7 @@ void report(const std::vector&v,const Solve&s,double independent_rms, bool run_session(const std::string& session) { std::vector v;std::array optical{};SessionEvidence evidence;std::string why; std::array solver_executable_sha256{},session_sha256{}; - if(!file_hash("/proc/self/exe",&solver_executable_sha256)||!file_hash(session,&session_sha256)){std::cerr<<"FAIL producer/session hash\\n";return false;} + if(!file_hash("/proc/self/exe",&solver_executable_sha256)||!file_hash(session,&session_sha256)){std::cerr<<"FAIL producer/session hash\n";return false;} const std::array solver_configuration_sha256=text_hash(solver_configuration_record()); if(!read_session(session,&v,&optical,&evidence,&why)||!detect(&v,&why)){std::cerr<<"FAIL "< all;cv::Size size;for(size_t i=0;i=2 && + producer_text.compare(producer_text.size()-2,2,"}\n")==0 && + producer_text.find("\\n")==std::string::npos && + producer_text.find("\\\"")==std::string::npos; + const bool per_view_fields= + detection_text.find("\"frame_region\"")!=std::string::npos && + detection_text.find("\"distance_band\"")!=std::string::npos && + detection_text.find("\"holdout\"")!=std::string::npos && + detection_text.find("\"target_occupancy\"")!=std::string::npos && + detection_text.find("\"normal_angle_degrees\"")!=std::string::npos && + detection_text.find("\"measured_distance_metres\"")!=std::string::npos && + detection_text.find("\"target_corner_quadrant_mask\"")!=std::string::npos && + detection_text.find("\"corner_count\"")!=std::string::npos && + detection_text.find("\"residual_count\"")!=std::string::npos && + detection_text.find("\"high_residual_count\"")!=std::string::npos && + detection_text.find("\"reprojection_rmse_px\"")!=std::string::npos && + detection_text.find("\"maximum_residual_px\"")!=std::string::npos; + const bool bytes=written&&identical("detection.json")&&identical("solve.json")&& + identical("evidence.json")&&identical("producer.json")&& + producer_json_valid&&per_view_fields; std::cout<