kiokuko 1.0.22 → 1.0.24

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.
Files changed (89) hide show
  1. package/dist/agent-file/render.d.ts +1 -1
  2. package/dist/agent-file/render.d.ts.map +1 -1
  3. package/dist/agent-file/render.js +3 -2
  4. package/dist/agent-file/render.js.map +1 -1
  5. package/dist/akinator/capabilities.d.ts.map +1 -1
  6. package/dist/akinator/capabilities.js +9 -1
  7. package/dist/akinator/capabilities.js.map +1 -1
  8. package/dist/akinator/capability-binding.d.ts.map +1 -1
  9. package/dist/akinator/capability-binding.js +2 -1
  10. package/dist/akinator/capability-binding.js.map +1 -1
  11. package/dist/assurance/codex-hooks.js +3 -3
  12. package/dist/assurance/codex-hooks.js.map +1 -1
  13. package/dist/assurance/conflicts.d.ts +27 -0
  14. package/dist/assurance/conflicts.d.ts.map +1 -0
  15. package/dist/assurance/conflicts.js +32 -0
  16. package/dist/assurance/conflicts.js.map +1 -0
  17. package/dist/assurance/contracts.d.ts +1 -0
  18. package/dist/assurance/contracts.d.ts.map +1 -1
  19. package/dist/assurance/contracts.js +1 -0
  20. package/dist/assurance/contracts.js.map +1 -1
  21. package/dist/assurance/instructions.d.ts +1 -1
  22. package/dist/assurance/instructions.d.ts.map +1 -1
  23. package/dist/assurance/instructions.js +2 -1
  24. package/dist/assurance/instructions.js.map +1 -1
  25. package/dist/assurance/refresh.d.ts.map +1 -1
  26. package/dist/assurance/refresh.js +10 -8
  27. package/dist/assurance/refresh.js.map +1 -1
  28. package/dist/assurance/service.d.ts +9 -2
  29. package/dist/assurance/service.d.ts.map +1 -1
  30. package/dist/assurance/service.js +21 -10
  31. package/dist/assurance/service.js.map +1 -1
  32. package/dist/assurance/verification-contracts.d.ts +49 -0
  33. package/dist/assurance/verification-contracts.d.ts.map +1 -0
  34. package/dist/assurance/verification-contracts.js +23 -0
  35. package/dist/assurance/verification-contracts.js.map +1 -0
  36. package/dist/assurance/verification-state.d.ts +33 -0
  37. package/dist/assurance/verification-state.d.ts.map +1 -0
  38. package/dist/assurance/verification-state.js +52 -0
  39. package/dist/assurance/verification-state.js.map +1 -0
  40. package/dist/assurance/verification.d.ts +16 -0
  41. package/dist/assurance/verification.d.ts.map +1 -0
  42. package/dist/assurance/verification.js +67 -0
  43. package/dist/assurance/verification.js.map +1 -0
  44. package/dist/context/scoped-broker.d.ts.map +1 -1
  45. package/dist/context/scoped-broker.js +10 -7
  46. package/dist/context/scoped-broker.js.map +1 -1
  47. package/dist/context/scoped-memory-use.d.ts.map +1 -1
  48. package/dist/context/scoped-memory-use.js +4 -3
  49. package/dist/context/scoped-memory-use.js.map +1 -1
  50. package/dist/mcp/request-deadline.d.ts +1 -1
  51. package/dist/mcp/request-deadline.d.ts.map +1 -1
  52. package/dist/mcp/request-deadline.js +2 -0
  53. package/dist/mcp/request-deadline.js.map +1 -1
  54. package/dist/mcp/server.d.ts.map +1 -1
  55. package/dist/mcp/server.js +17 -2
  56. package/dist/mcp/server.js.map +1 -1
  57. package/dist/memory/git-provenance.d.ts +14 -0
  58. package/dist/memory/git-provenance.d.ts.map +1 -0
  59. package/dist/memory/git-provenance.js +153 -0
  60. package/dist/memory/git-provenance.js.map +1 -0
  61. package/dist/memory/interaction-contract.d.ts.map +1 -1
  62. package/dist/memory/interaction-contract.js +5 -3
  63. package/dist/memory/interaction-contract.js.map +1 -1
  64. package/dist/memory/scoped-memory.d.ts +1 -12
  65. package/dist/memory/scoped-memory.d.ts.map +1 -1
  66. package/dist/memory/scoped-memory.js +2 -49
  67. package/dist/memory/scoped-memory.js.map +1 -1
  68. package/dist/repository/detect-root.d.ts.map +1 -1
  69. package/dist/repository/detect-root.js +2 -30
  70. package/dist/repository/detect-root.js.map +1 -1
  71. package/dist/repository/resolve-root.d.ts +7 -0
  72. package/dist/repository/resolve-root.d.ts.map +1 -0
  73. package/dist/repository/resolve-root.js +28 -0
  74. package/dist/repository/resolve-root.js.map +1 -0
  75. package/dist/server/routes/task-assurance.d.ts.map +1 -1
  76. package/dist/server/routes/task-assurance.js +4 -1
  77. package/dist/server/routes/task-assurance.js.map +1 -1
  78. package/dist/setup/render.d.ts.map +1 -1
  79. package/dist/setup/render.js +2 -1
  80. package/dist/setup/render.js.map +1 -1
  81. package/docs/correction-validation.md +147 -0
  82. package/docs/interaction-memory-validation.md +3 -0
  83. package/docs/memory-assurance.md +72 -0
  84. package/migrations/010_task_verification.sql +40 -0
  85. package/package.json +1 -1
  86. package/skills/kiokuko-soul/SKILL.md +19 -0
  87. package/skills/memory-reasoning/SKILL.md +5 -0
  88. package/skills/one-shot-software-completion/SKILL.md +8 -2
  89. package/templates/AGENTS.md +3 -3
@@ -1,3 +1,4 @@
1
+ import { type TaskVerificationReport } from './verification-state.js';
1
2
  import type { SqliteDatabase, SqliteRow } from '../db/adapter.js';
2
3
  import type { ContextDeliveryView } from '../context/delivery.js';
3
4
  export interface AssuranceState extends SqliteRow {
@@ -50,8 +51,9 @@ export declare function insertTaskEvidence(db: SqliteDatabase, input: {
50
51
  outcome: 'passed' | 'failed' | 'skipped' | 'unknown';
51
52
  exitCode: number | null;
52
53
  provenance: 'model_reported' | 'client_observed';
54
+ target?: string;
53
55
  }): string;
54
- export interface AssuranceReport {
56
+ export interface MemoryAssuranceReport {
55
57
  mode: 'legacy_unobserved' | 'tracked';
56
58
  revision: number | null;
57
59
  retrieval: string;
@@ -62,7 +64,12 @@ export interface AssuranceReport {
62
64
  complete: boolean;
63
65
  }
64
66
  /** Execution may start after decisions; passing evidence is required only for completion. */
65
- export declare function memoryReviewNextAction(report: AssuranceReport): 'refresh_memory' | 'review_memory_application' | 'proceed';
67
+ export declare function memoryReviewNextAction(report: MemoryAssuranceReport): 'refresh_memory' | 'review_memory_application' | 'proceed';
68
+ export interface AssuranceReport extends MemoryAssuranceReport {
69
+ verification: TaskVerificationReport;
70
+ completionReady: boolean | null;
71
+ }
72
+ /** complete remains memory-only; callers must use completionReady for the task. */
66
73
  export declare function taskAssuranceReport(db: SqliteDatabase, runId: string, verifyState?: boolean): AssuranceReport;
67
74
  export declare function assertAssuranceCompletion(db: SqliteDatabase, runId: string, outcome: string): void;
68
75
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/assurance/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/assurance/service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { taskVerificationReport } from './verification-state.js';
2
+ import { TaskStateConflict } from './conflicts.js';
1
3
  import { realpathSync } from 'node:fs';
2
4
  import path from 'node:path';
3
5
  import { randomUUID } from 'node:crypto';
@@ -14,7 +16,7 @@ export function assuranceState(db, runId) {
14
16
  return db.prepare('SELECT * FROM task_assurance WHERE run_id = ?').get(runId);
15
17
  }
16
18
  export function enrollAssurance(db, runId, now) {
17
- db.prepare('INSERT INTO task_assurance(run_id, updated_at) VALUES (?, ?)').run(runId, now);
19
+ db.prepare('INSERT INTO task_assurance(run_id, updated_at, verification_version) VALUES (?, ?, 1)').run(runId, now);
18
20
  }
19
21
  export function bindAssuranceDelivery(db, delivery) {
20
22
  const state = assuranceState(db, delivery.runId);
@@ -29,17 +31,17 @@ export function bindAssuranceRoot(db, runId, root, retrievalStatus) {
29
31
  return;
30
32
  const canonical = realpathSync(root);
31
33
  if (state.repository_root && state.repository_root !== canonical)
32
- throw new KiokukoError('CONFLICT', 'Run repository root changed');
34
+ throw new TaskStateConflict('repository_mismatch');
33
35
  db.prepare('UPDATE task_assurance SET repository_root = ?, retrieval_status = COALESCE(?, retrieval_status) WHERE run_id = ?')
34
36
  .run(canonical, retrievalStatus ?? null, runId);
35
37
  }
36
38
  export function assertAssuranceCwd(db, runId, cwd) {
37
39
  const run = new LedgerStore(db).readRun(runId);
38
40
  if (!run || run.status !== 'active')
39
- throw new KiokukoError('CONFLICT', 'Task assurance requires an active run');
41
+ throw new TaskStateConflict('run_not_active');
40
42
  const state = assuranceState(db, runId);
41
43
  if (!state)
42
- throw new KiokukoError('CONFLICT', 'Historical run has no assurance contract');
44
+ throw new TaskStateConflict('assurance_unavailable');
43
45
  const canonical = realpathSync(cwd);
44
46
  let root = state.repository_root;
45
47
  if (!root) {
@@ -48,8 +50,7 @@ export function assertAssuranceCwd(db, runId, cwd) {
48
50
  root = rows.find(row => canonical === row.canonical_root || canonical.startsWith(row.canonical_root + path.sep))?.canonical_root ?? null;
49
51
  }
50
52
  if (!root || (canonical !== root && !canonical.startsWith(root + path.sep)))
51
- throw new KiokukoError('CONFLICT', 'Evidence belongs to another repository');
52
- bindAssuranceRoot(db, runId, root);
53
+ throw new TaskStateConflict('repository_mismatch');
53
54
  return { ...state, repository_root: root };
54
55
  }
55
56
  export function assuranceMutation(db, input, effect) {
@@ -59,12 +60,13 @@ export function assuranceMutation(db, input, effect) {
59
60
  .get(input.runId, input.requestId);
60
61
  if (prior) {
61
62
  if (prior.request_digest !== digest)
62
- throw new KiokukoError('CONFLICT', 'Assurance request identity was reused with different content');
63
+ throw new TaskStateConflict('request_id_reused');
63
64
  return JSON.parse(prior.response_json);
64
65
  }
65
66
  const state = assertAssuranceCwd(db, input.runId, input.cwd);
66
67
  if (state.revision !== input.expectedRevision)
67
- throw new KiokukoError('CONFLICT', 'Task assurance revision changed');
68
+ throw new TaskStateConflict('assurance_revision_changed', { expectedRevision: input.expectedRevision, currentRevision: state.revision });
69
+ bindAssuranceRoot(db, input.runId, state.repository_root);
68
70
  const response = { ...effect(state), revision: state.revision + 1 };
69
71
  db.prepare('UPDATE task_assurance SET revision = ?, updated_at = ? WHERE run_id = ?')
70
72
  .run(response.revision, new Date().toISOString(), input.runId);
@@ -109,7 +111,7 @@ export function recordTaskEvidence(db, raw, provenance = 'model_reported', obser
109
111
  throw new KiokukoError('CONFLICT', 'Validation target changed');
110
112
  const evidenceId = insertTaskEvidence(db, { runId: input.runId, deliveryId: input.deliveryId, root: state.repository_root, cwd: input.cwd,
111
113
  executionDigest: observed?.executionDigest ?? canonicalContentHash(input.execution), stateDigest: input.stateDigest,
112
- outcome: input.outcome, exitCode: input.exitCode, provenance });
114
+ outcome: input.outcome, exitCode: input.exitCode, provenance, target: input.target });
113
115
  observed?.onRecorded(evidenceId);
114
116
  return { evidenceId, provenance, outcome: input.outcome };
115
117
  });
@@ -119,6 +121,7 @@ export function insertTaskEvidence(db, input) {
119
121
  const evidenceId = randomUUID();
120
122
  db.prepare('INSERT INTO task_execution_evidence VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)')
121
123
  .run(evidenceId, input.runId, input.deliveryId, input.root, realpathSync(input.cwd), input.executionDigest, input.stateDigest, input.outcome, input.exitCode, input.provenance, new Date().toISOString());
124
+ db.prepare('INSERT INTO task_execution_targets VALUES (?, ?)').run(evidenceId, input.target ?? `${process.platform}-${process.arch}`);
122
125
  return evidenceId;
123
126
  }
124
127
  /** Execution may start after decisions; passing evidence is required only for completion. */
@@ -127,7 +130,7 @@ export function memoryReviewNextAction(report) {
127
130
  return 'refresh_memory';
128
131
  return report.pending.length ? 'review_memory_application' : 'proceed';
129
132
  }
130
- export function taskAssuranceReport(db, runId, verifyState = true) {
133
+ function memoryAssuranceReport(db, runId, verifyState = true) {
131
134
  const state = assuranceState(db, runId);
132
135
  const report = { mode: state ? 'tracked' : 'legacy_unobserved', revision: state?.revision ?? null,
133
136
  retrieval: state?.retrieval_status ?? 'unobserved', pending: [], stale: [], missingVerification: [], observed: false, complete: true };
@@ -186,11 +189,19 @@ export function taskAssuranceReport(db, runId, verifyState = true) {
186
189
  report.observed = verifyState && adoptedCount > 0 && allObserved && report.complete;
187
190
  return report;
188
191
  }
192
+ /** complete remains memory-only; callers must use completionReady for the task. */
193
+ export function taskAssuranceReport(db, runId, verifyState = true) {
194
+ const memory = memoryAssuranceReport(db, runId, verifyState);
195
+ const verification = taskVerificationReport(db, runId, verifyState);
196
+ return { ...memory, verification, completionReady: verification.mode === 'legacy_unobserved' ? null : memory.complete && verification.ready };
197
+ }
189
198
  export function assertAssuranceCompletion(db, runId, outcome) {
190
199
  if (outcome !== 'completed')
191
200
  return;
192
201
  const report = taskAssuranceReport(db, runId);
193
202
  if (!report.complete)
194
203
  throw new KiokukoError('CONFLICT', 'Memory review or regression verification is incomplete', { assurance: report });
204
+ if (report.completionReady === false)
205
+ throw new TaskStateConflict('task_verification_incomplete');
195
206
  }
196
207
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/assurance/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/assurance/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import * as z from 'zod/v4';
2
+ export declare const verificationCheckSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ target: z.ZodString;
5
+ expected: z.ZodString;
6
+ method: z.ZodString;
7
+ }, z.core.$strict>;
8
+ export declare const verificationDefineSchema: z.ZodObject<{
9
+ reason: z.ZodString;
10
+ checks: z.ZodArray<z.ZodObject<{
11
+ id: z.ZodString;
12
+ target: z.ZodString;
13
+ expected: z.ZodString;
14
+ method: z.ZodString;
15
+ }, z.core.$strict>>;
16
+ runId: z.ZodString;
17
+ requestId: z.ZodString;
18
+ expectedRevision: z.ZodNumber;
19
+ cwd: z.ZodString;
20
+ }, z.core.$strict>;
21
+ export declare const verificationRecordSchema: z.ZodObject<{
22
+ contractVersion: z.ZodNumber;
23
+ checkId: z.ZodString;
24
+ target: z.ZodString;
25
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
26
+ kind: z.ZodLiteral<"local">;
27
+ evidenceId: z.ZodString;
28
+ }, z.core.$strict>, z.ZodObject<{
29
+ kind: z.ZodLiteral<"ci">;
30
+ commit: z.ZodString;
31
+ runUrl: z.ZodString;
32
+ jobUrl: z.ZodString;
33
+ conclusion: z.ZodEnum<{
34
+ cancelled: "cancelled";
35
+ unknown: "unknown";
36
+ success: "success";
37
+ skipped: "skipped";
38
+ failure: "failure";
39
+ timed_out: "timed_out";
40
+ }>;
41
+ }, z.core.$strict>], "kind">;
42
+ runId: z.ZodString;
43
+ requestId: z.ZodString;
44
+ expectedRevision: z.ZodNumber;
45
+ cwd: z.ZodString;
46
+ }, z.core.$strict>;
47
+ export type VerificationCheck = z.infer<typeof verificationCheckSchema>;
48
+ export type VerificationSource = z.infer<typeof verificationRecordSchema>['source'];
49
+ //# sourceMappingURL=verification-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-contracts.d.ts","sourceRoot":"","sources":["../../src/assurance/verification-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAS5B,eAAO,MAAM,uBAAuB;;;;;kBAAwE,CAAC;AAC7G,eAAO,MAAM,wBAAwB;;;;;;;;;;;;kBAG6F,CAAC;AACnI,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;kBAQ1B,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import * as z from 'zod/v4';
2
+ import { assuranceBase } from './contracts.js';
3
+ const text = z.string().trim().min(1).max(1000).refine(value => !/\p{Cc}/u.test(value));
4
+ const id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/u);
5
+ const reference = z.string().url().max(2000).refine(value => {
6
+ const url = new URL(value);
7
+ return url.protocol === 'https:' && !url.username && !url.password && !url.search && !url.hash;
8
+ }, 'Use an HTTPS job/run reference without credentials or query parameters');
9
+ export const verificationCheckSchema = z.object({ id, target: text, expected: text, method: text }).strict();
10
+ export const verificationDefineSchema = z.object({
11
+ ...assuranceBase, reason: text,
12
+ checks: z.array(verificationCheckSchema).min(1).max(100),
13
+ }).strict().refine(input => new Set(input.checks.map(check => check.id)).size === input.checks.length, 'Check IDs must be unique');
14
+ export const verificationRecordSchema = z.object({
15
+ ...assuranceBase, contractVersion: z.number().int().positive(), checkId: id, target: text,
16
+ source: z.discriminatedUnion('kind', [
17
+ z.object({ kind: z.literal('local'), evidenceId: z.string().min(1).max(256) }).strict(),
18
+ z.object({ kind: z.literal('ci'), commit: z.string().regex(/^[0-9a-f]{40}(?:[0-9a-f]{24})?$/u), runUrl: reference, jobUrl: reference,
19
+ conclusion: z.enum(['success', 'failure', 'cancelled', 'timed_out', 'skipped', 'unknown']),
20
+ }).strict(),
21
+ ]),
22
+ }).strict();
23
+ //# sourceMappingURL=verification-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-contracts.js","sourceRoot":"","sources":["../../src/assurance/verification-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxF,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AAClE,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACjG,CAAC,EAAE,wEAAwE,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7G,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,GAAG,aAAa,EAAE,MAAM,EAAE,IAAI;IAC9B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACzD,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AACnI,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,GAAG,aAAa,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI;IACzF,MAAM,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;QACnC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QACvF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;YAClI,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SAC3F,CAAC,CAAC,MAAM,EAAE;KACZ,CAAC;CACH,CAAC,CAAC,MAAM,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { SqliteDatabase, SqliteRow } from '../db/adapter.js';
2
+ export interface VerificationCheckRow extends SqliteRow {
3
+ check_id: string;
4
+ target: string;
5
+ expected: string;
6
+ method: string;
7
+ definition_hash: string;
8
+ }
9
+ export interface VerificationResultRow extends SqliteRow {
10
+ outcome: 'passed' | 'failed' | 'skipped' | 'unknown';
11
+ state_digest: string;
12
+ source_json: string;
13
+ provenance: 'model_reported' | 'client_observed';
14
+ }
15
+ export interface TaskVerificationReport {
16
+ mode: 'legacy_unobserved' | 'required' | 'not_required';
17
+ contractVersion: number | null;
18
+ ready: boolean;
19
+ checks: Array<{
20
+ id: string;
21
+ target: string;
22
+ expected: string;
23
+ method: string;
24
+ status: 'pending' | 'passed' | 'failed' | 'skipped' | 'unknown';
25
+ stale: boolean;
26
+ provenance: 'model_reported' | 'client_observed' | null;
27
+ }>;
28
+ }
29
+ export declare function verificationVersion(db: SqliteDatabase, runId: string): number | null;
30
+ /** Remote results can describe this checkout only at the same clean commit. */
31
+ export declare function matchesCiCommit(root: string, commit: string): boolean;
32
+ export declare function taskVerificationReport(db: SqliteDatabase, runId: string, verifyState: boolean): TaskVerificationReport;
33
+ //# sourceMappingURL=verification-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-state.d.ts","sourceRoot":"","sources":["../../src/assurance/verification-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKlE,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;CAC7F;AACD,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAChG,UAAU,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;CAClD;AACD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,mBAAmB,GAAG,UAAU,GAAG,cAAc,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxF,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAC5B,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAC7D,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAChF,UAAU,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,IAAI,CAAC;KACzD,CAAC,CAAC;CACJ;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpF;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,sBAAsB,CAiCtH"}
@@ -0,0 +1,52 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ import { readContextBrokerRunState } from '../context/broker.js';
3
+ import { repositoryStateDigest } from './snapshot.js';
4
+ export function verificationVersion(db, runId) {
5
+ return db.prepare('SELECT MAX(version) version FROM task_verification_contracts WHERE run_id=?')
6
+ .get(runId)?.version ?? null;
7
+ }
8
+ /** Remote results can describe this checkout only at the same clean commit. */
9
+ export function matchesCiCommit(root, commit) {
10
+ const options = { encoding: 'utf8', timeout: 5000, maxBuffer: 4 * 1024 * 1024 };
11
+ const head = spawnSync('git', ['-C', root, 'rev-parse', 'HEAD'], options);
12
+ const status = spawnSync('git', ['-C', root, 'status', '--porcelain', '--untracked-files=all'], options);
13
+ return head.status === 0 && status.status === 0 && head.stdout.trim() === commit && status.stdout.trim() === '';
14
+ }
15
+ export function taskVerificationReport(db, runId, verifyState) {
16
+ const state = db.prepare('SELECT verification_version, repository_root, observed_changes FROM task_assurance WHERE run_id=?')
17
+ .get(runId);
18
+ const empty = { contractVersion: null, checks: [] };
19
+ if (!state?.verification_version)
20
+ return { ...empty, mode: 'legacy_unobserved', ready: false };
21
+ const profile = readContextBrokerRunState(db, runId).taskProfile;
22
+ const version = verificationVersion(db, runId);
23
+ const required = profile.taskType === 'build' || profile.taskType === 'debug' || state.observed_changes === 1 || version !== null;
24
+ if (!required)
25
+ return { ...empty, mode: 'not_required', ready: true };
26
+ if (version === null)
27
+ return { ...empty, mode: 'required', ready: false };
28
+ const definitions = db.prepare('SELECT * FROM task_verification_checks WHERE run_id=? AND contract_version=? ORDER BY check_id')
29
+ .all(runId, version);
30
+ let digest;
31
+ const checks = definitions.map(check => {
32
+ // Select the latest result before comparing definitions: changing a check back
33
+ // must not resurrect a superseded success from an older definition.
34
+ const result = db.prepare('SELECT * FROM task_verification_results WHERE run_id=? AND check_id=? ORDER BY sequence DESC LIMIT 1')
35
+ .get(runId, check.check_id);
36
+ let stale = false;
37
+ let status = 'pending';
38
+ if (result) {
39
+ stale = result.definition_hash !== check.definition_hash || !state.repository_root;
40
+ if (!stale && verifyState && state.repository_root) {
41
+ digest ??= repositoryStateDigest(state.repository_root);
42
+ const source = JSON.parse(result.source_json);
43
+ stale = result.state_digest !== digest || (source.kind === 'ci' && !matchesCiCommit(state.repository_root, source.commit));
44
+ }
45
+ status = stale ? 'pending' : !verifyState ? 'unknown' : result.outcome;
46
+ }
47
+ return { id: check.check_id, target: check.target, expected: check.expected, method: check.method,
48
+ status, stale, provenance: result?.provenance ?? null };
49
+ });
50
+ return { mode: 'required', contractVersion: version, checks, ready: checks.length > 0 && checks.every(check => check.status === 'passed') };
51
+ }
52
+ //# sourceMappingURL=verification-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-state.js","sourceRoot":"","sources":["../../src/assurance/verification-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SqliteDatabase } from '../db/adapter.js';
2
+ export declare function defineTaskVerification(db: SqliteDatabase, raw: unknown): {
3
+ contractVersion: number;
4
+ checkCount: number;
5
+ provenance: "model_reported";
6
+ } & {
7
+ revision: number;
8
+ };
9
+ export declare function recordTaskVerification(db: SqliteDatabase, raw: unknown): {
10
+ recorded: boolean;
11
+ outcome: "failed" | "unknown" | "passed" | "skipped";
12
+ provenance: "model_reported";
13
+ } & {
14
+ revision: number;
15
+ };
16
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/assurance/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAWlE,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO;;;;;;EAoBtE;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO;;;;;;EA+BtE"}
@@ -0,0 +1,67 @@
1
+ import { canonicalContentHash } from '../serialization/validate.js';
2
+ import { sanitizeJson } from '../security/sanitize.js';
3
+ import { KiokukoError } from '../errors.js';
4
+ import { assuranceMutation } from './service.js';
5
+ import { parseAssurance } from './contracts.js';
6
+ import { TaskStateConflict } from './conflicts.js';
7
+ import { repositoryStateDigest } from './snapshot.js';
8
+ import { verificationDefineSchema, verificationRecordSchema } from './verification-contracts.js';
9
+ import { matchesCiCommit, verificationVersion } from './verification-state.js';
10
+ export function defineTaskVerification(db, raw) {
11
+ const input = parseAssurance(verificationDefineSchema, raw);
12
+ return assuranceMutation(db, input, () => {
13
+ const priorVersion = verificationVersion(db, input.runId);
14
+ const version = (priorVersion ?? 0) + 1;
15
+ const clean = sanitizeJson({ reason: input.reason, checks: input.checks }).value;
16
+ // Do not silently change identities while sanitizing untrusted descriptions.
17
+ if (canonicalContentHash(clean) !== canonicalContentHash({ reason: input.reason, checks: input.checks }))
18
+ throw new KiokukoError('SECURITY_REJECTION', 'Verification descriptions contain private or secret-like content');
19
+ db.prepare('INSERT INTO task_verification_contracts VALUES (?, ?, ?, ?)').run(input.runId, version, clean.reason, new Date().toISOString());
20
+ const insert = db.prepare('INSERT INTO task_verification_checks VALUES (?, ?, ?, ?, ?, ?, ?)');
21
+ for (const check of clean.checks) {
22
+ const prior = priorVersion === null ? undefined : db.prepare('SELECT * FROM task_verification_checks WHERE run_id=? AND contract_version=? AND check_id=?')
23
+ .get(input.runId, priorVersion, check.id);
24
+ const unchanged = prior?.target === check.target && prior.expected === check.expected && prior.method === check.method;
25
+ const hash = unchanged ? prior.definition_hash : canonicalContentHash({ check, version });
26
+ insert.run(input.runId, version, check.id, check.target, check.expected, check.method, hash);
27
+ }
28
+ return { contractVersion: version, checkCount: clean.checks.length, provenance: 'model_reported' };
29
+ });
30
+ }
31
+ export function recordTaskVerification(db, raw) {
32
+ const input = parseAssurance(verificationRecordSchema, raw);
33
+ return assuranceMutation(db, input, state => {
34
+ if (verificationVersion(db, input.runId) !== input.contractVersion)
35
+ throw new TaskStateConflict('verification_contract_changed');
36
+ const check = db.prepare('SELECT * FROM task_verification_checks WHERE run_id=? AND contract_version=? AND check_id=?')
37
+ .get(input.runId, input.contractVersion, input.checkId);
38
+ if (!check || check.target !== input.target)
39
+ throw new TaskStateConflict('verification_target_mismatch');
40
+ const digest = repositoryStateDigest(state.repository_root);
41
+ let outcome;
42
+ let provenance = 'model_reported';
43
+ if (input.source.kind === 'local') {
44
+ const evidence = db.prepare('SELECT e.*, t.target FROM task_execution_evidence e LEFT JOIN task_execution_targets t USING(evidence_id) WHERE e.evidence_id=?')
45
+ .get(input.source.evidenceId);
46
+ if (!evidence || evidence.run_id !== input.runId || evidence.repository_root !== state.repository_root
47
+ || evidence.state_digest !== digest || evidence.target !== input.target)
48
+ throw new TaskStateConflict('verification_target_mismatch');
49
+ outcome = evidence.outcome;
50
+ if (outcome === 'passed' && evidence.exit_code !== 0)
51
+ outcome = 'unknown';
52
+ provenance = evidence.provenance;
53
+ }
54
+ else {
55
+ if (!matchesCiCommit(state.repository_root, input.source.commit))
56
+ throw new TaskStateConflict('verification_target_mismatch');
57
+ outcome = input.source.conclusion === 'success' ? 'passed'
58
+ : input.source.conclusion === 'skipped' ? 'skipped'
59
+ : input.source.conclusion === 'unknown' ? 'unknown' : 'failed';
60
+ }
61
+ db.prepare(`INSERT INTO task_verification_results
62
+ (run_id, contract_version, check_id, definition_hash, target, outcome, state_digest, source_json, provenance, created_at)
63
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.runId, input.contractVersion, input.checkId, check.definition_hash, input.target, outcome, digest, JSON.stringify(input.source), provenance, new Date().toISOString());
64
+ return { recorded: true, outcome, provenance };
65
+ });
66
+ }
67
+ //# sourceMappingURL=verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/assurance/verification.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-broker.d.ts","sourceRoot":"","sources":["../../src/context/scoped-broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scoped-broker.d.ts","sourceRoot":"","sources":["../../src/context/scoped-broker.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { TaskStateConflict } from '../assurance/conflicts.js';
1
2
  import { indexArtifact, observeIndex, formatIndexSourceReferences } from '../memory/index-state.js';
2
3
  import { withImmediateTransaction } from '../db/transaction.js';
3
4
  import { KiokukoError } from '../errors.js';
@@ -214,7 +215,7 @@ function feedbackScore(database, entryId) {
214
215
  }
215
216
  function assertScopedSelectionState(database, workspaces, expectedHash) {
216
217
  if (contextRetrievalStateHash(database, workspaces, { includeEcosystem: workspaces.length > 0 }) !== expectedHash) {
217
- throw new KiokukoError('CONFLICT', 'Scoped context catalog changed after ranking');
218
+ throw new TaskStateConflict('retrieval_state_changed');
218
219
  }
219
220
  }
220
221
  function fitScopedItems(ordered, limit, characterBudget, requiredSuffixes = new Map()) {
@@ -537,7 +538,7 @@ async function prepareScopedContext(database, raw, requestedRuntime) {
537
538
  if (raw.fingerprint !== undefined
538
539
  && manifestSnapshot !== undefined
539
540
  && raw.fingerprint.manifestDigest !== manifestSnapshot.manifestDigest) {
540
- throw new KiokukoError('CONFLICT', 'Project manifest changed while task context was being prepared');
541
+ throw new TaskStateConflict('retrieval_state_changed');
541
542
  }
542
543
  const fingerprint = project === undefined || manifestSnapshot === undefined
543
544
  ? undefined
@@ -545,7 +546,7 @@ async function prepareScopedContext(database, raw, requestedRuntime) {
545
546
  if (raw.fingerprint !== undefined
546
547
  && fingerprint !== undefined
547
548
  && canonicalContentHash(raw.fingerprint) !== canonicalContentHash(fingerprint)) {
548
- throw new KiokukoError('CONFLICT', 'Project manifest changed while task context was being prepared');
549
+ throw new TaskStateConflict('retrieval_state_changed');
549
550
  }
550
551
  const projectState = project === undefined || fingerprint === undefined ? null : { project, fingerprint };
551
552
  ensureGlobalWorkspace(database);
@@ -772,6 +773,8 @@ async function prepareScopedContext(database, raw, requestedRuntime) {
772
773
  }
773
774
  function assertPreparedScopedRun(database, run) {
774
775
  const current = readContextRunRetrievalState(database, run.runId);
776
+ if (current.run.status !== 'active')
777
+ throw new TaskStateConflict('run_not_active');
775
778
  if (run.status !== 'active'
776
779
  || current.run.workspace !== run.workspace
777
780
  || current.run.status !== run.status
@@ -779,18 +782,18 @@ function assertPreparedScopedRun(database, run) {
779
782
  || current.intakeSessionId !== run.intakeSessionId
780
783
  || current.profileHash !== run.profileHash
781
784
  || current.stateHash !== run.stateHash) {
782
- throw new KiokukoError('CONFLICT', 'Scoped context run changed before persistence');
785
+ throw new TaskStateConflict('retrieval_state_changed');
783
786
  }
784
787
  }
785
788
  function assertPreparedScopedState(database, prepared) {
786
789
  if (prepared.projectState !== null) {
787
790
  const manifestSnapshot = captureProjectManifestSnapshot(prepared.projectState.project);
788
791
  if (manifestSnapshot.manifestDigest !== prepared.projectState.fingerprint.manifestDigest) {
789
- throw new KiokukoError('CONFLICT', 'Scoped context project state changed after ranking');
792
+ throw new TaskStateConflict('retrieval_state_changed');
790
793
  }
791
794
  const currentFingerprint = resolveProjectFingerprint(database, prepared.projectState.project, manifestSnapshot, { readOnly: true });
792
795
  if (canonicalContentHash(currentFingerprint) !== canonicalContentHash(prepared.projectState.fingerprint)) {
793
- throw new KiokukoError('CONFLICT', 'Scoped context project state changed after ranking');
796
+ throw new TaskStateConflict('retrieval_state_changed');
794
797
  }
795
798
  }
796
799
  if (prepared.run !== null)
@@ -801,7 +804,7 @@ function assertPreparedScopedState(database, prepared) {
801
804
  entryRevision: item.revision,
802
805
  origin: item.origin,
803
806
  }) === null)) {
804
- throw new KiokukoError('CONFLICT', 'Scoped context selection changed before return');
807
+ throw new TaskStateConflict('retrieval_state_changed');
805
808
  }
806
809
  assertScopedSelectionState(database, prepared.selectionWorkspaces, prepared.retrievalStateHash);
807
810
  if (prepared.replayDelivery !== null) {