@deepseek-insight/dsi 0.6.5 → 0.6.9
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/skills/dsi-skill-shelf/shelf.mjs +151 -23
- package/build/client/_app/immutable/assets/0.CRU0GiZX.css +2 -0
- package/build/client/_app/immutable/chunks/C1F3aCiz.js +2 -0
- package/build/client/_app/immutable/chunks/CmnxnK6v.js +1 -0
- package/build/client/_app/immutable/chunks/{BsHqd_cH.js → UkmEG9Ws.js} +1 -1
- package/build/client/_app/immutable/chunks/jugX_o5s.js +1 -0
- package/build/client/_app/immutable/entry/{app.BXy5ddPi.js → app.e7xoYywe.js} +2 -2
- package/build/client/_app/immutable/entry/start.CnkkMjJa.js +1 -0
- package/build/client/_app/immutable/nodes/{1.i0ZfDYTy.js → 1.E4wiL8sP.js} +1 -1
- package/build/client/_app/immutable/nodes/{2.BSH_1C9p.js → 2.BBV-AGuB.js} +101 -96
- package/build/client/_app/version.json +1 -1
- package/build/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{engine2.js-BRoFbCnL.js → engine2.js-BXbaI0o-.js} +6 -3
- package/build/server/chunks/chunks/{internal.js-4KmCgr7P.js → internal.js-BnJXHc1S.js} +2 -2
- package/build/server/chunks/chunks/{state.js-Clfg_Bi6.js → state.js-CAjHzrRZ.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/install/{_server.ts.js-DyzPF_Z5.js → _server.ts.js-JWyeMT3E.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/reload/{_server.ts.js-lJhCBpB2.js → _server.ts.js-CI_3uFaD.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/reload/cancel/{_server.ts.js-DT52g6_a.js → _server.ts.js-L_hU8UA2.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/snapshot/{_server.ts.js-Ct_PmlXs.js → _server.ts.js-C2Xvy2rv.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/uninstall/{_server.ts.js-D_NXkZEr.js → _server.ts.js-DQjGVZ0O.js} +2 -2
- package/build/server/chunks/entries/pages/{_error.svelte.js-VUpHsiKM.js → _error.svelte.js-BXeIuPj-.js} +3 -3
- package/build/server/chunks/entries/pages/{_page.svelte.js-Dwroj-cb.js → _page.svelte.js-CW-EdJ00.js} +41 -10
- package/build/server/chunks/{handler-BNCD1i7S.js → handler-DimUSmTW.js} +3 -3
- package/build/server/chunks/{index.js-Cla9NLvA.js → index.js-BQUp4Xgn.js} +2 -2
- package/build/server/chunks/{manifest.js-CmjuOLMb.js → manifest.js-BWy6zgHL.js} +10 -10
- package/build/server/chunks/nodes/{0.js-PpYt5eF3.js → 0.js-B0560RI0.js} +3 -3
- package/build/server/chunks/nodes/1.js-DJ3dsgdq.js +9 -0
- package/build/server/chunks/nodes/{2.js-BljKgZ5E.js → 2.js-CzgP_zp4.js} +3 -3
- package/package.json +2 -1
- package/{.agents/skills → skills}/dsh-jump-prepare-fix/SKILL.md +5 -0
- package/skills/dsi-rca/SKILL.md +103 -0
- package/skills/dsi-rca/references/mermaid-rules.md +46 -0
- package/skills/dsi-rca/references/rca-template.md +88 -0
- package/template/.dsi/prompts.sqlite +0 -0
- package/template/.dsi/resources/plugins-reff.md +3 -1
- package/template/.dsi/resources/skills-reff.md +1 -2
- package/template/dsh-app-dev-preset/README.md +69 -0
- package/template/dsh-app-dev-preset/cordis.patch.yml +219 -0
- package/template/dsh-app-dev-preset/package.json +7 -0
- package/template/dsh-research-preset/README.md +57 -0
- package/template/dsh-research-preset/cordis.patch.yml +118 -0
- package/template/dsh-research-preset/package.json +7 -0
- package/build/client/_app/immutable/assets/0.Cz4GQ8ND.css +0 -2
- package/build/client/_app/immutable/chunks/C_dVU9t5.js +0 -1
- package/build/client/_app/immutable/chunks/Cgyrc8XY.js +0 -2
- package/build/client/_app/immutable/chunks/DvyUTC20.js +0 -1
- package/build/client/_app/immutable/entry/start.DwMkMSKE.js +0 -1
- package/build/server/chunks/nodes/1.js-CsqcOUEA.js +0 -9
- /package/build/client/_app/immutable/nodes/{0.CKr_pvH3.js → 0.k1Ikzbp6.js} +0 -0
- /package/{.agents/skills → skills}/dsi-adr/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-bump-up/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-i18n-migrate/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-release/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-spcheck/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-spec/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-spec/references/mermaid-pattern.md +0 -0
- /package/{.agents/skills → skills}/dsi-spec/references/tasks-json-template.md +0 -0
- /package/{.agents/skills → skills}/dsi-sync/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-task/SKILL.md +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"1791287547811"}
|
package/build/handler.js
CHANGED
|
@@ -2,9 +2,9 @@ import './shims.js';
|
|
|
2
2
|
import 'node:fs';
|
|
3
3
|
import 'node:path';
|
|
4
4
|
import 'node:process';
|
|
5
|
-
export { h as handler } from './server/chunks/handler-
|
|
6
|
-
import './server/chunks/index.js-
|
|
7
|
-
import './server/chunks/manifest.js-
|
|
5
|
+
export { h as handler } from './server/chunks/handler-DimUSmTW.js';
|
|
6
|
+
import './server/chunks/index.js-BQUp4Xgn.js';
|
|
7
|
+
import './server/chunks/manifest.js-BWy6zgHL.js';
|
|
8
8
|
import './env.js';
|
|
9
9
|
import 'node:buffer';
|
|
10
10
|
import 'node:crypto';
|
|
@@ -16,7 +16,7 @@ import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
|
|
|
16
16
|
import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
|
|
17
17
|
import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
|
|
18
18
|
import 'node:url';
|
|
19
|
-
import './server/chunks/chunks/internal.js-
|
|
19
|
+
import './server/chunks/chunks/internal.js-BnJXHc1S.js';
|
|
20
20
|
import './server/chunks/chunks/server.js-11-pxAWV.js';
|
|
21
21
|
import './server/chunks/chunks/internal2.js-BcS47nI-.js';
|
|
22
22
|
import './server/chunks/chunks/exports.js-DH_tjtdv.js';
|
package/build/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
2
|
import fs__default from 'node:fs';
|
|
3
3
|
import process from 'node:process';
|
|
4
|
-
import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-
|
|
4
|
+
import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DimUSmTW.js';
|
|
5
5
|
import { env, timeout_env } from './env.js';
|
|
6
6
|
import { rm } from 'node:fs/promises';
|
|
7
7
|
import './shims.js';
|
|
@@ -14,12 +14,12 @@ import 'node:stream';
|
|
|
14
14
|
import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
|
|
15
15
|
import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
|
|
16
16
|
import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
|
|
17
|
-
import './server/chunks/index.js-
|
|
18
|
-
import './server/chunks/chunks/internal.js-
|
|
17
|
+
import './server/chunks/index.js-BQUp4Xgn.js';
|
|
18
|
+
import './server/chunks/chunks/internal.js-BnJXHc1S.js';
|
|
19
19
|
import './server/chunks/chunks/server.js-11-pxAWV.js';
|
|
20
20
|
import './server/chunks/chunks/internal2.js-BcS47nI-.js';
|
|
21
21
|
import './server/chunks/chunks/exports.js-DH_tjtdv.js';
|
|
22
|
-
import './server/chunks/manifest.js-
|
|
22
|
+
import './server/chunks/manifest.js-BWy6zgHL.js';
|
|
23
23
|
import 'node:url';
|
|
24
24
|
|
|
25
25
|
const path = env('SOCKET_PATH', false);
|
|
@@ -30,9 +30,12 @@ var EngineCancelledError = class extends Error {
|
|
|
30
30
|
this.name = "EngineCancelledError";
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
/** Uninstallable = on disk
|
|
33
|
+
/** Uninstallable = on disk (operator override 2026-10-05: the foreign
|
|
34
|
+
* badge informs, it no longer gates — D5's signed-only uninstall is
|
|
35
|
+
* superseded by operator decision; signed folders still prove their id
|
|
36
|
+
* in the engine before deletion). */
|
|
34
37
|
function uninstallableIds(snapshot) {
|
|
35
|
-
return snapshot.sources.flatMap((s) => s.skills.filter((k) => k.installed
|
|
38
|
+
return snapshot.sources.flatMap((s) => s.skills.filter((k) => k.installed).map((k) => k.id));
|
|
36
39
|
}
|
|
37
40
|
//#endregion
|
|
38
41
|
//#region src/lib/server/skills/engine.ts
|
|
@@ -148,4 +151,4 @@ function getEngine() {
|
|
|
148
151
|
}
|
|
149
152
|
|
|
150
153
|
export { EngineMissingError as E, EngineFailedError as a, EngineCancelledError as b, cancelRefresh as c, getEngine as g, uninstallableIds as u };
|
|
151
|
-
//# sourceMappingURL=engine2.js-
|
|
154
|
+
//# sourceMappingURL=engine2.js-BXbaI0o-.js.map
|
|
@@ -722,7 +722,7 @@ var options = {
|
|
|
722
722
|
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"%paraglide.locale%\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"tap\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
|
|
723
723
|
error: error_template_default
|
|
724
724
|
},
|
|
725
|
-
version_hash: "
|
|
725
|
+
version_hash: "13mzflk"
|
|
726
726
|
};
|
|
727
727
|
async function get_hooks() {
|
|
728
728
|
let handle;
|
|
@@ -745,4 +745,4 @@ async function get_hooks() {
|
|
|
745
745
|
}
|
|
746
746
|
|
|
747
747
|
export { __commonJSMin as _, set_public_env as a, set_read_implementation as b, onDestroy as c, __exportAll as d, get_hooks as g, index_server_exports as i, options as o, public_env as p, read_implementation as r, set_private_env as s };
|
|
748
|
-
//# sourceMappingURL=internal.js-
|
|
748
|
+
//# sourceMappingURL=internal.js-BnJXHc1S.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as index_server_exports } from './internal.js-
|
|
1
|
+
import { i as index_server_exports } from './internal.js-BnJXHc1S.js';
|
|
2
2
|
import './shared.js-HQ0rfhm4.js';
|
|
3
3
|
import './exports.js-DH_tjtdv.js';
|
|
4
4
|
import { U as snapshot, J as getContext, G as noop } from './server.js-11-pxAWV.js';
|
|
@@ -303,4 +303,4 @@ var page = {
|
|
|
303
303
|
};
|
|
304
304
|
|
|
305
305
|
export { afterNavigate as a, backtoworkspace2 as b, replaceState as c, dshunreachable1 as d, currentLocale as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
|
|
306
|
-
//# sourceMappingURL=state.js-
|
|
306
|
+
//# sourceMappingURL=state.js-CAjHzrRZ.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-
|
|
1
|
+
import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
|
|
2
2
|
import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
|
|
3
3
|
import 'node:fs';
|
|
4
4
|
import 'node:path';
|
|
@@ -44,4 +44,4 @@ var POST = async ({ request }) => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
export { POST };
|
|
47
|
-
//# sourceMappingURL=_server.ts.js-
|
|
47
|
+
//# sourceMappingURL=_server.ts.js-JWyeMT3E.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { f as fetchStarsByKey } from '../../../../../chunks/github-stars.js-BZGcEdID.js';
|
|
2
|
-
import { g as getEngine, u as uninstallableIds, b as EngineCancelledError } from '../../../../../chunks/engine2.js-
|
|
2
|
+
import { g as getEngine, u as uninstallableIds, b as EngineCancelledError } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
|
|
3
3
|
import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
|
|
4
4
|
import 'node:fs';
|
|
5
5
|
import 'node:path';
|
|
@@ -41,4 +41,4 @@ var POST = async () => {
|
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
export { POST };
|
|
44
|
-
//# sourceMappingURL=_server.ts.js-
|
|
44
|
+
//# sourceMappingURL=_server.ts.js-CI_3uFaD.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as cancelRefresh } from '../../../../../../chunks/engine2.js-
|
|
1
|
+
import { c as cancelRefresh } from '../../../../../../chunks/engine2.js-BXbaI0o-.js';
|
|
2
2
|
import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
|
|
3
3
|
import { rmSync } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
@@ -28,4 +28,4 @@ var POST = async () => {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
export { POST };
|
|
31
|
-
//# sourceMappingURL=_server.ts.js-
|
|
31
|
+
//# sourceMappingURL=_server.ts.js-L_hU8UA2.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { f as fetchStarsByKey } from '../../../../../chunks/github-stars.js-BZGcEdID.js';
|
|
2
|
-
import { g as getEngine, u as uninstallableIds } from '../../../../../chunks/engine2.js-
|
|
2
|
+
import { g as getEngine, u as uninstallableIds } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
|
|
3
3
|
import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
|
|
4
4
|
import 'node:fs';
|
|
5
5
|
import 'node:path';
|
|
@@ -40,4 +40,4 @@ var GET = async () => {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
export { GET };
|
|
43
|
-
//# sourceMappingURL=_server.ts.js-
|
|
43
|
+
//# sourceMappingURL=_server.ts.js-C2Xvy2rv.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-
|
|
1
|
+
import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
|
|
2
2
|
import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
|
|
3
3
|
import 'node:fs';
|
|
4
4
|
import 'node:path';
|
|
@@ -44,4 +44,4 @@ var POST = async ({ request }) => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
export { POST };
|
|
47
|
-
//# sourceMappingURL=_server.ts.js-
|
|
47
|
+
//# sourceMappingURL=_server.ts.js-DQjGVZ0O.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { V as head, W as escape_html, y as derived } from '../../chunks/server.js-11-pxAWV.js';
|
|
2
|
-
import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-
|
|
2
|
+
import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-CAjHzrRZ.js';
|
|
3
3
|
import '../../chunks/uneval.js-BJ9Qq2SF.js';
|
|
4
|
-
import '../../chunks/internal.js-
|
|
4
|
+
import '../../chunks/internal.js-BnJXHc1S.js';
|
|
5
5
|
import '../../chunks/shared.js-HQ0rfhm4.js';
|
|
6
6
|
import '../../chunks/exports.js-DH_tjtdv.js';
|
|
7
7
|
import '../../chunks/config.js-B0w1-uCA.js';
|
|
@@ -40,4 +40,4 @@ function _error($$renderer, $$props) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export { _error as default };
|
|
43
|
-
//# sourceMappingURL=_error.svelte.js-
|
|
43
|
+
//# sourceMappingURL=_error.svelte.js-BXeIuPj-.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-
|
|
1
|
+
import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-BnJXHc1S.js';
|
|
2
2
|
import { V as head, y as derived, X as bind_props, W as escape_html, Y as attr, Z as attr_style, _ as attr_class, x as setContext, $ as spread_props, a0 as attributes, a1 as clsx, a2 as ensure_array_like, a3 as element, J as getContext, a4 as stringify, a5 as html, F as run, a6 as props_id } from '../../chunks/server.js-11-pxAWV.js';
|
|
3
3
|
import { U as UI_LOCALES } from '../../chunks/config.js-B0w1-uCA.js';
|
|
4
4
|
import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/dsh-events.js-D9tSYE7f.js';
|
|
@@ -7,7 +7,7 @@ import { b as applyKnobEvent, E as EMPTY_KNOBS, r as resolvePermission, l as loc
|
|
|
7
7
|
import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r.js';
|
|
8
8
|
import { a as appConfig, t as triggerMode, g as getTrigger, p as previewSegments, i as isValidTagWord, b as textPreviewOf, s as searchKey, c as shouldRecordPrompt, d as parseTagWords } from '../../chunks/app-config.svelte.js-BW7TwbBy.js';
|
|
9
9
|
import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
|
|
10
|
-
import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-
|
|
10
|
+
import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-CAjHzrRZ.js';
|
|
11
11
|
import 'yaml';
|
|
12
12
|
import 'html-to-image';
|
|
13
13
|
import hljs from 'highlight.js/lib/core';
|
|
@@ -20999,6 +20999,23 @@ function normalizeFileLinkPath(href) {
|
|
|
20999
20999
|
return value;
|
|
21000
21000
|
}
|
|
21001
21001
|
/**
|
|
21002
|
+
* The deep fallback’s root lister: the workspace root’s top-level
|
|
21003
|
+
* DIRECTORY names, via the same confined tree route the existence gate
|
|
21004
|
+
* uses. Any refusal degrades to an empty list — the fallback then
|
|
21005
|
+
* silently does nothing and the honest drop stands.
|
|
21006
|
+
*/
|
|
21007
|
+
async function workspaceRootDirs(sessionId, fetchImpl = fetch) {
|
|
21008
|
+
try {
|
|
21009
|
+
const res = await fetchImpl(`/api/dsh/workspace-tree?sessionId=${encodeURIComponent(sessionId)}&path=`);
|
|
21010
|
+
if (!res.ok) return [];
|
|
21011
|
+
const body = await res.json();
|
|
21012
|
+
if (body?.ok !== true || !Array.isArray(body.listing?.entries)) return [];
|
|
21013
|
+
return body.listing.entries.filter((e) => e.type === "dir").map((e) => e.name);
|
|
21014
|
+
} catch {
|
|
21015
|
+
return [];
|
|
21016
|
+
}
|
|
21017
|
+
}
|
|
21018
|
+
/**
|
|
21002
21019
|
* Resolve a file-link path AGAINST the workspace root (Fullpath Bow ADR
|
|
21003
21020
|
* 2026-09-26 D1): the assistant speaks in its own cwd's paths, which sit
|
|
21004
21021
|
* one level ABOVE the workspace root, so real links carry the root path or
|
|
@@ -21052,13 +21069,21 @@ async function workspaceFileExists(sessionId, path, fetchImpl = fetch) {
|
|
|
21052
21069
|
* Returns the workspace-relative path to publish, or null when both
|
|
21053
21070
|
* candidates refuse (the click drops).
|
|
21054
21071
|
*/
|
|
21055
|
-
async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists) {
|
|
21072
|
+
async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists, listRoot) {
|
|
21056
21073
|
const resolved = resolveFileLinkPath(path, root);
|
|
21057
21074
|
const candidates = [resolved];
|
|
21058
21075
|
const slash = resolved.indexOf("/");
|
|
21059
21076
|
if (slash !== -1 && resolved !== path) candidates.push(resolved.slice(slash + 1));
|
|
21060
21077
|
if (!candidates.includes(path)) candidates.push(path);
|
|
21061
21078
|
for (const candidate of candidates) if (await exists(sessionId, candidate)) return candidate;
|
|
21079
|
+
if (listRoot && resolved !== "" && !hasDotDotSegment(resolved)) try {
|
|
21080
|
+
const dirs = await listRoot(sessionId);
|
|
21081
|
+
for (const dir of dirs) {
|
|
21082
|
+
if (dir === "" || dir === "." || dir === "..") continue;
|
|
21083
|
+
const candidate = dir + "/" + resolved;
|
|
21084
|
+
if (await exists(sessionId, candidate)) return candidate;
|
|
21085
|
+
}
|
|
21086
|
+
} catch {}
|
|
21062
21087
|
return null;
|
|
21063
21088
|
}
|
|
21064
21089
|
//#endregion
|
|
@@ -25220,7 +25245,7 @@ function FloatingAnchorContainerPopup($$renderer, $$props) {
|
|
|
25220
25245
|
function focus() {}
|
|
25221
25246
|
if (open) {
|
|
25222
25247
|
$$renderer.push("<!--[0-->");
|
|
25223
|
-
$$renderer.push(`<div data-svelte="FloatingAnchorContainerPopup" tabindex="-1" class="pointer-events-auto absolute right-full top-1/2 z-50 mr-2 max-h-[60vh] w-
|
|
25248
|
+
$$renderer.push(`<div data-svelte="FloatingAnchorContainerPopup" tabindex="-1" class="pointer-events-auto absolute right-full top-1/2 z-50 mr-2 max-h-[60vh] w-96 max-w-[80vw] -translate-y-1/2 overflow-y-auto rounded-lg border border-surface-border bg-surface-elevated py-1 shadow-xl outline-none focus:outline-none"${attr("data-testid", popupTestId)}>`);
|
|
25224
25249
|
if (title !== void 0) {
|
|
25225
25250
|
$$renderer.push("<!--[0-->");
|
|
25226
25251
|
$$renderer.push(`<div class="border-b border-surface-border px-2.5 py-1.5 text-[10px] font-medium uppercase tracking-wider text-text-muted"${attr("data-testid", titleTestId)}>${escape_html(title)}</div>`);
|
|
@@ -25761,8 +25786,7 @@ async function runPluginRack(args, reload, ctx, onNote) {
|
|
|
25761
25786
|
};
|
|
25762
25787
|
}
|
|
25763
25788
|
if (!addPanel({
|
|
25764
|
-
afterSessionId: ctx.sessionId
|
|
25765
|
-
})) {
|
|
25789
|
+
afterSessionId: ctx.sessionId})) {
|
|
25766
25790
|
const note = "/dsi-plugins: the floor is not mounted";
|
|
25767
25791
|
onNote?.(false, note);
|
|
25768
25792
|
return {
|
|
@@ -25808,8 +25832,7 @@ async function runSkillShelf(args, reload, ctx, onNote) {
|
|
|
25808
25832
|
};
|
|
25809
25833
|
}
|
|
25810
25834
|
if (!addPanel({
|
|
25811
|
-
afterSessionId: ctx.sessionId
|
|
25812
|
-
})) {
|
|
25835
|
+
afterSessionId: ctx.sessionId})) {
|
|
25813
25836
|
const note = "/dsi-skills: the floor is not mounted";
|
|
25814
25837
|
onNote?.(false, note);
|
|
25815
25838
|
return {
|
|
@@ -28220,6 +28243,9 @@ function SettingsSkillsPanel($$renderer, $$props) {
|
|
|
28220
28243
|
$$renderer.component(($$renderer) => {
|
|
28221
28244
|
let busy = false;
|
|
28222
28245
|
const reloadState = derived(() => visiblePhase());
|
|
28246
|
+
/** Session-only refresh token (BUG 2026-10-05): the floor bumps the
|
|
28247
|
+
* panel entry's refresh counter when /dsi-skills --reload dedupes
|
|
28248
|
+
* onto THIS open shelf — a change re-fetches the rebuilt snapshot. */
|
|
28223
28249
|
/** Persisted reload feedback (hard-reload survival): a restored
|
|
28224
28250
|
* 'done' lives out its remaining 5s window; a restored 'loading'
|
|
28225
28251
|
* re-issues the reload so the check still lands. */
|
|
@@ -28365,6 +28391,9 @@ function PluginManagerPanel($$renderer, $$props) {
|
|
|
28365
28391
|
* with the DSH restart chain: the floor goes down and re-attaches on
|
|
28366
28392
|
* the same URL (D5) — the banner says so BEFORE the fetch storms.
|
|
28367
28393
|
*/
|
|
28394
|
+
/** Session-only refresh token (BUG 2026-10-05, same contract as the
|
|
28395
|
+
* shelf's): the floor bumps it on /dsi-plugins --reload dedupe so
|
|
28396
|
+
* the open rack re-fetches the rebuilt snapshot. */
|
|
28368
28397
|
/** Persisted chrome (the explorer-tab pattern): the active pill tab.
|
|
28369
28398
|
* Junk sanitizes to 'install'. */
|
|
28370
28399
|
/** Reports the active tab up to the panel entry (hard-reload survival). */
|
|
@@ -30473,7 +30502,7 @@ function _page($$renderer, $$props) {
|
|
|
30473
30502
|
async function openFileLinkFromMarkdown(sessionId, rawHref) {
|
|
30474
30503
|
const { path, lines } = parseFileLinkHref(rawHref);
|
|
30475
30504
|
if (path === "") return;
|
|
30476
|
-
const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId));
|
|
30505
|
+
const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId), void 0, workspaceRootDirs);
|
|
30477
30506
|
if (target === null) return;
|
|
30478
30507
|
if (!sessionWorkspaceExplorer(sessionId)) {
|
|
30479
30508
|
const root = panelWorkspaceFor(sessionId);
|
|
@@ -30842,12 +30871,14 @@ function _page($$renderer, $$props) {
|
|
|
30842
30871
|
$$renderer.push("<!--[2-->");
|
|
30843
30872
|
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-plugins">`);
|
|
30844
30873
|
PluginManagerPanel($$renderer, {
|
|
30874
|
+
refreshToken: panel.refresh ?? 0,
|
|
30845
30875
|
initialTab: panel.tab ?? "install"});
|
|
30846
30876
|
$$renderer.push(`<!----></div>`);
|
|
30847
30877
|
} else if (panel.kind === "skill-shelf") {
|
|
30848
30878
|
$$renderer.push("<!--[3-->");
|
|
30849
30879
|
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-skills">`);
|
|
30850
30880
|
SettingsSkillsPanel($$renderer, {
|
|
30881
|
+
refreshToken: panel.refresh ?? 0,
|
|
30851
30882
|
initialTab: panel.tab ?? "install",
|
|
30852
30883
|
initialCollapsed: panel.collapsed ?? null,
|
|
30853
30884
|
initialSearch: panel.searchQ ?? "",
|
|
@@ -31073,4 +31104,4 @@ function _page($$renderer, $$props) {
|
|
|
31073
31104
|
}
|
|
31074
31105
|
|
|
31075
31106
|
export { _page as default };
|
|
31076
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
31107
|
+
//# sourceMappingURL=_page.svelte.js-CW-EdJ00.js.map
|
|
@@ -9,8 +9,8 @@ import * as qs from 'node:querystring';
|
|
|
9
9
|
import { Readable } from 'node:stream';
|
|
10
10
|
import { S as SvelteKitError } from './chunks/shared.js-HQ0rfhm4.js';
|
|
11
11
|
import './chunks/utils.js-CAdNO8Tu.js';
|
|
12
|
-
import { S as Server } from './index.js-
|
|
13
|
-
import { m as manifest } from './manifest.js-
|
|
12
|
+
import { S as Server } from './index.js-BQUp4Xgn.js';
|
|
13
|
+
import { m as manifest } from './manifest.js-BWy6zgHL.js';
|
|
14
14
|
import { env, dir, env_prefix } from '../../env.js';
|
|
15
15
|
import { format } from 'node:url';
|
|
16
16
|
|
|
@@ -1732,4 +1732,4 @@ const handler = sequence(
|
|
|
1732
1732
|
);
|
|
1733
1733
|
|
|
1734
1734
|
export { format_listening_address as f, handler as h, polka as p };
|
|
1735
|
-
//# sourceMappingURL=handler-
|
|
1735
|
+
//# sourceMappingURL=handler-DimUSmTW.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-
|
|
1
|
+
import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-BnJXHc1S.js';
|
|
2
2
|
import { n as noop, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, R as Redirect, b as get_relative_path, S as SvelteKitError, g as get_status, t as text_encoder, o as once, H as HttpError, d as normalize_error, e as create_remote_key, f as parse_remote_arg, s as stringify, h as stringify$1, A as ActionFailure, i as split_remote_key, j as base64_encode } from './chunks/shared.js-HQ0rfhm4.js';
|
|
3
3
|
import { b as base, o as override, a as assets, r as reset, c as app_dir } from './chunks/internal2.js-BcS47nI-.js';
|
|
4
4
|
import { f as format_server_error, j as json, i as is_form_content_type, t as text, h as has_prerendered_path, a as handle_fatal_error, r as redirect_response, g as get_set_cookies, n as negotiate, w as with_request_store, p as parseString, m as merge_tracing, b as method_not_allowed, s as static_error_page, c as handle_error_and_jsonify, d as get_global_name, e as create_replacer, k as serialize_uses, l as clarify_devalue_error, E as ENDPOINT_METHODS, P as PAGE_METHODS, o as get_node_type, q as isRedirect, u as escape_html, v as error, x as deserialize_binary_form } from './chunks/utils.js-CAdNO8Tu.js';
|
|
@@ -3861,4 +3861,4 @@ var Server = class {
|
|
|
3861
3861
|
};
|
|
3862
3862
|
|
|
3863
3863
|
export { Server as S };
|
|
3864
|
-
//# sourceMappingURL=index.js-
|
|
3864
|
+
//# sourceMappingURL=index.js-BQUp4Xgn.js.map
|
|
@@ -10,11 +10,11 @@ return {
|
|
|
10
10
|
assets: new Set(["favicon.svg"]),
|
|
11
11
|
mimeTypes: {".svg":"image/svg+xml"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.CnkkMjJa.js",app:"_app/immutable/entry/app.e7xoYywe.js",imports:["_app/immutable/entry/start.CnkkMjJa.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.e7xoYywe.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
|
-
__memo(() => import('./nodes/0.js-
|
|
16
|
-
__memo(() => import('./nodes/1.js-
|
|
17
|
-
__memo(() => import('./nodes/2.js-
|
|
15
|
+
__memo(() => import('./nodes/0.js-B0560RI0.js')),
|
|
16
|
+
__memo(() => import('./nodes/1.js-DJ3dsgdq.js')),
|
|
17
|
+
__memo(() => import('./nodes/2.js-CzgP_zp4.js'))
|
|
18
18
|
],
|
|
19
19
|
remotes: {
|
|
20
20
|
|
|
@@ -312,7 +312,7 @@ return {
|
|
|
312
312
|
pattern: /^\/api\/skills\/install\/?$/,
|
|
313
313
|
params: [],
|
|
314
314
|
page: null,
|
|
315
|
-
endpoint: __memo(() => import('./entries/endpoints/api/skills/install/_server.ts.js-
|
|
315
|
+
endpoint: __memo(() => import('./entries/endpoints/api/skills/install/_server.ts.js-JWyeMT3E.js'))
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
318
|
id: "/api/skills/progress",
|
|
@@ -326,28 +326,28 @@ return {
|
|
|
326
326
|
pattern: /^\/api\/skills\/reload\/?$/,
|
|
327
327
|
params: [],
|
|
328
328
|
page: null,
|
|
329
|
-
endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/_server.ts.js-
|
|
329
|
+
endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/_server.ts.js-CI_3uFaD.js'))
|
|
330
330
|
},
|
|
331
331
|
{
|
|
332
332
|
id: "/api/skills/reload/cancel",
|
|
333
333
|
pattern: /^\/api\/skills\/reload\/cancel\/?$/,
|
|
334
334
|
params: [],
|
|
335
335
|
page: null,
|
|
336
|
-
endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/cancel/_server.ts.js-
|
|
336
|
+
endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/cancel/_server.ts.js-L_hU8UA2.js'))
|
|
337
337
|
},
|
|
338
338
|
{
|
|
339
339
|
id: "/api/skills/snapshot",
|
|
340
340
|
pattern: /^\/api\/skills\/snapshot\/?$/,
|
|
341
341
|
params: [],
|
|
342
342
|
page: null,
|
|
343
|
-
endpoint: __memo(() => import('./entries/endpoints/api/skills/snapshot/_server.ts.js-
|
|
343
|
+
endpoint: __memo(() => import('./entries/endpoints/api/skills/snapshot/_server.ts.js-C2Xvy2rv.js'))
|
|
344
344
|
},
|
|
345
345
|
{
|
|
346
346
|
id: "/api/skills/uninstall",
|
|
347
347
|
pattern: /^\/api\/skills\/uninstall\/?$/,
|
|
348
348
|
params: [],
|
|
349
349
|
page: null,
|
|
350
|
-
endpoint: __memo(() => import('./entries/endpoints/api/skills/uninstall/_server.ts.js-
|
|
350
|
+
endpoint: __memo(() => import('./entries/endpoints/api/skills/uninstall/_server.ts.js-DQjGVZ0O.js'))
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
id: "/api/skills/voice",
|
|
@@ -445,4 +445,4 @@ return {
|
|
|
445
445
|
})();
|
|
446
446
|
|
|
447
447
|
export { manifest as m };
|
|
448
|
-
//# sourceMappingURL=manifest.js-
|
|
448
|
+
//# sourceMappingURL=manifest.js-BWy6zgHL.js.map
|
|
@@ -4,9 +4,9 @@ const index = 0;
|
|
|
4
4
|
let component_cache;
|
|
5
5
|
const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js-EFiihTdF.js')).default;
|
|
6
6
|
const universal_id = "src/routes/+layout.ts";
|
|
7
|
-
const imports = ["_app/immutable/nodes/0.
|
|
8
|
-
const stylesheets = ["_app/immutable/assets/0.
|
|
7
|
+
const imports = ["_app/immutable/nodes/0.k1Ikzbp6.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/DlfWhx6l.js"];
|
|
8
|
+
const stylesheets = ["_app/immutable/assets/0.CRU0GiZX.css"];
|
|
9
9
|
const fonts = [];
|
|
10
10
|
|
|
11
11
|
export { component, fonts, imports, index, stylesheets, universal_id };
|
|
12
|
-
//# sourceMappingURL=0.js-
|
|
12
|
+
//# sourceMappingURL=0.js-B0560RI0.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const index = 1;
|
|
2
|
+
let component_cache;
|
|
3
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_error.svelte.js-BXeIuPj-.js')).default;
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.E4wiL8sP.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/UkmEG9Ws.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/DlfWhx6l.js"];
|
|
5
|
+
const stylesheets = [];
|
|
6
|
+
const fonts = [];
|
|
7
|
+
|
|
8
|
+
export { component, fonts, imports, index, stylesheets };
|
|
9
|
+
//# sourceMappingURL=1.js-DJ3dsgdq.js.map
|
|
@@ -17,11 +17,11 @@ import '../chunks/uneval.js-BJ9Qq2SF.js';
|
|
|
17
17
|
|
|
18
18
|
const index = 2;
|
|
19
19
|
let component_cache;
|
|
20
|
-
const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-
|
|
20
|
+
const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-CW-EdJ00.js')).default;
|
|
21
21
|
const server_id = "src/routes/+page.server.ts";
|
|
22
|
-
const imports = ["_app/immutable/nodes/2.
|
|
22
|
+
const imports = ["_app/immutable/nodes/2.BBV-AGuB.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DlfWhx6l.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/UkmEG9Ws.js"];
|
|
23
23
|
const stylesheets = ["_app/immutable/assets/2.BGqV97Jd.css"];
|
|
24
24
|
const fonts = [];
|
|
25
25
|
|
|
26
26
|
export { component, fonts, imports, index, server_id, stylesheets };
|
|
27
|
-
//# sourceMappingURL=2.js-
|
|
27
|
+
//# sourceMappingURL=2.js-CzgP_zp4.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-insight/dsi",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.9",
|
|
4
4
|
"description": "See your multiple agents run on the floor (agent, sub-agent, etc), each conversation on the floor are updated instantly.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Deepseek",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"files": [
|
|
47
47
|
".agents",
|
|
48
|
+
"skills",
|
|
48
49
|
"bin",
|
|
49
50
|
"build",
|
|
50
51
|
"template",
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dsh-jump-prepare-fix
|
|
3
|
+
description: Use when a DSH edition jump dies with "Cannot read properties of undefined (reading 'prepare')" on every tool call — one verified cause class (the scheduler-Symbol split between module copies) and one validated fix.
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# DSH Jump Unstick — the `prepare` Scheduler-Symbol Split
|
|
2
7
|
|
|
3
8
|
Every DSH edition jump that dies with `Cannot read properties of undefined
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dsi-rca
|
|
3
|
+
description: Use when writing, reviewing, or marking done any RCA in deepseek-insight's dev/kb/rca/ — before drafting the first line and as the final self-audit before claiming the RCA is finished. Enforces the narrative standard the operator set after rejecting a copy-paste RCA — layman glossary, story-driven failure chains, and a mermaid flowchart AND sequence diagram are hard requirements, not style preferences.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DeepSeek Insight RCA Standard
|
|
7
|
+
|
|
8
|
+
An RCA that reads like release notes is a failed RCA. This skill exists
|
|
9
|
+
because an agent under context rot pastes the commit message into a template
|
|
10
|
+
and calls it a root-cause analysis — no story, no layman path in, no
|
|
11
|
+
diagrams. The operator rejected exactly that (2026-10-06: *"paragraph seems
|
|
12
|
+
like just copy paste, lack of proper narrative, not layman friendly, and
|
|
13
|
+
worst do not have mermaid flow & sequence diagram"*). Everything below is
|
|
14
|
+
that rejection turned into law.
|
|
15
|
+
|
|
16
|
+
The exemplar that defines the bar:
|
|
17
|
+
`dev/kb/rca/2026-10-06 - RCA — The Renderer That Told the Truth Badly
|
|
18
|
+
(Dull Diagrams, Single-Line Tables, Captures From the Top).md` — three bugs,
|
|
19
|
+
one shared root, four mermaid diagrams, and a glossary a newcomer reads
|
|
20
|
+
before any code.
|
|
21
|
+
|
|
22
|
+
**References (load before drafting):**
|
|
23
|
+
|
|
24
|
+
- `references/rca-template.md` — the copy-verbatim skeleton, section-by-
|
|
25
|
+
section depth guide, and the single-defect variant note. **The template
|
|
26
|
+
lives there, not here; never write an RCA from memory of this page.**
|
|
27
|
+
- `references/mermaid-rules.md` — diagram choice table (flowchart vs
|
|
28
|
+
sequence), the seven syntax gates that have each broken a real diagram,
|
|
29
|
+
and the accessibility/tone rules for label text.
|
|
30
|
+
|
|
31
|
+
## 1. RCA or ADR or plain KB?
|
|
32
|
+
|
|
33
|
+
- An **ADR** (dev/architectural-decission/, see the `dsi-adr` skill) records
|
|
34
|
+
a *decision and its cost* — what was chosen, what was rejected.
|
|
35
|
+
- A **KB note** documents *how a surface works* today.
|
|
36
|
+
- An **RCA** (dev/kb/rca/) reconstructs *how a defect came to exist and what
|
|
37
|
+
its existence teaches*. If your draft names no decision to revisit and no
|
|
38
|
+
defect to explain, it is not an RCA — rehome it. An RCA that ends without
|
|
39
|
+
a carry-forward lesson is a post-mortem of the code; the lesson is the
|
|
40
|
+
post-mortem of the *process*.
|
|
41
|
+
|
|
42
|
+
## 2. The hard requirements (any "no" = unfinished)
|
|
43
|
+
|
|
44
|
+
1. **Narrative, never paste.** Every section explains *why* in plain
|
|
45
|
+
sentences before naming a file or line. Commit messages, diff hunks, and
|
|
46
|
+
test output may be *cited*, never pasted as prose. If a paragraph could
|
|
47
|
+
stand inside a commit message, rewrite it.
|
|
48
|
+
2. **Quote the operator.** Open with the defect in the operator's (or the
|
|
49
|
+
test's, or the user's) own words. The gap between those words and the
|
|
50
|
+
code is the story the RCA tells.
|
|
51
|
+
3. **Layman glossary before the body.** A *Words used below* table defines
|
|
52
|
+
every term the body will use in one plain sentence each. A newcomer reads
|
|
53
|
+
the note top-to-bottom without opening the codebase.
|
|
54
|
+
4. **A mermaid flowchart per failure chain.** Each bug/defect gets its own
|
|
55
|
+
`flowchart TD` tracing decision → inherited consequence → visible
|
|
56
|
+
symptom → complaint. The chain shows how a *reasonable* choice at time T
|
|
57
|
+
became a defect at time T+1 — that is the root in root-cause.
|
|
58
|
+
5. **A mermaid sequenceDiagram wherever responsibility moves between
|
|
59
|
+
actors** (operator ↔ component ↔ runtime, caller ↔ clone). A flowchart
|
|
60
|
+
shows *how the state went bad*; the sequence shows *who handed it over*.
|
|
61
|
+
Choice table and syntax gates: `references/mermaid-rules.md`.
|
|
62
|
+
6. **A shared-root paragraph** when the RCA covers multiple defects: one
|
|
63
|
+
paragraph naming the single underlying cause (stale defaults, an
|
|
64
|
+
inheritance chain, a missing contract) that the individual fixes merely
|
|
65
|
+
trimmed. Multi-bug RCAs without a shared root are a changelog.
|
|
66
|
+
7. **"What does NOT change"** — the blast radius must be bounded in writing,
|
|
67
|
+
so the reader knows what the fix deliberately left alone.
|
|
68
|
+
8. **"What to carry forward"** — dated, portable lessons (not "be careful";
|
|
69
|
+
rules like *"a clone is a photograph of a fresh document"*), each earned
|
|
70
|
+
by a specific trap in this RCA.
|
|
71
|
+
9. **Fact discipline (same as the ADR skill):** every fact traces to
|
|
72
|
+
something inspected THIS session — file + line, a simulation's output, a
|
|
73
|
+
test run, a commit sha. Cite the shas.
|
|
74
|
+
|
|
75
|
+
## 3. The self-audit (before claiming done)
|
|
76
|
+
|
|
77
|
+
Answer each aloud, in the transcript, yes or no:
|
|
78
|
+
|
|
79
|
+
1. Is every section narrative — could any paragraph be pasted into a commit
|
|
80
|
+
message? (Must be no.)
|
|
81
|
+
2. Are the operator's own words quoted at the top?
|
|
82
|
+
3. Would a newcomer who reads only the glossary + opening follow the story
|
|
83
|
+
without the codebase?
|
|
84
|
+
4. Does EVERY failure chain have a mermaid flowchart, and does every
|
|
85
|
+
multi-actor hand-off have a sequence diagram — all parsing clean per
|
|
86
|
+
`references/mermaid-rules.md`?
|
|
87
|
+
5. Does a multi-defect RCA name the shared root in one paragraph?
|
|
88
|
+
6. Is "What does NOT change" present and specific?
|
|
89
|
+
7. Is every carry-forward lesson a rule earned by a named trap?
|
|
90
|
+
8. Does every fact carry a source inspected this session (file+line, sha,
|
|
91
|
+
simulation output)?
|
|
92
|
+
9. Does the note follow the `references/rca-template.md` skeleton — all
|
|
93
|
+
headings present, all guidance deleted?
|
|
94
|
+
|
|
95
|
+
Any "no" is an unfinished RCA. Fix it or shrink its claim — never declare
|
|
96
|
+
done with a standing "no".
|
|
97
|
+
|
|
98
|
+
## 4. Reviewing an RCA
|
|
99
|
+
|
|
100
|
+
Run the same audit from outside. The three rejection reasons that matter
|
|
101
|
+
most: a section that reads like a commit message; a missing or unparsable
|
|
102
|
+
diagram; a carry-forward list of vibes. Style is negotiable; those three
|
|
103
|
+
are not.
|