fdeops 4.0.1 → 4.0.2
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/bin/fde.js +2 -2
- package/bin/lib/context.js +3 -0
- package/mcp/fdeops-ingest/package.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/fde/references/audit.md +1 -1
- package/templates/.fde/success.md +3 -1
package/bin/fde.js
CHANGED
|
@@ -846,7 +846,7 @@ function parseReality(md, maxLen) {
|
|
|
846
846
|
if (prose) {
|
|
847
847
|
return {
|
|
848
848
|
line: '',
|
|
849
|
-
missing: 'UNREADABLE - reality.md does not match the schema
|
|
849
|
+
missing: 'UNREADABLE - reality.md does not match the schema. Use **Working theory:** / **Evidence:** / **Differs from brief how:** from templates/.fde/reality.md. Not showing the brief as truth.',
|
|
850
850
|
}
|
|
851
851
|
}
|
|
852
852
|
return { line: '', missing: '' }
|
|
@@ -2880,7 +2880,7 @@ function successContractIssues(success) {
|
|
|
2880
2880
|
if (explicit) return explicit[1].trim().length > 3 && target.test(explicit[2])
|
|
2881
2881
|
const stimulus = /\b(?:test|drill|replay|runs?|request|sample|given|when|simulate|inject|compare|restore|verified|observed|measured)\b/i.test(check)
|
|
2882
2882
|
|| /^\d+\s+[a-z]/i.test(check)
|
|
2883
|
-
const result = /\b(?:returns?|rejects?|matches?|equals?|arrives?|alerts?|restores?|passes?|fails?|contains?|produces?|shows?|remains?|receives
|
|
2883
|
+
const result = /\b(?:returns?|rejects?|matches?|equals?|arrives?|alerts?|restores?|passes?|fails?|contains?|produces?|shows?|remains?|receives?|observe)\b/i.test(check)
|
|
2884
2884
|
|| /\b(?:zero|no duplicate|no missing)\s+[a-z]/i.test(check)
|
|
2885
2885
|
return stimulus && result && target.test(check)
|
|
2886
2886
|
})
|
package/bin/lib/context.js
CHANGED
|
@@ -33,6 +33,9 @@ function boundedSections(sections, maxBytes = DEFAULT_BYTES) {
|
|
|
33
33
|
const footer = '\n\nCONTEXT: selected excerpts, not the complete record or proof of approval. Use fde recall <topic> for relevant evidence. If policy or constraints are truncated, retrieve them before acting. Verify conflicting decisions.\n'
|
|
34
34
|
let out = ''
|
|
35
35
|
const filled = sections.filter(s => s && s.trim())
|
|
36
|
+
// Preserve complete packets before allocating fair shares to oversized ones.
|
|
37
|
+
const complete = filled.join('\n\n') + footer
|
|
38
|
+
if (Buffer.byteLength(complete) <= maxBytes) return complete
|
|
36
39
|
for (let i = 0; i < filled.length; i++) {
|
|
37
40
|
const available = maxBytes - Buffer.byteLength(out + footer) - 2
|
|
38
41
|
const share = Math.max(0, Math.floor(available / (filled.length - i)))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fdeops",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Client delivery tools for Forward Deployed Engineers. One @fde skill, local Markdown engagement records, and an offline dashboard for decisions, evidence, approvals, and next actions.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"fdeops": "bin/install.js",
|
package/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "fdeops",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.2",
|
|
5
5
|
"description": "Forward deployed engineering skills for AI coding agents. One @fde skill for the client work around the code. You confirm; then it lands in .fde/ on your laptop.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Subash Natarajan",
|
|
@@ -49,7 +49,7 @@ That's the load-bearing wall. Also establish: the single highest risk right now
|
|
|
49
49
|
|
|
50
50
|
**`terrain.md`** - the map as understood now. Honest beats complete: mark unknowns explicitly.
|
|
51
51
|
|
|
52
|
-
**`reality.md`** - real problem vs stated brief, even if the delta is small.
|
|
52
|
+
**`reality.md`** - real problem vs stated brief, even if the delta is small. Preserve the initialized template. If creating or repairing the file, put each bold colon field on its own line with its content after the label: `**Working theory:**`, `**Evidence:**`, `**Differs from brief how:**`.
|
|
53
53
|
|
|
54
54
|
**`context.md`** - updated so anyone walking in is operational in five minutes.
|
|
55
55
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Success definition
|
|
2
2
|
|
|
3
|
-
<!-- Agreed definition of done. Out-of-scope is as important as in-scope.
|
|
3
|
+
<!-- Agreed definition of done. Out-of-scope is as important as in-scope.
|
|
4
|
+
Example for Done when: Input: replay duplicate event A twice and unique B on staging. Pass when: exactly one dispatch per ID is observed.
|
|
5
|
+
Record the customer-side signer separately; this check is not evidence of acceptance. -->
|
|
4
6
|
|
|
5
7
|
**Done when:**
|
|
6
8
|
**Primary value bucket:** <!-- cost-save | risk-mitigation | revenue-uplift (pick one) -->
|