after-pin: default skill_contracts on (#3939)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
garrytanandcapy-ai[bot] committed 2026-11-03 20:23:46 +00:00
1 parent c3322a5952
commit 6fbf32a3b9
3 files changed
+5 -4

No files matched your search

@@ -0,0 +1 @@
The skill contract check is now on by default (GST-1088): when a skill with a contract block ends without its required outputs, the Stop hook blocks once and names what is missing. Turn it off with `gstack-config set skill_contracts off` or `./setup --no-skill-contracts`.
+1 -1
View File
@@ -37,7 +37,7 @@ export const SWITCH_ENV: Record<SwitchName, string> = {
/** Each switch's one default. setup, gstack-config and gstack-skill-route read it through `gstack-skill-route --default <switch>`; the hooks read it here. */
export const SWITCH_DEFAULT: Record<SwitchName, 'on' | 'off'> = {
skill_routing: 'on',
skill_contracts: 'off',
skill_contracts: 'on',
};
export function normalizeSwitch(raw: string | null | undefined): 'on' | 'off' | null {
+3 -3
View File
@@ -194,9 +194,9 @@ describe('SWITCH_DEFAULT is the one default (a flip PR changes one line)', () =>
expect(SWITCH_DEFAULT.skill_routing).toBe('on');
});
test('pin: skill_contracts defaults to off today (a flip PR changes lib/skill-route.ts line 40 and this pin)', () => {
expect(original.split('\n')[39]).toBe(" skill_contracts: 'off',");
expect(SWITCH_DEFAULT.skill_contracts).toBe('off');
test('pin: skill_contracts defaults to on today (a flip PR changes lib/skill-route.ts line 40 and this pin)', () => {
expect(original.split('\n')[39]).toBe(" skill_contracts: 'on',");
expect(SWITCH_DEFAULT.skill_contracts).toBe('on');
});
test('every reader agrees with SWITCH_DEFAULT: gstack-config, setup, the routing hook and the Stop hook', () => {