Skip to content

Commit 10dff5a

Browse files
rajivpantclaude
andcommitted
Phase 5 deployment hygiene — Dockerfile, demo discovery, first 3 screenshots
Substrate fixes surfaced by actually deploying the v3.4 stack in demo mode for screenshot capture. None of the Phase 5 sub-agents ran the deployment; these are real release-prep gaps the test suite + npm audit didn't catch. - Dockerfile: COPY VERSION (was missing — /health reported 0.0.0) + COPY demo/ (was missing — demo mode had no content to discover). - docker-compose.yml: pass RAGBOT_DEMO + RAGBOT_SCHEDULER from host env into the api container so `RAGBOT_DEMO=1 docker compose up -d` actually enables demo mode (was previously a no-op). - web/Dockerfile: bumped node:20-alpine → node:22-alpine + installs npm@11 explicitly. The lockfile generated by the host's npm 11.6 (Agent B's Dependabot pin-bumps) couldn't be validated by the container's bundled npm 10.8 — `Missing: @emnapi/...` errors. - src/ragbot/_demo_registration.py: demo skill-roots filter no longer excludes the bundled starter pack. The original filter was over-aggressive: it isolated USER skills correctly but also hid the six universal starter-pack skills that ship with v3.4. Fixed filter returns [starter_pack_root, demo/skills/] so demo evaluators see the realistic skill surface a new install presents. - docs/screenshots/keyboard-shortcuts-overlay.png + mcp-settings.png + skills-panel.png: real 1440x900 captures via Playwright against the v3.4.0 demo deployment. Replace the 1x1 placeholder PNGs Agent C staged. The remaining 4 captures are still in flight (one of them surfaced a real policy-API bug being fixed next). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 4b593ba commit 10dff5a

8 files changed

Lines changed: 90 additions & 29 deletions

File tree

Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ COPY --from=dependencies /usr/local/bin /usr/local/bin
2626

2727
COPY src/ ./src/
2828
COPY engines.yaml .
29+
COPY VERSION .
2930
COPY ragbot ragbot_api ./
31+
# Bundled demo workspace + demo skill pack used by RAGBOT_DEMO=1.
32+
# Discovery short-circuits to this content when demo mode is active.
33+
COPY demo/ ./demo/
3034

3135
RUN chmod +x ragbot ragbot_api
3236

docker-compose.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,16 @@ services:
4444
# Windows) and recent Docker Engine on Linux. Override if Ollama runs
4545
# elsewhere (e.g., a LAN-shared inference server).
4646
OLLAMA_API_BASE: ${OLLAMA_API_BASE:-http://host.docker.internal:11434}
47+
# Demo mode: when set to 1, discovery hard-isolates to the bundled
48+
# demo/ workspace and the demo skill pack so screenshots, docs, and
49+
# cold-start evaluations all run against the same content. Default
50+
# is unset (production behaviour). Passed through from the host
51+
# env (`RAGBOT_DEMO=1 docker compose up -d`).
52+
RAGBOT_DEMO: ${RAGBOT_DEMO:-}
53+
# Opt-in scheduler (Phase 4 + 5). When set to 1, the lifespan
54+
# handler starts the synthesis_engine.tasks.SchedulerLoop so
55+
# cron-style routines (memory.consolidate_recent_idle, etc.) fire.
56+
RAGBOT_SCHEDULER: ${RAGBOT_SCHEDULER:-}
4757
volumes:
4858
# Persistent session storage
4959
- ragbot-sessions:/root/.local/share/ragbot/sessions
113 KB
Loading

docs/screenshots/mcp-settings.png

110 KB
Loading

docs/screenshots/skills-panel.png

189 KB
Loading

src/ragbot/_demo_registration.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,32 @@ def _workspaces_filter() -> Optional[Dict[str, str]]:
5656

5757

5858
def _skill_roots_filter() -> Optional[List[str]]:
59-
"""Return only the bundled demo skills root when demo mode is active.
59+
"""Return the bundled-skill roots when demo mode is active.
6060
6161
Returning ``None`` signals "no override; let the substrate scan the
6262
normal skill-root chain."
63+
64+
Demo mode isolates USER-installed skills (workspace-scoped collections,
65+
operator's private skill repo, plugin-installed skills) from the
66+
evaluator's view so the demo shows a known-clean state. The bundled
67+
starter pack — the universal-scope skills that ship with the substrate
68+
out of the box — is INCLUDED in demo mode because it is part of "what
69+
Ragbot v3.4 ships with," not part of the operator's content. Pairing
70+
the starter pack with the demo's own ``demo/skills/`` directory gives
71+
evaluators a realistic view of the skill surface a new user sees.
6372
"""
6473
if not is_demo_mode():
6574
return None
75+
# Lazy import keeps the demo-registration module's import surface
76+
# narrow (ragbot/_demo_registration → synthesis_engine.skills imports
77+
# would otherwise cycle through ragbot's __init__).
78+
from synthesis_engine.skills.starter_pack import starter_pack_root
79+
80+
roots: List[str] = [starter_pack_root()]
6681
path = demo_skills_path()
67-
return [str(path)] if path is not None else []
82+
if path is not None:
83+
roots.append(str(path))
84+
return roots
6885

6986

7087
set_discovery_filter(SCOPE_WORKSPACES, _workspaces_filter)

web/Dockerfile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
FROM node:20-alpine AS base
1+
FROM node:22-alpine AS base
2+
3+
# Match the host's npm major. The lockfile that ships with v3.4 was
4+
# generated by npm 11.x (Phase 5 Agent B's Dependabot triage produced
5+
# the npm overrides that require the newer lockfile schema). The Node
6+
# 22 base ships with npm 10.9; we bump to npm 11 explicitly so `npm ci`
7+
# can validate the lockfile reproducibly.
8+
RUN npm install -g npm@11
29

310
# Install dependencies only when needed
411
FROM base AS deps

web/package-lock.json

Lines changed: 49 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)