docs(fleettools): Albok page + index entry (draft by albok-dev, Prime's ask); albok MCP in claude-only; task-board marked mothballed

This commit is contained in:
vh
2026-10-16 19:54:34 -07:00
parent 3cb969f1d1
commit c560e37739
3 changed files with 80 additions and 7 deletions
+59
View File
@@ -0,0 +1,59 @@
# Albok — the fleet knowledgebase
**Service:** `http://albok.nh3.internal:8392` (= `10.100.50.44:8392`, albok-service on nh3-albok)
**CLI:** `albok` · **MCP (Claude Code):** `albok-mcp`, registered at user scope · **Owner:** `albok-dev` (althing)
One searchable store of what the fleet knows: every repo's `persistent-memory.md` (entries, detail
files, archives), the stash, and the library (books by chapter, papers, extracted concepts). Search
is hybrid (vector + keyword) and LLM-free.
## Access
Every nh3-dev shell carries `ALBOK_SERVICE` and `ALBOK_TOKEN` — the shared **`fleet-agents` read
token**: `fleet/*` (memory, stash) and `library/*` (fiction, nonfiction). It reads no personal wing.
A shell older than 2026-10-16 may lack them; open a new one. A handle that needs more grants asks
infra-ops for its own token.
```sh
albok status # the wings this token reads, and their states
albok search "why did we drop the reset endpoint" # --wing fleet/memory --top-k 20 --facet key=value
albok read <object_id> # pristine bytes to stdout; lineage notes on stderr
albok sidecar <object_id> # provenance: repo, file, commit, section, entry date
albok related <object_id> # links, similar, same source, shared concepts — each with its reason
```
Claude Code sessions get the same verbs as tools (`albok_search`, `albok_read`, `albok_sidecar`,
`albok_related`, `albok_status`, …). Codex and Grok use the CLI.
## Reading the answers right
- **Never threshold on score.** The null floor (~0.031) sits just under real hits (~0.033); rank, don't cut.
- **Coverage is reported, read it.** A reply lists `searched`, `locked` and `degraded` wings: an
empty result over a degraded wing is not "nothing exists". An unreachable service is an
outage, never an empty result (the client says which).
- **Hidden by default:** objects classed `adult`, `personal` or `secret` are hidden from every
reader; `--include CLASS` opts back in only where the token holds that class grant.
- **Supersession is declared, not inferred.** Every object has a permanent `uid` (in every search hit).
A read of an entry names what supersedes it (`superseded by …`); an empty lineage means "none
declared", not "current". When your new memory entry replaces an older one, end it with
`Supersedes [[<uid>]]` (the old entry's uid; a detail file may be named by its stem) and leave
the old entry as written.
## Writing into it (nobody writes to the service directly)
Nemi, albok's ingester, walks every source hourly on nh3-dev (a user timer, a few minutes past the hour):
| You want to add | Do this |
|---|---|
| a decision, lesson or state for a repo | write it in that repo's `persistent-memory.md` under `~/development/` (Nemi reads the file on disk; commit it as usual) |
| raw material (a transcript, an article) | `/stash` (Claude) or a file in `~/stash/` with its frontmatter |
| a note for the operator's personal inbox (a personal wing: the fleet token cannot read it back) | a markdown file in `/srv/nemi/inbox/` |
| a book | `scp book.epub lkraven@nh3-dev:/srv/nemi/books/fiction/` (or `nonfiction/`): validated, then shelved into `~/library/` and ingested the same hour, or moved to `rejected/` beside a reason file (`not_epub`, `drm`, `duplicate`, …); `LOG` records every decision |
## When to reach for it
Before you decide something, check whether it was already decided, tried or measured, in this repo
or any other. Before you research a game-design, cognition or fiction question, check the library.
*Detail:* `~/development/albok/README.md`, `packages/albok-client/README.md` (CLI and MCP),
`packages/albok-nemi/README.md` (sources, the book drop). Health: `scripts/albok-check` in that repo.