cueline 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +23 -0
- package/README.ja.md +67 -42
- package/README.ko.md +67 -42
- package/README.md +45 -70
- package/README.zh-CN.md +67 -42
- package/README.zh-TW.md +57 -40
- package/dist/src/api-contracts.d.ts +7 -0
- package/dist/src/api-controller-handoff.d.ts +5 -1
- package/dist/src/api-controller-handoff.js +148 -0
- package/dist/src/api-controller-handoff.js.map +1 -1
- package/dist/src/api.d.ts +9 -1
- package/dist/src/api.js +6 -2
- package/dist/src/api.js.map +1 -1
- package/dist/src/browser/browser-adapter.d.ts +26 -0
- package/dist/src/browser/codex-iab/bootstrap.d.ts +1 -0
- package/dist/src/browser/codex-iab/bootstrap.js +1 -0
- package/dist/src/browser/codex-iab/bootstrap.js.map +1 -1
- package/dist/src/browser/codex-iab/chatgpt-client.js +107 -19
- package/dist/src/browser/codex-iab/chatgpt-client.js.map +1 -1
- package/dist/src/cli/health-commands.js +74 -0
- package/dist/src/cli/health-commands.js.map +1 -1
- package/dist/src/cli/main.js +31 -10
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/cli/observation-commands.js +112 -1
- package/dist/src/cli/observation-commands.js.map +1 -1
- package/dist/src/cli/run-status-view.d.ts +8 -0
- package/dist/src/cli/run-status-view.js +9 -0
- package/dist/src/cli/run-status-view.js.map +1 -1
- package/dist/src/core/controller-loop.js +23 -1
- package/dist/src/core/controller-loop.js.map +1 -1
- package/dist/src/core/controller-turn.d.ts +7 -1
- package/dist/src/core/controller-turn.js +73 -1
- package/dist/src/core/controller-turn.js.map +1 -1
- package/dist/src/core/run-status.d.ts +9 -1
- package/dist/src/core/run-status.js +26 -0
- package/dist/src/core/run-status.js.map +1 -1
- package/dist/src/core/state-machine.d.ts +15 -0
- package/dist/src/core/state-machine.js +104 -0
- package/dist/src/core/state-machine.js.map +1 -1
- package/dist/src/observation/run-diff.d.ts +39 -0
- package/dist/src/observation/run-diff.js +67 -0
- package/dist/src/observation/run-diff.js.map +1 -0
- package/dist/src/observation/run-graph.d.ts +17 -0
- package/dist/src/observation/run-graph.js +77 -0
- package/dist/src/observation/run-graph.js.map +1 -0
- package/dist/src/observation/run-status-at.d.ts +41 -0
- package/dist/src/observation/run-status-at.js +65 -0
- package/dist/src/observation/run-status-at.js.map +1 -0
- package/dist/src/observation/run-timeline.js +2 -1
- package/dist/src/observation/run-timeline.js.map +1 -1
- package/dist/src/router/explain.d.ts +28 -0
- package/dist/src/router/explain.js +86 -0
- package/dist/src/router/explain.js.map +1 -0
- package/dist/src/router/resolver.d.ts +2 -1
- package/dist/src/router/resolver.js +3 -3
- package/dist/src/router/resolver.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/docs/assets/README.md +3 -1
- package/docs/assets/cueline-architecture-en.svg +63 -0
- package/docs/assets/cueline-architecture-ja.svg +63 -0
- package/docs/assets/cueline-architecture-ko.svg +63 -0
- package/docs/assets/cueline-architecture-zh-CN.svg +63 -0
- package/docs/assets/cueline-architecture-zh-TW.svg +63 -0
- package/docs/assets/cueline-states-en.svg +50 -0
- package/docs/assets/cueline-states-ja.svg +48 -0
- package/docs/assets/cueline-states-ko.svg +48 -0
- package/docs/assets/cueline-states-zh-CN.svg +48 -0
- package/docs/assets/cueline-states-zh-TW.svg +48 -0
- package/docs/controller-protocol.md +6 -0
- package/docs/multi-model-routing.md +256 -0
- package/docs/state-and-recovery.md +30 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-timeline.js","sourceRoot":"","sources":["../../../src/observation/run-timeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-timeline.js","sourceRoot":"","sources":["../../../src/observation/run-timeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RouteAvailability, RoutingConfig } from "./types.js";
|
|
2
|
+
export type RoutingCandidateReasonCode = "AVAILABLE_FALLBACK" | "LANE_DISABLED" | "RUNNER_DISABLED" | "RUNNER_UNAVAILABLE" | "SELECTED_FIRST_AVAILABLE";
|
|
3
|
+
export interface RoutingCandidateExplanation {
|
|
4
|
+
id: string;
|
|
5
|
+
index: number;
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
available: boolean | null;
|
|
8
|
+
selected: boolean;
|
|
9
|
+
reasonCode: RoutingCandidateReasonCode;
|
|
10
|
+
}
|
|
11
|
+
export interface RoutingLaneExplanation {
|
|
12
|
+
name: string;
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
status: "available" | "disabled" | "unavailable";
|
|
15
|
+
selectedRunnerId: string | null;
|
|
16
|
+
candidates: RoutingCandidateExplanation[];
|
|
17
|
+
errorCode?: "ROUTE_NO_CANDIDATE";
|
|
18
|
+
}
|
|
19
|
+
export interface RoutingExplanation {
|
|
20
|
+
requestedLane: string | null;
|
|
21
|
+
availableLanes: number;
|
|
22
|
+
lanes: RoutingLaneExplanation[];
|
|
23
|
+
findings: Array<{
|
|
24
|
+
code: string;
|
|
25
|
+
message: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
export declare function explainRoutingConfig(config: RoutingConfig, availability: RouteAvailability, requestedLane?: string): RoutingExplanation;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { routeCandidateIsAvailable } from "./resolver.js";
|
|
2
|
+
export function explainRoutingConfig(config, availability, requestedLane) {
|
|
3
|
+
const requestedLaneName = requestedLane ?? null;
|
|
4
|
+
if (requestedLane !== undefined && !Object.hasOwn(config.lanes, requestedLane)) {
|
|
5
|
+
return {
|
|
6
|
+
requestedLane: requestedLaneName,
|
|
7
|
+
availableLanes: 0,
|
|
8
|
+
lanes: [],
|
|
9
|
+
findings: [
|
|
10
|
+
{
|
|
11
|
+
code: "ROUTE_LANE_UNKNOWN",
|
|
12
|
+
message: "Requested lane is not configured.",
|
|
13
|
+
},
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const entries = requestedLane === undefined
|
|
18
|
+
? Object.entries(config.lanes)
|
|
19
|
+
: [[requestedLane, config.lanes[requestedLane]]];
|
|
20
|
+
const lanes = [];
|
|
21
|
+
for (const [name, lane] of entries) {
|
|
22
|
+
if (lane === undefined)
|
|
23
|
+
continue;
|
|
24
|
+
if (!lane.enabled) {
|
|
25
|
+
lanes.push({
|
|
26
|
+
name,
|
|
27
|
+
enabled: false,
|
|
28
|
+
status: "disabled",
|
|
29
|
+
selectedRunnerId: null,
|
|
30
|
+
candidates: lane.candidates.map((candidate, index) => ({
|
|
31
|
+
id: candidate.id,
|
|
32
|
+
index,
|
|
33
|
+
enabled: candidate.enabled !== false,
|
|
34
|
+
available: null,
|
|
35
|
+
selected: false,
|
|
36
|
+
reasonCode: "LANE_DISABLED",
|
|
37
|
+
})),
|
|
38
|
+
});
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
let selectedRunnerId = null;
|
|
42
|
+
const candidates = lane.candidates.map((candidate, index) => {
|
|
43
|
+
if (candidate.enabled === false) {
|
|
44
|
+
return {
|
|
45
|
+
id: candidate.id,
|
|
46
|
+
index,
|
|
47
|
+
enabled: false,
|
|
48
|
+
available: null,
|
|
49
|
+
selected: false,
|
|
50
|
+
reasonCode: "RUNNER_DISABLED",
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const available = routeCandidateIsAvailable(availability, candidate, name);
|
|
54
|
+
const selected = available && selectedRunnerId === null;
|
|
55
|
+
if (selected)
|
|
56
|
+
selectedRunnerId = candidate.id;
|
|
57
|
+
return {
|
|
58
|
+
id: candidate.id,
|
|
59
|
+
index,
|
|
60
|
+
enabled: true,
|
|
61
|
+
available,
|
|
62
|
+
selected,
|
|
63
|
+
reasonCode: !available
|
|
64
|
+
? "RUNNER_UNAVAILABLE"
|
|
65
|
+
: selected
|
|
66
|
+
? "SELECTED_FIRST_AVAILABLE"
|
|
67
|
+
: "AVAILABLE_FALLBACK",
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
lanes.push({
|
|
71
|
+
name,
|
|
72
|
+
enabled: true,
|
|
73
|
+
status: selectedRunnerId === null ? "unavailable" : "available",
|
|
74
|
+
selectedRunnerId,
|
|
75
|
+
candidates,
|
|
76
|
+
...(selectedRunnerId === null ? { errorCode: "ROUTE_NO_CANDIDATE" } : {}),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
requestedLane: requestedLaneName,
|
|
81
|
+
availableLanes: lanes.filter((lane) => lane.status === "available").length,
|
|
82
|
+
lanes,
|
|
83
|
+
findings: [],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=explain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/router/explain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { LaneConfig, ResolvedRoute, RouteAvailability, RoutingConfig } from "./types.js";
|
|
1
|
+
import type { LaneConfig, ResolvedRoute, RouteAvailability, RouteCandidate, RoutingConfig } from "./types.js";
|
|
2
2
|
export declare function validateRouteReference(lane: string, config: RoutingConfig, requestedCandidateId?: string): LaneConfig;
|
|
3
|
+
export declare function routeCandidateIsAvailable(availability: RouteAvailability, candidate: RouteCandidate, lane: string): boolean;
|
|
3
4
|
/**
|
|
4
5
|
* Chooses a candidate before any runner is invoked. This function never spawns
|
|
5
6
|
* a process and therefore cannot perform post-spawn fallback.
|
|
@@ -34,7 +34,7 @@ function isAvailabilityChecker(value) {
|
|
|
34
34
|
Object.hasOwn(value, "isAvailable") &&
|
|
35
35
|
typeof value.isAvailable === "function");
|
|
36
36
|
}
|
|
37
|
-
function
|
|
37
|
+
export function routeCandidateIsAvailable(availability, candidate, lane) {
|
|
38
38
|
if (typeof availability === "function") {
|
|
39
39
|
return availability(candidate, lane);
|
|
40
40
|
}
|
|
@@ -57,7 +57,7 @@ export function resolveRoute(lane, config, availability, requestedCandidateId) {
|
|
|
57
57
|
if (candidate === undefined || candidate.enabled === false) {
|
|
58
58
|
throw new Error("ROUTE_REFERENCE_VALIDATION_INCONSISTENT");
|
|
59
59
|
}
|
|
60
|
-
if (!
|
|
60
|
+
if (!routeCandidateIsAvailable(availability, candidate, lane)) {
|
|
61
61
|
throw new CueLineError("ROUTE_RUNNER_UNAVAILABLE", `runner '${requestedCandidateId}' is unavailable for lane: ${lane}`, { details: { lane, runner: requestedCandidateId } });
|
|
62
62
|
}
|
|
63
63
|
return { lane, candidate, candidateIndex };
|
|
@@ -67,7 +67,7 @@ export function resolveRoute(lane, config, availability, requestedCandidateId) {
|
|
|
67
67
|
if (candidate === undefined || candidate.enabled === false) {
|
|
68
68
|
continue;
|
|
69
69
|
}
|
|
70
|
-
if (
|
|
70
|
+
if (routeCandidateIsAvailable(availability, candidate, lane)) {
|
|
71
71
|
return { lane, candidate, candidateIndex };
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/router/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUjD,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,MAAqB,EACrB,oBAA6B;IAE7B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,EAAE,CAC5B,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CACpE;aACA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,UAAU,GACd,WAAW,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,KAAK,IAAI,+BAA+B,WAAW,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,CAAC;QACvF,MAAM,IAAI,YAAY,CACpB,oBAAoB,EACpB,yBAAyB,IAAI,IAAI,UAAU,EAAE,EAC7C,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,YAAY,CAAC,qBAAqB,EAAE,6BAA6B,IAAI,EAAE,EAAE;YACjF,OAAO,EAAE,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,oBAAoB,CAC7C,CAAC;QACF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,YAAY,CACpB,sBAAsB,EACtB,WAAW,oBAAoB,iCAAiC,IAAI,EAAE,EACtE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,CACpD,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,YAAY,CACpB,uBAAuB,EACvB,WAAW,oBAAoB,2BAA2B,IAAI,EAAE,EAChE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,CACpD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAwB;IACrD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC;QACnC,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU,CACxC,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/router/resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CUELINE_VERSION = "0.
|
|
1
|
+
export declare const CUELINE_VERSION = "0.2.0";
|
package/dist/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const CUELINE_VERSION = "0.
|
|
1
|
+
export const CUELINE_VERSION = "0.2.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/docs/assets/README.md
CHANGED
|
@@ -8,6 +8,8 @@ Original CueLine artwork. Plain SVG, no external fonts, no embedded raster image
|
|
|
8
8
|
| `cueline-wordmark-{light,dark}.svg` | Wordmark alone, for headers and docs. |
|
|
9
9
|
| `cueline-banner-{light,dark}.svg` | README banner, 1280×320. |
|
|
10
10
|
| `cueline-loop-{en,zh-TW,zh-CN,ja,ko}.svg` | The run figure, 1000×590, one per README language. |
|
|
11
|
+
| `cueline-architecture-{en,zh-TW,zh-CN,ja,ko}.svg` | The architecture figure, 1000×530, one per README language. |
|
|
12
|
+
| `cueline-states-{en,zh-TW,zh-CN,ja,ko}.svg` | The run-state ladder, 1000×424, one per README language. |
|
|
11
13
|
|
|
12
14
|
The mark, wordmark, and banner ship as a light/dark pair; pick one with a `<picture>` block so GitHub serves the right file:
|
|
13
15
|
|
|
@@ -18,7 +20,7 @@ The mark, wordmark, and banner ship as a light/dark pair; pick one with a `<pict
|
|
|
18
20
|
</picture>
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
The run
|
|
23
|
+
The run, architecture, and state figures are a single file per language instead: each carries its own `@media (prefers-color-scheme: dark)` block and a transparent ground, so one `<img>` serves both themes and sits directly on the reader's canvas.
|
|
22
24
|
|
|
23
25
|
## The mark
|
|
24
26
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 530" width="1000" height="530" role="img" aria-label="CueLine architecture: a ChatGPT web conversation issues one text command per round, CueLine validates and records it, and the current Codex performs the permitted local work.">
|
|
2
|
+
<title>CueLine architecture</title>
|
|
3
|
+
<style>
|
|
4
|
+
text { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace }
|
|
5
|
+
.hd { fill: #0F1720; font-size: 17px; letter-spacing: .02em }
|
|
6
|
+
.sub { fill: #8B949E; font-size: 13.5px }
|
|
7
|
+
.rule { stroke: #E4E8EC; stroke-width: 1 }
|
|
8
|
+
.tick { stroke: #C3CAD2; stroke-width: 1 }
|
|
9
|
+
.say { fill: #C8553D; font-size: 15px }
|
|
10
|
+
.obs { fill: #4A5561; font-size: 15px }
|
|
11
|
+
.note { fill: #8B949E; font-size: 13.5px }
|
|
12
|
+
.foot { fill: #8B949E; font-size: 13.5px }
|
|
13
|
+
.cue { fill: #C8553D }
|
|
14
|
+
@media (prefers-color-scheme: dark) {
|
|
15
|
+
.hd { fill: #E6EDF3 }
|
|
16
|
+
.sub, .note, .foot { fill: #7D8590 }
|
|
17
|
+
.rule { stroke: #21262D }
|
|
18
|
+
.tick { stroke: #30363D }
|
|
19
|
+
.say { fill: #E0674C }
|
|
20
|
+
.obs { fill: #ADBAC7 }
|
|
21
|
+
.cue { fill: #E0674C }
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
24
|
+
|
|
25
|
+
<text x="40" y="48" class="hd">ChatGPT web conversation (Pro)</text>
|
|
26
|
+
<text x="40" y="68" class="sub">the controller — plans, picks one of five actions, judges evidence · no local tools</text>
|
|
27
|
+
<path d="M40 84H960" class="rule"/>
|
|
28
|
+
|
|
29
|
+
<path d="M340 100V158" class="tick"/>
|
|
30
|
+
<path d="M336 158 340 166 344 158z" class="cue"/>
|
|
31
|
+
<text x="364" y="124" class="say">one text command per round</text>
|
|
32
|
+
<text x="364" y="144" class="note">dispatch · wait · inspect · complete · blocked</text>
|
|
33
|
+
|
|
34
|
+
<path d="M640 166V108" class="tick"/>
|
|
35
|
+
<path d="M636 108 640 100 644 108z" class="cue"/>
|
|
36
|
+
<text x="664" y="124" class="obs">one observation per round</text>
|
|
37
|
+
<text x="664" y="144" class="note">bounded evidence · 12,000-character budget</text>
|
|
38
|
+
|
|
39
|
+
<text x="40" y="196" class="hd">CueLine</text>
|
|
40
|
+
<text x="40" y="216" class="sub">the gate — validates every envelope, fail-closed bounds and fences, writes events.jsonl before acting</text>
|
|
41
|
+
<path d="M40 232H960" class="rule"/>
|
|
42
|
+
|
|
43
|
+
<path d="M340 248V306" class="tick"/>
|
|
44
|
+
<path d="M336 306 340 314 344 306z" class="cue"/>
|
|
45
|
+
<text x="364" y="272" class="say">durable pending jobs</text>
|
|
46
|
+
<text x="364" y="292" class="note">advise — coordination-only · work — claim + start first</text>
|
|
47
|
+
|
|
48
|
+
<path d="M640 314V256" class="tick"/>
|
|
49
|
+
<path d="M636 256 640 248 644 256z" class="cue"/>
|
|
50
|
+
<text x="664" y="272" class="obs">submitted results</text>
|
|
51
|
+
<text x="664" y="292" class="note">stdout preferred · full stdout/stderr kept locally</text>
|
|
52
|
+
|
|
53
|
+
<text x="40" y="346" class="hd">current Codex</text>
|
|
54
|
+
<text x="40" y="366" class="sub">the caller — does the permitted local work</text>
|
|
55
|
+
<path d="M40 382H960" class="rule"/>
|
|
56
|
+
|
|
57
|
+
<text x="40" y="408" class="obs">advise — read-only coordination handoff</text>
|
|
58
|
+
<text x="40" y="430" class="obs">work — durable claim, start, heartbeat; never auto-retried</text>
|
|
59
|
+
<text x="40" y="452" class="obs">process — double-authorized allow-list route, nothing through a shell</text>
|
|
60
|
+
|
|
61
|
+
<path d="M40 478H960" class="rule"/>
|
|
62
|
+
<text x="40" y="504" class="foot">The conversation decides what should happen. Your machine decides whether it may.</text>
|
|
63
|
+
</svg>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 530" width="1000" height="530" role="img" aria-label="CueLine のアーキテクチャ:ChatGPT ウェブ会話が 1 ラウンドに 1 つのテキストコマンドを出し、CueLine が検証・記録し、現在の Codex が許可されたローカル作業を実行する。">
|
|
2
|
+
<title>CueLine のアーキテクチャ</title>
|
|
3
|
+
<style>
|
|
4
|
+
text { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "Hiragino Kaku Gothic ProN", "Yu Gothic", monospace }
|
|
5
|
+
.hd { fill: #0F1720; font-size: 17px; letter-spacing: .02em }
|
|
6
|
+
.sub { fill: #8B949E; font-size: 13.5px }
|
|
7
|
+
.rule { stroke: #E4E8EC; stroke-width: 1 }
|
|
8
|
+
.tick { stroke: #C3CAD2; stroke-width: 1 }
|
|
9
|
+
.say { fill: #C8553D; font-size: 15px }
|
|
10
|
+
.obs { fill: #4A5561; font-size: 15px }
|
|
11
|
+
.note { fill: #8B949E; font-size: 13.5px }
|
|
12
|
+
.foot { fill: #8B949E; font-size: 13.5px }
|
|
13
|
+
.cue { fill: #C8553D }
|
|
14
|
+
@media (prefers-color-scheme: dark) {
|
|
15
|
+
.hd { fill: #E6EDF3 }
|
|
16
|
+
.sub, .note, .foot { fill: #7D8590 }
|
|
17
|
+
.rule { stroke: #21262D }
|
|
18
|
+
.tick { stroke: #30363D }
|
|
19
|
+
.say { fill: #E0674C }
|
|
20
|
+
.obs { fill: #ADBAC7 }
|
|
21
|
+
.cue { fill: #E0674C }
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
24
|
+
|
|
25
|
+
<text x="40" y="48" class="hd">ChatGPT ウェブ会話(Pro)</text>
|
|
26
|
+
<text x="40" y="68" class="sub">コントローラー——計画し、5 つの動作から選び、証拠を審査する · ローカルツールなし</text>
|
|
27
|
+
<path d="M40 84H960" class="rule"/>
|
|
28
|
+
|
|
29
|
+
<path d="M340 100V158" class="tick"/>
|
|
30
|
+
<path d="M336 158 340 166 344 158z" class="cue"/>
|
|
31
|
+
<text x="364" y="124" class="say">1 ラウンドにつきテキストコマンド 1 つ</text>
|
|
32
|
+
<text x="364" y="144" class="note">dispatch · wait · inspect · complete · blocked</text>
|
|
33
|
+
|
|
34
|
+
<path d="M640 166V108" class="tick"/>
|
|
35
|
+
<path d="M636 108 640 100 644 108z" class="cue"/>
|
|
36
|
+
<text x="664" y="124" class="obs">1 ラウンドにつき観測 1 回</text>
|
|
37
|
+
<text x="664" y="144" class="note">有界な証拠 · 12,000 文字の予算</text>
|
|
38
|
+
|
|
39
|
+
<text x="40" y="196" class="hd">CueLine</text>
|
|
40
|
+
<text x="40" y="216" class="sub">ゲート——全エンベロープを検証、fail-closed な上限と fence、実行前に events.jsonl へ記録</text>
|
|
41
|
+
<path d="M40 232H960" class="rule"/>
|
|
42
|
+
|
|
43
|
+
<path d="M340 248V306" class="tick"/>
|
|
44
|
+
<path d="M336 306 340 314 344 306z" class="cue"/>
|
|
45
|
+
<text x="364" y="272" class="say">永続化された保留ジョブ</text>
|
|
46
|
+
<text x="364" y="292" class="note">advise——調整のみ · work——先に claim + start</text>
|
|
47
|
+
|
|
48
|
+
<path d="M640 314V256" class="tick"/>
|
|
49
|
+
<path d="M636 256 640 248 644 256z" class="cue"/>
|
|
50
|
+
<text x="664" y="272" class="obs">提出された結果</text>
|
|
51
|
+
<text x="664" y="292" class="note">stdout 優先 · 完全な stdout/stderr はローカルに保持</text>
|
|
52
|
+
|
|
53
|
+
<text x="40" y="346" class="hd">現在の Codex</text>
|
|
54
|
+
<text x="40" y="366" class="sub">caller——許可されたローカル作業を実行</text>
|
|
55
|
+
<path d="M40 382H960" class="rule"/>
|
|
56
|
+
|
|
57
|
+
<text x="40" y="408" class="obs">advise——読み取り専用の調整用引き渡し</text>
|
|
58
|
+
<text x="40" y="430" class="obs">work——永続 claim、start、heartbeat。自動再試行なし</text>
|
|
59
|
+
<text x="40" y="452" class="obs">process——二重承認の許可リスト経路。シェルは通さない</text>
|
|
60
|
+
|
|
61
|
+
<path d="M40 478H960" class="rule"/>
|
|
62
|
+
<text x="40" y="504" class="foot">何が起きるべきかは会話が決め、起こしてよいかはあなたのマシンが決める。</text>
|
|
63
|
+
</svg>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 530" width="1000" height="530" role="img" aria-label="CueLine 아키텍처: ChatGPT 웹 대화가 라운드마다 텍스트 명령 하나를 내리고, CueLine이 검증·기록하며, 현재 Codex가 허용된 로컬 작업을 수행합니다.">
|
|
2
|
+
<title>CueLine 아키텍처</title>
|
|
3
|
+
<style>
|
|
4
|
+
text { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "Apple SD Gothic Neo", "Malgun Gothic", monospace }
|
|
5
|
+
.hd { fill: #0F1720; font-size: 17px; letter-spacing: .02em }
|
|
6
|
+
.sub { fill: #8B949E; font-size: 13.5px }
|
|
7
|
+
.rule { stroke: #E4E8EC; stroke-width: 1 }
|
|
8
|
+
.tick { stroke: #C3CAD2; stroke-width: 1 }
|
|
9
|
+
.say { fill: #C8553D; font-size: 15px }
|
|
10
|
+
.obs { fill: #4A5561; font-size: 15px }
|
|
11
|
+
.note { fill: #8B949E; font-size: 13.5px }
|
|
12
|
+
.foot { fill: #8B949E; font-size: 13.5px }
|
|
13
|
+
.cue { fill: #C8553D }
|
|
14
|
+
@media (prefers-color-scheme: dark) {
|
|
15
|
+
.hd { fill: #E6EDF3 }
|
|
16
|
+
.sub, .note, .foot { fill: #7D8590 }
|
|
17
|
+
.rule { stroke: #21262D }
|
|
18
|
+
.tick { stroke: #30363D }
|
|
19
|
+
.say { fill: #E0674C }
|
|
20
|
+
.obs { fill: #ADBAC7 }
|
|
21
|
+
.cue { fill: #E0674C }
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
24
|
+
|
|
25
|
+
<text x="40" y="48" class="hd">ChatGPT 웹 대화 (Pro)</text>
|
|
26
|
+
<text x="40" y="68" class="sub">컨트롤러 — 계획하고, 다섯 동작 중 하나를 고르고, 증거를 심사 · 로컬 도구 없음</text>
|
|
27
|
+
<path d="M40 84H960" class="rule"/>
|
|
28
|
+
|
|
29
|
+
<path d="M340 100V158" class="tick"/>
|
|
30
|
+
<path d="M336 158 340 166 344 158z" class="cue"/>
|
|
31
|
+
<text x="364" y="124" class="say">라운드당 텍스트 명령 하나</text>
|
|
32
|
+
<text x="364" y="144" class="note">dispatch · wait · inspect · complete · blocked</text>
|
|
33
|
+
|
|
34
|
+
<path d="M640 166V108" class="tick"/>
|
|
35
|
+
<path d="M636 108 640 100 644 108z" class="cue"/>
|
|
36
|
+
<text x="664" y="124" class="obs">라운드당 관측 하나</text>
|
|
37
|
+
<text x="664" y="144" class="note">제한된 증거 · 12,000자 예산</text>
|
|
38
|
+
|
|
39
|
+
<text x="40" y="196" class="hd">CueLine</text>
|
|
40
|
+
<text x="40" y="216" class="sub">게이트 — 모든 엔벨로프 검증, fail-closed 한도와 fence, 실행 전 events.jsonl 기록</text>
|
|
41
|
+
<path d="M40 232H960" class="rule"/>
|
|
42
|
+
|
|
43
|
+
<path d="M340 248V306" class="tick"/>
|
|
44
|
+
<path d="M336 306 340 314 344 306z" class="cue"/>
|
|
45
|
+
<text x="364" y="272" class="say">영속화된 대기 작업</text>
|
|
46
|
+
<text x="364" y="292" class="note">advise — 조정 전용 · work — claim + start 먼저</text>
|
|
47
|
+
|
|
48
|
+
<path d="M640 314V256" class="tick"/>
|
|
49
|
+
<path d="M636 256 640 248 644 256z" class="cue"/>
|
|
50
|
+
<text x="664" y="272" class="obs">제출된 결과</text>
|
|
51
|
+
<text x="664" y="292" class="note">stdout 우선 · 전체 stdout/stderr는 로컬에 보관</text>
|
|
52
|
+
|
|
53
|
+
<text x="40" y="346" class="hd">현재 Codex</text>
|
|
54
|
+
<text x="40" y="366" class="sub">caller — 허용된 로컬 작업 수행</text>
|
|
55
|
+
<path d="M40 382H960" class="rule"/>
|
|
56
|
+
|
|
57
|
+
<text x="40" y="408" class="obs">advise — 읽기 전용 조정 인계</text>
|
|
58
|
+
<text x="40" y="430" class="obs">work — 지속 claim, start, heartbeat; 자동 재시도 없음</text>
|
|
59
|
+
<text x="40" y="452" class="obs">process — 이중 승인 허용 목록 경로, 셸을 거치지 않음</text>
|
|
60
|
+
|
|
61
|
+
<path d="M40 478H960" class="rule"/>
|
|
62
|
+
<text x="40" y="504" class="foot">무엇이 일어나야 하는지는 대화가 정하고, 일어나도 되는지는 당신의 머신이 정합니다.</text>
|
|
63
|
+
</svg>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 530" width="1000" height="530" role="img" aria-label="CueLine 架构:ChatGPT 网页会话每轮发出一条文本指令,CueLine 校验并记录,当前 Codex 执行获准的本地工作。">
|
|
2
|
+
<title>CueLine 架构</title>
|
|
3
|
+
<style>
|
|
4
|
+
text { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "PingFang SC", "Microsoft YaHei", monospace }
|
|
5
|
+
.hd { fill: #0F1720; font-size: 17px; letter-spacing: .02em }
|
|
6
|
+
.sub { fill: #8B949E; font-size: 13.5px }
|
|
7
|
+
.rule { stroke: #E4E8EC; stroke-width: 1 }
|
|
8
|
+
.tick { stroke: #C3CAD2; stroke-width: 1 }
|
|
9
|
+
.say { fill: #C8553D; font-size: 15px }
|
|
10
|
+
.obs { fill: #4A5561; font-size: 15px }
|
|
11
|
+
.note { fill: #8B949E; font-size: 13.5px }
|
|
12
|
+
.foot { fill: #8B949E; font-size: 13.5px }
|
|
13
|
+
.cue { fill: #C8553D }
|
|
14
|
+
@media (prefers-color-scheme: dark) {
|
|
15
|
+
.hd { fill: #E6EDF3 }
|
|
16
|
+
.sub, .note, .foot { fill: #7D8590 }
|
|
17
|
+
.rule { stroke: #21262D }
|
|
18
|
+
.tick { stroke: #30363D }
|
|
19
|
+
.say { fill: #E0674C }
|
|
20
|
+
.obs { fill: #ADBAC7 }
|
|
21
|
+
.cue { fill: #E0674C }
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
24
|
+
|
|
25
|
+
<text x="40" y="48" class="hd">ChatGPT 网页会话(Pro)</text>
|
|
26
|
+
<text x="40" y="68" class="sub">控制器——规划、五选一动作、审查证据 · 没有本地工具</text>
|
|
27
|
+
<path d="M40 84H960" class="rule"/>
|
|
28
|
+
|
|
29
|
+
<path d="M340 100V158" class="tick"/>
|
|
30
|
+
<path d="M336 158 340 166 344 158z" class="cue"/>
|
|
31
|
+
<text x="364" y="124" class="say">每轮恰好一条文本指令</text>
|
|
32
|
+
<text x="364" y="144" class="note">dispatch · wait · inspect · complete · blocked</text>
|
|
33
|
+
|
|
34
|
+
<path d="M640 166V108" class="tick"/>
|
|
35
|
+
<path d="M636 108 640 100 644 108z" class="cue"/>
|
|
36
|
+
<text x="664" y="124" class="obs">每轮一份观测</text>
|
|
37
|
+
<text x="664" y="144" class="note">有界证据 · 12,000 字符预算</text>
|
|
38
|
+
|
|
39
|
+
<text x="40" y="196" class="hd">CueLine</text>
|
|
40
|
+
<text x="40" y="216" class="sub">守门人——校验每个信封、fail-closed 上限与 fence、行动前先写 events.jsonl</text>
|
|
41
|
+
<path d="M40 232H960" class="rule"/>
|
|
42
|
+
|
|
43
|
+
<path d="M340 248V306" class="tick"/>
|
|
44
|
+
<path d="M336 306 340 314 344 306z" class="cue"/>
|
|
45
|
+
<text x="364" y="272" class="say">持久化的待办作业</text>
|
|
46
|
+
<text x="364" y="292" class="note">advise——仅协调 · work——先 claim + start</text>
|
|
47
|
+
|
|
48
|
+
<path d="M640 314V256" class="tick"/>
|
|
49
|
+
<path d="M636 256 640 248 644 256z" class="cue"/>
|
|
50
|
+
<text x="664" y="272" class="obs">提交的执行结果</text>
|
|
51
|
+
<text x="664" y="292" class="note">优先 stdout · 完整 stdout/stderr 留在本地</text>
|
|
52
|
+
|
|
53
|
+
<text x="40" y="346" class="hd">当前 Codex</text>
|
|
54
|
+
<text x="40" y="366" class="sub">caller——执行获准的本地工作</text>
|
|
55
|
+
<path d="M40 382H960" class="rule"/>
|
|
56
|
+
|
|
57
|
+
<text x="40" y="408" class="obs">advise——只读协调交接</text>
|
|
58
|
+
<text x="40" y="430" class="obs">work——持久 claim、start、heartbeat;绝不自动重试</text>
|
|
59
|
+
<text x="40" y="452" class="obs">process——双重授权白名单路由,不经过 shell</text>
|
|
60
|
+
|
|
61
|
+
<path d="M40 478H960" class="rule"/>
|
|
62
|
+
<text x="40" y="504" class="foot">会话决定“该发生什么”;你的机器决定“可不可以发生”。</text>
|
|
63
|
+
</svg>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 530" width="1000" height="530" role="img" aria-label="CueLine 架構:ChatGPT 網頁對話每輪發出一道文字指令,CueLine 驗證並記錄,目前的 Codex 執行獲准的本機工作。">
|
|
2
|
+
<title>CueLine 架構</title>
|
|
3
|
+
<style>
|
|
4
|
+
text { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", "PingFang TC", "Microsoft JhengHei", monospace }
|
|
5
|
+
.hd { fill: #0F1720; font-size: 17px; letter-spacing: .02em }
|
|
6
|
+
.sub { fill: #8B949E; font-size: 13.5px }
|
|
7
|
+
.rule { stroke: #E4E8EC; stroke-width: 1 }
|
|
8
|
+
.tick { stroke: #C3CAD2; stroke-width: 1 }
|
|
9
|
+
.say { fill: #C8553D; font-size: 15px }
|
|
10
|
+
.obs { fill: #4A5561; font-size: 15px }
|
|
11
|
+
.note { fill: #8B949E; font-size: 13.5px }
|
|
12
|
+
.foot { fill: #8B949E; font-size: 13.5px }
|
|
13
|
+
.cue { fill: #C8553D }
|
|
14
|
+
@media (prefers-color-scheme: dark) {
|
|
15
|
+
.hd { fill: #E6EDF3 }
|
|
16
|
+
.sub, .note, .foot { fill: #7D8590 }
|
|
17
|
+
.rule { stroke: #21262D }
|
|
18
|
+
.tick { stroke: #30363D }
|
|
19
|
+
.say { fill: #E0674C }
|
|
20
|
+
.obs { fill: #ADBAC7 }
|
|
21
|
+
.cue { fill: #E0674C }
|
|
22
|
+
}
|
|
23
|
+
</style>
|
|
24
|
+
|
|
25
|
+
<text x="40" y="48" class="hd">ChatGPT 網頁對話(Pro)</text>
|
|
26
|
+
<text x="40" y="68" class="sub">主控端——規劃、五選一動作、審查證據 · 沒有本機工具</text>
|
|
27
|
+
<path d="M40 84H960" class="rule"/>
|
|
28
|
+
|
|
29
|
+
<path d="M340 100V158" class="tick"/>
|
|
30
|
+
<path d="M336 158 340 166 344 158z" class="cue"/>
|
|
31
|
+
<text x="364" y="124" class="say">每輪恰好一道文字指令</text>
|
|
32
|
+
<text x="364" y="144" class="note">dispatch · wait · inspect · complete · blocked</text>
|
|
33
|
+
|
|
34
|
+
<path d="M640 166V108" class="tick"/>
|
|
35
|
+
<path d="M636 108 640 100 644 108z" class="cue"/>
|
|
36
|
+
<text x="664" y="124" class="obs">每輪一份觀測</text>
|
|
37
|
+
<text x="664" y="144" class="note">有界證據 · 12,000 字元預算</text>
|
|
38
|
+
|
|
39
|
+
<text x="40" y="196" class="hd">CueLine</text>
|
|
40
|
+
<text x="40" y="216" class="sub">守門者——驗證每個封包、fail-closed 上限與 fence、動手前先寫 events.jsonl</text>
|
|
41
|
+
<path d="M40 232H960" class="rule"/>
|
|
42
|
+
|
|
43
|
+
<path d="M340 248V306" class="tick"/>
|
|
44
|
+
<path d="M336 306 340 314 344 306z" class="cue"/>
|
|
45
|
+
<text x="364" y="272" class="say">持久化的待辦工作</text>
|
|
46
|
+
<text x="364" y="292" class="note">advise——僅協調 · work——先 claim + start</text>
|
|
47
|
+
|
|
48
|
+
<path d="M640 314V256" class="tick"/>
|
|
49
|
+
<path d="M636 256 640 248 644 256z" class="cue"/>
|
|
50
|
+
<text x="664" y="272" class="obs">回報的執行結果</text>
|
|
51
|
+
<text x="664" y="292" class="note">優先 stdout · 完整 stdout/stderr 留在本機</text>
|
|
52
|
+
|
|
53
|
+
<text x="40" y="346" class="hd">目前的 Codex</text>
|
|
54
|
+
<text x="40" y="366" class="sub">caller——執行獲准的本機工作</text>
|
|
55
|
+
<path d="M40 382H960" class="rule"/>
|
|
56
|
+
|
|
57
|
+
<text x="40" y="408" class="obs">advise——唯讀協調交接</text>
|
|
58
|
+
<text x="40" y="430" class="obs">work——持久 claim、start、heartbeat;絕不自動重試</text>
|
|
59
|
+
<text x="40" y="452" class="obs">process——雙重授權允許清單路由,不經過 shell</text>
|
|
60
|
+
|
|
61
|
+
<path d="M40 478H960" class="rule"/>
|
|
62
|
+
<text x="40" y="504" class="foot">對話決定「該發生什麼」;你的機器決定「可不可以發生」。</text>
|
|
63
|
+
</svg>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 424" width="1000" height="424" role="img" aria-label="CueLine run states: ready, awaiting_controller, awaiting_caller, awaiting_caller_work, complete, blocked, cancelled — and what each one means.">
|
|
2
|
+
<title>CueLine run states</title>
|
|
3
|
+
<style>
|
|
4
|
+
text { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace }
|
|
5
|
+
.hd { fill: #0F1720; font-size: 17px; letter-spacing: .02em }
|
|
6
|
+
.sub { fill: #8B949E; font-size: 13.5px }
|
|
7
|
+
.rule { stroke: #E4E8EC; stroke-width: 1 }
|
|
8
|
+
.tick { stroke: #C3CAD2; stroke-width: 1 }
|
|
9
|
+
.say { fill: #C8553D; font-size: 15px }
|
|
10
|
+
.obs { fill: #4A5561; font-size: 14px }
|
|
11
|
+
.foot { fill: #8B949E; font-size: 13.5px }
|
|
12
|
+
@media (prefers-color-scheme: dark) {
|
|
13
|
+
.hd { fill: #E6EDF3 }
|
|
14
|
+
.sub, .foot { fill: #7D8590 }
|
|
15
|
+
.rule { stroke: #21262D }
|
|
16
|
+
.tick { stroke: #30363D }
|
|
17
|
+
.say { fill: #E0674C }
|
|
18
|
+
.obs { fill: #ADBAC7 }
|
|
19
|
+
}
|
|
20
|
+
</style>
|
|
21
|
+
|
|
22
|
+
<text x="40" y="44" class="hd">Run states</text>
|
|
23
|
+
<text x="40" y="64" class="sub">status values are verbatim API strings</text>
|
|
24
|
+
<path d="M40 84H960" class="rule"/>
|
|
25
|
+
|
|
26
|
+
<text x="60" y="122" class="say">ready</text>
|
|
27
|
+
<text x="340" y="122" class="obs">created and durable; nothing sent yet</text>
|
|
28
|
+
|
|
29
|
+
<text x="60" y="156" class="say">awaiting_controller</text>
|
|
30
|
+
<text x="340" y="156" class="obs">one durable send done — observe once, never resend</text>
|
|
31
|
+
|
|
32
|
+
<text x="60" y="190" class="say">awaiting_caller</text>
|
|
33
|
+
<text x="340" y="190" class="obs">advise handoff — coordination-only, no side-effect claim</text>
|
|
34
|
+
|
|
35
|
+
<text x="60" y="224" class="say">awaiting_caller_work</text>
|
|
36
|
+
<text x="340" y="224" class="obs">work pending — unstarted until claim + start</text>
|
|
37
|
+
|
|
38
|
+
<text x="60" y="258" class="say">complete</text>
|
|
39
|
+
<text x="340" y="258" class="obs">final delivery returned verbatim; optional archive, exactly once</text>
|
|
40
|
+
|
|
41
|
+
<text x="60" y="292" class="say">blocked</text>
|
|
42
|
+
<text x="340" y="292" class="obs">the controller stopped with an explicit reason</text>
|
|
43
|
+
|
|
44
|
+
<text x="60" y="326" class="say">cancelled</text>
|
|
45
|
+
<text x="340" y="326" class="obs">durable cancellation; started ownerless work becomes ambiguous</text>
|
|
46
|
+
|
|
47
|
+
<path d="M40 352H960" class="rule"/>
|
|
48
|
+
<text x="40" y="378" class="foot">Anything ambiguous requires explicit reconcile — CueLine never resends and never guesses.</text>
|
|
49
|
+
<text x="40" y="400" class="foot">Round limit 12 by default; a non-default maxRounds is fixed when the run is created.</text>
|
|
50
|
+
</svg>
|