@chrono-meta/fh-gate 1.4.30 → 1.4.31
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/CLAUDE.md +25 -6
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -281,13 +281,32 @@ not marketplace-gate alone:
|
|
|
281
281
|
`LICENSE`/`README` contains a **private harness name or internal codename** · **module paths encode
|
|
282
282
|
internal acronyms**.
|
|
283
283
|
|
|
284
|
-
**
|
|
285
|
-
|
|
286
|
-
cannot catch
|
|
287
|
-
checklist** (`templates/PRE-PUBLISH-CHECKLIST.md`)
|
|
284
|
+
**Hook coverage — two distinct actions (refined 2026-06-17)**:
|
|
285
|
+
- **(a) repo-go-public** (`gh repo create --public` / a visibility flip) is irreversible and usually in a
|
|
286
|
+
**separate repo** — the FH pre-commit hook **cannot** catch it. That stays **AI-behavioral** (proactive
|
|
287
|
+
trigger below) **+ a portable checklist** (`templates/PRE-PUBLISH-CHECKLIST.md`), run on any repo/machine.
|
|
288
|
+
- **(b) committing operator-private tokens into public-tracked content of THIS repo IS an effective
|
|
289
|
+
publish of that content** — and that the pre-commit hook **now catches mechanically**: a
|
|
290
|
+
**confidentiality scan** of staged tracked *added* lines against the gitignored
|
|
291
|
+
`.public-surface-patterns` (companion-store names · corp-context framing · home paths · company assets),
|
|
292
|
+
blocking HIGH/MED + non-allowlisted LOW drift; `PUBLIC_SURFACE_OK=1` overrides for a deliberate reviewed
|
|
293
|
+
mention. **Two-layer** (mirrors `/public-surface-audit`): the literal tokens live ONLY in the gitignored
|
|
294
|
+
source — CLAUDE.md and the hook name **only categories**, never the literals (they would leak what they
|
|
295
|
+
guard). This closes the gap where the prose publish-trigger was **missed on a weaker-tier session**
|
|
296
|
+
(PR #109: a companion-store name + corp-context framing reached a public PR; the Sonnet session trusted a
|
|
297
|
+
PR comment over the file content). The scan fires at commit time and is **tier-independent — but only as
|
|
298
|
+
strong as the loaded patterns**: a COMMITTED `.public-surface-patterns.defaults` (universal patterns:
|
|
299
|
+
home paths) keeps it from ever being fully blind, while the company-specific literals require the
|
|
300
|
+
GITIGNORED override to be populated in each authoring env (esp. the company env, where company-origin
|
|
301
|
+
public PRs are written; absent override → only defaults run, with a loud warning). **Honest scope**:
|
|
302
|
+
plaintext only (encoded tokens out of scope); a line-split backstop catches a token wrapped across
|
|
303
|
+
lines; `PUBLIC_SURFACE_OK=1` overrides and is logged to a gitignored audit trail for the weekly audit.
|
|
304
|
+
Residuals (split-encoding, override-not-populated, override abuse) are documented, not silent.
|
|
288
305
|
|
|
289
306
|
> Origin: 2026-06-05 `phantom-gate` shipped public, then needed a private→de-company-scrub→re-public
|
|
290
|
-
> round-trip (`fh_signal_2026-06-05_fh-direct`). PSA existed but nothing forced it pre-publish.
|
|
307
|
+
> round-trip (`fh_signal_2026-06-05_fh-direct`). PSA existed but nothing forced it pre-publish. 2026-06-17
|
|
308
|
+
> (PR #109): the commit-time half (b) became a mechanical hook after a weaker-tier session leaked a
|
|
309
|
+
> companion-store name onto a public PR (`fh_signal_2026-06-17` Wave 4).
|
|
291
310
|
|
|
292
311
|
---
|
|
293
312
|
|
|
@@ -344,7 +363,7 @@ Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?
|
|
|
344
363
|
| "where does this go", "asset location", "hub vs project", "placement" | `/asset-placement-gate` |
|
|
345
364
|
| "add to marketplace", "OK to publish", "pre-publish check" | `/marketplace-gate` |
|
|
346
365
|
| "did I leak anything", "public surface audit", "private token scan", "is my split clean", "check tracked files for private tokens" | `/public-surface-audit` |
|
|
347
|
-
| "publish", "make public", "make this repo public", "go public", "gh repo create --public", "flip to public", "first public push", "publish the package", "npm publish", "twine upload" (publish intent — **proactive**, fire *before* the action) | **Pre-Publish Surface Gate** (see above → `/public-surface-audit` + `/marketplace-gate` Check 5 must PASS first) |
|
|
366
|
+
| "publish", "make public", "make this repo public", "go public", "gh repo create --public", "flip to public", "first public push", "publish the package", "npm publish", "twine upload", **opening/updating a PR or pushing content to the public hub** (esp. company-origin) (publish intent — **proactive**, fire *before* the action; adding content to an already-public repo IS publishing that content) | **Pre-Publish Surface Gate** (see above → `/public-surface-audit` + `/marketplace-gate` Check 5 must PASS first). The commit-time half is now **hook-enforced** (mechanical confidentiality scan — see Pre-Publish Gate §Hook coverage (b)), so this proactive trigger is the salience layer over a mechanical floor. |
|
|
348
367
|
| "delete the branch", "브랜치 삭제", "브랜치 정리", "clean up branches", "force-push", "rewrite history", "지워도 돼?" (destructive intent — **proactive**, fire *before* the action) | **Destructive-Op Gate** (see above → enumerate → recover → destroy; `templates/predelete_check.sh`) |
|
|
349
368
|
| "look at this again", "is this right", "counterargument", "re-validate" | `/verify-bidirectional` |
|
|
350
369
|
| "MCP failing", "tool keeps erroring", "circuit-breaker", "same error looping" | `/mcp-circuit-breaker` |
|
package/package.json
CHANGED