wogiflow 2.5.9 → 2.5.10

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.
@@ -411,30 +411,50 @@ After implementing all scenarios, BEFORE quality gates:
411
411
  | Remove deprecated API | "What in this file provides the same FUNCTIONALITY as the deprecated API?" | Wrapper functions, polyfills, compatibility shims, re-implementations |
412
412
  | Fix all raw JSON.parse | "What in this file deserializes JSON?" | Utility functions that call JSON.parse internally, library wrappers |
413
413
 
414
- 3. **Produce a numbered inventory** and display it to the user:
414
+ 3. **Trace data-providing imports one level (MANDATORY)**:
415
+
416
+ The semantic scan in step 2 catches inline instances but gives a free pass to imported values. Imported constants, configurations, and helpers can contain the exact thing you're looking for — hidden behind one level of indirection and a legitimate-sounding name (`DEFAULT_*`, `INITIAL_*`, `FALLBACK_*`, `BASE_*`).
417
+
418
+ **For every import statement in each scoped file**, classify it:
419
+
420
+ | Import Type | Example | Action |
421
+ |-------------|---------|--------|
422
+ | **Data-providing** | `import { RATE_OPTIONS } from './constants'` | MUST read the source file and apply the semantic question to its contents |
423
+ | **Utility/function** | `import { formatDate } from './utils'` | Skip — unless the function wraps or returns the target pattern |
424
+ | **Type/interface** | `import type { Customer } from './types'` | Skip — types don't contain runtime data |
425
+ | **Style/asset** | `import styles from './styles.module.css'` | Skip |
426
+ | **Component** | `import { Button } from './ui'` | Skip — unless it's a wrapper that embeds the target pattern |
427
+
428
+ **How to classify**: If the import provides a value that gets **rendered, displayed, logged, passed to an API, or used as configuration** — it's data-providing. Read its source.
429
+
430
+ **Anti-pattern — naming convention bias**: Constants named `DEFAULT_*`, `INITIAL_*`, `FALLBACK_*`, `CONFIG_*`, `BASE_*` look legitimate but are often hardcoded placeholders. The name is NOT evidence of legitimacy. Only the source is.
431
+
432
+ **Rule**: Any imported value that contributes to **user-visible output** and resolves to a hardcoded literal (not an API call, env var, or database query) is an instance of [X] — regardless of what it's named or which directory it lives in.
433
+
434
+ 4. **Produce a numbered inventory** and display it to the user:
415
435
  ```
416
436
  ━━━ PRE-IMPLEMENTATION INVENTORY ━━━
417
437
  Found N instances of [X] across M files:
418
438
 
419
- 1. [file:lines] — [description] [TYPE: syntactic|semantic]
420
- 2. [file:lines] — [description] [TYPE: syntactic|semantic]
439
+ 1. [file:lines] — [description] [TYPE: syntactic|semantic|import-traced]
440
+ 2. [file:lines] — [description] [TYPE: syntactic|semantic|import-traced]
421
441
  ...
422
442
 
423
443
  Total: N instances (S syntactic, M semantic)
424
444
  Confirm inventory is complete before proceeding? [Y/adjust]
425
445
  ```
426
446
 
427
- 4. **Wait for user confirmation** that the inventory is complete. If the user identifies missing items, add them. This step is CRITICAL — it commits the AI to a concrete scope that can be verified later.
447
+ 5. **Wait for user confirmation** that the inventory is complete. If the user identifies missing items, add them. This step is CRITICAL — it commits the AI to a concrete scope that can be verified later.
428
448
 
429
449
  #### Phase B: Implementation
430
450
 
431
- 5. Implement the removal/fix/replacement for EVERY item in the inventory. Each inventory item becomes a trackable unit of work.
451
+ 6. Implement the removal/fix/replacement for EVERY item in the inventory. Each inventory item becomes a trackable unit of work.
432
452
 
433
453
  #### Phase C: Post-Implementation Re-Inventory (AFTER all changes)
434
454
 
435
- 6. **Re-run the SAME semantic scan** from Phase A on the SAME set of files. Use the same questions — do NOT downgrade to pattern-only search.
455
+ 7. **Re-run the SAME semantic scan** from Phase A (including import tracing from step 3) on the SAME set of files. Do NOT downgrade to pattern-only search.
436
456
 
437
- 7. **Diff the inventories**:
457
+ 8. **Diff the inventories**:
438
458
  ```
439
459
  ━━━ POST-IMPLEMENTATION VERIFICATION ━━━
440
460
  Re-scanned M files for [X]:
@@ -447,9 +467,9 @@ After implementing all scenarios, BEFORE quality gates:
447
467
  Result: N/N removed (0 remaining)
448
468
  ```
449
469
 
450
- 8. **If ANY items remain** → task is NOT done. Fix the remaining items and re-verify. Do NOT proceed to quality gates with remaining items.
470
+ 9. **If ANY items remain** → task is NOT done. Fix the remaining items and re-verify. Do NOT proceed to quality gates with remaining items.
451
471
 
452
- 9. **If new instances are discovered** during re-scan that weren't in the original inventory → add them, fix them, and note them as "discovered during verification."
472
+ 10. **If new instances are discovered** during re-scan (including via import tracing) that weren't in the original inventory → add them, fix them, and note them as "discovered during verification."
453
473
 
454
474
  **Why this works**: The inventory creates a concrete, numbered checklist BEFORE implementation. The AI cannot claim "done" when the post-inventory shows items still present — the evidence is in the conversation. The pre/post diff is unfakeable.
455
475
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wogiflow",
3
- "version": "2.5.9",
3
+ "version": "2.5.10",
4
4
  "description": "AI-powered development workflow management system with multi-model support",
5
5
  "main": "lib/index.js",
6
6
  "bin": {