@synap-core/workspace-templates 0.28.0 → 0.30.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/agents/hermes.agent.yaml +5 -2
- package/dist/index.js +174 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/builder.yaml +112 -0
- package/src/intent.test.ts +1 -1
- package/src/research-base.yaml +10 -10
- package/src/templates.ts +174 -10
package/package.json
CHANGED
package/src/builder.yaml
CHANGED
|
@@ -1062,6 +1062,77 @@ profiles:
|
|
|
1062
1062
|
inputType: textarea
|
|
1063
1063
|
constraints: { maxLength: 5000 }
|
|
1064
1064
|
|
|
1065
|
+
# A problem with our own product or process, worked by "Fix a finding" below.
|
|
1066
|
+
# Declared as the founder's pod holds it (pod-local profile 0f1eb707, founder
|
|
1067
|
+
# decision on card catalog-home, session 7416a988, 7 Nov 2026): pod-wide rows,
|
|
1068
|
+
# so a finding filed from any space is one list. Property slugs are the live
|
|
1069
|
+
# ones (`supersededby` included) so a reconcile onto that pod adds nothing. Two
|
|
1070
|
+
# differences, both from the catalog's coverage rules: `wont_fix` and
|
|
1071
|
+
# `superseded` are humanOnly (an agent's move into a lost option proposes
|
|
1072
|
+
# anyway), and the unlabelled legacy `ek-claim` is left out. Not research-base's `finding` (a validated fact with a claim and a
|
|
1073
|
+
# confidence): that slug clash is plan b38e5e64 decision 5, a rename of the
|
|
1074
|
+
# Research kind that waits on a data conversion.
|
|
1075
|
+
- slug: finding
|
|
1076
|
+
displayName: Finding
|
|
1077
|
+
icon: bug
|
|
1078
|
+
color: "#F97316"
|
|
1079
|
+
description: A problem report or feedback item, with a severity, raised against our own product or process. Moves open → fixing → fixed → verified, or won't fix / superseded.
|
|
1080
|
+
scope: shared
|
|
1081
|
+
entityScope: pod
|
|
1082
|
+
profileKind: kind
|
|
1083
|
+
lifecycle:
|
|
1084
|
+
property: status
|
|
1085
|
+
options:
|
|
1086
|
+
- { key: open, category: open }
|
|
1087
|
+
- { key: fixing, category: active }
|
|
1088
|
+
- { key: fixed, category: done }
|
|
1089
|
+
- { key: verified, category: done }
|
|
1090
|
+
- { key: wont_fix, category: lost, humanOnly: true }
|
|
1091
|
+
- { key: superseded, category: lost, humanOnly: true }
|
|
1092
|
+
properties:
|
|
1093
|
+
- slug: status
|
|
1094
|
+
label: Status
|
|
1095
|
+
valueType: string
|
|
1096
|
+
inputType: select
|
|
1097
|
+
enumValues: [open, fixing, fixed, verified, wont_fix, superseded]
|
|
1098
|
+
constraints: { defaultValue: open }
|
|
1099
|
+
- slug: severity
|
|
1100
|
+
label: Severity
|
|
1101
|
+
valueType: string
|
|
1102
|
+
inputType: select
|
|
1103
|
+
enumValues: [low, medium, high, critical]
|
|
1104
|
+
- slug: area
|
|
1105
|
+
label: Product area
|
|
1106
|
+
valueType: string
|
|
1107
|
+
inputType: text
|
|
1108
|
+
description: "Where it hurts: pod, mcp, bridge, cli, relay, browser, pod-admin, control-plane, governance, infra, process."
|
|
1109
|
+
- slug: evidence
|
|
1110
|
+
label: Evidence
|
|
1111
|
+
valueType: string
|
|
1112
|
+
inputType: textarea
|
|
1113
|
+
constraints: { maxLength: 2000 }
|
|
1114
|
+
description: Proposal, session, file:line, log line or URL that shows it.
|
|
1115
|
+
- slug: summary
|
|
1116
|
+
label: Summary
|
|
1117
|
+
valueType: string
|
|
1118
|
+
inputType: text
|
|
1119
|
+
constraints: { maxLength: 500 }
|
|
1120
|
+
- slug: description
|
|
1121
|
+
label: Description
|
|
1122
|
+
valueType: string
|
|
1123
|
+
inputType: textarea
|
|
1124
|
+
constraints: { maxLength: 5000 }
|
|
1125
|
+
- slug: content
|
|
1126
|
+
label: Content
|
|
1127
|
+
valueType: string
|
|
1128
|
+
inputType: textarea
|
|
1129
|
+
constraints: { maxLength: 50000 }
|
|
1130
|
+
- slug: supersededby
|
|
1131
|
+
label: Superseded by
|
|
1132
|
+
valueType: entity_id
|
|
1133
|
+
inputType: entity_select
|
|
1134
|
+
description: "The record that replaced this finding: the canonical finding it duplicates, or the correct diagnosis when this one was wrong. Recall leaves a superseded finding out."
|
|
1135
|
+
|
|
1065
1136
|
- slug: skill
|
|
1066
1137
|
displayName: Skill
|
|
1067
1138
|
icon: zap
|
|
@@ -2853,6 +2924,47 @@ playbooks:
|
|
|
2853
2924
|
statement: Every criterion of the session is graded with its evidence, and nothing unverified is reported as verified.
|
|
2854
2925
|
description: 'Shared land stage. Never report unverified work as verified. File the lesson, decision or finding the work produced (engineering-memory skill, rule dogfood-journal). Close what you opened: asks answered or withdrawn, worktree removed once merged, then synap_complete_session. Tools: synap_update_session, synap_capture, synap_complete_session. Gate: none. Model tier: quick (advisory until a tier field exists).'
|
|
2855
2926
|
|
|
2927
|
+
# Founder's pod playbook 18abd1ea, as it runs since 6 Nov 2026: no onEnd
|
|
2928
|
+
# (decision f06dc507: a cancelled or failed session leaves its finding where it
|
|
2929
|
+
# is) and no statusProperty (it follows the kind's lifecycle, backend#853).
|
|
2930
|
+
# The two pod automations that move it (PR merged → merged, deployed →
|
|
2931
|
+
# verified) are not shipped: their session_update step scopes on
|
|
2932
|
+
# `whenPlaybookId`, a pod uuid, and there is no catalog-stable reference yet.
|
|
2933
|
+
- name: Fix a finding
|
|
2934
|
+
description: "Work one finding (a problem with Synap itself) until its fix is live. The session's stages move the finding: fixing while the work runs, fixed when the fix is merged, verified once it runs on the pod. A cancelled or failed session leaves the finding where it is."
|
|
2935
|
+
goalTemplate: Fix the finding and see the fix live
|
|
2936
|
+
scope: session
|
|
2937
|
+
subjectProfile:
|
|
2938
|
+
profileSlug: finding
|
|
2939
|
+
statusProperty: status
|
|
2940
|
+
# The options no stage owns (catalog lifecycle coverage): `open` is where a
|
|
2941
|
+
# finding starts, `wont_fix` and `superseded` are a call made outside the fix.
|
|
2942
|
+
# With no onEnd nothing moves a finding into them, and a finding in them has
|
|
2943
|
+
# no stage to bind a session to anyway.
|
|
2944
|
+
humanOnlyStatuses:
|
|
2945
|
+
- open
|
|
2946
|
+
- wont_fix
|
|
2947
|
+
- superseded
|
|
2948
|
+
params: []
|
|
2949
|
+
executor: is-agent
|
|
2950
|
+
status: active
|
|
2951
|
+
stages:
|
|
2952
|
+
- key: fix
|
|
2953
|
+
name: Fix it
|
|
2954
|
+
goal: Find the root cause and ship the fix as a gated PR or commit
|
|
2955
|
+
category: started
|
|
2956
|
+
subjectStatus: fixing
|
|
2957
|
+
- key: merged
|
|
2958
|
+
name: Fix merged
|
|
2959
|
+
goal: The fix is on main (a merged PR or a gated commit)
|
|
2960
|
+
category: started
|
|
2961
|
+
subjectStatus: fixed
|
|
2962
|
+
- key: verified
|
|
2963
|
+
name: Live and verified
|
|
2964
|
+
goal: The fix runs on the pod (its build contains the fix) and the finding no longer happens
|
|
2965
|
+
category: completed
|
|
2966
|
+
subjectStatus: verified
|
|
2967
|
+
|
|
2856
2968
|
onboarding:
|
|
2857
2969
|
goal: Capture the real engineering surface — the apps that are shipped, where their code lives, what runs behind them, where they deploy, and what's in flight — so the workspace mirrors what the team actually builds and runs, not a generic template.
|
|
2858
2970
|
framing: >
|
package/src/intent.test.ts
CHANGED
|
@@ -147,7 +147,7 @@ describe("meta.intent — the catalog", () => {
|
|
|
147
147
|
expect(table["operations"]).toEqual(["Delivery", "engagement", "deliverable"]);
|
|
148
148
|
expect(table["content-os"]).toEqual(["Content", "post", "newsletter", "campaign"]);
|
|
149
149
|
expect(table["finance"]).toEqual(["Finance", "invoice", "expense"]);
|
|
150
|
-
expect(table["research-base"]).toEqual(["Research", "hypothesis", "finding"]);
|
|
150
|
+
expect(table["research-base"]).toEqual(["Research", "hypothesis", "research-finding"]);
|
|
151
151
|
});
|
|
152
152
|
|
|
153
153
|
it("libraries carry a label only; overlays and packs carry none", () => {
|
package/src/research-base.yaml
CHANGED
|
@@ -31,7 +31,7 @@ meta:
|
|
|
31
31
|
label: Research
|
|
32
32
|
produces:
|
|
33
33
|
- profile: hypothesis
|
|
34
|
-
- profile: finding
|
|
34
|
+
- profile: research-finding
|
|
35
35
|
|
|
36
36
|
workspace:
|
|
37
37
|
name: Research
|
|
@@ -214,7 +214,7 @@ profiles:
|
|
|
214
214
|
valueType: string
|
|
215
215
|
inputType: textarea
|
|
216
216
|
|
|
217
|
-
- slug: finding
|
|
217
|
+
- slug: research-finding
|
|
218
218
|
displayName: Finding
|
|
219
219
|
icon: check-circle
|
|
220
220
|
color: "#10B981"
|
|
@@ -253,7 +253,7 @@ views:
|
|
|
253
253
|
- name: Knowledge Map
|
|
254
254
|
slug: research-knowledge-map
|
|
255
255
|
type: graph
|
|
256
|
-
scopeProfileSlugs: [field, concept, finding]
|
|
256
|
+
scopeProfileSlugs: [field, concept, research-finding]
|
|
257
257
|
description: The cartography — fields and concepts, their overlaps and prerequisites, and the findings attached to them.
|
|
258
258
|
defaultView: true
|
|
259
259
|
config:
|
|
@@ -287,7 +287,7 @@ views:
|
|
|
287
287
|
- name: Findings
|
|
288
288
|
slug: research-findings
|
|
289
289
|
type: table
|
|
290
|
-
scopeProfileSlug: finding
|
|
290
|
+
scopeProfileSlug: research-finding
|
|
291
291
|
description: What's been established, with its confidence.
|
|
292
292
|
config:
|
|
293
293
|
columns: [title, confidence, status]
|
|
@@ -349,7 +349,7 @@ entityLinks:
|
|
|
349
349
|
}
|
|
350
350
|
- {
|
|
351
351
|
sourceProfileSlug: research,
|
|
352
|
-
targetProfileSlug: finding,
|
|
352
|
+
targetProfileSlug: research-finding,
|
|
353
353
|
type: concluded,
|
|
354
354
|
label: Concluded,
|
|
355
355
|
}
|
|
@@ -373,19 +373,19 @@ entityLinks:
|
|
|
373
373
|
label: Cites,
|
|
374
374
|
}
|
|
375
375
|
- {
|
|
376
|
-
sourceProfileSlug: finding,
|
|
376
|
+
sourceProfileSlug: research-finding,
|
|
377
377
|
targetProfileSlug: research,
|
|
378
378
|
type: derived_from,
|
|
379
379
|
label: Derived from,
|
|
380
380
|
}
|
|
381
381
|
- {
|
|
382
|
-
sourceProfileSlug: finding,
|
|
382
|
+
sourceProfileSlug: research-finding,
|
|
383
383
|
targetProfileSlug: source,
|
|
384
384
|
type: supported_by,
|
|
385
385
|
label: Supported by,
|
|
386
386
|
}
|
|
387
387
|
- {
|
|
388
|
-
sourceProfileSlug: finding,
|
|
388
|
+
sourceProfileSlug: research-finding,
|
|
389
389
|
targetProfileSlug: concept,
|
|
390
390
|
type: about,
|
|
391
391
|
label: About,
|
|
@@ -410,7 +410,7 @@ playbooks:
|
|
|
410
410
|
rejected with a reason (never silently drop a source). WEIGH: form the
|
|
411
411
|
candidate answers as `hypothesis` entities that answer the question; link
|
|
412
412
|
every source that bears on a hypothesis with `supports` or
|
|
413
|
-
`contradicts`; use the evidence-synthesis skill to emit `finding`
|
|
413
|
+
`contradicts`; use the evidence-synthesis skill to emit `research-finding`
|
|
414
414
|
entities with honestly calibrated confidence, each `supported_by` its
|
|
415
415
|
sources and `derived_from` this research; use the concept-cartography
|
|
416
416
|
skill to place the findings onto the knowledge map. ANSWER: create the
|
|
@@ -486,7 +486,7 @@ playbooks:
|
|
|
486
486
|
and link each one derived_from the finding. Quote only what the sources
|
|
487
487
|
support.
|
|
488
488
|
subjectProfile:
|
|
489
|
-
profileSlug: finding
|
|
489
|
+
profileSlug: research-finding
|
|
490
490
|
statusProperty: status
|
|
491
491
|
activators:
|
|
492
492
|
- { on: enters_status, status: validated, mode: propose }
|
package/src/templates.ts
CHANGED
|
@@ -5212,6 +5212,129 @@ const DATA = {
|
|
|
5212
5212
|
}
|
|
5213
5213
|
]
|
|
5214
5214
|
},
|
|
5215
|
+
{
|
|
5216
|
+
"slug": "finding",
|
|
5217
|
+
"displayName": "Finding",
|
|
5218
|
+
"icon": "bug",
|
|
5219
|
+
"color": "#F97316",
|
|
5220
|
+
"description": "A problem report or feedback item, with a severity, raised against our own product or process. Moves open → fixing → fixed → verified, or won't fix / superseded.",
|
|
5221
|
+
"scope": "shared",
|
|
5222
|
+
"entityScope": "pod",
|
|
5223
|
+
"profileKind": "kind",
|
|
5224
|
+
"lifecycle": {
|
|
5225
|
+
"property": "status",
|
|
5226
|
+
"options": [
|
|
5227
|
+
{
|
|
5228
|
+
"key": "open",
|
|
5229
|
+
"category": "open"
|
|
5230
|
+
},
|
|
5231
|
+
{
|
|
5232
|
+
"key": "fixing",
|
|
5233
|
+
"category": "active"
|
|
5234
|
+
},
|
|
5235
|
+
{
|
|
5236
|
+
"key": "fixed",
|
|
5237
|
+
"category": "done"
|
|
5238
|
+
},
|
|
5239
|
+
{
|
|
5240
|
+
"key": "verified",
|
|
5241
|
+
"category": "done"
|
|
5242
|
+
},
|
|
5243
|
+
{
|
|
5244
|
+
"key": "wont_fix",
|
|
5245
|
+
"category": "lost",
|
|
5246
|
+
"humanOnly": true
|
|
5247
|
+
},
|
|
5248
|
+
{
|
|
5249
|
+
"key": "superseded",
|
|
5250
|
+
"category": "lost",
|
|
5251
|
+
"humanOnly": true
|
|
5252
|
+
}
|
|
5253
|
+
]
|
|
5254
|
+
},
|
|
5255
|
+
"properties": [
|
|
5256
|
+
{
|
|
5257
|
+
"slug": "status",
|
|
5258
|
+
"label": "Status",
|
|
5259
|
+
"valueType": "string",
|
|
5260
|
+
"inputType": "select",
|
|
5261
|
+
"enumValues": [
|
|
5262
|
+
"open",
|
|
5263
|
+
"fixing",
|
|
5264
|
+
"fixed",
|
|
5265
|
+
"verified",
|
|
5266
|
+
"wont_fix",
|
|
5267
|
+
"superseded"
|
|
5268
|
+
],
|
|
5269
|
+
"constraints": {
|
|
5270
|
+
"defaultValue": "open"
|
|
5271
|
+
}
|
|
5272
|
+
},
|
|
5273
|
+
{
|
|
5274
|
+
"slug": "severity",
|
|
5275
|
+
"label": "Severity",
|
|
5276
|
+
"valueType": "string",
|
|
5277
|
+
"inputType": "select",
|
|
5278
|
+
"enumValues": [
|
|
5279
|
+
"low",
|
|
5280
|
+
"medium",
|
|
5281
|
+
"high",
|
|
5282
|
+
"critical"
|
|
5283
|
+
]
|
|
5284
|
+
},
|
|
5285
|
+
{
|
|
5286
|
+
"slug": "area",
|
|
5287
|
+
"label": "Product area",
|
|
5288
|
+
"valueType": "string",
|
|
5289
|
+
"inputType": "text",
|
|
5290
|
+
"description": "Where it hurts: pod, mcp, bridge, cli, relay, browser, pod-admin, control-plane, governance, infra, process."
|
|
5291
|
+
},
|
|
5292
|
+
{
|
|
5293
|
+
"slug": "evidence",
|
|
5294
|
+
"label": "Evidence",
|
|
5295
|
+
"valueType": "string",
|
|
5296
|
+
"inputType": "textarea",
|
|
5297
|
+
"constraints": {
|
|
5298
|
+
"maxLength": 2000
|
|
5299
|
+
},
|
|
5300
|
+
"description": "Proposal, session, file:line, log line or URL that shows it."
|
|
5301
|
+
},
|
|
5302
|
+
{
|
|
5303
|
+
"slug": "summary",
|
|
5304
|
+
"label": "Summary",
|
|
5305
|
+
"valueType": "string",
|
|
5306
|
+
"inputType": "text",
|
|
5307
|
+
"constraints": {
|
|
5308
|
+
"maxLength": 500
|
|
5309
|
+
}
|
|
5310
|
+
},
|
|
5311
|
+
{
|
|
5312
|
+
"slug": "description",
|
|
5313
|
+
"label": "Description",
|
|
5314
|
+
"valueType": "string",
|
|
5315
|
+
"inputType": "textarea",
|
|
5316
|
+
"constraints": {
|
|
5317
|
+
"maxLength": 5000
|
|
5318
|
+
}
|
|
5319
|
+
},
|
|
5320
|
+
{
|
|
5321
|
+
"slug": "content",
|
|
5322
|
+
"label": "Content",
|
|
5323
|
+
"valueType": "string",
|
|
5324
|
+
"inputType": "textarea",
|
|
5325
|
+
"constraints": {
|
|
5326
|
+
"maxLength": 50000
|
|
5327
|
+
}
|
|
5328
|
+
},
|
|
5329
|
+
{
|
|
5330
|
+
"slug": "supersededby",
|
|
5331
|
+
"label": "Superseded by",
|
|
5332
|
+
"valueType": "entity_id",
|
|
5333
|
+
"inputType": "entity_select",
|
|
5334
|
+
"description": "The record that replaced this finding: the canonical finding it duplicates, or the correct diagnosis when this one was wrong. Recall leaves a superseded finding out."
|
|
5335
|
+
}
|
|
5336
|
+
]
|
|
5337
|
+
},
|
|
5215
5338
|
{
|
|
5216
5339
|
"slug": "skill",
|
|
5217
5340
|
"displayName": "Skill",
|
|
@@ -7890,6 +8013,47 @@ const DATA = {
|
|
|
7890
8013
|
"description": "Shared land stage. Never report unverified work as verified. File the lesson, decision or finding the work produced (engineering-memory skill, rule dogfood-journal). Close what you opened: asks answered or withdrawn, worktree removed once merged, then synap_complete_session. Tools: synap_update_session, synap_capture, synap_complete_session. Gate: none. Model tier: quick (advisory until a tier field exists)."
|
|
7891
8014
|
}
|
|
7892
8015
|
]
|
|
8016
|
+
},
|
|
8017
|
+
{
|
|
8018
|
+
"name": "Fix a finding",
|
|
8019
|
+
"description": "Work one finding (a problem with Synap itself) until its fix is live. The session's stages move the finding: fixing while the work runs, fixed when the fix is merged, verified once it runs on the pod. A cancelled or failed session leaves the finding where it is.",
|
|
8020
|
+
"goalTemplate": "Fix the finding and see the fix live",
|
|
8021
|
+
"scope": "session",
|
|
8022
|
+
"subjectProfile": {
|
|
8023
|
+
"profileSlug": "finding",
|
|
8024
|
+
"statusProperty": "status"
|
|
8025
|
+
},
|
|
8026
|
+
"humanOnlyStatuses": [
|
|
8027
|
+
"open",
|
|
8028
|
+
"wont_fix",
|
|
8029
|
+
"superseded"
|
|
8030
|
+
],
|
|
8031
|
+
"params": [],
|
|
8032
|
+
"executor": "is-agent",
|
|
8033
|
+
"status": "active",
|
|
8034
|
+
"stages": [
|
|
8035
|
+
{
|
|
8036
|
+
"key": "fix",
|
|
8037
|
+
"name": "Fix it",
|
|
8038
|
+
"goal": "Find the root cause and ship the fix as a gated PR or commit",
|
|
8039
|
+
"category": "started",
|
|
8040
|
+
"subjectStatus": "fixing"
|
|
8041
|
+
},
|
|
8042
|
+
{
|
|
8043
|
+
"key": "merged",
|
|
8044
|
+
"name": "Fix merged",
|
|
8045
|
+
"goal": "The fix is on main (a merged PR or a gated commit)",
|
|
8046
|
+
"category": "started",
|
|
8047
|
+
"subjectStatus": "fixed"
|
|
8048
|
+
},
|
|
8049
|
+
{
|
|
8050
|
+
"key": "verified",
|
|
8051
|
+
"name": "Live and verified",
|
|
8052
|
+
"goal": "The fix runs on the pod (its build contains the fix) and the finding no longer happens",
|
|
8053
|
+
"category": "completed",
|
|
8054
|
+
"subjectStatus": "verified"
|
|
8055
|
+
}
|
|
8056
|
+
]
|
|
7893
8057
|
}
|
|
7894
8058
|
],
|
|
7895
8059
|
"onboarding": {
|
|
@@ -30073,7 +30237,7 @@ const DATA = {
|
|
|
30073
30237
|
"profile": "hypothesis"
|
|
30074
30238
|
},
|
|
30075
30239
|
{
|
|
30076
|
-
"profile": "finding"
|
|
30240
|
+
"profile": "research-finding"
|
|
30077
30241
|
}
|
|
30078
30242
|
]
|
|
30079
30243
|
}
|
|
@@ -30369,7 +30533,7 @@ const DATA = {
|
|
|
30369
30533
|
]
|
|
30370
30534
|
},
|
|
30371
30535
|
{
|
|
30372
|
-
"slug": "finding",
|
|
30536
|
+
"slug": "research-finding",
|
|
30373
30537
|
"displayName": "Finding",
|
|
30374
30538
|
"icon": "check-circle",
|
|
30375
30539
|
"color": "#10B981",
|
|
@@ -30439,7 +30603,7 @@ const DATA = {
|
|
|
30439
30603
|
"scopeProfileSlugs": [
|
|
30440
30604
|
"field",
|
|
30441
30605
|
"concept",
|
|
30442
|
-
"finding"
|
|
30606
|
+
"research-finding"
|
|
30443
30607
|
],
|
|
30444
30608
|
"description": "The cartography — fields and concepts, their overlaps and prerequisites, and the findings attached to them.",
|
|
30445
30609
|
"defaultView": true,
|
|
@@ -30493,7 +30657,7 @@ const DATA = {
|
|
|
30493
30657
|
"name": "Findings",
|
|
30494
30658
|
"slug": "research-findings",
|
|
30495
30659
|
"type": "table",
|
|
30496
|
-
"scopeProfileSlug": "finding",
|
|
30660
|
+
"scopeProfileSlug": "research-finding",
|
|
30497
30661
|
"description": "What's been established, with its confidence.",
|
|
30498
30662
|
"config": {
|
|
30499
30663
|
"columns": [
|
|
@@ -30563,7 +30727,7 @@ const DATA = {
|
|
|
30563
30727
|
},
|
|
30564
30728
|
{
|
|
30565
30729
|
"sourceProfileSlug": "research",
|
|
30566
|
-
"targetProfileSlug": "finding",
|
|
30730
|
+
"targetProfileSlug": "research-finding",
|
|
30567
30731
|
"type": "concluded",
|
|
30568
30732
|
"label": "Concluded"
|
|
30569
30733
|
},
|
|
@@ -30586,19 +30750,19 @@ const DATA = {
|
|
|
30586
30750
|
"label": "Cites"
|
|
30587
30751
|
},
|
|
30588
30752
|
{
|
|
30589
|
-
"sourceProfileSlug": "finding",
|
|
30753
|
+
"sourceProfileSlug": "research-finding",
|
|
30590
30754
|
"targetProfileSlug": "research",
|
|
30591
30755
|
"type": "derived_from",
|
|
30592
30756
|
"label": "Derived from"
|
|
30593
30757
|
},
|
|
30594
30758
|
{
|
|
30595
|
-
"sourceProfileSlug": "finding",
|
|
30759
|
+
"sourceProfileSlug": "research-finding",
|
|
30596
30760
|
"targetProfileSlug": "source",
|
|
30597
30761
|
"type": "supported_by",
|
|
30598
30762
|
"label": "Supported by"
|
|
30599
30763
|
},
|
|
30600
30764
|
{
|
|
30601
|
-
"sourceProfileSlug": "finding",
|
|
30765
|
+
"sourceProfileSlug": "research-finding",
|
|
30602
30766
|
"targetProfileSlug": "concept",
|
|
30603
30767
|
"type": "about",
|
|
30604
30768
|
"label": "About"
|
|
@@ -30608,7 +30772,7 @@ const DATA = {
|
|
|
30608
30772
|
{
|
|
30609
30773
|
"name": "Research a Question",
|
|
30610
30774
|
"description": "Investigate a question end-to-end — gather and rank sources (keeping the rejected ones), weigh hypotheses, emit findings with calibrated confidence, and map them onto the knowledge graph.",
|
|
30611
|
-
"goalTemplate": "Investigate the question {question} and record the WHOLE investigation, not just the answer; each stage moves the question's status. FRAME: restate the question so it can be answered, and say what evidence would answer it. GATHER: use the source-triage skill to gather sources widely via web search, classify each by type and credibility, and create a `source` entity for every one — including the ones you rejected, marked rejected with a reason (never silently drop a source). WEIGH: form the candidate answers as `hypothesis` entities that answer the question; link every source that bears on a hypothesis with `supports` or `contradicts`; use the evidence-synthesis skill to emit `finding` entities with honestly calibrated confidence, each `supported_by` its sources and `derived_from` this research; use the concept-cartography skill to place the findings onto the knowledge map. ANSWER: create the `research` entity that `investigates` the question and `explored` the sources, write its conclusion and confidence, and set the question to answered. Abandoning a question is a person's call. Every write is proposal-gated and reviewable.",
|
|
30775
|
+
"goalTemplate": "Investigate the question {question} and record the WHOLE investigation, not just the answer; each stage moves the question's status. FRAME: restate the question so it can be answered, and say what evidence would answer it. GATHER: use the source-triage skill to gather sources widely via web search, classify each by type and credibility, and create a `source` entity for every one — including the ones you rejected, marked rejected with a reason (never silently drop a source). WEIGH: form the candidate answers as `hypothesis` entities that answer the question; link every source that bears on a hypothesis with `supports` or `contradicts`; use the evidence-synthesis skill to emit `research-finding` entities with honestly calibrated confidence, each `supported_by` its sources and `derived_from` this research; use the concept-cartography skill to place the findings onto the knowledge map. ANSWER: create the `research` entity that `investigates` the question and `explored` the sources, write its conclusion and confidence, and set the question to answered. Abandoning a question is a person's call. Every write is proposal-gated and reviewable.",
|
|
30612
30776
|
"subjectProfile": {
|
|
30613
30777
|
"profileSlug": "question",
|
|
30614
30778
|
"statusProperty": "questionStatus"
|
|
@@ -30729,7 +30893,7 @@ const DATA = {
|
|
|
30729
30893
|
"description": "When a finding is validated, propose the posts that would share it, each linked to the finding.",
|
|
30730
30894
|
"goalTemplate": "Turn this validated finding ({finding}) into content. Read the finding, its sources and the research it came from. Propose one to three posts that share it with the audience — each created at the Idea status, on the pillar it fits, with its hook and the reason it is worth making — and link each one derived_from the finding. Quote only what the sources support.",
|
|
30731
30895
|
"subjectProfile": {
|
|
30732
|
-
"profileSlug": "finding",
|
|
30896
|
+
"profileSlug": "research-finding",
|
|
30733
30897
|
"statusProperty": "status"
|
|
30734
30898
|
},
|
|
30735
30899
|
"activators": [
|