Skip to content

Launch prep: version 1.4.0 in-repo, path scrub, public docs pass, update-check data-dir fix - #275

Merged
lemon07r merged 13 commits into
masterfrom
devin/1788917749-launch-prep
Sep 9, 2026
Merged

lemon07r merged 13 commits into
masterfrom
devin/1788917749-launch-prep

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Sep 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Pre-launch cleanup plus one real bug found while recording the README demo.

Bug fix (vera-cli): update_check::cache_path() hardcoded ~/.vera/update-check.json. On a fresh install the data dir is $XDG_DATA_HOME/vera, but vera_home_dir() prefers ~/.vera if it exists — so the first command's trailing update check created ~/.vera, and every subsequent command resolved config/models/credentials from the empty legacy dir (embedding API not configured, silent BM25-only fallback). Now:

fn cache_path() -> Option<PathBuf> {
    crate::state::vera_dir().ok().map(|dir| dir.join("update-check.json"))
}

Reproduced on Ubuntu 22.04 with a fresh vera setup --potion-code; after the fix ~/.vera is never created and the cache lands in ~/.local/share/vera/.

Version: 0.4.0 -> 1.4.0 in Cargo.toml, Cargo.lock (4 workspace crates only), npm and PyPI manifests. release.yml still overwrites from the tag; this only fixes source builds (vera --version, .version skill stamps, false "update available" nudge).

Path scrub: all /home/lamim/... occurrences removed from tracked files (ADR 008, benchmark notes/results, answer key). filter_scan_tests::overcap_path falls back to dirs::home_dir()/.cache/... instead of a hardcoded home; VERA_OVERCAP_FIXTURE still overrides, test still skips when absent.

Public docs pass (editorial, per agreed decisions):

  • README: new hero + demo GIF (docs/assets/vera-demo.gif, recorded against Flask with the default local backend), local-first Quick Start, .vera/ gitignore step, Requirements / Privacy / Vera-vs-other-tools / MCP setup / Status sections; strengths reordered so it no longer opens with a benchmark loss; Pampax paragraph softened.
  • New pages: docs/README.md (index), docs/mcp.md (per-client MCP setup), docs/configuration.md (config keys + env vars), docs/benchmarks-history.md (historical snapshots split out of benchmarks.md).
  • Internal notes moved into ADRs: 197-profiling.md -> adr/009, reranker-server-batching-decision.md -> adr/010; ADR 006/007 renamed by topic; ADR 000 index updated.
  • Fixes: skills/vera/SKILL.md grep example used \| (a literal pipe in Vera's regex) -> |; CONTRIBUTING clippy command now matches CI (--all-targets); models.md inference table now states the corpus per row; contradictory reranker guidance unified; troubleshooting reordered by frequency.

Not in this PR (reported separately): GNU release binary requires glibc 2.39; musl binary segfaults in tree_sitter_sql_external_scanner_create because CXX_x86_64_unknown_linux_musl=g++ links glibc libstdc++ into the static binary.

Verification

  • cargo fmt --all -- --check, cargo clippy --workspace --all-targets -- -D warnings
  • cargo test -p vera-cli, focused vera-core retrieval tests
  • Markdown link/anchor check over README.md + docs/, git diff --check, rg /home/lamim -> none

Link to Devin session: https://app.devin.ai/sessions/0b10c0b095784568acf302cc024ef089
Open in Devin Desktop: https://app.devin.ai/desktop/session/0b10c0b095784568acf302cc024ef089?variant=devin
Requested by: @lemon07r


Summary by cubic

Fixes the update-check cache path so fresh installs no longer lose their configured backend, and prepares the 1.4.0 launch with a version bump, path scrub, and public docs pass.

Bug Fix

  • vera-cli stores the update-check cache in the Vera data dir instead of hardcoded ~/.vera/update-check.json.
  • vera_home_dir() now ignores a ~/.vera that holds only the update-check cache, so a stray legacy directory no longer shadows the populated XDG data dir.
  • Previously, the first command created ~/.vera, which made vera_home_dir() switch to the legacy directory and silently fall back to BM25-only retrieval.

Launch Prep

  • Bumps workspace crates, npm, and PyPI packages from 0.4.0 to 1.4.0; affects source builds only, since release.yml still overwrites from the tag.
  • Removes hardcoded /home/lamim/... paths from tracked files; the overcap test fixture now falls back to dirs::home_dir().
  • Rewrites the README with a demo GIF, local-first quick start, and reordered strengths.
  • Adds docs index, MCP setup, configuration reference, and benchmark history pages.
  • Moves internal profiling notes into ADRs 009 and 010 and updates the ADR index.
  • Fixes the grep example in skills/vera/SKILL.md and aligns the CONTRIBUTING clippy command with CI.

Written for commit 7bb839a. Summary will update on new commits.

Review in cubic

@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

devin-ai-integration[bot]

This comment was marked as resolved.

Older builds created ~/.vera for the update cache on XDG installs; that
directory must not shadow the populated XDG data directory.
@lemon07r
lemon07r merged commit e821ebc into master Sep 9, 2026
2 checks passed

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 new potential issues.

2 flags not posted on this PR by your GitHub settings — view them in Devin Review. (Configure)

Devin Review

Comment on lines +1016 to +1020
entries.flatten().any(|entry| {
let name = entry.file_name();
!LEGACY_HOME_INCIDENTAL_FILES
.iter()
.any(|incidental| name == *incidental)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Unrelated files shadow active installations

With an unrelated file beside the old cache, is_legacy_installation treats the legacy directory as a real installation. A .DS_Store file therefore hides configuration and models in the active XDG data directory.

Prompt for agents
The legacy-home detector currently defines an installation as any directory entry except update-check.json. This lets unrelated filesystem metadata or abandoned temporary files shadow a populated XDG installation. Change the detection to recognize actual Vera installation artifacts while preserving every supported legacy layout. Relevant artifacts include persisted CLI state and managed models, runtimes, virtual environments, binaries, and scaler data. Add coverage for an old update cache accompanied by unrelated metadata.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +1013 to +1014
let Ok(entries) = std::fs::read_dir(legacy) else {
return false;

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Unreadable legacy directories lose configuration

When a valid legacy directory cannot be enumerated, is_legacy_installation treats the read error as proof that no installation exists. The CLI silently switches to XDG, hiding existing configuration and models instead of surfacing the error.

Prompt for agents
is_legacy_installation currently collapses every read_dir failure into “not an installation.” Preserve the distinction between a missing legacy directory and one that exists but cannot be enumerated. Propagate an actionable I/O error through resolve_vera_home_dir and vera_home_dir, while retaining the XDG fallback for a genuinely absent directory. Add a Unix permission test where known legacy files remain addressable but directory enumeration fails, or otherwise test the error branch directly.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

lemon07r pushed a commit that referenced this pull request Sep 9, 2026
…dir) (#277)

Follow-up to #275 hardening legacy ~/.vera detection: hidden files (.DS_Store, editor swap files) are now incidental alongside update-check.json, so a stray ~/.vera can no longer shadow a populated XDG data dir, and read_dir failures other than NotFound propagate as errors instead of silently falling back. resolve_vera_home_dir and is_legacy_installation return Result; vera_home_dir already did, so no caller changes. Adds the .DS_Store case to the cache-only test and a Unix-only unreadable-dir test that self-skips when running as root.

[skip ci]
@lemon07r
lemon07r deleted the devin/1788917749-launch-prep branch September 13, 2026 08:18
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.

1 participant