Ship floating launcher, automatic discovery and bounded media search improvements
No files matched your search
@@ -0,0 +1,26 @@
|
||||
# Local application search
|
||||
|
||||
Type an application's name in the desktop search window and open its application
|
||||
result. Matching ignores case and spaces; `VS Code` and `vscode` also match
|
||||
Visual Studio Code. Application search uses a small local catalog and works
|
||||
without downloading an embedding model.
|
||||
|
||||
Windows reads user/common Start Menu shortcuts. Registered Microsoft Store
|
||||
applications are added in the background using the operating system's
|
||||
`Get-StartApps` inventory, with a five-second timeout. The initial window and
|
||||
searches do not wait for that inventory. Linux reads visible XDG `.desktop`
|
||||
applications and launches them using GIO (`gio launch`); a missing GIO launcher
|
||||
produces an explicit error. macOS discovery covers the standard Applications
|
||||
directories; actual macOS execution remains untested.
|
||||
|
||||
The catalog is refreshed when searchi starts. Restart it after installing an
|
||||
application if it has not appeared. Launch commands accept only opaque IDs
|
||||
already in this local catalog. Executable paths and command lines are never
|
||||
accepted from the webview; Linux desktop-entry parsing is delegated to GIO.
|
||||
|
||||
The Windows development machine's actual read-only inventory test passed:
|
||||
92 Start Menu shortcuts and 25 registered applications. All four focused module
|
||||
tests passed, including VS Code aliases, hidden desktop entries, rejected
|
||||
registered-ID command text, and results that do not disclose launch paths.
|
||||
This inventory check launches nothing; native application launch/keyboard
|
||||
interaction must be verified separately in the final desktop check.
|
||||
@@ -48,13 +48,15 @@ copy into unsupported performance or production-readiness claims.
|
||||
## Window materials
|
||||
|
||||
Appearance settings offer Solid, Glass and Frosted glass, with a bounded
|
||||
70–100% tint-strength control (90% by default). Frosted glass layers an extra
|
||||
35% milk tint beneath that control; Glass has the lighter direct tint. Both
|
||||
40–100% background-opacity control (90% by default). Both materials use the selected opacity directly, without a second milk-tint
|
||||
layer. The slider previews changes while dragging. Both
|
||||
currently share Windows native acrylic blur. Native compositor effects expose and soften
|
||||
the actual desktop; CSS transparency alone cannot blur other windows. If the
|
||||
platform cannot apply its native effect, use an honest opaque fallback. Forced
|
||||
colors always make the shell opaque while retaining the saved preference.
|
||||
Search input, results, previews and settings keep their opaque reading surfaces;
|
||||
The search input and shell labels use a local 60% reading tint, so the lowest
|
||||
shell setting still yields at least 76% theme tint under text. Results, previews
|
||||
and settings keep opaque reading surfaces;
|
||||
never lower text opacity or introduce decorative wallpaper simulations.
|
||||
Native acrylic currently requires Windows 11 22H2 or later with a compatible
|
||||
compositor and system transparency settings. macOS, Linux and older Windows
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
# Floating search launcher
|
||||
|
||||
The desktop opens as a centered search bar rather than a conventional document
|
||||
window. The empty launcher requests 720 × 110 logical pixels. Typing or opening
|
||||
settings, filters, local-model details or folder controls expands it to
|
||||
1080 × 700. Native sizing stays inside the current monitor's work area, including
|
||||
its scale factor and taskbar. A small display receives a smaller window.
|
||||
|
||||
The window is frameless, above ordinary windows, and omitted from the taskbar.
|
||||
Its header can be dragged; the dedicated hide button, Escape and the existing
|
||||
tray/global shortcut retain the resident workflow. The rounded shell uses the
|
||||
configured native glass/frosted material where supported and the existing
|
||||
opaque/high-contrast fallback otherwise. No CSS blur is presented as native
|
||||
desktop transparency. Brief content transitions respect reduced motion and do
|
||||
not defer search requests.
|
||||
|
||||
Installed applications have a separate list above file matches and a simple
|
||||
launch preview. Arrow keys move across applications and files while preserving
|
||||
typing focus; Enter launches the selected application or opens the selected
|
||||
file. Application identities are opaque backend identifiers, not pretend file
|
||||
paths or invented passages. Filters keep application suggestions out of scoped
|
||||
file searches. Application requests are local lexical lookups and do not wait
|
||||
for semantic inference.
|
||||
|
||||
Input immediately invalidates the previous application selection. A launch
|
||||
requires the current query and the settled request revision, so a late response
|
||||
or an immediate Enter after editing cannot launch an older suggestion. File
|
||||
search timing remains separately measured; the result summary includes visible
|
||||
application counts, and application-only matches suppress the empty-file state.
|
||||
|
||||
Automatic local-drive indexing is enabled by default. Its settings checkbox can
|
||||
disable future automatic work while retaining searchable indexed content;
|
||||
additional folder controls live inside settings. Existing active work is not
|
||||
claimed to be instantly cancelled by the checkbox. Model progress and retry
|
||||
remain available through local-search setup details.
|
||||
|
||||
## Validation recorded so far
|
||||
|
||||
- Frontend TypeScript/Vite build passed on desktop version 0.1.8.
|
||||
- All 62 existing frontend tests passed; Prettier checks passed.
|
||||
- Final Windows desktop checks passed 56 tests (one optional actual-catalog
|
||||
check ignored); strict all-target Clippy passed. Linux passed 56 desktop tests.
|
||||
- The background opacity control spans 40–100%, previews while dragging, and
|
||||
applies directly to both glass materials. Local 60% reading tints protect
|
||||
input, labels and controls; result and preview panes remain opaque.
|
||||
- Twelve CPU browser composition checks passed across both themes, both glass
|
||||
materials and 40/90/100% opacity. This verifies actual built CSS alpha,
|
||||
independently of native compositor validation.
|
||||
|
||||
These checks alone do not establish native pixels, dragging, tray interaction,
|
||||
rounded compositor corners or application launching. Actual final-build UI
|
||||
capture and keyboard interaction belong in
|
||||
[the native validation report](NATIVE-FINAL-VALIDATION.md).
|
||||
@@ -1,9 +1,13 @@
|
||||
# Linux desktop release build evidence
|
||||
|
||||
Current download: [Ubuntu 24.04 x64 desktop 0.1.4](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.4/searchi_0.1.4_amd64.deb).
|
||||
See [current package checks](LINUX-0.1.4.md) and
|
||||
[checksums](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.4/LINUX-DESKTOP-SHA256SUMS-0.1.4.txt).
|
||||
The evidence below records the preceding 0.1.3 preparation.
|
||||
Current download: [Ubuntu 24.04 x64 desktop 0.1.8](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.8/searchi_0.1.8_amd64.deb).
|
||||
See [final package checks](NATIVE-FINAL-VALIDATION.md) and
|
||||
[checksum](https://tea.karlcom.de/karl/searchi/releases/download/v0.1.8/searchi_0.1.8_amd64.deb.sha256).
|
||||
The current package includes the floating launcher, automatic local discovery,
|
||||
application search and hybrid relevance cleanup. Native compilation, 56 desktop
|
||||
tests, runtime provenance, loader checks and packaged CPU startup passed on
|
||||
Ubuntu 24.04 WSL. Native graphical interaction and other distributions remain
|
||||
unverified. The historical evidence below records preceding releases.
|
||||
|
||||
Source: `a6bf091`, desktop 0.1.3, Ubuntu 24.04 WSL x86-64, kernel
|
||||
6.18.54.1-microsoft-standard-WSL2, two virtual CPU cores (AMD Ryzen 7 7800X3D).
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
# Bounded media relevance improvement, 2026-10-14
|
||||
|
||||
This pass keeps Google EmbeddingGemma 2 and the existing shared engine. It
|
||||
corrects one practical source of irrelevant results without another model,
|
||||
reindexing, an absolute similarity cutoff, or a new ranking framework.
|
||||
|
||||
## Hybrid shortlist correction after the real screenshot review
|
||||
|
||||
The real screenshot exposed an additional defect: reciprocal-rank fusion gave
|
||||
every semantic nearest neighbour a result rank even when its raw similarity
|
||||
was far below a strong match. A mountain photo consequently appeared beneath
|
||||
the supplier agreement for a cancellation query.
|
||||
|
||||
Hybrid search now keeps the strongest semantic cluster when the filtered,
|
||||
file-deduplicated score list has one clearly separated tail: choose the largest
|
||||
adjacent raw cosine gap, and prune after it only when that gap is **greater than
|
||||
0.07**. Equal largest gaps within f32 rounding retain the complete list. The
|
||||
0.07 gap is rounded upward from the maximum 0.0650497 observed among eight
|
||||
previously frozen calibration absence requests; it is a relative decluttering
|
||||
rule, **not an absolute cosine threshold or a confidence percentage**.
|
||||
The [frozen policy](../tools/relevance-eval/policies/hybrid-tail-v1.json) records
|
||||
the exact scope and calibration report hash.
|
||||
|
||||
All independent lexical matches, exact filename/identifier priority and the
|
||||
best semantic candidate survive. Explicit raw semantic search is unchanged.
|
||||
Filters and source checks still run before candidate limits; no index or model
|
||||
is regenerated. Debug traces report `hybrid.semantic_shortlist` with before,
|
||||
after and pruned counts.
|
||||
|
||||
Actual current Google CPU query results on the verified README fixture:
|
||||
|
||||
| Query | Raw semantic scores | Hybrid result |
|
||||
| --- | --- | --- |
|
||||
| `cancel the supplier partnership` | Agreement 0.820912; onboarding 0.660648; procurement 0.626666; mountain photo 0.528253 | Agreement retained; unrelated photos removed; 7 → 1 results |
|
||||
| `mountains reflected in calm water` | Lake 0.753141; pier 0.684482; travel document 0.537812 | Two image results retained; unrelated documents removed |
|
||||
|
||||
The genuine query-role CPU integration passed in 7.61 seconds, covering raw API
|
||||
preservation, actual PDF/photo retrieval, exact filename priority, PDF and size
|
||||
filters, and limit one. Its ignored log `.searchi/qa/hybrid-tail-google-cpu.log`
|
||||
has SHA-256 `bc920ba56bc5b4f89bb5ee8831420bf5c14964d2da5decb0b392482e12309d4e`.
|
||||
The raw pre-change requests are preserved in
|
||||
`.searchi/qa/readme-raw-relevance.json`, SHA-256
|
||||
`4a017d8fee0d3762a806628e38a848ca9ca9cb052e92c1892f639efda3fde62d`.
|
||||
|
||||
A replay of existing genuine raw-score reports retained every previously
|
||||
retrieved relevant top-five file in calibration, the previously evaluated
|
||||
held-out report and the 61 ranked media-reference rows. Mean semantic
|
||||
candidate counts changed from 11.6 to 5.0, 11.6 to 4.2 and 14.75 to 3.59,
|
||||
respectively. This is score replay on known diagnostics, not newly independent
|
||||
inference or a production relevance guarantee. The historical media reference
|
||||
contains its documented audio preprocessing failure; no failed encoding is
|
||||
silently credited as a positive. Forty text/code positive rows retain their
|
||||
top semantic candidate by construction; **all 20 absence rows still retain a
|
||||
neighbour**. The policy does not solve absence classification.
|
||||
|
||||
Three focused shortlist unit tests passed (weak-but-correct 0.6766, multiple
|
||||
strong matches, flat/uniform/tied lists, one/two candidates and independent exact
|
||||
lexical preservation). The full service library passed 45 tests with its two
|
||||
explicitly provisioned/benchmark tests ignored; strict all-target Clippy passed.
|
||||
|
||||
## What changed
|
||||
|
||||
Explicit photo/image requests use image evidence; explicit video/film requests
|
||||
use video-frame evidence. Spoken-topic requests retain speech-first retrieval
|
||||
and raw-audio fallback while recognition is unavailable. Explicit music/audio
|
||||
requests use actual audio evidence. If the requested channel is empty, semantic
|
||||
search now returns empty instead of selecting an unrelated photo/document.
|
||||
The independent exact filename/keyword lane remains available in hybrid search.
|
||||
|
||||
Ordinary subject queries stay general. Document/code/algorithm cues veto these
|
||||
small intent hints. A mixed `photo or video` request stays general rather than
|
||||
silently losing videos. `sound financial advice` is not an audio request.
|
||||
The hints use word boundaries and English/German cues, not a claim of natural
|
||||
language understanding. Debug traces report `explicit_source_channel` and
|
||||
`requested_channel_empty`.
|
||||
|
||||
## Actual Google CPU evidence
|
||||
|
||||
The isolated integration fixture contains the existing licensed, SHA-locked
|
||||
cat photo `fixtures/media/assets/image01.jpg`, copied into a temporary owned
|
||||
index. It uses the normal native Google runtime with `SEARCHI_FORCE_CPU=1`,
|
||||
one inference thread, actual image encoding, persisted ANN retrieval and the
|
||||
query-role worker. No fabricated vectors or labels enter inference.
|
||||
|
||||
| Check | Unrestricted real-model channel | Corrected automatic routing |
|
||||
| --- | --- | --- |
|
||||
| Six requests for absent audio/music/speech/video channels, EN/DE | 6/6 returned the unrelated photo | 0/6 returned a semantic result |
|
||||
| Three photo/general cat requests, EN/DE | Actual image indexed | 3/3 retained the correct photo |
|
||||
| Exact `cat.jpg` | Independent lexical lane | Exact filename retained |
|
||||
|
||||
`explicit_media_requests_do_not_fall_back_to_unrelated_channels` passed in
|
||||
82.63 seconds including indexing, model loading and all assertions. This is
|
||||
functional correctness evidence, not a search-latency benchmark or a large
|
||||
collection quality score. Raw log: ignored `.searchi/qa/media-final-routing.log`,
|
||||
SHA-256 `14d452192315fb1ddfd0b0df1448ffc475876af57a767546b36f68f17771b83d`.
|
||||
|
||||
The existing actual Google code-versus-licensed-audio regression also passed
|
||||
in 81.72 seconds: an explicit code query retained its indexed implementation
|
||||
while real audio remained an eligible independent channel. Its ignored log
|
||||
`.searchi/qa/media-final-code-veto.log` has SHA-256
|
||||
`04d8f42ed8e872f22607c2fe4fb45e0d5149d4b42539b3346abd18ebb224e137`.
|
||||
All three focused routing unit tests passed after the mixed-channel/algorithm/
|
||||
sound-adjective fixes, including the English/German ambiguity cases.
|
||||
|
||||
Reproduce with the verified Google/model and FFmpeg environment described in
|
||||
SKILLS.md:
|
||||
|
||||
```powershell
|
||||
$env:SEARCHI_FORCE_CPU = '1'
|
||||
cargo test -p searchi-service --test routing_google_cpu explicit_media_requests_do_not_fall_back --locked -- --ignored --nocapture --test-threads=1
|
||||
cargo test -p searchi-service --lib routing::tests --locked
|
||||
```
|
||||
|
||||
## Limits and music decision
|
||||
|
||||
These changes reject wrong channels and trim clearly separated weak tails;
|
||||
they are not calibrated detection that a particular
|
||||
subject is absent within a populated channel. An indexed audio collection can
|
||||
still return an unrelated nearest performance for an absent musical instrument;
|
||||
photos/videos have the same limitation within their own channel. Speech without
|
||||
recognized passages retains raw audio fallback. Do not advertise a confidence
|
||||
percentage or perfect no-answer detection.
|
||||
|
||||
Existing exact artist/title metadata filters remain the reliable identity path.
|
||||
The previous independently frozen music comparison improved 8/14 to 11/14 first
|
||||
hits using literal embedded tag fields, but regressed one positive, fell to 5/14
|
||||
with misleading tags, and failed all four no-answer cases. That unconditional
|
||||
field-max policy remains unintegrated: it does not justify shipping a universal
|
||||
music-recognition improvement. See MUSIC-METADATA.md and
|
||||
fixtures/music-validation-v1/README.md. This pass adds no hosted music lookup,
|
||||
fingerprinting service, generated labels, or extra model downloads.
|
||||
|
||||
Existing image evidence and video scene sampling are retained. Spoken timing
|
||||
and recovery are recorded separately in SPEECH-FINAL-QUALITY.md. Media remains
|
||||
usable with explicit limits; this bounded pass does not invent a new overall
|
||||
quality rating or extend the agreed release scope.
|
||||
@@ -0,0 +1,320 @@
|
||||
# Final native interaction and reinstall validation
|
||||
|
||||
Renewed bounded goal, 2026-10-14: verify Windows/Linux interaction and the
|
||||
Windows uninstall/reinstall path, alongside a modest media relevance improvement.
|
||||
No intermediate release or push is permitted. This report distinguishes actual
|
||||
native observations from process, source and automated frontend checks.
|
||||
|
||||
Current delivery is 0.1.8. See the final startup-writer correction and corrected
|
||||
Windows/Linux package sections below for authoritative hashes and checks.
|
||||
Earlier local candidates are retained as historical prechecks and were not
|
||||
published. Final native capture/input remains unavailable; process startup,
|
||||
accessibility observation and software screenshots do not replace that gate.
|
||||
|
||||
## Native access inventory
|
||||
|
||||
The approved Computer Use `@oai/sky` client initialized successfully. Unlike the
|
||||
previous handoff, native Windows screenshot and accessibility capture are now
|
||||
available. `list_windows` initially omitted the hidden resident application.
|
||||
The existing CPU-only local launcher brought its existing window forward;
|
||||
the returned native window was then captured through the approved API.
|
||||
|
||||
Observed installed Windows 0.1.7: process 29000 responding; native searchi
|
||||
window, dark theme, Add folder, filters, settings, query field and readable
|
||||
empty-state interface. Its accessibility tree reports zero files and
|
||||
“Google model ready. Index a folder to search by meaning.” CPU status is visible.
|
||||
This is actual native observation, not a search or keyboard interaction pass.
|
||||
|
||||
The capture also showed an unrelated foreground Windows Security firewall
|
||||
permission dialog for Electron. No input was attempted while it blocked the
|
||||
workspace. The Computer Use guidance explicitly says: “Do not act on security
|
||||
or privacy permission requests.” The human must dismiss that unrelated prompt
|
||||
before dependent native interaction continues. The agent did not change any
|
||||
security setting or bypass the prompt.
|
||||
|
||||
Ubuntu 24.04 WSL starts successfully and advertises `DISPLAY=:0` and
|
||||
`WAYLAND_DISPLAY=wayland-0`. Both WSLg X11 and Wayland sockets exist. Existing
|
||||
relocated Linux desktop validation binaries remain available. The current
|
||||
approved UI API only targets Windows applications; no Linux input/capture API
|
||||
has been exposed. WSLg availability alone does not prove native Linux input.
|
||||
|
||||
## Windows reinstall test procedure
|
||||
|
||||
User authorized uninstalling/reinstalling the Windows dev installation. Root
|
||||
agent coordinates execution after backing up the existing user state.
|
||||
|
||||
1. Preserve external settings/index/model cache and local CPU wrapper/startup
|
||||
shortcuts; save installer and installed file hashes.
|
||||
2. Stop only searchi and its owned workers; wait for process exit.
|
||||
3. Run installed `C:/Users/karl/Applications/searchi/uninstall.exe` silently.
|
||||
Record exit code and verify executable/resources and installer registration
|
||||
are removed. Record any remaining owned directory or shortcut separately.
|
||||
4. Confirm external user settings/index/model cache survive unchanged.
|
||||
5. Install the verified normal hardware-detecting package to the same location.
|
||||
Record exit code, registration, installed executable/runtime hashes and
|
||||
bundled extraction/media/speech resource verification.
|
||||
6. Start with an isolated empty test profile under CPU-only VM flags to exercise
|
||||
fresh settings/index creation. Existing downloaded assets may be reused;
|
||||
this must not be described as a fresh operating-system or first-download test.
|
||||
7. Restore the user profile and CPU launcher/startup shortcuts. Leave the final
|
||||
installed application running and accessible.
|
||||
|
||||
## Executed uninstall/reinstall checks
|
||||
|
||||
Root executed the existing verified Windows 0.1.7 uninstall and reinstall.
|
||||
Both processes returned exit code zero. The installed main executable was absent
|
||||
after uninstall; external settings/index/model assets survived. Reinstall restored
|
||||
the executable with its expected hash. Raw local records are
|
||||
`.searchi/qa/final-uninstall.json` and `.searchi/qa/final-reinstall.json`;
|
||||
the preserved state is in `.searchi/qa/windows-final-reinstall-backup`.
|
||||
|
||||
An actual new empty profile at `.searchi/qa/fresh-reinstall-profile` was launched
|
||||
without seeded settings or a copied model cache, using forced CPU inference and
|
||||
software WebView flags. The approved native API returned its searchi window.
|
||||
Initial monitor capture failed with `CreateForMonitor` error `0x80070057`; fresh
|
||||
window selection and the single documented retry succeeded. The native
|
||||
accessibility observation showed zero files and “Preparing Google semantic
|
||||
search on your device…” with CPU status. This establishes installed empty-profile
|
||||
startup, not completed model downloading or search readiness. No user interaction
|
||||
was attempted while the unrelated security permission prompt remained pending.
|
||||
|
||||
This is uninstall/reinstall on the existing dev OS, not a newly installed Windows
|
||||
system. Final updated package validation and model setup remain separate checks.
|
||||
|
||||
## Native Windows search interaction
|
||||
|
||||
After a fresh approved capture showed that the unrelated permission dialog was
|
||||
gone, native input was used on the isolated profile. Add folder opened the inline
|
||||
folder controls. Entering the owned `.searchi/qa/native-final-corpus` directory
|
||||
and clicking Index folder indexed three files with two extracted text documents.
|
||||
The app displayed its indexing progress while keeping keyword search available.
|
||||
|
||||
Setting the query to `supplier agreement` returned the correct document and
|
||||
line-one passage. The native screenshot showed highlighted query words in the
|
||||
result, filename and preview. The compact Why this result detail stayed collapsed.
|
||||
Observed tiny-fixture timing was search 40 ms / shown 293 ms; this is one native
|
||||
functional observation, not a latency benchmark. Ctrl+K visibly selected the
|
||||
query text, confirming actual keyboard focus behavior.
|
||||
|
||||
The next `type_text` operation failed to activate the captured window. After
|
||||
refreshing the same returned window, monitor capture failed again with
|
||||
`0x80070057`; input stopped rather than proceeding blindly. No semantic-query,
|
||||
global-hotkey, tray or Enter-open success is inferred from those partial checks.
|
||||
Read-only accessibility recovery subsequently succeeded and confirmed selected
|
||||
query text. The single accessibility input retry returned `GetCursorPos failed:
|
||||
Access denied (0x80070005)`. Native input is therefore currently blocked by the
|
||||
interactive-session permission state; no shell input or capture workaround was
|
||||
attempted.
|
||||
|
||||
## Native acceptance checklist
|
||||
|
||||
- [x] Native Windows screenshot/accessibility capture of the installed app.
|
||||
- [x] Native Add folder/index action, keyword query, highlighted passage preview
|
||||
and Ctrl+K query selection on the isolated owned corpus.
|
||||
- [ ] Search query typing, arrow selection, passage/media preview and Enter open.
|
||||
- [ ] Settings/theme/transparency interaction and readable preview.
|
||||
- [ ] Escape and title-bar close hide; Ctrl+Shift+Space restores query focus.
|
||||
- [ ] Tray Show/Quit and background/login startup behavior.
|
||||
- [x] Existing Windows 0.1.7 uninstall/reinstall and fresh empty-profile startup.
|
||||
- [ ] Final updated package uninstall/reinstall and completed fresh-profile setup.
|
||||
- [ ] Native Linux keyboard/search/preview interaction through a supported UI API.
|
||||
|
||||
Unchecked items are pending, not implied by compilation or unit tests.
|
||||
|
||||
## Whole-disk permission handling
|
||||
|
||||
The shared scanner now skips specifically permission-denied scopes, directory
|
||||
walk entries and file reads/metadata/publication checks, increments its skipped
|
||||
count and retains existing records in the affected subtree. It does not update
|
||||
their source fingerprints or certify their freshness. Other filesystem failures
|
||||
still abort and roll back reconciliation. Exact path boundaries protect sibling
|
||||
directories from accidental preservation, including a whole-root special case.
|
||||
|
||||
Two focused helper regressions cover preserved content/subtree boundaries and
|
||||
classification of other I/O failures. Windows core unit checks passed 27 tests
|
||||
with one separately built-worker test ignored, using serial execution. The first
|
||||
concurrent run hit an existing extraction-worker deadline; the serial rerun
|
||||
passed that test. Strict core library Clippy passed. These are structural checks;
|
||||
no personal folders or operating-system ACLs were modified to fabricate a denied
|
||||
directory fixture.
|
||||
|
||||
## Final Linux 0.1.8 local package
|
||||
|
||||
The exact final uncommitted workspace source plus both new Rust modules and the
|
||||
built frontend were frozen into a 668-file snapshot before building. Snapshot
|
||||
SHA-256: `bf864935e2f630d56836246e6c6a217f1d7313f4498c4fc19c3bac4d6296996d`.
|
||||
Current extraction helper was rebuilt and its source provenance staged. Normal
|
||||
GPU-capable Google and speech runtimes were verified; speech adds 29 resource
|
||||
records. Native desktop release compilation passed on Ubuntu 24.04 WSL in
|
||||
3m47s; the known vendored GLib lifetime warnings remain dependency warnings.
|
||||
|
||||
The initial local Debian precheck package was
|
||||
`.searchi/packages/searchi_0.1.8_amd64.deb`, 177,695,882 bytes, SHA-256
|
||||
`39bc495e65d7ab8c1592636b76aeade25de9fa56d5b139fc6f479fbcb9de0ee6`.
|
||||
No intermediate package was published. Raw build records:
|
||||
`.searchi/qa/linux-final-018-build.json` and its build log.
|
||||
|
||||
The extracted package started on real WSLg X11 display `:0`, with CPU inference,
|
||||
Mesa software rendering and an owned isolated profile. Automatic disk indexing
|
||||
was explicitly disabled for this bounded test. `ldd` reported no missing desktop
|
||||
dependencies; packaged speech resource verification passed. Its bundled genuine
|
||||
Google worker was observed with `--device cpu --role query --threads 1`, and the
|
||||
desktop remained alive. The approved Windows API returned the WSLg-hosted native
|
||||
window titled `searchi (Ubuntu-24.04)`, proving it can be selected as a target.
|
||||
Raw startup record: `.searchi/qa/linux-final-018-startup.json`.
|
||||
|
||||
Compilation, loader checks and target inventory do not by themselves establish
|
||||
Linux keyboard or preview interaction. Those checks remain separate.
|
||||
The approved WSLg capture attempt failed with the same `CreateForMonitor`
|
||||
`0x80070057` error as the Windows final candidate. Read-only accessibility exposed
|
||||
only the remote-desktop host pane, not Linux application controls. No input was
|
||||
attempted; the owned CPU startup process group is terminated by the test script.
|
||||
|
||||
Current Linux desktop unit tests passed 54/54 in 6.33 seconds, including native
|
||||
Linux filesystem create/update/rename/delete watcher behavior, application catalog
|
||||
parsing and automatic-indexing guards. The release tests use `custom-protocol`;
|
||||
an initial invocation without that required feature correctly failed compilation
|
||||
and was corrected without source changes. Raw successful log:
|
||||
`.searchi/qa/linux-final-018-unit-custom.log`. No Linux build/test process remains.
|
||||
|
||||
### Earlier local package after safety and visual QA corrections
|
||||
|
||||
Before final packaging, credential/cache exclusions were added to automatic
|
||||
disk indexing. Actual UI QA also corrected a preview selector that incorrectly
|
||||
stacked document previews. The final Linux source uses the safe snapshot
|
||||
`9f48db1ae11272d51f2e832b0d08de2f850e6e2d456960fcf7435857c46a5eee`
|
||||
plus recorded exact frontend/module deltas in
|
||||
`.searchi/qa/linux-final-018-safe-final-delta.json`. The unchanged extraction
|
||||
helper and normal runtimes were reused only after current provenance validation.
|
||||
|
||||
Final cached Linux desktop compilation passed in 1m44s. The extracted final
|
||||
Debian payload passed extraction provenance, all 29 speech resource records and
|
||||
loader checks with no missing dependencies. The accepted package at
|
||||
`.searchi/packages/searchi_0.1.8_amd64.deb` is **177,696,356 bytes**, SHA-256
|
||||
`cd69092b0b41403c4731e5e94a251067bc32e6a0b9f4338bc51bac0e8e2e85b0`.
|
||||
Desktop executable SHA-256:
|
||||
`d630e369c8823a3dfede5b8dad48a8c7d7dd196700743b0bac8418d6f23a5021`.
|
||||
This earlier local package was preserved as an ignored precheck fixture and
|
||||
was not published. Final report:
|
||||
`.searchi/qa/linux-final-018-safe-final-build.json`. Native input was not retried
|
||||
after its recorded capture/permission failure. No owned Linux process remains.
|
||||
|
||||
### Accepted final Linux package
|
||||
|
||||
The final frozen source includes application launching, first-use indexing and
|
||||
watcher cache exclusions, hybrid relevance handling, the new regression tests
|
||||
and current frontend appearance controls. Base snapshot has 677 files; the final
|
||||
frontend/brand source archive SHA-256 is
|
||||
`5650523467ed470355cd1bdb1faaf463bc551610e35ec741a542e228c4879fa8`.
|
||||
The last icon reading-plate delta is recorded separately in
|
||||
`.searchi/qa/linux-final-018-closed-icons-delta.json`. The final ELF was explicitly
|
||||
checked to contain the latest `assets/index-D4fzQWUH.css` asset.
|
||||
|
||||
Final native Linux desktop tests passed **56/56**, with zero ignored tests, in
|
||||
4.61 seconds. Native release build and bundling passed. The extracted package
|
||||
passed current extraction provenance, normal speech runtime verification (29
|
||||
records), and loader resolution without missing dependencies. No further native
|
||||
UI input was attempted after the existing environment errors.
|
||||
|
||||
The accepted `.searchi/packages/searchi_0.1.8_amd64.deb` is **177,694,032 bytes**,
|
||||
SHA-256 `7ab0a3789028f2a974bbca7fc29220a4ee9327d08388370e20ed610688c13bb9`.
|
||||
Desktop executable SHA-256:
|
||||
`268d2632682d57917595e2f0f3062ff885a58e4eb5ea3ebe0f54e3c988eb2383`.
|
||||
Previous local candidates were preserved as ignored evidence, not published.
|
||||
Raw successful build/test log and report:
|
||||
`.searchi/qa/linux-final-018-closed-build.log` and
|
||||
`.searchi/qa/linux-final-018-closed-build.json`. All owned Linux processes finished.
|
||||
|
||||
The **accepted final package bytes** (`7ab0a378…c13bb9`) were subsequently
|
||||
extracted again and actually launched on WSLg `:0` from a new owned profile,
|
||||
with automatic indexing disabled and CPU/software rendering enforced. Loader
|
||||
resolution and all 29 packaged speech records passed. The exact bundled Google
|
||||
worker was observed with `--device cpu --role query --threads 1` and the desktop
|
||||
was alive. The bounded smoke exited zero and terminated its owned process group.
|
||||
This is actual final-package startup evidence, not inferred from the earlier
|
||||
candidate or a compilation. No UI input or inference benchmark was performed.
|
||||
Raw report: `.searchi/qa/linux-final-018-closed-startup.json`.
|
||||
|
||||
### Final package with indexing/startup database-lock fix
|
||||
|
||||
Actual Windows startup exposed an interaction between whole-disk indexing and
|
||||
semantic database preparation. The final shared service now prepares semantic
|
||||
storage before watchers start, opens current-schema storage without a write
|
||||
transaction, and treats only a busy optional lexical warmup as deferrable. The
|
||||
current service source/tests plus formatted desktop startup were captured in
|
||||
`.searchi/qa/linux-final-018-lockfix-source-delta.json` and rebuilt locally.
|
||||
|
||||
Linux desktop tests again passed **56/56**, zero ignored, in 4.08 seconds.
|
||||
Release compilation, final frontend asset presence, extraction provenance,
|
||||
normal speech runtime verification (29 records), and loader resolution passed.
|
||||
The preceding packages above are preserved local prechecks, not release artifacts.
|
||||
|
||||
**Accepted current package:** `.searchi/packages/searchi_0.1.8_amd64.deb`,
|
||||
177,702,404 bytes, SHA-256
|
||||
`d0fd15c4aa4ec0d7320b507a3bc4afa1ebb14bdffa39c3b5cd076df66ede997c`.
|
||||
Desktop executable SHA-256:
|
||||
`e4938a0a557dbe910431f69e51c2ea4a36451df80b6971aede1ad198b82deb7b`.
|
||||
Actual startup of these exact extracted bytes passed on WSLg with an isolated
|
||||
profile, automatic indexing disabled and CPU/software rendering enforced. Its
|
||||
bundled Google process ran `--device cpu --role query --threads 1`; the desktop
|
||||
was alive. The smoke exited zero and terminated the owned process group.
|
||||
No UI retry or inference benchmark was performed.
|
||||
|
||||
Final evidence: `.searchi/qa/linux-final-018-lockfix-build.json`, matching build
|
||||
log, and `.searchi/qa/linux-final-018-lockfix-startup.json`. All owned Linux
|
||||
build/test/startup processes have finished. No package was published here.
|
||||
|
||||
## Final startup writer correction
|
||||
|
||||
The preceding local 0.1.8 packages remained unpublished prechecks. An actual
|
||||
Windows start with automatic whole-drive discovery exposed `database is locked`
|
||||
during semantic query preparation. The current semantic store had unnecessarily
|
||||
requested an immediate writer transaction on every open. Its optional lexical
|
||||
statistics warmup could request the same writer while discovery was running.
|
||||
|
||||
The final source prepares core/semantic storage before starting the watcher.
|
||||
Complete current semantic schemas reopen without a migration write; legacy
|
||||
additions still repair atomically and unsupported versions are rejected. Query
|
||||
warmup tolerates only typed SQLite busy/locked errors from the optional lexical
|
||||
cache, then still executes genuine model inference and ANN preparation. Other
|
||||
cache errors remain errors. No model, ranking or extraction helper changed.
|
||||
|
||||
Focused WAL-writer, legacy-schema, future-version and error propagation checks
|
||||
passed. Final service unit checks passed 49 tests with two explicit ignored
|
||||
fixtures; strict all-target Clippy passed. A genuine Google CPU query session
|
||||
opened, warmed and retrieved the supplier agreement with an owned WAL writer
|
||||
held throughout, in 13.32 seconds. This is functional contention evidence,
|
||||
not a foreground latency benchmark or simulated embedding result.
|
||||
|
||||
Before packaging, the corrected Windows release executable was tested with an
|
||||
absent application profile and automatic indexing enabled. It exposed 27 Desktop
|
||||
files including the owned validation text, database quick-check returned `ok`,
|
||||
semantic schema was 9, and the actual normal worker remained resident with CPU,
|
||||
query role and one thread. The returned native accessibility tree showed the
|
||||
compact launcher without the earlier schema-lock error. The owned fresh-profile
|
||||
processes were stopped. Raw evidence: `.searchi/qa/lean-final-runtime-smoke/`.
|
||||
|
||||
A native query input attempt on that returned window still failed at
|
||||
`GetCursorPos` with access denied `0x80070005`. No input success, final hotkey/
|
||||
tray interaction or native glass pixels are inferred from that attempt. Twelve
|
||||
actual-built CSS composition checks separately passed; they are not native
|
||||
compositor validation. Final installer hashes and installed-start verification
|
||||
are recorded below.
|
||||
|
||||
### Corrected Windows installer and installed startup
|
||||
|
||||
The final Windows installer is 101,832,696 bytes, SHA-256
|
||||
`6dd415aeb8f7c4d357383f44eab099dcc1c945ef01427ff305999b3b1f616b0c`.
|
||||
Installation exited zero; installed executable SHA-256
|
||||
`ab7eb3826b713be0f815f27415d2f9d0e9528029cdeee948d8e96cf557d96465`
|
||||
matches the extracted installer exactly. Current extraction provenance passed.
|
||||
Settings bytes were unchanged and a consistent SQLite backup was retained.
|
||||
The VM-only CPU launcher and desktop/login shortcuts were restored.
|
||||
|
||||
The actual installed package was launched with the original profile. Database
|
||||
quick-check returned `ok`, semantic schema was 9 and 27 early files, including
|
||||
the owned validation marker, remained searchable at the data layer. Its normal
|
||||
Google query worker was observed on CPU with query role and one thread, alongside
|
||||
bounded background workers. The app is left running for Karl; device discovery
|
||||
continues in the background. No final native input pass is claimed.
|
||||
Receipts: `.searchi/qa/lean-final-fixed-install/result.json` and `index-check.json`.
|
||||
@@ -1,6 +1,53 @@
|
||||
# Production readiness roadmap
|
||||
|
||||
Status: Windows v0.1.7 published and installed with resident tray/global shortcut and login startup; Linux headless v0.1.6 and desktop v0.1.4 previews published. Broader production gates remain open. Windows VM tests use CPU only.
|
||||
## Current bounded goal — 2026-10-14
|
||||
|
||||
Karl replaces the broad production goal with two deliverables. Work stays local;
|
||||
there are no intermediate pushes or releases. Publish only the final checked version.
|
||||
|
||||
- [ ] Verify native Windows/Linux interaction: launcher shortcut, tray, hide/show,
|
||||
keyboard search, selection, preview and media seeking. Record unavailable UI
|
||||
automation honestly rather than substituting headless tests.
|
||||
- [x] Test Windows uninstall and reinstall, preserving existing user data and
|
||||
using a fresh isolated application profile. Reinstalling on the development
|
||||
VM does not prove missing prerequisites on a truly clean Windows image.
|
||||
- [x] Establish bounded media baseline and improve practical image, music,
|
||||
audio/video relevance, absent-content results and speech timestamps. Use real
|
||||
Google EmbeddingGemma 2, retain source citations and report regressions.
|
||||
- [ ] Run meaningful changed-code checks, build/install the final package,
|
||||
update user documentation and publish that final version once.
|
||||
|
||||
Perfect media recognition, macOS, real GPU qualification and the broader gates
|
||||
below are outside this renewed scope. Stop experimentation when evidence shows
|
||||
the practical limits; explain those limits and ship the verified improvement.
|
||||
|
||||
Additional user steering in this same final local version:
|
||||
- [x] Replace the normal desktop window with a centered floating search bar;
|
||||
reveal results/preview on input and keep settings behind a small control.
|
||||
- [x] Automatically index accessible local files in the background, with
|
||||
system/cache/index exclusions and a settings switch; no first-use folder gate.
|
||||
- [x] Search installed applications and launch catalogued results from the bar.
|
||||
|
||||
Bounded evidence: uninstall/reinstall and isolated-profile Windows checks passed;
|
||||
actual CPU Google media tests and the documented music/timing limits are recorded
|
||||
in MEDIA-FINAL-QUALITY.md and SPEECH-FINAL-QUALITY.md. Launcher/app discovery and
|
||||
automatic-indexing code passed Windows/Linux desktop tests. Current software
|
||||
screenshots show actual retrieval and source highlights. Native final-build
|
||||
hotkey/tray/glass interaction remains unchecked after capture/input failures;
|
||||
do not infer it from unit tests or software screenshots. A final automatic-start
|
||||
check exposed a schema writer conflict. Its correction passed held-writer
|
||||
storage/warmup regressions and actual Google CPU retrieval. An empty Windows
|
||||
profile with automatic indexing enabled then exposed 27 Desktop files and the
|
||||
owned marker, with a resident CPU query-role worker and no schema-lock error.
|
||||
|
||||
Final bounded delivery: Windows desktop 0.1.8 is installed and its corrected
|
||||
installer verified; Ubuntu 24.04 desktop 0.1.8 passed packaged CPU startup.
|
||||
These are the final release artifacts. README includes current working-search
|
||||
images and a user-facing agent installation prompt. Headless Linux/Windows CLI
|
||||
0.1.6 remain available through older releases. The native interaction checkbox
|
||||
above stays open because final capture/input was denied; clean-machine, macOS
|
||||
and real GPU gates below remain deferred. No further feature work belongs to
|
||||
this bounded delivery. Gitea Actions remain disabled.
|
||||
|
||||
Karl's release priority, 2026-10-13: publish a usable first Windows version and
|
||||
install it on DEV-WIN11 now. Extensive platform/GPU, clean-machine, signing and
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
# Bounded speech and timeline verification
|
||||
|
||||
2026-10-14, Windows development VM, CPU only (`SEARCHI_FORCE_CPU=1`).
|
||||
This closes a focused reassessment of the existing speech implementation;
|
||||
it does not introduce another ASR model or claim perfect speech recognition.
|
||||
Google EmbeddingGemma 2 remains the retrieval model. The pinned local
|
||||
whisper.cpp base model, Silero VAD and DTW supply recognized passages and
|
||||
estimated source positions.
|
||||
|
||||
## Practical improvement already retained
|
||||
|
||||
The previous frozen publisher-timed diagnostic improved strict timestamp-start
|
||||
hits from **4/8 to 6/8** with VAD plus DTW. Both remaining orange-soil queries
|
||||
still missed their passage. See [the unchanged comparison](SPEECH-DTW.md).
|
||||
That diagnostic is one English recording with correlated queries, not a current
|
||||
end-to-end hybrid score. It cannot establish word-level precision.
|
||||
|
||||
The shipped implementation uses bounded 30-second windows with two-second
|
||||
overlap, source-preserving decoding, speech gating, and sentence locations from
|
||||
first/last token points. It retains errors rather than inventing transcripts.
|
||||
No new timing offsets, label-specific heuristics or larger model were added:
|
||||
the remaining measured misses concern recognized content, and the available
|
||||
evidence does not justify increasing indexing cost merely to move timestamps.
|
||||
|
||||
## New genuine runtime check
|
||||
|
||||
The exact 30-second PCM from the earlier failed long-source service run was
|
||||
retested through the current normal distribution worker, forced onto CPU.
|
||||
The existing Rust integration test copies the runtime and models into genuine
|
||||
Unicode paths, verifies their inventory, transcribes twice, and requires stable,
|
||||
nonempty, bounded passages and zero warm model-loading time.
|
||||
|
||||
| Measurement | First call | Warm call |
|
||||
| --- | ---: | ---: |
|
||||
| Native VAD | 97.8375 ms | 113.021 ms |
|
||||
| Native ASR | 47,312.2 ms | 48,474.65 ms |
|
||||
| Native model loading | 235.8515 ms | 0 ms |
|
||||
| Transport | 44.8708 ms | 48.6905 ms |
|
||||
| CPU fallback | 0 ms | 0 ms |
|
||||
|
||||
The test **passed** in 129.23 seconds including inventory verification,
|
||||
relocation and cleanup. These are indexing timings, not search latency.
|
||||
Successful isolated repetition does not explain or erase the earlier service
|
||||
transport failure, which remains recorded in [speech integration](SPEECH-INTEGRATION.md).
|
||||
The existing next-source recovery remains in place.
|
||||
|
||||
| Verified input/artifact | SHA-256 |
|
||||
| --- | --- |
|
||||
| Exact previously failed PCM | `03ef72d2a4cb926b7d31fbaef757a6cb954a55d6d6961085ea6992728c8d9e37` |
|
||||
| Normal speech worker | `9c34aa2b12a4c2ab876a1573045ef9a31e19e7dfff76a2b34efdf45555ad97aa` |
|
||||
| Runtime inventory | `98ca365d4a298b23ca240967e005750db83613b09eaa89ed714afb711b42c87d` |
|
||||
|
||||
Reproduction uses `crates/searchi-speech/tests/native_cpu.rs`, with
|
||||
`SEARCHI_TEST_SPEECH_WORKER=.searchi/s-a3/runtime/searchi-speech-worker.exe`,
|
||||
the pinned base/Silero files in `.searchi/speech/models`, and
|
||||
`SEARCHI_TEST_SPEECH_PCM=.searchi/speech-runtime/nasa-exact-crash/input.f32`:
|
||||
|
||||
```powershell
|
||||
$env:SEARCHI_FORCE_CPU = '1'
|
||||
cargo test -p searchi-speech --test native_cpu --locked -- --ignored --nocapture
|
||||
```
|
||||
|
||||
## Actual media source-clock checks
|
||||
|
||||
Both real FFmpeg integration tests passed in 3.53 seconds:
|
||||
|
||||
- Audio beginning two seconds into a video decodes at its actual source origin;
|
||||
a whole-file decode preserves the preceding silence.
|
||||
- An internal timestamp gap, bounded seek and final tail preserve exact source
|
||||
sample positions without shifting later speech towards the beginning.
|
||||
|
||||
```powershell
|
||||
$env:SEARCHI_FORCE_CPU = '1'
|
||||
$env:SEARCHI_TEST_FFMPEG = 'C:/Users/karl/searchi/.searchi/media-runtime/bin/ffmpeg.exe'
|
||||
$env:SEARCHI_TEST_FFPROBE = 'C:/Users/karl/searchi/.searchi/media-runtime/bin/ffprobe.exe'
|
||||
cargo test -p searchi-service --test speech_stream_offset_cpu --locked -- --ignored --nocapture
|
||||
```
|
||||
|
||||
These checks establish source-clock handling, not recognition accuracy. Speech
|
||||
positions remain estimates; overlapping windows and imperfect transcripts can
|
||||
still produce repeated or incomplete passages. The previously recorded tiny
|
||||
English/German positive retrieval check and music/silence negative recognition
|
||||
controls remain useful evidence, without a new broad media-quality rating.
|
||||
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"kind": "browser-rendered-production-ui-real-cpu-engine",
|
||||
"source": {
|
||||
"base_commit": "9870df7cb5b537ba516997a0d049b996bc30b08d",
|
||||
"base_commit": "01279a6b25b545d0920889bf277abe00631a666d",
|
||||
"working_tree_dirty": true
|
||||
},
|
||||
"frontend_build": {
|
||||
"version": "0.1.8",
|
||||
"index_sha256": "8415df31094999f0d8bae5a6eb06db160132f1dc4657d1a329a24a6125defe0b"
|
||||
},
|
||||
"viewport": {
|
||||
"width": 1440,
|
||||
"height": 1000
|
||||
@@ -33,11 +37,11 @@
|
||||
{
|
||||
"query": "cancel the supplier partnership",
|
||||
"mode": "basic",
|
||||
"result_count": 7,
|
||||
"result_count": 1,
|
||||
"metrics": {
|
||||
"dropped_spans": 0,
|
||||
"result_count": 7,
|
||||
"total_ms": 2.0688999999999997,
|
||||
"result_count": 1,
|
||||
"total_ms": 73.3586,
|
||||
"trace": null
|
||||
},
|
||||
"first_filename": "Supplier Agreement.pdf",
|
||||
@@ -48,17 +52,18 @@
|
||||
"ui_checks": {
|
||||
"literal_query_marks": true,
|
||||
"actual_page_explanation": true,
|
||||
"why_disclosure_collapsed_by_default": true
|
||||
"why_disclosure_collapsed_by_default": true,
|
||||
"unrelated_photos_removed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"query": "mountains reflected in calm water",
|
||||
"mode": "basic",
|
||||
"result_count": 7,
|
||||
"result_count": 2,
|
||||
"metrics": {
|
||||
"dropped_spans": 0,
|
||||
"result_count": 7,
|
||||
"total_ms": 1.5953,
|
||||
"result_count": 2,
|
||||
"total_ms": 76.9483,
|
||||
"trace": null
|
||||
},
|
||||
"first_filename": "Mountain Lake.jpg",
|
||||
@@ -67,40 +72,41 @@
|
||||
"number": 0
|
||||
},
|
||||
"ui_checks": {
|
||||
"meaning_only_image_has_no_text_marks": true
|
||||
"meaning_only_image_has_no_text_marks": true,
|
||||
"unrelated_documents_removed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"query": "how can we cancel the supplier partnership",
|
||||
"mode": "debug",
|
||||
"result_count": 7,
|
||||
"result_count": 1,
|
||||
"metrics": {
|
||||
"dropped_spans": 0,
|
||||
"result_count": 7,
|
||||
"total_ms": 92.8279,
|
||||
"result_count": 1,
|
||||
"total_ms": 90.92160000000001,
|
||||
"trace": [
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 92.80539999999999,
|
||||
"duration_ms": 90.8989,
|
||||
"name": "hybrid.search",
|
||||
"parent": null,
|
||||
"start_ms": 0.0106
|
||||
"start_ms": 0.0108
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 2.6003,
|
||||
"duration_ms": 1.8246,
|
||||
"name": "lexical.search",
|
||||
"parent": 0,
|
||||
"start_ms": 0.027
|
||||
"start_ms": 0.0306
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"query_bytes": 42
|
||||
},
|
||||
"duration_ms": 0.0389,
|
||||
"duration_ms": 0.0422,
|
||||
"name": "lexical.normalization",
|
||||
"parent": 1,
|
||||
"start_ms": 0.0374
|
||||
"start_ms": 0.041100000000000005
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
@@ -108,148 +114,149 @@
|
||||
"frequency_cache_misses": 8,
|
||||
"trigram_index": 1
|
||||
},
|
||||
"duration_ms": 1.0081,
|
||||
"duration_ms": 0.2968,
|
||||
"name": "lexical.candidate_plan",
|
||||
"parent": 1,
|
||||
"start_ms": 0.08650000000000001
|
||||
"start_ms": 0.094
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.2286,
|
||||
"duration_ms": 0.3236,
|
||||
"name": "lexical.exact_filename",
|
||||
"parent": 1,
|
||||
"start_ms": 1.1168
|
||||
"start_ms": 0.4067
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"filters_active": 0,
|
||||
"rows": 0
|
||||
},
|
||||
"duration_ms": 0.1837,
|
||||
"duration_ms": 0.2841,
|
||||
"name": "lexical.filtered_sql",
|
||||
"parent": 4,
|
||||
"start_ms": 1.1471
|
||||
"start_ms": 0.4364
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.2688,
|
||||
"duration_ms": 0.2009,
|
||||
"name": "lexical.filename_substring",
|
||||
"parent": 1,
|
||||
"start_ms": 1.3663
|
||||
"start_ms": 0.7506999999999999
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"filters_active": 0,
|
||||
"rows": 0
|
||||
},
|
||||
"duration_ms": 0.2249,
|
||||
"duration_ms": 0.17229999999999998,
|
||||
"name": "lexical.filtered_sql",
|
||||
"parent": 6,
|
||||
"start_ms": 1.3906999999999998
|
||||
"start_ms": 0.7678999999999999
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.2146,
|
||||
"duration_ms": 0.1716,
|
||||
"name": "lexical.path_substring",
|
||||
"parent": 1,
|
||||
"start_ms": 1.6556
|
||||
"start_ms": 0.9650000000000001
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"filters_active": 0,
|
||||
"rows": 0
|
||||
},
|
||||
"duration_ms": 0.175,
|
||||
"duration_ms": 0.145,
|
||||
"name": "lexical.filtered_sql",
|
||||
"parent": 8,
|
||||
"start_ms": 1.6802
|
||||
"start_ms": 0.9821000000000001
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.2391,
|
||||
"duration_ms": 0.229,
|
||||
"name": "lexical.content",
|
||||
"parent": 1,
|
||||
"start_ms": 1.8861999999999999
|
||||
"start_ms": 1.1488
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"filters_active": 0,
|
||||
"rows": 0
|
||||
},
|
||||
"duration_ms": 0.2053,
|
||||
"duration_ms": 0.2014,
|
||||
"name": "lexical.filtered_sql",
|
||||
"parent": 10,
|
||||
"start_ms": 1.9049
|
||||
"start_ms": 1.1647
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.3054,
|
||||
"duration_ms": 0.27080000000000004,
|
||||
"name": "lexical.filename_terms",
|
||||
"parent": 1,
|
||||
"start_ms": 2.1413
|
||||
"start_ms": 1.3904
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"filters_active": 0,
|
||||
"rows": 0
|
||||
},
|
||||
"duration_ms": 0.2773,
|
||||
"duration_ms": 0.2424,
|
||||
"name": "lexical.filtered_sql",
|
||||
"parent": 12,
|
||||
"start_ms": 2.1576999999999997
|
||||
"start_ms": 1.4071
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.146,
|
||||
"duration_ms": 0.162,
|
||||
"name": "lexical.media_metadata",
|
||||
"parent": 1,
|
||||
"start_ms": 2.4598
|
||||
"start_ms": 1.675
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"filters_active": 0,
|
||||
"rows": 0
|
||||
},
|
||||
"duration_ms": 0.112,
|
||||
"duration_ms": 0.1344,
|
||||
"name": "lexical.filtered_sql",
|
||||
"parent": 14,
|
||||
"start_ms": 2.4749
|
||||
"start_ms": 1.6907999999999999
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.0155,
|
||||
"duration_ms": 0.015000000000000001,
|
||||
"name": "hybrid.identifier_priority",
|
||||
"parent": 0,
|
||||
"start_ms": 2.6382
|
||||
"start_ms": 1.8684999999999998
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"code_task": 0,
|
||||
"failed": 0,
|
||||
"query_cache_hit": 0,
|
||||
"query_cache_miss": 1,
|
||||
"request_encode_us": 18,
|
||||
"request_write_us": 58,
|
||||
"response_validate_us": 69,
|
||||
"worker_batch_prepare_us": 19,
|
||||
"worker_inference_us": 87311,
|
||||
"worker_pool_normalize_us": 14,
|
||||
"request_encode_us": 25,
|
||||
"request_write_us": 197,
|
||||
"response_validate_us": 97,
|
||||
"worker_batch_prepare_us": 21,
|
||||
"worker_inference_us": 86213,
|
||||
"worker_pool_normalize_us": 19,
|
||||
"worker_token_count": 16,
|
||||
"worker_tokenization_us": 173,
|
||||
"worker_wait_and_response_decode_us": 88454
|
||||
"worker_tokenization_us": 179,
|
||||
"worker_wait_and_response_decode_us": 87455
|
||||
},
|
||||
"duration_ms": 89.1821,
|
||||
"duration_ms": 87.9572,
|
||||
"name": "semantic.query_embedding",
|
||||
"parent": 0,
|
||||
"start_ms": 2.6649
|
||||
"start_ms": 1.8927
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"general_lane": 1
|
||||
},
|
||||
"duration_ms": 0.8757,
|
||||
"duration_ms": 0.9468,
|
||||
"name": "semantic.routing",
|
||||
"parent": 0,
|
||||
"start_ms": 91.8792
|
||||
"start_ms": 89.89030000000001
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
@@ -257,99 +264,110 @@
|
||||
"filesystem_checks": 2,
|
||||
"result_files": 7
|
||||
},
|
||||
"duration_ms": 0.8334,
|
||||
"duration_ms": 0.8935,
|
||||
"name": "semantic.retrieval",
|
||||
"parent": 18,
|
||||
"start_ms": 91.90950000000001
|
||||
"start_ms": 89.93039999999999
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.1384,
|
||||
"duration_ms": 0.14650000000000002,
|
||||
"name": "semantic.generation_snapshot",
|
||||
"parent": 19,
|
||||
"start_ms": 91.9247
|
||||
"start_ms": 89.953
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"cache_hit": 1
|
||||
},
|
||||
"duration_ms": 0.0115,
|
||||
"duration_ms": 0.0167,
|
||||
"name": "semantic.ann_load",
|
||||
"parent": 19,
|
||||
"start_ms": 92.07310000000001
|
||||
"start_ms": 90.1134
|
||||
},
|
||||
{
|
||||
"counters": {},
|
||||
"duration_ms": 0.011,
|
||||
"duration_ms": 0.0167,
|
||||
"name": "semantic.filter_normalization",
|
||||
"parent": 19,
|
||||
"start_ms": 92.0933
|
||||
"start_ms": 90.14410000000001
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"cache_hit": 1,
|
||||
"eligible_chunks": 8
|
||||
},
|
||||
"duration_ms": 0.0252,
|
||||
"duration_ms": 0.034999999999999996,
|
||||
"name": "semantic.eligibility",
|
||||
"parent": 19,
|
||||
"start_ms": 92.1129
|
||||
"start_ms": 90.1714
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"requested_chunks": 8
|
||||
},
|
||||
"duration_ms": 0.5494,
|
||||
"duration_ms": 0.5680999999999999,
|
||||
"name": "semantic.ann_pass",
|
||||
"parent": 19,
|
||||
"start_ms": 92.1485
|
||||
"start_ms": 90.2198
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"returned_chunks": 8
|
||||
},
|
||||
"duration_ms": 0.0347,
|
||||
"duration_ms": 0.0356,
|
||||
"name": "semantic.ann_search",
|
||||
"parent": 24,
|
||||
"start_ms": 92.161
|
||||
"start_ms": 90.2333
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"filesystem_checks": 2,
|
||||
"unique_parents": 7
|
||||
},
|
||||
"duration_ms": 0.4802,
|
||||
"duration_ms": 0.4973,
|
||||
"name": "semantic.parent_materialization",
|
||||
"parent": 24,
|
||||
"start_ms": 92.2066
|
||||
"start_ms": 90.2796
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"valid": 1
|
||||
},
|
||||
"duration_ms": 0.20550000000000002,
|
||||
"duration_ms": 0.193,
|
||||
"name": "semantic.parent_filesystem_validation",
|
||||
"parent": 26,
|
||||
"start_ms": 92.30539999999999
|
||||
"start_ms": 90.38690000000001
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"valid": 1
|
||||
},
|
||||
"duration_ms": 0.1146,
|
||||
"duration_ms": 0.1215,
|
||||
"name": "semantic.parent_filesystem_validation",
|
||||
"parent": 26,
|
||||
"start_ms": 92.5374
|
||||
"start_ms": 90.6088
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"candidates_after": 1,
|
||||
"candidates_before": 7,
|
||||
"tail_candidates_pruned": 6
|
||||
},
|
||||
"duration_ms": 0.0216,
|
||||
"name": "hybrid.semantic_shortlist",
|
||||
"parent": 0,
|
||||
"start_ms": 90.8471
|
||||
},
|
||||
{
|
||||
"counters": {
|
||||
"lexical_files": 0,
|
||||
"semantic_files": 7
|
||||
"semantic_files": 1
|
||||
},
|
||||
"duration_ms": 0.0376,
|
||||
"duration_ms": 0.02,
|
||||
"name": "hybrid.rank_fusion",
|
||||
"parent": 0,
|
||||
"start_ms": 92.7663
|
||||
"start_ms": 90.8783
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -361,79 +379,130 @@
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"file": "launcher-empty.png",
|
||||
"sha256": "276ddb994d3b361c707d6afdadf28976d6386be9103baba19abbfe07fd4a3024",
|
||||
"query": "",
|
||||
"mode": "empty-ready",
|
||||
"result_count": 0,
|
||||
"selected_filename": null,
|
||||
"theme": "light",
|
||||
"capture_bounds": {
|
||||
"x": 360,
|
||||
"y": 120,
|
||||
"width": 720,
|
||||
"height": 110
|
||||
},
|
||||
"state_assertions": {
|
||||
"semantic_ready": true,
|
||||
"compact_empty_layout": true,
|
||||
"native_pixels": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "search-light.png",
|
||||
"sha256": "bd45041de13093f7a7e26285618f4c1afc5b081fb41e51ff06e1313216af3562",
|
||||
"sha256": "75fd2ebc9b40dcfb8501ee9ff0e14dc0b3a2cccc223b672f66c6feb4fe5f5858",
|
||||
"query": "cancel the supplier partnership",
|
||||
"mode": "basic",
|
||||
"result_count": 7,
|
||||
"result_count": 1,
|
||||
"selected_filename": "Supplier Agreement.pdf",
|
||||
"first_source_kind": "page",
|
||||
"first_source_number": 2,
|
||||
"theme": "light",
|
||||
"summary": "7 RESULTS · KEYWORD + MEANING · SEARCH 2.1 MS · SHOWN 233 MS",
|
||||
"summary": "1 RESULTS · KEYWORD + MEANING · SEARCH 73 MS · SHOWN 306 MS",
|
||||
"capture_bounds": {
|
||||
"x": 180,
|
||||
"y": 0,
|
||||
"width": 1080,
|
||||
"height": 1000
|
||||
},
|
||||
"state_assertions": {
|
||||
"wide_split_preview": true,
|
||||
"semantic_ready": true,
|
||||
"hybrid_final": true,
|
||||
"image_visible": false,
|
||||
"actual_worker_inference": false,
|
||||
"literal_query_marks": true,
|
||||
"actual_page_explanation": true,
|
||||
"why_disclosure_collapsed_by_default": true
|
||||
"why_disclosure_collapsed_by_default": true,
|
||||
"unrelated_photos_removed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "search-dark.png",
|
||||
"sha256": "cd7e2aa3f7027cd9b40965171a232f6ee901e1e2b971f04628b4cfcc3b440263",
|
||||
"sha256": "45c3b7f5072d22e4f9c52549727ad63ce122650c2cd105680d40d38b8e0730e1",
|
||||
"query": "cancel the supplier partnership",
|
||||
"mode": "basic",
|
||||
"result_count": 7,
|
||||
"result_count": 1,
|
||||
"selected_filename": "Supplier Agreement.pdf",
|
||||
"first_source_kind": "page",
|
||||
"first_source_number": 2,
|
||||
"theme": "dark",
|
||||
"summary": "7 RESULTS · KEYWORD + MEANING · SEARCH 2.1 MS · SHOWN 233 MS",
|
||||
"summary": "1 RESULTS · KEYWORD + MEANING · SEARCH 73 MS · SHOWN 306 MS",
|
||||
"capture_bounds": {
|
||||
"x": 180,
|
||||
"y": 0,
|
||||
"width": 1080,
|
||||
"height": 1000
|
||||
},
|
||||
"state_assertions": {
|
||||
"wide_split_preview": true,
|
||||
"semantic_ready": true,
|
||||
"hybrid_final": true,
|
||||
"image_visible": false,
|
||||
"actual_worker_inference": false,
|
||||
"literal_query_marks": true,
|
||||
"actual_page_explanation": true,
|
||||
"why_disclosure_collapsed_by_default": true
|
||||
"why_disclosure_collapsed_by_default": true,
|
||||
"unrelated_photos_removed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "media-search.png",
|
||||
"sha256": "4c278446963cd5dbad073bea93a3ca33fb9c10cb43a9544258d5fb6039014d81",
|
||||
"sha256": "718ffd4e7fa0a21ef717a0773749c0b72a1cbae4968bebb0c26e7f4d68133488",
|
||||
"query": "mountains reflected in calm water",
|
||||
"mode": "basic",
|
||||
"result_count": 7,
|
||||
"result_count": 2,
|
||||
"selected_filename": "Mountain Lake.jpg",
|
||||
"first_source_kind": "image",
|
||||
"first_source_number": 0,
|
||||
"theme": "light",
|
||||
"summary": "7 RESULTS · KEYWORD + MEANING · SEARCH 1.6 MS · SHOWN 217 MS",
|
||||
"summary": "2 RESULTS · KEYWORD + MEANING · SEARCH 77 MS · SHOWN 280 MS",
|
||||
"capture_bounds": {
|
||||
"x": 180,
|
||||
"y": 0,
|
||||
"width": 1080,
|
||||
"height": 1000
|
||||
},
|
||||
"state_assertions": {
|
||||
"wide_split_preview": true,
|
||||
"semantic_ready": true,
|
||||
"hybrid_final": true,
|
||||
"image_visible": true,
|
||||
"actual_worker_inference": false,
|
||||
"meaning_only_image_has_no_text_marks": true
|
||||
"meaning_only_image_has_no_text_marks": true,
|
||||
"unrelated_documents_removed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"file": "performance-details.png",
|
||||
"sha256": "4f336d4c42d0c4a50ce33bca27595f02da7d896c8734d447350d50dab5c339df",
|
||||
"sha256": "945dec2b087961a4cfa073983f4ac055c6f7b75c736aaaa5094596ffdd959713",
|
||||
"query": "how can we cancel the supplier partnership",
|
||||
"mode": "debug",
|
||||
"result_count": 7,
|
||||
"result_count": 1,
|
||||
"selected_filename": "Supplier Agreement.pdf",
|
||||
"first_source_kind": "page",
|
||||
"first_source_number": 2,
|
||||
"theme": "light",
|
||||
"summary": "7 RESULTS · KEYWORD + MEANING · SEARCH 93 MS · SHOWN 311 MS",
|
||||
"summary": "1 RESULTS · KEYWORD + MEANING · SEARCH 91 MS · SHOWN 306 MS",
|
||||
"capture_bounds": {
|
||||
"x": 180,
|
||||
"y": 0,
|
||||
"width": 1080,
|
||||
"height": 1000
|
||||
},
|
||||
"state_assertions": {
|
||||
"wide_split_preview": true,
|
||||
"semantic_ready": true,
|
||||
"hybrid_final": true,
|
||||
"image_visible": false,
|
||||
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 439 KiB After Width: | Height: | Size: 247 KiB |
|
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 80 KiB |