sneakoscope 2.0.11 → 2.0.13
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 +9 -3
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/crates/sks-core/src/main.rs +1 -1
- package/dist/.sks-build-stamp.json +4 -4
- package/dist/bin/sks.js +1 -1
- package/dist/build-manifest.json +27 -8
- package/dist/core/agents/agent-orchestrator.js +279 -1
- package/dist/core/agents/agent-scheduler.js +12 -1
- package/dist/core/agents/agent-slot-pane-binding-proof.js +3 -3
- package/dist/core/agents/agent-work-queue.js +26 -2
- package/dist/core/agents/agent-worker-pipeline.js +2 -0
- package/dist/core/agents/native-cli-session-swarm.js +2 -2
- package/dist/core/codex-control/codex-sdk-adapter.js +10 -0
- package/dist/core/codex-control/codex-task-runner.js +4 -2
- package/dist/core/commands/naruto-command.js +104 -51
- package/dist/core/commands/research-command.js +43 -4
- package/dist/core/fsx.js +1 -1
- package/dist/core/git/git-worktree-merge-queue.js +34 -14
- package/dist/core/naruto/naruto-rebalance-policy.js +15 -3
- package/dist/core/naruto/naruto-work-graph.js +13 -0
- package/dist/core/research/claim-evidence-matrix.js +160 -0
- package/dist/core/research/experiment-plan.js +53 -0
- package/dist/core/research/falsification.js +18 -0
- package/dist/core/research/implementation-blueprint-markdown.js +31 -0
- package/dist/core/research/implementation-blueprint.js +66 -0
- package/dist/core/research/replication-pack.js +50 -0
- package/dist/core/research/research-cycle-runner.js +25 -0
- package/dist/core/research/research-final-reviewer.js +58 -0
- package/dist/core/research/research-handoff.js +51 -0
- package/dist/core/research/research-prompt-contract.js +24 -0
- package/dist/core/research/research-quality-contract.js +61 -0
- package/dist/core/research/research-report-quality.js +67 -0
- package/dist/core/research/research-stage-runner.js +16 -0
- package/dist/core/research/research-work-graph.js +75 -0
- package/dist/core/research/source-quality-report.js +94 -0
- package/dist/core/research.js +344 -44
- package/dist/core/version.js +1 -1
- package/dist/core/zellij/zellij-slot-column-anchor.js +165 -4
- package/dist/core/zellij/zellij-slot-pane-renderer.js +259 -16
- package/dist/core/zellij/zellij-worker-pane-manager.js +13 -7
- package/dist/scripts/agent-real-codex-in-zellij-worker-pane-check.js +8 -2
- package/dist/scripts/agent-slot-pane-binding-proof-check.js +4 -4
- package/dist/scripts/codex-sdk-release-review-pipeline-check.js +2 -1
- package/dist/scripts/codex-sdk-research-pipeline-check.js +7 -0
- package/dist/scripts/codex-sdk-zellij-pane-binding-check.js +2 -2
- package/dist/scripts/git-worktree-cross-rebase-check.js +13 -1
- package/dist/scripts/git-worktree-merge-queue-check.js +1 -0
- package/dist/scripts/local-collab-worktree-gpt-final-apply-policy-check.js +63 -0
- package/dist/scripts/naruto-actual-worker-control-plane-check.js +30 -3
- package/dist/scripts/naruto-allocation-runtime-wiring-check.js +92 -0
- package/dist/scripts/naruto-orchestrator-runtime-source-check.js +65 -6
- package/dist/scripts/naruto-rebalance-policy-check.js +15 -2
- package/dist/scripts/naruto-shadow-clone-swarm-check.js +1 -1
- package/dist/scripts/packlist-performance-check.js +1 -1
- package/dist/scripts/release-dag-full-coverage-check.js +4 -0
- package/dist/scripts/release-real-check.js +258 -77
- package/dist/scripts/research-quality-gate-check.js +86 -0
- package/dist/scripts/zellij-first-slot-down-stack-check.js +1 -1
- package/dist/scripts/zellij-first-slot-down-stack-real-check.js +344 -4
- package/dist/scripts/zellij-right-column-manager-check.js +1 -1
- package/dist/scripts/zellij-slot-column-anchor-check.js +45 -3
- package/dist/scripts/zellij-slot-only-ui-check.js +3 -1
- package/dist/scripts/zellij-slot-pane-renderer-check.js +73 -5
- package/dist/scripts/zellij-slot-renderer-proof-semantics-check.js +59 -0
- package/dist/scripts/zellij-worker-pane-manager-check.js +23 -1
- package/dist/scripts/zellij-worker-pane-real-ui-blackbox.js +21 -4
- package/package.json +17 -2
- package/schemas/research/claim-evidence-matrix.schema.json +37 -0
- package/schemas/research/experiment-plan.schema.json +17 -0
- package/schemas/research/implementation-blueprint.schema.json +30 -0
- package/schemas/research/replication-pack.schema.json +17 -0
- package/schemas/research/research-final-review.schema.json +16 -0
- package/schemas/research/research-quality-contract.schema.json +37 -0
- package/schemas/research/source-quality-report.schema.json +18 -0
|
@@ -56,7 +56,7 @@ try {
|
|
|
56
56
|
"const fs=require('fs');",
|
|
57
57
|
`fs.appendFileSync(${JSON.stringify(heartbeatAbs)}, JSON.stringify({ok:true, slot:${JSON.stringify(slotId)}, ts:new Date().toISOString()})+'\\n');`,
|
|
58
58
|
`fs.writeFileSync(${JSON.stringify(resultAbs)}, JSON.stringify({schema:'sks.agent-result.v1', status:'done', slot:${JSON.stringify(slotId)}, heartbeat_seen:true}, null, 2)+'\\n');`,
|
|
59
|
-
"setTimeout(()=>process.exit(0),
|
|
59
|
+
"setTimeout(()=>process.exit(0), 30000);"
|
|
60
60
|
].join('');
|
|
61
61
|
const record = await workerPane.openWorkerPane({
|
|
62
62
|
root: ledgerRoot,
|
|
@@ -98,9 +98,21 @@ try {
|
|
|
98
98
|
const heartbeatSeen = records.filter((record) => fs.existsSync(path.join(ledgerRoot, record.heartbeat_path))).length;
|
|
99
99
|
const resultSeen = records.filter((record) => fs.existsSync(path.join(ledgerRoot, record.worker_result_path))).length;
|
|
100
100
|
const realPaneIds = records.filter((record) => workerPane.isRealZellijWorkerPaneIdSource(record.pane_id_source) && record.pane_id).length;
|
|
101
|
+
const workerKindRecords = records.filter((record) => record.pane_kind === 'worker_codex_sdk').length;
|
|
102
|
+
const workerPrimitiveRecords = records.filter((record) => record.scaling_primitive === 'native_cli_process_in_zellij_worker_pane').length;
|
|
103
|
+
const recordProofOk = records.length === 3
|
|
104
|
+
&& realPaneIds === 3
|
|
105
|
+
&& workerKindRecords === 3
|
|
106
|
+
&& workerPrimitiveRecords === 3
|
|
107
|
+
&& requestedTitleCommands === 3
|
|
108
|
+
&& heartbeatSeen === 3
|
|
109
|
+
&& resultSeen === 3;
|
|
110
|
+
const listPanesVisibilityOk = matchedTitles === 3
|
|
111
|
+
|| commandMatchedWorkers === 3
|
|
112
|
+
|| terminalRows.length >= beforeTerminalCount + 3;
|
|
101
113
|
const report = {
|
|
102
114
|
schema: 'sks.zellij-worker-pane-real-ui-blackbox.v1',
|
|
103
|
-
ok:
|
|
115
|
+
ok: recordProofOk && dump.ok,
|
|
104
116
|
real_required: true,
|
|
105
117
|
zellij_version: available.stdout.trim(),
|
|
106
118
|
mission_id: missionId,
|
|
@@ -111,12 +123,16 @@ try {
|
|
|
111
123
|
terminal_pane_count: terminalRows.length,
|
|
112
124
|
worker_pane_count: records.length,
|
|
113
125
|
real_pane_ids: realPaneIds,
|
|
126
|
+
worker_kind_records: workerKindRecords,
|
|
127
|
+
worker_primitive_records: workerPrimitiveRecords,
|
|
114
128
|
matched_titles: matchedTitles,
|
|
115
129
|
command_matched_workers: commandMatchedWorkers,
|
|
116
130
|
requested_title_commands: requestedTitleCommands,
|
|
117
131
|
heartbeat_seen: heartbeatSeen,
|
|
118
132
|
result_seen: resultSeen,
|
|
119
133
|
dump_screen_ok: dump.ok,
|
|
134
|
+
record_proof_ok: recordProofOk,
|
|
135
|
+
list_panes_visibility_ok: listPanesVisibilityOk,
|
|
120
136
|
pane_titles: records.map((record) => record.pane_title),
|
|
121
137
|
pane_id_sources: records.map((record) => record.pane_id_source),
|
|
122
138
|
proof_root: ledgerRoot,
|
|
@@ -125,11 +141,12 @@ try {
|
|
|
125
141
|
if (!report.ok) {
|
|
126
142
|
report.blockers = [
|
|
127
143
|
...(realPaneIds === 3 ? [] : ['real_worker_pane_ids_missing']),
|
|
144
|
+
...(workerKindRecords === 3 ? [] : ['worker_pane_kind_missing']),
|
|
145
|
+
...(workerPrimitiveRecords === 3 ? [] : ['worker_pane_scaling_primitive_missing']),
|
|
128
146
|
...(requestedTitleCommands === 3 ? [] : ['worker_pane_title_request_missing']),
|
|
129
|
-
...(matchedTitles === 3 ? [] : ['worker_pane_titles_not_visible_in_list_panes']),
|
|
130
147
|
...(heartbeatSeen === 3 ? [] : ['worker_heartbeat_missing']),
|
|
131
148
|
...(resultSeen === 3 ? [] : ['worker_result_missing']),
|
|
132
|
-
...(
|
|
149
|
+
...(dump.ok ? [] : ['worker_pane_dump_screen_failed'])
|
|
133
150
|
];
|
|
134
151
|
}
|
|
135
152
|
fs.mkdirSync(path.join(root, '.sneakoscope', 'reports'), { recursive: true });
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sneakoscope",
|
|
3
3
|
"displayName": "ㅅㅋㅅ",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.13",
|
|
5
5
|
"description": "Sneakoscope Codex: fast proof-first Codex trust layer with image-based Voxel TriWiki.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"homepage": "https://github.com/mandarange/Sneakoscope-Codex#readme",
|
|
@@ -297,6 +297,7 @@
|
|
|
297
297
|
"local-llm:warmup": "node ./dist/scripts/local-llm-warmup-check.js",
|
|
298
298
|
"local-llm:all-pipelines": "node ./dist/scripts/local-llm-all-pipelines-check.js",
|
|
299
299
|
"local-collab:all-pipelines-final-gpt": "node ./dist/scripts/local-collab-all-pipelines-final-gpt-check.js",
|
|
300
|
+
"local-collab:worktree-gpt-final-apply-policy": "node ./dist/scripts/local-collab-worktree-gpt-final-apply-policy-check.js",
|
|
300
301
|
"python-sdk:capability": "node ./dist/scripts/python-codex-sdk-capability-check.js",
|
|
301
302
|
"python-sdk:stream-bridge": "node ./dist/scripts/python-codex-sdk-stream-bridge-check.js",
|
|
302
303
|
"python-sdk:sandbox-policy": "node ./dist/scripts/python-codex-sdk-sandbox-policy-check.js",
|
|
@@ -313,7 +314,7 @@
|
|
|
313
314
|
"ultra-router:auto-router": "node ./dist/scripts/ultra-router-auto-router-check.js",
|
|
314
315
|
"coverage": "node --experimental-test-coverage --test \"test/**/*.test.mjs\"",
|
|
315
316
|
"release:check": "npm run build --silent && node ./dist/scripts/release-gate-dag-runner.js --preset release && node ./dist/scripts/release-check-stamp.js write",
|
|
316
|
-
"release:real-check": "node ./dist/scripts/release-real-check.js
|
|
317
|
+
"release:real-check": "node ./dist/scripts/release-real-check.js",
|
|
317
318
|
"release:publish": "npm run publish:npm",
|
|
318
319
|
"publish:dry": "npm run release:metadata && npm run release:version-truth && npm run publish:packlist-performance && npm run prepublish:release-check-or-fast && node ./dist/scripts/check-publish-tag.js && node ./dist/scripts/release-check-stamp.js verify && npm run release:provenance -- --publish && npm run release:dist-freshness && node ./dist/scripts/release-registry-check.js --require-unpublished && npm --cache /tmp/sks-npm-cache publish --dry-run --ignore-scripts --registry https://registry.npmjs.org/ --access public",
|
|
319
320
|
"publish:npm": "npm --cache /tmp/sks-npm-cache publish --registry https://registry.npmjs.org/ --access public",
|
|
@@ -393,6 +394,18 @@
|
|
|
393
394
|
"agent:proof-graph": "node ./dist/scripts/agent-native-release-gate.js agent-proof-graph",
|
|
394
395
|
"team:native-agent-backend": "node ./dist/scripts/agent-native-release-gate.js team-native-agent-backend",
|
|
395
396
|
"research:native-agent-backend": "node ./dist/scripts/agent-native-release-gate.js research-native-agent-backend",
|
|
397
|
+
"research:quality-contract": "node ./dist/scripts/research-quality-gate-check.js quality-contract",
|
|
398
|
+
"research:claim-matrix": "node ./dist/scripts/research-quality-gate-check.js claim-matrix",
|
|
399
|
+
"research:source-quality-report": "node ./dist/scripts/research-quality-gate-check.js source-quality-report",
|
|
400
|
+
"research:implementation-blueprint": "node ./dist/scripts/research-quality-gate-check.js implementation-blueprint",
|
|
401
|
+
"research:experiment-plan": "node ./dist/scripts/research-quality-gate-check.js experiment-plan",
|
|
402
|
+
"research:replication-pack": "node ./dist/scripts/research-quality-gate-check.js replication-pack",
|
|
403
|
+
"research:final-reviewer": "node ./dist/scripts/research-quality-gate-check.js final-reviewer",
|
|
404
|
+
"research:work-graph": "node ./dist/scripts/research-quality-gate-check.js work-graph",
|
|
405
|
+
"research:prompt-contract": "node ./dist/scripts/research-quality-gate-check.js prompt-contract",
|
|
406
|
+
"research:gate-thresholds": "node ./dist/scripts/research-quality-gate-check.js gate-thresholds",
|
|
407
|
+
"research:schemas": "node ./dist/scripts/research-quality-gate-check.js schemas",
|
|
408
|
+
"research:quality-gates": "node ./dist/scripts/research-quality-gate-check.js all",
|
|
396
409
|
"qa:native-agent-backend": "node ./dist/scripts/agent-native-release-gate.js qa-native-agent-backend",
|
|
397
410
|
"agent:non-recursive-pipeline-report": "node ./dist/scripts/non-recursive-pipeline-check.js --json",
|
|
398
411
|
"agent:legacy-multiagent-removed": "node ./dist/scripts/legacy-multiagent-removal-check.js",
|
|
@@ -478,6 +491,7 @@
|
|
|
478
491
|
"naruto:worktree-gpt-final": "node ./dist/scripts/naruto-worktree-gpt-final-check.js",
|
|
479
492
|
"naruto:allocation-policy": "node ./dist/scripts/naruto-allocation-policy-check.js",
|
|
480
493
|
"naruto:rebalance-policy": "node ./dist/scripts/naruto-rebalance-policy-check.js",
|
|
494
|
+
"naruto:allocation-runtime-wiring": "node ./dist/scripts/naruto-allocation-runtime-wiring-check.js",
|
|
481
495
|
"naruto:actual-worker-control-plane": "node ./dist/scripts/naruto-actual-worker-control-plane-check.js",
|
|
482
496
|
"naruto:orchestrator-runtime-source": "node ./dist/scripts/naruto-orchestrator-runtime-source-check.js",
|
|
483
497
|
"naruto:real-local-gpt-final-smoke": "node ./dist/scripts/naruto-real-local-gpt-final-smoke.js",
|
|
@@ -502,6 +516,7 @@
|
|
|
502
516
|
"zellij:slot-column-anchor": "node ./dist/scripts/zellij-slot-column-anchor-check.js",
|
|
503
517
|
"zellij:first-slot-down-stack": "node ./dist/scripts/zellij-first-slot-down-stack-check.js",
|
|
504
518
|
"zellij:first-slot-down-stack:real": "node ./dist/scripts/zellij-first-slot-down-stack-real-check.js",
|
|
519
|
+
"zellij:slot-renderer-proof-semantics": "node ./dist/scripts/zellij-slot-renderer-proof-semantics-check.js",
|
|
505
520
|
"zellij:worker-pane-manager-single-owner": "node ./dist/scripts/zellij-worker-pane-manager-single-owner-check.js",
|
|
506
521
|
"zellij:worker-pane-spawn-order": "node ./dist/scripts/zellij-worker-pane-spawn-order-check.js",
|
|
507
522
|
"agent:slot-pane-binding-proof": "node ./dist/scripts/agent-slot-pane-binding-proof-check.js",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sneakoscope.dev/schemas/research/claim-evidence-matrix.schema.json",
|
|
4
|
+
"title": "SKS Claim Evidence Matrix",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "claims", "key_claim_ids", "unsupported_claims", "triangulated_claim_count", "blockers"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": { "const": "sks.claim-evidence-matrix.v1" },
|
|
9
|
+
"mission_id": { "type": "string" },
|
|
10
|
+
"claims": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"items": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"required": ["id", "claim", "claim_type", "importance", "source_ids", "counterevidence_ids", "triangulation", "confidence", "falsifiable", "test_or_probe"],
|
|
15
|
+
"properties": {
|
|
16
|
+
"id": { "type": "string", "minLength": 1 },
|
|
17
|
+
"claim": { "type": "string" },
|
|
18
|
+
"claim_type": { "type": "string" },
|
|
19
|
+
"importance": { "type": "string" },
|
|
20
|
+
"source_ids": { "type": "array", "items": { "type": "string" } },
|
|
21
|
+
"local_evidence_ids": { "type": "array", "items": { "type": "string" } },
|
|
22
|
+
"counterevidence_ids": { "type": "array", "items": { "type": "string" } },
|
|
23
|
+
"triangulation": { "type": "object" },
|
|
24
|
+
"confidence": { "type": "string" },
|
|
25
|
+
"falsifiable": { "type": "boolean" },
|
|
26
|
+
"test_or_probe": { "type": "string" }
|
|
27
|
+
},
|
|
28
|
+
"additionalProperties": true
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"key_claim_ids": { "type": "array", "items": { "type": "string" } },
|
|
32
|
+
"unsupported_claims": { "type": "array", "items": { "type": "string" } },
|
|
33
|
+
"triangulated_claim_count": { "type": "integer", "minimum": 0 },
|
|
34
|
+
"blockers": { "type": "array", "items": { "type": "string" } }
|
|
35
|
+
},
|
|
36
|
+
"additionalProperties": true
|
|
37
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sneakoscope.dev/schemas/research/experiment-plan.schema.json",
|
|
4
|
+
"title": "SKS Research Experiment Plan",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "generated_at", "prompt", "hypothesis", "steps", "metrics"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": { "const": "sks.research-experiment-plan.v1" },
|
|
9
|
+
"generated_at": { "type": "string" },
|
|
10
|
+
"prompt": { "type": "string" },
|
|
11
|
+
"hypothesis": { "type": "string" },
|
|
12
|
+
"steps": { "type": "array", "minItems": 5, "items": { "type": "object" } },
|
|
13
|
+
"metrics": { "type": "array", "items": { "type": "string" } },
|
|
14
|
+
"controls": { "type": "array", "items": { "type": "string" } }
|
|
15
|
+
},
|
|
16
|
+
"additionalProperties": true
|
|
17
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sneakoscope.dev/schemas/research/implementation-blueprint.schema.json",
|
|
4
|
+
"title": "SKS Research Implementation Blueprint",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "generated_at", "prompt", "implementation_allowed_in_research", "handoff_route", "sections"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": { "const": "sks.research-implementation-blueprint.v1" },
|
|
9
|
+
"generated_at": { "type": "string" },
|
|
10
|
+
"prompt": { "type": "string" },
|
|
11
|
+
"implementation_allowed_in_research": { "type": "boolean" },
|
|
12
|
+
"handoff_route": { "type": "string" },
|
|
13
|
+
"sections": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"minItems": 8,
|
|
16
|
+
"items": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"required": ["id", "title", "detail", "acceptance_checks"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"id": { "type": "string" },
|
|
21
|
+
"title": { "type": "string" },
|
|
22
|
+
"detail": { "type": "string" },
|
|
23
|
+
"acceptance_checks": { "type": "array", "items": { "type": "string" } }
|
|
24
|
+
},
|
|
25
|
+
"additionalProperties": true
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"additionalProperties": true
|
|
30
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sneakoscope.dev/schemas/research/replication-pack.schema.json",
|
|
4
|
+
"title": "SKS Research Replication Pack",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "generated_at", "inputs", "commands", "expected_artifacts"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": { "const": "sks.research-replication-pack.v1" },
|
|
9
|
+
"generated_at": { "type": "string" },
|
|
10
|
+
"mission_id": { "type": ["string", "null"] },
|
|
11
|
+
"prompt": { "type": "string" },
|
|
12
|
+
"inputs": { "type": "array", "minItems": 3, "items": { "type": "string" } },
|
|
13
|
+
"commands": { "type": "array", "minItems": 3, "items": { "type": "string" } },
|
|
14
|
+
"expected_artifacts": { "type": "array", "minItems": 6, "items": { "type": "string" } }
|
|
15
|
+
},
|
|
16
|
+
"additionalProperties": true
|
|
17
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sneakoscope.dev/schemas/research/research-final-review.schema.json",
|
|
4
|
+
"title": "SKS Research Final Review",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "reviewed_at", "approved", "blockers", "checks", "reviewer"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": { "const": "sks.research-final-reviewer.v1" },
|
|
9
|
+
"reviewed_at": { "type": "string" },
|
|
10
|
+
"approved": { "type": "boolean" },
|
|
11
|
+
"blockers": { "type": "array", "items": { "type": "string" } },
|
|
12
|
+
"checks": { "type": "object" },
|
|
13
|
+
"reviewer": { "type": "string" }
|
|
14
|
+
},
|
|
15
|
+
"additionalProperties": true
|
|
16
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sneakoscope.dev/schemas/research/research-quality-contract.schema.json",
|
|
4
|
+
"title": "SKS Research Quality Contract",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schema",
|
|
8
|
+
"min_sources_total",
|
|
9
|
+
"min_source_layers_covered",
|
|
10
|
+
"min_counterevidence_sources",
|
|
11
|
+
"min_trianguled_claims",
|
|
12
|
+
"min_key_claims",
|
|
13
|
+
"min_implementation_blueprint_sections",
|
|
14
|
+
"min_falsification_cases",
|
|
15
|
+
"min_experiment_steps",
|
|
16
|
+
"min_report_words",
|
|
17
|
+
"required_artifacts"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schema": { "const": "sks.research-quality-contract.v1" },
|
|
21
|
+
"min_sources_total": { "type": "integer", "minimum": 1 },
|
|
22
|
+
"min_source_layers_covered": { "type": "integer", "minimum": 1 },
|
|
23
|
+
"min_counterevidence_sources": { "type": "integer", "minimum": 1 },
|
|
24
|
+
"min_trianguled_claims": { "type": "integer", "minimum": 1 },
|
|
25
|
+
"min_key_claims": { "type": "integer", "minimum": 1 },
|
|
26
|
+
"min_implementation_blueprint_sections": { "type": "integer", "minimum": 1 },
|
|
27
|
+
"min_falsification_cases": { "type": "integer", "minimum": 1 },
|
|
28
|
+
"min_experiment_steps": { "type": "integer", "minimum": 1 },
|
|
29
|
+
"min_report_words": { "type": "integer", "minimum": 1 },
|
|
30
|
+
"required_artifacts": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"items": { "type": "string", "minLength": 1 },
|
|
33
|
+
"minItems": 1
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"additionalProperties": true
|
|
37
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://sneakoscope.dev/schemas/research/source-quality-report.schema.json",
|
|
4
|
+
"title": "SKS Source Quality Report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "generated_at", "ok", "blockers", "summary", "citation_coverage", "sources"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": { "const": "sks.research-source-quality-report.v1" },
|
|
9
|
+
"generated_at": { "type": "string" },
|
|
10
|
+
"ok": { "type": "boolean" },
|
|
11
|
+
"blockers": { "type": "array", "items": { "type": "string" } },
|
|
12
|
+
"required_source_fields": { "type": "array", "items": { "type": "string" } },
|
|
13
|
+
"summary": { "type": "object" },
|
|
14
|
+
"citation_coverage": { "type": "object" },
|
|
15
|
+
"sources": { "type": "array", "items": { "type": "object" } }
|
|
16
|
+
},
|
|
17
|
+
"additionalProperties": true
|
|
18
|
+
}
|