Repository navigation
L03-03: Add the Compare and review workspace (#29) - #202
Merged
Merged
Conversation
Present the before/after artifact identities, the technical finding delta, the preserved attributes and the unresolved risk Core already produced for the plan or run on screen; let the operator navigate material deltas; and block a stale preview or mismatched plan digest instead of silently refreshing it. - ComparePane.qml reads EditorHost.compareReview(), a read-only projection of fixPlanIdentity/fixPreview/fixRecheck/fixSignOff (no second comparison model in QML); isWorkspaceEnabled(Compare) is now true and the placeholder pane is retired. - UnitTestsProductOperatorLoop: a golden comparison fixture pins the Core PDFRepairFindingDelta classification, and a stale-preview test proves the guard blocks and refuses navigation; UnitTestsShellWorkspace proves Compare is reachable.
…rkspace Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue
Closes #29 (L03-03 — Add Compare and review workspace). One topic branch, one commit, base
dev.What changed
The Compare workspace was a deliberately disabled destination (legacy #560): the shell held a placeholder pane and
isWorkspaceEnabled(Compare)returned false. Issue #29 is the targeted implementation issue ADR-005 Phase 4 defers the "in-app Compare boundary" to, and the protecteddocs/schemas/loop-shell.schema.jsonalready admits acompareworkspace (enum +minItems: 7), so no protected schema change was needed.LoopEditor/qml/ComparePane.qml(and its byte-identical mirror undertools/ProductQuickAccessibilitySmoke/qml/) presents the comparison Core already produced for the plan or run on screen. It reads one new read-only projection,EditorHost.compareReview(), and derives nothing.EditorHost::compareReview()composes the existing Core-backed accessors —fixPlanIdentity,fixPreview,fixRecheck,fixSignOff— into: before/after artifact identities, the technical finding delta, the preserved attributes and the unresolved risk, plus the guard.EditorHost::navigateCompareDelta(int)routes a material delta to the step that produced it (navigation only).isWorkspaceEnabled(Compare)is now true for every registered destination; the retiredWorkspacePlaceholderPaneis deleted from both trees.docs/loop-shell.jsonstate invariant,docs/LOOP_SHELL_CONTRACT.md,docs/WORKSPACE_SURFACES_586.md.Where each presented fact comes from (Core DTOs)
PDFActionListExecutionResult.sourceSha256, document key/revision/planned revision (fixPlanIdentity)fixPreview), published digest + governed status (fixSignOff)pdf::PDFRepairFindingDeltaviafixRecheck(resolved/unchanged/introduced/incomplete/compared)expected_changessurface, the findings carried forward unchanged (carried_forward), and the save policy that keeps the sourceintroduced/incompletefindings, plan/stepwarningsandunsupported_reasonsAcceptance criteria
ComparePane.qml+EditorHost::compareReview();UnitTestsProductOperatorLoopcompareWorkspaceBlocksAStaleComparisonassertsbefore.sourceSha256equalsfixPlanIdentity().sourceSha256and the plan digest is the current onecompareWorkspaceNavigatesMaterialDeltasAfterARunassertshasMaterialDeltasandnavigateCompareDelta(0)routes to the Inspect stepcompareWorkspaceBlocksAStaleComparison: after a revision changeblockedis true,blockedReasonnames it,lifecycleStateName == "stale", andnavigateCompareDelta(0)is refusedUnitTests/testdata/compare-review/golden-comparison.json+UnitTests/testdata/fixture-classes/regression/compare-review-golden.yaml; pinned bycompareReviewGoldenFixtureMatchesCoreFindingDeltacompareWorkspaceBlocksAStaleComparison; a11y smoke assertscomparePaneis reachable and namedProof
Branch
codex/issue-29-compare-review, commit9b7674f7, baseorigin/dev(0f2f7599, confirmed as the commit's parent).python scripts/ci/check_qml_mirror_parity.py→QML mirror-parity guard passed: 15 mirror pair(s) are byte-identical.python scripts/ci/check_preflight_truth_source.py→ passed (32 GUI files);python -m unittest scripts.ci.test_check_preflight_truth_source→ 32 tests OK.python scripts/verify-loop-shell-contract.py→7 workspaces, 107 Editor actions ...;python scripts/generate-architecture-catalogs.py --check→ exit 0;python scripts/verify-command-catalog.py→ exit 0.python scripts/agent/test_architecture_contracts.py→ OK;check-architecture.py --base origin/dev --head-branch codex/issue-29-compare-review→architecture contracts ok.loop-build-parity.sh, run with an explicit junitxml log):UnitTestsShellWorkspace— 7 tests, 0 failures.UnitTestsProductOperatorLoop— 16 tests, 0 failures (3 new Compare tests).UnitTestsEditorHost— 20 tests, 0 failures.LOOP_BUILD_PRODUCT_QUICK_A11Y_SMOKE=ON):comparePane has_name=1 role=20 pass=1,compare_workspace_enabled=1 reachable=1,status=pass, exit 0.Fragment and evidence
changes/codex-issue-29-compare-review.md— Category: added, Audience: operators, Breaking-Change: no.changes/codex-issue-29-compare-review.evidence.yaml— quick, plugins, build_policy, fixture-lifecycle, agent-policy and documentation lanes.Unrun / caveats
agent-fastis the authoritative gate; the localcheck-change.pyrun is recorded in the evidence manifest. See the check-change report attached to this PR's evidence for any lane that staysincompleteon this host.Anti-slop review (1–3 sentences)
The diff adds one composed read-only projection rather than a second comparison model, and QML only renders it and forwards navigation. No new contract was invented: the workspace and its schema entry already existed, and the only guard-state change is the state invariant going from "Compare is disabled" to "Compare is presented". Explanatory comments were kept to the invariants the code cannot show itself, and the retired placeholder pane was deleted rather than left dead.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.