Visual for ALP Learning Pipeline ALP The Agent Learning Pipeline is Nova’s quality process for turning observations into reliable learning candidates. Overview Decides Agent model Agent flow Learning states Failure rules MCP contract Agent Tools

ALP

ALP stands for Agent Learning Pipeline. Nova uses ALP to move from observed website work to reviewed, explainable, and revalidatable knowledge.

ALP sits between live observations and PKS. It looks for repeated evidence, proposes learning opportunities, writes candidates, checks promotion gates, records feedback, and revalidates stored knowledge against a current page.

The important boundary is simple: repeated behavior is not automatically reliable knowledge. ALP separates a useful signal from an executable orientation by making the evidence state explicit.

ALP also supports Learn Mode. When an agent maps a platform, Nova can require a structured playbook and coverage floors before the learning task is treated as complete.

In short

  • ALP is Nova’s quality path for learning from repeated website work.
  • Suggestions and proposals are evidence, not permission to act.
  • Generated candidates can start as review knowledge and only become active after promotion gates pass.
  • Active PKS knowledge still needs current-page confirmation before it can guide action.
  • Revalidation checks whether stored signals still fit without executing the stored playbook.
  • Learn Mode adds coverage floors and a fixed platform-playbook deliverable for exploration tasks.

What ALP decides

ALP is a review loop. It decides whether observed work is only noise, a learning opportunity, a candidate, active guidance, or stale knowledge that needs repair.

  1. Pattern Is the same website situation, selector behavior, blocker, or successful action recurring often enough to deserve attention?
  2. Proposal Can the evidence become a structured PKS candidate, domain hint, or patch without guessing unsupported selectors or outcomes?
  3. Promotion Does the candidate have enough support, success evidence, confidence, and low drift to move from candidate to shadow or active knowledge?
  4. Regression Has active knowledge started failing, drifting, or disappearing often enough to be demoted, deprecated, or revalidated before use?
  5. Coverage Has a Learn Mode task explored enough surfaces and interactions to produce a useful platform playbook instead of a shallow tour?

When this matters

ALP matters when Nova should leave useful knowledge behind: platform mapping, repeated automation work, consent or login friction, selector repair, recurring blockers, or any task where future agents should understand why a pattern is reliable instead of rediscovering it from scratch.

Knowledge model for agents

For an agent, ALP answers four questions: what evidence exists, what maturity state it has, what gate is blocking or approving it, and what feedback must be written after use or rejection?

Observation cluster
A repeated pattern of website events, such as successful dismissals, selector failures, drift signals, or action outcomes grouped by domain context.
Learning opportunity
A ranked signal returned in opportunities[] when ALP sees a pattern worth reviewing.
Proposal
A generated candidate item returned in proposals[]. It can describe a new phenomenon, a domain hint, or a patch to existing knowledge.
Stable ID
A durable identifier such as stableId used for promotion, explanation, feedback, and revalidation.
Learning level
The maturity state of PKS knowledge: candidate, shadow, active, demoted, deprecated, or revived into review.
Gate
A deterministic check behind nova.learn_promote or nova.explain. Gates compare support, success, failure, drift, sessions, and confidence.
Semantic opportunity
A runtime prompt in pksSemanticLearning for richer patterns such as consent dialogs, login walls, or risky repeats.
Learn Mode coverage
The exploration counters in learnMode.progress that prevent a platform-learning task from ending too early.

How agents use ALP information

ALP gives agents a learning route, not a shortcut. The agent reads evidence, generates or reviews candidates, promotes only through gates, and treats active knowledge as orientation that still needs current-page proof.

  1. Start Learn Mode when mapping a platform For exploration tasks, the agent calls nova.get_instructions with mode="learn". The expected final artifact is PLATFORM_PLAYBOOK, and learnMode.progress tells whether coverage floors are met.
  2. Read learning opportunities The agent calls nova.learn_suggest with optional scope and limit. The response ranks patterns by support, success, failure, recency, and drift signals.
  3. Generate candidates only for an open scope When an opportunity is worth preserving, nova.learn_generate turns evidence into proposals[] and staged PKS candidates. A write needs a concrete domain scope that is open in a current tab or sandbox.
  4. Explain before promotion Before relying on a candidate, the agent can call nova.explain with stableId and optional observedSignals to see gate status and match confidence.
  5. Promote, demote, or deprecate through gates The agent uses nova.learn_promote. dryRun=true evaluates without writing; a non-dry-run call applies only approved transitions and reports approved, rejected, applied and writeFailed.
  6. Resolve semantic prompts explicitly When a tool response includes pksSemanticLearning, the agent either writes the suggested PKS entry or calls nova.learn_resolve_opportunity with a clear verdict.
  7. Revalidate before trusting stale knowledge The agent calls nova.revalidate with targetId to check stale fingerprints without executing playbooks. The response reports results[], telemetry status, remaining budget, and denial reasons.
  8. Read feedback after changes The agent uses nova.learn_feedback to inspect recent learning events and understand what changed, when, and why.

When ALP state applies

ALP state is about knowledge maturity. It can explain whether a pattern is promising, usable, blocked, stale, or retired, but it does not replace current-page observation or safety approval.

No opportunity count=0
Meaning
ALP found no repeated pattern worth proposing for the requested scope or time window.
Evidence required
No opportunities[] or proposals[] are returned.
Agent behavior
Keep working normally. Do not invent a candidate without repeated evidence.
May guide action
No learning guidance.
Suggested opportunities[]
Meaning
A pattern is visible enough to review, but no PKS candidate has been written yet.
Evidence required
Ranked fields such as supportCount, successCount, failureCount, distinctSessions and scoreBreakdown.
Agent behavior
Inspect the pattern and generate only if it represents reusable website behavior.
May guide action
No.
L0 Candidate generated candidate
Meaning
A PKS candidate or domain hint exists, but it is still review knowledge.
Evidence required
Generated proposals[] with confidence, reason, candidate key, and stable ID.
Agent behavior
Review, explain, and gather more evidence before promoting.
May guide action
No.
L1 Shadow l0_to_l1
Meaning
A candidate passed the first promotion gate and can be evaluated as shadow knowledge.
Evidence required
Support at least 2, success support at least 1, confidence at least 0.70, and evidence score at least 0.55.
Agent behavior
Use for review and matching context; keep current-page confirmation mandatory.
May guide action
Not by itself.
L2 Active l1_to_l2
Meaning
Knowledge passed active promotion and can help orient future matching.
Evidence required
At least 3 successes, at least 2 distinct success sessions, at most 1 failure, and no drift in the last 7 days.
Agent behavior
Use as orientation, then confirm the visible page before acting.
May guide action
Yes, after visible confirmation.
Demoted demotion
Meaning
Previously active knowledge showed drift or repeated failure and was moved back to review.
Evidence required
Hard drift within 24 hours or at least 2 consecutive failures.
Agent behavior
Do not treat it as active guidance; repair or revalidate before use.
May guide action
No.
Deprecated deprecation
Meaning
Knowledge is retired because failure evidence crossed the deprecation threshold.
Evidence required
At least 3 consecutive failures for shadow knowledge or 5 consecutive failures for active knowledge.
Agent behavior
Avoid matching or applying it. Replace only with fresh evidence.
May guide action
No.
Revived revive
Meaning
A deprecated pattern became promising again and can return to shadow review.
Evidence required
At least 2 successes in 30 days, at least 2 distinct success sessions, and no drift in the last 7 days.
Agent behavior
Treat it as review knowledge until active promotion passes again.
May guide action
No, until promoted.

Failure and guard conditions

These are the hard edges an agent or integration should expect from ALP tools.

Condition Observed signal Agent behavior
Unknown argument Most learning tools reject unknown top-level properties. nova.learn_resolve_opportunity validates the required fields and may tolerate unrelated extras for compatibility. Use only the documented arguments for the selected tool.
Missing required scope nova.learn_generate and nova.learn_promote require a domain scope. Pass a concrete domain scope, not an empty string or broad wildcard.
Write scope is not open Generated candidates and non-dry-run promotions can be rejected when the domain is not open in a current tab or sandbox. Open or select the relevant page, or run promotion with dryRun for review only.
Limit outside bounds learn_suggest and learn_generate accept 1-20; learn_feedback accepts 1-100; revalidate accepts 1-5. Lower the requested batch size and retry.
Invalid stable ID filter stableIds must be an array of strings. Empty arrays are rejected; ["all"] evaluates the full scope. Omit stableIds for all entries, pass ["all"], or pass concrete stable IDs.
Invalid transition transition must be l0_to_l1, l1_to_l2, demotion, deprecation or revive. Use a supported transition or omit it to evaluate all applicable transitions.
Dry-run typed as string dryRun must be JSON boolean true or false. Send a real boolean, not "true" or "false" as text.
Explain alias mismatch stableId and stable_id must match when both are provided. observedSignals and observed_signals must also match. Prefer the camelCase names and do not send conflicting aliases.
Revalidation without target nova.revalidate requires targetId. If scope is omitted, the scope is derived from that target. Provide the tab or sandbox target that should be checked.
Revalidation budget or selector denial ok=false, budgetRemaining and denied[] explain budget exhaustion or missing fingerprint selectors. Do not retry in a tight loop. Wait, reduce the batch, or repair the stored fingerprint.
Opportunity resolution invalid opportunityId and verdict are required. reason is optional and capped at 500 characters. Use one of upsert, not_applicable, unsafe, already_known or defer.
Learn coverage floors not met learnMode.progress.allFloorsMet=false or a release error with required and current coverage counters. Continue exploration, or set coverageExhausted=true with coverageExhaustedReason when further coverage is genuinely blocked.

Agent interpretation example

The example shows ALP as a promotion contract: the agent asks for a dry-run promotion, reads the gate decision, and only writes later if the review is correct.

Promotion dry-run request

{
  "tool": "nova.learn_promote",
  "arguments": {
    "scope": "example.com",
    "stableIds": ["lcj_8c1a2f9d44ab"],
    "transition": "l1_to_l2",
    "dryRun": true
  }
}

Relevant response fields

{
  "structuredContent": {
    "ok": true,
    "scope": "example.com",
    "dryRun": true,
    "approved": 1,
    "rejected": 0,
    "applied": 0,
    "writeFailed": 0,
    "total": 1,
    "decisions": [
      {
        "stableId": "lcj_8c1a2f9d44ab",
        "approved": true,
        "applied": false,
        "skippedBecause": "dry_run",
        "reasonKind": "l1_to_l2",
        "fromLevel": 1,
        "toLevel": 2
      }
    ]
  }
}

Agent interpretation

{
  "treatAs": "gate-approved review signal",
  "writeStatus": "not applied because dryRun=true",
  "beforeUse": "confirm the current page still matches the phenomenon",
  "nextStep": "run non-dry-run only if the scope is open and the promotion is intended"
}

MCP contract

This is the deterministic layer below the explanation. It lists ALP fields that agents and integrators should treat as contract signals rather than free prose.

Execution rule: No ALP field may trigger action by itself; learned guidance needs current-page confirmation and the normal safety gates.

Variable Type / values Default Effect
nova.learn_suggest MCP tool; args: scope, limit scope=*; limit=5 Returns ranked opportunities[] from observation clusters and stale PKS candidates. limit must be 1-20.
opportunities[] contextHost, candidateKey, dominantKind, supportCount, successCount, failureCount, distinctSessions, score, suggestion, scoreBreakdown computed Shows why a pattern may deserve learning attention.
nova.learn_generate MCP tool; args: scope, limit scope required; limit=5 Generates candidates or patches and returns generated, proposed and proposals[]. Write requires an open scope.
proposals[] kind, contextHost, candidateKey, confidence, reason, phenomenonType, targetStableId, hintKind computed Describes generated learning candidates before promotion.
nova.learn_promote MCP tool; args: scope, stableIds, transition, dryRun scope required; evaluates all if stableIds omitted; dryRun=false Evaluates promotion, demotion, deprecation, or revive transitions and optionally writes approved changes.
stableIds string[]; concrete IDs or ["all"] omitted means all entries in scope Narrows promotion evaluation to selected stable IDs. Empty arrays are invalid.
transition l0_to_l1 | l1_to_l2 | demotion | deprecation | revive | null null; evaluate all applicable transitions Filters the promotion evaluation to one transition type.
dryRun boolean false When true, evaluates gates without writing transitions.
approved / rejected / applied / writeFailed / total integer counters computed Top-level promotion outcome counts. A clean write has writeFailed=0.
decisions[] stableId, approved, applied, skippedBecause, writeError, reasonKind, fromLevel, toLevel, rejectionReason computed Per-entry promotion decision and write status.
nova.learn_feedback MCP tool; args: scope, since, limit since=last 7 days; limit=20 Returns recent learning event history in events[]. limit must be 1-100.
events[] stableId, contextHost, fromLevel, toLevel, reasonKind, reason, createdAtMs, createdAtUtc computed Shows what changed in learning state and why.
nova.explain MCP tool; args: scope, stableId, observedSignals / observed_signals; runtime alias stable_id scope and schema-canonical stableId required Explains gate status, remediation, and optional fingerprint match confidence for one phenomenon. Prefer stableId because the published schema requires it.
observedSignals / observed_signals string[] aliases optional Optional current-page signals used to compute match breakdown. Aliases must match when both are provided.
explain.gates[] / match gate list; optional match object computed Lists required vs observed gate values and optional signal-level match scores.
nova.revalidate MCP tool; args: targetId, scope, limit targetId required; scope from target if omitted; limit=3 Checks stale PKS fingerprints without executing playbooks. limit must be 1-5.
results[] scope, stableId, verdict, selectorExists, fingerprintMatchRatio, signalsChecked, signalsMatched, error, telemetry* computed Per-phenomenon revalidation result against the current target.
telemetryRecorded / telemetryFailed / budgetRemaining / denied[] integer; integer; integer; string[] computed Summarizes revalidation writeback, clean-success blockers, remaining budget, and denial reasons.
pksSemanticLearning runtime prompt object: gateId, status, opportunityId, kind, origin, fingerprint, confidence, reason, whyAutoUpsertIsInsufficient, resolutionTools, evidenceJson, skeleton only when a semantic opportunity is prompted Asks the agent to resolve richer learning opportunities such as consent dialogs, login walls, or risky repeats.
pksSemanticLearningBatchSummary status=batch_summary, origin, reason, entries[] only when unresolved semantic opportunities are summarized on domain exit Separates a domain-exit summary from the active prompt object, so agents can handle unresolved learning context deliberately.
nova.learn_resolve_opportunity MCP tool; args: opportunityId, verdict, reason opportunityId and verdict required; reason optional max 500 chars Closes or defers a semantic learning prompt and returns resolution state.
nova.learn_resolve_opportunity response ok, opportunityId, verdict, reason, priorState, resolvedState, resolvedAtUtc, fr1CandidatesSuperseded returned by explicit resolver calls Reports explicit semantic prompt feedback. This is separate from the auto-resolution field injected into matching PKS upsert results.
verdict upsert | not_applicable | unsafe | already_known | defer required for opportunity resolution Explains whether the agent wrote knowledge, rejected the prompt, recognized existing coverage, or deferred handling.
pksSemanticLearningResolution status, opportunityId, verdict, reason, matchSource only after auto-resolution through nova.pks_upsert Confirms that a semantic opportunity was auto-resolved by a matching PKS upsert.
nova.get_instructions(mode="learn") MCP guidance request; args: mode task|learn, scope target|allOwnerClaims, targetId, agentId, detail, domain/scopeDomain/domainScope, taskKeywords mode defaults to task; detail can be full or compact Returns Learn Mode v3 with PLATFORM_PLAYBOOK deliverable and optional learnMode.progress.
learnMode.progress.tasks[] taskId, learnModeActive, visitedSurfaces, meaningfulInteractions, floorsMet null when no tracked learn tasks apply Shows per-task exploration coverage.
learnMode.progress.minVisitedSurfaces / minMeaningfulInteractions / allFloorsMet integer; integer; boolean server policy values; computed boolean Defines and summarizes the coverage floor for Learn Mode completion.
coverageExhausted / coverageExhaustedReason boolean; string false; required reason only when overriding unmet learn floors Allows a blocked Learn Mode release only when further coverage is genuinely exhausted and explained.
Agent Tools

MCP tools for agents. These variables and tool names are intended for agents and integrators. They are not normal user controls in the interface.

Variable Meaning
nova.learn_suggest Ranks learning opportunities from accumulated observations and stale PKS candidates.
nova.learn_generate Generates PKS candidate proposals or safe content patches from repeated evidence.
nova.learn_promote Evaluates promotion, demotion, deprecation, and revive transitions for PKS knowledge.
nova.learn_feedback Reads recent promotion and learning feedback events.
nova.learn_resolve_opportunity Resolves a semantic learning prompt with a verdict such as upsert, unsafe, already_known, or defer.
nova.explain Explains why a PKS phenomenon is at its current learning level and which gates pass or fail.
nova.revalidate Runs a current-page, non-executing check against stale PKS fingerprints.
nova.get_instructions Returns Learn Mode v3 guidance and progress when called with mode=learn.