rebrand: Switchboard Core → Armature

- Rename Go module switchboard-core → armature (155+ files)
- Rename Docker image → gobha/armature
- Rename K8s resources, secrets, deployments
- Rename Prometheus metrics switchboard_* → armature_*
- Rename env vars SWITCHBOARD_ADMIN_* → ARMATURE_ADMIN_*
- Rename DB names switchboard_core* → armature*
- Update all frontend branding, notification templates, docs
- Update CI scripts, e2e tests, Keycloak realm, nginx conf
- Rename scripts/switchboard-ca.sh → scripts/armature-ca.sh
- Rename k8s/switchboard.yaml → k8s/armature.yaml
- Rename chart alerting/dashboard files
- Fix: DockerHub push uses env: binding for secret injection
- Helm chart updated (name, labels, template functions, dashboard, alerting)
- Replace favicon/icon assets with Armature brand

No functional changes. Pure mechanical rename + CI fix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-31 21:39:58 +00:00
parent fb5284f667
commit f0dd43144e
287 changed files with 898 additions and 975 deletions

View File

@@ -1,6 +1,6 @@
# Packages
Installable `.pkg` archives for Chat Switchboard. Each subdirectory is a
Installable `.pkg` archives for Chat Armature. Each subdirectory is a
package — either a surface (routable UI), an extension (hooks/tools/pipes),
or both (`full` type).

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "browser",
"icon": "🐛",
"author": "Switchboard Core",
"author": "Armature",
"description": "Public bug report submission with severity-based routing, team assignment, and SLA timers.",
"permissions": [],

View File

@@ -5,7 +5,7 @@
"tier": "starlark",
"version": "0.2.0",
"description": "Core chat library — conversations, messages, participants, read cursors. Usable by other packages via lib.require().",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "realtime.publish"],

View File

@@ -9,7 +9,7 @@
"version": "0.2.0",
"icon": "\ud83d\udcac",
"description": "Chat surface — conversations, messaging, typing indicators, read receipts.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "realtime.publish"],

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "browser",
"icon": "📝",
"author": "Switchboard Core",
"author": "Armature",
"description": "Multi-party content review with quorum signoff and revision cycle.",
"permissions": [],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders ```csv code blocks as sortable, interactive HTML tables",
"requires": [],
"permissions": [],

View File

@@ -1,5 +1,5 @@
// ==========================================
// Switchboard Core — Dashboard Package (v0.31.1)
// Armature — Dashboard Package (v0.31.1)
// ==========================================
// SDK Exercise Surface. Exercises every sw.* primitive with ZERO
// component CSS overrides. All styling comes from the SDK itself.

View File

@@ -4,7 +4,7 @@
"type": "full",
"version": "0.31.1",
"tier": "browser",
"author": "Switchboard Core",
"author": "Armature",
"icon": "📊",
"description": "Project dashboard exercising all SDK primitives (requires legacy sw.* SDK — dormant until rewritten)",
"requires": ["legacy-sdk"],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders ```diff code blocks with syntax-highlighted additions, deletions, and context lines",
"requires": [],
"permissions": [],

View File

@@ -1,5 +1,5 @@
// ==========================================
// Switchboard Core — Editor Package (v0.31.0)
// Armature — Editor Package (v0.31.0)
// ==========================================
// Installable .pkg that provides the code editor surface.
// Mounts into #extension-mount (surface-extension template).

View File

@@ -4,7 +4,7 @@
"type": "full",
"version": "0.31.0",
"tier": "browser",
"author": "Switchboard Core",
"author": "Armature",
"icon": "✏️",
"description": "Code editor with workspace management, file tree, and AI assist (requires legacy sw.* SDK — dormant until rewritten)",
"requires": ["legacy-sdk"],

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "starlark",
"icon": "🏢",
"author": "Switchboard Core",
"author": "Armature",
"description": "Employee onboarding with automated provisioning, manager signoff, and welcome notification.",
"permissions": ["db.write", "notifications.send"],

View File

@@ -9,7 +9,7 @@
"version": "0.2.0",
"icon": "🔀",
"description": "Gitea issue and PR board powered by the gitea-client library. Uses extension connections for authentication.",
"author": "switchboard",
"author": "armature",
"permissions": ["connections.read"],

View File

@@ -5,7 +5,7 @@
"tier": "starlark",
"version": "1.0.1",
"description": "Shared Gitea client — connections, API helpers, optional data caching.",
"author": "switchboard",
"author": "armature",
"permissions": ["api.http", "connections.read", "db.read", "db.write"],

View File

@@ -27,7 +27,7 @@
type: 'full',
version: '0.31.1',
tier: 'browser',
author: 'Switchboard Core',
author: 'Armature',
description: 'Project dashboard exercising all SDK primitives',
route: '/s/dashboard',
permissions: [],

View File

@@ -27,7 +27,7 @@
type: 'full',
version: '0.31.0',
tier: 'browser',
author: 'Switchboard Core',
author: 'Armature',
description: 'Code editor with workspace management',
route: '/s/editor',
layout: 'editor',

View File

@@ -14,9 +14,9 @@
var resp = await fetch(T.base + '/metrics');
T.assert(resp.ok, 'expected 200 from /metrics, got ' + resp.status);
var text = await resp.text();
T.assert(text.indexOf('switchboard_http_requests_total') !== -1, 'expected switchboard_http_requests_total in /metrics');
T.assert(text.indexOf('switchboard_http_request_duration_seconds') !== -1, 'expected switchboard_http_request_duration_seconds in /metrics');
T.assert(text.indexOf('switchboard_websocket_connections') !== -1, 'expected switchboard_websocket_connections in /metrics');
T.assert(text.indexOf('armature_http_requests_total') !== -1, 'expected armature_http_requests_total in /metrics');
T.assert(text.indexOf('armature_http_request_duration_seconds') !== -1, 'expected armature_http_request_duration_seconds in /metrics');
T.assert(text.indexOf('armature_websocket_connections') !== -1, 'expected armature_websocket_connections in /metrics');
});
// -- GET /api/docs (Swagger UI) --

View File

@@ -15,7 +15,7 @@
* 8. tier-security.js — Adversarial red-team tests (auth, cross-tenant, input validation)
* 9. tier-providers.js — Three-tier provider CRUD + live completions
* 10. tier-packaging.js — Extension permission lifecycle + secrets (v0.29.0)
* 11. tier-sdk.js — Switchboard SDK contract tests
* 11. tier-sdk.js — Armature SDK contract tests
* 12. ui.js — Render functions, export, provider setup panel
* 11. (this file) — Boot
*/

View File

@@ -3,7 +3,7 @@
* Validates Preact SDK (sw/sdk/index.js) contract: boot, identity,
* REST client, events, theme, pipe registration, execution ordering,
* scoping, halt semantics, error isolation, introspection.
* v0.37.14: Updated from Switchboard.init() to boot() API.
* v0.37.14: Updated from Armature.init() to boot() API.
*/
(function () {
'use strict';

View File

@@ -236,7 +236,7 @@
}, 'Providers');
T.el.controls.appendChild(btnProv);
// SDK tier button — tests switchboard-sdk.js contract
// SDK tier button — tests armature-sdk.js contract
var btnSdk = $('button', {
className: (typeof window.sw !== 'undefined') ? 'btn-secondary' : 'btn-ghost',
style: { opacity: (typeof window.sw !== 'undefined') ? '1' : '0.5' },
@@ -368,7 +368,7 @@
var totalMs = T.results.reduce(function (s, r) { return s + r.duration; }, 0);
var lines = [];
lines.push('=== Switchboard Core ICD Test Report ===');
lines.push('=== Armature ICD Test Report ===');
lines.push('Generated: ' + now);
lines.push('Platform: v' + (T.manifest.version || '0.28.0'));
lines.push('User: ' + T.user.username + ' (' + T.user.role + ')');

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Executes JavaScript in a sandboxed iframe. Allows the LLM to run code, verify calculations, and transform data — no server compute required.",
"requires": ["chat"],
"permissions": [],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders LaTeX math expressions: ```latex blocks and inline $...$ / $$...$$ syntax",
"requires": [],
"permissions": [],

View File

@@ -4,7 +4,7 @@
"version": "2.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Renders ```mermaid code blocks as interactive SVG diagrams with zoom/pan, SVG/PNG export, and source copy",
"requires": [],
"permissions": [],

View File

@@ -9,7 +9,7 @@
"version": "0.8.0",
"icon": "📝",
"description": "Markdown notes surface with rich editor, folders, tags, backlinks, import/export, sidebar tabs, document outline, and note graph.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write"],

View File

@@ -4,7 +4,7 @@
"version": "1.0.0",
"type": "extension",
"tier": "browser",
"author": "switchboard",
"author": "armature",
"description": "Tests regular expressions against input strings. Allows the LLM to verify regex patterns and see matches, groups, and indices.",
"requires": ["chat"],
"permissions": [],

View File

@@ -4,7 +4,7 @@
"type": "full",
"version": "0.1.0",
"tier": "browser",
"author": "Switchboard Core",
"author": "Armature",
"icon": "⏰",
"description": "Manage cron jobs and scheduled automations",
"route": "/s/schedules",

View File

@@ -9,7 +9,7 @@
"version": "0.1.0",
"icon": "✅",
"description": "Task management surface with lifecycle events, webhook integration, and scheduled reminders.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "notifications.send"],

View File

@@ -9,7 +9,7 @@
"layout": "single",
"version": "0.1.0",
"description": "Example surface demonstrating Starlark API routes, extension-owned DB tables, admin settings, and SDK integration.",
"author": "switchboard",
"author": "armature",
"permissions": ["api.http", "db.read", "db.write"],

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "starlark",
"icon": "🔔",
"author": "Switchboard Core",
"author": "Armature",
"description": "Outbound webhook delivery with connection credential support and delivery logging.",
"permissions": ["api.http", "connections.read", "db.write"],

View File

@@ -5,7 +5,7 @@
"tier": "starlark",
"version": "0.1.0",
"description": "Creates scoped chat conversations when workflow stages require team collaboration. Wire into stage_config as an on_advance hook.",
"author": "switchboard",
"author": "armature",
"permissions": ["db.write", "realtime.publish"],

View File

@@ -1,5 +1,5 @@
// ==========================================
// Switchboard Core — Workflow Demo Surface
// Armature — Workflow Demo Surface
// ==========================================
// Interactive walkthrough of the four example workflow packages.
// Shows workflow cards with feature badges, stage flow diagrams,

View File

@@ -5,7 +5,7 @@
"version": "0.1.0",
"tier": "browser",
"icon": "🎓",
"author": "Switchboard Core",
"author": "Armature",
"description": "Interactive demo surface for example workflow packages. Cards, stage diagrams, and API walkthroughs.",
"route": "/s/workflow-demo",
"auth": "authenticated",