headscale leaves the baseline, and offscale gets a design doc
first step of extracting headscale into a plugin. CORE_PROCESSES is five now, and the catalogue.test CORE[] mirror follows it — not optional, since that list asserts "the catalogue must not offer a core process" and would have blocked adding offscale to the catalogue later. the local generated ecosystem file lost its entry too, and officer-headscale was stopped and deleted from pm2 by hand. the platform still mounts /api/headscale and still declares the headscale and vpn capabilities, so the feature is present-but-unavailable rather than gone. docs/offscale-plugin.md is a live document for the rest of it. what it records that nothing else does: core is now `officer` alone and everything else is a plugin; routes are /api/<app-name> for ours and /api/p/<creator>/<app-name> for third parties, derived by one function so the two can never become two systems; tables stay in public with an app-name prefix; mounting becomes genuinely dynamic, which retires the "every route stays mounted" premise and relocates assertCapabilityTotality from a boot check to a per-mount transaction. it also records a rejected experiment with evidence — a postgres schema per plugin works completely, including cross-schema FK, idempotent push and DROP SCHEMA CASCADE as uninstall — and the reason not to: drizzle-kit 0.31.8 needs schemaFilter naming every schema, contradicting its own docs, and without it push reports "No changes detected" and creates nothing. a plugin install that reports success and makes no tables is the exact failure shape we have hit three times this week. and /api/vpn is dead: no caller in the mobile monorepo, none in the web app, no grants in the database. offscale is permanently standalone, so it never comes back. the invite flow is unaffected — the phone claims from the Companion, not from officer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,14 +26,7 @@ import { CAPABILITIES } from '../capabilities/registry';
|
||||
// The processes a core install runs, mirroring CORE_PROCESSES in
|
||||
// scripts/setup/officer-setup/lib/services.sh. Duplicated deliberately: the generator is shell and this
|
||||
// is a test, and the alternative is the test reading a file the repository does not contain.
|
||||
const CORE = [
|
||||
'officer',
|
||||
'officer-anthropic-proxy',
|
||||
'officer-claude-code',
|
||||
'officer-opencode',
|
||||
'officer-pty',
|
||||
'officer-headscale',
|
||||
];
|
||||
const CORE = ['officer', 'officer-anthropic-proxy', 'officer-claude-code', 'officer-opencode', 'officer-pty'];
|
||||
|
||||
describe('the catalogue against the real estate', () => {
|
||||
it('does not offer to install the baseline', () => {
|
||||
|
||||
Reference in New Issue
Block a user