sneakoscope 0.7.78 → 0.8.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/README.md +26 -1
- package/package.json +1 -1
- package/src/cli/main.mjs +24 -1
- package/src/cli/recallpulse-command.mjs +157 -0
- package/src/core/fsx.mjs +1 -1
- package/src/core/hooks-runtime.mjs +13 -0
- package/src/core/init.mjs +2 -2
- package/src/core/recallpulse.mjs +1215 -0
- package/src/core/research.mjs +35 -46
- package/src/core/routes.mjs +2 -1
package/src/core/research.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { appendJsonlBounded, nowIso, readJson, readText, writeJsonAtomic, writeTextAtomic, exists } from './fsx.mjs';
|
|
3
3
|
import { OUTCOME_RUBRIC } from './proof-field.mjs';
|
|
4
|
+
import { RESEARCH_SCOUT_PERSONA_CONTRACT, validateResearchScoutPersonas } from './recallpulse.mjs';
|
|
4
5
|
|
|
5
6
|
export const RESEARCH_PAPER_ARTIFACT = 'research-paper.md';
|
|
6
7
|
export const RESEARCH_SOURCE_SKILL_ARTIFACT = 'research-source-skill.md';
|
|
@@ -16,43 +17,11 @@ export const RESEARCH_PAPER_SECTION_GROUPS = Object.freeze([
|
|
|
16
17
|
['references', 'sources']
|
|
17
18
|
]);
|
|
18
19
|
|
|
19
|
-
export const RESEARCH_SCOUT_COUNCIL = Object.freeze(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
mandate: 'Reframe the problem around invariants, constraints, symmetry, and thought experiments.',
|
|
25
|
-
required_outputs: ['eureka_moment', 'assumptions_to_remove', 'invariant_or_simplifying_frame', 'decisive_thought_experiment']
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
id: 'feynman',
|
|
29
|
-
label: 'Feynman lens',
|
|
30
|
-
role: 'explanation_experimentalist',
|
|
31
|
-
mandate: 'Reduce the idea to a teachable mechanism, toy example, and cheap empirical probe.',
|
|
32
|
-
required_outputs: ['eureka_moment', 'plain_language_mechanism', 'toy_model', 'cheap_probe']
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
id: 'turing',
|
|
36
|
-
label: 'Turing lens',
|
|
37
|
-
role: 'formalization_and_adversarial_cases',
|
|
38
|
-
mandate: 'Formalize inputs, outputs, algorithms, computability limits, and adversarial countercases.',
|
|
39
|
-
required_outputs: ['eureka_moment', 'formal_definition', 'algorithmic_shape', 'edge_or_adversarial_case']
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
id: 'von_neumann',
|
|
43
|
-
label: 'von Neumann lens',
|
|
44
|
-
role: 'systems_strategy_scout',
|
|
45
|
-
mandate: 'Map system dynamics, strategic incentives, scaling behavior, and worst-case interactions.',
|
|
46
|
-
required_outputs: ['eureka_moment', 'system_model', 'strategic_or_scaling_risk', 'robustness_condition']
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: 'skeptic',
|
|
50
|
-
label: 'Skeptic lens',
|
|
51
|
-
role: 'counterevidence_scout',
|
|
52
|
-
mandate: 'Find disconfirming sources, replication risks, base-rate failures, and claims that should be weakened.',
|
|
53
|
-
required_outputs: ['eureka_moment', 'counterevidence', 'base_rate_or_failure_mode', 'claim_to_downgrade']
|
|
54
|
-
}
|
|
55
|
-
]);
|
|
20
|
+
export const RESEARCH_SCOUT_COUNCIL = Object.freeze(RESEARCH_SCOUT_PERSONA_CONTRACT.map((scout) => Object.freeze({
|
|
21
|
+
...scout,
|
|
22
|
+
label: scout.display_name,
|
|
23
|
+
required_outputs: scout.required_outputs
|
|
24
|
+
})));
|
|
56
25
|
|
|
57
26
|
export const RESEARCH_SOURCE_LAYERS = Object.freeze([
|
|
58
27
|
{
|
|
@@ -248,7 +217,7 @@ export function researchPlanMarkdown(plan) {
|
|
|
248
217
|
if (plan.research_council?.scouts?.length) {
|
|
249
218
|
lines.push('## Genius Scout Council');
|
|
250
219
|
lines.push(`Policy: ${plan.research_council.policy}`);
|
|
251
|
-
for (const scout of plan.research_council.scouts) lines.push(`- ${scout.id}: ${scout.role} - ${scout.mandate}`);
|
|
220
|
+
for (const scout of plan.research_council.scouts) lines.push(`- ${scout.display_name || scout.label || scout.id}: ${scout.persona || scout.role} - ${scout.mandate} (${scout.persona_boundary || 'persona-inspired lens only'})`);
|
|
252
221
|
lines.push('');
|
|
253
222
|
}
|
|
254
223
|
if (plan.web_research_policy) {
|
|
@@ -315,7 +284,8 @@ export function countGeniusOpinionSummaries(text = '') {
|
|
|
315
284
|
const lower = String(text || '').toLowerCase();
|
|
316
285
|
return RESEARCH_SCOUT_COUNCIL.filter((scout) => {
|
|
317
286
|
const label = String(scout.label || '').toLowerCase();
|
|
318
|
-
|
|
287
|
+
const display = String(scout.display_name || '').toLowerCase();
|
|
288
|
+
return lower.includes(String(scout.id || '').toLowerCase()) || (label && lower.includes(label)) || (display && lower.includes(display));
|
|
319
289
|
}).length;
|
|
320
290
|
}
|
|
321
291
|
|
|
@@ -399,9 +369,15 @@ export function defaultScoutLedger(plan = null) {
|
|
|
399
369
|
created_at: nowIso(),
|
|
400
370
|
scouts: scouts.map((scout) => ({
|
|
401
371
|
id: scout.id,
|
|
372
|
+
display_name: scout.display_name || scout.label || scout.id,
|
|
373
|
+
historical_inspiration: scout.historical_inspiration || null,
|
|
374
|
+
persona: scout.persona || scout.role,
|
|
375
|
+
persona_boundary: scout.persona_boundary || 'persona-inspired cognitive lens only; do not impersonate the historical person',
|
|
402
376
|
role: scout.role,
|
|
403
377
|
mandate: scout.mandate,
|
|
404
378
|
effort: 'xhigh',
|
|
379
|
+
reasoning_effort: 'xhigh',
|
|
380
|
+
service_tier: scout.service_tier || 'fast',
|
|
405
381
|
eureka: {
|
|
406
382
|
exclamation: 'Eureka!',
|
|
407
383
|
idea: '',
|
|
@@ -411,7 +387,8 @@ export function defaultScoutLedger(plan = null) {
|
|
|
411
387
|
query_set: [],
|
|
412
388
|
findings: [],
|
|
413
389
|
falsifiers: [],
|
|
414
|
-
cheap_probes: []
|
|
390
|
+
cheap_probes: [],
|
|
391
|
+
challenge_or_response: ''
|
|
415
392
|
})),
|
|
416
393
|
synthesis: {
|
|
417
394
|
surviving_claims: [],
|
|
@@ -532,6 +509,8 @@ export async function evaluateResearchGate(dir) {
|
|
|
532
509
|
const scoutLedger = await readJson(path.join(dir, 'scout-ledger.json'), null);
|
|
533
510
|
const debateLedger = await readJson(path.join(dir, 'debate-ledger.json'), null);
|
|
534
511
|
const falsificationLedger = await readJson(path.join(dir, 'falsification-ledger.json'), null);
|
|
512
|
+
const geniusSummaryText = geniusSummaryPresent ? await readText(path.join(dir, RESEARCH_GENIUS_SUMMARY_ARTIFACT), '') : '';
|
|
513
|
+
const personaValidation = validateResearchScoutPersonas(scoutLedger || {}, geniusSummaryText);
|
|
535
514
|
const sourceEntries = Array.isArray(sourceLedger?.sources) ? sourceLedger.sources.length : 0;
|
|
536
515
|
const counterEvidenceEntries = Array.isArray(sourceLedger?.counterevidence_sources) ? sourceLedger.counterevidence_sources.length : 0;
|
|
537
516
|
const webSearchPasses = Math.max(Number(gate.web_search_passes || 0), Number(sourceLedger?.web_search_passes || 0));
|
|
@@ -571,6 +550,7 @@ export async function evaluateResearchGate(dir) {
|
|
|
571
550
|
if (Math.max(Number(gate.independent_scouts || 0), independentScouts) < RESEARCH_SCOUT_COUNCIL.length) reasons.push('independent_scouts_missing');
|
|
572
551
|
if (Math.max(Number(gate.xhigh_scouts || 0), xhighScouts) < RESEARCH_SCOUT_COUNCIL.length) reasons.push('scout_effort_not_xhigh');
|
|
573
552
|
if (Math.max(Number(gate.eureka_moments || 0), eurekaMoments) < RESEARCH_SCOUT_COUNCIL.length) reasons.push('eureka_missing');
|
|
553
|
+
if (!personaValidation.ok) reasons.push(...personaValidation.issues.map((issue) => `scout_persona:${issue}`));
|
|
574
554
|
if (Math.max(Number(gate.scout_findings || 0), scoutFindings) < 4) reasons.push('scout_findings_missing');
|
|
575
555
|
if (Math.max(Number(gate.debate_participants || 0), debateParticipants) < RESEARCH_SCOUT_COUNCIL.length) reasons.push('debate_participants_missing');
|
|
576
556
|
if (Math.max(Number(gate.debate_exchanges || 0), debateExchanges) < RESEARCH_SCOUT_COUNCIL.length) reasons.push('debate_exchanges_missing');
|
|
@@ -601,6 +581,8 @@ export async function evaluateResearchGate(dir) {
|
|
|
601
581
|
independent_scouts: Math.max(Number(gate.independent_scouts || 0), independentScouts),
|
|
602
582
|
xhigh_scouts: Math.max(Number(gate.xhigh_scouts || 0), xhighScouts),
|
|
603
583
|
eureka_moments: Math.max(Number(gate.eureka_moments || 0), eurekaMoments),
|
|
584
|
+
scout_persona_contract_ok: personaValidation.ok,
|
|
585
|
+
scout_persona_issues: personaValidation.issues,
|
|
604
586
|
scout_findings: Math.max(Number(gate.scout_findings || 0), scoutFindings),
|
|
605
587
|
debate_participants: Math.max(Number(gate.debate_participants || 0), debateParticipants),
|
|
606
588
|
debate_exchanges: Math.max(Number(gate.debate_exchanges || 0), debateExchanges),
|
|
@@ -709,12 +691,18 @@ export async function writeMockResearchResult(dir, plan) {
|
|
|
709
691
|
...defaultScoutLedger(plan),
|
|
710
692
|
scouts: RESEARCH_SCOUT_COUNCIL.map((scout) => ({
|
|
711
693
|
id: scout.id,
|
|
694
|
+
display_name: scout.display_name || scout.label,
|
|
695
|
+
historical_inspiration: scout.historical_inspiration || null,
|
|
696
|
+
persona: scout.persona || scout.role,
|
|
697
|
+
persona_boundary: scout.persona_boundary,
|
|
712
698
|
role: scout.role,
|
|
713
699
|
mandate: scout.mandate,
|
|
714
700
|
effort: 'xhigh',
|
|
701
|
+
reasoning_effort: 'xhigh',
|
|
702
|
+
service_tier: scout.service_tier || 'fast',
|
|
715
703
|
eureka: {
|
|
716
704
|
exclamation: 'Eureka!',
|
|
717
|
-
idea: `${scout.label} spots a non-obvious, testable angle for ${plan.prompt}.`,
|
|
705
|
+
idea: `${scout.display_name || scout.label} spots a non-obvious, testable angle for ${plan.prompt}.`,
|
|
718
706
|
why_it_matters: 'It forces the run to produce one falsifiable idea before synthesis.',
|
|
719
707
|
source_ids: ['mock-source-1']
|
|
720
708
|
},
|
|
@@ -722,13 +710,14 @@ export async function writeMockResearchResult(dir, plan) {
|
|
|
722
710
|
findings: [
|
|
723
711
|
{
|
|
724
712
|
id: `mock-${scout.id}-finding-1`,
|
|
725
|
-
claim: `${scout.label} supports a source-cited, falsifiable research gate for ${plan.prompt}.`,
|
|
713
|
+
claim: `${scout.display_name || scout.label} supports a source-cited, falsifiable research gate for ${plan.prompt}.`,
|
|
726
714
|
source_ids: ['mock-source-1'],
|
|
727
715
|
status: 'mock_supported'
|
|
728
716
|
}
|
|
729
717
|
],
|
|
730
718
|
falsifiers: ['A run without cited sources, counterevidence, or cheap probes should fail the research gate.'],
|
|
731
|
-
cheap_probes: ['Compare discovery-loop output against a summary-only baseline and count testable insights.']
|
|
719
|
+
cheap_probes: ['Compare discovery-loop output against a summary-only baseline and count testable insights.'],
|
|
720
|
+
challenge_or_response: 'Participated in the mock evidence-bound debate.'
|
|
732
721
|
})),
|
|
733
722
|
synthesis: {
|
|
734
723
|
surviving_claims: ['mock-insight-1'],
|
|
@@ -793,8 +782,8 @@ export async function writeMockResearchResult(dir, plan) {
|
|
|
793
782
|
'',
|
|
794
783
|
'## Scout Opinions',
|
|
795
784
|
...RESEARCH_SCOUT_COUNCIL.flatMap((scout) => [
|
|
796
|
-
`### ${scout.label} (${scout.id})`,
|
|
797
|
-
`Final opinion: ${scout.label} wants the run to preserve ${scout.mandate.toLowerCase()} while producing a cited, falsifiable insight.`,
|
|
785
|
+
`### ${scout.display_name || scout.label} (${scout.id})`,
|
|
786
|
+
`Final opinion: ${scout.display_name || scout.label} wants the run to preserve ${scout.mandate.toLowerCase()} while producing a cited, falsifiable insight.`,
|
|
798
787
|
'Strongest evidence: mock-source-1 plus the layered source ledger.',
|
|
799
788
|
'Main disagreement: whether formal structure or cheap empirical probes should dominate the first pass.',
|
|
800
789
|
'Changed mind: accepted that citation coverage, counterevidence, and triangulation are gates before synthesis.',
|
|
@@ -850,5 +839,5 @@ export async function writeMockResearchResult(dir, plan) {
|
|
|
850
839
|
}
|
|
851
840
|
|
|
852
841
|
export function buildResearchPrompt({ id, mission, plan, cycle, previous }) {
|
|
853
|
-
return `You are running SKS Research Mode.\nMISSION: ${id}\nTOPIC: ${mission.prompt}\nCYCLE: ${cycle}\nMODE: Genius Scout Council + frontier discovery loop. Use maximum reasoning depth available under the current Codex profile.\nLONG-RUN REAL-RESEARCH POLICY: Normal Research is allowed to take one or two hours when the question requires it. Do real source gathering and evidence comparison; do not shortcut into mock, fixture, or summary-only output. If live source access is unavailable, write the blocker and keep the gate unpassed.\nNO-QUESTION LOCK: Do not ask the user. Resolve scope from research-plan.json and current project evidence.\nSAFETY: Destructive database operations and unsafe external actions are forbidden. Prefer read-only inspection, local files, and cited public sources.\nPERSONA POLICY: Use Einstein/Feynman/Turing/von Neumann-inspired scout lenses only as cognitive roles. Do not impersonate, roleplay private identity, or speak as the historical people.\nSCOUT EFFORT POLICY: Every Research scout agent must use reasoning_effort=xhigh. Record effort: "xhigh" for every scout in scout-ledger.json. Any lower-effort scout output must keep research-gate.json unpassed.\nEUREKA POLICY: Every scout must literally write "Eureka!" and one non-obvious, source-linked idea before debate.\nDEBATE POLICY: The scouts must debate vigorously but stay evidence-bound. Every scout must challenge or respond at least once, and debate-ledger.json must record the exchanges before synthesis.\nPAPER POLICY: After the report and ledgers, write research-paper.md as a concise manuscript with Abstract, Introduction, Methodology, Findings/Results, Discussion, Limitations/Falsification, Conclusion/Next Experiment, and References.\nSOURCE SKILL POLICY: Create or update ${RESEARCH_SOURCE_SKILL_ARTIFACT} as a route-local source collection skill before synthesis. It must name the selected source layers, query routes, quality fields, blockers, and cross-layer triangulation checks. Do not edit generated .agents/skills during the research run.\nWEB/SOURCE POLICY: Run layered source retrieval across every safely available layer before synthesis: latest public papers, official government or leading-institution data, standards or primary docs, current news including BBC/CNN/GDELT-style sources when relevant, public discourse including X/Twitter and Reddit when available, developer/practitioner sources such as Stack Overflow/Stack Exchange/GitHub, and counterevidence or fact-checking sources. Treat public discourse as signal, not truth. If a layer cannot be searched, record the blocker in source-ledger.json and do not pass the gate.\nRESEARCH PLAN:\n${JSON.stringify(plan, null, 2)}\n\nOBJECTIVE: Produce genuinely useful candidate discoveries: non-obvious hypotheses, mechanisms, predictions, or experiments. Do not merely summarize. Mark uncertainty clearly.\n\nREQUIRED PROCESS:\n1. Source skill first: create ${RESEARCH_SOURCE_SKILL_ARTIFACT} with source layers, query templates, quality fields, blockers, and triangulation rules.\n2. Layered source search: create source-ledger.json with source_layers, queries, source ids, source quality notes, counterevidence sources, triangulation.cross_layer_checks, citation coverage, and blockers.\n3. Independent xhigh scouts: create scout-ledger.json with effort=xhigh, a literal Eureka! idea, findings, source_ids, falsifiers, and
|
|
842
|
+
return `You are running SKS Research Mode.\nMISSION: ${id}\nTOPIC: ${mission.prompt}\nCYCLE: ${cycle}\nMODE: Genius Scout Council + frontier discovery loop. Use maximum reasoning depth available under the current Codex profile.\nLONG-RUN REAL-RESEARCH POLICY: Normal Research is allowed to take one or two hours when the question requires it. Do real source gathering and evidence comparison; do not shortcut into mock, fixture, or summary-only output. If live source access is unavailable, write the blocker and keep the gate unpassed.\nNO-QUESTION LOCK: Do not ask the user. Resolve scope from research-plan.json and current project evidence.\nSAFETY: Destructive database operations and unsafe external actions are forbidden. Prefer read-only inspection, local files, and cited public sources.\nPERSONA POLICY: Use Einstein/Feynman/Turing/von Neumann-inspired scout lenses only as cognitive roles. Do not impersonate, roleplay private identity, or speak as the historical people.\nSCOUT PERSONA POLICY: Every Research scout row must include display_name, persona, persona_boundary, reasoning_effort: "xhigh", service_tier when available, falsifiers, cheap_probes, and challenge_or_response. Persona names are Einstein Scout, Feynman Scout, Turing Scout, von Neumann Scout, and Skeptic Scout; they are cognitive lenses, not impersonations.\nSCOUT EFFORT POLICY: Every Research scout agent must use reasoning_effort=xhigh. Record effort: "xhigh" for every scout in scout-ledger.json. Any lower-effort scout output must keep research-gate.json unpassed.\nEUREKA POLICY: Every scout must literally write "Eureka!" and one non-obvious, source-linked idea before debate.\nDEBATE POLICY: The scouts must debate vigorously but stay evidence-bound. Every scout must challenge or respond at least once, and debate-ledger.json must record the exchanges before synthesis.\nPAPER POLICY: After the report and ledgers, write research-paper.md as a concise manuscript with Abstract, Introduction, Methodology, Findings/Results, Discussion, Limitations/Falsification, Conclusion/Next Experiment, and References.\nSOURCE SKILL POLICY: Create or update ${RESEARCH_SOURCE_SKILL_ARTIFACT} as a route-local source collection skill before synthesis. It must name the selected source layers, query routes, quality fields, blockers, and cross-layer triangulation checks. Do not edit generated .agents/skills during the research run.\nWEB/SOURCE POLICY: Run layered source retrieval across every safely available layer before synthesis: latest public papers, official government or leading-institution data, standards or primary docs, current news including BBC/CNN/GDELT-style sources when relevant, public discourse including X/Twitter and Reddit when available, developer/practitioner sources such as Stack Overflow/Stack Exchange/GitHub, and counterevidence or fact-checking sources. Treat public discourse as signal, not truth. If a layer cannot be searched, record the blocker in source-ledger.json and do not pass the gate.\nRESEARCH PLAN:\n${JSON.stringify(plan, null, 2)}\n\nOBJECTIVE: Produce genuinely useful candidate discoveries: non-obvious hypotheses, mechanisms, predictions, or experiments. Do not merely summarize. Mark uncertainty clearly.\n\nREQUIRED PROCESS:\n1. Source skill first: create ${RESEARCH_SOURCE_SKILL_ARTIFACT} with source layers, query templates, quality fields, blockers, and triangulation rules.\n2. Layered source search: create source-ledger.json with source_layers, queries, source ids, source quality notes, counterevidence sources, triangulation.cross_layer_checks, citation coverage, and blockers.\n3. Independent xhigh scouts: create scout-ledger.json with display_name/persona/persona_boundary, effort=xhigh, reasoning_effort=xhigh, a literal Eureka! idea, findings, source_ids, falsifiers, cheap_probes, and challenge_or_response for every scout lens.\n4. Debate: create debate-ledger.json with evidence-bound challenge/response exchanges involving every scout before synthesis.\n5. Falsification: create falsification-ledger.json with attacks, missing evidence, source conflicts, and decisive next tests.\n6. Synthesis: write research-report.md and novelty-ledger.json only after cited scout findings, Eureka ideas, debate, cross-layer triangulation, and falsification are recorded.\n7. Paper: write research-paper.md as a paper-style manuscript with source-ledger references and limitations.\n\nREQUIRED OUTPUT FILES in .sneakoscope/missions/${id}/:\n- research-report.md: concise report with framing, source coverage, scout synthesis, debate synthesis, hypotheses, falsification, predictions, and next experiments. Cite source-ledger ids for factual claims.\n- research-paper.md: paper manuscript with Abstract, Introduction, Methodology, Findings/Results, Discussion, Limitations/Falsification, Conclusion/Next Experiment, and References using source-ledger ids.\n- ${RESEARCH_SOURCE_SKILL_ARTIFACT}: route-local source collection skill; it is evidence for the Skill Creator step and must not mutate generated .agents/skills.\n- source-ledger.json: layered web/source queries, source ids, source priority, source quality notes, counterevidence sources, citation coverage, triangulation checks, and blockers.\n- scout-ledger.json: one entry per scout lens with display_name, persona, persona_boundary, effort, reasoning_effort, service_tier, eureka, query_set, findings, source_ids, falsifiers, cheap_probes, and challenge_or_response.\n- debate-ledger.json: evidence-bound challenge/response exchanges, participants, changed minds, and unresolved conflicts.\n- novelty-ledger.json: entries with claim, novelty, confidence, falsifiability, evidence source ids, falsifiers, next_experiment.\n- falsification-ledger.json: attacks/counterexamples/source conflicts, result, and next_decisive_tests.\n- research-gate.json: set passed only when all ledgers exist, ${RESEARCH_SOURCE_SKILL_ARTIFACT} exists, research-paper.md exists with required paper sections, layered web/source retrieval covered every required source layer, at least one cross-layer triangulation check exists, all scouts have display_name/persona/persona_boundary, all scouts have effort=xhigh, all scouts have literal Eureka! ideas, every scout participated in debate, at least one counterevidence source exists, citation coverage is complete, at least one insight survived falsification, at least one testable prediction exists, and unsupported breakthrough claims are zero.\n\nPrevious cycle tail:\n${String(previous || '').slice(-2500)}\n`;
|
|
854
843
|
}
|
package/src/core/routes.mjs
CHANGED
|
@@ -399,7 +399,7 @@ export const ROUTES = [
|
|
|
399
399
|
command: '$Research',
|
|
400
400
|
mode: 'RESEARCH',
|
|
401
401
|
route: 'research mission',
|
|
402
|
-
description: 'Frontier discovery with xhigh
|
|
402
|
+
description: 'Frontier discovery with named xhigh persona-lens scouts, Eureka ideas, vigorous evidence-bound debate, layered public source retrieval, falsification, a paper manuscript, a final genius-opinion summary, and testable predictions.',
|
|
403
403
|
requiredSkills: ['research', 'research-discovery', 'pipeline-runner', REFLECTION_SKILL_NAME, 'honest-mode'],
|
|
404
404
|
lifecycle: ['research_plan', 'source_skill', 'layered_source_ledger', 'xhigh_scout_council', 'eureka_moments', 'debate_ledger', 'report', 'paper', 'genius_opinion_summary', 'novelty_ledger', 'falsification_ledger', 'research_gate', 'post_route_reflection', 'honest_mode'],
|
|
405
405
|
context7Policy: 'if_external_docs',
|
|
@@ -535,6 +535,7 @@ export const COMMAND_CATALOG = [
|
|
|
535
535
|
{ name: 'ppt', usage: 'sks ppt build|status <mission-id|latest> [--json]', description: 'Build or inspect $PPT HTML/PDF artifacts from a sealed presentation decision contract.' },
|
|
536
536
|
{ name: 'image-ux-review', usage: 'sks image-ux-review status <mission-id|latest> [--json]', description: 'Inspect $Image-UX-Review gpt-image-2/imagegen annotated UI/UX review artifacts.' },
|
|
537
537
|
{ name: 'context7', usage: 'sks context7 check|setup|tools|resolve|docs|evidence ...', description: 'Check, configure, and call the local Context7 MCP requirement.' },
|
|
538
|
+
{ name: 'recallpulse', usage: 'sks recallpulse run|status|eval|governance|checklist <mission-id|latest>', description: 'Run report-only RecallPulse active recall, durable status, proof capsule, evidence envelope, and governance checks.' },
|
|
538
539
|
{ name: 'pipeline', usage: 'sks pipeline status|resume|plan|answer ...', description: 'Inspect the active skill-first route, materialized execution plan, ambiguity gates, and completion gates.' },
|
|
539
540
|
{ name: 'guard', usage: 'sks guard check [--json]', description: 'Check SKS harness self-protection lock, fingerprints, and source-repo exception state.' },
|
|
540
541
|
{ name: 'conflicts', usage: 'sks conflicts check|prompt [--json]', description: 'Detect other Codex harnesses such as OMX/DCodex and print the GPT-5.5 high cleanup prompt.' },
|