@fortemi/core 2026.9.5 → 2026.9.7
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/README.md +1 -1
- package/dist/index.d.ts +1705 -1508
- package/dist/index.js +2633 -675
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
- package/schemas/lifecycle-purge/contract.receipt.json +15 -0
- package/schemas/lifecycle-purge/v1.conformance.json +73 -0
- package/schemas/metadata-search/candidate/1.0.0/README.md +36 -0
- package/schemas/metadata-search/candidate/1.0.0/contract.receipt.json +38 -0
- package/schemas/metadata-search/candidate/1.0.0/evidence-locator.schema.json +50 -0
- package/schemas/metadata-search/candidate/1.0.0/evidence-resolution-vectors.json +355 -0
- package/schemas/metadata-search/candidate/1.0.0/evidence-resolution.schema.json +25 -0
- package/schemas/metadata-search/candidate/1.0.0/evidence-set-vectors.json +6095 -0
- package/schemas/metadata-search/candidate/1.0.0/evidence-set.schema.json +21 -0
- package/schemas/metadata-search/candidate/1.0.0/evidence-vectors.json +1603 -0
- package/schemas/metadata-search/candidate/1.0.0/predicate-vectors.json +919 -0
- package/schemas/metadata-search/candidate/1.0.0/predicates.schema.json +287 -0
- package/schemas/metadata-search/candidate/1.0.0/resolution.receipt.json +44 -0
- package/schemas/metadata-search/candidate/1.0.0/rest.receipt.json +51 -0
- package/schemas/metadata-search/candidate/1.0.0/search-rest-vectors.json +28 -0
- package/schemas/metadata-search/candidate/1.0.0/search-rest.schema.json +318 -0
- package/schemas/metadata-search/candidate/1.0.0/source.receipt.json +46 -0
- package/schemas/metadata-search/candidate/1.0.0/sql-scope-vectors.json +894 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fortemi/core",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.7",
|
|
4
4
|
"description": "Browser-only knowledge management core: PGlite (PostgreSQL WASM), MCP tools, hybrid search, and profile-scoped Knowledge Shard interchange.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fortemi",
|
|
@@ -58,6 +58,8 @@
|
|
|
58
58
|
"./schemas/dataset-lineage/v1": "./schemas/dataset-lineage/v1.schema.json",
|
|
59
59
|
"./schemas/dataset-materialization/v1": "./schemas/dataset-materialization/v1.schema.json",
|
|
60
60
|
"./schemas/source-note-upsert/v1-conformance": "./schemas/source-note-upsert/v1.conformance.json",
|
|
61
|
+
"./schemas/lifecycle-purge/v1-conformance": "./schemas/lifecycle-purge/v1.conformance.json",
|
|
62
|
+
"./schemas/lifecycle-purge/contract-receipt": "./schemas/lifecycle-purge/contract.receipt.json",
|
|
61
63
|
"./worker/pglite-worker": "./dist/worker/pglite-worker.js",
|
|
62
64
|
"./service-worker/sw": "./dist/service-worker/sw.js",
|
|
63
65
|
"./package.json": "./package.json"
|
|
@@ -69,6 +71,8 @@
|
|
|
69
71
|
"schemas/dataset-lineage",
|
|
70
72
|
"schemas/dataset-materialization",
|
|
71
73
|
"schemas/source-note-upsert",
|
|
74
|
+
"schemas/lifecycle-purge",
|
|
75
|
+
"schemas/metadata-search/candidate",
|
|
72
76
|
"benchmarks/dataset-materialization",
|
|
73
77
|
"tools",
|
|
74
78
|
"README.md",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contract": "lifecycle-purge/1.0.0",
|
|
3
|
+
"authority": {
|
|
4
|
+
"repository": "Fortemi/fortemi",
|
|
5
|
+
"issue": 1092,
|
|
6
|
+
"revision": "fd41d8165368f25495ed16f78c3b9a17778432c8",
|
|
7
|
+
"path": "contracts/lifecycle-purge/conformance/v1.json",
|
|
8
|
+
"sha256": "59327e3aad39d644a00d7f8fc6ece8689afcba0de027763a55ff68b38060ac7f"
|
|
9
|
+
},
|
|
10
|
+
"consumer": {
|
|
11
|
+
"repository": "Fortemi/fortemi-react",
|
|
12
|
+
"issue": 406,
|
|
13
|
+
"path": "packages/core/schemas/lifecycle-purge/v1.conformance.json"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"contract_version": "1.0.0",
|
|
3
|
+
"authority": "Fortemi/fortemi#1092",
|
|
4
|
+
"selector_semantics": "intersection",
|
|
5
|
+
"preview_ttl_seconds": 900,
|
|
6
|
+
"max_note_ids": 500,
|
|
7
|
+
"count_fields": [
|
|
8
|
+
"notes", "revisions", "links", "tags", "embeddings",
|
|
9
|
+
"attachments", "blobs", "graph_edges", "provenance_edges", "source_identities"
|
|
10
|
+
],
|
|
11
|
+
"receipt_allowed_fields": [
|
|
12
|
+
"contract_version", "operation_id", "outcome", "counts", "completed_at", "policy"
|
|
13
|
+
],
|
|
14
|
+
"receipt_forbidden_fields": [
|
|
15
|
+
"selector", "selector_hash", "selector_fingerprint", "tenant_id", "archive_id",
|
|
16
|
+
"note_ids", "source", "external_id", "operation_key", "storage_path",
|
|
17
|
+
"provider_payload", "content_digest"
|
|
18
|
+
],
|
|
19
|
+
"cases": [
|
|
20
|
+
{
|
|
21
|
+
"id": "shared-blob",
|
|
22
|
+
"expectation": "Only blobs with no surviving primary or preview attachment reference are counted and deleted.",
|
|
23
|
+
"expected_counts": {
|
|
24
|
+
"notes": 1,
|
|
25
|
+
"revisions": 0,
|
|
26
|
+
"links": 0,
|
|
27
|
+
"tags": 0,
|
|
28
|
+
"embeddings": 1,
|
|
29
|
+
"attachments": 2,
|
|
30
|
+
"blobs": 1,
|
|
31
|
+
"graph_edges": 0,
|
|
32
|
+
"provenance_edges": 0,
|
|
33
|
+
"source_identities": 0
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "stale-preview",
|
|
38
|
+
"expectation": "A changed selected graph rejects execution and leaves all selected records intact."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "exact-replay",
|
|
42
|
+
"expectation": "Repeating an operation ID with the same preview returns status without another relational delete or receipt."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "cleanup-crash",
|
|
46
|
+
"expectation": "Repeating an external delete after a crash before acknowledgement converges to one terminal receipt."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "restore-reerasure",
|
|
50
|
+
"expectation": "A restored retained target is re-erased before indexing and returns the operation to cleanup_pending until external cleanup completes."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "source-intersection",
|
|
54
|
+
"expectation": "Combined note and source selectors intersect; a partial source purge retains shared journals and a whole-source purge removes them after the final identity is erased.",
|
|
55
|
+
"expected_counts": {
|
|
56
|
+
"notes": 1,
|
|
57
|
+
"revisions": 0,
|
|
58
|
+
"links": 0,
|
|
59
|
+
"tags": 0,
|
|
60
|
+
"embeddings": 1,
|
|
61
|
+
"attachments": 0,
|
|
62
|
+
"blobs": 0,
|
|
63
|
+
"graph_edges": 0,
|
|
64
|
+
"provenance_edges": 0,
|
|
65
|
+
"source_identities": 1
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "expired-preview-cleanup",
|
|
70
|
+
"expectation": "Creating a new preview removes expired unconsumed selector snapshots within the same tenant and memory."
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Candidate Search Source Identity
|
|
2
|
+
|
|
3
|
+
`source.receipt.json` binds these eleven schema/vector files to immutable
|
|
4
|
+
Fortemi source `e99e4723293d12e76862ea83fda86ed70d3573c8`, plus that revision's
|
|
5
|
+
OpenAPI and authority documentation. CI verifies the actual upstream bytes,
|
|
6
|
+
not only agreement between local files and a local checksum.
|
|
7
|
+
|
|
8
|
+
The three older receipts remain byte-identical historical adoption records.
|
|
9
|
+
Their pre-commit bases and older OpenAPI hashes are not rewritten or treated as
|
|
10
|
+
the current authority revision. The supplemental source pin proves committed
|
|
11
|
+
candidate provenance, not publication, live runtime compatibility, complete
|
|
12
|
+
capability negotiation or issue acceptance. All promotion claims remain false.
|
|
13
|
+
|
|
14
|
+
The verifier accepts `--authority-root <repo>` to read immutable Git objects
|
|
15
|
+
offline. Without it, CI uses bounded immutable-origin reads with no redirect or
|
|
16
|
+
local-byte fallback. Both paths verify the same digests and complete inventory.
|
|
17
|
+
|
|
18
|
+
Authority: [Fortemi #1091](https://git.integrolabs.net/Fortemi/fortemi/issues/1091).
|
|
19
|
+
Consumer: [Core #405](https://git.integrolabs.net/Fortemi/fortemi-react/issues/405).
|
|
20
|
+
Other declared consumers, producer CI, installed/released acceptance and release
|
|
21
|
+
publication remain separate gates. Suite NO-GO and named shard profiles are unchanged.
|
|
22
|
+
|
|
23
|
+
## Existing Predicate Semantics
|
|
24
|
+
|
|
25
|
+
Core uses strict Ajv validation before SQL compilation, then checks reversed
|
|
26
|
+
range bounds in Unicode scalar/numeric order. Migration 33 supplies bounded
|
|
27
|
+
index keys with exact rechecks on author metadata. Source runs come from scoped
|
|
28
|
+
source identities, not author metadata. See ADR-016 for scope/default changes,
|
|
29
|
+
upgrade/rollback behavior and remaining cross-runtime/citation acceptance.
|
|
30
|
+
|
|
31
|
+
`src/__tests__/metadata-predicates.test.ts` executes the 51 input/truth cases and
|
|
32
|
+
15 SQL scope cases on a fully migrated clean PGlite database. It maps the corpus
|
|
33
|
+
owner tenant-a to Core's default source scope explicitly and keeps tenant-b
|
|
34
|
+
foreign. It never changes expected membership. Additional tests exercise actual
|
|
35
|
+
search entries, selective plans and old-database upgrade; they do not establish
|
|
36
|
+
verified hosted authorization, real model inference or released compatibility.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"status": "candidate-unpublished",
|
|
4
|
+
"authority": {
|
|
5
|
+
"repository": "Fortemi/fortemi",
|
|
6
|
+
"issue": 1091,
|
|
7
|
+
"baseCommit": "a701847db779a0a3adfa36a09dfa1055a10a0a0a",
|
|
8
|
+
"sourceState": "uncommitted candidate; base is not the contract revision",
|
|
9
|
+
"path": "contracts/metadata-search/candidate/1.0.0/",
|
|
10
|
+
"files": {
|
|
11
|
+
"predicates.schema.json": "e325707ce20abb88ef3a8f4bbb0d02ab09501b1ffe9b48b0c92a96e97dda00c3",
|
|
12
|
+
"predicate-vectors.json": "df9e129cab4708db71c3e22f87efd252fbcac144daa45a53ee1716f4a1a05ae7",
|
|
13
|
+
"sql-scope-vectors.json": "dcd35298a3bc485a6f1c87c6c87f136ee98121dad3f2b1c8b590b2e5381aa4d5",
|
|
14
|
+
"evidence-locator.schema.json": "cd8427c507bca1a08bdb68da0a5d2759d1d7805401db3c00372ab249652efb7a",
|
|
15
|
+
"evidence-vectors.json": "b532a4fa7697bdfc87e8541575fcee7c94a5b5ac53e4a6472438c49247e6b266",
|
|
16
|
+
"evidence-set.schema.json": "da7e5d41bd563cb2cfe424cf7dfa92007a865ee0e1a9a4832ef669039d80717e",
|
|
17
|
+
"evidence-set-vectors.json": "b84061ee252d2ee25d744111d2a04dfcd2c490274d4285bac31f4bd0e91e47d7"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"consumer": {
|
|
21
|
+
"repository": "Fortemi/fortemi-react",
|
|
22
|
+
"issue": 405,
|
|
23
|
+
"backend": "pglite",
|
|
24
|
+
"test": "src/__tests__/metadata-predicates.test.ts",
|
|
25
|
+
"evidenceTest": "src/__tests__/search-evidence.test.ts",
|
|
26
|
+
"evidenceSetTest": "src/__tests__/search-evidence-set.test.ts"
|
|
27
|
+
},
|
|
28
|
+
"scopeMapping": {
|
|
29
|
+
"owningTenant": "tenant-a -> default",
|
|
30
|
+
"foreignTenant": "tenant-b -> tenant-b",
|
|
31
|
+
"authorizationEvidence": false
|
|
32
|
+
},
|
|
33
|
+
"claims": {
|
|
34
|
+
"promotedContract": false,
|
|
35
|
+
"fullIssueAcceptance": false,
|
|
36
|
+
"suiteParity": false
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://fortemi.com/contracts/metadata-search/candidate/1.0.0/evidence-locator.schema.json",
|
|
4
|
+
"title": "Candidate search evidence locator",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["version", "note_id", "unit", "content_digest", "span"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": { "const": "1.0.0" },
|
|
10
|
+
"note_id": { "$ref": "#/$defs/identifier" },
|
|
11
|
+
"unit": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"required": ["kind", "id", "index"],
|
|
15
|
+
"properties": {
|
|
16
|
+
"kind": { "enum": ["current", "title", "embedding", "attachment"] },
|
|
17
|
+
"id": { "$ref": "#/$defs/identifier" },
|
|
18
|
+
"index": { "type": "integer", "minimum": 0, "maximum": 2147483647 }
|
|
19
|
+
},
|
|
20
|
+
"if": { "properties": { "kind": { "enum": ["current", "title", "attachment"] } } },
|
|
21
|
+
"then": { "properties": { "index": { "const": 0 } } }
|
|
22
|
+
},
|
|
23
|
+
"content_digest": { "$ref": "#/$defs/digest" },
|
|
24
|
+
"span": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": ["unit", "start", "end"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"unit": { "const": "utf8-bytes" },
|
|
30
|
+
"start": { "type": "integer", "minimum": 0, "maximum": 16777216 },
|
|
31
|
+
"end": { "type": "integer", "minimum": 0, "maximum": 16777216 }
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"source": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": false,
|
|
37
|
+
"required": ["namespace", "external_id_hash", "import_run_id", "schema_version"],
|
|
38
|
+
"properties": {
|
|
39
|
+
"namespace": { "$ref": "#/$defs/identifier" },
|
|
40
|
+
"external_id_hash": { "$ref": "#/$defs/digest" },
|
|
41
|
+
"import_run_id": { "$ref": "#/$defs/identifier" },
|
|
42
|
+
"schema_version": { "$ref": "#/$defs/identifier" }
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"$defs": {
|
|
47
|
+
"identifier": { "type": "string", "minLength": 1, "maxLength": 200, "pattern": "^[^\\u0000]+$" },
|
|
48
|
+
"digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "fortemi.evidence-resolution-vectors.candidate.v1",
|
|
3
|
+
"boundary": "Portable wire schema cases, not current-storage, authorization, model or released-consumer acceptance. Semantic locator and range checks remain required.",
|
|
4
|
+
"requests": [
|
|
5
|
+
{
|
|
6
|
+
"id": "minimal",
|
|
7
|
+
"valid": true,
|
|
8
|
+
"value": {
|
|
9
|
+
"locator": {
|
|
10
|
+
"version": "1.0.0",
|
|
11
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
12
|
+
"unit": {
|
|
13
|
+
"kind": "current",
|
|
14
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
15
|
+
"index": 0
|
|
16
|
+
},
|
|
17
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
18
|
+
"span": {
|
|
19
|
+
"unit": "utf8-bytes",
|
|
20
|
+
"start": 0,
|
|
21
|
+
"end": 0
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "archived-explicit",
|
|
28
|
+
"valid": true,
|
|
29
|
+
"value": {
|
|
30
|
+
"locator": {
|
|
31
|
+
"version": "1.0.0",
|
|
32
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
33
|
+
"unit": {
|
|
34
|
+
"kind": "current",
|
|
35
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
36
|
+
"index": 0
|
|
37
|
+
},
|
|
38
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
39
|
+
"span": {
|
|
40
|
+
"unit": "utf8-bytes",
|
|
41
|
+
"start": 0,
|
|
42
|
+
"end": 0
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"include_archived": true
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "metadata-typed",
|
|
50
|
+
"valid": true,
|
|
51
|
+
"value": {
|
|
52
|
+
"locator": {
|
|
53
|
+
"version": "1.0.0",
|
|
54
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
55
|
+
"unit": {
|
|
56
|
+
"kind": "current",
|
|
57
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
58
|
+
"index": 0
|
|
59
|
+
},
|
|
60
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
61
|
+
"span": {
|
|
62
|
+
"unit": "utf8-bytes",
|
|
63
|
+
"start": 0,
|
|
64
|
+
"end": 0
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"metadata_predicates": [
|
|
68
|
+
{
|
|
69
|
+
"path": "model",
|
|
70
|
+
"op": "eq",
|
|
71
|
+
"value": 42
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "missing-locator",
|
|
78
|
+
"valid": false,
|
|
79
|
+
"value": {}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "null-locator",
|
|
83
|
+
"valid": false,
|
|
84
|
+
"value": {
|
|
85
|
+
"locator": null
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "caller-tenant",
|
|
90
|
+
"valid": false,
|
|
91
|
+
"value": {
|
|
92
|
+
"locator": {
|
|
93
|
+
"version": "1.0.0",
|
|
94
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
95
|
+
"unit": {
|
|
96
|
+
"kind": "current",
|
|
97
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
98
|
+
"index": 0
|
|
99
|
+
},
|
|
100
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
101
|
+
"span": {
|
|
102
|
+
"unit": "utf8-bytes",
|
|
103
|
+
"start": 0,
|
|
104
|
+
"end": 0
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"tenant_id": "forged"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "caller-archive",
|
|
112
|
+
"valid": false,
|
|
113
|
+
"value": {
|
|
114
|
+
"locator": {
|
|
115
|
+
"version": "1.0.0",
|
|
116
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
117
|
+
"unit": {
|
|
118
|
+
"kind": "current",
|
|
119
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
120
|
+
"index": 0
|
|
121
|
+
},
|
|
122
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
123
|
+
"span": {
|
|
124
|
+
"unit": "utf8-bytes",
|
|
125
|
+
"start": 0,
|
|
126
|
+
"end": 0
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"archive_id": "forged"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "null-metadata",
|
|
134
|
+
"valid": false,
|
|
135
|
+
"value": {
|
|
136
|
+
"locator": {
|
|
137
|
+
"version": "1.0.0",
|
|
138
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
139
|
+
"unit": {
|
|
140
|
+
"kind": "current",
|
|
141
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
142
|
+
"index": 0
|
|
143
|
+
},
|
|
144
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
145
|
+
"span": {
|
|
146
|
+
"unit": "utf8-bytes",
|
|
147
|
+
"start": 0,
|
|
148
|
+
"end": 0
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"metadata_predicates": null
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": "unknown-metadata",
|
|
156
|
+
"valid": false,
|
|
157
|
+
"value": {
|
|
158
|
+
"locator": {
|
|
159
|
+
"version": "1.0.0",
|
|
160
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
161
|
+
"unit": {
|
|
162
|
+
"kind": "current",
|
|
163
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
164
|
+
"index": 0
|
|
165
|
+
},
|
|
166
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
167
|
+
"span": {
|
|
168
|
+
"unit": "utf8-bytes",
|
|
169
|
+
"start": 0,
|
|
170
|
+
"end": 0
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"metadata_predicates": [
|
|
174
|
+
{
|
|
175
|
+
"path": "unknown",
|
|
176
|
+
"op": "eq",
|
|
177
|
+
"value": "x"
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": "null-archived",
|
|
184
|
+
"valid": false,
|
|
185
|
+
"value": {
|
|
186
|
+
"locator": {
|
|
187
|
+
"version": "1.0.0",
|
|
188
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
189
|
+
"unit": {
|
|
190
|
+
"kind": "current",
|
|
191
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
192
|
+
"index": 0
|
|
193
|
+
},
|
|
194
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
195
|
+
"span": {
|
|
196
|
+
"unit": "utf8-bytes",
|
|
197
|
+
"start": 0,
|
|
198
|
+
"end": 0
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"include_archived": null
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"id": "unknown-property",
|
|
206
|
+
"valid": false,
|
|
207
|
+
"value": {
|
|
208
|
+
"locator": {
|
|
209
|
+
"version": "1.0.0",
|
|
210
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
211
|
+
"unit": {
|
|
212
|
+
"kind": "current",
|
|
213
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
214
|
+
"index": 0
|
|
215
|
+
},
|
|
216
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
217
|
+
"span": {
|
|
218
|
+
"unit": "utf8-bytes",
|
|
219
|
+
"start": 0,
|
|
220
|
+
"end": 0
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"extra": 1
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"id": "unknown-unit",
|
|
228
|
+
"valid": false,
|
|
229
|
+
"value": {
|
|
230
|
+
"locator": {
|
|
231
|
+
"version": "1.0.0",
|
|
232
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
233
|
+
"unit": {
|
|
234
|
+
"kind": "history",
|
|
235
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
236
|
+
"index": 0
|
|
237
|
+
},
|
|
238
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
239
|
+
"span": {
|
|
240
|
+
"unit": "utf8-bytes",
|
|
241
|
+
"start": 0,
|
|
242
|
+
"end": 0
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"id": "fractional-offset",
|
|
249
|
+
"valid": false,
|
|
250
|
+
"value": {
|
|
251
|
+
"locator": {
|
|
252
|
+
"version": "1.0.0",
|
|
253
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
254
|
+
"unit": {
|
|
255
|
+
"kind": "current",
|
|
256
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
257
|
+
"index": 0
|
|
258
|
+
},
|
|
259
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
260
|
+
"span": {
|
|
261
|
+
"unit": "utf8-bytes",
|
|
262
|
+
"start": 0.5,
|
|
263
|
+
"end": 0
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "wrong-span-unit",
|
|
270
|
+
"valid": false,
|
|
271
|
+
"value": {
|
|
272
|
+
"locator": {
|
|
273
|
+
"version": "1.0.0",
|
|
274
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
275
|
+
"unit": {
|
|
276
|
+
"kind": "current",
|
|
277
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
278
|
+
"index": 0
|
|
279
|
+
},
|
|
280
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
281
|
+
"span": {
|
|
282
|
+
"unit": "characters",
|
|
283
|
+
"start": 0,
|
|
284
|
+
"end": 0
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"id": "null-source",
|
|
291
|
+
"valid": false,
|
|
292
|
+
"value": {
|
|
293
|
+
"locator": {
|
|
294
|
+
"version": "1.0.0",
|
|
295
|
+
"note_id": "00000000-0000-0000-0000-000000000001",
|
|
296
|
+
"unit": {
|
|
297
|
+
"kind": "current",
|
|
298
|
+
"id": "00000000-0000-0000-0000-000000000001",
|
|
299
|
+
"index": 0
|
|
300
|
+
},
|
|
301
|
+
"content_digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
302
|
+
"span": {
|
|
303
|
+
"unit": "utf8-bytes",
|
|
304
|
+
"start": 0,
|
|
305
|
+
"end": 0
|
|
306
|
+
},
|
|
307
|
+
"source": null
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
],
|
|
312
|
+
"responses": [
|
|
313
|
+
{
|
|
314
|
+
"id": "empty-range",
|
|
315
|
+
"valid": true,
|
|
316
|
+
"value": {
|
|
317
|
+
"text": ""
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"id": "raw-unicode",
|
|
322
|
+
"valid": true,
|
|
323
|
+
"value": {
|
|
324
|
+
"text": "\uFEFFraw\r\n\ud83d\ude42"
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"id": "missing-text",
|
|
329
|
+
"valid": false,
|
|
330
|
+
"value": {}
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"id": "null-text",
|
|
334
|
+
"valid": false,
|
|
335
|
+
"value": {
|
|
336
|
+
"text": null
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"id": "numeric-text",
|
|
341
|
+
"valid": false,
|
|
342
|
+
"value": {
|
|
343
|
+
"text": 1
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"id": "unknown-property",
|
|
348
|
+
"valid": false,
|
|
349
|
+
"value": {
|
|
350
|
+
"text": "x",
|
|
351
|
+
"source": "not-permitted"
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
]
|
|
355
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://fortemi.com/contracts/metadata-search/candidate/1.0.0/evidence-resolution.schema.json",
|
|
4
|
+
"title": "Candidate current-storage evidence resolution",
|
|
5
|
+
"$defs": {
|
|
6
|
+
"SearchEvidenceResolveRequest": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"required": ["locator"],
|
|
10
|
+
"properties": {
|
|
11
|
+
"locator": { "$ref": "evidence-locator.schema.json" },
|
|
12
|
+
"metadata_predicates": { "$ref": "predicates.schema.json" },
|
|
13
|
+
"include_archived": { "type": "boolean", "default": false }
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"SearchEvidenceResolveResponse": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": false,
|
|
19
|
+
"required": ["text"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"text": { "type": "string", "maxLength": 16777216 }
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|