project-tiny-context-harness 0.2.56 → 0.2.57
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 +8 -8
- package/assets/README.md +12 -6
- package/assets/make/ty-context.mk +1 -1
- package/assets/skills/context_harness_upgrade/SKILL.md +11 -8
- package/assets/skills/plan_acceptance_checklist_compiler/SKILL.md +28 -4
- package/dist/commands/index.js +1 -1
- package/dist/lib/sync-engine.d.ts +1 -4
- package/dist/lib/sync-engine.js +2 -10
- package/dist/lib/upgrade.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -115,7 +115,7 @@ npm ci
|
|
|
115
115
|
npm run smoke:quickstart
|
|
116
116
|
npm run preview:pack
|
|
117
117
|
cd /path/to/your/test-repo
|
|
118
|
-
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.2.
|
|
118
|
+
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.2.57.tgz
|
|
119
119
|
npx --no-install ty-context init --adopt
|
|
120
120
|
make validate-context
|
|
121
121
|
```
|
|
@@ -228,11 +228,11 @@ Use `npx --no-install ty-context ...` only when you explicitly want the already
|
|
|
228
228
|
| Development engineer Skill | `<harnessRoot>/skills/context_development_engineer/SKILL.md` | Handles explicit development-engineering requests and writes durable engineering conclusions to `project_context/**`. |
|
|
229
229
|
| Product Surface Contract Skill | `<harnessRoot>/skills/context_surface_contract/SKILL.md` | Handles explicit Product Surface Contract, Screen Contract, surface responsibility and main/drilldown ownership work; it compiles project-owned surface contracts into `project_context/**` without adding a new context role or gate. |
|
|
230
230
|
| Full project context export Skill | `<harnessRoot>/skills/context_full_project_export/SKILL.md` | Handles explicit full-project or code-level export requests and uses `export-context --all`, `--full` or `--code` to create temporary artifacts under `tmp/ty-context/context-exports/**`. |
|
|
231
|
-
| Harness upgrade Skill | `<harnessRoot>/skills/context_harness_upgrade/SKILL.md` | Handles explicit Tiny Context / Project Tiny Context Harness upgrade requests such as “upgrade Tiny Context” and “use the Tiny Context upgrade skill to upgrade this project”; it runs `upgrade`
|
|
231
|
+
| Harness upgrade Skill | `<harnessRoot>/skills/context_harness_upgrade/SKILL.md` | Handles explicit Tiny Context / Project Tiny Context Harness upgrade requests such as “upgrade Tiny Context” and “use the Tiny Context upgrade skill to upgrade this project”; it runs the canonical `upgrade` path, handles only migration-scoped `manual_required` / `blocked` follow-up, then runs diagnostics. |
|
|
232
232
|
| Plan acceptance checklist Skill | `<harnessRoot>/skills/plan_acceptance_checklist_compiler/SKILL.md` | Handles explicit requests to turn a referenced plan, RFC or implementation proposal into a falsifiable acceptance checklist and paste-ready goal/target-mode prompt under `tmp/ty-context/plan-acceptance/**`; it does not execute the plan or prove completion. |
|
|
233
233
|
| Project-local Skills | `<harnessRoot>/skills/<role>/SKILL.md` | Optional local product/design/development Skills created by the project, such as `product_plan`, `uiux_design` or `development_engineer`. They supersede package-managed default Skills when more specific, are not overwritten by `sync`, and should keep front matter trigger keywords aligned with the project `AGENTS.md` role-trigger rule. |
|
|
234
|
-
| Managed file sync | `make ty-context-sync` or `npx --yes --package project-tiny-context-harness@latest ty-context sync` | Refreshes package-managed guidance, default Skills, Makefile include, context templates, tools and workflow YAML. It does not run migrations or perform semantic Context generation;
|
|
235
|
-
| Upgrade | `make ty-context-upgrade` or `npx --yes --package project-tiny-context-harness@latest ty-context upgrade` |
|
|
234
|
+
| Managed file sync | `make ty-context-sync` or `npx --yes --package project-tiny-context-harness@latest ty-context sync` | Refreshes package-managed guidance, default Skills, Makefile include, context templates, tools and workflow YAML. It does not run migrations or perform semantic Context generation; it may block only direct asset-refresh safety issues such as invalid managed blocks or deprecated managed Skill overrides. |
|
|
235
|
+
| Upgrade | `make ty-context-upgrade` or `npx --yes --package project-tiny-context-harness@latest ty-context upgrade` | Use for releases marked `upgrade-required` or `manual-required`. Builds an upgrade plan, stops before writes when `blocked` items exist, otherwise applies `safe_pending` migrations, runs `sync` and `doctor`, and exits non-zero when manual follow-up or diagnostics remain. |
|
|
236
236
|
| Upgrade check | `npx --yes --package project-tiny-context-harness@latest ty-context upgrade --check [--json]` | Checks the upgrade plan without writing files. Reports `safe_pending`, `manual_required` and `blocked`; exits non-zero when any work remains. |
|
|
237
237
|
| Combined project export | `npx --yes --package project-tiny-context-harness@latest ty-context export-context --all [--check]` | Creates both default temporary exports under `tmp/ty-context/context-exports/**`. |
|
|
238
238
|
| Project Context export | `npx --yes --package project-tiny-context-harness@latest ty-context export-context --full [--output tmp/ty-context/context-exports/name.md] [--check]` | Creates a temporary Context summary artifact. It is not Context and must not be registered in `project_context/context.toml`. |
|
|
@@ -293,7 +293,7 @@ Omitting `policy` behaves the same as `scoped_waivers` for compatibility with ex
|
|
|
293
293
|
|
|
294
294
|
Multilingual trigger phrases are compatibility details. Public README, npm and launch copy stay English-first, and public/package-managed surfaces must remain English-complete; literal non-English examples are documented only where they explain generated Skill matching and must not be the sole activation path.
|
|
295
295
|
|
|
296
|
-
The Harness upgrade Skill exists so consumer agents have a short, repeatable upgrade procedure for existing projects. It treats `
|
|
296
|
+
The Harness upgrade Skill exists so consumer agents have a short, repeatable upgrade procedure for existing projects. It treats `upgrade` as the default after package updates and for explicit upgrade requests; `sync-only` only allows a direct managed-asset refresh shortcut when that is what the user asked for. Manual handling stays limited to the migration scope reported by the CLI instead of guessing project semantics.
|
|
297
297
|
|
|
298
298
|
For complex task-contract work, agents may use `plan.md` or an equivalent temporary plan surface as scratch space for `Context Delta`, `Task Contract`, implementation steps and Conformance notes. It is execution cache only: durable facts must be extracted into `project_context/**` or `DESIGN.md`, and temporary plans are not Context, not registered in `context.toml` and not default project assets.
|
|
299
299
|
|
|
@@ -432,9 +432,9 @@ Do not customize the package-managed Surface Contract, Harness upgrade or plan a
|
|
|
432
432
|
|
|
433
433
|
## Sync And Upgrade Boundary
|
|
434
434
|
|
|
435
|
-
`sync` is intentionally narrow. It refreshes managed files and never generates project semantics. `sync` does not run migrations;
|
|
435
|
+
`sync` is intentionally narrow. It refreshes managed files and never generates project semantics. `sync` does not run migrations or call the full migration registry; it may refuse writes only for direct asset-refresh safety blockers such as unsupported schema, invalid managed blocks or deprecated managed Skill overrides.
|
|
436
436
|
|
|
437
|
-
After updating the package, run `ty-context upgrade`.
|
|
437
|
+
After updating the package, run `ty-context upgrade`. It is the default update entry because it checks local migration state, applies safe migrations when needed, refreshes managed assets and runs diagnostics. For releases marked `sync-only`, direct `sync` is an allowed shortcut only when you explicitly want managed-asset refresh without the upgrade diagnostics.
|
|
438
438
|
|
|
439
439
|
`upgrade` first builds an upgrade plan. If `blocked` items exist, it prints the plan, runs diagnostics and exits non-zero before migrations or internal `sync`. Without blockers, it applies only `safe_pending` migrations, then runs `sync` and `doctor`. If `manual_required` follow-up or diagnostics remain, the command exits non-zero and prints follow-up. `upgrade --check` performs the same planning step without writing files; `upgrade --check --json` is intended for release checks and CI.
|
|
440
440
|
|
|
@@ -442,7 +442,7 @@ Release update modes:
|
|
|
442
442
|
|
|
443
443
|
| Update mode | What to run | Meaning |
|
|
444
444
|
|---|---|---|
|
|
445
|
-
| `sync-only` | `ty-context sync` | The release changes only package-managed assets. No migrations are
|
|
445
|
+
| `sync-only` | Default: `ty-context upgrade`; shortcut: `ty-context sync` | The release changes only package-managed assets. No new migrations are expected. |
|
|
446
446
|
| `upgrade-required` | `ty-context upgrade` | The release includes safe mechanical migrations and managed asset refresh. |
|
|
447
447
|
| `manual-required` | `ty-context upgrade`, then manual follow-up | The release includes items that cannot be mechanically changed without user intent. |
|
|
448
448
|
|
package/assets/README.md
CHANGED
|
@@ -94,7 +94,7 @@ That smoke packs the local workspace, installs it into a disposable repo, runs `
|
|
|
94
94
|
```sh
|
|
95
95
|
npm run preview:pack
|
|
96
96
|
cd /path/to/your/test-repo
|
|
97
|
-
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.2.
|
|
97
|
+
npm install -D /path/to/project-tiny-context-harness/tmp/ty-context/source-preview/package/project-tiny-context-harness-0.2.57.tgz
|
|
98
98
|
npx --no-install ty-context init --adopt
|
|
99
99
|
make validate-context
|
|
100
100
|
```
|
|
@@ -266,7 +266,7 @@ No. It checks that recovery facts exist and avoids fake test-result claims. Prod
|
|
|
266
266
|
|
|
267
267
|
It should stay smaller than a full process. Ordinary bug fixes and local refactors do not update Context unless they produce durable product, architecture, API, state or validation facts.
|
|
268
268
|
|
|
269
|
-
The default Skills are Minimal Context helpers for explicit product-planning, UI/UX-design, development-engineering, Product Surface Contract, full-project-export, Tiny Context upgrade and plan-acceptance-checklist requests. Product, screen-flow, surface responsibility and durable engineering conclusions go to `project_context/**`; visual identity and design tokens go to root `DESIGN.md`. Export artifacts are temporary files under `tmp/ty-context/context-exports/**`, not Context. Plan acceptance artifacts are temporary files under `tmp/ty-context/plan-acceptance/**`; they define completion criteria for a referenced plan but do not execute it or prove acceptance. The Harness upgrade Skill handles requests such as “upgrade Tiny Context” and “use the Tiny Context upgrade skill to upgrade this project” by
|
|
269
|
+
The default Skills are Minimal Context helpers for explicit product-planning, UI/UX-design, development-engineering, Product Surface Contract, full-project-export, Tiny Context upgrade and plan-acceptance-checklist requests. Product, screen-flow, surface responsibility and durable engineering conclusions go to `project_context/**`; visual identity and design tokens go to root `DESIGN.md`. Export artifacts are temporary files under `tmp/ty-context/context-exports/**`, not Context. Plan acceptance artifacts are temporary files under `tmp/ty-context/plan-acceptance/**`; they define completion criteria for a referenced plan but do not execute it or prove acceptance. The Harness upgrade Skill handles requests such as “upgrade Tiny Context” and “use the Tiny Context upgrade skill to upgrade this project” by following the release update mode, using `upgrade` for migration-bearing releases, and limiting manual cleanup to migration-scoped follow-up.
|
|
270
270
|
|
|
271
271
|
Multilingual trigger phrases are compatibility details. Public README, npm and launch copy stay English-first, and public/package-managed surfaces must remain English-complete; literal non-English examples are documented only where they explain generated Skill matching and must not be the sole activation path.
|
|
272
272
|
|
|
@@ -338,8 +338,8 @@ Use `npx --no-install ty-context ...` only when you explicitly want the already
|
|
|
338
338
|
| Command | Purpose |
|
|
339
339
|
|---|---|
|
|
340
340
|
| `npx --yes --package project-tiny-context-harness@latest ty-context init` | Non-destructively installs Minimal Context Harness into the current project. |
|
|
341
|
-
| `make ty-context-sync` or `npx --yes --package project-tiny-context-harness@latest ty-context sync` | Refreshes managed guidance, default Skills, Makefile include, tools and templates. It does not run migrations or generate project semantics;
|
|
342
|
-
| `make ty-context-upgrade` or `npx --yes --package project-tiny-context-harness@latest ty-context upgrade` |
|
|
341
|
+
| `make ty-context-sync` or `npx --yes --package project-tiny-context-harness@latest ty-context sync` | Refreshes managed guidance, default Skills, Makefile include, tools and templates. It does not run migrations or generate project semantics; it may block only direct asset-refresh safety issues such as invalid managed blocks or deprecated managed Skill overrides. |
|
|
342
|
+
| `make ty-context-upgrade` or `npx --yes --package project-tiny-context-harness@latest ty-context upgrade` | Use for releases marked `upgrade-required` or `manual-required`. Builds an upgrade plan, stops before writes when `blocked` items exist, otherwise applies `safe_pending` migrations, runs `sync` and `doctor`, and exits non-zero when manual follow-up or diagnostics remain. |
|
|
343
343
|
| `npx --yes --package project-tiny-context-harness@latest ty-context upgrade --check [--json]` | Checks the upgrade plan without writing files. Reports `safe_pending`, `manual_required` and `blocked`; exits non-zero when any work remains. |
|
|
344
344
|
| `npx --yes --package project-tiny-context-harness@latest ty-context export-context --all [--check]` | Creates both default temporary exports under `tmp/ty-context/context-exports/**`. |
|
|
345
345
|
| `npx --yes --package project-tiny-context-harness@latest ty-context export-context --full [--output tmp/ty-context/context-exports/name.md] [--check]` | Creates a temporary project Context summary Markdown artifact. |
|
|
@@ -354,7 +354,7 @@ Use `npx --no-install ty-context ...` only when you explicitly want the already
|
|
|
354
354
|
|
|
355
355
|
## Updating Existing Projects
|
|
356
356
|
|
|
357
|
-
After updating the package, run `ty-context upgrade`.
|
|
357
|
+
After updating the package, run `ty-context upgrade`. It is the default update entry because it checks local migration state, applies safe migrations when needed, refreshes managed assets and runs diagnostics. For releases marked `sync-only`, direct `sync` is an allowed shortcut only when you explicitly want managed-asset refresh without the upgrade diagnostics.
|
|
358
358
|
|
|
359
359
|
```sh
|
|
360
360
|
npm install -D project-tiny-context-harness@latest
|
|
@@ -362,11 +362,17 @@ npx --yes --package project-tiny-context-harness@latest ty-context upgrade --che
|
|
|
362
362
|
npx --yes --package project-tiny-context-harness@latest ty-context upgrade
|
|
363
363
|
```
|
|
364
364
|
|
|
365
|
+
For `sync-only` releases where you explicitly want only managed-asset refresh, this shortcut is allowed:
|
|
366
|
+
|
|
367
|
+
```sh
|
|
368
|
+
npx --yes --package project-tiny-context-harness@latest ty-context sync
|
|
369
|
+
```
|
|
370
|
+
|
|
365
371
|
Release notes and release readiness use this update mode vocabulary:
|
|
366
372
|
|
|
367
373
|
| Update mode | What to run | Meaning |
|
|
368
374
|
|---|---|---|
|
|
369
|
-
| `sync-only` | `ty-context sync` | The release changes only package-managed assets. No migrations are
|
|
375
|
+
| `sync-only` | Default: `ty-context upgrade`; shortcut: `ty-context sync` | The release changes only package-managed assets. No new migrations are expected. |
|
|
370
376
|
| `upgrade-required` | `ty-context upgrade` | The release includes safe mechanical migrations and managed asset refresh. |
|
|
371
377
|
| `manual-required` | `ty-context upgrade`, then manual follow-up | The release includes items that cannot be mechanically changed without user intent. |
|
|
372
378
|
|
|
@@ -7,7 +7,7 @@ TY_CONTEXT_MODULARITY_SCOPE = $(if $(TY_CONTEXT_MODULARITY_BASE),--base $(TY_CON
|
|
|
7
7
|
help:
|
|
8
8
|
@echo "Minimal Context Harness commands"
|
|
9
9
|
@echo " make ty-context-doctor Diagnose Harness root, core package and schema version"
|
|
10
|
-
@echo " make ty-context-sync Refresh managed assets;
|
|
10
|
+
@echo " make ty-context-sync Refresh managed assets; does not run migrations"
|
|
11
11
|
@echo " make ty-context-upgrade Run safe upgrade migrations, sync managed assets and doctor"
|
|
12
12
|
@echo " make ty-context-check-modularity Warn on oversized touched handwritten source files"
|
|
13
13
|
@echo " make validate-context Check whether project_context/** supports context recovery"
|
|
@@ -13,7 +13,7 @@ This Skill handles Harness package upgrade and migration orchestration only. It
|
|
|
13
13
|
|
|
14
14
|
## Purpose
|
|
15
15
|
|
|
16
|
-
When the user asks to upgrade Tiny Context / Project Tiny Context Harness in an existing project, run the canonical upgrade path, handle only migration-scoped follow-up, and leave durable project semantics to the project Context and user-owned code.
|
|
16
|
+
When the user asks to upgrade Tiny Context / Project Tiny Context Harness in an existing project, run the canonical `upgrade` path, handle only migration-scoped follow-up, and leave durable project semantics to the project Context and user-owned code. A `sync-only` release means no new migration is expected; it does not change the default upgrade entry for explicit upgrade requests.
|
|
17
17
|
|
|
18
18
|
## Workflow
|
|
19
19
|
|
|
@@ -24,22 +24,25 @@ When the user asks to upgrade Tiny Context / Project Tiny Context Harness in an
|
|
|
24
24
|
- `project_context/context.toml`
|
|
25
25
|
2. Inspect the working tree with `git status --short`. Do not revert unrelated user changes.
|
|
26
26
|
3. Prefer project wrappers when present:
|
|
27
|
+
- `make ty-context-sync`
|
|
27
28
|
- `make ty-context-upgrade`
|
|
28
29
|
- `make ty-context-doctor`
|
|
29
30
|
- `make validate-context`
|
|
30
31
|
4. If no wrapper exists, use the package CLI explicitly:
|
|
32
|
+
- `npx --yes --package project-tiny-context-harness@latest ty-context sync`
|
|
31
33
|
- `npx --yes --package project-tiny-context-harness@latest ty-context upgrade --check`
|
|
32
34
|
- `npx --yes --package project-tiny-context-harness@latest ty-context upgrade`
|
|
33
35
|
- `npx --yes --package project-tiny-context-harness@latest ty-context doctor`
|
|
34
|
-
5.
|
|
35
|
-
6. Do not run standalone `sync`
|
|
36
|
-
7.
|
|
37
|
-
8. If
|
|
38
|
-
9. If the report includes `blocked`,
|
|
39
|
-
10.
|
|
36
|
+
5. Run `upgrade --check` when useful, then run `upgrade`. This remains the default after package updates and for explicit upgrade requests because it plans migrations, applies safe migrations, refreshes managed assets and runs diagnostics.
|
|
37
|
+
6. Do not run standalone `sync` before `upgrade` for explicit upgrade requests. A direct `sync` is only a shortcut for releases explicitly marked `sync-only` when the user asks for managed-asset refresh instead of upgrade diagnostics.
|
|
38
|
+
7. Do not run standalone `sync` after a successful `upgrade` unless the project wrapper did not run sync or the user explicitly asks for another managed-asset refresh.
|
|
39
|
+
8. If `upgrade --check` or `upgrade` reports only `safe_pending` items and the command succeeds, do not invent additional manual cleanup.
|
|
40
|
+
9. If the report includes `manual_required` or `blocked`, handle only the listed migration scope. Use `project_context/context.toml`, role placement scan and the existing area graph to decide placement. Do not guess product or business semantics.
|
|
41
|
+
10. If the report includes `blocked`, treat it as a write preflight failure: resolve the blocked migration scope and rerun `upgrade` before expecting safe migrations or managed asset sync to have been applied.
|
|
42
|
+
11. Run diagnostics after migration-scoped follow-up:
|
|
40
43
|
- `make ty-context-doctor` or the CLI `doctor`
|
|
41
44
|
- `make validate-context`
|
|
42
|
-
|
|
45
|
+
12. Report commands run, migration status, diagnostics, files changed and any remaining manual items. Use `Context: no durable project facts changed` unless the upgrade exposed or required a real long-term project fact change.
|
|
43
46
|
|
|
44
47
|
## Manual Handling Rules
|
|
45
48
|
|
|
@@ -213,6 +213,28 @@ Column rules:
|
|
|
213
213
|
|
|
214
214
|
Each item must be evidence-bound and falsifiable. Split combined requirements into separate rows.
|
|
215
215
|
|
|
216
|
+
## Hard Blocker Handling
|
|
217
|
+
|
|
218
|
+
Treat any unresolved required blocker as non-completion. A checklist may describe blocked acceptance work, but blocked work is still not accepted until the required evidence exists.
|
|
219
|
+
|
|
220
|
+
Use `blocked-external` only when the item is required for full completion but depends on unavailable user input, credentials, account/session access, manual approval, external environment state, provider availability, legal/compliance decision, or another dependency the future executor cannot satisfy locally.
|
|
221
|
+
|
|
222
|
+
For every `blocked-external` item, state:
|
|
223
|
+
|
|
224
|
+
- The exact missing evidence.
|
|
225
|
+
- Why the future executor cannot produce it locally.
|
|
226
|
+
- The required user, owner, external system, or approval action.
|
|
227
|
+
- The fallback or degraded path, if the plan or Context allows one.
|
|
228
|
+
- The acceptance impact if the blocker remains unresolved.
|
|
229
|
+
|
|
230
|
+
Do not mark blocked work as `out-of-scope`, `conditional`, or `nice-to-have` merely because it is hard or currently unavailable. Do not treat partial local work, preparation, mocks, old evidence, or an unexercised fallback as completion for a blocked required item.
|
|
231
|
+
|
|
232
|
+
The generated goal/target-mode prompt must tell the future executor:
|
|
233
|
+
|
|
234
|
+
- If any executable `core` item remains, continue working it before asking the user to resolve blockers.
|
|
235
|
+
- If the only remaining incomplete required items are hard blockers that cannot be satisfied locally, pause and wait for the user or external owner instead of marking the goal complete.
|
|
236
|
+
- The handoff must list blocker cause, missing evidence, acceptance impact, and the exact user/external action needed to resume.
|
|
237
|
+
|
|
216
238
|
## Generic Acceptance Dimensions
|
|
217
239
|
|
|
218
240
|
Include only dimensions relevant to the plan. Do not mechanically add irrelevant categories.
|
|
@@ -271,6 +293,7 @@ Use these exact labels:
|
|
|
271
293
|
- `nice-to-have`: useful but not required; use sparingly.
|
|
272
294
|
|
|
273
295
|
Do not mark an item out of scope only because it is difficult.
|
|
296
|
+
Do not mark a `blocked-external` item complete until its required evidence exists.
|
|
274
297
|
|
|
275
298
|
## Conflict Handling
|
|
276
299
|
|
|
@@ -327,6 +350,7 @@ Every generated checklist must pass this self-test:
|
|
|
327
350
|
- [ ] Every evidence item defines invalid evidence.
|
|
328
351
|
- [ ] Code, API, UI, data, runtime, artifacts, and tests are separated when they prove different things.
|
|
329
352
|
- [ ] External blockers are separated from local remaining work.
|
|
353
|
+
- [ ] Hard blockers are treated as non-completion, with required user/external action and pause conditions.
|
|
330
354
|
- [ ] Current implementation was not used to reduce the user's completion definition.
|
|
331
355
|
- [ ] The checklist can be handed to another Codex session without hidden assumptions.
|
|
332
356
|
```
|
|
@@ -367,9 +391,9 @@ AC8 <UI/用户可见/API 投影一致性要求>
|
|
|
367
391
|
AC9 <安全/隐私/脱敏/secret 要求>
|
|
368
392
|
AC10 <测试/构建/集成/smoke/回归要求>
|
|
369
393
|
AC11 <文档/Context 更新要求,仅在计划要求时执行>
|
|
370
|
-
AC12 完成前审计:逐条对照实施计划;每个 core 项必须有当前证据;未跑验证必须明示;有可继续执行的 core
|
|
394
|
+
AC12 完成前审计:逐条对照实施计划;每个 core 项必须有当前证据;未跑验证必须明示;有可继续执行的 core 项不得标记完成;外部/强卡点必须写明原因、缺失证据、验收影响和下一步;若剩余未完成项只有无法本地解决的强卡点,暂停并等待用户/外部 owner,不能标记目标完成。
|
|
371
395
|
|
|
372
|
-
|
|
396
|
+
禁止把以下内容当完成:只改代码、只更新计划、只跑部分测试、只生成旧/部分/不被当前契约接受的证据、只完成基础设施但未完成验收证据、强卡点未解除、API/UI/数据/测试之间仍矛盾。
|
|
373
397
|
```
|
|
374
398
|
|
|
375
399
|
Recommended compact English prompt shape:
|
|
@@ -390,9 +414,9 @@ AC8 <UI / user-visible / API projection consistency>
|
|
|
390
414
|
AC9 <security / privacy / redaction / secret handling>
|
|
391
415
|
AC10 <test / build / integration / smoke / regression requirements>
|
|
392
416
|
AC11 <documentation / Context updates only when required by the plan>
|
|
393
|
-
AC12 Final audit: compare every item against the plan; every core item needs current evidence; missing validation must be stated; any executable core item left open means the task is not complete; external blockers need cause, impact, and next action.
|
|
417
|
+
AC12 Final audit: compare every item against the plan; every core item needs current evidence; missing validation must be stated; any executable core item left open means the task is not complete; external or hard blockers need cause, missing evidence, acceptance impact, and next action; if only locally unsatisfiable hard blockers remain, pause for the user or external owner instead of marking the goal complete.
|
|
394
418
|
|
|
395
|
-
Do not count these as completion: code-only changes, plan-only updates, partial tests, stale or partial evidence, infrastructure without acceptance proof, or contradictions between API/UI/data/tests.
|
|
419
|
+
Do not count these as completion: code-only changes, plan-only updates, partial tests, stale or partial evidence, infrastructure without acceptance proof, unresolved hard blockers, or contradictions between API/UI/data/tests.
|
|
396
420
|
```
|
|
397
421
|
|
|
398
422
|
Before final response, check the prompt length. If it exceeds 4000 characters, compress it and check again.
|
package/dist/commands/index.js
CHANGED
|
@@ -24,7 +24,7 @@ export function help() {
|
|
|
24
24
|
console.log(`ty-context commands:
|
|
25
25
|
init [--adopt] [--harness-folder <path>]
|
|
26
26
|
Initialize/adopt a project; without --harness-folder, choose target agent first
|
|
27
|
-
sync Refresh managed assets;
|
|
27
|
+
sync Refresh managed assets; does not run migrations
|
|
28
28
|
upgrade [--check] [--json]
|
|
29
29
|
Run safe migrations, sync managed assets and doctor
|
|
30
30
|
doctor Diagnose project configuration and drift
|
|
@@ -3,8 +3,5 @@ export interface SyncReport {
|
|
|
3
3
|
skipped: string[];
|
|
4
4
|
blocked: string[];
|
|
5
5
|
}
|
|
6
|
-
export interface SyncOptions {
|
|
7
|
-
allowPendingMigrations?: boolean;
|
|
8
|
-
}
|
|
9
6
|
export declare function emptySyncReport(): SyncReport;
|
|
10
|
-
export declare function runSync(projectRoot: string
|
|
7
|
+
export declare function runSync(projectRoot: string): Promise<SyncReport>;
|
package/dist/lib/sync-engine.js
CHANGED
|
@@ -6,7 +6,6 @@ import { copyTree, listFiles, pathExists, readText, writeTextIfChanged } from ".
|
|
|
6
6
|
import { AGENTS_BLOCK_MARKERS, GITHUB_WORKFLOW_BLOCK_END, GITHUB_WORKFLOW_BLOCK_MARKERS, GITHUB_WORKFLOW_BLOCK_START, MAKEFILE_BLOCK_END, MAKEFILE_BLOCK_MARKERS, MAKEFILE_BLOCK_START, MANAGED_BLOCK_END, MANAGED_BLOCK_START } from "./managed-file.js";
|
|
7
7
|
import { packageAssetPath } from "./paths.js";
|
|
8
8
|
import { assertSupportedSchema } from "./schema-guard.js";
|
|
9
|
-
import { createUpgradePlan, formatUpgradePlan, hasUpgradePlanWork } from "./migrations.js";
|
|
10
9
|
export function emptySyncReport() {
|
|
11
10
|
return {
|
|
12
11
|
changed: [],
|
|
@@ -14,18 +13,11 @@ export function emptySyncReport() {
|
|
|
14
13
|
blocked: []
|
|
15
14
|
};
|
|
16
15
|
}
|
|
17
|
-
export async function runSync(projectRoot
|
|
16
|
+
export async function runSync(projectRoot) {
|
|
18
17
|
await assertSupportedSchema(projectRoot, "sync");
|
|
19
18
|
const root = await harnessRoot(projectRoot);
|
|
20
19
|
const config = await readConfig(projectRoot);
|
|
21
20
|
const report = emptySyncReport();
|
|
22
|
-
if (!options.allowPendingMigrations) {
|
|
23
|
-
const upgradePlan = await createUpgradePlan(projectRoot);
|
|
24
|
-
if (hasUpgradePlanWork(upgradePlan)) {
|
|
25
|
-
report.blocked.push(`upgrade required before sync: ${formatUpgradePlan(upgradePlan).join(" | ")}`);
|
|
26
|
-
return report;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
21
|
await blockDeprecatedSkillOverrides(projectRoot, root, report);
|
|
30
22
|
if (report.blocked.length > 0) {
|
|
31
23
|
return report;
|
|
@@ -275,7 +267,7 @@ async function blockDeprecatedSkillOverrides(projectRoot, root, report) {
|
|
|
275
267
|
if (deprecatedFiles.length === 0) {
|
|
276
268
|
continue;
|
|
277
269
|
}
|
|
278
|
-
report.blocked.push(`${overrideRoot.relative}: Skill overrides are
|
|
270
|
+
report.blocked.push(`${overrideRoot.relative}: deprecated Skill overrides block sync because package-managed default Skills are overwritten during managed asset refresh. Move these rules into a separate project-local Skill such as ${root.replace(/\\/g, "/")}/skills/product_plan/SKILL.md, ${root.replace(/\\/g, "/")}/skills/uiux_design/SKILL.md or ${root.replace(/\\/g, "/")}/skills/development_engineer/SKILL.md. Deprecated files: ${deprecatedFiles.join(", ")}`);
|
|
279
271
|
}
|
|
280
272
|
}
|
|
281
273
|
function skillOverrideRoots(projectRoot, root) {
|
package/dist/lib/upgrade.js
CHANGED
|
@@ -36,7 +36,7 @@ export async function runUpgradeReport(projectRoot) {
|
|
|
36
36
|
blocked: migrationReport.blocked
|
|
37
37
|
}).slice(1));
|
|
38
38
|
}
|
|
39
|
-
const syncReport = await runSync(projectRoot
|
|
39
|
+
const syncReport = await runSync(projectRoot);
|
|
40
40
|
lines.push(`sync changed=${syncReport.changed.length} skipped=${syncReport.skipped.length} blocked=${syncReport.blocked.length}`);
|
|
41
41
|
for (const skipped of syncReport.skipped.filter((line) => line.includes("customized"))) {
|
|
42
42
|
lines.push(`sync skipped: ${skipped}`);
|