5mdeh4j3mlce8tr8e4of86lofenkkaj9 · 19 rows
| key | value |
|---|---|
| auto_compact_enabled | false |
| compact_batch_size | 50 |
| compact_parallel_workers | 5 |
| compact_tier1_days | 30 |
| compact_tier1_dep_levels | 2 |
| compact_tier2_commits | 100 |
| compact_tier2_days | 90 |
| compact_tier2_dep_levels | 5 |
| compaction_enabled | false |
| issue_prefix | ah |
| kv.memory.agents-dev-agent-hub-this-dev-env-has | agents-dev/agent-hub: this dev env has GOFLAGS=-mod=mod, so ANY go build/vet/test run appends module-graph hashes to go.sum as an unstaged change. Not a real dep change — restore with git checkout -- go.sum and run agents/validators with explicit GOFLAGS=-mod=readonly (tree is verified green under readonly). Never commit a dirty go.sum without a bead approving a dep change. |
| kv.memory.agents-dev-beads-dolt-sync | agents-dev beads/Dolt sync (set 2026-07-20): bd auto-push targets the remote named 'origin' ONLY — adding a second named remote does NOT auto-push. To sync to the Dolt server, REPOINT origin: 'bd dolt remote remove origin && bd dolt remote add origin https://dolt.srht.bigb.es/~bigbes/agents-dev' (the old git+ssh git.srht.bigb.es URL is a GIT remote, not a Dolt one — they are different servers). Then 'bd config set dolt.auto-push true'; it debounces ~5 min (keys dolt.auto-push-interval / -timeout), so 'bd dolt push' to flush immediately. Auth: this mac already has an associated dolt credential ('dolt creds ls', user.creds in global dolt config), so no DOLT_REMOTE_PASSWORD meta token is needed — a plain push just works. Verify a push landed: cd .beads/embeddeddolt/ah && compare 'dolt log --oneline main -n 1' to 'dolt log --oneline remotes/origin/main -n 1', or query "select ... from issues as of 'remotes/origin/main'". Note there is NO .beads/issues.jsonl in this repo (export.auto=false) — the Dolt DB is the only store, so never look for the JSONL to check state. Branch is 'main'. See also the milestone convention memory. |
| kv.memory.agents-dev-ci-deploy-lane | agents-dev CI deploy lane NOW EXISTS (built 2026-07-18, was previously aspirational). .build.yml at repo root: Arch image, builds all 3 cmds (agenthubd/ahub/ahub-run), tar-overlays bin+prompts+skills to deploy@agent-1.lab.internal:/opt/agent-hub, then sudo systemctl restart agenthubd. Only refs/heads/master auto-deploys (submitter.allow-refs). Proven build #226 SUCCESS. Deploy cred: NEW ed25519 key 'agent1-deploy' registered as builds.sr.ht SSH secret UUID cc6bd011-aa6b-4c8c-b4ef-7234c1e2007d; .pub in deploy@agent-1 authorized_keys AND phoebe-lab/agent-hub/keys/agent1-deploy.pub (old private half was lost). Build VM reaches agent-1.lab.internal:22 by name via SLIRP split-horizon DNS, no hacks (probes #222/#223). hut CANNOT create build secrets (list/share only) — use web UI/GraphQL. /etc/agent-hub/agenthub.yaml is NOT CI-managed (bootstrap never overwrites); hand-edit on box. |
| kv.memory.agents-dev-milestone-release-convention | agents-dev/agent-hub milestone convention (set 2026-07-20): milestones are RELEASES, expressed as 'milestone:vX.Y.Z' labels — that is the only thing the Dolt web UI Milestones tab reads (it groups by milestone:<name>; epics/parent-child hierarchy is invisible to it). Lifecycle rule: a milestone is OPEN until its version is released, then it is CLOSED and FROZEN — you never add work to a released milestone. Any bug found after v0.X is tagged goes into the next NON-CLOSED milestone, never back into the shipped one. So each release is a finished state as of its tag. Epics (ah-1cx hardening, ah-efe docs, ah-oeq Stage 5) are thematic and CROSS-CUT milestones: label individual issues, not just the epic (e.g. ah-oeq.1 in v0.2.0 while parent ah-oeq is v1.0.0). Do NOT retrospectively label closed historical epics — the tab is forward-looking release scope. Context: repo has zero git tags and the daemon hardcodes version='dev' (ah-1qq), so nothing has been released yet and v0.1.0 is the first open milestone. |
| kv.memory.agents-dev-notifications-operator-runs-prism-phoebe-lab | agents-dev notifications: operator runs Prism (phoebe-lab/prism) — ntfy-compatible gateway at https://prism.bigb.es/{topic}, bearer key PRISM_API_KEY in the stack .env, delivers to Telegram and owns TG proxy egress itself (patched Telego + lab singbox SOCKS5). agents-dev publishes to it via internal/ntfy (plain lab-local HTTPS, inside NO_PROXY) — the direct internal/telegram path and VM-local-singbox concern are no longer needed for the daemon. |
| kv.memory.beads-storage-api-enumeration | beads v1.1.2 Storage API enumeration semantics, measured 2026-08-05 (ah-wd4.1 spike, agents-dev): SearchIssues(ctx, "", IssueFilter{}) is an HONEST FULL enumeration — Limit is a plain int gated on >0, so the zero value emits no LIMIT clause at all; verified exact at 87, 700 and 2500 issues with no default page size. It returns EVERY status incl. closed/deferred: the hiding of closed/pinned/done/frozen is entirely CLI-side (cmd/bd/list_filter.go). FOUR TRAPS: (1) IssueFilter.Offset is DEAD on the embedded-Dolt read path — zero uses in issueops/sqlbuild, Offset:5 and :10 both return page 0, so a Limit+Offset pager loops forever; (2) with Limit>0 the limit is applied PER TABLE (issues, wisps) then merged, so Limit:100 can return 140; (3) Statistics.TotalIssues is COUNT(*) FROM issues ONLY and excludes the wisps merge, so len(list)==TotalIssues is a WRONG completeness assertion that passes today only because our wisps table is empty — use Storage.CountIssues, which mirrors the merge semantics (parity verified across 15 filter shapes); (4) a cross-table duplicate ID makes CountIssues exceed SearchIssues by the dup count, and count.go's comment claiming SearchIssues 'errors loudly' on that is STALE — search.go silently prefers the wisp record. RunInTransaction CANNOT wrap count+list: Transaction exposes no count primitive, and embedded Dolt's process-exclusive lock makes store-level calls from inside the callback fail with 'the database is locked by another dolt process'. Don't set SkipWisps by default — NoHistory beads live in wisps with ephemeral=0. Building against the beads module needs CGO_ENABLED=1 AND ICU headers (go-icu-regex wants unicode/regex.h; on this mac /opt/homebrew/opt/icu4c@77). |
| kv.memory.mem0-stack-phoebe-config-is-env-only-never | mem0 stack (phoebe): config is ENV-ONLY — never use POST /configure or dashboard config editor. GET /configure REDACTS secrets, so round-tripping it corrupts the stored pgvector password (broke prod 2026-07-18; fixed by deleting mem0_app.settings row key=config_overrides + docker restart mem0-mem0-api-1; row backup at phoebe:/root/mem0-settings-backup.sql). Correct model names need LiteLLM route prefixes: deepseek/deepseek-v4-flash, nvidia/nemotron-embed-1b-v2 (1536-dim, pinned — swapping embedder invalidates all stored vectors). |
| kv.memory.pi-event-stream-shape | pi --mode json event shape, re-verified live on pi 0.82.1 (2026-08-05, was pinned to 0.70.2 captures): UNCHANGED where agent-hub reads it. First line is {"type":"session","version":3,"id":"<uuid>"}. Assistant 'message_end' carries message.usage.cost.total, message.stopReason and — on a failed turn — message.errorMessage. turn_end and agent_end REPEAT the same per-message usage (never sum them). 0.82.1 adds a new 'agent_settled' event the parser ignores harmlessly. cost.total is PER-MESSAGE, not cumulative — PROVEN by arithmetic on a real two-assistant-message deepseek-v4-flash run: one unit rate explains both messages independently (input $0.14/Mtok, output $0.28/Mtok, cacheRead $0.0028/Mtok), so message 2's cost contains no part of message 1. Summation in ParseEvents is therefore correct (settles the old F9/TODO(ah-nyl.11) question). A provider-rejected call gives stopReason 'error' + all-zero usage and pi still EXITS 0 — that is ah-tqc. Local mac has pi 0.82.1 at ~/.local/bin/pi with working deepseek/nvidia/opencode providers, so event-shape questions can be answered with a real cheap capture instead of guessing. |
| kv.memory.yonote-live-api-bigbes-yonote-ru-1-47 | Yonote live API (bigbes.yonote.ru 1.47.1, verified 2026-07-19): comments generate NO audit events (events.list has only documents.*/revisions.create/collections.create kinds) and the events.list 'name' filter is silently ignored — any comment-driven feature must sweep comments.list per doc (documents.list per collection), not read events. events.list default order is newest-first, offset pages into the past. The agent-hub Q&A loop (ah-ptu) uses the sweep design for exactly this reason; do not 'optimize' it back to events.list. Also: comments.create takes entityType:'document'+entityId (not documentId), and comments.resolve is a set-state toggle REQUIRING isResolved:true in the body — bare {id} 400s invalid_type (fixed in agents-dev 2720611). |