@papi-ai/server 0.7.84 → 0.7.85

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/dist/prompts.js CHANGED
@@ -30,7 +30,11 @@ The guard above says what to reject. This says what to propose. Rejecting is not
30
30
 
31
31
  **Copy variants are NEVER decisions.** A tagline, a headline, a value proposition, a piece of marketing or product wording: swapping one for another constrains no future work, so it fails test (b) outright. Wording changes as often as the market teaches you something, and routing every edit through decision ceremony is what buries the handful of decisions that genuinely constrain the project. Edit the wording where the wording lives. If two variants are being compared against a measurement, that is an experiment, not a decision.
32
32
 
33
- **A decision decaying into a convention is the healthy path, not a failure.** When a live AD stops being arguable \u2014 the alternatives are no longer on the table and nobody would re-litigate it \u2014 say so during housekeeping and propose retiring it into a convention. An AD registry where most entries are settled is one nobody reads.`;
33
+ **A decision decaying into a convention is the healthy path, not a failure.** When a live AD stops being arguable \u2014 the alternatives are no longer on the table and nobody would re-litigate it \u2014 propose demoting it during housekeeping with \`action: "demote"\`. An AD registry where most entries are settled is one nobody reads.
34
+
35
+ DEMOTION IS THE THIRD TRANSITION, and it is not either of the other two. \`supersede\` replaces a stance with a NEW one; \`delete\` removes something that was never a decision. \`demote\` is for a decision that was RIGHT and still holds \u2014 it keeps riding every build handoff as a convention and simply stops occupying decision surface. Apply test (c) to each live AD: could a competent person argue the other side TODAY, on current evidence? If no, propose \`demote\` and give the one-line reason it is no longer contested.
36
+
37
+ PROPOSE, NEVER ASSUME. A demotion is a judgement about whether something is still arguable, and the owner is the one who knows. Surface candidates with reasoning and let the human confirm on apply, exactly as board corrections and cancellations are gated. Do not demote in bulk to tidy the registry.`;
34
38
  var AD_CONFLICT_SURFACING_RULES = `**A contradiction is NOT a veto \u2014 surface it, never silently shelve it.**
35
39
 
36
40
  Active Decisions are *active*: they can be superseded, modified, or abandoned. You do NOT have authority to kill a piece of work simply because it cuts against one. That is the user's call, and they can only make it if you show it to them.
@@ -1017,7 +1021,7 @@ After your natural language output, include this EXACT format on its own line:
1017
1021
  "activeDecisionUpdates": [
1018
1022
  {
1019
1023
  "id": "string \u2014 AD-N (existing) or new AD-N (for new decisions)",
1020
- "action": "confidence_change | modify | resolve | supersede | new | delete",
1024
+ "action": "confidence_change | modify | resolve | supersede | new | delete | demote",
1021
1025
  "body": "string \u2014 full AD block including ### heading, confidence tag, and body text (empty string for delete)",
1022
1026
  "evidenceRef": "string (optional) \u2014 for DELIBERATE decisions (modify / resolve / delete = validate/modify/invalidate), a pointer to the evidence that justified the change: a doc path (docs/research/foo.md), a build-report id, or a metric name. Builds the decision->outcome ledger. Omit if no concrete evidence.",
1023
1027
  "metricDelta": "object (optional) \u2014 { "metric": string, "before": number, "after": number, "delta": number } \u2014 which metric moved and by how much. Use a REAL metric name from cycle_metrics_snapshots where possible (e.g. scope_accuracy, velocity, est_actual_drift). Omit if no metric moved."
@@ -1269,7 +1273,7 @@ After your natural language output, include this EXACT format on its own line:
1269
1273
  "activeDecisionUpdates": [
1270
1274
  {
1271
1275
  "id": "string \u2014 AD-N (existing) or new AD-N (for new decisions)",
1272
- "action": "confidence_change | modify | resolve | supersede | new | delete",
1276
+ "action": "confidence_change | modify | resolve | supersede | new | delete | demote",
1273
1277
  "body": "string \u2014 full AD block including ### heading, confidence tag, and body text (empty string for delete)",
1274
1278
  "evidenceRef": "string (optional) \u2014 for DELIBERATE changes (modify / resolve / delete), a pointer to the justifying evidence: a doc path, a build-report id, or a metric name. Builds the decision->outcome ledger. Omit if none.",
1275
1279
  "metricDelta": "object (optional) \u2014 { "metric": string, "before": number, "after": number, "delta": number } \u2014 which metric moved. Prefer a real metric name from cycle_metrics_snapshots. Omit if none."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@papi-ai/server",
3
- "version": "0.7.84",
3
+ "version": "0.7.85",
4
4
  "description": "PAPI MCP server — AI-powered sprint planning, build execution, and strategy review for software projects",
5
5
  "license": "Elastic-2.0",
6
6
  "mcpName": "io.github.getpapi/papi",
@@ -51,9 +51,9 @@
51
51
  "dependencies": {
52
52
  "@anthropic-ai/sdk": "^0.82.0",
53
53
  "@modelcontextprotocol/sdk": "^1.27.1",
54
- "@papi-ai/adapter-pg": "^0.2.15",
55
- "@papi-ai/shared": "^0.2.4",
56
- "@papi-ai/skills": "^0.1.0",
54
+ "@papi-ai/adapter-pg": "^0.2.16",
55
+ "@papi-ai/shared": "^0.2.5",
56
+ "@papi-ai/skills": "^0.1.4",
57
57
  "js-yaml": "^4.1.0"
58
58
  },
59
59
  "devDependencies": {