pluribus-context 0.3.16 → 0.3.17
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 +7 -0
- package/docs/portability-fidelity-report.md +13 -1
- package/package.json +1 -1
- package/src/commands/audit.js +62 -4
- package/src/utils/version.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
All notable changes to Pluribus are documented here.
|
|
6
6
|
|
|
7
|
+
## 0.3.17 — native discovery fidelity evidence
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Extend `pluribus audit --fidelity-report` with `nativeDiscoverySurface`, `resolutionAnchor`, `genericFallback`, `manualActivationRequired`, and `semanticDifference` fields so reviewers can distinguish copied files from target-native discovery and semantic preservation.
|
|
12
|
+
- Document the new fidelity report fields for rule/skill bundle maintainers reviewing multi-agent installer claims.
|
|
13
|
+
|
|
7
14
|
## 0.3.16 — audit fidelity evidence
|
|
8
15
|
|
|
9
16
|
### Added
|
|
@@ -75,11 +75,23 @@ Pluribus is intentionally narrower than a skill registry or memory layer:
|
|
|
75
75
|
- `pluribus.md` keeps the claim in one reviewed source of truth.
|
|
76
76
|
- `sync --dry-run` previews target-specific outputs before writing files.
|
|
77
77
|
- generated files carry a warning header so manual edits are visible.
|
|
78
|
-
- `audit --json --fidelity-report` gives CI/reviewers a machine-readable check for missing/drifted outputs plus target-by-target section loss, activation shape, and portability warnings.
|
|
78
|
+
- `audit --json --fidelity-report` gives CI/reviewers a machine-readable check for missing/drifted outputs plus target-by-target section loss, activation shape, native discovery surface, resolution anchor, generic fallback status, and portability warnings.
|
|
79
79
|
- remote imports are opt-in, locked, cached, and digest-checked before becoming shared context.
|
|
80
80
|
|
|
81
81
|
That does **not** prove runtime behavior. You still need tool-specific smoke tests for load order, path/glob activation, available tools, MCP servers, and permission semantics.
|
|
82
82
|
|
|
83
|
+
### Fields to inspect in `fidelityReport.targets[]`
|
|
84
|
+
|
|
85
|
+
For each selected target, the JSON report includes:
|
|
86
|
+
|
|
87
|
+
- `nativeDiscoverySurface` — the file or directory pattern the target normally discovers, such as `CLAUDE.md`, `.cursorrules`, `.github/copilot-instructions.md`, or `AGENTS.md`.
|
|
88
|
+
- `resolutionAnchor` — where the generated surface is resolved from today (`repo-root` for built-in targets).
|
|
89
|
+
- `genericFallback` — whether the output is a broad agent fallback surface rather than a target-specific native surface.
|
|
90
|
+
- `manualActivationRequired` — whether Pluribus knows the output requires manual activation after generation. Built-in project-wide targets are currently `false`; future scoped/skill targets may differ.
|
|
91
|
+
- `semanticDifference` — a compact list such as `section-loss`, `project-wide-only`, or `generic-agent-file` so reviewers can distinguish “file exists” from “same behavior is preserved.”
|
|
92
|
+
|
|
93
|
+
These fields are intentionally boring. They help reviewers catch cases like “installed files exist but the agent will not discover them,” or “two targets share a generic file but do not actually have the same loading semantics.”
|
|
94
|
+
|
|
83
95
|
## Suggested workflow for maintainers
|
|
84
96
|
|
|
85
97
|
1. Put the portability claim in the canonical source.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pluribus-context",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.17",
|
|
4
4
|
"description": "AI context/rules sync for CLAUDE.md, Claude Code, Cursor rules, Copilot instructions, OpenClaw, Windsurf, Continue, and Zed.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/caioribeiroclw-pixel/pluribus#readme",
|
package/src/commands/audit.js
CHANGED
|
@@ -289,11 +289,21 @@ function buildFidelityReport({ cwd, sections, tools, loadSkill }) {
|
|
|
289
289
|
const representedSections = new Set([...(skill?.required || []), ...(skill?.optional || [])].map((name) => name.toLowerCase()))
|
|
290
290
|
const unsupportedSections = presentSections.filter((name) => !representedSections.has(name.toLowerCase()))
|
|
291
291
|
|
|
292
|
+
const outputFiles = skill?.outputFiles || []
|
|
293
|
+
const activation = inferActivation(toolId, outputFiles)
|
|
294
|
+
const discovery = inferDiscovery(toolId, outputFiles)
|
|
295
|
+
const represented = presentSections.filter((name) => representedSections.has(name.toLowerCase()))
|
|
296
|
+
|
|
292
297
|
return {
|
|
293
298
|
toolId,
|
|
294
|
-
files:
|
|
295
|
-
|
|
296
|
-
|
|
299
|
+
files: outputFiles,
|
|
300
|
+
nativeDiscoverySurface: discovery.nativeDiscoverySurface,
|
|
301
|
+
resolutionAnchor: discovery.resolutionAnchor,
|
|
302
|
+
genericFallback: discovery.genericFallback,
|
|
303
|
+
manualActivationRequired: discovery.manualActivationRequired,
|
|
304
|
+
activation,
|
|
305
|
+
semanticDifference: summarizeSemanticDifference({ unsupportedSections, activation, discovery }),
|
|
306
|
+
representedSections: represented,
|
|
297
307
|
unsupportedSections,
|
|
298
308
|
}
|
|
299
309
|
})
|
|
@@ -356,6 +366,48 @@ function inferActivation(toolId, outputFiles) {
|
|
|
356
366
|
}
|
|
357
367
|
}
|
|
358
368
|
|
|
369
|
+
function inferDiscovery(toolId, outputFiles) {
|
|
370
|
+
const primaryFile = outputFiles[0] || null
|
|
371
|
+
const nativeDiscoverySurfaces = {
|
|
372
|
+
claude: 'CLAUDE.md',
|
|
373
|
+
cursor: '.cursorrules',
|
|
374
|
+
openclaw: 'AGENTS.md',
|
|
375
|
+
copilot: '.github/copilot-instructions.md',
|
|
376
|
+
windsurf: '.windsurf/rules/*.md',
|
|
377
|
+
continue: '.continue/rules/*.md',
|
|
378
|
+
zed: '.rules',
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return {
|
|
382
|
+
nativeDiscoverySurface: nativeDiscoverySurfaces[toolId] || primaryFile,
|
|
383
|
+
resolutionAnchor: primaryFile ? 'repo-root' : 'unknown',
|
|
384
|
+
genericFallback: toolId === 'openclaw',
|
|
385
|
+
manualActivationRequired: false,
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
function summarizeSemanticDifference({ unsupportedSections, activation, discovery }) {
|
|
390
|
+
const differences = []
|
|
391
|
+
|
|
392
|
+
if (unsupportedSections.length > 0) {
|
|
393
|
+
differences.push('section-loss')
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if (activation.kind === 'flat-project-wide') {
|
|
397
|
+
differences.push('project-wide-only')
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
if (discovery.genericFallback) {
|
|
401
|
+
differences.push('generic-agent-file')
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if (discovery.manualActivationRequired) {
|
|
405
|
+
differences.push('manual-activation-required')
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
return differences.length > 0 ? differences : ['no-known-template-loss']
|
|
409
|
+
}
|
|
410
|
+
|
|
359
411
|
function printFidelityReport(report) {
|
|
360
412
|
console.log('')
|
|
361
413
|
console.log('Fidelity report:')
|
|
@@ -366,7 +418,13 @@ function printFidelityReport(report) {
|
|
|
366
418
|
const unsupported = target.unsupportedSections.length > 0
|
|
367
419
|
? `; unsupported sections: ${target.unsupportedSections.join(', ')}`
|
|
368
420
|
: '; no known section loss'
|
|
369
|
-
|
|
421
|
+
const discovery = target.nativeDiscoverySurface
|
|
422
|
+
? `; surface: ${target.nativeDiscoverySurface}`
|
|
423
|
+
: ''
|
|
424
|
+
const semantics = target.semanticDifference?.length
|
|
425
|
+
? `; semantic: ${target.semanticDifference.join(', ')}`
|
|
426
|
+
: ''
|
|
427
|
+
console.log(` • ${target.toolId}: ${target.activation.kind}${discovery}${unsupported}${semantics}`)
|
|
370
428
|
}
|
|
371
429
|
|
|
372
430
|
for (const warning of report.warnings) {
|
package/src/utils/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.3.
|
|
1
|
+
export const VERSION = '0.3.17'
|