master · 144 commits · no remote

Every commit

Newest first. The sentences are the commit subjects, unedited.

4aa653e Add Aegis keyboards for the laptop and the Tank.

de2ada4 Follow the Tank gateway that is the default route.

661fb3f mobile: 0.1.19

93f88a2 curiosity engine: hands-free discovery, direct ingestion and checked questions

b07ba2a mobile: 0.1.18

bd00425 docs: BUGS entries for the 2 Oct health audit fixes; HANDOFF hardware line, APK path, session notes

0987d3c mobile: saves made while Shield of Zeus is handing back are held until the data is the app's; stores write their .tmp inside their lock; sports files in the hand-back check; tests left out of the APK

340234d laptop: the backend answers only its own pages (CORS limited to its origins, foreign browser requests refused, terminal socket checks Origin)

5cdd9e7 laptop: every Ollama model load checks the Local AI setting and free RAM first (boot warm-up, query expansion, /teach, tutorials, trainer, verifier, benchmark)

a38d3d5 mobile: Go deeper keeps the tutorial's sense (build context and article qualifier); a rebuild on another article drops the old levels

c49a605 mobile: tutorial accuracy (how-to object, subject context, on-topic Stack Exchange, no game sites) and Tank log fixes (per-process .tmp saves, harvest context, how much / distance between)

e0d8b8c mobile: web requests keep their deadline (one connect budget across all of a host's addresses, reads bounded too)

bb160e1 local first: the phone checks its offline library before the web (except fast-changing intents); the laptop skips web expansion for short questions its hits answer

075f7d2 phrases: one catalogue of carrier wordings for the phone and the laptop; phone finds records narrowed by a clause (the first satellite put in orbit)

1d46909 mobile: style change reopens the app (restart notice instead of a blocked alarm), service class looked up on the main thread

558ed50 mobile: tutorial trainer and facts, expandable tutorials, voice pause/resume/stop, storage usage, background Shield of Zeus service, selectable styles with restart-to-apply and real boot progress (0.1.17)

7541015 mobile/design/themes: HTML mockups for the six selectable styles (reference only, not packaged)

88e0d2c laptop: AI keep-alive setting, corrections and synthesis updates, extractive year fix with tests, handoff.sh state report

503071e mobile: accurate web ingestion, answer-source notice, Artemis voice, companies/sports, auto-train (0.1.12)

1aa11e5 docs: HANDOFF section 16 (transfer folder), entry points, endpoints, session notes; BUGS entry

9174693 aegis-update/rollback.sh: stop only the backend running from the target install

ea32f3f aegis-update (sync an old install from the bundle, backup + rollback), aegis-transfer (hand-carried update folder), transfer/START-HERE.md; ignore .env

9da2fe3 aegis-share --out DIR --no-serve (unpacked export, text-column secret scan); aegis-import reads a local folder; secret_scan.py

7f7f214 aegis-share / aegis-import: LAN knowledge transfer. Parquet+manifest export (read-only DB or the backend's shared cursor via POST /system/knowledge/export), token-protected one-shot LAN server; importer verifies sha256, builds a fresh DuckDB, applies schema, rebuilds FTS via local_search, checks row counts, backs up data/ and prints rollback

ffd5562 aegis-check: stdlib requirements detector with install commands, --fix/--json; quick check in ./aegis; GET /system/requirements and Requirements card on Handshake System tab; system/ copies of the Kokoro unit and speak; requirements-kokoro.txt pins

4ee018f Aegis Mobile: make-spec-html.py, a self-contained build page for building the APK on another machine

9269883 Aegis Mobile: standalone offline Android app for the Tank 3 Pro

802251d handshake: page with AI handoff bundle, live query/trainer tests, storage inventory, settings and mic permissions; launcher button; AI memory gate 1600 MB

f4fa363 handoff: full HANDOFF.md, AI_PROMPT.md, read-only redacted ./aegis-handoff bundle

7a1adb6 baseline: voice, Artemis, desktop, natural answers (state as of 2026-09-25)

35002e1 archive: move one-off diagnostic scripts out of active tree

6e21db5 HANDOFF: session close, next-session starting point

2f64532 BUGS.md: log extract-table gap and hedge-word scoring gap

eaa2b14 BUGS.md: mark table misalignment bug as fixed (2b19936)

2b19936 extractive_qa: structured table extraction for fact queries

cfc3de5 BUGS.md: mark symbol false-positive as fixed (97863b4)

d19cf87 train_batch: dedupe generated prompts

bf83694 BUGS.md: picker-alignment fix failed; needs table extraction

7cb369b BUGS.md: root-cause picker bug to number bonus in _score_sentence

340dc24 patches: proposed attribute-alignment filter for fact queries

97863b4 trainer: guard symbol fallback against multi-word subjects

aaec1b8 terminal + batch harness

425c7fe docs: log two open bugs from tonight's session

578c0d9 web_ingest: reject placeholder templates and title-entity mismatches

d899606 canonical: remove predicted values for Z>=100 and borderline

c09c82f main: invalidate response cache on commit; TTL 300s -> 60s

805330f trainer: skip LLM when reference lacks the queried property

d5074db fts: stop rebuilding on transient errors + transactional rebuild

b2688d2 trainer: remove debug print from _check_numbers

d4ccad0 trainer: reject LLM refusals as hallucinated

7e4dab4 audit: dynamic open-issues list (only show present artifacts)

e3a6946 audit: point canonical-table check at canonical/

8a0a0ce drainer: rewrite for all attrs; canonical_lookup discoverer

bba514d drainer: rewrite for all attrs; canonical moved to canonical/

bd29af3 drainer: rewrite to handle discoverer + all attrs

c245841 canonical: discoverer for all 118 elements

916e8a0 canonical: override gas densities with STP values

f6961da canonical: fill gas densities; drainer sends answer field

ded2e70 canonical: move table to canonical/ (tracked in git)

0fb1522 canonical: add density for 92 elements, extend query path

8f0bb13 trainer: narrow novel_content_words to specific-claim tokens

7051ba5 trainer: fix number validation for density/units

77801ea chore: add aegis_audit.sh — read-only system audit

f70a527 db: route all read-write connects through config.get_cursor()

e378db5 trainer: validator + fuzzy numbers + norm-index fixes

7b0b5ca main: canonical preflight before fact/correction/cache

08175f3 trainer: public canonical_lookup() for query-time use

2d9af70 trainer: canonical aliases (US/UK) + chemical symbol fallback

c8bcb89 queue: advance on blank LLM draft (the carbon case)

6cde202 canon: carbon+arsenic sublimation; accuracy test label; queue watcher

7379441 queue: auto-advance past unanswerable cards (block + skip)

dd63961 trainer: fast-lane preflight -- skip web+LLM for known facts

dc5f9aa query: refusal paths log instead of queuing unanswerable cards

5a79584 trainer: wire accuracy.py preflight into conflict detection

f6c343e accuracy: use median instead of mean for cluster consensus

c2a375b accuracy: deterministic conflict-reasoning module + tests

0ef2fc3 canon: canonical element table + UI audit + launcher fix

d2aa36f docs: record lookup-cache attempt as tried-and-reverted

6146060 trainer: write unit column on manual fact commit (was computed, discarded)

8a3723b query: nonsense gate floor 3 -> 2 tokens (build-a-house bypass)

310ab7c extract: reject narrative fragments in author matcher

fb83f97 docs: note audit tooling in handoff

a44b24d dev: filesystem + DB audit scripts (read-only)

fb9635a trainer: manual fact commits extract value from prose; skip-if-known enqueue

2556e92 dev: session tooling (ultimate test, tui, pdf ingest, scripts)

d70e9a6 soz: app theme, trainer auto-run, mind bar, queue ETA

436ec4f mind: wire trainer queue into narration; phrase override

d0557b3 extract: 10 new attributes (dates, country, author, HQ, isbn)

92e27f8 extract v2: sentence-level entities + element whitelist

42956c3 query: lookup confirmed facts before extraction

9ec71ea ingest: extract structured facts on document ingest

f464cf7 extract: regex fact extraction for the knowledge base

4e0372b facts: structured fact storage for the knowledge base

000e3a1 query: drop off-subject sentences from extraction

7d74e65 soz: queue mode — auto-advance through pending reports

2d481a5 trainer: reject candidates with novel content words

43985ef trainer: extract subject after 'for' as well as 'of'

58fa4e9 soz: style the reference conflict panel

32878e2 soz: surface reference conflicts in the trainer UI

2fa19f3 trainer: surface reference conflicts, don't auto-resolve

de3bbeb verify: reject opposite-property sources, drop tie-to-confirm

f7752ee trainer: web fallback when Wikidata's value is contradicted

b884c93 hand: fire bolt once per draft, delay hammer to 4s

5874ee1 dev: no-cache middleware for static assets

c852e7b soz: compact Mind of God bar, drop the scrolling log

463cac5 trainer: settle Mind of God to idle after draft finishes

9439135 mind: add history log + hero upgrade for Mind of God

4d7a0dd soz: defer mind-bar init until DOM ready

35e1764 soz: swap to high-quality SOZ_UI.png

743a36d soz: warm bronze palette to match SOZ_UI.jpeg background

5b535f7 local_search: serialize ingest_document() writes

12f4c6c trainer: cross-verify Wikidata facts against web search

f08af70 trainer: bolt is a flash, not a sustained state

4e82383 soz: The Mind of God — fixed bottom bar narrating backend state

d0ef0ca trainer: keyboard navigation in the training session

693aa4f ui: category chips CSS + launcher pending-report badge

6788090 trainer: never persist or display empty drafts

59cd29e reports: category column + /trainer/enqueue + Run Task wiring

7a42cf7 corrections: two-tier matching — exact + keyword overlap

5de7875 trainer: server-side draft storage

21ba776 config: default model -> qwen2.5:1.5b

bc44e82 trainer: parser truncation + relaxed overlap threshold

77f3652 query: refuse 'flurble wumpus zork' and similar

fb770a5 trainer: Wikidata integration for numeric facts

ae68c01 trainer: fixed KV cache leak, key-term check, big timer

067d7e6 trainer: Neither regenerates; add Write my own button

6786784 reports: junk never queues; dedup covers pending+in_progress

9513f61 reports: hook all remaining refusal paths

04c3ada gitignore: exclude local aegis-*.sh dev helpers

fc4fcb0 desktop: open on /launcher; archive Forge sketch

ccabb10 Shield of Zeus — Aegis Trainer UI

dc7c8f8 query: gate web+LLM fallback, add definition relevance guard

04e9395 query: gate web and LLM fallback behind config flags

4f57a77 Forge: Trainer Studio theme

c36b8d1 synthesis: keep Ollama model warm between queries

2d832c0 HANDOFF.md: ingest fix, verification harness, and follow-ups

a89b4cb Fix ingest_document() missing content_hash; add verification pass

579339c Round 5: junk-refuse at handler top, greetings blocklist, live-data exclusion in classify()

8fb38fc Query system hardening + ingest quality gate + DB cleanup tooling

ed7e696 Query system: word-problem math, LLM/ingest caps, chrome penalty, early nonsense gate

1130d89 Fix .env.example key names; ignore .gitignore.pre-handoff

76a0946 Fix .env.example key names; ignore .gitignore.pre-handoff

ce772fe Handoff prep: README, .env.example, HANDOFF.md, .gitignore, backup cleanup

6da3335 Initial commit: streaming, tutorials, branding