Make root config defaults explicit

---
Build: pass | Tests: FAIL — Tests  8 failed | 2088 passed | 4 skipped (2100)
This commit is contained in:
Operator & Codex 2026-05-02 18:07:56 +02:00
parent 2f7b0f7ad8
commit b3eeff07a4
2 changed files with 29 additions and 5 deletions

View file

@ -85,6 +85,28 @@ describe('config identity', () => {
vi.doUnmock('./env.js');
});
it('uses explicit root-platform defaults when TENANT_ID is unset', async () => {
process.env.ASSISTANT_NAME = 'Mevy';
vi.doMock('./env.js', async () => {
const actual = await vi.importActual<typeof import('./env.js')>('./env.js');
return {
...actual,
readEnvFile: () => ({}),
};
});
const config = await import('./config.js');
expect(config.TENANT_ID).toBe('');
expect(config.AGENT_CONFIG_DIR).toBe('clawdie-cp');
expect(config.AGENT_INTERNAL_DOMAIN).toBe('clawdie.home.arpa');
expect(config.CMS_WEBROOT).toBe('/usr/local/www/clawdie');
expect(config.ASTRO_SITE_PATH).toBe('/home/clawdie/clawdie-site');
expect(config.GIT_JAIL_NAME).toBe('git');
vi.doUnmock('./env.js');
});
// system-namespace: pinned env-driven PLATFORM_RUNTIME_USER /
// PLATFORM_RUNTIME_HOME overrides; both are now constants derived
// from SERVICE_NAME. Override path will be a bootstrap-config field,

View file

@ -267,7 +267,9 @@ export const AGENT_GENDER: AgentGender = (() => {
// ── Derived system identifiers ──
export const AGENT_CONFIG_DIR = tenantControlplanePrefix(TENANT_ID);
const RUNTIME_TENANT_ID = TENANT_ID || SERVICE_NAME;
export const AGENT_CONFIG_DIR = tenantControlplanePrefix(RUNTIME_TENANT_ID);
export const AGENT_DOMAIN =
process.env.AGENT_DOMAIN ||
envConfig.AGENT_DOMAIN ||
@ -279,7 +281,7 @@ export const AGENT_INTERNAL_DOMAIN =
process.env.AGENT_INTERNAL_DOMAIN ||
envConfig.AGENT_INTERNAL_DOMAIN ||
registryDefaults?.tenants[TENANT_ID]?.internalDomain ||
tenantInternalDomain(TENANT_ID, PLATFORM_INTERNAL_BASE);
tenantInternalDomain(RUNTIME_TENANT_ID, PLATFORM_INTERNAL_BASE);
export const CONTROLPLANE_INTERNAL_DOMAIN = PLATFORM_INTERNAL_DOMAIN;
export const CONTROLPLANE_HOST_LABEL =
CONTROLPLANE_INTERNAL_DOMAIN.split('.')[0] || 'ai';
@ -703,11 +705,11 @@ export const CMS_JAIL_IP =
export const CMS_WEBROOT =
process.env.CMS_WEBROOT ||
envConfig.CMS_WEBROOT ||
`/usr/local/www/${TENANT_ID}`;
`/usr/local/www/${RUNTIME_TENANT_ID}`;
export const ASTRO_SITE_PATH =
process.env.ASTRO_SITE_PATH ||
envConfig.ASTRO_SITE_PATH ||
tenantSiteRoot(TENANT_ID, PLATFORM_RUNTIME_HOME);
tenantSiteRoot(RUNTIME_TENANT_ID, PLATFORM_RUNTIME_HOME);
export const GIT_JAIL_IP =
process.env.WARDEN_GIT_IP ||
envConfig.WARDEN_GIT_IP ||
@ -736,7 +738,7 @@ function defaultJailNameForRole(role: string, fallback: string): string {
export const GIT_JAIL_NAME =
process.env.GIT_JAIL_NAME ||
envConfig.GIT_JAIL_NAME ||
defaultJailNameForRole('git', `${TENANT_ID}-git`);
defaultJailNameForRole('git', TENANT_ID ? `${TENANT_ID}-git` : 'git');
export const GIT_DEFAULT_REPO_NAME =
process.env.GIT_DEFAULT_REPO_NAME ||
envConfig.GIT_DEFAULT_REPO_NAME ||