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 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.56.tgz
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` first, handles only migration-scoped `manual_required` / `blocked` follow-up, then runs diagnostics. |
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; when migration work is pending it refuses to write and tells you to run `upgrade`. |
235
- | Upgrade | `make ty-context-upgrade` or `npx --yes --package project-tiny-context-harness@latest ty-context upgrade` | Default command after updating the npm package. 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. |
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 `ty-context upgrade` as the default command after package updates, forbids standalone `sync` before upgrade, and limits manual handling to the migration scope reported by the CLI instead of guessing project semantics.
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; if it detects `safe_pending`, `manual_required` or `blocked` migration work, it refuses to write and points the user to `upgrade`.
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`. Use `sync` only when release notes say the update is `sync-only`.
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 required. |
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.56.tgz
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 running `upgrade` first, handling only migration-scoped follow-up, and avoiding standalone `sync` before the upgrade path.
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; when migration work is pending it refuses to write and tells you to run `upgrade`. |
342
- | `make ty-context-upgrade` or `npx --yes --package project-tiny-context-harness@latest ty-context upgrade` | Default command after updating the npm package. 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. |
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`. Use `sync` only when release notes say the update is `sync-only`; sync does not run migrations.
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 required. |
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; refuses when upgrade migrations are pending"
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. Do not run standalone `sync` before `upgrade`. `upgrade` is the default path after an npm package update because it plans migrations, applies safe migrations, refreshes managed assets and runs diagnostics.
35
- 6. Do not run standalone `sync` after a successful `upgrade` unless release notes say the update is `sync-only`, the project wrapper did not run sync, or the user explicitly asks for a managed-asset refresh.
36
- 7. If `upgrade --check` or `upgrade` reports only `safe_pending` items and the command succeeds, do not invent additional manual cleanup.
37
- 8. 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.
38
- 9. 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.
39
- 10. Run diagnostics after migration-scoped follow-up:
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
- 11. 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.
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
- 禁止把以下内容当完成:只改代码、只更新计划、只跑部分测试、只生成旧/部分/不被当前契约接受的证据、只完成基础设施但未完成验收证据、API/UI/数据/测试之间仍矛盾。
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.
@@ -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; refuses when upgrade migrations are pending
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, options?: SyncOptions): Promise<SyncReport>;
7
+ export declare function runSync(projectRoot: string): Promise<SyncReport>;
@@ -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, options = {}) {
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 no longer supported. 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(", ")}`);
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) {
@@ -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, { allowPendingMigrations: true });
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}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-tiny-context-harness",
3
- "version": "0.2.56",
3
+ "version": "0.2.57",
4
4
  "description": "Minimal project memory and validation harness for AI coding agents.",
5
5
  "license": "MIT",
6
6
  "author": "Seven128",