tech-lead-skill 5.4.4 → 5.4.5
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 +2 -2
- package/README.zh-CN.md +1 -1
- package/bin/install.js +7 -2
- package/docs/AUDIT_REPORT.md +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -61,7 +61,7 @@ dsh --profile headless --dump-config # verify the tech-lead-tools row is prese
|
|
|
61
61
|
Output families and limits:
|
|
62
62
|
|
|
63
63
|
- The twelve strengthened tools return a `tech-lead.result.v1` envelope (discriminator: `meta.schema`); the original nine tools return their bare domain shapes for backward compatibility.
|
|
64
|
-
- Rendered output is clamped: finding/error arrays are capped at 500 entries with a `FINDINGS_TRUNCATED` warning
|
|
64
|
+
- Rendered output is clamped: finding/error arrays are capped at 500 entries with a `FINDINGS_TRUNCATED` warning; caller-echo arrays (evidence/targets/expectedDiff/verification/items) collapse into `{truncated,total}` beyond 100 entries; any OTHER array inside `data` (including computed results such as `criticalPath`) is head-sliced at 1000 entries while keeping its shape; subtrees deeper than 64 levels collapse into a `DEPTH_LIMIT` marker; payloads above 256 KB switch to compact serialization. Legacy bare top-level arrays slice silently at 500 (no warning field exists on that shape).
|
|
65
65
|
|
|
66
66
|
See [`docs/superpowers/specs/2026-08-25-dsh-tech-lead-system.md`](https://github.com/240xu/tech-lead-skill/blob/main/docs/superpowers/specs/2026-08-25-dsh-tech-lead-system.md) for the architecture and permission matrix.
|
|
67
67
|
|
|
@@ -131,6 +131,6 @@ The executable skill body (`SKILL.md`) is authored in Simplified Chinese; coding
|
|
|
131
131
|
|
|
132
132
|
## Version
|
|
133
133
|
|
|
134
|
-
Current version: `v5.4.
|
|
134
|
+
Current version: `v5.4.5`.
|
|
135
135
|
|
|
136
136
|
See [`docs/TECHNICAL_GUIDE.md`](docs/TECHNICAL_GUIDE.md) for the full operating model and [`docs/AUDIT_REPORT.md`](docs/AUDIT_REPORT.md) for the publication audit.
|
package/README.zh-CN.md
CHANGED
package/bin/install.js
CHANGED
|
@@ -87,7 +87,7 @@ function readMarker(target) {
|
|
|
87
87
|
// A manifest entry may only address paths INSIDE target: blocks traversal via
|
|
88
88
|
// tampered marker.files ("../x", absolute paths resolve under target anyway).
|
|
89
89
|
function containedRel(target, rel) {
|
|
90
|
-
if (typeof rel !== 'string' || !rel || rel.includes('
|
|
90
|
+
if (typeof rel !== 'string' || !rel || rel.includes('\0')) return null;
|
|
91
91
|
const abs = path.resolve(target, rel);
|
|
92
92
|
const base = path.resolve(target);
|
|
93
93
|
const relCheck = path.relative(base, abs);
|
|
@@ -196,21 +196,26 @@ if (args.includes('--check')) {
|
|
|
196
196
|
}
|
|
197
197
|
const missing = [];
|
|
198
198
|
const drifted = [];
|
|
199
|
+
const orphaned = [];
|
|
199
200
|
for (const raw of marker.files) {
|
|
200
201
|
const rel = containedRel(target, raw);
|
|
201
202
|
if (!rel) { console.warn('skipped unsafe manifest entry: ' + JSON.stringify(raw)); continue; }
|
|
202
203
|
const abs = path.join(target, rel);
|
|
203
204
|
const src = path.join(srcSkill, rel);
|
|
204
205
|
if (!fs.existsSync(abs)) { missing.push(rel); continue; }
|
|
205
|
-
if (fs.existsSync(src)
|
|
206
|
+
if (!fs.existsSync(src)) { orphaned.push(rel); continue; }
|
|
207
|
+
if (sha256File(abs) !== sha256File(src)) drifted.push(rel);
|
|
206
208
|
}
|
|
207
209
|
if (missing.length) hasError = true;
|
|
208
210
|
if (drifted.length) hasError = true;
|
|
211
|
+
if (orphaned.length) hasError = true;
|
|
209
212
|
|
|
210
213
|
const managedSet = new Set(marker.files);
|
|
211
214
|
const unmanaged = walkFiles(target).filter((rel) => !managedSet.has(rel) && !isBackup(rel) && rel !== markerName);
|
|
212
215
|
if (missing.length) console.log('MISSING managed files:');
|
|
213
216
|
for (const rel of missing) console.log(' missing: ' + rel);
|
|
217
|
+
if (orphaned.length) console.log('ORPHANED managed files absent from current package:');
|
|
218
|
+
for (const rel of orphaned) console.log(' orphan : ' + rel);
|
|
214
219
|
if (drifted.length) console.log('MODIFIED since install:');
|
|
215
220
|
for (const rel of drifted) console.log(' drift : ' + rel);
|
|
216
221
|
if (unmanaged.length) {
|
package/docs/AUDIT_REPORT.md
CHANGED
|
@@ -35,7 +35,7 @@ The source set was scanned for local absolute paths, passwords, API-key prefixes
|
|
|
35
35
|
### Structural scan
|
|
36
36
|
|
|
37
37
|
- YAML frontmatter has `name: tech-lead` and a trigger description.
|
|
38
|
-
- The skill version is `v5.4.
|
|
38
|
+
- The skill version is `v5.4.5`.
|
|
39
39
|
- The eight templates referenced by the skill exist.
|
|
40
40
|
- The installer validates options, requires a marker before removing any target, and records the managed package/version after installation.
|
|
41
41
|
- The release-check template covers allowlist inventory, sensitive-content scanning, reference checks, scope checks, publication results, and remote verification.
|
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: tech-lead
|
|
|
3
3
|
description: 用于软件、基础设施、研究和运维中的多步、跨边界或有状态工程交付:项目规划、架构选择、跨模块实现、部署、迁移、发布、恢复、重构、长期运行与跨会话续跑。涉及不可逆/生产变更、回滚验证、真实环境对账、发布安全或项目级交付治理时优先加载,即使用户没有说“项目”或“Tech Lead”。不要仅因一次性小修复、单文件编辑、普通解释、单次测试或只读代码审查而自动加载,除非用户明确要求项目级计划或本规范。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Tech Lead · 自主演进规划与交付规范 v5.4.
|
|
6
|
+
# Tech Lead · 自主演进规划与交付规范 v5.4.5
|
|
7
7
|
|
|
8
8
|
> 双层架构声明:本文件是**判断层**(自由裁量域)。其中可机械判定的不变量(Gate 前置校验、
|
|
9
9
|
> 证据锚点存在性、分级判定器、状态机转换有效性)为未来 **MCP 工具化候选**——
|