Reconcile goal recovery with human intent and model state transitions
This commit is contained in:
parent
e4b84d9802
commit
548eb69211
1 changed files with 1765 additions and 96 deletions
109
codex-keep/intent_test.go
Normal file
109
codex-keep/intent_test.go
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"math"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIntentProvenance(t *testing.T) {
|
||||
for _, status := range []goalStatus{active, paused, "complete", "budgetLimited", "usageLimited", blocked} {
|
||||
got, ok, err := parseIntent(intentLine(status))
|
||||
if err != nil || !ok || got != status {
|
||||
t.Fatalf("status=%s got=%s match=%v error=%v", status, got, ok, err)
|
||||
}
|
||||
}
|
||||
line := string(intentLine(active))
|
||||
for _, text := range []string{
|
||||
strings.Replace(line, "user.goal", "user.input", 1),
|
||||
strings.Replace(line, "\"role\":\"user\"", "\"role\":\"assistant\"", 1),
|
||||
strings.Replace(line, "input_text", "output_text", 1),
|
||||
} {
|
||||
if _, ok, err := parseIntent([]byte(text)); err != nil || ok {
|
||||
t.Fatalf("accepted untrusted instruction: match=%v error=%v", ok, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntentTail(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "rollout.jsonl")
|
||||
if err := os.WriteFile(path, intentLine(active), 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
log, err := openIntent(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
|
||||
t.Fatal("replayed historical authorization")
|
||||
}
|
||||
data := intentLine(paused)
|
||||
appendIntent(t, path, data[:len(data)/2])
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
|
||||
t.Fatal("accepted partial record")
|
||||
}
|
||||
appendIntent(t, path, data[len(data)/2:])
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != paused {
|
||||
t.Fatalf("partial completion: %s %v", status, err)
|
||||
}
|
||||
appendIntent(t, path, intentLine(active))
|
||||
if err := log.seal(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
|
||||
t.Fatal("replayed pre-cancellation authorization")
|
||||
}
|
||||
appendIntent(t, path, intentLine(active))
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != active {
|
||||
t.Fatalf("new authorization: %s %v", status, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntentFence(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "rollout.jsonl")
|
||||
if err := os.WriteFile(path, nil, 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
log, err := openIntent(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
data := intentLine(active)
|
||||
appendIntent(t, path, data[:len(data)/2])
|
||||
if err := log.seal(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
appendIntent(t, path, data[len(data)/2:])
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
|
||||
t.Fatalf("replayed instruction spanning cancellation: %s %v", status, err)
|
||||
}
|
||||
appendIntent(t, path, intentLine(active))
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != active {
|
||||
t.Fatalf("new instruction after cancellation: %s %v", status, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntentCut(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "rollout.jsonl")
|
||||
if err := os.WriteFile(path, nil, 0600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
log, err := openIntent(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
appendIntent(t, path, intentLine(paused))
|
||||
end, err := log.end()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
appendIntent(t, path, intentLine(active))
|
||||
if status, err := log.read(end); err != nil || status != paused {
|
||||
t.Fatalf("read beyond captured input: %s %v", status, err)
|
||||
}
|
||||
if status, err := log.read(math.MaxInt64); err != nil || status != active {
|
||||
t.Fatalf("lost later input: %s %v", status, err)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue