pluribus-context 0.3.16 → 0.3.18
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 +14 -0
- package/README.md +4 -4
- package/docs/portability-fidelity-report.md +13 -1
- package/package.json +10 -3
- package/src/commands/audit.js +62 -4
- package/src/utils/version.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
All notable changes to Pluribus are documented here.
|
|
6
6
|
|
|
7
|
+
## 0.3.18 — fidelity audit discovery positioning
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Reposition npm and README copy around AI-agent context fidelity audit and semantic drift detection, so package/directory discovery surfaces see the current wedge before generic context sync.
|
|
12
|
+
- Track npm/GitHub discovery queries for `AI agent context fidelity audit` and `semantic drift agent context`, making the new positioning falsifiable instead of subjective.
|
|
13
|
+
|
|
14
|
+
## 0.3.17 — native discovery fidelity evidence
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- 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.
|
|
19
|
+
- Document the new fidelity report fields for rule/skill bundle maintainers reviewing multi-agent installer claims.
|
|
20
|
+
|
|
7
21
|
## 0.3.16 — audit fidelity evidence
|
|
8
22
|
|
|
9
23
|
### Added
|
package/README.md
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
[](https://x.com/RibeiroCaioCLW)
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
|
|
9
|
-
>
|
|
9
|
+
> Detect where AI-agent context loses fidelity across tools — then sync the parts that can be safely shared.
|
|
10
10
|
|
|
11
|
-
Pluribus (`pluribus-context` on npm, `pluribus` on the command line) is an AI context sync CLI for teams and projects that use Claude Code, Cursor, GitHub Copilot, OpenClaw, Windsurf, Continue, or Zed.
|
|
11
|
+
Pluribus (`pluribus-context` on npm, `pluribus` on the command line) is an AI context sync CLI with AI-agent context fidelity audit for teams and projects that use Claude Code, Cursor, GitHub Copilot, OpenClaw, Windsurf, Continue, or Zed.
|
|
12
12
|
|
|
13
|
-
It keeps project instructions, conventions, constraints, and team context in one versioned source of truth
|
|
13
|
+
It shows where instructions keep their semantics, where they are downgraded to a generic fallback, and where manual activation or native discovery matters — then keeps project instructions, conventions, constraints, and team context in one versioned source of truth.
|
|
14
14
|
|
|
15
15
|
It is **not** a persistent memory layer, retrieval system, agent orchestrator, or agent-merging framework. Think `CLAUDE.md`, `.cursorrules`, `copilot-instructions.md`, `AGENTS.md` — one intentional context, multiple generated outputs.
|
|
16
16
|
|
|
17
|
-
**Reviewer shortcut:** evaluating Pluribus for a list, newsletter, package roundup, or tool directory? Use the [Community Review Packet](docs/community-review-packet.md) for copy-paste directory submission fields, safety/removability notes, feedback links, and a disposable 60-second smoke test.
|
|
17
|
+
**Reviewer shortcut:** evaluating Pluribus for a list, newsletter, package roundup, or tool directory? Use the [Community Review Packet](docs/community-review-packet.md) for copy-paste directory submission fields, safety/removability notes, feedback links, and a disposable 60-second smoke test. If you only run one command, try `npx --yes pluribus-context@latest audit --json --fidelity-report` to see native discovery surfaces, generic fallbacks, manual activation requirements, and semantic differences.
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
@@ -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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pluribus-context",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "AI context/rules sync for CLAUDE.md, Claude Code, Cursor rules, Copilot instructions, OpenClaw, Windsurf, Continue, and Zed.",
|
|
3
|
+
"version": "0.3.18",
|
|
4
|
+
"description": "AI context/rules sync and fidelity audit CLI for CLAUDE.md, Claude Code, Cursor rules, Copilot instructions, OpenClaw, Windsurf, Continue, and Zed semantic drift.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/caioribeiroclw-pixel/pluribus#readme",
|
|
7
7
|
"repository": {
|
|
@@ -70,7 +70,14 @@
|
|
|
70
70
|
"windsurf",
|
|
71
71
|
"windsurf-rules",
|
|
72
72
|
"zed",
|
|
73
|
-
"zed-rules"
|
|
73
|
+
"zed-rules",
|
|
74
|
+
"fidelity-audit",
|
|
75
|
+
"context-fidelity",
|
|
76
|
+
"semantic-drift",
|
|
77
|
+
"semantic-loss",
|
|
78
|
+
"native-discovery",
|
|
79
|
+
"agent-context-audit",
|
|
80
|
+
"agent-memory"
|
|
74
81
|
],
|
|
75
82
|
"author": "Caio Ribeiro",
|
|
76
83
|
"license": "MIT",
|
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.18'
|