The root README.md used to contain all technical and operational documentation (1 322 lines). It is
now a product landing page, and its content has moved into this knowledge base. This map lists every
heading of the former README and where its content lives now, so that preservation can be verified.
The former README is available in Git history (for example git show d4885af:README.md).
Legend: Moved = content preserved (wording kept, paths corrected); Updated = content preserved and corrected against the current implementation; Historical = superseded content preserved verbatim in Historical notes, with the current behaviour documented elsewhere.
| # | Former README heading | Status | New location |
|---|---|---|---|
| 1 | # OpenJCockpit + Keycloak + Custom Login Theme (title, logo, tagline) |
Updated | Root README.md hero |
| 2 | ## What is in this project? |
Moved | Overview → Original feature list; dashboard description in Overview → The AI Orchestration Dashboard |
| 3 | ## Starting the application with Docker Compose |
Moved | Quickstart |
| 4 | ### Local Ollama Qwen model (prerequisite, before you start the stack) |
Moved | LLM providers → Local Ollama Qwen model |
| 5 | ### LiteLLM gateway (variables, verification, warnings, durations) |
Updated | LLM providers → LiteLLM gateway |
| 5a | ↳ Revert A / Revert B | Moved + verification note | LLM providers → Reverting the default LLM |
| 5b | ↳ Release note / Release note (LiteLLM gateway) | Moved | LLM providers → Release notes |
| 5c | ↳ cp .env.example .env … URLs, login redirect |
Moved | Quickstart → Configure and start, Open the dashboard |
| 6 | ## Keycloak data |
Moved | Authentication → Keycloak data |
| 7 | ## Custom login theme |
Updated | Authentication → Custom login theme |
| 8 | ## Re-importing the realm (incl. landing-app note) |
Moved + warning | Authentication → Re-importing the realm |
| 9 | ## Local frontend development |
Updated | Local development → Local frontend development |
| 10 | ## End-to-end tests (Playwright) |
Updated | Testing → End-to-end tests |
| 11 | ## Spec queue |
Moved | Spec queue |
| 12 | ### How to use it |
Moved | Spec queue → How to use it |
| 13 | ### Configuration |
Moved | Spec queue → Configuration |
| 14 | ### The openjcockpit-admin role |
Moved | Spec queue → The openjcockpit-admin role, Authentication → Roles |
| 15 | ### GitHub token scopes |
Moved | Spec queue → GitHub token scopes |
| 16 | ### Residual risks |
Moved + added risk | Spec queue → Residual risks |
| 17 | ### Rollback |
Moved | Spec queue → Rollback |
| 18 | ## Important (plaintext realm passwords) |
Moved | Authentication (top), Security considerations |
| 19 | ## MCP: central tools for agents (git-mcp-server) |
Updated | MCP tools |
| 20 | ### Per-run workspace isolation (workspaceKey) |
Moved | MCP tools → Per-run workspace isolation |
| 21 | ## Default workflows (automatically imported) |
Updated + Historical | Current: Agents and workflows → Default workflows. Original: Historical notes |
| 22 | ### Realize spec (code) — the agent that does the real work |
Historical | Historical notes; current behaviour in Agents and workflows and Git integration |
| 22a | ↳ idempotent import, seed-defaults |
Moved | Agents and workflows → Default workflows |
| 22b | ↳ spec-init / create-spec dashboard flows | Moved | Spec-driven development → Spec-init and create flows |
| 22c | ↳ promptRequired, promptInstructions |
Moved | Agents and workflows → Prompt-driven workflows |
| 23 | ### Spec and implementation publishing to git (deterministic) |
Historical | Historical notes; current: Git integration |
| 24 | ## Workflow Design: groups and JSON export/import |
Moved | Agents and workflows → Workflow Design |
| 25 | ## Spec-driven development workflow (rules, init) |
Moved | Spec-driven development |
| 25a | ↳ Backend and frontend verification commands | Moved | Local development → Verification |
| 26 | ## Local Skills Marketplace double (opt-in, dev-only) |
Moved | Skills Hub |
| 27 | ### Starting it |
Moved | Skills Hub → Starting it |
| 28 | ### SKILLS_MARKETPLACE_* environment variables |
Moved | Skills Hub → variables |
| 29 | ### Trying it out against the mock |
Moved | Skills Hub → Trying it out |
| 30 | ### Warning: SKILLS_MARKETPLACE_ALLOW_PRIVATE_EGRESS … |
Moved | Skills Hub → Warning, Security considerations |
| 31 | ### Known limitation: double /skills … |
Moved | Skills Hub → Known limitation |
| 32 | ## Operations runbook: human-in-the-loop workflow approval gate |
Updated | Approval gates → Operations runbook |
| 33 | ### The three tunables |
Moved | Approval gates → The three tunables |
| 34 | ### Workflow-trigger tunables (workflow chaining) |
Moved | Agents and workflows → Workflow chaining |
| 34a | ↳ “APPROVAL_GATE_MAX_FEEDBACK_ITERATIONS is effectively the only cost control” |
Moved | Approval gates → The three tunables |
| 35 | ### Deliberate behaviour change 1: unknown run ids … |
Moved | Approval gates |
| 36 | ### Deliberate behaviour change 2: "no changes produced" … |
Moved | Approval gates |
| 37 | ### Deliberate behaviour change 3: … exception messages … |
Updated + Historical | Current: Approval gates. Original text and both “Update” paragraphs: Historical notes |
| 38 | ### Rollback hazard: removing a saved approvalGate: configuration … |
Moved | Approval gates → Rollback hazard |
| 39 | ### In-flight paused runs do not survive a restart or redeploy |
Moved | Approval gates |
| 40 | ### No new authentication or authorization role is introduced |
Updated | Approval gates |
| 41 | ### Resolved: per-run workspace isolation replaces … |
Moved | MCP tools → Resolved |
| 42 | ## Operations runbook: workflow agent-id reconciliation |
Historical | Historical notes |
| 43 | ### First boot after this change rewrites stale workflow records |
Historical | Historical notes |
| 44 | ### What to grep for in the logs |
Historical | Historical notes |
| 45 | ### The reconcile-agent-ids kill switch |
Historical | Historical notes |
| 46 | ### Deliberate behaviour change: wf-spec-realise narrows from seven agents to six |
Historical | Historical notes |
| 47 | ### Deliberate visibility change: wf-spec-init now explicitly lists realisation … |
Historical | Historical notes |
| 48 | ### New refusals at the write and start boundaries |
Historical + Updated | Original wording: Historical notes. Current messages: Agents and workflows → Refusals |
| 49 | ### Rollback hazard: redeploying an older image does not undo the reconciliation |
Historical | Historical notes |
| 50 | ### docker compose down -v remains destructive |
Moved (also kept in historical) | Runbooks, LLM providers |
| 51 | ### Local, non-Docker runs do not see this |
Updated (also kept in historical) | Runbooks → Local, non-Docker runs |
| 52 | ### What this change does not touch |
Historical | Historical notes |
| 53 | ## Known limitations and follow-ups |
Updated | Known limitations |
| 54 | ## Dependency updates (Renovate) |
Updated (corrected) | Dependency management |
| 55 | ## Continuous Integration |
Updated | Continuous integration |
| 56 | ## Workflow definition file logging |
Moved | Runbooks → Workflow definition file logging |
Content was verified against the code and configuration at commit d4885af. The following former
statements were outdated or incorrect and have been corrected in the new pages:
| Former statement | Correction | Evidence |
|---|---|---|
Realm file at keycloak/openjcockpit-realm.json; theme at themes/openjcockpit/login; mount ./themes:/opt/keycloak/themes:ro |
infrastructure/keycloak/openjcockpit-realm.json, infrastructure/themes/openjcockpit/login, mount ./infrastructure/themes:/opt/keycloak/themes:ro |
docker-compose.yml |
| Vite dev server “usually http://localhost:5173” | Dashboard Vite dev server runs on port 4000 (5173 remains a registered redirect URI) |
frontend/apps/dashboard/vite.config.ts |
Links to docs/dashboard-feature-libraries.md, docs/delivery/ci-pipeline/, docs/delivery/playwright-e2e-testing/ |
These files do not exist; links replaced by library READMEs, or noted as missing | Repository tree |
e2e/README.md |
frontend/e2e/README.md |
Repository tree |
Default workflows run built-in pipeline agents; Implement spec delivers only a plan; Realise spec writes code and opens a PR via SpecGitPublisher |
Default workflows chain seeded catalogue A2A agents; runs on a project push a branch with per-agent checkpoints; no automatic PR | default-workflows.json, OPERATIONS.md §9b, removed classes |
| Seven MCP Git tools; “one managed workspace clone per repository” | Nine tools (git_list_files, git_read_file added); per-run/per-job workspaces; server reached through LiteLLM, not published on the host; credentials server-side |
git-mcp-server sources, docker-compose.yml |
Agent-id reconciliation runbook (WorkflowAgentIdsReconciler, reconcile-agent-ids) |
No longer in the code; moved to historical notes | Source tree |
Validation message "At least one pipeline agent must be selected…" and POST /api/agent-runs refusal |
Current: "At least one agent must be linked to workflow '<id>'."; POST /api/agent-runs was removed |
WorkflowDefinitionValidator, OPERATIONS.md §9b |
“Only postgres has a Compose healthcheck” |
postgres, keycloak and litellm have healthchecks; the Java services still do not |
docker-compose.yml |
“A PR that only touches e2e/ triggers no CI leg”; “no fourth workflow exists” |
A non-blocking, informational e2e-ci.yml leg exists; it is not part of the required ci-summary check |
.github/workflows/e2e-ci.yml |
Renovate “never merges anything itself”, runs daily at 08:00 UTC, no packageRules grouping |
Hourly workflow gated by a weekly schedule; grouped PRs; patch/digest, lock-file maintenance and vulnerability updates are auto-merged once CI passes | renovate-config.json, .github/workflows/renovate.yml |
| Intro animation uses the surname | Uses the first name | frontend/libs/landing-hub/src/IntroGreeting/IntroGreeting.tsx |
| “Three default workflows from the global group” | Four default workflows | default-workflows.json |
These were found during migration and are documented as warnings rather than silently “fixed”:
.env: docker-compose.yml does not pass LLM_CODING_ROUTE or
EMBABEL_MODELS_DEFAULT_LLM into embabel-agent-service, so setting them in .env alone does not
appear to reach the container. See LLM providers.MCP_CLIENT_ENABLED=true, while OPERATIONS.md §9b says the direct
MCP client is switched off. See MCP tools.pull-request: run artifact that no current default
workflow emits. See Spec queue.infrastructure/litellm/README.md and OPERATIONS.md mention v1.101.2;
docker-compose.yml pins v1.101.6.Former README anchors (for example #spec-queue, #known-limitations-and-follow-ups) no longer exist in
the root README. The new root README links to the new pages, and this map gives the destination of every
former section.