/** * Regression test: ContextAssembler L6-L9 stub layers * * Verifies that L6-L9 layers are implemented as actual stub layer pushes, * not just TODO comments. */ import { describe, test, expect } from 'bun:test' import { readFileSync } from 'fs' import { join } from 'path' const SOURCE_PATH = join( import.meta.dir, '..', '..', 'src', 'context', 'ContextAssembler.ts' ) const source = readFileSync(SOURCE_PATH, 'utf-8') describe('ContextAssembler L6-L9 stub layers', () => { test('source has L6 evidence layer (not just TODO comment)', () => { // TODO(P3): L6 should be gone expect(source).not.toContain("TODO(P3): L6") // 'evidence' level should exist as a pushed layer expect(source).toContain("level: 'evidence'") }) test('source has L7 conversation layer', () => { expect(source).not.toContain("TODO(P3): L7") expect(source).toContain("level: 'conversation'") }) test('source has L8 tool_output layer', () => { expect(source).not.toContain("TODO(P3): L8") expect(source).toContain("level: 'tool_output'") }) test('source has L9 user_override layer', () => { expect(source).not.toContain("TODO(P3): L9") expect(source).toContain("level: 'user_override'") }) test('stub layers have priority values 6-9', () => { expect(source).toContain('priority: 6') expect(source).toContain('priority: 7') expect(source).toContain('priority: 8') expect(source).toContain('priority: 9') }) test('stub layers have token_estimate: 0', () => { // Each stub should set token_estimate to 0 const stubLayerPattern = /token_estimate:\s*0/g const matches = source.match(stubLayerPattern) // At least 4 occurrences (one per stub layer) expect(matches).not.toBeNull() expect(matches!.length).toBeGreaterThanOrEqual(4) }) })