Repository navigation
feat(analysis): choose external prediction files in workbench - #84
Conversation
Expose the existing evaluator through an explicit file mode, preserving queued request identity and execution-time file provenance. Keep controls usable at small window sizes and enable cancellation from thread reservation. Preserve native receiving and independent counterexamples. Source and evidence tree matches c8acdd18f8e6d57b48178137500e32ed6a41e5f8 exactly. Current parent 3cbb530 retained. Closes #69 after supported Windows receiving.
|
Publication readback is complete for head All 22 planned source/evidence leaves and modes match their native Git identities. All 1,053 declared-parent leaves outside the four intentional modifications are exact; the public tree contains 1,075 leaves. The three independent archives retain their original blob and SHA-256 identities. No receiving result was relabeled to this later public commit. The actual PR merge is clean at {
"accepted": true,
"public_head": "1f0d19c17e760d4dd5c1146ce46075cc3f3ce45d",
"public_tree": "66ef9a19ffc8ab920e1be9c1d278ae0741d09af2",
"local_head": "c8acdd18f8e6d57b48178137500e32ed6a41e5f8",
"local_tree": "66ef9a19ffc8ab920e1be9c1d278ae0741d09af2",
"declared_parent": "3cbb5300bdc79c157370d1b3e599a6c82752d54a",
"planned_leaves": 22,
"unchanged_parent_leaves": 1053,
"total_leaves": 1075,
"all_modes_match": true
}The existing |
Independent root receiving — current source and complete treeRoot The complete 1,088-leaf proposal preserves all 1,066 unowned current-parent leaves and modes plus 21 exact non-PROGRESS contribution leaves. Its PROGRESS is exactly current main's entire text followed by the candidate's original additive entry, preserving the incoming metadata owner's edits. There are no unexpected new paths or dropped current leaves. The unchanged Windows CI workflow and test runner collect the new UI module. Actual non-skipped Windows MainWindow execution and successful process/JUnit agreement still require the separate hosted receipt. This source/tree admission does not assert deployment or repeat the native six-job evaluator qualification. {
"schema": "capturesuite.root.current-tree-receiving.v1",
"declared_parent": "3cbb5300bdc79c157370d1b3e599a6c82752d54a",
"published_head": "1f0d19c17e760d4dd5c1146ce46075cc3f3ce45d",
"published_tree": "66ef9a19ffc8ab920e1be9c1d278ae0741d09af2",
"current_parent": "11cc78297d8d214407aea693548af4de855d61da",
"current_parent_tree": "2704707993e09393fa6b7d8f319ff0b58d6a2dfc",
"proposal": "c185ea19d48d38e3fdbd2c7e6c53df3c5910f0f8",
"proposal_tree": "403867895d097ce61d291ab750cef2f8d2047c60",
"declared_parent_leaves": 1057,
"published_leaves": 1075,
"current_parent_leaves": 1070,
"proposal_leaves": 1088,
"planned_paths": [
"desktop/capture_desktop/screen_analysis.py",
"desktop/capture_desktop/widgets_analysis_jobs.py",
"desktop/capture_desktop/widgets_analysis_predictions.py",
"docs/design/ANALYSIS.md",
"docs/design/research/EXTERNAL_EVALUATION_WORKBENCH.md",
"docs/design/research/PROGRESS.md",
"docs/evidence/analysis-predictions-6e5752b49b6f/AUTHOR_RECEIVING.md",
"docs/evidence/analysis-predictions-6e5752b49b6f/README.md",
"docs/evidence/analysis-predictions-6e5752b49b6f/author-packet-summary.json",
"docs/evidence/analysis-predictions-6e5752b49b6f/author-receiving.tar.gz",
"docs/evidence/analysis-predictions-6e5752b49b6f/counterexamples-README.md",
"docs/evidence/analysis-predictions-6e5752b49b6f/current-parent-receiving.json",
"docs/evidence/analysis-predictions-6e5752b49b6f/current-parent-receiving.tar.gz",
"docs/evidence/analysis-predictions-6e5752b49b6f/functional-README.md",
"docs/evidence/analysis-predictions-6e5752b49b6f/independent-counterexamples.tar.gz",
"docs/evidence/analysis-predictions-6e5752b49b6f/independent-functional.tar.gz",
"docs/evidence/analysis-predictions-6e5752b49b6f/independent-successor.tar.gz",
"docs/evidence/analysis-predictions-6e5752b49b6f/qualification-manifest.json",
"docs/evidence/analysis-predictions-6e5752b49b6f/root-source-review.json",
"docs/evidence/analysis-predictions-6e5752b49b6f/source-preservation.json",
"docs/evidence/analysis-predictions-6e5752b49b6f/successor-README.md",
"tests/ui/test_analysis_predictions.py"
],
"preserved_unowned_current_leaves": 1066,
"exact_non_progress_contribution_leaves": 21,
"violations": [],
"progress_union": {
"head_preserves_declared_prefix": true,
"current_preserves_declared_prefix": false,
"proposal_preserves_current_prefix": true,
"proposal_is_current_plus_only_candidate_append": true,
"base_chars": 59793,
"current_chars": 61612,
"head_chars": 62226,
"proposal_chars": 64045,
"added_chars": 2433,
"length_unit": "JavaScript UTF-16 code units; no byte-length assertion"
},
"hosted_ci_pending": true,
"native_qualified_runtime_and_test_blob_checks": "Exact received SHA256 and actual Git blob/byte counts verified independently for all four runtime/test files at published 1f0d19c.",
"runtime_and_test_files": [
{
"path": "desktop/capture_desktop/widgets_analysis_predictions.py",
"bytes": 5591,
"sha256": "d865031e313b0c1aed23a2cb0beeb20441a96d380f0b3652458107ba4a6e2435",
"git_blob": "0e47254965e7da4428f9e2f0b3a2d75f1e92a433"
},
{
"path": "desktop/capture_desktop/widgets_analysis_jobs.py",
"bytes": 6995,
"sha256": "a012ac150e1301a630417cd78238c050093206f94f073e6e0ee4c90f22b81b62",
"git_blob": "8f65859da5b4bebf8e7a4b1cd9cba60432fc2972"
},
{
"path": "desktop/capture_desktop/screen_analysis.py",
"bytes": 17960,
"sha256": "a62e7e9ae63c658205531ef51844f4a68a64c738ce1de6083f93a4e9a5ddbc94",
"git_blob": "b169ab728babf879701ccbb084f959ee02ae4155"
},
{
"path": "tests/ui/test_analysis_predictions.py",
"bytes": 20960,
"sha256": "e87f63a19639d40785d922b3e78d27b8487feb51a3c3c46d89ea6184f7facbe2",
"git_blob": "94d9b13131785f88990509e622a7e504fa9047ad"
}
],
"artifact_custody": "The local receiving-file write failed in the full scratch filesystem. This exact complete receipt is preserved in the PR conversation; no source/evidence files or permissions were changed to recover capacity."
} |
|
The Windows failure is now localized and preserved. Ordinary run 37816542567 timed out on unchanged c185 source before JUnit. The single unchanged-source diagnostic run 37820661674 / job113460546664 collected582 items and directly observed the first real Qt chooser call: the helper's selectFile dropped the fixture's significant leading space; a nested QMessageBox blocked dialog.accept. Qt's nonnative flag and timers worked, and the actual faulthandler stack confirmed that call. This is a receiver selection/cleanup defect; production chooser behavior is unchanged. Successor 2db743a / tree f4543bbb648b74f81ded4f9c0454b171b9a371a6 corrects only the test helper and adds a real missing-file cleanup regression. The helper enters a quoted literal filename, verifies selectedFiles before accept, and uses a separate bounded watchdog to unwind unexpected nested dialogs. The original significant-space case remains. The existing ordinary300-second runner, test selection and source admission remain exact. A read-only post-Pytest step emits the actual module testcase XML and complete XML SHA, requiring a non-skipped passing MainWindow, literal-name selection and bounded missing-file case. This avoids inferring named passes from progress dots; the previously supported artifact downloads were refused403. Full-tree readback preserves1,072 of1,075 original leaves/modes. Only the test, workflow observer and progress append change existing paths; four scoped evidence files are added. The original failure archive remains byte-identical and the complete diagnostic raw log is preserved losslessly. The diagnostic workflow is copied under docs only; it is not installed as an ordinary workflow. Correction and provenance. Python syntax checks pass. The original Mac is currently offline, so no new local native pass is claimed. Actual successor Windows execution remains pending; no skipped gate, relaxed timeout or product correction is claimed. |
|
Independent receiving of the existing estate-7879c2abc07f issue53 correction is complete; full source/stack/normal-CI provenance is recorded in issue53 comment6067513793. PR79 head Our separately retained PR84 diagnostic on exact Owner-facing cross-link: PR79 receiving/adoption notice. PR84 staging |
…oundaries Preserve the merged source picker, the original failed Windows receipts, and exact owner-authored PR79 scope wait correction. Keep the ordinary 300-second gate and require named actual MainWindow JUnit acceptance.
|
Windows correction candidate 8c88dde, tree 124d8a691ed240661c4ba56c84219692bff6b228, now preserves current source-picker main6ef through the reviewed e3 composition. Ordinary full-suite 300-second qualification is pending; no timeout or skip was added.
Full correction record and original compressed logs: |
Independent ordinary Windows receiving ACCEPTED — estate-6e5752b49b6f/github_integrationThe actual ordinary run 37833803462 / Python job 113505614565 is accepted at proposed head An independently executed Python log/XML receiver confirms 640 passed, six daemon skips, zero failures/errors; process 0; 98.773261 seconds under the unchanged 300-second runner. The wrapper reports clean/unchanged 1,195 source files and inventory SHA256 All 32 emitted workbench testcase elements are unique and contain no skipped/failure/error child. The five required actual cases passed:
The full 91,846-byte XML is bound by the unchanged ordinary receipt and the reviewed hosted reporter to SHA256 Immutable Git evidence, each created normally and read back byte-for-byte, requires no evidence-only source commit or CI replay:
The separate CMake job and root's final current-main full-tree integration admission remain separate gates. No source, deadline, test selection, provider, fixture, or native access policy changed during this independent receiving. |
Independent final CMake/native gate received — same actual checkoutThis completes the separate remaining gate from Python/MainWindow acceptance6067946692. Run37833803462 / CMake job113505614092 completed every maintained step successfully at actual checkout
Complete raw decoded CMake log is preserved unchanged:312,302 UTF-8 bytes; SHA256 Both ordinary hosted jobs are now accepted for this actual checkout. Root retains final current-main tree admission and expected-head integration. No source commit, old-head retry or native replay was added by this receiver. |
Independent admission of the late upstream ML/verbosity compositionRoot's separate current-main source review identified the disjoint PR87 contribution. I independently received its actual completed hosted gates; no additional test run was started. All three jobs checked out
Both native receipts report dirty build worktrees and unchanged test-time source map Complete raw decoded logs are preserved as immutable Git blobs and independently read back byte-for-byte: Python9307ec319a531c561577592eb9a05792b4b6d371, CMake4a109133a33d1a17abd428dc7f834958ab93cadf, camera144b0e3d46e255241bd63bacd5f35f1201e2ec5a. Provenance boundary: these are the already completed upstream87 gates. PR84's own tested checkout remains |
Integrated source and exact final-tree receiving — estate-6e5752b49b6f/rootPR84 merged by normal expected-head merge as The full 1,208-leaf comparison preserves all 1,167 unowned current paths/modes and all 40 non-PROGRESS contribution blobs. The complete current PROGRESS text plus the exact qualified append was read back without loss. Own Python/MainWindow receiving, own CMake/daemon receiving, and late upstream receiving retain distinct source pins. Final current-main admission does not relabel either branch's tests as a fresh execution of the combined tree. Original failures and bounded leading-space refusal remain preserved. This is source integration, not deployment or physical-hardware validation. New Actions hold recovered after integrationAfter the merge, this root first encountered and directly read Jacob's newer Actions hold, posted19:36 and quoting his19:32 update. All three workers now hold new dispatches, reruns and implicit triggering writes. The natural push run37840896851, created20:38:03, was still active at20:41:02: CMake job113529694748 and Python job113529695220. The enabled connector exposes no cancellation/disable operation, so this worker has not stopped that run. Existing CI owners with a supported cancellation capability should stop it under the recovered instruction; no billing cause is inferred. All three current workflow definitions were read before this comment and none subscribes to issues or issue_comment events. Useful native/source work continues. No further Actions-triggering write, gate bypass, paid replacement or cleanup of peer state is authorized by this receiving record. {
"schema": "hamon.capture.analysis-workbench.integration.v1",
"worker": "estate-6e5752b49b6f/root",
"integrated": true,
"deployed": false,
"qualified_head": "8c88dde13093aec070b73683606e936dc0a4d232",
"qualified_head_tree": "124d8a691ed240661c4ba56c84219692bff6b228",
"premerge_main": "e48825b1b37544f4c31912e3c29a3918704f5456",
"merge": "9e9204f76b105426b0affaa74733175c052f27ba",
"parents": [
"e48825b1b37544f4c31912e3c29a3918704f5456",
"8c88dde13093aec070b73683606e936dc0a4d232"
],
"precomputed_and_actual_tree": "a1b37ec1ab291a90cb2a383aa8f50b797ac09932",
"full_tree": {
"leaves": 1208,
"current_unowned_leaves_preserved": 1167,
"contribution_paths": 41,
"contribution_additions": 35,
"non_progress_contribution_blobs_exact": 40,
"unexpected_paths": 0,
"dropped_paths": 0
},
"progress": {
"path": "docs/design/research/PROGRESS.md",
"current_chars": 68766,
"exact_qualified_append_chars": 5399,
"composed_chars": 74165,
"blob": "a8bd0bd47815fa20108cd37ee3ff57e85e9a92a4",
"complete_content_readback_equal": true
},
"own_actual_hosted_checkout": "7d39a84d771506f0793e483b5fe63344a533530c",
"own_hosted_tree": "82bfa0ef7bd72ee33c3cd1dd4b401415564cc9d5",
"own_run": 37833803462,
"python": {
"job": 113505614565,
"passed": 640,
"skipped": 6,
"failed": 0,
"wrapper_seconds": 98.773261,
"source_clean": true,
"source_unchanged": true,
"source_files": 1195,
"junit_bytes": 91846,
"junit_sha256": "6dcd60ff68b61e1e0c68eff8e59f2df75fa336881d9f034641ac63ebeb21302c",
"all_32_workbench_cases_passed": true,
"literal_name_branch": "bounded-refusal",
"receipt_comment": 6067946692
},
"native": {
"job": 113505614092,
"ctest_passed": 30,
"ctest_total": 30,
"daemon_passed": 6,
"daemon_skipped": 0,
"source_worktree_dirty": true,
"source_unchanged_during_test": true,
"junit_sha256": "3f31a600618d73e544cbc005ea6baaec5499ff0c6cffc3f1e5c0a8f012192ec4",
"receipt_comment": 6068268696
},
"late_upstream": {
"actual_checkout": "8445056bdb467a061091f45e3357992fa306df0f",
"tree": "a0d17ec8df857b295321fef89e04a831fe51e8d6",
"ordinary_run": 37833165167,
"python_passed": 625,
"python_skipped": 6,
"ctest_passed": 30,
"daemon_passed": 6,
"camera_run": 37833165064,
"camera_is_synthetic": true,
"receipt_comment": 6068615816
},
"receiving_boundary": "Final composition admitted by exact full-tree/source preservation plus separately received branch gates; no completed full-suite execution at final merge is claimed here.",
"issue69": {
"state": "closed",
"reason": "completed",
"closed_at": "2026-10-08T20:38:02Z"
},
"actions_hold": {
"primary_comment": 6067592767,
"first_recovered_by_root": "After the merge and its readback, through the newest HAMON140 page.",
"new_triggering_writes": "held",
"run_triggered_before_recovery": 37840896851,
"observed_at": "2026-10-08 20:41:02 UTC",
"status": "in_progress",
"jobs": [
113529694748,
113529695220
],
"cancelled_by_this_worker": false,
"blocker": "Enabled GitHub connector has no cancellation or workflow-disable method; no alternate identity or unsupported endpoint was used."
}
} |
Final combined-source run received; Actions hold remains in forceThe already-started natural push run 37840896851 completed successfully at20:51:09. Root did not cancel or restart it. The hold first recovered after the merge remains active; no further Actions execution follows from this result. Both jobs checked out actual merged
The complete JUnit is94,606 bytes, SHA256 Complete final receiving packet is preserved in evidence commit Raw Python log166,794 bytes / SHA256 This adds actual final-tree qualification to the earlier separate branch receiving; historical pins and failures remain unchanged. Publication used only the verified non-triggering |
Problem and behavior
Analysis users could run the identity-teacher simulation, but could not select the external predictions already supported by the evaluator. This adds the complete file-choice-to-evaluation-job flow. An explicit external mode requires a predictions JSON path; invalid or empty external input cannot silently run the identity simulation.
Closes #69.
Changes
Source and receiving
Current candidate is 8c88dde, tree 124d8a691ed240661c4ba56c84219692bff6b228. It composes the full source-picker main 6ef with the qualified workbench and bounded Windows corrections. All 1172 leaf blobs/modes were read back; the final successor changes only 11 declared paths from frozen e3.
The original Mac receiving is preserved at its original source pins: four independent functional groups, 12 actual Qt dialogs, six real evaluator jobs, source-binding refusal/retry, queued-value isolation and execution-time byte provenance. Separate geometry and actual Clear → chooser → keyboard Run → held worker → keyboard Cancel → recovery checks passed. The final input widget and job-extras remain byte-identical to that qualification.
Windows full-order diagnostics exposed an inherited application Space shortcut interaction and a scope-test polling stall, as well as defects in the new test driver. Original timeouts, failed assertions and diagnostic receiver failures remain preserved. The e3 focused Windows gate passed 57 cases, including the actual MainWindow, native keyboard countercontrols, three real evaluation jobs and CI contract, while its significant-leading-space chooser case failed. This focused result is not ordinary acceptance.
A direct Windows OS-versus-Qt model observation showed the literal leading-space file existing on disk while Qt 6.12's forced widget model removed the space from both display and FilePathRole. Successful chooser receiving therefore uses a representable Unicode/internal-space filename. A separate real-Qt case retains the original leading-space fixture and requires exact selection or bounded refusal with the previously admitted path unchanged. Its actual branch is written to JUnit; renamed paths never pass. No production path normalization or native Windows-dialog behavior is claimed from forced-widget tests.
The original qualification, immutable archives and precise historical scope are in the receiving record. The Windows correction record preserves each failed and passing boundary, exact compressed logs and the PR79 attribution/preimage.
Ordinary Windows result
The Python job in run 37833803462 passed 640 tests with six existing skips. The ordinary wrapper exited zero in 98.773 seconds under its unchanged 300-second bound. Actual checkout 7d39a84 includes newer main a2c8995; all 1,195 admitted source files remained clean and unchanged. The CMake job also passed all 30 CTest cases and all six native daemon/recovery cases with no skips. Independent native receiving records its separate dirty-but-unchanged build inventory and exact binary/log hashes.
The real
MainWindow(auto_connect=False)case at 1100×700 passed without skipping (0.218 seconds). All 32 workbench cases passed, including actual chooser/cancellation, missing-file unwind, real evaluation jobs, native shortcut countercontrols and the literal-name property. The original leading-space fixture took the bounded-refusal branch (5.265 seconds) with the prior selected path unchanged. The post-Pytest named-case assertion step passed.The complete JUnit is 91,846 bytes with SHA-256
6dcd60ff68b61e1e0c68eff8e59f2df75fa336881d9f034641ac63ebeb21302c; emitted testcase XML matches that exact runner receipt. The full successful job log is 69,232 UTF-8 bytes with SHA-256c2a7d3c35d28f2d09876493e7cbb9ed5337052369002deb47792b997f53e0ab2. The Mac screen receiver and forced-widget chooser evidence remain distinct from actual Windows application and OS-native dialog claims.Final current-main composition
Root independently admitted main
e48825b1b37544f4c31912e3c29a3918704f5456and precomputed treea1b37ec1ab291a90cb2a383aa8f50b797ac09932with 1,208 leaves. All 1,167 unowned current paths and modes are preserved. All 40 contribution paths other than PROGRESS remain exact to the qualified candidate and tested checkout. PROGRESS preserves the complete current text plus the exact qualified 5,399-character contribution append.The later upstream PR87 contributes a four-line stable paired timestamp/value sort in the ML-bundle loader and changes the ordinary runner's verbosity from
-qto-vv --durations=20; its selection, 300-second limit and acceptance rules remain unchanged. Its independently received actual checkout8445056bdb467a061091f45e3357992fa306df0fhas the same tree as current e488. Its separate ordinary run passed 625 Python tests with six existing skips, 30 CTest cases and six daemon cases; its synthetic native-camera gate also passed. That gate used a fake camera source, not physical camera hardware.The workbench's actual Windows/MainWindow result belongs to checkout
7d39a84d771506f0793e483b5fe63344a533530c. The final composition admits the disjoint, separately qualified upstream change by exact source/tree comparison. It is not represented as a full-suite execution at the final composed tree. No deployment or hardware-validation claim is made.