File size: 2,865 Bytes
fc93158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import fs from "node:fs/promises";
import os from "node:os";
import path from "node:path";
import { afterEach, beforeEach, describe, expect, it } from "vitest";
import { syncSkynetContinuityState } from "./continuity-tracker.js";
import { deriveSkynetNucleusState } from "./nucleus.js";
import { deriveSkynetStudyProgram } from "./study-program.js";

describe("skynet continuity tracker", () => {
  let workspaceRoot = "";

  beforeEach(async () => {
    workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), "skynet-continuity-"));
  });

  afterEach(async () => {
    await fs.rm(workspaceRoot, { recursive: true, force: true });
  });

  it("increases focus streak across stable cycles and persists the score", async () => {
    const focus = {
      key: "endogenous_science_agenda" as const,
      title: "Agenda científica endógena",
      thesis: "Persist a study agenda across cycles.",
      whyNow: "No persistent agenda exists yet.",
      nextExperiment: "Define a persistent study queue.",
      successCriteria: "A concrete queue is produced.",
      priority: 0.62,
      supportingAgendaClassKeys: ["initiative:autonomy_improvement"],
    };
    const supervisor = {
      sessionKey: "agent:openskynet:main",
      updatedAt: 1,
      focus,
      tracks: [
        {
          ...focus,
          evidence: ["Agenda still open."],
          lastUpdatedAt: 1,
        },
      ],
    };

    const nucleus1 = deriveSkynetNucleusState({
      sessionKey: "agent:openskynet:main",
      studyFocus: focus,
      operationalSignals: [],
      learnedConstraints: [],
    });
    const program1 = deriveSkynetStudyProgram({
      sessionKey: "agent:openskynet:main",
      supervisor,
      nucleus: nucleus1,
    });
    const state1 = await syncSkynetContinuityState({
      workspaceRoot,
      sessionKey: "agent:openskynet:main",
      nucleus: nucleus1,
      program: program1,
    });

    const nucleus2 = deriveSkynetNucleusState({
      sessionKey: "agent:openskynet:main",
      studyFocus: focus,
      operationalSignals: [],
      learnedConstraints: [],
    });
    const program2 = deriveSkynetStudyProgram({
      sessionKey: "agent:openskynet:main",
      supervisor,
      nucleus: nucleus2,
    });
    const state2 = await syncSkynetContinuityState({
      workspaceRoot,
      sessionKey: "agent:openskynet:main",
      nucleus: nucleus2,
      program: program2,
    });

    expect(state1.focusStreak).toBe(1);
    expect(state2.focusStreak).toBe(2);
    expect(state2.continuityScore).toBeGreaterThan(state1.continuityScore);
    expect(
      JSON.parse(
        await fs.readFile(
          path.join(
            workspaceRoot,
            ".openskynet",
            "skynet-continuity",
            "agent_openskynet_main.json",
          ),
          "utf-8",
        ),
      ).focusStreak,
    ).toBe(2);
  });
});