Skip to content

L03-13 — Restore Quick GUI coverage for the retired Widgets surfaces #231

Open
0 of 11 issues completed
Open

Description

@mberrys

Outcome

Every command the shell contract keeps or absorbs works in the Quick editor, and every retired Widgets plugin that the product surface absorbs has a live Quick surface or a recorded decision. Sub-issues own the slices; this issue owns the contract-level gate.

Parent and boundary

Parent: #4. Owner: LoopEditor. This issue owns one bounded slice of Quick Workspace; consume accepted upstream contracts and keep PDF/verdict/publication authority with Core.

Grounding

  • docs/loop-shell-actions.json declares 108 commands (79 KEEP, 17 ABSORB, 12 ADVANCED). Handlers are bound one id at a time (EditorHost::registerFeatureHandlers, DocumentFacade), and 72 ids have no reference anywhere in LoopEditor, LoopLibQuick, or LoopLibInteraction/sources: 62 KEEP/ABSORB and 10 ADVANCED.
  • docs/product-surface.json absorbs the deleted dimensions, output-preview, soft-proofing, editor, object-inspector, signature, redact, and scanner plugins into Quick workspaces. Their follow_up_issue values (193, 195, 66, 30, 41, 126) are legacy numbers that now resolve to unrelated reset items (see G00-01 — Re-home legacy issue provenance after the repository rename #111).
  • docs/QUICK_PDF_PARITY.md lists annotation/form editing, attachments and metadata editing, sanitization, optimization, signature creation, redaction, and deep inspection as excluded until typed bridges land.
  • docs/ADR-005-product-surface-pruning-implementation-plan.md Phase 3: full Loop information architecture remains follow-up work.

Acceptance

  • Every KEEP and ABSORB command in docs/loop-shell-actions.json has a bound handler in Quick, or its disposition is changed with a recorded rationale. No command reaches the menu without a handler.
  • A contract check fails when a KEEP or ABSORB command has no bound handler, so the count cannot regress. Its first run records today's 62.
  • Every absorbed docs/product-surface.json row names a live reset issue in follow_up_issue, or null with a delivered replacement surface.
  • Menu groups follow the Loop information architecture that ADR-005 Phase 3 left open.
  • Failure case: a command that mutates a document never bypasses CommandCatalog and the Core governed path.

Required proof

The handler-coverage contract check output at the closing SHA, plus each sub-issue's recorded evidence. Record the exact source SHA, test command or hosted run, fixture/artifact identity, and any skipped or unavailable lane. Run the repository's mapped proof and check-change gate for a PR.

Handoff

Record changed files, observed result, remaining risk, and a 1–3 sentence anti-slop review. Completion means acceptance evidence, not merely a merged implementation.

Sources

Approved master roadmap · Gap review of docs/loop-shell-actions.json against Quick command handlers, 2026-10-06.

Activity

  1. added this to the L03 - Quick Workspace milestone on Oct 7, 2026
  2. mberrys commented on Oct 11, 2026

    @mberrys
    ContributorAuthor

    PR 1 of 3: #267 — the handler-coverage gate and the read-only/presentation surfaces.

    Landed: the contract gate (docs/shell-handler-coverage.json plus the ratchet in scripts/verify-command-catalog.py, wired into ci.yml and check-change.py); measure (#238); select/copy/capture (#232); display colour modes and soft proof/separations (#235 display half, #237); settings, render options and diagnostics (#239).

    Ratchet: the first recorded baseline is 70 unbound KEEP/ABSORB commands on b08e2183 — the epic's 62 came from a text mention-scan, while availability is the flag CommandCatalog actually enforces. #267 ratchets it to 51, and the gate fails if it moves up. PR 2 and PR 3 bring it down further; PR 3 takes it to zero.

    Carried forward with reasons (reported in the PR body, not hidden): isolated-plate pixels and the reference-separation comparison for #237; keyboard-only measurement placement for #238; actionRendering_Errors, actionMagnifier and actionGetSource stay declared for #239.

    Found during the work and filed separately: #265 — UnitTestsEditorHost flakes on the shared qttest recipe directory across worktrees (deterministic repro inside).

    Next: PR 2 (gh-231-quick-mutations: #233, #234, #242 — the #234 decision record on direct revision versus planned operation comes first) and PR 3 (gh-231-governed-fix: #236, #240, #241 ADR, plus the #235 production half), both based on gh-231-quick-coverage.

  3. added 5 commits that reference this issue on Oct 11, 2026
  4. mberrys commented on Oct 11, 2026

    @mberrys
    ContributorAuthor

    PR 2 of 3: #271 — direct mutations through the catalog (bookmarks/links #233, annotations #234, forms/attachments/metadata #242).

    Next: PR 3 (gh-231-governed-fix: #236, #240, #241 ADR, the #235 production half), which drives the ratchet to zero and closes the epic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Promotion stage

    Unstable present

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions