@quolu/lattice 0.63.0 → 0.63.2

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 (60) hide show
  1. package/LICENSE +147 -147
  2. package/README.ja.md +378 -378
  3. package/README.md +303 -303
  4. package/bin/lattice-mcp.mjs +0 -0
  5. package/bin/lattice-scripted-adapter.mjs +0 -0
  6. package/bin/lattice-scripted-worker.mjs +0 -0
  7. package/bin/lattice-work-order-adapter.mjs +0 -0
  8. package/bin/lattice.mjs +3 -1
  9. package/docs/bridge-setup.md +248 -248
  10. package/docs/schemas/lattice.executor_packet.v1.schema.json +57 -57
  11. package/docs/schemas/lattice.executor_receipt.v1.schema.json +66 -66
  12. package/docs/schemas/lattice.phase_todo_revision.v3.schema.json +360 -360
  13. package/docs/schemas/lattice.plan_create_input.v1.schema.json +56 -56
  14. package/docs/schemas/lattice.plan_create_input.v2.schema.json +72 -72
  15. package/docs/schemas/lattice.plan_create_input.v3.schema.json +81 -81
  16. package/docs/schemas/lattice.plan_create_input.v4.schema.json +357 -85
  17. package/docs/schemas/lattice.plan_scope_review.v1.schema.json +55 -55
  18. package/docs/schemas/lattice.run_request.v1.schema.json +238 -238
  19. package/docs/schemas/lattice.runtime_adapter_capabilities.v2.schema.json +55 -55
  20. package/docs/schemas/lattice.runtime_adapter_registration_input.v1.schema.json +78 -78
  21. package/docs/schemas/lattice.runtime_adapter_registration_input.v2.schema.json +86 -86
  22. package/docs/schemas/lattice.todo_extraction.v2.schema.json +298 -298
  23. package/docs/schemas/lattice.todo_extraction.v3.schema.json +150 -150
  24. package/docs/schemas/lattice.todo_extraction.v4.schema.json +161 -161
  25. package/docs/schemas/lattice.todo_revision.v2.schema.json +260 -260
  26. package/docs/schemas/lattice.todo_revision_set.v3.schema.json +363 -363
  27. package/docs/schemas/lattice.todo_structure_binding.v1.schema.json +47 -47
  28. package/docs/schemas/lattice.todo_structure_realization.v1.schema.json +55 -55
  29. package/docs/schemas/lattice.todo_structure_set.v1.schema.json +264 -264
  30. package/package.json +109 -109
  31. package/sensor/LICENSE +21 -21
  32. package/sensor/NOTICE +19 -19
  33. package/sensor/dist/bin/lattice-sensor.js +9 -9
  34. package/sensor/dist/db/index.js +24 -24
  35. package/sensor/dist/db/migrations.js +41 -41
  36. package/sensor/dist/db/queries.js +164 -164
  37. package/sensor/dist/db/schema.sql +205 -205
  38. package/sensor/dist/directory.js +5 -5
  39. package/sensor/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  40. package/sensor/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
  41. package/sensor/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
  42. package/sensor/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
  43. package/sensor/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
  44. package/sensor/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
  45. package/sensor/dist/extraction/wasm/tree-sitter-go.wasm +0 -0
  46. package/sensor/dist/extraction/wasm/tree-sitter-java.wasm +0 -0
  47. package/sensor/dist/extraction/wasm/tree-sitter-javascript.wasm +0 -0
  48. package/sensor/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  49. package/sensor/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  50. package/sensor/dist/extraction/wasm/tree-sitter-python.wasm +0 -0
  51. package/sensor/dist/extraction/wasm/tree-sitter-tsx.wasm +0 -0
  52. package/sensor/dist/extraction/wasm/tree-sitter-typescript.wasm +0 -0
  53. package/sensor/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
  54. package/sensor/dist/mcp/liveness-watchdog.js +53 -53
  55. package/sensor/dist/mcp/server-instructions.js +95 -95
  56. package/sensor/package.json +56 -56
  57. package/src/project-cli.mjs +164 -24
  58. package/src/todo-authoring-input.mjs +35 -5
  59. package/src/todo-cli.mjs +2 -2
  60. package/src/todo-store.mjs +52 -21
@@ -1,161 +1,161 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/kitepon/Lattice/blob/main/docs/schemas/lattice.todo_extraction.v4.schema.json",
4
- "title": "lattice.todo_extraction.v4",
5
- "description": "AI-authored ToDo migration artifact. Every task carries a non-blank Markdown design_memo. After the complete plan is written, run `lattice plan scope-review` and confirm that every registered task preserves an owner-supplied work specification without adding a product purpose. If no plan exists, write NO_PLAN explicitly. Runtime validation accepts at most one explicit, reasoned cross-plan dependency; an empty tasks array is reserved for that one dependency between existing tasks, with the top-level plan identity naming the source plan and both endpoint topology digests.",
6
- "$comment": "あなたがこのToDoに対して、何も考えていないならば、設計メモに `NO_PLAN` と書いてください。Runtime validation also enforces UTF-8 byte bounds, exact keys, strict sort order, referential integrity, disposition consistency, the cross-plan dependency limit, and the canonical self-digest.",
7
- "type": "object",
8
- "additionalProperties": false,
9
- "required": [
10
- "schema", "project_id", "plan_key", "plan_version", "actor", "recorded_at",
11
- "tasks", "hard_dependencies", "joins", "extraction_digest"
12
- ],
13
- "properties": {
14
- "schema": { "const": "lattice.todo_extraction.v4" },
15
- "project_id": { "$ref": "#/$defs/identifier" },
16
- "plan_key": { "$ref": "#/$defs/identifier" },
17
- "plan_version": { "$ref": "#/$defs/identifier" },
18
- "actor": { "$ref": "#/$defs/actor" },
19
- "recorded_at": { "$ref": "#/$defs/strictTimestamp" },
20
- "tasks": { "type": "array", "minItems": 0, "maxItems": 512, "items": { "$ref": "#/$defs/task" } },
21
- "hard_dependencies": {
22
- "type": "array", "maxItems": 2048,
23
- "items": {
24
- "type": "object", "additionalProperties": false, "required": ["from", "to"],
25
- "properties": {
26
- "from": { "$ref": "#/$defs/nodeRef" },
27
- "to": { "$ref": "#/$defs/nodeRef" },
28
- "reason": { "$ref": "#/$defs/text" }
29
- }
30
- }
31
- },
32
- "joins": {
33
- "type": "array", "maxItems": 128,
34
- "items": {
35
- "type": "object", "additionalProperties": false, "required": ["id", "after", "before"],
36
- "properties": {
37
- "id": { "$ref": "#/$defs/identifier" },
38
- "after": { "type": "array", "minItems": 1, "maxItems": 512, "items": { "$ref": "#/$defs/nodeRef" } },
39
- "before": { "$ref": "#/$defs/nodeRef" }
40
- }
41
- }
42
- },
43
- "extraction_digest": { "$ref": "#/$defs/digest" }
44
- },
45
- "allOf": [
46
- {
47
- "if": { "properties": { "tasks": { "maxItems": 0 } }, "required": ["tasks"] },
48
- "then": {
49
- "properties": {
50
- "hard_dependencies": { "minItems": 1, "maxItems": 1 },
51
- "joins": { "maxItems": 0 }
52
- }
53
- }
54
- }
55
- ],
56
- "$defs": {
57
- "identifier": { "type": "string", "pattern": "^[0-9A-Za-z](?:[0-9A-Za-z._-]{0,127})$" },
58
- "digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
59
- "repoRef": {
60
- "type": "string", "minLength": 1, "maxLength": 1024,
61
- "pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\)(?!.*[\\u0000-\\u001f\\u007f])[^/]+(?:/[^/]+)*$"
62
- },
63
- "text": { "type": "string", "minLength": 1, "maxLength": 16384 },
64
- "designMemo": {
65
- "type": "string", "minLength": 1, "maxLength": 16384, "pattern": "\\S",
66
- "description": "Markdown design memo. Use the literal NO_PLAN only when no plan exists."
67
- },
68
- "nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
69
- "strictTimestamp": {
70
- "type": "string",
71
- "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
72
- },
73
- "actor": {
74
- "type": "object", "additionalProperties": false, "required": ["host", "session", "agent"],
75
- "properties": {
76
- "host": { "$ref": "#/$defs/identifier" },
77
- "session": { "$ref": "#/$defs/identifier" },
78
- "agent": { "$ref": "#/$defs/identifier" }
79
- }
80
- },
81
- "nodeRef": {
82
- "type": "object", "additionalProperties": false, "required": ["project_id", "plan_key", "task_id"],
83
- "properties": {
84
- "project_id": { "$ref": "#/$defs/identifier" },
85
- "plan_key": { "$ref": "#/$defs/identifier" },
86
- "task_id": { "$ref": "#/$defs/identifier" },
87
- "expected_topology_digest": { "$ref": "#/$defs/digest" }
88
- }
89
- },
90
- "sourceLocation": {
91
- "type": "object", "additionalProperties": false,
92
- "required": ["origin_plan_ref", "origin_line", "source_commit", "heading_path", "markdown_depth", "parent_task_id", "checkbox_state"],
93
- "properties": {
94
- "origin_plan_ref": { "$ref": "#/$defs/repoRef" },
95
- "origin_line": { "type": "integer", "minimum": 1 },
96
- "source_commit": { "type": "string", "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$" },
97
- "heading_path": { "type": "array", "maxItems": 32, "items": { "type": "string", "minLength": 1, "maxLength": 1024 } },
98
- "markdown_depth": { "type": "integer", "minimum": 0, "maximum": 64 },
99
- "parent_task_id": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/identifier" }] },
100
- "checkbox_state": { "enum": ["checked", "unchecked", "absent", "ambiguous"] }
101
- }
102
- },
103
- "migrationContext": {
104
- "type": "object", "additionalProperties": false,
105
- "required": ["external_canonical_ref", "carry_over_ref", "h_required", "condition", "evidence_refs", "notes"],
106
- "properties": {
107
- "external_canonical_ref": { "$ref": "#/$defs/nullableText" },
108
- "carry_over_ref": { "$ref": "#/$defs/nullableText" },
109
- "h_required": { "type": "boolean" },
110
- "condition": { "$ref": "#/$defs/nullableText" },
111
- "evidence_refs": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1, "maxLength": 4096 } },
112
- "notes": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1, "maxLength": 4096 } }
113
- }
114
- },
115
- "historicalStart": {
116
- "type": "object", "additionalProperties": false, "required": ["start_mode", "status", "started_at"],
117
- "properties": {
118
- "start_mode": { "const": "historical_import" }, "status": { "const": "in-progress" },
119
- "started_at": { "oneOf": [{ "const": "unknown_requires_evidence" }, { "$ref": "#/$defs/strictTimestamp" }] }
120
- }
121
- },
122
- "historicalCompletion": {
123
- "type": "object", "additionalProperties": false, "required": ["done_mode", "completed_at"],
124
- "properties": {
125
- "done_mode": { "const": "historical_import" },
126
- "completed_at": { "oneOf": [{ "const": "unknown_requires_evidence" }, { "$ref": "#/$defs/strictTimestamp" }] }
127
- }
128
- },
129
- "task": {
130
- "type": "object", "additionalProperties": false,
131
- "required": [
132
- "task_id", "title", "lane", "design_memo", "narrative_ref", "compile_binding",
133
- "disposition", "start", "completion", "source", "migration_context"
134
- ],
135
- "properties": {
136
- "task_id": { "$ref": "#/$defs/identifier" },
137
- "title": { "$ref": "#/$defs/text" },
138
- "lane": { "$ref": "#/$defs/identifier" },
139
- "design_memo": { "$ref": "#/$defs/designMemo" },
140
- "narrative_ref": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/repoRef" }] },
141
- "compile_binding": { "type": "null" },
142
- "disposition": { "enum": ["register_pending", "register_in_progress", "register_done", "exclude_superseded", "exclude_compatibility_record", "unknown_requires_evidence"] },
143
- "start": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/historicalStart" }] },
144
- "completion": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/historicalCompletion" }] },
145
- "source": { "$ref": "#/$defs/sourceLocation" },
146
- "migration_context": { "$ref": "#/$defs/migrationContext" }
147
- },
148
- "allOf": [
149
- {
150
- "if": { "properties": { "disposition": { "const": "register_in_progress" } }, "required": ["disposition"] },
151
- "then": { "properties": { "start": { "$ref": "#/$defs/historicalStart" }, "completion": { "type": "null" } } },
152
- "else": {
153
- "if": { "properties": { "disposition": { "const": "register_done" } }, "required": ["disposition"] },
154
- "then": { "properties": { "start": { "type": "null" }, "completion": { "$ref": "#/$defs/historicalCompletion" } } },
155
- "else": { "properties": { "start": { "type": "null" }, "completion": { "type": "null" } } }
156
- }
157
- }
158
- ]
159
- }
160
- }
161
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/kitepon/Lattice/blob/main/docs/schemas/lattice.todo_extraction.v4.schema.json",
4
+ "title": "lattice.todo_extraction.v4",
5
+ "description": "AI-authored ToDo migration artifact. Every task carries a non-blank Markdown design_memo. After the complete plan is written, run `lattice plan scope-review` and confirm that every registered task preserves an owner-supplied work specification without adding a product purpose. If no plan exists, write NO_PLAN explicitly. Runtime validation accepts at most one explicit, reasoned cross-plan dependency; an empty tasks array is reserved for that one dependency between existing tasks, with the top-level plan identity naming the source plan and both endpoint topology digests.",
6
+ "$comment": "あなたがこのToDoに対して、何も考えていないならば、設計メモに `NO_PLAN` と書いてください。Runtime validation also enforces UTF-8 byte bounds, exact keys, strict sort order, referential integrity, disposition consistency, the cross-plan dependency limit, and the canonical self-digest.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "schema", "project_id", "plan_key", "plan_version", "actor", "recorded_at",
11
+ "tasks", "hard_dependencies", "joins", "extraction_digest"
12
+ ],
13
+ "properties": {
14
+ "schema": { "const": "lattice.todo_extraction.v4" },
15
+ "project_id": { "$ref": "#/$defs/identifier" },
16
+ "plan_key": { "$ref": "#/$defs/identifier" },
17
+ "plan_version": { "$ref": "#/$defs/identifier" },
18
+ "actor": { "$ref": "#/$defs/actor" },
19
+ "recorded_at": { "$ref": "#/$defs/strictTimestamp" },
20
+ "tasks": { "type": "array", "minItems": 0, "maxItems": 512, "items": { "$ref": "#/$defs/task" } },
21
+ "hard_dependencies": {
22
+ "type": "array", "maxItems": 2048,
23
+ "items": {
24
+ "type": "object", "additionalProperties": false, "required": ["from", "to"],
25
+ "properties": {
26
+ "from": { "$ref": "#/$defs/nodeRef" },
27
+ "to": { "$ref": "#/$defs/nodeRef" },
28
+ "reason": { "$ref": "#/$defs/text" }
29
+ }
30
+ }
31
+ },
32
+ "joins": {
33
+ "type": "array", "maxItems": 128,
34
+ "items": {
35
+ "type": "object", "additionalProperties": false, "required": ["id", "after", "before"],
36
+ "properties": {
37
+ "id": { "$ref": "#/$defs/identifier" },
38
+ "after": { "type": "array", "minItems": 1, "maxItems": 512, "items": { "$ref": "#/$defs/nodeRef" } },
39
+ "before": { "$ref": "#/$defs/nodeRef" }
40
+ }
41
+ }
42
+ },
43
+ "extraction_digest": { "$ref": "#/$defs/digest" }
44
+ },
45
+ "allOf": [
46
+ {
47
+ "if": { "properties": { "tasks": { "maxItems": 0 } }, "required": ["tasks"] },
48
+ "then": {
49
+ "properties": {
50
+ "hard_dependencies": { "minItems": 1, "maxItems": 1 },
51
+ "joins": { "maxItems": 0 }
52
+ }
53
+ }
54
+ }
55
+ ],
56
+ "$defs": {
57
+ "identifier": { "type": "string", "pattern": "^[0-9A-Za-z](?:[0-9A-Za-z._-]{0,127})$" },
58
+ "digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
59
+ "repoRef": {
60
+ "type": "string", "minLength": 1, "maxLength": 1024,
61
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\)(?!.*[\\u0000-\\u001f\\u007f])[^/]+(?:/[^/]+)*$"
62
+ },
63
+ "text": { "type": "string", "minLength": 1, "maxLength": 16384 },
64
+ "designMemo": {
65
+ "type": "string", "minLength": 1, "maxLength": 16384, "pattern": "\\S",
66
+ "description": "Markdown design memo. Use the literal NO_PLAN only when no plan exists."
67
+ },
68
+ "nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
69
+ "strictTimestamp": {
70
+ "type": "string",
71
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
72
+ },
73
+ "actor": {
74
+ "type": "object", "additionalProperties": false, "required": ["host", "session", "agent"],
75
+ "properties": {
76
+ "host": { "$ref": "#/$defs/identifier" },
77
+ "session": { "$ref": "#/$defs/identifier" },
78
+ "agent": { "$ref": "#/$defs/identifier" }
79
+ }
80
+ },
81
+ "nodeRef": {
82
+ "type": "object", "additionalProperties": false, "required": ["project_id", "plan_key", "task_id"],
83
+ "properties": {
84
+ "project_id": { "$ref": "#/$defs/identifier" },
85
+ "plan_key": { "$ref": "#/$defs/identifier" },
86
+ "task_id": { "$ref": "#/$defs/identifier" },
87
+ "expected_topology_digest": { "$ref": "#/$defs/digest" }
88
+ }
89
+ },
90
+ "sourceLocation": {
91
+ "type": "object", "additionalProperties": false,
92
+ "required": ["origin_plan_ref", "origin_line", "source_commit", "heading_path", "markdown_depth", "parent_task_id", "checkbox_state"],
93
+ "properties": {
94
+ "origin_plan_ref": { "$ref": "#/$defs/repoRef" },
95
+ "origin_line": { "type": "integer", "minimum": 1 },
96
+ "source_commit": { "type": "string", "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$" },
97
+ "heading_path": { "type": "array", "maxItems": 32, "items": { "type": "string", "minLength": 1, "maxLength": 1024 } },
98
+ "markdown_depth": { "type": "integer", "minimum": 0, "maximum": 64 },
99
+ "parent_task_id": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/identifier" }] },
100
+ "checkbox_state": { "enum": ["checked", "unchecked", "absent", "ambiguous"] }
101
+ }
102
+ },
103
+ "migrationContext": {
104
+ "type": "object", "additionalProperties": false,
105
+ "required": ["external_canonical_ref", "carry_over_ref", "h_required", "condition", "evidence_refs", "notes"],
106
+ "properties": {
107
+ "external_canonical_ref": { "$ref": "#/$defs/nullableText" },
108
+ "carry_over_ref": { "$ref": "#/$defs/nullableText" },
109
+ "h_required": { "type": "boolean" },
110
+ "condition": { "$ref": "#/$defs/nullableText" },
111
+ "evidence_refs": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1, "maxLength": 4096 } },
112
+ "notes": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1, "maxLength": 4096 } }
113
+ }
114
+ },
115
+ "historicalStart": {
116
+ "type": "object", "additionalProperties": false, "required": ["start_mode", "status", "started_at"],
117
+ "properties": {
118
+ "start_mode": { "const": "historical_import" }, "status": { "const": "in-progress" },
119
+ "started_at": { "oneOf": [{ "const": "unknown_requires_evidence" }, { "$ref": "#/$defs/strictTimestamp" }] }
120
+ }
121
+ },
122
+ "historicalCompletion": {
123
+ "type": "object", "additionalProperties": false, "required": ["done_mode", "completed_at"],
124
+ "properties": {
125
+ "done_mode": { "const": "historical_import" },
126
+ "completed_at": { "oneOf": [{ "const": "unknown_requires_evidence" }, { "$ref": "#/$defs/strictTimestamp" }] }
127
+ }
128
+ },
129
+ "task": {
130
+ "type": "object", "additionalProperties": false,
131
+ "required": [
132
+ "task_id", "title", "lane", "design_memo", "narrative_ref", "compile_binding",
133
+ "disposition", "start", "completion", "source", "migration_context"
134
+ ],
135
+ "properties": {
136
+ "task_id": { "$ref": "#/$defs/identifier" },
137
+ "title": { "$ref": "#/$defs/text" },
138
+ "lane": { "$ref": "#/$defs/identifier" },
139
+ "design_memo": { "$ref": "#/$defs/designMemo" },
140
+ "narrative_ref": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/repoRef" }] },
141
+ "compile_binding": { "type": "null" },
142
+ "disposition": { "enum": ["register_pending", "register_in_progress", "register_done", "exclude_superseded", "exclude_compatibility_record", "unknown_requires_evidence"] },
143
+ "start": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/historicalStart" }] },
144
+ "completion": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/historicalCompletion" }] },
145
+ "source": { "$ref": "#/$defs/sourceLocation" },
146
+ "migration_context": { "$ref": "#/$defs/migrationContext" }
147
+ },
148
+ "allOf": [
149
+ {
150
+ "if": { "properties": { "disposition": { "const": "register_in_progress" } }, "required": ["disposition"] },
151
+ "then": { "properties": { "start": { "$ref": "#/$defs/historicalStart" }, "completion": { "type": "null" } } },
152
+ "else": {
153
+ "if": { "properties": { "disposition": { "const": "register_done" } }, "required": ["disposition"] },
154
+ "then": { "properties": { "start": { "type": "null" }, "completion": { "$ref": "#/$defs/historicalCompletion" } } },
155
+ "else": { "properties": { "start": { "type": "null" }, "completion": { "type": "null" } } }
156
+ }
157
+ }
158
+ ]
159
+ }
160
+ }
161
+ }