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 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
  [![Building in Public](https://img.shields.io/badge/building-in%20public-orange?style=flat-square)](https://x.com/RibeiroCaioCLW)
7
7
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)
8
8
 
9
- > Intentional context across every AI tool you use.
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, then syncs that context into the formats each AI tool expects.
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.16",
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",
@@ -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: skill?.outputFiles || [],
295
- activation: inferActivation(toolId, skill?.outputFiles || []),
296
- representedSections: presentSections.filter((name) => representedSections.has(name.toLowerCase())),
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
- console.log(` • ${target.toolId}: ${target.activation.kind}${unsupported}`)
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) {
@@ -1 +1 @@
1
- export const VERSION = '0.3.16'
1
+ export const VERSION = '0.3.18'