refactor(observer): этап 3 сноса цепочек L — снос chain-detector + chain-map + retrofill
Снята зависимость парсера транскрипта наблюдателя от машинерии L-цепочек: - observer-transcript-parser больше не импортирует observer-chain-detector, не загружает observer-chain-map.json и не пишет primary_rationale.chain_ref; - KNOWN_NODES больше не черпает имена из карты цепочек (источники: known-nodes.txt, маркер direct, форменные правила #NN и плагин:навык); - удалены observer-chain-detector.mjs(+test), observer-chain-map.json, observer-retrofill-chain-ref.mjs(+test). Граница не тронута: recommended_chain/recommended_node/chain_progress/chain_completed, observer-stop-hook, командные цепочки, verifyChain. Полный свод зелёный. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -127,25 +127,6 @@ describe('parseTranscript', () => {
|
||||
expect(parseTranscript(t).primary_rationale.node_chosen).toBe('direct');
|
||||
});
|
||||
|
||||
it('attaches chain_ref for a node that belongs to a chain', () => {
|
||||
const t = jsonl([
|
||||
userPrompt('go', '2026-05-19T10:00:00Z'),
|
||||
assistantTurn(
|
||||
[{ type: 'tool_use', id: 't1', name: 'Skill', input: { skill: 'billing-audit' } }],
|
||||
'2026-05-19T10:01:00Z'
|
||||
),
|
||||
]);
|
||||
expect(parseTranscript(t).primary_rationale.chain_ref).toEqual(['L13']);
|
||||
});
|
||||
|
||||
it('sets chain_ref null for a direct episode', () => {
|
||||
const t = jsonl([
|
||||
userPrompt('go', '2026-05-19T10:00:00Z'),
|
||||
assistantTurn([{ type: 'tool_use', id: 't1', name: 'Read', input: {} }], '2026-05-19T10:01:00Z'),
|
||||
]);
|
||||
expect(parseTranscript(t).primary_rationale.chain_ref).toBeNull();
|
||||
});
|
||||
|
||||
it('hard_floor invoked when a superpowers skill is used', () => {
|
||||
const t = jsonl([
|
||||
userPrompt('go', '2026-05-19T10:00:00Z'),
|
||||
|
||||
Reference in New Issue
Block a user