Jarvis Docs
Playbooks

Feature Discovery Nudges Operations

How to interpret advisory discovery signals, ranking posture, suppression state, and acceptance routes

Feature Discovery Nudges Operations

Phase 10.2 adds the canonical advisory discovery runtime that turns registry eligibility, discovery-policy posture, and governed ranking signals into feature-discovery nudges. Phase 10.3 projects that same runtime into the marketplace web surface and the nous pkg discover CLI seam. This playbook explains how to interpret those records when they surface in logs, diagnostics, or those user-facing projections.

For registry trust and install eligibility, see Runtime Membrane Operations. For confidence-governance outcomes attached to ranking decisions, see Confidence Governance Operations.

Runtime Scope

The nudge runtime is advisory only.

  • It can record signals, generate candidates, rank them, apply suppression, and record delivery outcomes.
  • It can route acceptance into a lifecycle authorization intent for marketplace packages.
  • It cannot install, enable, dispatch, or execute directly.

If an operator or downstream surface treats a nudge as a direct execution path, that is a contract violation.

Delivery Surfaces

Phase 10.3 adds two operator-facing delivery seams over the same canonical nudge runtime:

  • Marketplace web surface for browse, detail, moderation, and advisory discovery cards
  • nous pkg discover CLI seam for terminal-first suggestion review and suppression

Both surfaces:

  • Read the same canonical discovery feed
  • Show mandatory suppression controls
  • Write feedback and suppression mutations back through the same runtime services
  • Remain advisory-only

If the web surface and CLI appear to disagree, treat that as a projection bug and compare the canonical feed, suppression, and feedback records first.

Signal Families

The runtime currently records four signal families:

Signal typeMeaningTypical example
workflow_frictionA workflow step is repeatedly slow, blocked, or awkwardRepeated retries around the same manual step
missing_capabilityThe current project lacks a capability that a package or template could provideA workflow wants package behavior that is not installed
manual_workaroundThe user or workflow keeps repeating manual steps that should be automatableRepeated copy/paste or handoff work
benchmark_gapBenchmarks show a meaningful capability gap compared with the desired outcomeQuality or throughput repeatedly misses target

Signal records are not recommendations by themselves. They are evidence-linked inputs to candidate generation.

Candidate and Eligibility Interpretation

Generated candidates wrap the baseline nudge object with runtime context:

  • registry install-eligibility posture when the source is a marketplace package
  • discovery explainability when cross-project relevance contributed context
  • policy-denial posture when discovery inputs were filtered
  • runtime reason codes and evidence refs

Common candidate reason codes

Reason codeMeaningOperator interpretation
NDG-CANDIDATE-ELIGIBLECandidate remained eligible after runtime checksCandidate may proceed to ranking
NDG-CANDIDATE-BLOCKED-REGISTRYRegistry trust, metadata, moderation, or distribution posture blocks the candidateDo not treat the candidate as deliverable until registry posture changes
NDG-CANDIDATE-BLOCKED-COMPATIBILITYCompatibility posture blocks the candidateRuntime correctly failed closed before delivery
NDG-CANDIDATE-BLOCKED-POLICY-DENIALCross-project discovery inputs were denied by policyTreat as privacy boundary enforcement, not a weak recommendation

Blocked candidates may still appear in diagnostics or audit state, but they must not be treated as deliverable suggestions.

Ranking Policy and Score Components

Ranking decisions are governed by an explicit ranking-policy record. There is no local tuning knob and no hidden override path.

Each ranked decision carries seven score components:

ComponentMeaning
relevanceHow closely the candidate matches the detected need
expected_outcome_gainExpected improvement if the user follows the suggestion
trust_confidenceConfidence in package/source trust posture
compatibility_confidenceConfidence that the candidate fits the runtime posture
noveltyWhether the candidate is meaningfully new rather than repetitive
fatigue_penaltyDown-rank for repeated or recently ignored suggestions
risk_penaltyDown-rank for higher governance or delivery risk

Ranking and delivery reason codes

Reason codeMeaningOperator interpretation
NDG-RANK-POLICY-VERSION-APPLIEDA governed ranking policy version was appliedExpected path for any successful ranking
NDG-RANK-BLOCKED-MISSING-POLICYRuntime could not resolve an active ranking policyFail closed; repair policy state before retrying
NDG-DELIVERY-ALLOWEDCandidate remained deliverable after ranking and suppression checksSurface may render the suggestion
NDG-DELIVERY-BLOCKED-CONFIDENCEConfidence-governance posture blocked deliveryReview attached confidence-governance outcome before retrying
NDG-DELIVERY-BLOCKED-SUPPRESSIONSuppression state blocked deliveryRespect suppression; do not re-render on another surface
NDG-DELIVERY-BLOCKED-AUTHORITYA downstream authority boundary blocked deliveryTreat as fail-closed governance, not a transient rendering issue

Suppression Semantics

Suppression state is canonical runtime truth, not a UI-local preference cache.

ActionScopeMeaning
dismiss_oncecandidateHide this exact candidate fingerprint once
snoozecandidate with expires_atTemporarily hide the candidate until the snooze expires
mute_categorycategoryHide this candidate source class across enabled surfaces
mute_projectprojectHide nudges for the current project scope
mute_globalglobalHide nudges across all project scopes and surfaces

Important rules:

  • Suppression applies across delivery surfaces, not only the surface where it was created.
  • Expired snoozes reactivate automatically.
  • Candidate-scoped dismissals must not over-mute category, project, or global state.
  • Delivery-block records are first-class outputs; absence of a card is not the only signal.
  • Marketplace pages and nous pkg discover should therefore converge on the same suppression posture for the same project and candidate inputs.

Acceptance Routes

Accepted nudges do not execute directly. They resolve to one of three route types:

RouteSource typesMeaning
runtime_authorization_requiredmarketplace_packageRuntime recorded a lifecycle authorization intent; package install/enable still goes through the existing membrane and lifecycle gates
workflow_template_draftworkflow_templateRuntime recorded draft intent only; no template is executed automatically
advisory_acknowledgedruntime_tip, first_party_guidanceRuntime recorded the acknowledgment as advisory evidence only

Acceptance reason codes

Reason codeMeaning
NDG-ACCEPTANCE-ROUTED-RUNTIME-AUTHMarketplace-package acceptance was routed into runtime authorization intent
NDG-ACCEPTANCE-RECORDED-ADVISORYAcceptance was recorded as draft/advisory acknowledgement without execution
  1. Check whether the candidate was blocked before ranking. If NDG-CANDIDATE-BLOCKED-* is present, stop there.
  2. If ranked, read the applied policy version and the seven component scores before interpreting rank position.
  3. Review suppression and delivery-block reason codes before assuming a missing suggestion is a marketplace-web or CLI defect.
  4. If the suggestion came from the CLI seam, confirm the displayed trust-eligibility posture matches the current canonical feed rather than re-deriving it locally.
  5. For marketplace-package acceptance, follow the normal lifecycle authorization path. Do not install directly from the nudge record.
  6. For policy-denial or confidence-governance blocks, fix the governing condition rather than retrying the same delivery path.

Quick Reference

  • Signals describe detected need; they are not recommendations yet.
  • Candidate blocking is fail-closed and authoritative.
  • Ranking is governed by explicit policy version records.
  • Suppression is cross-surface runtime truth.
  • Acceptance records intent; execution still belongs to existing authorization paths.

On this page