@namewta/speculo 2.0.4 → 2.0.6

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/package.json +1 -1
  2. package/template/canonical/canonical-specdev-goal-plan.md +2272 -1069
  3. package/template/canonical/canonical-specdev-grill-with-docs.md +2164 -661
  4. package/template/canonical/canonical-specdev-spec.md +2163 -660
  5. package/template/canonical/canonical-specdev-tickets.md +2095 -574
  6. package/template/canonical/canonical-specdev-wayfinder.md +2339 -836
  7. package/template/references/coordination/coordination-contract.md +8 -6
  8. package/template/references/coordination/modes/cli.md +1 -1
  9. package/template/references/coordination/modes/herdr.md +2 -2
  10. package/template/references/coordination/modes/orca.md +3 -3
  11. package/template/references/coordination/report-template.md +18 -0
  12. package/template/references/coordination/result-and-recovery.md +4 -4
  13. package/template/references/coordination/session-files.md +49 -56
  14. package/template/references/coordination/task-brief.md +7 -7
  15. package/template/references/coordination/task-template.md +25 -0
  16. package/template/references/retrospective/references/friction-taxonomy.md +1 -1
  17. package/template/references/writing-for-agents/references/project-skill-maintenance.md +29 -0
  18. package/template/references/writing-for-agents/writing-contract.md +2 -0
  19. package/template/workflows/specdev/SKILL.md +1 -1
  20. package/template/workflows/specdev/common/README.md +1 -1
  21. package/template/workflows/specdev/common/rules/artifact-contract.md +1 -1
  22. package/template/workflows/specdev/common/rules/change-completion.md +6 -6
  23. package/template/workflows/specdev/common/rules/domain-runtime.md +2 -2
  24. package/template/workflows/specdev/common/rules/evidence-and-verification.md +17 -34
  25. package/template/workflows/specdev/common/rules/execution-policy.md +24 -16
  26. package/template/workflows/specdev/common/rules/operating-governance.md +1 -1
  27. package/template/workflows/specdev/common/rules/parent-implementation-orchestration.md +4 -2
  28. package/template/workflows/specdev/common/rules/path-ownership.md +9 -7
  29. package/template/workflows/specdev/common/rules/path-reference-contract.md +1 -1
  30. package/template/workflows/specdev/common/rules/workflow-routing.md +1 -1
  31. package/template/workflows/specdev/common/rules/workflow-state-and-lifecycle.md +7 -3
  32. package/template/workflows/specdev/common/schemas/execution-context.schema.json +67 -0
  33. package/template/workflows/specdev/common/schemas/execution-record.schema.json +154 -0
  34. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +15 -55
  35. package/template/workflows/specdev/common/schemas/implementation-plan.schema.json +15 -55
  36. package/template/workflows/specdev/common/schemas/retro-approval.schema.json +44 -0
  37. package/template/workflows/specdev/common/schemas/retro-archive.schema.json +99 -0
  38. package/template/workflows/specdev/common/schemas/retro-execution.schema.json +112 -0
  39. package/template/workflows/specdev/common/schemas/retro-upgrade.schema.json +163 -0
  40. package/template/workflows/specdev/common/schemas/retrospective.schema.json +119 -14
  41. package/template/workflows/specdev/common/schemas/session-locator.schema.json +15 -0
  42. package/template/workflows/specdev/common/skills/code-review/references/review-evidence.md +3 -3
  43. package/template/workflows/specdev/common/skills/code-review/references/source-discovery.md +2 -0
  44. package/template/workflows/specdev/common/skills/code-review/references/working-tree-review.md +1 -1
  45. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +15 -34
  46. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +27 -56
  47. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +10 -54
  48. package/template/workflows/specdev/common/tools/README.md +16 -0
  49. package/template/workflows/specdev/common/tools/delivery-artifacts.mjs +5 -5
  50. package/template/workflows/specdev/common/tools/execution-context.mjs +104 -0
  51. package/template/workflows/specdev/common/tools/plan-contract.mjs +3 -1
  52. package/template/workflows/specdev/common/tools/review-evidence.mjs +2 -2
  53. package/template/workflows/specdev/common/tools/tests/engineering.test.mjs +2 -2
  54. package/template/workflows/specdev/common/tools/tests/review-fixture.mjs +4 -4
  55. package/template/workflows/specdev/common/tools/ticket-control.mjs +17 -12
  56. package/template/workflows/specdev/common/tools/validate-handoff.mjs +108 -0
  57. package/template/workflows/specdev/common/tools/validate-retro.mjs +331 -0
  58. package/template/workflows/specdev/common/tools/validate-specdev.mjs +135 -105
  59. package/template/workflows/specdev/specdev-a-archive-and-consolidate/SKILL.md +2 -1
  60. package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/operation-contract.md +2 -0
  61. package/template/workflows/specdev/specdev-a-archive-and-consolidate/references/retro-archive.md +27 -0
  62. package/template/workflows/specdev/specdev-c-code-review/SKILL.md +1 -1
  63. package/template/workflows/specdev/specdev-i-implement/SKILL.md +3 -3
  64. package/template/workflows/specdev/specdev-i-implement/assets/evidence-template.md +39 -31
  65. package/template/workflows/specdev/specdev-i-implement/references/execution-preflight.md +16 -16
  66. package/template/workflows/specdev/specdev-i-implement/references/implementation-procedure.md +21 -37
  67. package/template/workflows/specdev/specdev-i-implement/references/merge-conflict-protocol.md +8 -18
  68. package/template/workflows/specdev/specdev-p-goal-plan/SKILL.md +3 -3
  69. package/template/workflows/specdev/specdev-p-goal-plan/assets/goal-plan-template.md +23 -26
  70. package/template/workflows/specdev/specdev-p-goal-plan/references/completion-control.md +11 -14
  71. package/template/workflows/specdev/specdev-p-goal-plan/references/lead-orchestration.md +12 -33
  72. package/template/workflows/specdev/specdev-p-goal-plan/references/map-control.md +1 -1
  73. package/template/workflows/specdev/specdev-p-goal-plan/references/multi-change-plan.md +11 -16
  74. package/template/workflows/specdev/specdev-p-goal-plan/references/multi-conflict-and-drift.md +2 -2
  75. package/template/workflows/specdev/specdev-p-goal-plan/references/multi-execution-loop.md +6 -6
  76. package/template/workflows/specdev/specdev-p-goal-plan/references/orchestration-protocol.md +13 -44
  77. package/template/workflows/specdev/specdev-p-goal-plan/references/planning-modes.md +18 -25
  78. package/template/workflows/specdev/specdev-p-goal-plan/references/single-change-plan.md +16 -16
  79. package/template/workflows/specdev/specdev-r-retro/SKILL.md +15 -11
  80. package/template/workflows/specdev/specdev-r-retro/assets/retro-template.md +26 -14
  81. package/template/workflows/specdev/specdev-r-retro/assets/upgrade-plan-template.md +41 -0
  82. package/template/workflows/specdev/specdev-r-retro/references/development-retrospective.md +42 -0
  83. package/template/workflows/specdev/specdev-r-retro/references/records.md +47 -0
  84. package/template/workflows/specdev/specdev-r-retro/references/skill-upgrade.md +13 -0
  85. package/template/workflows/specdev/specdev-t-tickets/SKILL.md +2 -0
  86. package/template/workflows/specdev/specdev-t-tickets/assets/ticket-template.md +1 -1
  87. package/template/workflows/specdev/specdev-t-tickets/assets/tickets-map-template.md +6 -6
  88. package/template/workflows/specdev/specdev-t-tickets/references/planning-procedure.md +2 -2
  89. package/template/workflows/specdev/specdev-t-tickets/references/ticket-readiness.md +3 -3
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "urn:speculo:specdev:implementation-plan:v2",
3
+ "$id": "urn:speculo:specdev:implementation-plan:v3",
4
4
  "title": "SpecDev Parent Implementation Plan Frontmatter",
5
5
  "type": "object",
6
6
  "required": [
@@ -11,15 +11,13 @@
11
11
  "source_map_revision",
12
12
  "orchestration",
13
13
  "lead",
14
- "concurrent_implementation_limit",
15
14
  "integration_attempt_limit",
16
- "ticket_workspace_policy",
17
- "integration_gate",
18
- "ready_for_execution"
15
+ "ready_for_execution",
16
+ "ticket_execution"
19
17
  ],
20
18
  "properties": {
21
19
  "schema_version": {
22
- "const": 2
20
+ "const": 3
23
21
  },
24
22
  "artifact": {
25
23
  "const": "implementation-plan"
@@ -55,61 +53,23 @@
55
53
  "type": "integer",
56
54
  "minimum": 1
57
55
  },
58
- "ticket_workspace_policy": {
59
- "enum": [
60
- "current",
61
- "required"
62
- ]
56
+ "ready_for_execution": {
57
+ "type": "boolean"
63
58
  },
64
- "integration_gate": {
59
+ "ticket_execution": {
65
60
  "enum": [
66
- "direct-parent",
67
- "candidate-merge"
68
- ]
61
+ "auto",
62
+ "serial",
63
+ "parallel"
64
+ ],
65
+ "default": "auto"
69
66
  },
70
- "ready_for_execution": {
71
- "type": "boolean"
67
+ "max_parallel_tickets": {
68
+ "type": "integer",
69
+ "minimum": 1
72
70
  }
73
71
  },
74
72
  "allOf": [
75
- {
76
- "if": {
77
- "properties": {
78
- "ticket_workspace_policy": {
79
- "const": "current"
80
- }
81
- },
82
- "required": [
83
- "ticket_workspace_policy"
84
- ]
85
- },
86
- "then": {
87
- "properties": {
88
- "integration_gate": {
89
- "const": "direct-parent"
90
- }
91
- }
92
- }
93
- },
94
- {
95
- "if": {
96
- "properties": {
97
- "ticket_workspace_policy": {
98
- "const": "required"
99
- }
100
- },
101
- "required": [
102
- "ticket_workspace_policy"
103
- ]
104
- },
105
- "then": {
106
- "properties": {
107
- "integration_gate": {
108
- "const": "candidate-merge"
109
- }
110
- }
111
- }
112
- },
113
73
  {
114
74
  "if": {
115
75
  "properties": {
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:retro-approval:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "source",
8
+ "snapshot",
9
+ "sha256",
10
+ "quote",
11
+ "confirmed_at",
12
+ "plan_sha256"
13
+ ],
14
+ "properties": {
15
+ "schema_version": {
16
+ "const": 1
17
+ },
18
+ "source": {
19
+ "type": "string",
20
+ "minLength": 1
21
+ },
22
+ "snapshot": {
23
+ "type": "string",
24
+ "minLength": 1
25
+ },
26
+ "sha256": {
27
+ "type": "string",
28
+ "pattern": "^[a-f0-9]{64}$"
29
+ },
30
+ "quote": {
31
+ "type": "string",
32
+ "minLength": 1
33
+ },
34
+ "confirmed_at": {
35
+ "type": "string",
36
+ "format": "date-time"
37
+ },
38
+ "plan_sha256": {
39
+ "type": "string",
40
+ "pattern": "^[a-f0-9]{64}$"
41
+ }
42
+ },
43
+ "additionalProperties": false
44
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:retro-archive:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "id",
8
+ "owner",
9
+ "upgrade",
10
+ "source",
11
+ "target",
12
+ "plan_sha256",
13
+ "approval_sha256",
14
+ "result",
15
+ "time",
16
+ "entries"
17
+ ],
18
+ "properties": {
19
+ "schema_version": {
20
+ "const": 1
21
+ },
22
+ "id": {
23
+ "type": "string",
24
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
25
+ },
26
+ "owner": {
27
+ "type": "string",
28
+ "minLength": 1
29
+ },
30
+ "upgrade": {
31
+ "type": "string",
32
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
33
+ },
34
+ "source": {
35
+ "type": "string",
36
+ "minLength": 1
37
+ },
38
+ "target": {
39
+ "type": "string",
40
+ "minLength": 1
41
+ },
42
+ "plan_sha256": {
43
+ "type": "string",
44
+ "pattern": "^[a-f0-9]{64}$"
45
+ },
46
+ "approval_sha256": {
47
+ "type": "string",
48
+ "pattern": "^[a-f0-9]{64}$"
49
+ },
50
+ "result": {
51
+ "enum": [
52
+ "moved",
53
+ "verified"
54
+ ]
55
+ },
56
+ "time": {
57
+ "type": "string",
58
+ "format": "date-time"
59
+ },
60
+ "entries": {
61
+ "type": "array",
62
+ "items": {
63
+ "type": "object",
64
+ "required": [
65
+ "path",
66
+ "type",
67
+ "mode"
68
+ ],
69
+ "properties": {
70
+ "path": {
71
+ "type": "string",
72
+ "minLength": 1
73
+ },
74
+ "type": {
75
+ "enum": [
76
+ "file",
77
+ "directory",
78
+ "symlink"
79
+ ]
80
+ },
81
+ "mode": {
82
+ "type": "integer"
83
+ },
84
+ "sha256": {
85
+ "type": "string",
86
+ "pattern": "^[a-f0-9]{64}$"
87
+ },
88
+ "target": {
89
+ "type": "string",
90
+ "minLength": 1
91
+ }
92
+ },
93
+ "additionalProperties": false
94
+ },
95
+ "minItems": 1
96
+ }
97
+ },
98
+ "additionalProperties": false
99
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:retro-execution:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "plan_sha256",
8
+ "approval_sha256",
9
+ "status",
10
+ "results"
11
+ ],
12
+ "properties": {
13
+ "schema_version": {
14
+ "const": 1
15
+ },
16
+ "plan_sha256": {
17
+ "type": "string",
18
+ "pattern": "^[a-f0-9]{64}$"
19
+ },
20
+ "approval_sha256": {
21
+ "type": "string",
22
+ "pattern": "^[a-f0-9]{64}$"
23
+ },
24
+ "status": {
25
+ "enum": [
26
+ "applying",
27
+ "blocked",
28
+ "verified"
29
+ ]
30
+ },
31
+ "results": {
32
+ "type": "array",
33
+ "items": {
34
+ "type": "object",
35
+ "required": [
36
+ "path",
37
+ "result",
38
+ "sha256",
39
+ "evidence",
40
+ "evidence_sha256",
41
+ "method",
42
+ "observed",
43
+ "command",
44
+ "exit"
45
+ ],
46
+ "properties": {
47
+ "path": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ },
51
+ "result": {
52
+ "enum": [
53
+ "passed",
54
+ "failed",
55
+ "pending"
56
+ ]
57
+ },
58
+ "sha256": {
59
+ "anyOf": [
60
+ {
61
+ "type": "string",
62
+ "pattern": "^[a-f0-9]{64}$"
63
+ },
64
+ {
65
+ "type": "null"
66
+ }
67
+ ]
68
+ },
69
+ "evidence": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "evidence_sha256": {
74
+ "type": "string",
75
+ "pattern": "^[a-f0-9]{64}$"
76
+ },
77
+ "method": {
78
+ "type": "string",
79
+ "minLength": 1
80
+ },
81
+ "observed": {
82
+ "type": "string",
83
+ "minLength": 1
84
+ },
85
+ "command": {
86
+ "anyOf": [
87
+ {
88
+ "type": "string",
89
+ "minLength": 1
90
+ },
91
+ {
92
+ "type": "null"
93
+ }
94
+ ]
95
+ },
96
+ "exit": {
97
+ "anyOf": [
98
+ {
99
+ "type": "integer"
100
+ },
101
+ {
102
+ "type": "null"
103
+ }
104
+ ]
105
+ }
106
+ },
107
+ "additionalProperties": false
108
+ }
109
+ }
110
+ },
111
+ "additionalProperties": false
112
+ }
@@ -0,0 +1,163 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:retro-upgrade:v1",
4
+ "type": "object",
5
+ "required": [
6
+ "schema_version",
7
+ "artifact",
8
+ "id",
9
+ "owner",
10
+ "created_at",
11
+ "inputs",
12
+ "decisions",
13
+ "changes",
14
+ "archive_reports"
15
+ ],
16
+ "properties": {
17
+ "schema_version": {
18
+ "const": 1
19
+ },
20
+ "artifact": {
21
+ "const": "retro-upgrade"
22
+ },
23
+ "id": {
24
+ "type": "string",
25
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
26
+ },
27
+ "owner": {
28
+ "type": "string",
29
+ "minLength": 1
30
+ },
31
+ "created_at": {
32
+ "type": "string",
33
+ "format": "date-time"
34
+ },
35
+ "inputs": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "object",
39
+ "required": [
40
+ "report",
41
+ "sha256"
42
+ ],
43
+ "properties": {
44
+ "report": {
45
+ "type": "string",
46
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
47
+ },
48
+ "sha256": {
49
+ "type": "string",
50
+ "pattern": "^[a-f0-9]{64}$"
51
+ }
52
+ },
53
+ "additionalProperties": false
54
+ },
55
+ "minItems": 1
56
+ },
57
+ "decisions": {
58
+ "type": "array",
59
+ "items": {
60
+ "type": "object",
61
+ "required": [
62
+ "report",
63
+ "finding",
64
+ "disposition",
65
+ "reason",
66
+ "targets"
67
+ ],
68
+ "properties": {
69
+ "report": {
70
+ "type": "string",
71
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
72
+ },
73
+ "finding": {
74
+ "type": "string",
75
+ "pattern": "^F-[0-9]{3,}$"
76
+ },
77
+ "disposition": {
78
+ "enum": [
79
+ "adopt",
80
+ "reject",
81
+ "defer"
82
+ ]
83
+ },
84
+ "reason": {
85
+ "type": "string",
86
+ "minLength": 1
87
+ },
88
+ "targets": {
89
+ "type": "array",
90
+ "items": {
91
+ "type": "string",
92
+ "minLength": 1
93
+ },
94
+ "uniqueItems": true
95
+ }
96
+ },
97
+ "additionalProperties": false
98
+ }
99
+ },
100
+ "changes": {
101
+ "type": "array",
102
+ "items": {
103
+ "type": "object",
104
+ "required": [
105
+ "path",
106
+ "action",
107
+ "owner",
108
+ "before_sha256",
109
+ "after_sha256",
110
+ "candidate"
111
+ ],
112
+ "properties": {
113
+ "path": {
114
+ "type": "string",
115
+ "minLength": 1
116
+ },
117
+ "action": {
118
+ "enum": [
119
+ "create",
120
+ "update",
121
+ "retain"
122
+ ]
123
+ },
124
+ "owner": {
125
+ "enum": [
126
+ "project",
127
+ "engineering-standards-builder"
128
+ ]
129
+ },
130
+ "before_sha256": {
131
+ "anyOf": [
132
+ {
133
+ "type": "string",
134
+ "pattern": "^[a-f0-9]{64}$"
135
+ },
136
+ {
137
+ "type": "null"
138
+ }
139
+ ]
140
+ },
141
+ "after_sha256": {
142
+ "type": "string",
143
+ "pattern": "^[a-f0-9]{64}$"
144
+ },
145
+ "candidate": {
146
+ "type": "string",
147
+ "minLength": 1
148
+ }
149
+ },
150
+ "additionalProperties": false
151
+ }
152
+ },
153
+ "archive_reports": {
154
+ "type": "array",
155
+ "items": {
156
+ "type": "string",
157
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
158
+ },
159
+ "uniqueItems": true
160
+ }
161
+ },
162
+ "additionalProperties": false
163
+ }
@@ -1,36 +1,36 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "urn:speculo:specdev:retrospective:v1",
3
+ "$id": "urn:speculo:specdev:retrospective:v2",
4
4
  "type": "object",
5
5
  "required": [
6
6
  "schema_version",
7
7
  "artifact",
8
- "change",
9
8
  "id",
9
+ "owner",
10
10
  "status",
11
11
  "outcome",
12
+ "updated_at",
12
13
  "sources",
13
- "updated_at"
14
+ "findings"
14
15
  ],
15
16
  "properties": {
16
17
  "schema_version": {
17
- "const": 1
18
+ "const": 2
18
19
  },
19
20
  "artifact": {
20
21
  "const": "retrospective"
21
22
  },
22
- "change": {
23
+ "id": {
23
24
  "type": "string",
24
25
  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
25
26
  },
26
- "id": {
27
+ "owner": {
27
28
  "type": "string",
28
- "pattern": "^RETRO-[0-9]{3,}$"
29
+ "minLength": 1
29
30
  },
30
31
  "status": {
31
32
  "enum": [
32
33
  "draft",
33
- "blocked",
34
34
  "completed"
35
35
  ]
36
36
  },
@@ -41,17 +41,122 @@
41
41
  "insufficient-evidence"
42
42
  ]
43
43
  },
44
+ "updated_at": {
45
+ "type": "string",
46
+ "format": "date-time"
47
+ },
44
48
  "sources": {
45
49
  "type": "array",
46
- "minItems": 1,
47
50
  "items": {
48
- "type": "string",
49
- "minLength": 1
51
+ "type": "object",
52
+ "required": [
53
+ "id",
54
+ "kind",
55
+ "change",
56
+ "locator",
57
+ "snapshot",
58
+ "sha256",
59
+ "quote"
60
+ ],
61
+ "properties": {
62
+ "id": {
63
+ "type": "string",
64
+ "pattern": "^E-[0-9]{3,}$"
65
+ },
66
+ "kind": {
67
+ "enum": [
68
+ "change",
69
+ "project",
70
+ "session"
71
+ ]
72
+ },
73
+ "change": {
74
+ "anyOf": [
75
+ {
76
+ "type": "string",
77
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}-[a-z0-9]+(?:-[a-z0-9]+)*$"
78
+ },
79
+ {
80
+ "type": "null"
81
+ }
82
+ ]
83
+ },
84
+ "locator": {
85
+ "type": "string",
86
+ "minLength": 1
87
+ },
88
+ "snapshot": {
89
+ "type": "string",
90
+ "minLength": 1
91
+ },
92
+ "sha256": {
93
+ "type": "string",
94
+ "pattern": "^[a-f0-9]{64}$"
95
+ },
96
+ "quote": {
97
+ "type": "string",
98
+ "minLength": 1
99
+ }
100
+ },
101
+ "additionalProperties": false
50
102
  }
51
103
  },
52
- "updated_at": {
53
- "type": "string",
54
- "format": "date-time"
104
+ "findings": {
105
+ "type": "array",
106
+ "items": {
107
+ "type": "object",
108
+ "required": [
109
+ "id",
110
+ "category",
111
+ "severity",
112
+ "evidence",
113
+ "remediation_axis"
114
+ ],
115
+ "properties": {
116
+ "id": {
117
+ "type": "string",
118
+ "pattern": "^F-[0-9]{3,}$"
119
+ },
120
+ "category": {
121
+ "enum": [
122
+ "navigation",
123
+ "automated-checks",
124
+ "coding-standards",
125
+ "global-instructions",
126
+ "tool-economy",
127
+ "no-ops",
128
+ "information-access"
129
+ ]
130
+ },
131
+ "severity": {
132
+ "enum": [
133
+ "critical",
134
+ "high",
135
+ "medium",
136
+ "low"
137
+ ]
138
+ },
139
+ "evidence": {
140
+ "type": "array",
141
+ "items": {
142
+ "type": "string",
143
+ "pattern": "^E-[0-9]{3,}$"
144
+ },
145
+ "minItems": 1,
146
+ "uniqueItems": true
147
+ },
148
+ "remediation_axis": {
149
+ "enum": [
150
+ "code-defect",
151
+ "deterministic-check-gap",
152
+ "context-pointer",
153
+ "judgment-rule",
154
+ "environment-discovery"
155
+ ]
156
+ }
157
+ },
158
+ "additionalProperties": false
159
+ }
55
160
  }
56
161
  },
57
162
  "additionalProperties": false
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:speculo:specdev:session-locator",
4
+ "type": "object",
5
+ "required": [
6
+ "path"
7
+ ],
8
+ "properties": {
9
+ "path": {
10
+ "type": "string",
11
+ "minLength": 1
12
+ }
13
+ },
14
+ "additionalProperties": false
15
+ }