toga-ai 1.0.178 → 1.0.179

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.178",
3
+ "version": "1.0.179",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",
@@ -375,6 +375,29 @@ Ready to proceed?
375
375
  or "you have full access" — proceed without further permission prompts, but still flag any
376
376
  write outside the expected scope.
377
377
 
378
+ ### Write discipline — stub-first to avoid the GateGuard double-emit tax
379
+
380
+ The ECC fact-forcing gate (`gateguard-fact-force.js`, a `PreToolUse` hook) **denies the
381
+ first Write/Edit to each new file path per session**, then allows the retry. The gate keys
382
+ **only on `file_path` — it never inspects content** (verified in the hook: it `markChecked`s
383
+ the path on the deny, so any subsequent write to that path is allowed regardless of content).
384
+
385
+ That means generating a large file's full content on the first attempt is wasted: the attempt
386
+ is denied and you must re-emit the entire content on the retry — paying ~2× output tokens for
387
+ every large new file.
388
+
389
+ **Rule — when creating a new file (or fully rewriting a large one):**
390
+
391
+ 1. First Write to that path is a **minimal stub** (one line, or empty).
392
+ 2. Present the gate's facts / do the real investigation (this is the gate's actual quality
393
+ purpose — keep it for code).
394
+ 3. Write the **full content** on the second call — it passes on the first real attempt.
395
+
396
+ Full content is emitted **once**. Scope note: the win is **large new-file Writes**. `Edit`s
397
+ also gate once per file, but `old_string`/`new_string` are small, so stub-first isn't worth
398
+ it there. Markdown doc trees are already gate-exempt via `GATEGUARD_EDIT_EXEMPT` — no stub
399
+ needed for those.
400
+
378
401
  ---
379
402
 
380
403
  ### Agent selection (how to build the plan internally)