claudeos-core 2.3.1 → 2.3.2

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.de.md CHANGED
@@ -83,7 +83,7 @@ Die sprachübergreifende Garantie wird durch Test-Fixtures in allen 10 Sprachen
83
83
 
84
84
  Liest jede in Backticks eingefasste Pfadreferenz (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) aus allen generierten `.md`-Dateien und verifiziert sie gegen das tatsächliche Dateisystem. Fängt zwei Klassen von LLM-Fehlern ab, die bisher kein Tool erkannt hat:
85
85
 
86
- - **`STALE_PATH`** — wenn Pass 3 oder Pass 4 einen plausiblen, aber nicht existierenden Pfad erfindet. Typische Fälle: Ableitung von `featureRoutePath.ts` aus einer TypeScript-Konstante namens `FEATURE_ROUTE_PATH`, obwohl die tatsächliche Datei `routePath.ts` heißt; Annahme von `src/main.tsx` nach Vite-Konvention in einem Multi-Entry-Projekt; Annahme von `src/__mocks__/handlers.ts` aus der MSW-Dokumentation, obwohl das Projekt keine Tests hat.
86
+ - **`STALE_PATH`** — wenn Pass 3 oder Pass 4 einen plausiblen, aber nicht existierenden Pfad erfindet. Drei kanonische Klassen: (1) **Bezeichner-zu-Dateiname-Renormalisierung** Ableiten eines Dateinamens aus einer TypeScript-Konstante in ALL_CAPS oder einer Java-Annotation, obwohl die tatsächliche Datei einer anderen Namenskonvention folgt; (2) **Framework-konventionelle Entry-Point-Erfindung** — Annahme einer Standard-Einstiegsdatei (Vites main-Modul, Next.js app-router providers usw.) in einem Projekt, das ein anderes Layout gewählt hat; (3) **Erfindung eines plausibel benannten Utility** — Zitieren eines konkreten Dateinamens für einen Helper, der „natürlich" unter einem sichtbaren Verzeichnis existieren würde.
87
87
  - **`MANIFEST_DRIFT`** — wenn `claudeos-core/skills/00.shared/MANIFEST.md` einen Skill registriert, den `CLAUDE.md §6` nicht erwähnt (oder umgekehrt). Erkennt das häufige Orchestrator-plus-Sub-Skills-Layout, bei dem `CLAUDE.md §6` ein Einstiegspunkt und `MANIFEST.md` das vollständige Register ist — Sub-Skills werden als über ihren übergeordneten Orchestrator abgedeckt betrachtet.
88
88
 
89
89
  Der Validator ist gepaart mit Prompt-Time-Prävention in `pass3-footer.md` und `pass4.md`: Anti-Pattern-Blöcke dokumentieren die spezifischen Halluzinationsklassen (Parent-Directory-Präfix, Vite/MSW/Vitest/Jest/RTL-Bibliothekskonventionen), und explizite positive Guidance weist an, Regeln nach Verzeichnis zu scopen, wenn ein konkreter Dateiname nicht in `pass3a-facts.md` steht.
package/README.es.md CHANGED
@@ -83,7 +83,7 @@ La garantía cross-idioma se verifica mediante fixtures de prueba en los 10 idio
83
83
 
84
84
  Lee toda referencia de ruta entre backticks (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) de todos los archivos `.md` generados y las verifica contra el sistema de archivos real. Captura dos clases de fallo de LLM que ninguna herramienta detectaba antes:
85
85
 
86
- - **`STALE_PATH`** — cuando Pass 3 o Pass 4 inventa una ruta plausible pero inexistente. Casos típicos: inferir `featureRoutePath.ts` de una constante TypeScript llamada `FEATURE_ROUTE_PATH` cuando el archivo real es `routePath.ts`; asumir `src/main.tsx` por convención de Vite en un proyecto multi-entry; asumir `src/__mocks__/handlers.ts` por la documentación de MSW aunque el proyecto no tenga tests.
86
+ - **`STALE_PATH`** — cuando Pass 3 o Pass 4 inventa una ruta plausible pero inexistente. Tres clases canónicas: (1) **renormalización de identificador a nombre de archivo** — inferir un nombre de archivo a partir de una constante TypeScript en ALL_CAPS o una anotación Java cuando el archivo real sigue una convención de nombre diferente; (2) **invención de punto de entrada por convención de framework** — asumir un archivo de entrada estándar (el módulo main de Vite, los providers del app-router de Next.js, etc.) en un proyecto que eligió una disposición distinta; (3) **invención de utilidad con nombre plausible** — citar un nombre de archivo concreto para un helper que "existiría naturalmente" bajo un directorio visible.
87
87
  - **`MANIFEST_DRIFT`** — cuando `claudeos-core/skills/00.shared/MANIFEST.md` registra un skill que `CLAUDE.md §6` no menciona (o viceversa). Reconoce el layout común orchestrator + sub-skills donde `CLAUDE.md §6` es un punto de entrada y `MANIFEST.md` es el registro completo — los sub-skills se consideran cubiertos vía su orchestrator padre.
88
88
 
89
89
  El validador se empareja con prevención en tiempo de prompt en `pass3-footer.md` y `pass4.md`: bloques de anti-patrón que documentan las clases específicas de alucinación (prefijo de directorio padre, convenciones de bibliotecas Vite/MSW/Vitest/Jest/RTL) y guía positiva explícita para definir el alcance de las reglas por directorio cuando un nombre de archivo concreto no está en `pass3a-facts.md`.
package/README.fr.md CHANGED
@@ -83,7 +83,7 @@ La garantie cross-langue est vérifiée par des fixtures de test dans les 10 lan
83
83
 
84
84
  Lit chaque référence de chemin entre backticks (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) dans tous les fichiers `.md` générés et les vérifie contre le vrai système de fichiers. Attrape deux classes d'échecs LLM que aucun outil ne détectait auparavant :
85
85
 
86
- - **`STALE_PATH`** — quand Pass 3 ou Pass 4 fabrique un chemin plausible mais inexistant. Cas typiques : déduire `featureRoutePath.ts` d'une constante TypeScript nommée `FEATURE_ROUTE_PATH` alors que le fichier réel est `routePath.ts` ; supposer `src/main.tsx` par convention Vite dans un projet multi-entry ; supposer `src/__mocks__/handlers.ts` d'après la documentation MSW même quand le projet n'a aucun test.
86
+ - **`STALE_PATH`** — quand Pass 3 ou Pass 4 fabrique un chemin plausible mais inexistant. Trois classes canoniques : (1) **renormalisation identifiant → nom de fichier** — déduire un nom de fichier à partir d'une constante TypeScript en ALL_CAPS ou d'une annotation Java alors que le fichier réel suit une convention de nommage différente ; (2) **invention d'un point d'entrée par convention de framework** — supposer un fichier d'entrée standard (le module main de Vite, les providers d'app-router de Next.js, etc.) dans un projet ayant choisi une autre disposition ; (3) **invention d'un utilitaire au nom plausible** citer un nom de fichier concret pour un helper qui « existerait naturellement » sous un répertoire visible.
87
87
  - **`MANIFEST_DRIFT`** — quand `claudeos-core/skills/00.shared/MANIFEST.md` enregistre un skill que `CLAUDE.md §6` ne mentionne pas (ou inversement). Reconnaît le layout courant orchestrator + sub-skills où `CLAUDE.md §6` est un point d'entrée et `MANIFEST.md` est le registre complet — les sub-skills sont considérés couverts via leur orchestrator parent.
88
88
 
89
89
  Le validateur est couplé à une prévention au moment du prompt dans `pass3-footer.md` et `pass4.md` : des blocs anti-pattern documentant les classes spécifiques d'hallucination (préfixe de répertoire parent, conventions de bibliothèques Vite/MSW/Vitest/Jest/RTL) et une guidance positive explicite pour scope les règles par répertoire quand un nom de fichier concret n'est pas dans `pass3a-facts.md`.
package/README.hi.md CHANGED
@@ -83,7 +83,7 @@ Cross-language गारंटी को सभी 10 भाषाओं मे
83
83
 
84
84
  सभी जेनरेट की गई `.md` फ़ाइलों से हर backticked path reference (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) पढ़ता है और उन्हें वास्तविक file system के खिलाफ सत्यापित करता है। दो क्लास की LLM failures पकड़ता है जो पहले कोई tool detect नहीं करता था:
85
85
 
86
- - **`STALE_PATH`** — जब Pass 3 या Pass 4 एक plausible-but-nonexistent path गढ़ देता है। विशिष्ट मामले: `FEATURE_ROUTE_PATH` नामक TypeScript constant से `featureRoutePath.ts` infer करना जब वास्तविक फ़ाइल `routePath.ts` है; multi-entry प्रोजेक्ट में Vite convention से `src/main.tsx` मान लेना; प्रोजेक्ट में कोई test नहीं होने के बावजूद MSW documentation से `src/__mocks__/handlers.ts` मान लेना।
86
+ - **`STALE_PATH`** — जब Pass 3 या Pass 4 एक plausible-but-nonexistent path गढ़ देता है। तीन प्रमुख वर्ग: (1) **पहचानकर्ता से फ़ाइलनाम पुनर्सामान्यीकरण** — ALL_CAPS TypeScript constant या Java annotation से फ़ाइलनाम infer करना जबकि वास्तविक फ़ाइल एक अलग नामकरण परंपरा का पालन करती है; (2) **फ़्रेमवर्क-परंपरागत प्रवेश बिंदु कल्पना** — एक अलग लेआउट चुनने वाले प्रोजेक्ट में मानक प्रवेश फ़ाइल (Vite का main मॉड्यूल, Next.js app-router providers, आदि) की मौजूदगी मान लेना; (3) **सुनने में सही लगने वाली उपयोगिता कल्पना** — दिखाई देने वाली directory के अंतर्गत "स्वाभाविक रूप से मौजूद होने वाले" helper के लिए एक विशिष्ट फ़ाइलनाम का उल्लेख करना।
87
87
  - **`MANIFEST_DRIFT`** — जब `claudeos-core/skills/00.shared/MANIFEST.md` एक skill रजिस्टर करता है जिसका `CLAUDE.md §6` में उल्लेख नहीं है (या इसके विपरीत)। सामान्य orchestrator + sub-skills layout को पहचानता है, जहाँ `CLAUDE.md §6` एक entry point है और `MANIFEST.md` पूर्ण registry है — sub-skills को उनके parent orchestrator के माध्यम से cover माना जाता है।
88
88
 
89
89
  Validator को `pass3-footer.md` और `pass4.md` में prompt-time prevention के साथ जोड़ा गया है: विशिष्ट hallucination classes (parent-directory prefix, Vite/MSW/Vitest/Jest/RTL library conventions) को document करने वाले anti-pattern blocks, और स्पष्ट positive guidance कि जब `pass3a-facts.md` में एक concrete filename नहीं है, तो rule को directory-scope से scope करें।
package/README.ja.md CHANGED
@@ -83,7 +83,7 @@ ClaudeOS-Core は、プロジェクトが `ApiResponse.ok()`(`ResponseEntity.s
83
83
 
84
84
  生成されたすべての `.md` ファイルからバッククォート付きのパス参照 (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) を読み取り、実際のファイルシステムと照合します。これまでどのツールも検出できなかった 2 つの LLM 失敗クラスを捕捉します:
85
85
 
86
- - **`STALE_PATH`** — Pass 3 または Pass 4 がもっともらしいが実在しないパスを捏造した場合。典型例: 実際のファイルが `routePath.ts` なのに TypeScript 定数 `FEATURE_ROUTE_PATH` から `featureRoutePath.ts` を推論; multi-entry プロジェクトで Vite 慣習から `src/main.tsx` を仮定; プロジェクトにテストがないのに MSW ドキュメントから `src/__mocks__/handlers.ts` を仮定。
86
+ - **`STALE_PATH`** — Pass 3 または Pass 4 がもっともらしいが実在しないパスを捏造した場合。3つの代表的クラス: (1) **識別子 ファイル名の再正規化** — ALL_CAPS の TypeScript 定数や Java アノテーションから、実際のファイル名とは異なる命名規則のファイル名を推論; (2) **フレームワーク慣習の起点ファイル捏造** 別のレイアウトを採用したプロジェクトに、フレームワーク標準の起点ファイル(Vite main モジュール、Next.js app-router providers など)があると仮定; (3) **もっともらしいユーティリティ捏造** — 可視ディレクトリ配下に「自然に存在しそうな」ヘルパーの具体ファイル名を引用。
87
87
  - **`MANIFEST_DRIFT`** — `claudeos-core/skills/00.shared/MANIFEST.md` に登録された skill が `CLAUDE.md §6` に言及されていない (または逆)。`CLAUDE.md §6` がエントリーポイントで `MANIFEST.md` が完全なレジストリとなる orchestrator + sub-skill レイアウトを認識し、sub-skill は親 orchestrator を介して間接的にカバーされると判定します。
88
88
 
89
89
  validator は `pass3-footer.md` と `pass4.md` の prompt-time prevention とペアになります: 特定の幻覚クラス (親ディレクトリ接頭辞、Vite/MSW/Vitest/Jest/RTL ライブラリ慣習) を文書化した anti-pattern ブロックと、`pass3a-facts.md` に具体的なファイル名がない場合はルールをディレクトリ単位でスコープするという明示的な positive guidance。
package/README.ko.md CHANGED
@@ -83,7 +83,7 @@ ClaudeOS-Core는 프로젝트가 `ApiResponse.ok()`를 쓴다는 것, MyBatis XM
83
83
 
84
84
  생성된 모든 `.md` 파일에서 백틱으로 감싼 경로 참조(`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`)를 읽어 실제 파일 시스템과 대조합니다. 이전에는 어떤 도구도 감지하지 못했던 두 가지 LLM 실패 클래스를 잡아냅니다:
85
85
 
86
- - **`STALE_PATH`** — Pass 3 또는 Pass 4가 그럴듯하지만 존재하지 않는 경로를 만들어낼 때. 전형적 사례: 실제 파일이 `routePath.ts`인데 TypeScript 상수 `FEATURE_ROUTE_PATH`에서 `featureRoutePath.ts`를 추론; multi-entry 프로젝트에서 Vite convention으로 `src/main.tsx` 가정; 프로젝트에 테스트가 없는데도 MSW 문서에서 `src/__mocks__/handlers.ts` 가정.
86
+ - **`STALE_PATH`** — Pass 3 또는 Pass 4가 그럴듯하지만 존재하지 않는 경로를 만들어낼 때. 가지 대표 유형: (1) **식별자 → 파일명 재정규화** — ALL_CAPS TypeScript 상수나 Java 어노테이션에서 실제 파일명과 다른 규칙의 파일명을 추론; (2) **프레임워크 관습 진입점 날조** — 실제로는 다른 레이아웃을 택한 프로젝트에 프레임워크의 표준 진입점 파일(Vite main 모듈, Next.js app-router providers 등)이 존재한다고 가정; (3) **그럴듯한 유틸리티 날조** 보이는 디렉토리 아래에 "자연스럽게 존재할 법한" 헬퍼의 구체적 파일명을 인용.
87
87
  - **`MANIFEST_DRIFT`** — `claudeos-core/skills/00.shared/MANIFEST.md`에 등록된 skill이 `CLAUDE.md §6`에 언급 안 되어 있거나 그 반대 상황. `CLAUDE.md §6`은 진입점이고 `MANIFEST.md`가 전체 레지스트리인 orchestrator + sub-skill 레이아웃을 인식해서, sub-skill은 부모 orchestrator를 통해 간접적으로 커버되는 것으로 판정합니다.
88
88
 
89
89
  validator는 `pass3-footer.md`와 `pass4.md`의 prompt-time prevention과 짝을 이룹니다: 특정 환각 클래스(상위 디렉터리 접두사, Vite/MSW/Vitest/Jest/RTL 라이브러리 관례)를 문서화한 anti-pattern 블록과, `pass3a-facts.md`에 구체적인 파일명이 없을 때 규칙을 디렉터리 단위로 범위 지정하라는 명시적 positive guidance.
package/README.md CHANGED
@@ -83,7 +83,7 @@ The cross-language guarantee is verified by test fixtures in all 10 languages, i
83
83
 
84
84
  Reads every backticked path reference (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) from all generated `.md` files and verifies them against the actual file system. Catches two classes of LLM failure that no tool detected before:
85
85
 
86
- - **`STALE_PATH`** — when Pass 3 or Pass 4 fabricates a plausible-but-nonexistent path. Typical cases: inferring `featureRoutePath.ts` from a TypeScript constant named `FEATURE_ROUTE_PATH` when the actual file is `routePath.ts`; assuming `src/main.tsx` from Vite convention in a multi-entry project; assuming `src/__mocks__/handlers.ts` from MSW documentation even when the project has no tests.
86
+ - **`STALE_PATH`** — when Pass 3 or Pass 4 fabricates a plausible-but-nonexistent path. Three canonical classes: (1) **identifier-to-filename renormalization** — inferring a filename from an ALL_CAPS TypeScript constant or Java annotation when the actual filename lives under a different convention; (2) **framework-convention entry-point invention** — assuming a stock entry-point file (Vite's main module, Next.js app-router providers, etc.) in a project that chose a different layout; (3) **plausibly-named utility invention** citing a concrete filename for a helper that "would naturally" exist under a seen directory.
87
87
  - **`MANIFEST_DRIFT`** — when `claudeos-core/skills/00.shared/MANIFEST.md` registers a skill that `CLAUDE.md §6` doesn't mention (or vice versa). Recognizes the common orchestrator + sub-skills layout where `CLAUDE.md §6` is an entry point and `MANIFEST.md` is the full registry — sub-skills are considered covered via their parent orchestrator.
88
88
 
89
89
  The validator is paired with prompt-time prevention in `pass3-footer.md` and `pass4.md`: anti-pattern blocks documenting the specific hallucination classes (parent-directory prefix, Vite/MSW/Vitest/Jest/RTL library conventions), and explicit positive guidance to scope rules by directory when a concrete filename isn't in `pass3a-facts.md`.
@@ -644,7 +644,7 @@ node claudeos-core-tools/sync-checker/index.js
644
644
  | **manifest-generator** | Builds metadata JSON (`rule-manifest.json`, `sync-map.json`, initializes `stale-report.json`); indexes 7 directories including `memory/` (`totalMemory` in summary). v2.1.0: `plan-manifest.json` is no longer generated since master plans were removed. |
645
645
  | **plan-validator** | Validates master plan `<file>` blocks against disk for projects that still have `claudeos-core/plan/` (legacy upgrade case). v2.1.0: skips `plan-sync-status.json` emission when `plan/` is absent or empty — `stale-report.json` still records a passing no-op. |
646
646
  | **sync-checker** | Detects unregistered files (on disk but not in plan) and orphaned entries — covers 7 directories (added `memory/` in v2.0.0). Exits cleanly when `sync-map.json` has no mappings (v2.1.0 default state). |
647
- | **content-validator** | 10-check quality gate. Checks 1–9 cover empty files, missing ✅/❌ examples, required sections, and L4 memory scaffold integrity (decision-log heading dates, failure-pattern required fields, fence-aware parsing). **Check 10 (v2.3.0)** adds path-claim verification across all generated `.md` files and MANIFEST ↔ CLAUDE.md §6 cross-reference — catches `STALE_PATH` (fabricated paths like `featureRoutePath.ts`, `src/__mocks__/handlers.ts`) and `MANIFEST_DRIFT` (registered skills not mentioned in CLAUDE.md or vice versa), with an orchestrator/sub-skill exception that recognizes the canonical "§6 entry point + MANIFEST registry" split. |
647
+ | **content-validator** | 10-check quality gate. Checks 1–9 cover empty files, missing ✅/❌ examples, required sections, and L4 memory scaffold integrity (decision-log heading dates, failure-pattern required fields, fence-aware parsing). **Check 10 (v2.3.0)** adds path-claim verification across all generated `.md` files and MANIFEST ↔ CLAUDE.md §6 cross-reference — catches `STALE_PATH` (LLM-fabricated paths from identifier-to-filename renormalization, framework-convention entry-point invention, or plausibly-named utility invention) and `MANIFEST_DRIFT` (registered skills not mentioned in CLAUDE.md or vice versa), with an orchestrator/sub-skill exception that recognizes the canonical "§6 entry point + MANIFEST registry" split. |
648
648
  | **claude-md-validator (v2.3.0)** | Structural invariant check on `CLAUDE.md` using only language-invariant signals (markdown syntax, literal file names, section/sub-section/table-row counts). 25 checks, language-agnostic — identical verdicts across all 10 output languages. Invoked via `npx claudeos-core lint`. |
649
649
  | **pass-json-validator** | Validates Pass 1–4 JSON structure plus the `pass3-complete.json` (split-mode shape, v2.1.0) and `pass4-memory.json` completion markers |
650
650
 
package/README.ru.md CHANGED
@@ -83,7 +83,7 @@ ClaudeOS-Core создаёт документацию, которая знает
83
83
 
84
84
  Читает каждую ссылку на путь в обратных кавычках (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) из всех сгенерированных `.md`-файлов и сверяет их с реальной файловой системой. Ловит два класса сбоев LLM, которые раньше не обнаруживал ни один инструмент:
85
85
 
86
- - **`STALE_PATH`** — когда Pass 3 или Pass 4 выдумывает правдоподобный, но несуществующий путь. Типичные случаи: вывод `featureRoutePath.ts` из TypeScript-константы с именем `FEATURE_ROUTE_PATH`, когда реальный файл — `routePath.ts`; предположение `src/main.tsx` по Vite-конвенции в multi-entry проекте; предположение `src/__mocks__/handlers.ts` из документации MSW, даже когда в проекте нет тестов.
86
+ - **`STALE_PATH`** — когда Pass 3 или Pass 4 выдумывает правдоподобный, но несуществующий путь. Три канонических класса: (1) **ренормализация идентификатора в имя файла** — вывод имени файла из TypeScript-константы в ALL_CAPS или Java-аннотации, хотя реальный файл следует другой конвенции именования; (2) **выдумывание точки входа по конвенции фреймворка** — предположение стандартного файла входа (main-модуль Vite, app-router providers Next.js и т.п.) в проекте, выбравшем иную раскладку; (3) **выдумывание правдоподобно названной утилиты** — указание конкретного имени файла для хелпера, который «естественно существовал бы» в видимой директории.
87
87
  - **`MANIFEST_DRIFT`** — когда `claudeos-core/skills/00.shared/MANIFEST.md` регистрирует skill, о котором `CLAUDE.md §6` не упоминает (или наоборот). Распознаёт общую схему orchestrator + sub-skills, где `CLAUDE.md §6` — точка входа, а `MANIFEST.md` — полный реестр; sub-skill'ы считаются покрытыми через их родительский orchestrator.
88
88
 
89
89
  Валидатор парой работает с prompt-time-предотвращением в `pass3-footer.md` и `pass4.md`: блоки anti-pattern, документирующие конкретные классы галлюцинаций (префикс родительского каталога, конвенции библиотек Vite/MSW/Vitest/Jest/RTL), и явное positive guidance — ограничивать правила уровнем каталога, когда конкретного имени файла нет в `pass3a-facts.md`.
package/README.vi.md CHANGED
@@ -83,7 +83,7 @@ Mỗi `CLAUDE.md` được sinh ra đều được kiểm tra đối chiếu v
83
83
 
84
84
  Đọc mọi tham chiếu path được bọc bởi backtick (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) từ tất cả các file `.md` được sinh ra và xác minh chúng với file system thực. Bắt hai lớp thất bại của LLM mà không có công cụ nào phát hiện trước đây:
85
85
 
86
- - **`STALE_PATH`** — khi Pass 3 hoặc Pass 4 bịa ra một đường dẫn nghe có vẻ hợp lý nhưng không tồn tại. Các trường hợp điển hình: suy diễn `featureRoutePath.ts` từ một TypeScript constant tên `FEATURE_ROUTE_PATH` khi file thực tế `routePath.ts`; giả định `src/main.tsx` theo quy ước Vite trong một dự án multi-entry; giả định `src/__mocks__/handlers.ts` theo tài liệu MSW ngay cả khi dự án khôngtest nào.
86
+ - **`STALE_PATH`** — khi Pass 3 hoặc Pass 4 bịa ra một đường dẫn nghe có vẻ hợp lý nhưng không tồn tại. Ba nhóm điển hình: (1) **chuẩn hóa định danh → tên file** — suy ra tên file từ một TypeScript constant ALL_CAPS hoặc Java annotation trong khi file thực tế tuân theo quy ước đặt tên khác; (2) **bịa ra entry-point theo quy ước framework** — giả định một file entry-point chuẩn (module main của Vite, providers app-router của Next.js, v.v.) trong một dự án đã chọn bố cục khác; (3) **bịa ra utility nghe vẻ hợp lý** trích dẫn tên file cụ thể cho một helper "thể tồn tại tự nhiên" dưới một thư mục đã thấy.
87
87
  - **`MANIFEST_DRIFT`** — khi `claudeos-core/skills/00.shared/MANIFEST.md` đăng ký một skill mà `CLAUDE.md §6` không đề cập (hoặc ngược lại). Nhận diện layout orchestrator + sub-skills phổ biến, trong đó `CLAUDE.md §6` là điểm vào và `MANIFEST.md` là registry đầy đủ — các sub-skill được coi là được bao phủ thông qua orchestrator cha của chúng.
88
88
 
89
89
  Validator này được kết hợp với phòng ngừa ở giai đoạn prompt trong `pass3-footer.md` và `pass4.md`: các khối anti-pattern ghi lại các lớp hallucination cụ thể (tiền tố thư mục cha, các quy ước thư viện Vite/MSW/Vitest/Jest/RTL), và positive guidance rõ ràng về việc giới hạn phạm vi các rule theo thư mục khi một tên file cụ thể không có trong `pass3a-facts.md`.
package/README.zh-CN.md CHANGED
@@ -83,7 +83,7 @@ ClaudeOS-Core 生成的文档知道你的项目使用 `ApiResponse.ok()`(而
83
83
 
84
84
  读取所有生成的 `.md` 文件中以反引号括起的路径引用 (`src/...`, `.claude/rules/...`, `claudeos-core/skills/...`) 并对照真实文件系统进行验证。捕捉两类此前没有工具能检测的 LLM 失败:
85
85
 
86
- - **`STALE_PATH`** —— 当 Pass 3 或 Pass 4 捏造出看似合理但不存在的路径时。典型例子: 实际文件是 `routePath.ts`,但因 TypeScript 常量名为 `FEATURE_ROUTE_PATH` 而推断出 `featureRoutePath.ts`; 在多入口项目中从 Vite 约定推断出 `src/main.tsx`; 项目根本没有测试,却从 MSW 文档推断出 `src/__mocks__/handlers.ts`。
86
+ - **`STALE_PATH`** —— 当 Pass 3 或 Pass 4 捏造出看似合理但不存在的路径时。三种典型类别: (1) **标识符 → 文件名重标准化** —— 从 ALL_CAPS TypeScript 常量或 Java 注解推断出一个与实际文件不同命名规则的文件名; (2) **框架约定入口点捏造** —— 在采用不同布局的项目中假定存在框架标准入口文件(Vite main 模块、Next.js app-router providers 等); (3) **听起来合理的工具类捏造** —— 为一个"可能自然存在"于可见目录下的帮助工具引用具体文件名。
87
87
  - **`MANIFEST_DRIFT`** —— 当 `claudeos-core/skills/00.shared/MANIFEST.md` 注册了某个 skill 但 `CLAUDE.md §6` 没有提到 (或反之)。它识别出 orchestrator + sub-skills 布局 (其中 `CLAUDE.md §6` 是入口点,`MANIFEST.md` 是完整注册表),并将 sub-skills 判定为通过其父 orchestrator 间接覆盖。
88
88
 
89
89
  验证器与 `pass3-footer.md` 和 `pass4.md` 中的 prompt 级别预防配对: 记录了具体幻觉类别 (父目录前缀、Vite/MSW/Vitest/Jest/RTL 库约定) 的 anti-pattern 块,以及在 `pass3a-facts.md` 没有具体文件名时把规则限定到目录级别的明确 positive guidance。