Skip to content

Full resync at lgse/strata 86df474: codified standards, tooling fixes, every node re-verified - #45

Open
wmfeht wants to merge 4 commits into
mainfrom
resync/full-audit
Open

wmfeht wants to merge 4 commits into
mainfrom
resync/full-audit

Conversation

@wmfeht

@wmfeht wmfeht commented Oct 28, 2026

Copy link
Copy Markdown
Owner

Full review and resync of the feature map against lgse/strata 86df474dc0e8352e0e2098637a017cc4c77a8c44. The owner requested it. It has three parts: standards extracted from past sync PRs, tooling fixes, and every node re-verified.

Closes #7.

Read this first

  • Watermark: 923b39d → 86df474. The only new upstream PR is fix(keyboard): preserve focus across dialogs, tabs, and drags lgse/strata#1900, synced here as a batch PR.
  • Review state:
    • Every node is at reviewed_at: 86df474.
    • Four nodes keep review: reviewed: aur, column-autoscroll, exclusions, and window-placement.
    • rar and folder-peek changed content, so they moved to draft.
    • Under the new Sync contract step 7, merging this PR accepts it. The next run promotes these nodes to reviewed, except those named under "Needs a person".
  • Checks: check gives 0 errors. Its 25 warnings say the site is still at v1.0.0 while v1.1.1 is out; that is for the next docs-update run. All 48 unit tests pass.

Commits

  1. c6ab45b Codify owner decisions. It answers the questions sync PRs Sync lgse/strata#1532, #1533: tab session restore and triage batch 3 #4–Sync lgse/strata#1898–#1908: Save stem selection, multi-word global search, preview fixes #44 kept raising in "Needs a person". AGENTS.md gains rules on:

    • Row placement: triage PRs, batch PRs (one row per fix), ignored scopes, and splitting a node.
    • Behavior placement: the code owner, with exceptions only for app/infrastructure code and ancestor code. Large shared files go to infrastructure.
    • One node per test path.
    • Fixing ownership errors wherever they are found.
    • Sourcing gaps from review comments or closing PRs.
    • Recording code-reading bugs as (unverified).
    • Style changes as Behavior.
    • Commit messages as sources.
    • Scope aliases.
    • Review promotion on merge, replacing the old step 7.

    The skill now has a Step 0.5 that accepts merged syncs. It finds open sync PRs by title and handles stacked PRs.

  2. bd3ee61 Tooling.

    • REST fallback for extract and drift (featuremap.py: add a REST fallback for extract and drift #7). Rows built over REST match the GraphQL rows for 11 live PRs. The 787-PR merged list matches too.
    • QA scenarios replace E2E. index/qa.md, qa plans (./scripts/qa.sh), and qa/README.md now use tests/qa/scenarios/.
    • drift change. It now lists PRs mapped by scope alone; 83 had been silently omitted.
    • Dataset backfill. data/prs.jsonl gained the 127 merged PRs it was missing since #1589. Earlier syncs never committed their REST rows.
  3. 596e3d9 Full resync. Eight area writers re-verified every Behavior bullet, gap, path, and probe against 86df474, then a reconciler applied cross-area handoffs.

  4. Review fixes. Eight fresh adversarial reviewers found 9 blocking and about 80 minor problems. Four fixers checked each finding against the code before applying it. Their declines are listed below.

New nodes

Each new node passes the Nest rule. It has an origin, its own code, and its own tests, and it is listed in site/unguided.yaml. Its earlier History rows stay on the parent, per the split rule.

Node Origin Own code
app/window/key-dispatch lgse/strata#544 src/ui/window/keyboard.rs
browser/navigation/location-bar/completion lgse/strata#388 location/completion.rs
browser/search/filter/enter-target lgse/strata#1643 / #1822 src/ui/enter_target.rs
browser/sidebar/rail lgse/strata#1602 / #1606 src/ui/sidebar_toggle.rs
browser/sidebar/pins/drag-to-pin lgse/strata#1690 / #1692 pinned_drop.rs, directory_validation.rs
operations/archives/extraction-safety lgse/strata#109 / #116 archive/destination.rs
operations/delete/dissolve lgse/strata#626 dissolve_delete.rs
operations/trash/fuse-refusals lgse/strata#1614 trash_support.rs
preview/preview-panel/pdf lgse/strata#1220 / #1223 pdf_text.rs
preview/preview-panel/documents/scrollbar lgse/strata#1749 / #1752 scrollbar.rs
settings/themes/icons/catppuccin lgse/strata#1587 / #1588 catppuccin.rs, entry.rs

Promoted to a parent with the id kept: app/window, location-bar, filter, pins, delete, and icons.

preview/preview-panel/model-views was widened, keeping its id. It now owns the 3D model code and bullets from lgse/strata#1276, and its origin is lgse/strata#1225 / #1276.

Declined for failing Nest:

  • settings/themes/editor, settings/themes/gtk-isolation, browser/search/filter/columns, location-bar/breadcrumbs, browser/thumbnails/formats, and operations/archives/passwords: no code of their own, no tests of their own, or no origin.
  • portal-file-chooser/save-naming and column-widths: grouped under subheadings in the parent instead.

lgse/strata#1900

It is a batch PR (it closes #1859, which lists separate items), so each fix gets one row:

Node Fix
browser/selection/keyboard-navigation Hidden tabs and background completions no longer take focus.
browser/view-modes Escape cancels a List heading drag. Stale cursor restores are dropped.
operations/trash The delete confirmation returns focus to the listing.
operations/clipboard The Copy or move? prompt returns focus.
settings/preferences Ctrl+, does nothing over Properties. An outside click closes Settings.

These nodes cite it without a row: column-layout, portal-file-chooser, key-dispatch, app/dialogs (Design), and copy-or-move.

Ownership changes

  • To app/infrastructure:
    • src/ui/browser/location.rs: no node owns a majority of its lines (about 490 location bar, 1,080 mount, 980 unlock).
    • src/ui/settings.rs: the Settings shell plus the update flow. Bullets stay on the features they serve.
    • src/services/package_manager.rs: imported by six files.
  • To specific nodes: pane_header.rs → sorting. The chord_panel.rs assignment moved from places to 10xer-mode. chooser/tests/keyboard.rs → 10xer-mode/file-chooser. The density tests → settings/themes.
  • Test paths: every test path is now on exactly one node. The quick_preview, dialogs_and_menus, view_switching, and entry_management folders were narrowed to individual scenario files.
  • Bullets moved to their code owner:
    • Delete confirmation → operations/trash.
    • Copy or move? prompt → operations/clipboard.
    • Folder-jump palette → browser/search.
    • #1611 focus return → 10xer-mode/search.
    • Send to destinations and Ctrl+K roots → devices/volumes.
    • {path} expansion → custom-actions.
    • Run in terminal → settings/diagnostics.
    • Rail saved state → app/window.
    • Empty Trash header button → view-modes.
    • Several more; the full logs are kept out of the repo.

History rows moved or added (named error fixes)

Bugs and doc contradictions

All of these were searched in lgse/strata issues, open and closed. None was filed.

Code bugs

Problem Evidence Issue
Restore lookups can exceed the 8-lookup bound after timeouts. trash_restore.rs:252-306. The #733 repro shows peak_active=9. #733 closed with no fix. None open. Recorded (unverified) on trash/restore.
Folder peek ignores sort order and filters hidden entries after the 64-entry cap. app/peek.rs:32, browser/loading.rs:136-151 #1449 closed with no fix. None open. Recorded (unverified).
Preview volume slider and plain seek slider have no accessible name. preview.rs:2772, :3341 Deferred in #1896. None.
Footer selection size counts a symlink's target; the delete prompt sizes the link. shortcut_footer.rs:1966-1972 None. May be intended.
Non-UTF-8 folder-customization keys collide (to_string_lossy). folder-customization code None. Recorded (unverified).
g + pin flash omits the digit. chords.rs:206-228 Open #1862; fix in draft #1909.

Doc contradictions

Doc Contradiction Issue
docs/10xer-mode.md:752 Lists Ctrl+Alt+T and Ctrl+Shift+K as unbound in 10xer mode; the code still runs both. None.
docs/document-previews.md Says only Markdown and HTML are source-only remotely; RTF, CSV, and TSV are too. Says all ODT header rows become titles, ODT tabs render, and paragraph emphasis applies everywhere; the code does none of these. None.
docs/remote-sftp.md Says logs never carry a host or path at the default level. Two WARN events log them: open_argument.rs:134 and local_files.rs ~1403. #1873 chose this, so the doc is the stale side. None.
docs/keyboard-navigation.md:98 Contradicts the code: a press on a blank column closes its descendants. None.

Needs a person

…kill

Answers the questions sync PRs #4-#44 kept escalating: row placement for
triage, batch, ignored-scope and split PRs; behavior placement (infra and
ancestor exceptions only); test-file sharing; ownership fixes; gap sourcing;
code-reading bugs; style changes; scope aliases; and review promotion on merge.
- extract/drift fall back to REST when GraphQL is blocked (closes #7).
- Tests under tests/qa/scenarios count as scenarios; plans print scripts/qa.sh.
- drift lists PRs mapped by scope alone under their node.
- Backfill data/prs.jsonl with the 127 merged PRs missing since #1589.
Every node and sweep re-verified against 86df474. Adds 11 child nodes,
applies the codified placement and ownership rules across the tree, and
syncs lgse/strata#1900 as a batch PR.
Eight adversarial reviewers checked every slice against 86df474; four
fixers verified each finding before applying it.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

featuremap.py: add a REST fallback for extract and drift

1 participant