test(#1682): Antigravity declarative-cli reference host dogfood — Slice 2 (#1931)

Locks Antigravity as the Declarative-CLI reference host through the public
Host-Integration Interface (#1682 AC): profileOf(antigravity axes) ===
'declarative-cli'; createDeclarativeAdapter({runtime:'antigravity'}) classifies
as kind:'declarative'; a real install emits a gsd command/skill surface (nested
gsd-ns-* router layout). Byte-identity vs today's install stays gated by
golden-install-parity (all 16 runtimes) + adapter-declarative-equivalence.
This commit is contained in:
Tom Boucher
2026-07-02 16:31:24 -04:00
committed by GitHub
parent 325e9fad4b
commit 058279a005

View File

@@ -0,0 +1,67 @@
'use strict';
/**
* Declarative reference host — Antigravity (#1682 Slice 2 / ADR-1239 Phase D).
*
* Locks in Antigravity as the Declarative-CLI reference host driven through the
* PUBLIC Host-Integration Interface (the declarative adapter), per #1682 AC:
* "invoke a gsd command in the Declarative-CLI reference host (Antigravity)
* driven by the embedded engine through the public interface, golden-parity
* vs Claude."
*
* Byte-identity of adapter output vs today's install is gated globally by
* golden-install-parity (all 16 runtimes) + adapter-declarative-equivalence.
* THIS test is the reference-host dogfood: it (1) classifies Antigravity's
* profile via profileOf, (2) confirms the public adapter classifies it as
* declarative, and (3) round-trips a real install proving a gsd command surface
* is emitted through the same engine the adapter delegates to.
*/
const { test, before } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const { execFileSync } = require('node:child_process');
const { profileOf } = require('../gsd-core/bin/lib/host-integration.cjs');
const { createDeclarativeAdapter } = require('../gsd-core/bin/lib/adapter-declarative.cjs');
const { cleanup } = require('./helpers.cjs');
const { walk, runMinimalInstall, BUILD_SCRIPT } = require('./helpers/install-shared.cjs');
const DESC = path.join(__dirname, '..', 'capabilities', 'antigravity', 'capability.json');
// hooks/dist is gitignored and built (mirrors golden-install-parity harness).
before(() => {
execFileSync(process.execPath, [BUILD_SCRIPT], { encoding: 'utf-8', stdio: 'pipe' });
});
test('Antigravity classifies as the declarative-cli reference profile (profileOf)', () => {
const desc = JSON.parse(fs.readFileSync(DESC, 'utf8'));
const axes = desc.runtime.hostIntegration;
assert.ok(axes && axes.embeddingMode, 'antigravity descriptor declares hostIntegration axes');
assert.equal(profileOf(axes), 'declarative-cli',
'Antigravity is the Declarative-CLI reference host');
});
test('the public declarative adapter classifies Antigravity as a declarative host', () => {
const adapter = createDeclarativeAdapter({ runtime: 'antigravity' });
assert.equal(adapter.kind, 'declarative');
assert.equal(adapter.runtime, 'antigravity');
assert.equal(typeof adapter.install, 'function');
assert.equal(typeof adapter.uninstall, 'function');
});
test('a real Antigravity install emits a gsd command/skill surface (invocable)', () => {
const { configDir, root } = runMinimalInstall({ runtime: 'antigravity', scope: 'global' });
try {
const files = walk(configDir);
assert.ok(files.length > 0, 'install must emit artifacts');
// Antigravity uses the nested gsd-ns-* router skill layout as its command
// surface (CONTEXT.md installer module). Assert a gsd skill/router is present.
const gsdSurface = files.filter((f) => /gsd/i.test(path.relative(configDir, f)));
assert.ok(gsdSurface.length > 0,
'install must emit a gsd command/skill surface (declarative reference)');
} finally {
cleanup(root);
}
});