@tenphi/akno-core 0.12.0 → 0.13.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/config/default.jsonc +12 -2
- package/dist/bench/graph.d.ts +2 -0
- package/dist/bench/graph.d.ts.map +1 -1
- package/dist/bench/graph.js +4 -0
- package/dist/bench/graph.js.map +1 -1
- package/dist/bench/language-corpus-v10.d.ts +4 -0
- package/dist/bench/language-corpus-v10.d.ts.map +1 -0
- package/dist/bench/language-corpus-v10.js +569 -0
- package/dist/bench/language-corpus-v10.js.map +1 -0
- package/dist/bench/language-corpus-v11.d.ts +4 -0
- package/dist/bench/language-corpus-v11.d.ts.map +1 -0
- package/dist/bench/language-corpus-v11.js +594 -0
- package/dist/bench/language-corpus-v11.js.map +1 -0
- package/dist/bench/language-corpus-v12.d.ts +4 -0
- package/dist/bench/language-corpus-v12.d.ts.map +1 -0
- package/dist/bench/language-corpus-v12.js +584 -0
- package/dist/bench/language-corpus-v12.js.map +1 -0
- package/dist/bench/language-corpus-v13.d.ts +4 -0
- package/dist/bench/language-corpus-v13.d.ts.map +1 -0
- package/dist/bench/language-corpus-v13.js +584 -0
- package/dist/bench/language-corpus-v13.js.map +1 -0
- package/dist/bench/language-corpus-v14.d.ts +4 -0
- package/dist/bench/language-corpus-v14.d.ts.map +1 -0
- package/dist/bench/language-corpus-v14.js +584 -0
- package/dist/bench/language-corpus-v14.js.map +1 -0
- package/dist/bench/language-corpus-v15.d.ts +4 -0
- package/dist/bench/language-corpus-v15.d.ts.map +1 -0
- package/dist/bench/language-corpus-v15.js +305 -0
- package/dist/bench/language-corpus-v15.js.map +1 -0
- package/dist/bench/language-corpus-v16.d.ts +4 -0
- package/dist/bench/language-corpus-v16.d.ts.map +1 -0
- package/dist/bench/language-corpus-v16.js +305 -0
- package/dist/bench/language-corpus-v16.js.map +1 -0
- package/dist/bench/language-corpus-v17.d.ts +4 -0
- package/dist/bench/language-corpus-v17.d.ts.map +1 -0
- package/dist/bench/language-corpus-v17.js +305 -0
- package/dist/bench/language-corpus-v17.js.map +1 -0
- package/dist/bench/language-corpus-v18.d.ts +4 -0
- package/dist/bench/language-corpus-v18.d.ts.map +1 -0
- package/dist/bench/language-corpus-v18.js +305 -0
- package/dist/bench/language-corpus-v18.js.map +1 -0
- package/dist/bench/language-corpus-v19.d.ts +4 -0
- package/dist/bench/language-corpus-v19.d.ts.map +1 -0
- package/dist/bench/language-corpus-v19.js +310 -0
- package/dist/bench/language-corpus-v19.js.map +1 -0
- package/dist/bench/language-corpus-v2.d.ts +12 -0
- package/dist/bench/language-corpus-v2.d.ts.map +1 -0
- package/dist/bench/language-corpus-v2.js +146 -0
- package/dist/bench/language-corpus-v2.js.map +1 -0
- package/dist/bench/language-corpus-v20.d.ts +4 -0
- package/dist/bench/language-corpus-v20.d.ts.map +1 -0
- package/dist/bench/language-corpus-v20.js +310 -0
- package/dist/bench/language-corpus-v20.js.map +1 -0
- package/dist/bench/language-corpus-v21.d.ts +4 -0
- package/dist/bench/language-corpus-v21.d.ts.map +1 -0
- package/dist/bench/language-corpus-v21.js +310 -0
- package/dist/bench/language-corpus-v21.js.map +1 -0
- package/dist/bench/language-corpus-v22.d.ts +4 -0
- package/dist/bench/language-corpus-v22.d.ts.map +1 -0
- package/dist/bench/language-corpus-v22.js +330 -0
- package/dist/bench/language-corpus-v22.js.map +1 -0
- package/dist/bench/language-corpus-v3.d.ts +4 -0
- package/dist/bench/language-corpus-v3.d.ts.map +1 -0
- package/dist/bench/language-corpus-v3.js +184 -0
- package/dist/bench/language-corpus-v3.js.map +1 -0
- package/dist/bench/language-corpus-v4.d.ts +4 -0
- package/dist/bench/language-corpus-v4.d.ts.map +1 -0
- package/dist/bench/language-corpus-v4.js +111 -0
- package/dist/bench/language-corpus-v4.js.map +1 -0
- package/dist/bench/language-corpus-v5.d.ts +4 -0
- package/dist/bench/language-corpus-v5.d.ts.map +1 -0
- package/dist/bench/language-corpus-v5.js +111 -0
- package/dist/bench/language-corpus-v5.js.map +1 -0
- package/dist/bench/language-corpus-v6.d.ts +4 -0
- package/dist/bench/language-corpus-v6.d.ts.map +1 -0
- package/dist/bench/language-corpus-v6.js +111 -0
- package/dist/bench/language-corpus-v6.js.map +1 -0
- package/dist/bench/language-corpus-v7.d.ts +4 -0
- package/dist/bench/language-corpus-v7.d.ts.map +1 -0
- package/dist/bench/language-corpus-v7.js +150 -0
- package/dist/bench/language-corpus-v7.js.map +1 -0
- package/dist/bench/language-corpus-v8.d.ts +4 -0
- package/dist/bench/language-corpus-v8.d.ts.map +1 -0
- package/dist/bench/language-corpus-v8.js +150 -0
- package/dist/bench/language-corpus-v8.js.map +1 -0
- package/dist/bench/language-corpus-v9.d.ts +4 -0
- package/dist/bench/language-corpus-v9.d.ts.map +1 -0
- package/dist/bench/language-corpus-v9.js +150 -0
- package/dist/bench/language-corpus-v9.js.map +1 -0
- package/dist/bench/language-corpus.d.ts +20 -0
- package/dist/bench/language-corpus.d.ts.map +1 -0
- package/dist/bench/language-corpus.js +205 -0
- package/dist/bench/language-corpus.js.map +1 -0
- package/dist/bench/language-review.d.ts +260 -0
- package/dist/bench/language-review.d.ts.map +1 -0
- package/dist/bench/language-review.js +591 -0
- package/dist/bench/language-review.js.map +1 -0
- package/dist/bench/language.d.ts +371 -0
- package/dist/bench/language.d.ts.map +1 -0
- package/dist/bench/language.js +484 -0
- package/dist/bench/language.js.map +1 -0
- package/dist/config/load.js +5 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +3 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/index/derive.d.ts.map +1 -1
- package/dist/index/derive.js +14 -5
- package/dist/index/derive.js.map +1 -1
- package/dist/index/graph.d.ts.map +1 -1
- package/dist/index/graph.js +3 -0
- package/dist/index/graph.js.map +1 -1
- package/dist/index/indexer.d.ts.map +1 -1
- package/dist/index/indexer.js +6 -1
- package/dist/index/indexer.js.map +1 -1
- package/dist/ingest/extract.d.ts.map +1 -1
- package/dist/ingest/extract.js +3 -1
- package/dist/ingest/extract.js.map +1 -1
- package/dist/kb/line-facts.d.ts.map +1 -1
- package/dist/kb/line-facts.js +2 -0
- package/dist/kb/line-facts.js.map +1 -1
- package/dist/kb/managed-lines.d.ts.map +1 -1
- package/dist/kb/managed-lines.js +3 -2
- package/dist/kb/managed-lines.js.map +1 -1
- package/dist/kb/prose.d.ts +12 -0
- package/dist/kb/prose.d.ts.map +1 -0
- package/dist/kb/prose.js +213 -0
- package/dist/kb/prose.js.map +1 -0
- package/dist/maintenance/conflicts.d.ts +1 -1
- package/dist/maintenance/curate.d.ts +1 -0
- package/dist/maintenance/curate.d.ts.map +1 -1
- package/dist/maintenance/curate.js +28 -1
- package/dist/maintenance/curate.js.map +1 -1
- package/dist/maintenance/dream.d.ts.map +1 -1
- package/dist/maintenance/dream.js +6 -1
- package/dist/maintenance/dream.js.map +1 -1
- package/dist/maintenance/plans.d.ts.map +1 -1
- package/dist/maintenance/plans.js +2 -0
- package/dist/maintenance/plans.js.map +1 -1
- package/dist/maintenance/revision-language.d.ts +4 -0
- package/dist/maintenance/revision-language.d.ts.map +1 -0
- package/dist/maintenance/revision-language.js +50 -0
- package/dist/maintenance/revision-language.js.map +1 -0
- package/dist/memory/action-agency.d.ts +5 -0
- package/dist/memory/action-agency.d.ts.map +1 -0
- package/dist/memory/action-agency.js +76 -0
- package/dist/memory/action-agency.js.map +1 -0
- package/dist/memory/clause-ending.d.ts +4 -0
- package/dist/memory/clause-ending.d.ts.map +1 -0
- package/dist/memory/clause-ending.js +6 -0
- package/dist/memory/clause-ending.js.map +1 -0
- package/dist/memory/counterfactual-wording.d.ts +4 -0
- package/dist/memory/counterfactual-wording.d.ts.map +1 -0
- package/dist/memory/counterfactual-wording.js +101 -0
- package/dist/memory/counterfactual-wording.js.map +1 -0
- package/dist/memory/coverage-roles.d.ts +3 -0
- package/dist/memory/coverage-roles.d.ts.map +1 -0
- package/dist/memory/coverage-roles.js +28 -0
- package/dist/memory/coverage-roles.js.map +1 -0
- package/dist/memory/intent.d.ts +1 -0
- package/dist/memory/intent.d.ts.map +1 -1
- package/dist/memory/intent.js +52 -4
- package/dist/memory/intent.js.map +1 -1
- package/dist/memory/named-actor.d.ts +2 -0
- package/dist/memory/named-actor.d.ts.map +1 -0
- package/dist/memory/named-actor.js +9 -0
- package/dist/memory/named-actor.js.map +1 -0
- package/dist/memory/personal-negative-actions.d.ts +3 -0
- package/dist/memory/personal-negative-actions.d.ts.map +1 -0
- package/dist/memory/personal-negative-actions.js +67 -0
- package/dist/memory/personal-negative-actions.js.map +1 -0
- package/dist/memory/projection.d.ts.map +1 -1
- package/dist/memory/projection.js +10 -2
- package/dist/memory/projection.js.map +1 -1
- package/dist/memory/prose-projection.d.ts +6 -0
- package/dist/memory/prose-projection.d.ts.map +1 -0
- package/dist/memory/prose-projection.js +34 -0
- package/dist/memory/prose-projection.js.map +1 -0
- package/dist/memory/report-uncertainty.d.ts +3 -0
- package/dist/memory/report-uncertainty.d.ts.map +1 -0
- package/dist/memory/report-uncertainty.js +67 -0
- package/dist/memory/report-uncertainty.js.map +1 -0
- package/dist/memory/reporting-roles.d.ts +3 -0
- package/dist/memory/reporting-roles.d.ts.map +1 -0
- package/dist/memory/reporting-roles.js +39 -0
- package/dist/memory/reporting-roles.js.map +1 -0
- package/dist/memory/retention-source-frame.d.ts +8 -0
- package/dist/memory/retention-source-frame.d.ts.map +1 -0
- package/dist/memory/retention-source-frame.js +72 -0
- package/dist/memory/retention-source-frame.js.map +1 -0
- package/dist/models/client.d.ts +12 -3
- package/dist/models/client.d.ts.map +1 -1
- package/dist/models/client.js +142 -6
- package/dist/models/client.js.map +1 -1
- package/dist/models/language-audit.d.ts +78 -0
- package/dist/models/language-audit.d.ts.map +1 -0
- package/dist/models/language-audit.js +139 -0
- package/dist/models/language-audit.js.map +1 -0
- package/dist/models/language.d.ts +12 -0
- package/dist/models/language.d.ts.map +1 -0
- package/dist/models/language.js +106 -0
- package/dist/models/language.js.map +1 -0
- package/dist/models/semantic-verdict.d.ts +53 -0
- package/dist/models/semantic-verdict.d.ts.map +1 -0
- package/dist/models/semantic-verdict.js +190 -0
- package/dist/models/semantic-verdict.js.map +1 -0
- package/dist/ops/answer-record-rendering.d.ts +73 -0
- package/dist/ops/answer-record-rendering.d.ts.map +1 -0
- package/dist/ops/answer-record-rendering.js +149 -0
- package/dist/ops/answer-record-rendering.js.map +1 -0
- package/dist/ops/answer-source-audit.d.ts +354 -0
- package/dist/ops/answer-source-audit.d.ts.map +1 -0
- package/dist/ops/answer-source-audit.js +328 -0
- package/dist/ops/answer-source-audit.js.map +1 -0
- package/dist/ops/answer.d.ts +2 -2
- package/dist/ops/answer.d.ts.map +1 -1
- package/dist/ops/answer.js +1032 -114
- package/dist/ops/answer.js.map +1 -1
- package/dist/ops/context.d.ts.map +1 -1
- package/dist/ops/context.js +7 -0
- package/dist/ops/context.js.map +1 -1
- package/dist/ops/graph.d.ts.map +1 -1
- package/dist/ops/graph.js +35 -4
- package/dist/ops/graph.js.map +1 -1
- package/dist/ops/read.d.ts.map +1 -1
- package/dist/ops/read.js +5 -2
- package/dist/ops/read.js.map +1 -1
- package/dist/ops/recall.d.ts.map +1 -1
- package/dist/ops/recall.js +10 -0
- package/dist/ops/recall.js.map +1 -1
- package/dist/ops/remember.d.ts +2 -1
- package/dist/ops/remember.d.ts.map +1 -1
- package/dist/ops/remember.js +48 -33
- package/dist/ops/remember.js.map +1 -1
- package/dist/ops/retain.d.ts +3 -1
- package/dist/ops/retain.d.ts.map +1 -1
- package/dist/ops/retain.js +56 -44
- package/dist/ops/retain.js.map +1 -1
- package/dist/recall/assemble.d.ts +1 -0
- package/dist/recall/assemble.d.ts.map +1 -1
- package/dist/recall/assemble.js +19 -2
- package/dist/recall/assemble.js.map +1 -1
- package/dist/store/db.d.ts.map +1 -1
- package/dist/store/db.js +3 -1
- package/dist/store/db.js.map +1 -1
- package/dist/store/migrations.d.ts +2 -1
- package/dist/store/migrations.d.ts.map +1 -1
- package/dist/store/migrations.js +11 -1
- package/dist/store/migrations.js.map +1 -1
- package/dist/timeline/clock.d.ts.map +1 -1
- package/dist/timeline/clock.js +2 -0
- package/dist/timeline/clock.js.map +1 -1
- package/dist/timeline/eligibility.js +4 -4
- package/dist/timeline/eligibility.js.map +1 -1
- package/dist/timeline/source-clock.d.ts +5 -0
- package/dist/timeline/source-clock.d.ts.map +1 -0
- package/dist/timeline/source-clock.js +179 -0
- package/dist/timeline/source-clock.js.map +1 -0
- package/dist/write/fictional-case-identity.d.ts +10 -0
- package/dist/write/fictional-case-identity.d.ts.map +1 -0
- package/dist/write/fictional-case-identity.js +84 -0
- package/dist/write/fictional-case-identity.js.map +1 -0
- package/dist/write/managed-memory.js +1 -1
- package/dist/write/managed-memory.js.map +1 -1
- package/dist/write/retain-clock-repair.d.ts +48 -0
- package/dist/write/retain-clock-repair.d.ts.map +1 -0
- package/dist/write/retain-clock-repair.js +175 -0
- package/dist/write/retain-clock-repair.js.map +1 -0
- package/dist/write/retain.d.ts +21 -10
- package/dist/write/retain.d.ts.map +1 -1
- package/dist/write/retain.js +1220 -70
- package/dist/write/retain.js.map +1 -1
- package/dist/write/retained-relations.d.ts +7 -0
- package/dist/write/retained-relations.d.ts.map +1 -0
- package/dist/write/retained-relations.js +38 -0
- package/dist/write/retained-relations.js.map +1 -0
- package/dist/write/retained-spans.d.ts +5 -0
- package/dist/write/retained-spans.d.ts.map +1 -0
- package/dist/write/retained-spans.js +30 -0
- package/dist/write/retained-spans.js.map +1 -0
- package/dist/write/retained-time.d.ts +4 -0
- package/dist/write/retained-time.d.ts.map +1 -0
- package/dist/write/retained-time.js +10 -0
- package/dist/write/retained-time.js.map +1 -0
- package/dist/write/retention-frame-audit.d.ts +25 -0
- package/dist/write/retention-frame-audit.d.ts.map +1 -0
- package/dist/write/retention-frame-audit.js +43 -0
- package/dist/write/retention-frame-audit.js.map +1 -0
- package/dist/write/retention-negative-evidence.d.ts +222 -0
- package/dist/write/retention-negative-evidence.d.ts.map +1 -0
- package/dist/write/retention-negative-evidence.js +122 -0
- package/dist/write/retention-negative-evidence.js.map +1 -0
- package/dist/write/retention-report-limits.d.ts +65 -0
- package/dist/write/retention-report-limits.d.ts.map +1 -0
- package/dist/write/retention-report-limits.js +71 -0
- package/dist/write/retention-report-limits.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { RetainCandidate } from './retain.ts';
|
|
3
|
+
/** Negative decisions must name immutable bytes, never the verifier's own comparison paraphrase. */
|
|
4
|
+
export declare function retentionNegativeEvidence(candidate: RetainCandidate, hasRepairObligation: boolean): {
|
|
5
|
+
fields: {
|
|
6
|
+
mismatches: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
7
|
+
kind: z.ZodEnum<{
|
|
8
|
+
unsupported_content: "unsupported_content";
|
|
9
|
+
}>;
|
|
10
|
+
source: z.ZodNull;
|
|
11
|
+
candidate: z.ZodUnion<readonly [z.ZodObject<{
|
|
12
|
+
kind: z.ZodEnum<{
|
|
13
|
+
text: "text";
|
|
14
|
+
}>;
|
|
15
|
+
exact_excerpt: z.ZodString;
|
|
16
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
17
|
+
kind: z.ZodEnum<{
|
|
18
|
+
metadata: "metadata";
|
|
19
|
+
}>;
|
|
20
|
+
metadata_id: z.ZodEnum<{
|
|
21
|
+
[x: string]: string;
|
|
22
|
+
}>;
|
|
23
|
+
}, z.core.$strict>]>;
|
|
24
|
+
dimension: z.ZodEnum<{
|
|
25
|
+
proposition_supported: "proposition_supported";
|
|
26
|
+
action_arguments_preserved: "action_arguments_preserved";
|
|
27
|
+
qualification_scope_preserved: "qualification_scope_preserved";
|
|
28
|
+
}>;
|
|
29
|
+
detail: z.ZodString;
|
|
30
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
31
|
+
kind: z.ZodEnum<{
|
|
32
|
+
omitted_scope: "omitted_scope";
|
|
33
|
+
}>;
|
|
34
|
+
source: z.ZodObject<{
|
|
35
|
+
frame_id: z.ZodEnum<{
|
|
36
|
+
[x: string]: string;
|
|
37
|
+
}>;
|
|
38
|
+
exact_excerpt: z.ZodString;
|
|
39
|
+
}, z.core.$strict>;
|
|
40
|
+
candidate: z.ZodNull;
|
|
41
|
+
dimension: z.ZodEnum<{
|
|
42
|
+
proposition_supported: "proposition_supported";
|
|
43
|
+
action_arguments_preserved: "action_arguments_preserved";
|
|
44
|
+
qualification_scope_preserved: "qualification_scope_preserved";
|
|
45
|
+
}>;
|
|
46
|
+
detail: z.ZodString;
|
|
47
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
48
|
+
kind: z.ZodEnum<{
|
|
49
|
+
changed_value: "changed_value";
|
|
50
|
+
changed_action_or_role: "changed_action_or_role";
|
|
51
|
+
changed_qualification: "changed_qualification";
|
|
52
|
+
changed_repair_proposition: "changed_repair_proposition";
|
|
53
|
+
}>;
|
|
54
|
+
source: z.ZodObject<{
|
|
55
|
+
frame_id: z.ZodEnum<{
|
|
56
|
+
[x: string]: string;
|
|
57
|
+
}>;
|
|
58
|
+
exact_excerpt: z.ZodString;
|
|
59
|
+
}, z.core.$strict>;
|
|
60
|
+
candidate: z.ZodUnion<readonly [z.ZodObject<{
|
|
61
|
+
kind: z.ZodEnum<{
|
|
62
|
+
text: "text";
|
|
63
|
+
}>;
|
|
64
|
+
exact_excerpt: z.ZodString;
|
|
65
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
66
|
+
kind: z.ZodEnum<{
|
|
67
|
+
metadata: "metadata";
|
|
68
|
+
}>;
|
|
69
|
+
metadata_id: z.ZodEnum<{
|
|
70
|
+
[x: string]: string;
|
|
71
|
+
}>;
|
|
72
|
+
}, z.core.$strict>]>;
|
|
73
|
+
dimension: z.ZodEnum<{
|
|
74
|
+
proposition_supported: "proposition_supported";
|
|
75
|
+
action_arguments_preserved: "action_arguments_preserved";
|
|
76
|
+
qualification_scope_preserved: "qualification_scope_preserved";
|
|
77
|
+
}>;
|
|
78
|
+
detail: z.ZodString;
|
|
79
|
+
}, z.core.$strict>]>>;
|
|
80
|
+
polarity_evidence: z.ZodNullable<z.ZodObject<{
|
|
81
|
+
source: z.ZodObject<{
|
|
82
|
+
frame_id: z.ZodEnum<{
|
|
83
|
+
[x: string]: string;
|
|
84
|
+
}>;
|
|
85
|
+
exact_excerpt: z.ZodString;
|
|
86
|
+
}, z.core.$strict>;
|
|
87
|
+
candidate_metadata_id: z.ZodEnum<{
|
|
88
|
+
polarity: "polarity";
|
|
89
|
+
}>;
|
|
90
|
+
}, z.core.$strict>>;
|
|
91
|
+
};
|
|
92
|
+
coordinates: {
|
|
93
|
+
frames: {
|
|
94
|
+
frame_id: string;
|
|
95
|
+
discourse_frame_index: number;
|
|
96
|
+
}[];
|
|
97
|
+
metadata: {
|
|
98
|
+
metadata_id: string;
|
|
99
|
+
value: string | {
|
|
100
|
+
type: "corrects" | "supersedes" | "contradicts" | "fulfills" | "answers" | "caused_by";
|
|
101
|
+
target: {
|
|
102
|
+
candidate_id: string;
|
|
103
|
+
} | {
|
|
104
|
+
memory_id: string;
|
|
105
|
+
} | {
|
|
106
|
+
fact_id: string;
|
|
107
|
+
};
|
|
108
|
+
support: {
|
|
109
|
+
quote: string;
|
|
110
|
+
item_id?: string | undefined;
|
|
111
|
+
}[];
|
|
112
|
+
}[] | {
|
|
113
|
+
precision: "unknown" | "instant" | "day" | "month" | "year";
|
|
114
|
+
relation: "occurred" | "valid" | "scheduled" | "due";
|
|
115
|
+
status: "tentative" | "scheduled" | "actual" | "planned";
|
|
116
|
+
start?: string | undefined;
|
|
117
|
+
until?: string | undefined;
|
|
118
|
+
timezone?: string | undefined;
|
|
119
|
+
mentioned_at?: string | undefined;
|
|
120
|
+
recurrence?: {
|
|
121
|
+
frequency: "daily" | "weekly" | "monthly" | "yearly";
|
|
122
|
+
interval?: number | undefined;
|
|
123
|
+
weekdays?: ("mo" | "tu" | "we" | "th" | "fr" | "sa" | "su")[] | undefined;
|
|
124
|
+
until?: string | undefined;
|
|
125
|
+
} | undefined;
|
|
126
|
+
} | {
|
|
127
|
+
speaker: string;
|
|
128
|
+
role?: "unknown" | "external" | "user" | "assistant" | undefined;
|
|
129
|
+
}[] | null | undefined;
|
|
130
|
+
}[];
|
|
131
|
+
};
|
|
132
|
+
consistent(verdict: {
|
|
133
|
+
source_selected_polarity: string;
|
|
134
|
+
mismatches: z.infer<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
135
|
+
kind: z.ZodEnum<{
|
|
136
|
+
unsupported_content: "unsupported_content";
|
|
137
|
+
}>;
|
|
138
|
+
source: z.ZodNull;
|
|
139
|
+
candidate: z.ZodUnion<readonly [z.ZodObject<{
|
|
140
|
+
kind: z.ZodEnum<{
|
|
141
|
+
text: "text";
|
|
142
|
+
}>;
|
|
143
|
+
exact_excerpt: z.ZodString;
|
|
144
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
145
|
+
kind: z.ZodEnum<{
|
|
146
|
+
metadata: "metadata";
|
|
147
|
+
}>;
|
|
148
|
+
metadata_id: z.ZodEnum<{
|
|
149
|
+
[x: string]: string;
|
|
150
|
+
}>;
|
|
151
|
+
}, z.core.$strict>]>;
|
|
152
|
+
dimension: z.ZodEnum<{
|
|
153
|
+
proposition_supported: "proposition_supported";
|
|
154
|
+
action_arguments_preserved: "action_arguments_preserved";
|
|
155
|
+
qualification_scope_preserved: "qualification_scope_preserved";
|
|
156
|
+
}>;
|
|
157
|
+
detail: z.ZodString;
|
|
158
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
159
|
+
kind: z.ZodEnum<{
|
|
160
|
+
omitted_scope: "omitted_scope";
|
|
161
|
+
}>;
|
|
162
|
+
source: z.ZodObject<{
|
|
163
|
+
frame_id: z.ZodEnum<{
|
|
164
|
+
[x: string]: string;
|
|
165
|
+
}>;
|
|
166
|
+
exact_excerpt: z.ZodString;
|
|
167
|
+
}, z.core.$strict>;
|
|
168
|
+
candidate: z.ZodNull;
|
|
169
|
+
dimension: z.ZodEnum<{
|
|
170
|
+
proposition_supported: "proposition_supported";
|
|
171
|
+
action_arguments_preserved: "action_arguments_preserved";
|
|
172
|
+
qualification_scope_preserved: "qualification_scope_preserved";
|
|
173
|
+
}>;
|
|
174
|
+
detail: z.ZodString;
|
|
175
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
176
|
+
kind: z.ZodEnum<{
|
|
177
|
+
changed_value: "changed_value";
|
|
178
|
+
changed_action_or_role: "changed_action_or_role";
|
|
179
|
+
changed_qualification: "changed_qualification";
|
|
180
|
+
changed_repair_proposition: "changed_repair_proposition";
|
|
181
|
+
}>;
|
|
182
|
+
source: z.ZodObject<{
|
|
183
|
+
frame_id: z.ZodEnum<{
|
|
184
|
+
[x: string]: string;
|
|
185
|
+
}>;
|
|
186
|
+
exact_excerpt: z.ZodString;
|
|
187
|
+
}, z.core.$strict>;
|
|
188
|
+
candidate: z.ZodUnion<readonly [z.ZodObject<{
|
|
189
|
+
kind: z.ZodEnum<{
|
|
190
|
+
text: "text";
|
|
191
|
+
}>;
|
|
192
|
+
exact_excerpt: z.ZodString;
|
|
193
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
194
|
+
kind: z.ZodEnum<{
|
|
195
|
+
metadata: "metadata";
|
|
196
|
+
}>;
|
|
197
|
+
metadata_id: z.ZodEnum<{
|
|
198
|
+
[x: string]: string;
|
|
199
|
+
}>;
|
|
200
|
+
}, z.core.$strict>]>;
|
|
201
|
+
dimension: z.ZodEnum<{
|
|
202
|
+
proposition_supported: "proposition_supported";
|
|
203
|
+
action_arguments_preserved: "action_arguments_preserved";
|
|
204
|
+
qualification_scope_preserved: "qualification_scope_preserved";
|
|
205
|
+
}>;
|
|
206
|
+
detail: z.ZodString;
|
|
207
|
+
}, z.core.$strict>]>>>;
|
|
208
|
+
polarity_evidence: z.infer<z.ZodNullable<z.ZodObject<{
|
|
209
|
+
source: z.ZodObject<{
|
|
210
|
+
frame_id: z.ZodEnum<{
|
|
211
|
+
[x: string]: string;
|
|
212
|
+
}>;
|
|
213
|
+
exact_excerpt: z.ZodString;
|
|
214
|
+
}, z.core.$strict>;
|
|
215
|
+
candidate_metadata_id: z.ZodEnum<{
|
|
216
|
+
polarity: "polarity";
|
|
217
|
+
}>;
|
|
218
|
+
}, z.core.$strict>>>;
|
|
219
|
+
}): boolean;
|
|
220
|
+
};
|
|
221
|
+
export declare const RETENTION_NEGATIVE_EVIDENCE_CONTRACT = "Each negative retention finding requires immutable evidence.\nnegative_evidence_coordinates maps candidate-local F IDs to discourse_frame indices and closed metadata IDs\n to submitted values. Reuse these exact IDs; all related candidates and comparison/audit notes are not\nthis candidate's evidence. Absent or empty metadata is not added content and has no witness ID; use\nomitted_scope with candidate:null for missing material. changed_repair_proposition is available only\nfor this candidate's actual original repair obligation. Source excerpts must be nonempty exact substrings of the named owned frame.\nCandidate text witnesses must be nonempty exact substrings of candidate.text. Every source or candidate\nexcerpt must contain a Unicode letter or number; punctuation alone witnesses no content. A metadata witness uses\n{kind:metadata, metadata_id} to point to that exact immutable catalog value; never paraphrase its value.\nFor unsupported_content use source:null and the alleged added candidate text/metadata witness. For\nomitted_scope use the required source excerpt and candidate:null; absence cannot be quoted. Every changed_*\nfinding needs both source and current candidate witnesses. changed_repair_proposition requires original\nSOURCE evidence, never the repair-original draft as authority. Keep each excerpt and explanation within\n80 UTF-16 units, with no transfer between budgets. The previous 240-unit detail allowance is partitioned.\nFor source_selected_polarity equal to immutable candidate.polarity, return polarity_evidence:null. For a\ndisagreement, give polarity_evidence with the exact governing source predicate and candidate_metadata_id\npolarity. This is independent of the three semantic booleans and never authorizes relabeling. A false\nsemantic dimension still requires exactly one mismatch; valid negatives remain final. An invented,\nforeign, missing or inconsistent witness invalidates the entire response; it cannot be dropped to accept.\nA word occurring only in your candidate_meaning or other audit prose is not in candidate.text. Inspect\nimmutable candidate bytes before claiming an addition. All-positive equal-polarity verdicts need empty\nmismatches and null polarity_evidence; no extra positive evidence record is required.";
|
|
222
|
+
//# sourceMappingURL=retention-negative-evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention-negative-evidence.d.ts","sourceRoot":"","sources":["../../src/write/retention-negative-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAanD,oGAAoG;AACpG,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAoBhC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAuDhD;QAClB,wBAAwB,EAAE,MAAM,CAAC;QACjC,UAAU,EAAE,CAAC,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAAmB,CAAC;QACvC,iBAAiB,EAAE,CAAC,CAAC,KAAK;;;;;;;;;;4BAA0B,CAAC;KACtD,GAAG,OAAO;EAoBd;AAED,eAAO,MAAM,oCAAoC,0uEAqBqC,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { semanticVerdictFields } from "../models/semantic-verdict.js";
|
|
3
|
+
// Punctuation can be exact while witnessing none of the alleged semantic content.
|
|
4
|
+
const hasContent = /[\p{L}\p{N}]/u;
|
|
5
|
+
// Providers disagree on Unicode-property regex in JSON Schema; enforce the full multilingual
|
|
6
|
+
// requirement in local parsing without exporting an incompatible wire pattern.
|
|
7
|
+
const exactText = z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.max(80)
|
|
11
|
+
.refine((value) => hasContent.test(value));
|
|
12
|
+
/** Negative decisions must name immutable bytes, never the verifier's own comparison paraphrase. */
|
|
13
|
+
export function retentionNegativeEvidence(candidate, hasRepairObligation) {
|
|
14
|
+
// Only existing semantic inputs may support a metadata finding. IDs resolve to immutable values;
|
|
15
|
+
// model-authored paraphrases, page routing and verifier summaries have no catalog entries.
|
|
16
|
+
const metadata = [
|
|
17
|
+
['kind', candidate.kind],
|
|
18
|
+
['subject', candidate.subject],
|
|
19
|
+
['polarity', candidate.polarity],
|
|
20
|
+
['discourse.commitment', candidate.discourse.commitment],
|
|
21
|
+
['discourse.disposition', candidate.discourse.disposition],
|
|
22
|
+
['epistemic.basis', candidate.epistemic.basis],
|
|
23
|
+
['attribution.source_role', candidate.attribution.source_role],
|
|
24
|
+
['attribution.source_speaker', candidate.attribution.source_speaker ?? null],
|
|
25
|
+
['attribution.chain', candidate.attribution.chain ?? []],
|
|
26
|
+
['time', candidate.time ?? null],
|
|
27
|
+
['relations', candidate.relations ?? []],
|
|
28
|
+
]
|
|
29
|
+
.filter(([, value]) => value !== null && value !== undefined && value !== '' && (!Array.isArray(value) || value.length > 0))
|
|
30
|
+
.map(([metadata_id, value]) => ({ metadata_id: metadata_id, value }));
|
|
31
|
+
const frames = candidate.discourse_frame.map((span, index) => ({
|
|
32
|
+
frame_id: `F${index + 1}`,
|
|
33
|
+
quote: span.quote,
|
|
34
|
+
}));
|
|
35
|
+
const source = z.strictObject({
|
|
36
|
+
frame_id: z.enum(frames.map(({ frame_id }) => frame_id)),
|
|
37
|
+
exact_excerpt: exactText,
|
|
38
|
+
});
|
|
39
|
+
const current = z.union([
|
|
40
|
+
z.strictObject({ kind: z.enum(['text']), exact_excerpt: exactText }),
|
|
41
|
+
z.strictObject({
|
|
42
|
+
kind: z.enum(['metadata']),
|
|
43
|
+
metadata_id: z.enum(metadata.map(({ metadata_id }) => metadata_id)),
|
|
44
|
+
}),
|
|
45
|
+
]);
|
|
46
|
+
const common = {
|
|
47
|
+
dimension: semanticVerdictFields.mismatches.element.shape.dimension,
|
|
48
|
+
// Reallocate the former 240-unit detail: 80 source, 80 candidate, 80 explanation.
|
|
49
|
+
// An absent side or catalog pointer never donates its unused allowance to another field.
|
|
50
|
+
detail: z.string().trim().min(1).max(80),
|
|
51
|
+
};
|
|
52
|
+
const mismatches = z
|
|
53
|
+
.array(z.union([
|
|
54
|
+
z.strictObject({
|
|
55
|
+
...common,
|
|
56
|
+
kind: z.enum(['unsupported_content']),
|
|
57
|
+
source: z.null(),
|
|
58
|
+
candidate: current,
|
|
59
|
+
}),
|
|
60
|
+
z.strictObject({ ...common, kind: z.enum(['omitted_scope']), source, candidate: z.null() }),
|
|
61
|
+
z.strictObject({
|
|
62
|
+
...common,
|
|
63
|
+
kind: z.enum([
|
|
64
|
+
'changed_value',
|
|
65
|
+
'changed_action_or_role',
|
|
66
|
+
'changed_qualification',
|
|
67
|
+
...(hasRepairObligation ? ['changed_repair_proposition'] : []),
|
|
68
|
+
]),
|
|
69
|
+
source,
|
|
70
|
+
candidate: current,
|
|
71
|
+
}),
|
|
72
|
+
]))
|
|
73
|
+
.max(3);
|
|
74
|
+
const polarity_evidence = z
|
|
75
|
+
.strictObject({ source, candidate_metadata_id: z.enum(['polarity']) })
|
|
76
|
+
.nullable();
|
|
77
|
+
return {
|
|
78
|
+
fields: { mismatches, polarity_evidence },
|
|
79
|
+
coordinates: {
|
|
80
|
+
frames: frames.map(({ frame_id }, index) => ({ frame_id, discourse_frame_index: index })),
|
|
81
|
+
metadata,
|
|
82
|
+
},
|
|
83
|
+
consistent(verdict) {
|
|
84
|
+
const sourcePresent = (witness) => hasContent.test(witness.exact_excerpt) &&
|
|
85
|
+
frames.some(({ frame_id, quote }) => frame_id === witness.frame_id && quote.includes(witness.exact_excerpt));
|
|
86
|
+
for (const mismatch of verdict.mismatches) {
|
|
87
|
+
if (mismatch.source && !sourcePresent(mismatch.source))
|
|
88
|
+
return false;
|
|
89
|
+
if (mismatch.candidate?.kind === 'text' &&
|
|
90
|
+
(!hasContent.test(mismatch.candidate.exact_excerpt) ||
|
|
91
|
+
!candidate.text.includes(mismatch.candidate.exact_excerpt)))
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
return verdict.source_selected_polarity === candidate.polarity
|
|
95
|
+
? verdict.polarity_evidence === null
|
|
96
|
+
: verdict.polarity_evidence !== null && sourcePresent(verdict.polarity_evidence.source);
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export const RETENTION_NEGATIVE_EVIDENCE_CONTRACT = `Each negative retention finding requires immutable evidence.
|
|
101
|
+
negative_evidence_coordinates maps candidate-local F IDs to discourse_frame indices and closed metadata IDs
|
|
102
|
+
to submitted values. Reuse these exact IDs; all related candidates and comparison/audit notes are not
|
|
103
|
+
this candidate's evidence. Absent or empty metadata is not added content and has no witness ID; use
|
|
104
|
+
omitted_scope with candidate:null for missing material. changed_repair_proposition is available only
|
|
105
|
+
for this candidate's actual original repair obligation. Source excerpts must be nonempty exact substrings of the named owned frame.
|
|
106
|
+
Candidate text witnesses must be nonempty exact substrings of candidate.text. Every source or candidate
|
|
107
|
+
excerpt must contain a Unicode letter or number; punctuation alone witnesses no content. A metadata witness uses
|
|
108
|
+
{kind:metadata, metadata_id} to point to that exact immutable catalog value; never paraphrase its value.
|
|
109
|
+
For unsupported_content use source:null and the alleged added candidate text/metadata witness. For
|
|
110
|
+
omitted_scope use the required source excerpt and candidate:null; absence cannot be quoted. Every changed_*
|
|
111
|
+
finding needs both source and current candidate witnesses. changed_repair_proposition requires original
|
|
112
|
+
SOURCE evidence, never the repair-original draft as authority. Keep each excerpt and explanation within
|
|
113
|
+
80 UTF-16 units, with no transfer between budgets. The previous 240-unit detail allowance is partitioned.
|
|
114
|
+
For source_selected_polarity equal to immutable candidate.polarity, return polarity_evidence:null. For a
|
|
115
|
+
disagreement, give polarity_evidence with the exact governing source predicate and candidate_metadata_id
|
|
116
|
+
polarity. This is independent of the three semantic booleans and never authorizes relabeling. A false
|
|
117
|
+
semantic dimension still requires exactly one mismatch; valid negatives remain final. An invented,
|
|
118
|
+
foreign, missing or inconsistent witness invalidates the entire response; it cannot be dropped to accept.
|
|
119
|
+
A word occurring only in your candidate_meaning or other audit prose is not in candidate.text. Inspect
|
|
120
|
+
immutable candidate bytes before claiming an addition. All-positive equal-polarity verdicts need empty
|
|
121
|
+
mismatches and null polarity_evidence; no extra positive evidence record is required.`;
|
|
122
|
+
//# sourceMappingURL=retention-negative-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention-negative-evidence.js","sourceRoot":"","sources":["../../src/write/retention-negative-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { RetainCandidate } from './retain.ts';
|
|
3
|
+
/** A missing lexical match asks for source comparison, not a rewrite of possibly faithful prose. */
|
|
4
|
+
export declare function retentionReportLimits(candidate: Pick<RetainCandidate, 'text' | 'discourse_frame'>): {
|
|
5
|
+
schema: z.ZodUnion<readonly [z.ZodObject<{
|
|
6
|
+
relation: z.ZodEnum<{
|
|
7
|
+
preserved: "preserved";
|
|
8
|
+
}>;
|
|
9
|
+
source: z.ZodObject<{
|
|
10
|
+
frame_id: z.ZodEnum<{
|
|
11
|
+
[x: string]: string;
|
|
12
|
+
}>;
|
|
13
|
+
exact_excerpt: z.ZodString;
|
|
14
|
+
}, z.core.$strict>;
|
|
15
|
+
candidate: z.ZodObject<{
|
|
16
|
+
exact_excerpt: z.ZodString;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
19
|
+
relation: z.ZodEnum<{
|
|
20
|
+
omitted: "omitted";
|
|
21
|
+
}>;
|
|
22
|
+
source: z.ZodObject<{
|
|
23
|
+
frame_id: z.ZodEnum<{
|
|
24
|
+
[x: string]: string;
|
|
25
|
+
}>;
|
|
26
|
+
exact_excerpt: z.ZodString;
|
|
27
|
+
}, z.core.$strict>;
|
|
28
|
+
candidate: z.ZodNull;
|
|
29
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
30
|
+
relation: z.ZodEnum<{
|
|
31
|
+
changed: "changed";
|
|
32
|
+
}>;
|
|
33
|
+
source: z.ZodObject<{
|
|
34
|
+
frame_id: z.ZodEnum<{
|
|
35
|
+
[x: string]: string;
|
|
36
|
+
}>;
|
|
37
|
+
exact_excerpt: z.ZodString;
|
|
38
|
+
}, z.core.$strict>;
|
|
39
|
+
candidate: z.ZodObject<{
|
|
40
|
+
exact_excerpt: z.ZodString;
|
|
41
|
+
}, z.core.$strict>;
|
|
42
|
+
}, z.core.$strict>]>;
|
|
43
|
+
coordinates: {
|
|
44
|
+
kind: string;
|
|
45
|
+
frame_ids: string[];
|
|
46
|
+
};
|
|
47
|
+
consistent(value: unknown, verdict: {
|
|
48
|
+
qualification_scope_preserved: boolean;
|
|
49
|
+
mismatches: readonly {
|
|
50
|
+
dimension: string;
|
|
51
|
+
kind: string;
|
|
52
|
+
source: {
|
|
53
|
+
frame_id: string;
|
|
54
|
+
exact_excerpt: string;
|
|
55
|
+
} | null;
|
|
56
|
+
candidate: {
|
|
57
|
+
kind: string;
|
|
58
|
+
exact_excerpt?: string;
|
|
59
|
+
} | null;
|
|
60
|
+
}[];
|
|
61
|
+
}): boolean;
|
|
62
|
+
preserved(value: unknown): boolean;
|
|
63
|
+
};
|
|
64
|
+
export declare const RETENTION_REPORT_LIMITS_CONTRACT = "A report_limit_concern means a finite wording recognizer\ncould not establish whether the current readable record preserves the source's personal epistemic limits.\nIt is uncertainty to resolve from the complete source, not evidence that the candidate is wrong and not\npermission to rewrite it. Only that candidate requires report_limit_alignment. Source frame IDs reuse its\nown negative_evidence_coordinates; related candidates and your audit summaries are never evidence.\n\nCompare EVERY material limit on reading, receiving evidence, confirmation and personal verification,\nincluding its actor, predicate, object and attachment. A generic report label or one preserved limit cannot\nreplace another. For preserved, point to contentful exact excerpts in an owned source frame and current\ncandidate.text expressing the corresponding limit, each within 80 UTF-16 units. All remaining limits still\nrequire full-source comparison. Exact occurrence alone does not establish semantic correspondence.\nFor omitted, give the source witness and candidate:null. For changed, give both witnesses. These negative\nbranches require qualification_scope_preserved:false and an omitted_scope or changed_qualification mismatch\nrespectively, with the identical source witness and current text witness (or null). Other negative semantic\ndimensions retain their separate required mismatches. A preserved alignment does not override any other\nnegative verdict, unsupported attribution, polarity, relation or temporal scope. Do not repair or retry.";
|
|
65
|
+
//# sourceMappingURL=retention-report-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention-report-limits.d.ts","sourceRoot":"","sources":["../../src/write/retention-report-limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQnD,oGAAoG;AACpG,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAmBrF,OAAO,WACL;QACP,6BAA6B,EAAE,OAAO,CAAC;QACvC,UAAU,EAAE,SAAS;YACnB,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,aAAa,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;YAC3D,SAAS,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,aAAa,CAAC,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;SAC5D,EAAE,CAAC;KACL,GACA,OAAO;qBA8BO,OAAO,GAAG,OAAO;EAKrC;AAED,eAAO,MAAM,gCAAgC,sgDAe4D,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const excerpt = z
|
|
3
|
+
.string()
|
|
4
|
+
.min(1)
|
|
5
|
+
.max(80)
|
|
6
|
+
.refine((text) => /[\p{L}\p{N}]/u.test(text));
|
|
7
|
+
/** A missing lexical match asks for source comparison, not a rewrite of possibly faithful prose. */
|
|
8
|
+
export function retentionReportLimits(candidate) {
|
|
9
|
+
const frames = candidate.discourse_frame.map((span, index) => ({
|
|
10
|
+
frame_id: `F${index + 1}`,
|
|
11
|
+
quote: span.quote,
|
|
12
|
+
}));
|
|
13
|
+
const source = z.strictObject({
|
|
14
|
+
frame_id: z.enum(frames.map((frame) => frame.frame_id)),
|
|
15
|
+
exact_excerpt: excerpt,
|
|
16
|
+
});
|
|
17
|
+
const current = z.strictObject({ exact_excerpt: excerpt });
|
|
18
|
+
const schema = z.union([
|
|
19
|
+
z.strictObject({ relation: z.enum(['preserved']), source, candidate: current }),
|
|
20
|
+
z.strictObject({ relation: z.enum(['omitted']), source, candidate: z.null() }),
|
|
21
|
+
z.strictObject({ relation: z.enum(['changed']), source, candidate: current }),
|
|
22
|
+
]);
|
|
23
|
+
return {
|
|
24
|
+
schema,
|
|
25
|
+
coordinates: { kind: 'readable_report_uncertainty', frame_ids: frames.map((frame) => frame.frame_id) },
|
|
26
|
+
consistent(value, verdict) {
|
|
27
|
+
const parsed = schema.safeParse(value);
|
|
28
|
+
if (!parsed.success)
|
|
29
|
+
return false;
|
|
30
|
+
const alignment = parsed.data;
|
|
31
|
+
if (!frames.some((frame) => frame.frame_id === alignment.source.frame_id &&
|
|
32
|
+
frame.quote.includes(alignment.source.exact_excerpt)))
|
|
33
|
+
return false;
|
|
34
|
+
if (alignment.candidate && !candidate.text.includes(alignment.candidate.exact_excerpt))
|
|
35
|
+
return false;
|
|
36
|
+
if (alignment.relation === 'preserved')
|
|
37
|
+
return true;
|
|
38
|
+
const mismatchKind = alignment.relation === 'omitted' ? 'omitted_scope' : 'changed_qualification';
|
|
39
|
+
return (!verdict.qualification_scope_preserved &&
|
|
40
|
+
verdict.mismatches.some((mismatch) => mismatch.dimension === 'qualification_scope_preserved' &&
|
|
41
|
+
mismatch.kind === mismatchKind &&
|
|
42
|
+
mismatch.source?.frame_id === alignment.source.frame_id &&
|
|
43
|
+
mismatch.source.exact_excerpt === alignment.source.exact_excerpt &&
|
|
44
|
+
(alignment.candidate === null
|
|
45
|
+
? mismatch.candidate === null
|
|
46
|
+
: mismatch.candidate?.kind === 'text' &&
|
|
47
|
+
mismatch.candidate.exact_excerpt === alignment.candidate.exact_excerpt)));
|
|
48
|
+
},
|
|
49
|
+
preserved(value) {
|
|
50
|
+
const parsed = schema.safeParse(value);
|
|
51
|
+
return parsed.success && parsed.data.relation === 'preserved';
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export const RETENTION_REPORT_LIMITS_CONTRACT = `A report_limit_concern means a finite wording recognizer
|
|
56
|
+
could not establish whether the current readable record preserves the source's personal epistemic limits.
|
|
57
|
+
It is uncertainty to resolve from the complete source, not evidence that the candidate is wrong and not
|
|
58
|
+
permission to rewrite it. Only that candidate requires report_limit_alignment. Source frame IDs reuse its
|
|
59
|
+
own negative_evidence_coordinates; related candidates and your audit summaries are never evidence.
|
|
60
|
+
|
|
61
|
+
Compare EVERY material limit on reading, receiving evidence, confirmation and personal verification,
|
|
62
|
+
including its actor, predicate, object and attachment. A generic report label or one preserved limit cannot
|
|
63
|
+
replace another. For preserved, point to contentful exact excerpts in an owned source frame and current
|
|
64
|
+
candidate.text expressing the corresponding limit, each within 80 UTF-16 units. All remaining limits still
|
|
65
|
+
require full-source comparison. Exact occurrence alone does not establish semantic correspondence.
|
|
66
|
+
For omitted, give the source witness and candidate:null. For changed, give both witnesses. These negative
|
|
67
|
+
branches require qualification_scope_preserved:false and an omitted_scope or changed_qualification mismatch
|
|
68
|
+
respectively, with the identical source witness and current text witness (or null). Other negative semantic
|
|
69
|
+
dimensions retain their separate required mismatches. A preserved alignment does not override any other
|
|
70
|
+
negative verdict, unsupported attribution, polarity, relation or temporal scope. Do not repair or retry.`;
|
|
71
|
+
//# sourceMappingURL=retention-report-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention-report-limits.js","sourceRoot":"","sources":["../../src/write/retention-report-limits.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tenphi/akno-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Akno — the memory layer itself: index, ops, watcher, models",
|
|
5
5
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
6
6
|
"type": "module",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"sqlite-vec": "^0.1.9",
|
|
23
23
|
"yaml": "^2.9.0",
|
|
24
24
|
"zod": "^4.4.3",
|
|
25
|
-
"@tenphi/akno-protocol": "0.
|
|
25
|
+
"@tenphi/akno-protocol": "0.13.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/better-sqlite3": "^7.6.12"
|