Commit Graph
934 Commits
Author SHA1 Message Date
Richie 47f77443dd feat(networking): configure unused network ports to prevent errors and optimize boot time
treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 49s
build_systems / build-bob (pull_request) Successful in 1m9s
build_systems / build-brain (pull_request) Successful in 1m12s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m15s
treefmt / nix fmt (push) Successful in 6s
pytest / pytest (push) Successful in 25s
build_systems / build-jeeves (pull_request) Successful in 2m59s
build_systems / build-brain (push) Successful in 32s
build_systems / build-bob (push) Successful in 33s
build_systems / build-rhapsody-in-green (push) Successful in 46s
build_systems / build-jeeves (push) Successful in 2m26s
2026-07-09 10:45:08 -04:00
Richie 8548f4ff64 feat(programs): add codebase-memory-mcp to home packages
treefmt / nix fmt (pull_request) Successful in 8s
pytest / pytest (pull_request) Successful in 1m50s
build_systems / build-brain (pull_request) Successful in 9m47s
build_systems / build-rhapsody-in-green (pull_request) Successful in 24m1s
build_systems / build-bob (pull_request) Successful in 31m2s
build_systems / build-jeeves (pull_request) Successful in 6m55s
treefmt / nix fmt (push) Successful in 6s
build_systems / build-brain (push) Successful in 33s
build_systems / build-bob (push) Successful in 39s
pytest / pytest (push) Successful in 42s
build_systems / build-rhapsody-in-green (push) Successful in 51s
build_systems / build-jeeves (push) Successful in 2m25s
2026-07-02 16:08:12 -04:00
Richie 682960b4c9 feat(installer): refactor NixOS configurations to dynamically generate host systems
pytest / pytest (pull_request) Successful in 25s
build_systems / build-brain (pull_request) Successful in 45s
build_systems / build-bob (pull_request) Successful in 46s
build_systems / build-jeeves (pull_request) Successful in 2m30s
build_systems / build-rhapsody-in-green (pull_request) Successful in 56s
treefmt / nix fmt (pull_request) Successful in 5s
treefmt / nix fmt (push) Successful in 9s
pytest / pytest (push) Successful in 29s
build_systems / build-brain (push) Successful in 35s
build_systems / build-bob (push) Successful in 35s
build_systems / build-rhapsody-in-green (push) Successful in 48s
build_systems / build-jeeves (push) Successful in 2m28s
2026-07-02 14:33:45 -04:00
Richie ddea13b93a feat(installer): enhance NixOS installer with SSH access and encryption password input 2026-07-02 14:17:49 -04:00
Richie b252b0bf6e feat(installer): add one-file installer build and custom install ISO
Replace old_installer.py with a curses TUI installer packaged as a
one-file PyInstaller binary (python/installer/build.py, wrapped by
python/installer/package.nix). The default .#installer is patched to run
on foreign Linux live media; the new .#installer-nixos variant keeps its
Nix store interpreter so it runs on NixOS.

Add systems/iso, a minimal NixOS install CD with kernel 6.18 and ZFS 2.4
matching the deployed systems and the installer on PATH; build it with
nix build .#iso. Shared logging and subprocess helpers move out of
common.py into python/logging_config.py and python/process.py.
2026-07-02 14:17:49 -04:00
Richie fbf288649a feat(haproxy): simplify Gitea rate limiting and fix rule ordering
treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 25s
build_systems / build-brain (pull_request) Successful in 43s
build_systems / build-bob (pull_request) Successful in 45s
build_systems / build-rhapsody-in-green (pull_request) Successful in 58s
build_systems / build-jeeves (pull_request) Successful in 2m31s
build_systems / build-rhapsody-in-green (push) Successful in 13s
build_systems / build-jeeves (push) Successful in 2m15s
treefmt / nix fmt (push) Failing after 13m42s
build_systems / build-brain (push) Failing after 18m43s
build_systems / build-bob (push) Failing after 18m43s
pytest / pytest (push) Failing after 23m43s
- Drop the session-cookie rate-limit bypass: Gitea hands the cookie to
  anonymous visitors too, so any cookie-accepting crawler could exempt
  itself after one request
- Loosen the general Gitea limit from 10 to 50 req/10s since logged-in
  users are now rate-limited as well
- Serve robots.txt above the rate-limit rules so throttled crawlers can
  always read the Crawl-delay, and capture Host/User-Agent before the
  deny so 429s are logged with them
- Match the compare/diff cap on every repo case-insensitively instead
  of only /Richie/dotfiles
- Remove the Jellyfin health check; it never ran (server had no check
  flag) and is not wanted
2026-07-01 16:54:07 -04:00
Richie db199f884d feat(comms): add Slack to communication packages
treefmt / nix fmt (pull_request) Successful in 7s
pytest / pytest (pull_request) Successful in 31s
build_systems / build-brain (pull_request) Successful in 54s
build_systems / build-bob (pull_request) Successful in 55s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m27s
build_systems / build-jeeves (pull_request) Successful in 2m48s
treefmt / nix fmt (push) Successful in 4s
pytest / pytest (push) Successful in 24s
build_systems / build-brain (push) Successful in 28s
build_systems / build-bob (push) Successful in 30s
build_systems / build-rhapsody-in-green (push) Successful in 44s
build_systems / build-jeeves (push) Successful in 2m16s
2026-07-01 12:14:23 -04:00
Richie c6645eb37c feat(home-assistant): remove status indicator configuration and related YAML file
pytest / pytest (pull_request) Successful in 25s
build_systems / build-rhapsody-in-green (pull_request) Successful in 56s
treefmt / nix fmt (pull_request) Successful in 5s
build_systems / build-brain (pull_request) Successful in 43s
build_systems / build-bob (pull_request) Successful in 44s
build_systems / build-jeeves (pull_request) Successful in 2m25s
treefmt / nix fmt (push) Successful in 4s
pytest / pytest (push) Successful in 24s
build_systems / build-brain (push) Successful in 30s
build_systems / build-bob (push) Successful in 32s
build_systems / build-rhapsody-in-green (push) Successful in 44s
build_systems / build-jeeves (push) Successful in 2m11s
2026-07-01 00:21:05 -04:00
Richie 3984081753 feat(cleanup): remove leviathan and elise configurations and references
treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 25s
build_systems / build-brain (pull_request) Successful in 47s
build_systems / build-bob (pull_request) Successful in 49s
build_systems / build-rhapsody-in-green (pull_request) Successful in 56s
build_systems / build-jeeves (pull_request) Successful in 2m27s
build_systems / build-rhapsody-in-green (push) Successful in 12s
pytest / pytest (push) Successful in 25s
build_systems / build-bob (push) Successful in 32s
build_systems / build-jeeves (push) Successful in 2m11s
treefmt / nix fmt (push) Successful in 5s
build_systems / build-brain (push) Successful in 28s
2026-06-29 16:24:21 -04:00
Richie 03f610feed feat(ui): refactor HTML templates for consistent structure and improved styling
treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 37s
build_systems / build-leviathan (pull_request) Successful in 1m20s
build_systems / build-jeeves (pull_request) Successful in 2m57s
build_systems / build-brain (pull_request) Successful in 3m3s
build_systems / build-rhapsody-in-green (pull_request) Successful in 3m25s
build_systems / build-bob (pull_request) Successful in 32m7s
treefmt / nix fmt (push) Successful in 5s
pytest / pytest (push) Successful in 26s
build_systems / build-brain (push) Successful in 31s
build_systems / build-bob (push) Successful in 34s
build_systems / build-leviathan (push) Successful in 41s
build_systems / build-rhapsody-in-green (push) Successful in 46s
build_systems / build-jeeves (push) Successful in 2m10s
2026-06-29 10:23:13 -04:00
Richie 8804a8df83 added rate limits
build_systems / build-brain (pull_request) Successful in 51s
build_systems / build-leviathan (pull_request) Successful in 58s
pytest / pytest (pull_request) Successful in 26s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m3s
treefmt / nix fmt (pull_request) Successful in 5s
build_systems / build-jeeves (pull_request) Successful in 2m32s
build_systems / build-bob (pull_request) Failing after 13m10s
treefmt / nix fmt (push) Successful in 4s
pytest / pytest (push) Failing after 17m2s
build_systems / build-rhapsody-in-green (push) Failing after 17m2s
build_systems / build-leviathan (push) Failing after 17m2s
build_systems / build-jeeves (push) Failing after 17m2s
build_systems / build-brain (push) Failing after 17m2s
build_systems / build-bob (push) Failing after 17m2s
2026-06-27 23:01:03 -04:00
Richie 8daac4d98b feat(grafana): add HAProxy requests dashboard and Richie Postgres datasource
Visualize the ingested HAProxy request logs in Grafana.

- add a `richie-postgres` datasource connecting to the Richie DB over the
  local Unix socket (/run/postgresql; pg_hba trust for user richie)
- order grafana after postgresql.service
- add the "HAProxy Requests" dashboard: request rate by backend, response
  -time percentiles (p50-p99), top user-agents/IPs/endpoints, status mix
2026-06-27 23:01:03 -04:00
Richie 7606ddc514 feat(haproxy-logs): ingest HAProxy request logs into Richie DB
Add a pipeline to load HAProxy `option httplog` lines into the Richie
database so bot/crawler traffic can be analyzed.

- model: HaproxyRequest mirroring the httplog format, with a unique
  line_hash dedup key and indexes on common filter columns
- migration: create the haproxy_request table (unique line_hash + indexes)
- haproxy_logs package:
  - parser: httplog line -> columns, strips the journald prefix and
    hashes the normalized line
  - ingest: batched, idempotent insert that skips rows whose line_hash
    already exists, so re-ingesting the same logs is a no-op
  - cli: ingest-only `haproxy-logs` command reading stdin or a file
- tests: parsing of a real GPTBot line and idempotent re-ingestion
2026-06-27 23:01:03 -04:00
Richie 137bd8ed2f adding robots.txt 2026-06-27 23:01:03 -04:00
Richie f936253ad5 flake update
treefmt / nix fmt (pull_request) Successful in 6s
pytest / pytest (pull_request) Successful in 25s
build_systems / build-bob (pull_request) Successful in 34s
build_systems / build-leviathan (pull_request) Successful in 40s
build_systems / build-rhapsody-in-green (pull_request) Successful in 44s
build_systems / build-brain (pull_request) Successful in 26s
build_systems / build-jeeves (pull_request) Successful in 2m9s
treefmt / nix fmt (push) Successful in 4s
build_systems / build-leviathan (push) Successful in 11s
pytest / pytest (push) Successful in 24s
build_systems / build-rhapsody-in-green (push) Successful in 42s
build_systems / build-bob (push) Successful in 1m14s
build_systems / build-jeeves (push) Successful in 2m17s
build_systems / build-brain (push) Failing after 11m1s
2026-06-22 11:31:47 -04:00
Richie fc01fb9d0b Merge branch 'main' into feature/book-search-engine
pytest / pytest (pull_request) Successful in 27s
build_systems / build-brain (pull_request) Successful in 44s
build_systems / build-bob (pull_request) Successful in 45s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m2s
build_systems / build-leviathan (pull_request) Successful in 59s
build_systems / build-jeeves (pull_request) Successful in 2m26s
treefmt / nix fmt (pull_request) Failing after 10m20s
treefmt / nix fmt (push) Successful in 7s
pytest / pytest (push) Successful in 40s
build_systems / build-brain (push) Successful in 51s
build_systems / build-bob (push) Successful in 53s
build_systems / build-leviathan (push) Successful in 1m5s
build_systems / build-rhapsody-in-green (push) Successful in 1m8s
build_systems / build-jeeves (push) Successful in 2m49s
2026-06-21 15:04:43 -04:00
Richie 09d963ba34 fix(ebook-search): skip comment lines in gold query loader and realign tests
treefmt / nix fmt (pull_request) Successful in 10s
pytest / pytest (pull_request) Successful in 31s
build_systems / build-brain (pull_request) Successful in 52s
build_systems / build-bob (pull_request) Successful in 52s
build_systems / build-jeeves (pull_request) Successful in 2m43s
build_systems / build-leviathan (pull_request) Successful in 59s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m5s
load_gold_queries now skips blank and `//` comment lines so the committed
section separator in queries.jsonl no longer breaks dataset/load-test loading.

Update tests left stale by the search refactor (6bc3011):
- pass the now-required rank_constant to reciprocal_rank_fusion
- expect bm25_candidates to receive the full query and drop the removed
  "BM25 query preparation" timing step
- assert reranking is enabled by default
2026-06-21 14:45:31 -04:00
Richie 855af0fdff updating 10-Primary to enp97s0f1
treefmt / nix fmt (pull_request) Failing after 10m38s
build_systems / build-leviathan (pull_request) Failing after 10m39s
build_systems / build-jeeves (pull_request) Failing after 10m39s
build_systems / build-brain (pull_request) Failing after 10m39s
build_systems / build-bob (pull_request) Failing after 10m39s
pytest / pytest (pull_request) Successful in 32s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m7s
build_systems / build-bob (push) Successful in 41s
build_systems / build-brain (push) Successful in 41s
build_systems / build-leviathan (push) Successful in 53s
build_systems / build-jeeves (push) Successful in 2m20s
treefmt / nix fmt (push) Failing after 11m53s
pytest / pytest (push) Failing after 11m53s
build_systems / build-rhapsody-in-green (push) Failing after 11m54s
2026-06-21 14:25:02 -04:00
Richie fcb69cc68b adding words to spell check
build_systems / build-leviathan (pull_request) Successful in 1m6s
build_systems / build-rhapsody-in-green (pull_request) Successful in 59s
pytest / pytest (pull_request) Failing after 24s
build_systems / build-bob (pull_request) Successful in 40s
build_systems / build-brain (pull_request) Successful in 43s
build_systems / build-jeeves (pull_request) Successful in 2m22s
treefmt / nix fmt (pull_request) Failing after 2h0m25s
2026-06-18 12:55:46 -04:00
Richie 6bc30115d9 fix(ebook-search): code clean up to impove reliablty and readabilty 2026-06-18 12:45:56 -04:00
Richie 6ae1ff1f5c feat(ebook-search): add load-test CLI for the search service
Add a Typer CLI script that drives POST /search on a running server at a
configurable concurrency and reports latency percentiles (p50/p90/p95/p99),
throughput, and HTTP status distribution. Queries are drawn from the shared
eval JSONL set so load testing and evaluation exercise the same questions.
2026-06-18 12:39:55 -04:00
Richie dbc6b5b53b test(ebook-search): organize tests under dedicated package
Move ebook search tests into tests/ebook_search and standardize mocking on pytest-mock.
2026-06-16 21:47:40 -04:00
Richie a9daa60c17 moved TC001 expetop out of pyproject.toml 2026-06-16 18:31:40 -04:00
Richie 241a42b20d updated front end
treefmt / nix fmt (pull_request) Failing after 6s
pytest / pytest (pull_request) Failing after 52s
build_systems / build-brain (pull_request) Successful in 1m11s
build_systems / build-bob (pull_request) Successful in 1m13s
build_systems / build-leviathan (pull_request) Successful in 1m46s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m48s
build_systems / build-jeeves (pull_request) Successful in 3m46s
2026-06-16 00:00:13 -04:00
Richie 4640ebf8ce converted addmin.py and page.py to DbSession and AppConfig 2026-06-15 22:01:42 -04:00
Richie 0c9583c1cc moved config = load_config() to lifespan 2026-06-15 21:59:51 -04:00
Richie f71ae7d2c6 added guardrails.py to constrain responses and added validation to config.py 2026-06-15 21:57:38 -04:00
Richie 2e68c83021 added health endpoints 2026-06-15 21:21:01 -04:00
Richie b126987b63 added AppConfig and AppEngine 2026-06-15 21:08:55 -04:00
Richie 68b3a38b81 converting to pydantic-settings 2026-06-14 21:29:45 -04:00
Richie a5d7c3be4f fixed fomat issue
treefmt / nix fmt (pull_request) Successful in 5s
pytest / pytest (pull_request) Successful in 28s
build_systems / build-brain (pull_request) Successful in 46s
build_systems / build-bob (pull_request) Successful in 47s
build_systems / build-leviathan (pull_request) Successful in 53s
build_systems / build-rhapsody-in-green (pull_request) Successful in 59s
build_systems / build-jeeves (pull_request) Successful in 2m32s
2026-06-14 15:42:05 -04:00
Richie 2995a75748 fixed test
treefmt / nix fmt (pull_request) Failing after 5s
pytest / pytest (pull_request) Successful in 28s
build_systems / build-bob (pull_request) Successful in 48s
build_systems / build-brain (pull_request) Successful in 53s
build_systems / build-leviathan (pull_request) Successful in 54s
build_systems / build-rhapsody-in-green (pull_request) Successful in 1m1s
build_systems / build-jeeves (pull_request) Successful in 2m43s
2026-06-14 15:41:09 -04:00
Richie dce1838163 opning ports for testing 2026-06-14 15:41:09 -04:00
Richie 121eb979a4 added a index for the VEctor DB 2026-06-14 15:41:09 -04:00
Richie c88315e9b6 improved BM25 write 2026-06-14 15:41:09 -04:00
Richie 50795ab7fc added ZstdMiddleware to ebook_search 2026-06-14 15:41:09 -04:00
Richie e9a80a0308 added vector_engine to fix name postgres name space issue 2026-06-14 15:41:09 -04:00
Richie eb76edb740 reworked ebook_search routers 2026-06-14 15:41:09 -04:00
Richie c53afb3c70 made fastapi tools 2026-06-14 15:41:09 -04:00
Richie 8301db39e5 added proper cache invalidation to load_bm25_corpus 2026-06-14 15:40:31 -04:00
Richie 45a9e90524 updated tests 2026-06-14 15:40:31 -04:00
Richie dd67de3993 improved reranking weights 2026-06-14 15:40:31 -04:00
Richie 6e3635ca01 fixed duplicat enrichment 2026-06-14 15:40:31 -04:00
Richie 11cbe31152 improved queary for vector search 2026-06-14 15:40:31 -04:00
Richie 5544dfa61c add .ebook_search_bm25 to gitignore 2026-06-14 15:40:31 -04:00
Richie 911df63513 updated python 2026-06-14 15:40:31 -04:00
Richie 07eb170b34 setup tests 2026-06-14 15:40:04 -04:00
Richie 6715bbf0a5 build api and frountend 2026-06-14 15:40:04 -04:00
Richie 26ff1f0fd3 added answer.py and config 2026-06-14 15:40:04 -04:00
Richie 666ea97754 added __init__ 2026-06-14 15:40:04 -04:00