mustflow 2.74.7 → 2.75.1
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/dist/cli/commands/script-pack.js +2 -0
- package/dist/cli/i18n/en.js +37 -0
- package/dist/cli/i18n/es.js +37 -0
- package/dist/cli/i18n/fr.js +37 -0
- package/dist/cli/i18n/hi.js +37 -0
- package/dist/cli/i18n/ko.js +37 -0
- package/dist/cli/i18n/zh.js +37 -0
- package/dist/cli/lib/script-pack-registry.js +64 -0
- package/dist/cli/script-packs/code-outline.js +354 -0
- package/dist/core/code-outline.js +705 -0
- package/dist/core/public-json-contracts.js +36 -0
- package/package.json +1 -1
- package/schemas/README.md +8 -0
- package/schemas/code-outline-report.schema.json +160 -0
- package/schemas/code-symbol-read-report.schema.json +197 -0
- package/templates/default/i18n.toml +1 -1
- package/templates/default/locales/en/.mustflow/skills/codebase-orientation/SKILL.md +7 -1
- package/templates/default/manifest.toml +1 -1
|
@@ -232,6 +232,42 @@ const PUBLIC_JSON_SCHEMA_CONTRACTS = [
|
|
|
232
232
|
'--json',
|
|
233
233
|
],
|
|
234
234
|
},
|
|
235
|
+
{
|
|
236
|
+
id: 'code-outline-report',
|
|
237
|
+
schemaFile: 'code-outline-report.schema.json',
|
|
238
|
+
producer: 'mf script-pack run code/outline scan <path...> --json',
|
|
239
|
+
packaged: true,
|
|
240
|
+
documented: true,
|
|
241
|
+
installedCommand: [
|
|
242
|
+
'mf',
|
|
243
|
+
'script-pack',
|
|
244
|
+
'run',
|
|
245
|
+
'code/outline',
|
|
246
|
+
'scan',
|
|
247
|
+
'node_modules/mustflow/dist/cli/index.js',
|
|
248
|
+
'--json',
|
|
249
|
+
],
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
id: 'code-symbol-read-report',
|
|
253
|
+
schemaFile: 'code-symbol-read-report.schema.json',
|
|
254
|
+
producer: 'mf script-pack run code/symbol-read read <path> --start-line <line> --json',
|
|
255
|
+
packaged: true,
|
|
256
|
+
documented: true,
|
|
257
|
+
installedCommand: [
|
|
258
|
+
'mf',
|
|
259
|
+
'script-pack',
|
|
260
|
+
'run',
|
|
261
|
+
'code/symbol-read',
|
|
262
|
+
'read',
|
|
263
|
+
'node_modules/mustflow/dist/cli/index.js',
|
|
264
|
+
'--start-line',
|
|
265
|
+
'1',
|
|
266
|
+
'--end-line',
|
|
267
|
+
'10',
|
|
268
|
+
'--json',
|
|
269
|
+
],
|
|
270
|
+
},
|
|
235
271
|
{
|
|
236
272
|
id: 'text-budget-report',
|
|
237
273
|
schemaFile: 'text-budget-report.schema.json',
|
package/package.json
CHANGED
package/schemas/README.md
CHANGED
|
@@ -64,6 +64,14 @@ Current schemas:
|
|
|
64
64
|
and associated report schemas
|
|
65
65
|
- `script-pack-suggestion-report.schema.json`: output of `mf script-pack suggest --json`, containing
|
|
66
66
|
path, skill, phase, and changed-file evidence used to recommend optional script-pack helpers
|
|
67
|
+
- `code-outline-report.schema.json`: output of
|
|
68
|
+
`mf script-pack run code/outline scan <path...> --json`, containing a bounded TypeScript and
|
|
69
|
+
JavaScript source outline with file hashes, symbol names, declaration kinds, line ranges,
|
|
70
|
+
signatures, export flags, static return metadata, and stable input-limit finding codes
|
|
71
|
+
- `code-symbol-read-report.schema.json`: output of
|
|
72
|
+
`mf script-pack run code/symbol-read read <path> --start-line <line> --json`, containing a
|
|
73
|
+
focused source snippet selected by outline symbol line or explicit line range with file hash,
|
|
74
|
+
resolved line metadata, optional symbol and static return metadata, and stable range/read finding codes
|
|
67
75
|
- `text-budget-report.schema.json`: output of
|
|
68
76
|
`mf script-pack run core/text-budget check <path...> --json`, containing
|
|
69
77
|
exact text-budget metrics, input content hashes, policy metadata, findings, and JSON Pointer field
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://mustflow.github.io/schemas/code-outline-report.schema.json",
|
|
4
|
+
"title": "mustflow code-outline report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"command",
|
|
10
|
+
"pack_id",
|
|
11
|
+
"script_id",
|
|
12
|
+
"script_ref",
|
|
13
|
+
"action",
|
|
14
|
+
"status",
|
|
15
|
+
"ok",
|
|
16
|
+
"mustflow_root",
|
|
17
|
+
"policy",
|
|
18
|
+
"input_hash",
|
|
19
|
+
"files",
|
|
20
|
+
"symbols",
|
|
21
|
+
"findings",
|
|
22
|
+
"issues"
|
|
23
|
+
],
|
|
24
|
+
"properties": {
|
|
25
|
+
"schema_version": { "const": "1" },
|
|
26
|
+
"command": { "const": "script-pack" },
|
|
27
|
+
"pack_id": { "const": "code" },
|
|
28
|
+
"script_id": { "const": "outline" },
|
|
29
|
+
"script_ref": { "const": "code/outline" },
|
|
30
|
+
"action": { "const": "scan" },
|
|
31
|
+
"status": { "enum": ["passed", "failed", "error"] },
|
|
32
|
+
"ok": { "type": "boolean" },
|
|
33
|
+
"mustflow_root": { "type": "string" },
|
|
34
|
+
"policy": { "$ref": "#/$defs/policy" },
|
|
35
|
+
"input_hash": { "$ref": "#/$defs/sha256" },
|
|
36
|
+
"files": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": { "$ref": "#/$defs/file" }
|
|
39
|
+
},
|
|
40
|
+
"symbols": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"items": { "$ref": "#/$defs/symbol" }
|
|
43
|
+
},
|
|
44
|
+
"findings": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": { "$ref": "#/$defs/finding" }
|
|
47
|
+
},
|
|
48
|
+
"issues": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": { "type": "string" }
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"$defs": {
|
|
54
|
+
"sha256": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
57
|
+
},
|
|
58
|
+
"language": {
|
|
59
|
+
"enum": ["typescript", "tsx", "javascript", "jsx", "javascript-module", "javascript-commonjs"]
|
|
60
|
+
},
|
|
61
|
+
"symbolKind": {
|
|
62
|
+
"enum": ["function", "class", "interface", "type", "enum", "variable"]
|
|
63
|
+
},
|
|
64
|
+
"stringArray": {
|
|
65
|
+
"type": "array",
|
|
66
|
+
"items": { "type": "string" }
|
|
67
|
+
},
|
|
68
|
+
"policy": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"additionalProperties": false,
|
|
71
|
+
"required": ["max_file_bytes", "max_files", "extensions", "ignored_directories"],
|
|
72
|
+
"properties": {
|
|
73
|
+
"max_file_bytes": { "type": "integer", "minimum": 1 },
|
|
74
|
+
"max_files": { "type": "integer", "minimum": 1 },
|
|
75
|
+
"extensions": { "$ref": "#/$defs/stringArray" },
|
|
76
|
+
"ignored_directories": { "$ref": "#/$defs/stringArray" }
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"file": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"additionalProperties": false,
|
|
82
|
+
"required": ["kind", "path", "language", "sha256", "size_bytes", "line_count", "symbol_count"],
|
|
83
|
+
"properties": {
|
|
84
|
+
"kind": { "const": "source_file" },
|
|
85
|
+
"path": { "type": "string" },
|
|
86
|
+
"language": { "$ref": "#/$defs/language" },
|
|
87
|
+
"sha256": { "$ref": "#/$defs/sha256" },
|
|
88
|
+
"size_bytes": { "type": "integer", "minimum": 0 },
|
|
89
|
+
"line_count": { "type": "integer", "minimum": 0 },
|
|
90
|
+
"symbol_count": { "type": "integer", "minimum": 0 }
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"symbol": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"additionalProperties": false,
|
|
96
|
+
"required": [
|
|
97
|
+
"id",
|
|
98
|
+
"path",
|
|
99
|
+
"language",
|
|
100
|
+
"kind",
|
|
101
|
+
"name",
|
|
102
|
+
"start_line",
|
|
103
|
+
"end_line",
|
|
104
|
+
"signature",
|
|
105
|
+
"exported",
|
|
106
|
+
"async",
|
|
107
|
+
"return_type",
|
|
108
|
+
"return_behavior",
|
|
109
|
+
"return_count",
|
|
110
|
+
"return_lines",
|
|
111
|
+
"return_preview",
|
|
112
|
+
"parent",
|
|
113
|
+
"content_sha256"
|
|
114
|
+
],
|
|
115
|
+
"properties": {
|
|
116
|
+
"id": { "type": "string" },
|
|
117
|
+
"path": { "type": "string" },
|
|
118
|
+
"language": { "$ref": "#/$defs/language" },
|
|
119
|
+
"kind": { "$ref": "#/$defs/symbolKind" },
|
|
120
|
+
"name": { "type": "string" },
|
|
121
|
+
"start_line": { "type": "integer", "minimum": 1 },
|
|
122
|
+
"end_line": { "type": "integer", "minimum": 1 },
|
|
123
|
+
"signature": { "type": "string" },
|
|
124
|
+
"exported": { "type": "boolean" },
|
|
125
|
+
"async": { "type": "boolean" },
|
|
126
|
+
"return_type": { "type": ["string", "null"] },
|
|
127
|
+
"return_behavior": {
|
|
128
|
+
"enum": ["value", "void", "implicit_undefined", "mixed", "throws_only", "unknown"]
|
|
129
|
+
},
|
|
130
|
+
"return_count": { "type": "integer", "minimum": 0 },
|
|
131
|
+
"return_lines": {
|
|
132
|
+
"type": "array",
|
|
133
|
+
"items": { "type": "integer", "minimum": 1 }
|
|
134
|
+
},
|
|
135
|
+
"return_preview": { "type": ["string", "null"] },
|
|
136
|
+
"parent": { "type": ["string", "null"] },
|
|
137
|
+
"content_sha256": { "$ref": "#/$defs/sha256" }
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"finding": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"additionalProperties": false,
|
|
143
|
+
"required": ["code", "severity", "message", "path"],
|
|
144
|
+
"properties": {
|
|
145
|
+
"code": {
|
|
146
|
+
"enum": [
|
|
147
|
+
"code_outline_path_outside_root",
|
|
148
|
+
"code_outline_unreadable_path",
|
|
149
|
+
"code_outline_unsupported_file",
|
|
150
|
+
"code_outline_file_too_large",
|
|
151
|
+
"code_outline_max_files_exceeded"
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
"severity": { "enum": ["low", "medium", "high", "critical"] },
|
|
155
|
+
"message": { "type": "string" },
|
|
156
|
+
"path": { "type": "string" }
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://mustflow.github.io/schemas/code-symbol-read-report.schema.json",
|
|
4
|
+
"title": "mustflow code-symbol-read report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"command",
|
|
10
|
+
"pack_id",
|
|
11
|
+
"script_id",
|
|
12
|
+
"script_ref",
|
|
13
|
+
"action",
|
|
14
|
+
"status",
|
|
15
|
+
"ok",
|
|
16
|
+
"mustflow_root",
|
|
17
|
+
"policy",
|
|
18
|
+
"input_hash",
|
|
19
|
+
"target",
|
|
20
|
+
"snippet",
|
|
21
|
+
"findings",
|
|
22
|
+
"issues"
|
|
23
|
+
],
|
|
24
|
+
"properties": {
|
|
25
|
+
"schema_version": { "const": "1" },
|
|
26
|
+
"command": { "const": "script-pack" },
|
|
27
|
+
"pack_id": { "const": "code" },
|
|
28
|
+
"script_id": { "const": "symbol-read" },
|
|
29
|
+
"script_ref": { "const": "code/symbol-read" },
|
|
30
|
+
"action": { "const": "read" },
|
|
31
|
+
"status": { "enum": ["passed", "failed", "error"] },
|
|
32
|
+
"ok": { "type": "boolean" },
|
|
33
|
+
"mustflow_root": { "type": "string" },
|
|
34
|
+
"policy": { "$ref": "#/$defs/policy" },
|
|
35
|
+
"input_hash": { "$ref": "#/$defs/sha256" },
|
|
36
|
+
"target": {
|
|
37
|
+
"anyOf": [
|
|
38
|
+
{ "$ref": "#/$defs/target" },
|
|
39
|
+
{ "type": "null" }
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"snippet": {
|
|
43
|
+
"anyOf": [
|
|
44
|
+
{ "$ref": "#/$defs/snippet" },
|
|
45
|
+
{ "type": "null" }
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"findings": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": { "$ref": "#/$defs/finding" }
|
|
51
|
+
},
|
|
52
|
+
"issues": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"items": { "type": "string" }
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"$defs": {
|
|
58
|
+
"sha256": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
61
|
+
},
|
|
62
|
+
"language": {
|
|
63
|
+
"enum": ["typescript", "tsx", "javascript", "jsx", "javascript-module", "javascript-commonjs"]
|
|
64
|
+
},
|
|
65
|
+
"symbolKind": {
|
|
66
|
+
"enum": ["function", "class", "interface", "type", "enum", "variable"]
|
|
67
|
+
},
|
|
68
|
+
"policy": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"additionalProperties": false,
|
|
71
|
+
"required": ["start_line", "end_line", "context_lines", "max_file_bytes", "max_snippet_lines"],
|
|
72
|
+
"properties": {
|
|
73
|
+
"start_line": { "type": "integer", "minimum": 1 },
|
|
74
|
+
"end_line": { "type": ["integer", "null"], "minimum": 1 },
|
|
75
|
+
"context_lines": { "type": "integer", "minimum": 0 },
|
|
76
|
+
"max_file_bytes": { "type": "integer", "minimum": 1 },
|
|
77
|
+
"max_snippet_lines": { "type": "integer", "minimum": 1 }
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"symbol": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"required": [
|
|
84
|
+
"id",
|
|
85
|
+
"path",
|
|
86
|
+
"language",
|
|
87
|
+
"kind",
|
|
88
|
+
"name",
|
|
89
|
+
"start_line",
|
|
90
|
+
"end_line",
|
|
91
|
+
"signature",
|
|
92
|
+
"exported",
|
|
93
|
+
"async",
|
|
94
|
+
"return_type",
|
|
95
|
+
"return_behavior",
|
|
96
|
+
"return_count",
|
|
97
|
+
"return_lines",
|
|
98
|
+
"return_preview",
|
|
99
|
+
"parent",
|
|
100
|
+
"content_sha256"
|
|
101
|
+
],
|
|
102
|
+
"properties": {
|
|
103
|
+
"id": { "type": "string" },
|
|
104
|
+
"path": { "type": "string" },
|
|
105
|
+
"language": { "$ref": "#/$defs/language" },
|
|
106
|
+
"kind": { "$ref": "#/$defs/symbolKind" },
|
|
107
|
+
"name": { "type": "string" },
|
|
108
|
+
"start_line": { "type": "integer", "minimum": 1 },
|
|
109
|
+
"end_line": { "type": "integer", "minimum": 1 },
|
|
110
|
+
"signature": { "type": "string" },
|
|
111
|
+
"exported": { "type": "boolean" },
|
|
112
|
+
"async": { "type": "boolean" },
|
|
113
|
+
"return_type": { "type": ["string", "null"] },
|
|
114
|
+
"return_behavior": {
|
|
115
|
+
"enum": ["value", "void", "implicit_undefined", "mixed", "throws_only", "unknown"]
|
|
116
|
+
},
|
|
117
|
+
"return_count": { "type": "integer", "minimum": 0 },
|
|
118
|
+
"return_lines": {
|
|
119
|
+
"type": "array",
|
|
120
|
+
"items": { "type": "integer", "minimum": 1 }
|
|
121
|
+
},
|
|
122
|
+
"return_preview": { "type": ["string", "null"] },
|
|
123
|
+
"parent": { "type": ["string", "null"] },
|
|
124
|
+
"content_sha256": { "$ref": "#/$defs/sha256" }
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"target": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"additionalProperties": false,
|
|
130
|
+
"required": [
|
|
131
|
+
"path",
|
|
132
|
+
"language",
|
|
133
|
+
"sha256",
|
|
134
|
+
"size_bytes",
|
|
135
|
+
"line_count",
|
|
136
|
+
"requested_start_line",
|
|
137
|
+
"requested_end_line",
|
|
138
|
+
"resolved_start_line",
|
|
139
|
+
"resolved_end_line",
|
|
140
|
+
"context_start_line",
|
|
141
|
+
"context_end_line",
|
|
142
|
+
"symbol"
|
|
143
|
+
],
|
|
144
|
+
"properties": {
|
|
145
|
+
"path": { "type": "string" },
|
|
146
|
+
"language": { "$ref": "#/$defs/language" },
|
|
147
|
+
"sha256": { "$ref": "#/$defs/sha256" },
|
|
148
|
+
"size_bytes": { "type": "integer", "minimum": 0 },
|
|
149
|
+
"line_count": { "type": "integer", "minimum": 0 },
|
|
150
|
+
"requested_start_line": { "type": "integer", "minimum": 1 },
|
|
151
|
+
"requested_end_line": { "type": ["integer", "null"], "minimum": 1 },
|
|
152
|
+
"resolved_start_line": { "type": ["integer", "null"], "minimum": 1 },
|
|
153
|
+
"resolved_end_line": { "type": ["integer", "null"], "minimum": 1 },
|
|
154
|
+
"context_start_line": { "type": ["integer", "null"], "minimum": 1 },
|
|
155
|
+
"context_end_line": { "type": ["integer", "null"], "minimum": 1 },
|
|
156
|
+
"symbol": {
|
|
157
|
+
"anyOf": [
|
|
158
|
+
{ "$ref": "#/$defs/symbol" },
|
|
159
|
+
{ "type": "null" }
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"snippet": {
|
|
165
|
+
"type": "object",
|
|
166
|
+
"additionalProperties": false,
|
|
167
|
+
"required": ["path", "start_line", "end_line", "text"],
|
|
168
|
+
"properties": {
|
|
169
|
+
"path": { "type": "string" },
|
|
170
|
+
"start_line": { "type": "integer", "minimum": 1 },
|
|
171
|
+
"end_line": { "type": "integer", "minimum": 1 },
|
|
172
|
+
"text": { "type": "string" }
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"finding": {
|
|
176
|
+
"type": "object",
|
|
177
|
+
"additionalProperties": false,
|
|
178
|
+
"required": ["code", "severity", "message", "path", "start_line", "end_line"],
|
|
179
|
+
"properties": {
|
|
180
|
+
"code": {
|
|
181
|
+
"enum": [
|
|
182
|
+
"code_symbol_read_path_outside_root",
|
|
183
|
+
"code_symbol_read_unreadable_path",
|
|
184
|
+
"code_symbol_read_invalid_range",
|
|
185
|
+
"code_symbol_read_no_symbol_at_line",
|
|
186
|
+
"code_symbol_read_snippet_too_large"
|
|
187
|
+
]
|
|
188
|
+
},
|
|
189
|
+
"severity": { "enum": ["low", "medium", "high", "critical"] },
|
|
190
|
+
"message": { "type": "string" },
|
|
191
|
+
"path": { "type": "string" },
|
|
192
|
+
"start_line": { "type": ["integer", "null"], "minimum": 1 },
|
|
193
|
+
"end_line": { "type": ["integer", "null"], "minimum": 1 }
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -505,7 +505,7 @@ translations = {}
|
|
|
505
505
|
[documents."skill.codebase-orientation"]
|
|
506
506
|
source = "locales/en/.mustflow/skills/codebase-orientation/SKILL.md"
|
|
507
507
|
source_locale = "en"
|
|
508
|
-
revision =
|
|
508
|
+
revision = 4
|
|
509
509
|
translations = {}
|
|
510
510
|
|
|
511
511
|
[documents."skill.heuristic-candidate-selection"]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skill.codebase-orientation
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 4
|
|
6
6
|
lifecycle: mustflow-owned
|
|
7
7
|
authority: procedure
|
|
8
8
|
name: codebase-orientation
|
|
@@ -71,9 +71,15 @@ Build a concise, evidence-based map of an unfamiliar repository area before plan
|
|
|
71
71
|
2. Read the nearest repository instructions and matching skill routes before inspecting source files.
|
|
72
72
|
3. Use navigation aids in order:
|
|
73
73
|
- current changed files or user-named paths;
|
|
74
|
+
- read-only script-pack helpers such as `code/outline` and `code/symbol-read` when the
|
|
75
|
+
installed CLI exposes them and repository or host policy allows running the read-only helper;
|
|
74
76
|
- `REPO_MAP.md` only when broader repository navigation is needed;
|
|
75
77
|
- file search for names, exported symbols, command ids, schema ids, route ids, and test names.
|
|
76
78
|
Treat generated maps and docs as pointers, not proof.
|
|
79
|
+
Prefer `code/outline` before reading large TypeScript or JavaScript files in repeated line
|
|
80
|
+
windows, then use `code/symbol-read` to read the selected symbol range or a bounded explicit
|
|
81
|
+
line range. If script-pack execution is not authorized, fall back to ordinary file search and
|
|
82
|
+
targeted reads instead of inventing script output.
|
|
77
83
|
4. Watch for stalled observation.
|
|
78
84
|
- If the same file, path, list, search, or generated-map lookup repeats without new evidence,
|
|
79
85
|
stop that branch and switch to `evidence-stall-breaker`.
|