LearnNewsExamplesServices
Frontmatter
id17621
titleLand devindex tenant AC receipts on the local deployment
stateClosed
labels
enhancementaiagent-os
assignees[]
createdAtAug 23, 2026, 6:18 PM
updatedAtAug 24, 2026, 2:58 AM
githubUrlhttps://github.com/neomjs/neo/issues/17621
authorneo-preview
commentsCount4
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 24, 2026, 2:58 AM

Land devindex tenant AC receipts on the local deployment

Closed Backlog/active-chunk-18 enhancementaiagent-os
neo-preview
neo-preview commented on Aug 23, 2026, 6:18 PM

Context

The #17377 config PR (devindex as pull-mode tenant) carries a one-entry change to ai/deploy/kb-config.yaml. Its five ACs are live-deployment receipts: they require a sync cycle on the containerized plane, not a sandbox. This ticket owns landing those receipts after that PR merges.

The Problem

The running orchestrator reads kb-config.yaml through a read-only bind mount sourced from the deploy home checkout — not the repo tree a PR changes. The compose project neo-local-agent-os currently runs from /Users/Shared/clio/neomjs/neo/ai/deploy (verified via docker ps labels, 2026-08-23). The deploy home is a seat checkout (Clio, dark until the Fri 08:00 reset); no seat may edit another seat's tree, so the mount source cannot be updated from the author seat. Until the deploy home carries the merged config and the config-consuming containers are recreated to adopt it, the devindex entry does not exist on the plane.

The Architectural Reality

  • docker-compose.local-agent-os.yml mounts the file read-only into both kb-server and the orchestrator; the orchestrator mount is load-bearing (silent tier-3 fallback without it).
  • Precedent: the Aug-1 activation on the #16278 lane used exactly this sequence — deploy-home fast-forward, then --no-deps recreate of kb-server + orchestrator, chroma/MC untouched — with receipts captured from orchestrator logs.
  • Sync cadence: per-repo due times ride the sweep cadence; the first whole-tree ingest of devindex (~112 tracked files) is the heavy pass; [TenantRepoSync] receipts are durable in orchestrator logs.

The Fix

Ordered, after the #17377 config PR merges:

  1. Deploy home fast-forwards to origin/dev (preserving local state, per the Aug-1 precedent).
  2. Recreate kb-server + orchestrator only (--no-deps); chroma and mc untouched.
  3. After one sweep cycle: capture the neo-shared/devindex bootstrap-seeding + cycle-summary lines from orchestrator logs (AC-1).
  4. Query receipts for AC-2..AC-5 (the remote data dir is already gone — verified 404 at claim time — so AC-2 is now a control that can fail for the right reason).
  5. Post receipts to #17377; close both tickets.

Steps 1-2 touch the deploy home: owner is the deployment operators (@neo-gpt-emmy coordinates, @tobiu host-level) or the owning seat after return. The author seat (@neo-preview) claims receipt collection (steps 3-5) once the plane carries the entry.

Acceptance Criteria

  • AC-1: orchestrator log shows neo-shared/devindex bootstrap-seeded and lastIngestedRev non-null after a cycle.
  • AC-2: no chunk sourced from apps/devindex/resources/data/** exists in the store (query a contributor-corpus-only value → empty).
  • AC-3: a devindex-guide-only semantic query returns a chunk sourced from this tenant's learn/**, not the neo corpus.
  • AC-4: the three pre-existing tenants keep their checkpoints and independent backoff across the cycle that ingests devindex.
  • AC-5: ingested chunks stamp {tenantId: neo-shared, repoSlug: devindex}.

Out of Scope

  • The config change itself (the #17377 PR).
  • neo-as-tenant completion (the #16278 lane) and the per-tenant sources/parsers gate named in the kb-config.yaml header comment.
  • Sync cadence or mirror-root default changes.

Avoided Traps

  • Editing the deploy home from the author seat. Another seat's tree is not mine to mutate; the recreate sequence exists so mounts are adopted atomically rather than hand-synced.
  • Declaring AC-2 verified before the plane ingests. Inherited from #17377 verbatim: a control that cannot fail for the right reason proves nothing.
  • Recreating chroma/mc alongside. Unnecessary blast radius; the Aug-1 precedent scoped recreation to the two config-consuming services.

Related

Residual owner for the #17377 PR's Evidence line (L3 receipts). Structural: #17377, #17375 (closed; made whole-tree safe by construction), #16278 (neo-as-tenant lane; recreate-sequence precedent).

Retrieval Hint: query_raw_memories("devindex tenant pull-mode kb-config recreate kb-server orchestrator deploy home") · config commit 7cb870adcc

Live latest-open sweep: checked the latest 20 open issues at 2026-08-23T16:20Z; no equivalent ticket. A2A in-flight claim sweep (all read-states, ~2h window): no competing claim on this scope.

Origin Session ID: d83b1bf5-54d5-4cd8-8b62-a462e453bf45