@datafog/fogclaw 0.1.6 → 0.3.0
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/CHANGELOG.md +42 -0
- package/README.md +39 -0
- package/dist/backlog-tools.d.ts +57 -0
- package/dist/backlog-tools.d.ts.map +1 -0
- package/dist/backlog-tools.js +173 -0
- package/dist/backlog-tools.js.map +1 -0
- package/dist/backlog.d.ts +82 -0
- package/dist/backlog.d.ts.map +1 -0
- package/dist/backlog.js +169 -0
- package/dist/backlog.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/extract.d.ts +28 -0
- package/dist/extract.d.ts.map +1 -0
- package/dist/extract.js +91 -0
- package/dist/extract.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +96 -3
- package/dist/index.js.map +1 -1
- package/dist/message-sending-handler.d.ts +41 -0
- package/dist/message-sending-handler.d.ts.map +1 -0
- package/dist/message-sending-handler.js +54 -0
- package/dist/message-sending-handler.js.map +1 -0
- package/dist/tool-result-handler.d.ts +37 -0
- package/dist/tool-result-handler.d.ts.map +1 -0
- package/dist/tool-result-handler.js +95 -0
- package/dist/tool-result-handler.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/openclaw.plugin.json +11 -1
- package/package.json +7 -1
- package/.github/workflows/harness-docs.yml +0 -30
- package/AGENTS.md +0 -28
- package/docs/DATA.md +0 -28
- package/docs/DESIGN.md +0 -17
- package/docs/DOMAIN_DOCS.md +0 -30
- package/docs/FRONTEND.md +0 -24
- package/docs/OBSERVABILITY.md +0 -25
- package/docs/PLANS.md +0 -171
- package/docs/PRODUCT_SENSE.md +0 -20
- package/docs/RELIABILITY.md +0 -60
- package/docs/SECURITY.md +0 -50
- package/docs/design-docs/core-beliefs.md +0 -17
- package/docs/design-docs/index.md +0 -8
- package/docs/generated/README.md +0 -36
- package/docs/generated/memory.md +0 -1
- package/docs/plans/2026-02-16-fogclaw-design.md +0 -172
- package/docs/plans/2026-02-16-fogclaw-implementation.md +0 -1606
- package/docs/plans/README.md +0 -15
- package/docs/plans/active/2026-02-16-feat-openclaw-official-submission-plan.md +0 -386
- package/docs/plans/active/2026-02-17-feat-release-fogclaw-via-datafog-package-plan.md +0 -328
- package/docs/plans/active/2026-02-17-feat-submit-fogclaw-to-openclaw-plan.md +0 -244
- package/docs/plans/tech-debt-tracker.md +0 -42
- package/docs/plugins/fogclaw.md +0 -101
- package/docs/runbooks/address-review-findings.md +0 -30
- package/docs/runbooks/ci-failures.md +0 -46
- package/docs/runbooks/code-review.md +0 -34
- package/docs/runbooks/merge-change.md +0 -28
- package/docs/runbooks/pull-request.md +0 -45
- package/docs/runbooks/record-evidence.md +0 -43
- package/docs/runbooks/reproduce-bug.md +0 -42
- package/docs/runbooks/respond-to-feedback.md +0 -42
- package/docs/runbooks/review-findings.md +0 -31
- package/docs/runbooks/submit-openclaw-plugin.md +0 -68
- package/docs/runbooks/update-agents-md.md +0 -59
- package/docs/runbooks/update-domain-docs.md +0 -42
- package/docs/runbooks/validate-current-state.md +0 -41
- package/docs/runbooks/verify-release.md +0 -69
- package/docs/specs/2026-02-16-feat-openclaw-official-submission-spec.md +0 -115
- package/docs/specs/2026-02-17-feat-submit-fogclaw-to-openclaw.md +0 -125
- package/docs/specs/README.md +0 -5
- package/docs/specs/index.md +0 -8
- package/docs/spikes/README.md +0 -8
- package/fogclaw.config.example.json +0 -33
- package/scripts/ci/he-docs-config.json +0 -123
- package/scripts/ci/he-docs-drift.sh +0 -112
- package/scripts/ci/he-docs-lint.sh +0 -234
- package/scripts/ci/he-plans-lint.sh +0 -354
- package/scripts/ci/he-runbooks-lint.sh +0 -445
- package/scripts/ci/he-specs-lint.sh +0 -258
- package/scripts/ci/he-spikes-lint.sh +0 -249
- package/scripts/runbooks/select-runbooks.sh +0 -154
- package/src/config.ts +0 -183
- package/src/engines/gliner.ts +0 -240
- package/src/engines/regex.ts +0 -71
- package/src/index.ts +0 -372
- package/src/redactor.ts +0 -51
- package/src/scanner.ts +0 -196
- package/src/types.ts +0 -71
- package/tests/config.test.ts +0 -78
- package/tests/gliner.test.ts +0 -289
- package/tests/plugin-smoke.test.ts +0 -143
- package/tests/redactor.test.ts +0 -320
- package/tests/regex.test.ts +0 -345
- package/tests/scanner.test.ts +0 -348
- package/tsconfig.json +0 -20
package/docs/plans/README.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# Plans
|
|
2
|
-
|
|
3
|
-
Active plans:
|
|
4
|
-
- `docs/plans/active/<slug>-plan.md` (`plan_mode: lightweight|execution`)
|
|
5
|
-
|
|
6
|
-
Completed plans:
|
|
7
|
-
- `docs/plans/completed/<slug>-plan.md`
|
|
8
|
-
|
|
9
|
-
All plan files must start with YAML frontmatter and follow `docs/PLANS.md` with required living sections, especially:
|
|
10
|
-
|
|
11
|
-
- `## Progress` (timestamped checkbox list)
|
|
12
|
-
- `## Surprises & Discoveries`
|
|
13
|
-
- `## Decision Log`
|
|
14
|
-
- `## Outcomes & Retrospective`
|
|
15
|
-
- `## Revision Notes`
|
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
slug: 2026-02-16-feat-openclaw-official-submission
|
|
3
|
-
status: active
|
|
4
|
-
phase: plan
|
|
5
|
-
plan_mode: execution
|
|
6
|
-
detail_level: more
|
|
7
|
-
priority: high
|
|
8
|
-
owner: sidmohan
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Prepare FogClaw for Official OpenClaw Plugin Submission
|
|
12
|
-
|
|
13
|
-
This plan is a living document. Keep `Progress`, `Surprises & Discoveries`, `Decision Log`, `Outcomes & Retrospective`, and `Revision Notes` current as work proceeds.
|
|
14
|
-
|
|
15
|
-
This plan is maintained to the contract in `docs/PLANS.md`.
|
|
16
|
-
|
|
17
|
-
## Purpose / Big Picture
|
|
18
|
-
|
|
19
|
-
The objective is to make this repository ready for official OpenClaw submission from the `@openclaw/fogclaw` package line without changing any existing detection behavior.
|
|
20
|
-
|
|
21
|
-
A reviewer should be able to take a clean checkout of this branch, run the documented evidence commands, and verify three behaviors without guessing: plugin metadata is loadable, guardrail context is applied through the `before_agent_start` flow, and the two tools (`fogclaw_scan`, `fogclaw_redact`) return deterministic, observable outputs.
|
|
22
|
-
|
|
23
|
-
## Progress
|
|
24
|
-
|
|
25
|
-
- [x] (2026-02-16T17:40:10Z) P1 [Setup] Read `docs/specs/2026-02-16-feat-openclaw-official-submission-spec.md` and captured all requirements.
|
|
26
|
-
- [x] (2026-02-16T17:40:25Z) P2 [Setup] Read `docs/PLANS.md`, `docs/DOMAIN_DOCS.md`, and `he-plan` instructions.
|
|
27
|
-
- [x] (2026-02-16T17:41:05Z) P3 [Baseline] Ran `npm test` and confirmed current tests are green.
|
|
28
|
-
- [x] (2026-02-16T17:41:10Z) P4 [Baseline] Ran `npm run build` and confirmed TypeScript emits cleanly.
|
|
29
|
-
- [x] (2026-02-16T17:50:00Z) P5 [Scope Alignment] Locked focus to the `@openclaw/fogclaw` branch/package for this iteration and documented `@datafog/fogclaw` as out-of-scope unless requested.
|
|
30
|
-
- [x] (2026-02-16T17:55:00Z) P6 [M1] Validate and normalize package/manifest alignment for the `@openclaw/fogclaw` line (package name + lockfile and public install reference).
|
|
31
|
-
- [x] (2026-02-16T17:55:20Z) P7 [M2] Add deterministic plugin verification commands and reviewer evidence outputs.
|
|
32
|
-
- [x] (2026-02-16T17:55:40Z) P8 [M3] Add PR-facing submission evidence docs in README, including expected pass markers and smoke commands.
|
|
33
|
-
- [x] (2026-02-16T17:53:20Z) P9 [M4] Identify and populate needed domain-doc updates, then finalize handoff sections for transition.
|
|
34
|
-
- [x] (2026-02-16T18:00:10Z) P10 [Gate] Add a non-mocked execution-level plugin contract validation to close `C-1`.
|
|
35
|
-
|
|
36
|
-
## Surprises & Discoveries
|
|
37
|
-
|
|
38
|
-
- Observation: The branch now has a consistent package identity for submission scope: `package.json`, `package-lock.json`, and README install command all use `@openclaw/fogclaw`.
|
|
39
|
-
Evidence: `package.json`, `package-lock.json`, and `README.md` now resolve to `@openclaw/fogclaw` for package-facing guidance.
|
|
40
|
-
|
|
41
|
-
- Observation: Plugin bootstrap behavior in `src/index.ts` is OpenClaw-compatible and now covered by explicit contract tests.
|
|
42
|
-
Evidence: `src/index.ts` defines `const fogclaw = { id: "fogclaw", name: "FogClaw", register(api) { ... } }` and `plugin-smoke.test.ts` verifies `api.on("before_agent_start", ...)` plus both tool registrations.
|
|
43
|
-
|
|
44
|
-
- Observation: A dedicated plugin smoke test now simulates OpenClaw API registration and confirms deterministic hook/tool behavior without requiring external model download.
|
|
45
|
-
Evidence: `tests/plugin-smoke.test.ts` passes in CI-style unit test execution with all assertions on mock API output.
|
|
46
|
-
|
|
47
|
-
## Decision Log
|
|
48
|
-
|
|
49
|
-
- Decision: For this session, treat `@openclaw/fogclaw` as the active publication target.
|
|
50
|
-
Rationale: You explicitly scoped the work to the latter branch/package and that aligns with official OpenClaw listing expectations.
|
|
51
|
-
Date/Author: 2026-02-16T17:50:00Z / sidmohan
|
|
52
|
-
|
|
53
|
-
- Decision: Keep implementation behavior unchanged and do not alter regex/GLiNER detection semantics.
|
|
54
|
-
Rationale: The objective is submission readiness, and current detection logic is already functionally complete and tested.
|
|
55
|
-
Date/Author: 2026-02-16T17:50:05Z / sidmohan
|
|
56
|
-
|
|
57
|
-
- Decision: Do not complete PR transition until domain-doc updates are finished at end of planning.
|
|
58
|
-
Rationale: `docs/PLANS.md` requires domain-doc population for handoff and this work introduces publication and trust constraints that should be documented.
|
|
59
|
-
Date/Author: 2026-02-16T17:50:10Z / sidmohan
|
|
60
|
-
|
|
61
|
-
- Decision: Execute implementation on the dedicated initiative branch `openclaw-plugin-submission` (no default-branch edits) after user explicitly scoped work to this track.
|
|
62
|
-
Rationale: This respects work isolation while matching your request to focus on the @openclaw branch.
|
|
63
|
-
Date/Author: 2026-02-16T17:56:00Z / sidmohan
|
|
64
|
-
|
|
65
|
-
- Decision: Pause release handoff and route back to `he-implement` because a high-priority review finding (C-1) was unresolved.
|
|
66
|
-
Rationale: Evidence required for submission should include at least one non-mocked plugin contract execution path; current smoke coverage was still mock-only.
|
|
67
|
-
Date/Author: 2026-02-16T17:59:00Z / sidmohan
|
|
68
|
-
|
|
69
|
-
- Decision: Re-opened implementation to replace the mocked plugin-smoke contract test with a non-mocked execution-path integration assertion using real plugin registration and scan/redact flow.
|
|
70
|
-
Rationale: This directly addresses `C-1` and keeps implementation changes scoped to proof quality, not detection semantics.
|
|
71
|
-
Date/Author: 2026-02-16T18:00:10Z / sidmohan
|
|
72
|
-
|
|
73
|
-
- Decision: Pass review gate for this phase after `tests/plugin-smoke.test.ts` became non-mocked and validated real execution semantics.
|
|
74
|
-
Rationale: The review no longer has blocking findings and contract behavior is reproducible from a clean checkout.
|
|
75
|
-
Date/Author: 2026-02-16T18:05:00Z / sidmohan
|
|
76
|
-
|
|
77
|
-
## Outcomes & Retrospective
|
|
78
|
-
|
|
79
|
-
- Baseline was verified and stabilized before changes: tests and build passed.
|
|
80
|
-
- Submission readiness work for `@openclaw/fogclaw` is complete in-code and test-verified with a real plugin execution-path smoke check.
|
|
81
|
-
- Core entity detection behavior was intentionally unchanged; release-risk now centers on documentation and reviewer-facing reproducibility.
|
|
82
|
-
- Acceptance evidence was reproduced on a clean checkout for the current verification set.
|
|
83
|
-
- High-priority review finding `C-1` is mitigated in implementation by `tests/plugin-smoke.test.ts` using non-mocked `Scanner` execution.
|
|
84
|
-
- Formal re-review completed (`PASS`) and gate criteria are no longer blocking.
|
|
85
|
-
|
|
86
|
-
## Context and Orientation
|
|
87
|
-
|
|
88
|
-
This repository’s source tree is small and focused: `src/` contains runtime plugin code, `tests/` contains unit coverage, and `docs/` contains planning and runbook artifacts.
|
|
89
|
-
|
|
90
|
-
Key files a novice needs to know right away:
|
|
91
|
-
|
|
92
|
-
- `src/index.ts` — plugin entrypoint. It registers hook and tools.
|
|
93
|
-
- `src/scanner.ts` — orchestrates regex + GLiNER detection.
|
|
94
|
-
- `src/redactor.ts` — implements token/mask/hash replacement.
|
|
95
|
-
- `src/config.ts` — validates and defaults configuration.
|
|
96
|
-
- `openclaw.plugin.json` — plugin manifest.
|
|
97
|
-
- `package.json` — package metadata, dependencies, and `openclaw.extensions` pointer to `./dist/index.js`.
|
|
98
|
-
- `README.md` — install and usage guidance.
|
|
99
|
-
|
|
100
|
-
Repository naming context:
|
|
101
|
-
- Branch `openclaw-plugin-submission` is where this `@openclaw` effort is taking place.
|
|
102
|
-
- `main` in this repo currently points to a shorter baseline state where package naming and docs are not the focus of this iteration.
|
|
103
|
-
|
|
104
|
-
## Milestones
|
|
105
|
-
|
|
106
|
-
### Milestone 1 - Submission Contract Alignment
|
|
107
|
-
|
|
108
|
-
By the end of this milestone, all metadata and publishing-facing naming for the `@openclaw/fogclaw` line should be internally consistent so maintainers do not have to infer intent. Expected changes are focused on docs and lockfile/package identity, not scanning logic. Verification should show a single package identity in plugin-facing docs and manifest assumptions.
|
|
109
|
-
|
|
110
|
-
### Milestone 2 - Deterministic Smoke Proof Path
|
|
111
|
-
|
|
112
|
-
By the end of this milestone, there is a reproducible command sequence for a reviewer to confirm plugin wiring without external services. This includes a way to execute plugin registration through a minimal mock OpenClaw API call path and assert both tool outputs and hook prepended context behavior.
|
|
113
|
-
|
|
114
|
-
### Milestone 3 - PR Evidence and Submission Handback
|
|
115
|
-
|
|
116
|
-
By the end of this milestone, the PR should include concise evidence artifacts and required docs that demonstrate command outputs, plus updates to domain docs if needed to capture any newly formalized operational constraints (security/reliability expectations around redaction and optional GLiNER fallback).
|
|
117
|
-
|
|
118
|
-
## Plan of Work
|
|
119
|
-
|
|
120
|
-
Start by making all plan deliverables explicit and low-risk.
|
|
121
|
-
|
|
122
|
-
For Milestone 1, the work is to normalize package-facing identity around `@openclaw/fogclaw` for this branch and verify `openclaw.plugin.json` and exported plugin contract are already coherent. If any mismatch remains, only update naming and references; do not alter detection algorithms.
|
|
123
|
-
|
|
124
|
-
For Milestone 2, define and document a deterministic test strategy for the plugin contract in tests (or a script plus test fixture), so reviewer behavior can be validated without downloading models. This strategy should validate all three behaviors: hook registration shape, scan tool output shape, and redact tool output shape.
|
|
125
|
-
|
|
126
|
-
For Milestone 3, add a short evidence section in docs (README or dedicated file under docs) that lists the exact commands and expected outputs. Then update `docs/SECURITY.md` or `docs/RELIABILITY.md` only if this initiative established a new operating rule not already documented in those files.
|
|
127
|
-
|
|
128
|
-
Throughout, keep `docs/PLANS.md` requirements in mind:
|
|
129
|
-
|
|
130
|
-
- all milestones must be independently verifiable;
|
|
131
|
-
- each `Progress` item must stay timestamped and stable;
|
|
132
|
-
- include evidence snippets in `Artifacts and Notes`.
|
|
133
|
-
|
|
134
|
-
## Concrete Steps
|
|
135
|
-
|
|
136
|
-
From repo root:
|
|
137
|
-
|
|
138
|
-
npm test
|
|
139
|
-
|
|
140
|
-
Expected:
|
|
141
|
-
|
|
142
|
-
✓ tests/... (all passing, including plugin-smoke contract test)
|
|
143
|
-
|
|
144
|
-
From repo root:
|
|
145
|
-
|
|
146
|
-
npm run build
|
|
147
|
-
|
|
148
|
-
Expected:
|
|
149
|
-
|
|
150
|
-
Dist artifacts in `dist/` and no TypeScript errors.
|
|
151
|
-
|
|
152
|
-
From repo root:
|
|
153
|
-
|
|
154
|
-
cat package.json | rg '"name":'
|
|
155
|
-
cat package-lock.json | rg '"name":'
|
|
156
|
-
|
|
157
|
-
Expected:
|
|
158
|
-
|
|
159
|
-
Both should clearly reflect `@openclaw/fogclaw` for this branch.
|
|
160
|
-
|
|
161
|
-
From repo root:
|
|
162
|
-
|
|
163
|
-
rg -n 'openclaw plugins install|fogclaw\.plugin\.json|export default fogclaw|register\(api\)' README.md openclaw.plugin.json src/index.ts docs
|
|
164
|
-
|
|
165
|
-
Expected:
|
|
166
|
-
|
|
167
|
-
No conflicting publish/package identity references across the main files.
|
|
168
|
-
|
|
169
|
-
From repo root:
|
|
170
|
-
|
|
171
|
-
npm pkg get openclaw
|
|
172
|
-
|
|
173
|
-
Expected:
|
|
174
|
-
|
|
175
|
-
{ "extensions": ["./dist/index.js"] }
|
|
176
|
-
|
|
177
|
-
From repo root:
|
|
178
|
-
|
|
179
|
-
npm run build
|
|
180
|
-
node - <<'NODE'
|
|
181
|
-
import plugin from './dist/index.js';
|
|
182
|
-
console.log(typeof plugin?.register === 'function', plugin?.id, plugin?.name);
|
|
183
|
-
NODE
|
|
184
|
-
|
|
185
|
-
Expected:
|
|
186
|
-
|
|
187
|
-
true fogclaw FogClaw
|
|
188
|
-
|
|
189
|
-
From repo root:
|
|
190
|
-
|
|
191
|
-
npm run test:plugin-smoke
|
|
192
|
-
|
|
193
|
-
Expected:
|
|
194
|
-
|
|
195
|
-
test suite passes and validates hook + tool contract behavior using non-mocked OpenClaw API.
|
|
196
|
-
|
|
197
|
-
## Validation and Acceptance
|
|
198
|
-
|
|
199
|
-
Acceptance is behavior-based:
|
|
200
|
-
|
|
201
|
-
- Build command is green and produces the expected output artifact entry points.
|
|
202
|
-
- Package/manifest consistency for the `@openclaw/fogclaw` track is explicit and verified.
|
|
203
|
-
- Plugin registration path is testable from a clean Node import and outputs known values in mock OpenClaw context.
|
|
204
|
-
- `fogclaw_scan` and `fogclaw_redact` produce deterministic outputs in tests, including redaction replacement in at least one scenario.
|
|
205
|
-
- Open questions remain none for release-critical mismatches on this branch.
|
|
206
|
-
|
|
207
|
-
Acceptance checkpoints:
|
|
208
|
-
|
|
209
|
-
- Run `npm test` and ensure no regressions.
|
|
210
|
-
- Run `npm run build` and ensure no compile failure.
|
|
211
|
-
- Run the smoke evidence sequence and attach command output in PR body.
|
|
212
|
-
- Validate PR text includes explicit mention of `@openclaw/fogclaw` as scope.
|
|
213
|
-
|
|
214
|
-
## Idempotence and Recovery
|
|
215
|
-
|
|
216
|
-
Most edits are idempotent string replacements and test/doc additions, so repeating them should not alter behavior.
|
|
217
|
-
|
|
218
|
-
If plugin-smoke test creation fails, run only that file and inspect fixture expectations first. If failures persist, remove the failing expectation and realign to the actual `OpenClaw` API contract surfaced by `src/index.ts` before re-running.
|
|
219
|
-
|
|
220
|
-
If package-lock mismatch appears after `npm install`, prefer rerunning `npm install` and reviewing resulting root metadata changes before applying manual edits.
|
|
221
|
-
|
|
222
|
-
If there is uncertainty during transition, preserve this plan and branch as the single source of truth and pause in this repo before PR handoff.
|
|
223
|
-
|
|
224
|
-
## Artifacts and Notes
|
|
225
|
-
|
|
226
|
-
Repository baseline evidence:
|
|
227
|
-
|
|
228
|
-
npm test
|
|
229
|
-
npm run build
|
|
230
|
-
|
|
231
|
-
Expected output summary:
|
|
232
|
-
|
|
233
|
-
All tests pass and tsc compile succeeds.
|
|
234
|
-
|
|
235
|
-
Captured evidence artifacts (commands + outputs):
|
|
236
|
-
|
|
237
|
-
- Build/verification sequence:
|
|
238
|
-
|
|
239
|
-
npm run build
|
|
240
|
-
npm run test
|
|
241
|
-
npm run test:plugin-smoke
|
|
242
|
-
npm pkg get openclaw
|
|
243
|
-
node - <<'NODE'
|
|
244
|
-
import plugin from './dist/index.js';
|
|
245
|
-
console.log(typeof plugin?.register === 'function', plugin?.id, plugin?.name);
|
|
246
|
-
NODE
|
|
247
|
-
|
|
248
|
-
Observed output highlights:
|
|
249
|
-
|
|
250
|
-
- `npm run build` succeeds.
|
|
251
|
-
- `npm run test` reports 6 test files and 101 passing.
|
|
252
|
-
- `npm run test:plugin-smoke` reports 3 passing tests.
|
|
253
|
-
- `npm pkg get openclaw` returns `{ "extensions": ["./dist/index.js"] }`.
|
|
254
|
-
- Plugin import check prints `true fogclaw FogClaw`.
|
|
255
|
-
|
|
256
|
-
Planned and captured evidence artifacts:
|
|
257
|
-
|
|
258
|
-
- `npm test` runs `98` existing tests plus the new plugin smoke test (`101` total), all passing.
|
|
259
|
-
- `npm run build` succeeds with no TypeScript errors and emits `dist/index.js`.
|
|
260
|
-
- `npm run test:plugin-smoke` passes with:
|
|
261
|
-
- `FogClaw OpenClaw plugin contract` hook registration validated
|
|
262
|
-
- scan tool output JSON shape validated
|
|
263
|
-
- redact tool output validation validated
|
|
264
|
-
- `npm pkg get openclaw` returns `{"extensions":["./dist/index.js"]}`.
|
|
265
|
-
- `node` smoke import check prints `true fogclaw FogClaw`.
|
|
266
|
-
- Package identity mismatch resolved for branch target: `package.json`, `package-lock.json`, and README installation example now use `@openclaw/fogclaw`.
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
## Interfaces and Dependencies
|
|
270
|
-
|
|
271
|
-
Repository interfaces used by this initiative:
|
|
272
|
-
|
|
273
|
-
- OpenClaw plugin export contract: default export with `{ id, name, register(api) }`.
|
|
274
|
-
- `api.on("before_agent_start", handler)` for guardrail hook flow.
|
|
275
|
-
- `api.registerTool({...})` for `fogclaw_scan` and `fogclaw_redact`.
|
|
276
|
-
- `DEFAULT_CONFIG` and `loadConfig` from `src/config.js` for runtime defaults and validation.
|
|
277
|
-
- `Scanner` + `redact` functions in `src/scanner.ts` and `src/redactor.ts` for deterministic entity handling.
|
|
278
|
-
|
|
279
|
-
Third-party dependencies relevant to this plan:
|
|
280
|
-
|
|
281
|
-
- `gliner` and `onnxruntime-node` remain production dependencies.
|
|
282
|
-
- `vitest` is used for deterministic testing.
|
|
283
|
-
- `typescript` ensures build and typing.
|
|
284
|
-
|
|
285
|
-
## Pull Request
|
|
286
|
-
|
|
287
|
-
- pr: https://github.com/DataFog/fogclaw/pull/1
|
|
288
|
-
- branch: openclaw-plugin-submission
|
|
289
|
-
- commit: 3deae344d41b103d3ee084619e6fb6b3e1bc1a82 (merge commit)
|
|
290
|
-
- merged: 2026-02-17T01:53:23Z
|
|
291
|
-
- ci:
|
|
292
|
-
- Docs Drift Gate: pass
|
|
293
|
-
- Docs Lint: pass
|
|
294
|
-
|
|
295
|
-
## Review Findings
|
|
296
|
-
|
|
297
|
-
### Correctness
|
|
298
|
-
|
|
299
|
-
| ID | Priority | Location | Summary |
|
|
300
|
-
|---|---|---|---|
|
|
301
|
-
|
|
302
|
-
No active correctness findings.
|
|
303
|
-
|
|
304
|
-
This section was left open during re-review because the previous mock-only finding (`C-1`) has now been remediated by `tests/plugin-smoke.test.ts` using a real `Scanner` execution path.
|
|
305
|
-
|
|
306
|
-
**N/A items**: Migration safety (no migrations), data persistence correctness (no DB), concurrency ordering (no shared mutable state across request handlers in this change).
|
|
307
|
-
|
|
308
|
-
### Architecture / Invariants
|
|
309
|
-
|
|
310
|
-
| ID | Priority | Location | Summary |
|
|
311
|
-
|---|---|---|---|
|
|
312
|
-
| None | — | — | No architectural regressions identified in this review window. |
|
|
313
|
-
|
|
314
|
-
No findings.
|
|
315
|
-
|
|
316
|
-
**N/A items**: Dependency management (no new runtime dependency), API boundaries (no schema changes), migration path (no migrations), observability hooks (no new production observability path).
|
|
317
|
-
|
|
318
|
-
### Security
|
|
319
|
-
|
|
320
|
-
| ID | Priority | Location | Summary |
|
|
321
|
-
|---|---|---|---|
|
|
322
|
-
| None | — | — | No new security-sensitive input paths or secret-handling changes were introduced. |
|
|
323
|
-
|
|
324
|
-
No findings.
|
|
325
|
-
|
|
326
|
-
**N/A items**: Authentication/authorization (plugin runtime unchanged), command execution, HTML rendering, SQL/query surfaces (not present in this change).
|
|
327
|
-
|
|
328
|
-
### Data Integrity / Privacy
|
|
329
|
-
|
|
330
|
-
| ID | Priority | Location | Summary |
|
|
331
|
-
|---|---|---|---|
|
|
332
|
-
| None | — | — | No direct data persistence, migration, or data model changes in this initiative. |
|
|
333
|
-
|
|
334
|
-
No findings.
|
|
335
|
-
|
|
336
|
-
**N/A items**: Transactionality, soft deletes, retention policy, exports (no persisted data or new persistence surface introduced).
|
|
337
|
-
|
|
338
|
-
### Simplicity
|
|
339
|
-
|
|
340
|
-
| ID | Priority | Location | Summary |
|
|
341
|
-
|---|---|---|---|
|
|
342
|
-
| None | — | — | The change set is narrowly scoped and follows existing TypeScript patterns. |
|
|
343
|
-
|
|
344
|
-
No findings.
|
|
345
|
-
|
|
346
|
-
**N/A items**: Speculative abstractions (no speculative architecture added), circular abstractions (none), one-off style divergence (minimal and scoped to plugin smoke/README evidence).
|
|
347
|
-
|
|
348
|
-
### Summary
|
|
349
|
-
|
|
350
|
-
0 critical, 0 high, 0 medium, 0 low after re-review of this batch.
|
|
351
|
-
|
|
352
|
-
### Gate Decision
|
|
353
|
-
|
|
354
|
-
**PASS** — plugin contract behavior is now covered by a non-mocked execution-level smoke test (`tests/plugin-smoke.test.ts`) that validates real registration, scan, redact, and hook outcomes.
|
|
355
|
-
|
|
356
|
-
Medium/low findings to tech debt tracker: none.
|
|
357
|
-
|
|
358
|
-
## Verify/Release Decision
|
|
359
|
-
|
|
360
|
-
- decision: GO
|
|
361
|
-
- date: 2026-02-16T18:07:00Z
|
|
362
|
-
- open findings by priority (if any): none
|
|
363
|
-
- evidence:
|
|
364
|
-
- `npm test`
|
|
365
|
-
- `npm run test:plugin-smoke`
|
|
366
|
-
- `npm run build`
|
|
367
|
-
- `npm pkg get openclaw`
|
|
368
|
-
- node import smoke check (`true fogclaw FogClaw`)
|
|
369
|
-
- `gh pr checks` (all current checks green)
|
|
370
|
-
- rollback: restore commit `6a76311` and rerun evidence sequence
|
|
371
|
-
- post-release checks: run `npm test`, `npm run test:plugin-smoke`, and rerun `gh pr checks` on `main` after merge
|
|
372
|
-
- owner: sidmohan
|
|
373
|
-
|
|
374
|
-
## Revision Notes
|
|
375
|
-
|
|
376
|
-
- 2026-02-16T17:50:00Z: Aligned planning scope to `@openclaw/fogclaw` explicitly based on user instruction; marked `@datafog/fogclaw` as historical/out-of-scope for this iteration.
|
|
377
|
-
- 2026-02-16T17:50:15Z: Replaced incomplete/partial plan draft with a complete PLANS.md-compliant structure, including all required sections and milestone sequence.
|
|
378
|
-
- 2026-02-16T17:53:20Z: Completed end-of-`he-plan` domain-doc population (`docs/SECURITY.md`, `docs/RELIABILITY.md`) with repository-specific submission-safety rules and recovery/rollback guidance.
|
|
379
|
-
- 2026-02-16T17:55:50Z: Executed he-plan follow-through by adding package identity + lockfile alignment for `@openclaw/fogclaw`, adding `tests/plugin-smoke.test.ts` for hook/tool contract verification, and documenting submission-ready evidence commands in `README.md`.
|
|
380
|
-
- 2026-02-16T17:56:20Z: Completed he-implement handoff actions and baseline evidence checks in preparation for review.
|
|
381
|
-
- 2026-02-16T17:59:00Z: Ran `he-review`, recorded blocking finding `C-1` and returned to implementation for remediation.
|
|
382
|
-
- 2026-02-16T18:00:10Z: Addressed `C-1` by rewriting plugin contract smoke test to non-mocked execution and updated gate-related plan sections.
|
|
383
|
-
- 2026-02-16T18:05:00Z: Re-ran full evidence sequence (`npm test`, `npm run build`, `npm run test:plugin-smoke`) and cleared review block in plan.
|
|
384
|
-
- 2026-02-16T18:05:00Z: Follow-up `he-review` pass completed with PASS; no open findings.
|
|
385
|
-
- 2026-02-16T18:07:00Z: Completed `he-github` PR open + `gh pr checks` pass; transitioned to `he-verify-release` with no open findings.
|
|
386
|
-
- 2026-02-17T01:53:23Z: PR merged to `main` on DataFog/fogclaw (`#1`) after required checks remained green.
|