@chrono-meta/fh-gate 1.4.53 → 1.4.55
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-plugin/marketplace.json +2 -2
- package/CATALOG.md +4 -4
- package/CLAUDE.md +47 -11
- package/README.ja.md +443 -0
- package/README.ko.md +442 -0
- package/README.md +58 -4
- package/README.zh.md +425 -0
- package/knowledge/shared/dialogue/ai_dialogue_playbook.md +1 -1
- package/knowledge/shared/dialogue/claude_code_runtime_flow.md +1 -1
- package/knowledge/shared/dialogue/memory_intent_recall.md +1 -1
- package/knowledge/shared/harness-core/crucible_mode.md +1 -1
- package/knowledge/shared/harness-core/field_verdict_crossfamily_gate.md +1 -1
- package/knowledge/shared/harness-core/harness_6axis_framework.md +1 -1
- package/knowledge/shared/harness-core/harness_design_decision_lens.md +1 -1
- package/knowledge/shared/harness-core/harness_incubator_doctrine.md +139 -0
- package/knowledge/shared/harness-core/hub_compounding_loop.md +2 -2
- package/knowledge/shared/harness-core/hybrid_orchestration_architecture_roadmap.md +3 -3
- package/knowledge/shared/rules/auto_project_mapping.md +134 -0
- package/knowledge/shared/rules/modes_and_value.md +162 -0
- package/knowledge/shared/rules/operational_adaptation.md +73 -0
- package/knowledge/shared/rules/operations.md +48 -0
- package/knowledge/shared/rules/sister_asset_protocol.md +54 -0
- package/knowledge/shared/rules/sync_push_protocols.md +139 -0
- package/package.json +6 -2
- package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/skills/contention-layer/SKILL.md +1 -1
- package/plugins/fh-meta/skills/field-harvest/SKILL.md +1 -1
- package/plugins/fh-meta/skills/field-harvest/SKILL_detail.md +1 -1
- package/plugins/fh-meta/skills/harness-doctor/SKILL.md +12 -0
- package/plugins/fh-meta/skills/harvest-loop/SKILL.md +2 -2
- package/plugins/fh-meta/skills/video-ingest/SKILL.md +1 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Defines the Session Sync procedure for persisting session work to the hub, the Knowledge Push protocol for feeding new knowledge back, CATALOG.md format, track mapping table, and tag conventions.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Session Sync / Knowledge Push Protocols
|
|
6
|
+
|
|
7
|
+
## Session Sync Protocol
|
|
8
|
+
|
|
9
|
+
Procedure for persistently storing sessions worked on in other projects into the hub.
|
|
10
|
+
Follow this protocol when the user requests "sync", "save session", or similar.
|
|
11
|
+
|
|
12
|
+
### Sync target judgment
|
|
13
|
+
|
|
14
|
+
| Sync YES | Sync NO |
|
|
15
|
+
|---|---|
|
|
16
|
+
| New pattern/rule discovered | Simple code change (1-line bug fix) |
|
|
17
|
+
| Architecture decision | Routine test execution |
|
|
18
|
+
| Lessons/feedback (learned from failures) | Repeating already-recorded content |
|
|
19
|
+
| Roadmap/strategy change | Sessions with only exploration and no conclusion |
|
|
20
|
+
|
|
21
|
+
**What-kind axis (Raw / Wiki / Conversation)** — orthogonal to the YES/NO above and to the
|
|
22
|
+
location split (knowledge/ · tracks/ · memory/), this classifies the *processing stage*, which
|
|
23
|
+
routes the destination: **Raw** = unprocessed capture (a pasted log, a fetched source) → stays in
|
|
24
|
+
tracks/ or a companion store, not yet distilled · **Wiki** = distilled + `[[linked]]` knowledge →
|
|
25
|
+
knowledge/ or memory/ (the compounding layer) · **Conversation** = dialogue/decision logs → tracks/
|
|
26
|
+
session files. A Raw item is not yet a Wiki item; the distill step (Raw → Wiki) is where linking +
|
|
27
|
+
the contradiction scan below earn their keep. (Imported from the 김효율 AX-Obsidian cross-audit,
|
|
28
|
+
`tracks/_audit/session_2026_06_21_kim-hyoyul-ax-obsidian-wiki-harness.md` §4 — a crisper ingest
|
|
29
|
+
schema than the location split alone.)
|
|
30
|
+
|
|
31
|
+
### Sync procedure
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
1. Create/move session file
|
|
35
|
+
→ tracks/{project}/session_YYYY_MM_DD_{slug}.md
|
|
36
|
+
→ YAML frontmatter required: name, description, type, date, tags
|
|
37
|
+
|
|
38
|
+
2. If learnings/feedback exist, create separate file
|
|
39
|
+
→ tracks/{project}/learnings/feedback_{slug}.md
|
|
40
|
+
|
|
41
|
+
3. Contradiction scan — ingest gate (class: judged, pair: verify-bidirectional)
|
|
42
|
+
→ Before indexing, grep CATALOG.md + knowledge/ for claims the new content contradicts
|
|
43
|
+
(same topic with opposite conclusion · superseded version/number · changed definition)
|
|
44
|
+
→ Contradiction found: flag it in BOTH the new file and its CATALOG entry
|
|
45
|
+
("conflicts with / supersedes: {file}") — contradictions never coexist silently
|
|
46
|
+
→ Removing or rewriting the OLD claim requires operator approval (HITL)
|
|
47
|
+
→ Clean scan: proceed without notes
|
|
48
|
+
|
|
49
|
+
4. Add entry to CATALOG.md
|
|
50
|
+
→ Maintain reverse date order (newest at top)
|
|
51
|
+
→ Include tags, 3-line summary, key decisions
|
|
52
|
+
|
|
53
|
+
5. git commit
|
|
54
|
+
→ "sync: {project} {date} session — {one-line summary}"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Track mapping
|
|
58
|
+
|
|
59
|
+
Update the track mapping table in CLAUDE.md each time a project is added.
|
|
60
|
+
|
|
61
|
+
| Project | Track directory |
|
|
62
|
+
|---|---|
|
|
63
|
+
| (example) project-a | tracks/project_a/ |
|
|
64
|
+
| Patterns common to 2+ projects | knowledge/shared/ |
|
|
65
|
+
| Hub meta work (weekly_audit, etc.) | tracks/_{topic}/ — underscore prefix |
|
|
66
|
+
|
|
67
|
+
**Underscore prefix convention**: `tracks/_audit/` · `tracks/_mcp/` etc. are for hub operations/meta work only. Consider promoting to parent directory when meta tracks accumulate to 3+.
|
|
68
|
+
|
|
69
|
+
**Two-layer storage principle**: `tracks/` = detailed work history (local, machine-dependent). For critical cross-session state — pending codes, DOIs, active action items — also write to `~/.claude/projects/.../memory/` (durable, survives re-clone or machine change).
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Knowledge Push Protocol
|
|
74
|
+
|
|
75
|
+
Protocol for feeding new knowledge discovered in projects back to the hub.
|
|
76
|
+
|
|
77
|
+
### Learnings/feedback (short patterns)
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
---
|
|
81
|
+
name: {identifiable name}
|
|
82
|
+
description: {one-line summary}
|
|
83
|
+
type: feedback
|
|
84
|
+
date: YYYY-MM-DD
|
|
85
|
+
tags: [{related}, {tag}]
|
|
86
|
+
originProject: {project name}
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
{content — Why/How to apply structure recommended}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Storage path: `tracks/{project}/learnings/feedback_{slug}.md`
|
|
93
|
+
|
|
94
|
+
### Session records (work history)
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
---
|
|
98
|
+
name: {session title (include date)}
|
|
99
|
+
description: {one-line main achievement}
|
|
100
|
+
type: project
|
|
101
|
+
date: YYYY-MM-DD
|
|
102
|
+
tags: [{related}, {tag}]
|
|
103
|
+
---
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Storage path: `tracks/{project}/session_YYYY_MM_DD_{slug}.md`
|
|
107
|
+
|
|
108
|
+
### Cross-project patterns
|
|
109
|
+
|
|
110
|
+
Patterns applicable to 2+ projects are written in `knowledge/shared/`.
|
|
111
|
+
|
|
112
|
+
**Ingest gate applies here too**: before adding a `knowledge/shared/` doc, run the
|
|
113
|
+
contradiction scan (Sync procedure step 3) against existing knowledge/ claims.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## CATALOG.md Format
|
|
118
|
+
|
|
119
|
+
Follow the format below when adding entries:
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
### YYYY-MM-DD | {project} | {tag1}, {tag2}, {tag3}
|
|
123
|
+
**File:** tracks/{project}/filename.md
|
|
124
|
+
{Summary within 3 lines. What was done and why it matters.}
|
|
125
|
+
- Decision: {key decision — architecture choice, direction confirmed, etc.}
|
|
126
|
+
- Open: {unresolved issues — only if applicable}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Tag Conventions
|
|
132
|
+
|
|
133
|
+
Add freely, but prefer reusing existing tags.
|
|
134
|
+
|
|
135
|
+
**Operations trigger tags** (aggregated by weekly audit scanner):
|
|
136
|
+
- `#gap-trigger:axis-N` — per-axis asset gap (auto-assigned when 0 entries continue 2+ months)
|
|
137
|
+
- `#skill-candidate:XXX` — Skill promotion candidate for patterns repeated 3+ times
|
|
138
|
+
- `#rule-candidate:XXX` — Rule promotion candidate for mistakes repeated 3+ times
|
|
139
|
+
- `#archive-candidate` — Self-reported deprecation
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chrono-meta/fh-gate",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.55",
|
|
4
4
|
"description": "FH runtime adapters — run FH governance, skills, and agents via Claude or Codex with machine-parseable gates.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -72,6 +72,10 @@
|
|
|
72
72
|
"plugins/fh-commons/agents",
|
|
73
73
|
"knowledge/shared/harness-core",
|
|
74
74
|
"knowledge/shared/dialogue",
|
|
75
|
-
"
|
|
75
|
+
"knowledge/shared/rules",
|
|
76
|
+
"README.md",
|
|
77
|
+
"README.ko.md",
|
|
78
|
+
"README.zh.md",
|
|
79
|
+
"README.ja.md"
|
|
76
80
|
]
|
|
77
81
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: contention-layer
|
|
3
|
-
description: When two skills, agents, or independent research tracks produce conflicting verdicts on the same output, reads the conflict as a signal rather than an error and harvests new skill candidates or insight deltas
|
|
3
|
+
description: When two skills, agents, or independent research tracks produce conflicting verdicts on the same output, reads the conflict as a signal rather than an error and harvests new skill candidates or insight deltas — including a Dual-Track Grounding conflict (open-frontier track vs internally-grounded recall track disagreeing). Routes skills born from contention to fh-meta (meta-layer), the commons plugin (project-agnostic), or field harvest (domain-specific). Triggered by "two skills conflict", "they produce different conclusions", "contention-layer", "contention harvest", "open vs grounded contradiction", "research tracks disagree".
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Bash", "Grep", "Write"]
|
|
6
6
|
model: sonnet
|
|
@@ -200,7 +200,7 @@ Output the confirmation block (file path + commit hash + push offer — format i
|
|
|
200
200
|
|
|
201
201
|
## Step 5-B.1. UAP Update (Operational Adaptation Loop)
|
|
202
202
|
|
|
203
|
-
> Rule:
|
|
203
|
+
> Rule: `knowledge/shared/rules/operational_adaptation.md`
|
|
204
204
|
|
|
205
205
|
At field-session close, update the **User Adaptation Profile** (`tracks/_meta/user_adaptation_profile.md`, local/gitignored — skip silently if absent or in an ephemeral/cloud session):
|
|
206
206
|
|
|
@@ -16,7 +16,7 @@ load: on-demand
|
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
# Priority 1: Read FH auto_project_mapping.md
|
|
19
|
-
cat
|
|
19
|
+
cat knowledge/shared/rules/auto_project_mapping.md 2>/dev/null | grep -E "path:|project:" | head -10
|
|
20
20
|
|
|
21
21
|
# Priority 2: Auto-discover git repos in common development directories
|
|
22
22
|
find "$HOME/projects" "$HOME/dev" "$HOME/workspace" "$HOME/PycharmProjects" \
|
|
@@ -78,9 +78,21 @@ confirms the gap*, never a verdict the report emits on its own; surface each gap
|
|
|
78
78
|
| 15+ `##` sections in CLAUDE.md | S-tier warning |
|
|
79
79
|
| SKILL.md > 300 lines AND no `SKILL_detail.md` | S-tier — propose `/salience-splitter` (governance-semantic split, not compression) |
|
|
80
80
|
| Rules files unreferenced in CLAUDE.md | R-tier |
|
|
81
|
+
| Always-loaded footprint (CLAUDE.md + every `.claude/rules/*.md` lacking `paths:` frontmatter) > 40k chars | S-tier — relocate detail rules to a non-loaded dir (e.g. `knowledge/shared/rules/`), pointers stay in CLAUDE.md |
|
|
82
|
+
| Always-loaded footprint > 80k chars | M-tier — same prescription, mandatory |
|
|
83
|
+
| **Pointer-illusion**: a CLAUDE.md "detail/detailed procedure" pointer whose target is itself an always-loaded `.claude/rules/*.md` | S-tier — the split saves zero context (rules/ auto-loads regardless); move the target out of auto-load, keep the pointer |
|
|
81
84
|
| weekly_audit 14~30 days elapsed | S-tier |
|
|
82
85
|
| weekly_audit 30+ days elapsed | M-tier |
|
|
83
86
|
|
|
87
|
+
Always-loaded + pointer-illusion checks are mechanical (found 2026-07-12 — FH itself shipped ~50k chars of rules/ behind "detail pointers" that saved nothing; the meta-harness blind spot this row closes):
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# always-loaded footprint (chars): CLAUDE.md + rules files with no paths: frontmatter
|
|
91
|
+
T=$(wc -c < CLAUDE.md 2>/dev/null); for f in .claude/rules/*.md; do [ -f "$f" ] || continue; head -5 "$f" | grep -q '^paths:' || T=$((T + $(wc -c < "$f"))); done; echo "always-loaded: $T chars"
|
|
92
|
+
# pointer-illusion: CLAUDE.md pointers targeting still-auto-loaded rules files
|
|
93
|
+
grep -oE '\.claude/rules/[a-z_]+\.md' CLAUDE.md | sort -u | while read p; do [ -f "$p" ] && echo "ILLUSION: $p (pointed-to AND always-loaded)"; done
|
|
94
|
+
```
|
|
95
|
+
|
|
84
96
|
### Step 3-L. Language Lint (`--lint` mode only)
|
|
85
97
|
|
|
86
98
|
> Activate with `/harness-doctor --lint` or when harvest-loop surfaces a P10-series signal. Skipped in standard runs.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: harvest-loop
|
|
3
|
-
description:
|
|
3
|
+
description: An 8-step self-evolution pipeline that runs after field sessions end (field-harvest → contention-layer → challenger + persona-innovator → synthesizer → Critic agent → harness-doctor → verify-bidirectional → curator), absorbing session learnings back into the FH ecosystem. Runs automatically at session end in the main dev environment; proposes execution first for external users. Triggered by "session harvest", "learning absorption", "fh evolution", or "harvest-loop". (The phrase "run the pipeline" is ceded to pipeline-conductor — use that for end-to-end verification sweeps.)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Write", "Bash", "Grep", "Glob", "Agent"]
|
|
6
6
|
model-note: session-inherit — Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
@@ -40,7 +40,7 @@ Step 0 (Regression Guard) + Step 1 (field-harvest) + Step 2 (contention-layer) +
|
|
|
40
40
|
Session end
|
|
41
41
|
│
|
|
42
42
|
[Step 0-a] FH asset change detection → auto-quench
|
|
43
|
-
│ git diff --name-only HEAD | grep -E "SKILL\.md|\.claude/rules/|templates/|CLAUDE\.md"
|
|
43
|
+
│ git diff --name-only HEAD | grep -E "SKILL\.md|\.claude/rules/|knowledge/shared/rules/|templates/|CLAUDE\.md"
|
|
44
44
|
│ → 1+ FH assets changed: run full 3-axis gate
|
|
45
45
|
│ → No changes: proceed to Step 0-b immediately
|
|
46
46
|
│
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: video-ingest
|
|
3
|
-
description: Ingests a video's content (YouTube and similar) for agent context, routing by capability,
|
|
3
|
+
description: Ingests a video's content (YouTube and similar) for agent context, routing by capability, task need, and video length — a natively multimodal engine (Gemini via agy or the Gemini API) for direct-URL and long video, Claude vision over ffmpeg-extracted frames when no such engine is present, yt-dlp captions when the transcript alone suffices, and the logged-in claude-in-chrome session for auth-gated videos. The governor cross-checks any multimodal comprehensive-read. Triggered by "ingest this video", "what does this video show", "get the transcript from this YouTube video", "video-ingest".
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Bash"]
|
|
6
6
|
model: sonnet
|