@indexnetwork/protocol 66.0.0-rc.635.1 → 66.0.0-rc.638.1

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +74 -74
  2. package/IMPLEMENTATION.md +8 -8
  3. package/README.md +31 -31
  4. package/STABILITY.md +1 -1
  5. package/dist/capabilities/intents.d.ts +4 -4
  6. package/dist/capabilities/intents.js +2 -2
  7. package/dist/capabilities/networks.d.ts +2 -2
  8. package/dist/capabilities/networks.js +3 -3
  9. package/dist/index.js +1 -1
  10. package/dist/internal/intents/graph/intent.graph.reconcile.d.ts +1 -1
  11. package/dist/internal/intents/graph/intent.graph.reconcile.js +1 -1
  12. package/dist/internal/intents/intent.admission.js +1 -1
  13. package/dist/internal/intents/intent.preparer.js +2 -2
  14. package/dist/internal/networks/indexer.graph.d.ts +1 -1
  15. package/dist/internal/networks/indexer.graph.js +2 -2
  16. package/dist/internal/networks/indexer.state.d.ts +1 -1
  17. package/dist/internal/networks/indexer.state.js +1 -1
  18. package/dist/internal/networks/network.pulse-summarizer.d.ts +4 -4
  19. package/dist/internal/networks/network.pulse-summarizer.js +10 -10
  20. package/dist/internal/opportunities/opportunity.actor.js +1 -1
  21. package/dist/internal/opportunities/opportunity.cards.d.ts +5 -3
  22. package/dist/internal/opportunities/opportunity.cards.js +22 -6
  23. package/dist/internal/opportunities/opportunity.graph.modes.js +1 -1
  24. package/dist/internal/opportunities/opportunity.presentation.d.ts +3 -3
  25. package/dist/internal/opportunities/opportunity.presentation.js +10 -10
  26. package/dist/platform/database/entities.d.ts +5 -5
  27. package/dist/protocol/negotiation.rules.d.ts +1 -1
  28. package/dist/protocol/negotiation.rules.js +1 -1
  29. package/dist/protocol/protocol.prompt.d.ts +2 -2
  30. package/dist/protocol/protocol.prompt.js +37 -37
  31. package/dist/protocol/schemas/chat-context.schema.d.ts +1 -1
  32. package/dist/protocol/schemas/chat-context.schema.js +1 -1
  33. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -339,7 +339,7 @@ pin a supported release, use `latest`.
339
339
  - Agent-facing tool descriptions, scope-refusal messages, and `read_docs`
340
340
  guidance now say "network" or "community" wherever they said "index".
341
341
  - The intent assignment pipeline keeps its verb naming (`getIntentForIndexing`,
342
- `indexer.graph.ts`, `IndexedIntent`): those describe assigning a signal, not
342
+ `indexer.graph.ts`, `IndexedIntent`): those describe assigning an intent, not
343
343
  the community noun.
344
344
 
345
345
  ## 48.1.0 - 2026-09-04
@@ -359,7 +359,7 @@ pin a supported release, use `latest`.
359
359
  ### Added
360
360
 
361
361
  - **`Intents.clarify({ payload, answers? })` → `{ payload, questions }`.** One
362
- stateless round of signal clarification: with no answers it returns the payload
362
+ stateless round of intent clarification: with no answers it returns the payload
363
363
  untouched plus the questions worth asking; with answers it rewrites the payload
364
364
  so those answers are stated in it and returns whatever is still open. Nothing
365
365
  is stored, so skipping is always valid. `ClarifyAnswer`, `ClarifyInput`,
@@ -372,14 +372,14 @@ pin a supported release, use `latest`.
372
372
  `FollowUpPlan`, `SynthesisInput` and `SynthesisResult` are removed along with
373
373
  the pack generator and intake orchestrator. Clarification is `clarify` now, and
374
374
  it holds no run state — hosts can drop their intake pack and run storage.
375
- - **BREAKING: signals are no longer proposed before they are created.** The
375
+ - **BREAKING: intents are no longer proposed before they are created.** The
376
376
  dry-run branch of `create_intent`, the `intent_proposal` fence it emitted and
377
377
  the `autoApprove` argument are gone. `create_intent({ description, networkIds })`
378
378
  persists directly, so hosts can drop their proposal storage and their confirm
379
379
  and reject endpoints.
380
380
  - **BREAKING: networks are no longer assigned by a model.** `IntentNetworkIndexer`,
381
381
  `IntentIndexingResult`, `Intents.indexIntent` and the evaluated branch of the
382
- indexer graph are removed, and so is the threshold scoring behind them. A signal
382
+ indexer graph are removed, and so is the threshold scoring behind them. An intent
383
383
  reaches exactly the networks its owner names on create or links afterwards with
384
384
  `create_intent_index`.
385
385
  - **BREAKING: agents no longer have transports.** `AgentTransportRecord`,
@@ -517,7 +517,7 @@ No aliases or compatibility shims: hosts must drop the deleted ports.
517
517
  refs and the `personal-agent.e2e` spec — are deleted. Index no longer runs an
518
518
  agent; a host that wants one builds it as a client over REST/MCP.
519
519
  - **BREAKING: `ChatGraph` and the whole chat capability are gone.**
520
- `ChatGraphFactory`, `ChatAgent`, the personas (`SIGNAL_PERSONA`,
520
+ `ChatGraphFactory`, `ChatAgent`, the personas (`INTENT_PERSONA`,
521
521
  `ONBOARDING_PERSONA`, `withPersona`), the streamer, suggester, summarizer,
522
522
  title generator, interrupt classifier, question-dedup, chat state/tools/utils
523
523
  and the chat-streaming types no longer exist. There is no H2A chat runtime in
@@ -727,14 +727,14 @@ remains.
727
727
 
728
728
  - **`NegotiationGraph` refuses to open an opportunity whose introducers have
729
729
  not all approved it.** The gate now lives on the write, not only where
730
- discovery decides which signals to wake, so no caller can reach past it.
730
+ discovery decides which intents to wake, so no caller can reach past it.
731
731
  - **New negotiation pause reason `open_failed`.** `NEGOTIATION_PAUSE_REASONS`
732
732
  gains it, and `{ negotiationId, pause }` now accepts
733
733
  `NegotiationSystemPauseReason` (`'counterparty_silent' | 'open_failed'`)
734
734
  rather than the single literal. A kickoff whose open failed after `init`
735
735
  created the task compensates it into this pause, so the round's active count
736
736
  can still reach zero. Unlike `turn_cap` it stays re-kickable.
737
- - **A negotiation binds a signal PER SEAT.** `NegotiationTaskMetadata.intentId`
737
+ - **A negotiation binds an intent PER SEAT.** `NegotiationTaskMetadata.intentId`
738
738
  and `.round` are replaced by `seats: Record<string, NegotiationSeatBinding>`
739
739
  keyed by intent id (`{ userId, round }`), and `setNegotiationRound` becomes
740
740
  `bindNegotiationSeat(taskId, intentId, binding)`. Both sides' IS-A can now
@@ -750,7 +750,7 @@ remains.
750
750
  the caller's own brief only. The `brief` on the graph's open/resume inputs is
751
751
  the INITIATING seat's, never the counterparty's.
752
752
  - **`NegotiationGraphDatabase` gains `getPausedNegotiationTasksForIntent`** —
753
- the signal-scoped read of every paused, unresolved negotiation. Reflect
753
+ the intent-scoped read of every paused, unresolved negotiation. Reflect
754
754
  reasons over that, not over one round: a negotiation a later kickoff left
755
755
  behind keeps its old round, and a round-scoped read hid it from every future
756
756
  verdict.
@@ -765,11 +765,11 @@ remains.
765
765
  `END` without it, so a chat- or MCP-run discovery persists matches nobody is
766
766
  woken for.
767
767
  - **`PersonalAgentDeps` gains `wakeForMatches`** — the agent wakes its own
768
- signal again for a discovery batch that landed after the turn read its match
768
+ intent again for a discovery batch that landed after the turn read its match
769
769
  list.
770
770
  - **The retired `queueNegotiateExisting` host callback is removed** from
771
771
  `ToolDeps` and `OpportunityGraphFactory`. Approving the final introducer
772
- gate emits `matches_ready` for the source participant's bound signal; it
772
+ gate emits `matches_ready` for the source participant's bound intent; it
773
773
  never directly opens or resumes a negotiation.
774
774
 
775
775
  - **AgentGraph: one PersonalAgent, routed on the shape of its input.** New
@@ -781,7 +781,7 @@ remains.
781
781
  what ACT does. IS-A's verbs are `message_user`, `ask`, `kickoff`, `promote`,
782
782
  `reject`, `note_dossier`, `retire_dossier`, `accept_opportunity`; there is
783
783
  no `wait`. Asking BLOCKS acting: a turn that asks executes no verdicts and
784
- starts no negotiations. The host implements the ports (signal DM, dossier,
784
+ starts no negotiations. The host implements the ports (intent DM, dossier,
785
785
  act ledger, reply transport, the owner's accept path, matches list).
786
786
  - **The interim `NegotiationAuthor` is deleted.** `NegotiationGraphDeps.author`
787
787
  is now a required `NegotiationTurnAuthor` port taking ids only
@@ -790,15 +790,15 @@ remains.
790
790
  Removed exports: `NegotiationAuthor`, `NegotiationAuthorInput`.
791
791
  - **Discovery no longer opens negotiations.** The opportunity graph's
792
792
  `negotiate` node is replaced by a `matches_ready` node that emits ONE event
793
- per signal per persisted batch through the new `MatchesReadyFn` host
794
- callback; the signal's PersonalAgent decides whether to reach out at all.
793
+ per intent per persisted batch through the new `MatchesReadyFn` host
794
+ callback; the intent's PersonalAgent decides whether to reach out at all.
795
795
  `OpportunityGraphFactory`'s sixth constructor argument changes from
796
796
  `negotiationGraph` to `matchesReady`, and `ToolFactory`/`ToolDeps` gain
797
797
  `matchesReady`. The tool factory no longer builds a second, reflect-less
798
798
  negotiation graph: without the host's own composition there is no
799
799
  negotiation graph in that context at all.
800
800
  - **The all-paused → reflect trigger is gated on a round-size stamp.**
801
- `NegotiationRoundReflectJobData` gains `userId` (the signal's owner, so the
801
+ `NegotiationRoundReflectJobData` gains `userId` (the intent's owner, so the
802
802
  consumer can invoke the PersonalAgent). `NegotiationGraphDatabase` gains
803
803
  `getNegotiationTasksForIntentRound`, `getIntentNegotiationRound` and
804
804
  `stampIntentNegotiationRoundSize`, and `bumpIntentNegotiationRound` must now
@@ -835,13 +835,13 @@ remains.
835
835
 
836
836
  ### Changed
837
837
 
838
- - **One PersonalAgent persona.** The signal, onboarding, and negotiator chat
838
+ - **One PersonalAgent persona.** The intent, onboarding, and negotiator chat
839
839
  personas collapse into a single `createPersonalAgentPersona(identity)`
840
840
  factory with `PERSONAL_AGENT_PERSONA_ID = 'personal'`. What a turn may do is
841
841
  derived from the session's resolved scope context, never from a persona id;
842
842
  the onboarding prompt/toolset is a fragment selected by incomplete-onboarding
843
843
  session state on truly unscoped sessions only. Removed exports:
844
- `SIGNAL_PERSONA_ID`, `createSignalPersona`, `ONBOARDING_PERSONA_ID`,
844
+ `INTENT_PERSONA_ID`, `createIntentPersona`, `ONBOARDING_PERSONA_ID`,
845
845
  `createOnboardingPersona`, `NEGOTIATOR_PERSONA_ID`, `PersonalAgentChat`,
846
846
  `PersonalAgentChatDeps`. The negotiator persona (prompt, chat toolset, and
847
847
  its `remember`/`forget` chat tools plus the `negotiatorMemoryTools` host
@@ -923,7 +923,7 @@ remains.
923
923
  client answered the one question the initiator paused to ask, the resumed
924
924
  turn-0 decision was entirely re-drafted: an agent that still held a
925
925
  withdraw-worthy concern it never asked the client about (e.g. a location
926
- preference read from the profile rather than the signal) could withdraw
926
+ preference read from the profile rather than the intent) could withdraw
927
927
  anyway, seconds after the client answered the thing it did ask, with the
928
928
  counterparty never contacted. Now, if the resumed turn drafts `withdraw`
929
929
  and the dimension actually asked about reconciled to `ok`, the graph
@@ -1005,7 +1005,7 @@ remains.
1005
1005
 
1006
1006
  - **BREAKING: the intent graph routes on the shape of its input, not an
1007
1007
  `operationMode` flag.** `operationMode` is gone from the graph's invoke
1008
- input. Callers now signal intent by which fields they set:
1008
+ input. Callers now express intent by which fields they set:
1009
1009
  `inputContent` alone creates; `inputContent` + `targetIntentIds` is an
1010
1010
  explicit update; `targetIntentIds` + `archive: true` expires; `targetIntentIds`
1011
1011
  + `status` pauses/resumes; `proposalId` (+ `description`, `networkId`)
@@ -1077,7 +1077,7 @@ remains.
1077
1077
  the deterministic consultation policy are on; deadlock-shift is on; the
1078
1078
  negotiator drafts in the `skeptic` stance (`advocate` and `evaluator`, and the
1079
1079
  `stance*` predicates that distinguished them, are gone); negotiators receive
1080
- only each participant's exact opportunity-bound signal; HyDE generates under
1080
+ only each participant's exact opportunity-bound intent; HyDE generates under
1081
1081
  `frame-v1`; candidate evaluation runs in parallel; retrieval floor is `0.20`
1082
1082
  and the evaluator score floor is `40`; the two question miners are pinned to
1083
1083
  `shadow`.
@@ -1163,7 +1163,7 @@ remains.
1163
1163
  - **Persona identity + create_intent scope rule (#1479) — the version stamp
1164
1164
  the change shipped without.** Every chat persona now introduces itself as
1165
1165
  the user's own agent: `buildAgentSelfIntroduction`, plus
1166
- `createSignalPersona` / `createOnboardingPersona` factories taking
1166
+ `createIntentPersona` / `createOnboardingPersona` factories taking
1167
1167
  `agentName` the way the negotiator already did. Tool registration gained
1168
1168
  the scope rule (`isToolAllowedInScope`, `filterToolsForScope`). #1479
1169
1169
  merged these exports without bumping, so two different export surfaces
@@ -1203,11 +1203,11 @@ remains.
1203
1203
  - **An answer beats staleness — drift is logged, never fatal.** Observed live:
1204
1204
  a client answered her own parked question ("Timing: This week") through the
1205
1205
  new MCP answer lane, routing succeeded, consumption ran — and the settle
1206
- returned `lost`, because the signal had been edited twice since the park and
1206
+ returned `lost`, because the intent had been edited twice since the park and
1207
1207
  the revalidation fence required the world to look exactly as it did at park
1208
1208
  time. The park became a zombie: still `input_required`, still rendered as
1209
1209
  "waiting on YOUR answer" by every surface, structurally unanswerable. The
1210
- design law is explicit: signal edits cascade nothing, and a stale negotiation
1210
+ design law is explicit: intent edits cascade nothing, and a stale negotiation
1211
1211
  is solved by ANSWERING its question — the user's answer is the freshest
1212
1212
  commitment there is, and the resumed turn rebuilds its context from current
1213
1213
  data anyway.
@@ -1215,16 +1215,16 @@ remains.
1215
1215
  The settle's one fence is now two. Coherence stays hard: an answer that does
1216
1216
  not belong to its park (settlement mismatch, wrong recipient, task no longer
1217
1217
  parked, a dismiss/timeout settlement won the race) is still refused. Drift
1218
- stops losing: within a live opportunity and an active signal, the answer
1218
+ stops losing: within a live opportunity and an active intent, the answer
1219
1219
  settles and resumes regardless of what moved since the park.
1220
1220
 
1221
1221
  - **The unresumable tail is an explicit proposal, not a silent drop.** When
1222
1222
  current reality genuinely cannot continue — terminal opportunity or archived
1223
- signal — the answer is still recorded as heard: settlement result and resume
1223
+ intent — the answer is still recorded as heard: settlement result and resume
1224
1224
  outcome `recorded_unresumable` (additive), the block-consumption result
1225
1225
  counts it in its own `recorded` array so a `skipped` count can never again
1226
1226
  hide it, and the implementation retires the park and tells the client the
1227
- truth, proposing re-discovery under the updated signal — an offer, never an
1227
+ truth, proposing re-discovery under the updated intent — an offer, never an
1228
1228
  automatic act.
1229
1229
 
1230
1230
  ## 23.6.0 - 2026-08-20
@@ -1370,14 +1370,14 @@ remains.
1370
1370
  ### Added
1371
1371
 
1372
1372
  - **The owner's verdict has a lane in their own DM.** Observed live: in the
1373
- negotiator DM for one signal, a client told their agent to reject the
1373
+ negotiator DM for one intent, a client told their agent to reject the
1374
1374
  counterparty — a pairing parked `input_required`. The agent could not comply.
1375
1375
  The owner makes exactly three kinds of decision in that room. They ANSWER a
1376
1376
  question a parked negotiation asked, which `answer_pending_question` gave a
1377
- lane. They EDIT the signal, which `update_intent` always covered.
1377
+ lane. They EDIT the intent, which `update_intent` always covered.
1378
1378
  And they pass a VERDICT on a counterparty, which had no lever at all. So on
1379
1379
  "reject them" the persona's whole repertoire was to say something back, or to
1380
- edit the signal instead; the pairing stayed parked and the counterparty
1380
+ edit the intent instead; the pairing stayed parked and the counterparty
1381
1381
  stayed live.
1382
1382
 
1383
1383
  `update_opportunity` is in the negotiator toolset and cannot substitute for
@@ -1397,7 +1397,7 @@ remains.
1397
1397
  cannot see them. `NegotiatorVerdictToolsHost` is the whole surface the package
1398
1398
  knows; the composition root owns everything behind it.
1399
1399
 
1400
- - **Numbered refs, never ids.** The prompt renders this signal's actionable
1400
+ - **Numbered refs, never ids.** The prompt renders this intent's actionable
1401
1401
  counterparties as `N. {name} — {state}`, and the tool takes the number. The
1402
1402
  schema offers no place to put an id and no result string carries one. The rule
1403
1403
  is `answer_pending_question`'s, for a sharper reason: a ref the model can name
@@ -1412,18 +1412,18 @@ remains.
1412
1412
 
1413
1413
  ### Changed
1414
1414
 
1415
- - **The pinned-signal prompt gains a verdict section, and only where the tools
1415
+ - **The pinned-intent prompt gains a verdict section, and only where the tools
1416
1416
  exist.** `NegotiatorPromptOptions.actionableCounterparties` renders
1417
1417
  `## Verdicts {userName} can pass here` plus two tool-reference rows. It says
1418
1418
  the tool call IS the decision — not the sentence about it, and not an edit of
1419
- the signal; that a verdict the client did not pass must never be passed for
1419
+ the intent; that a verdict the client did not pass must never be passed for
1420
1420
  them; that `update_opportunity` is not this lever; and that an accept is one
1421
1421
  side of two and never a connection. Rendered only in an intent-pinned session
1422
1422
  with a non-empty list, since that is the only place the tools are registered.
1423
1423
  Absent or empty leaves the prompt byte-identical to 23.4.0.
1424
1424
 
1425
1425
  - **Result copy is honest at every status.** `executed` names the counterparty
1426
- and forbids also editing the signal; `none_actionable` forbids implying a
1426
+ and forbids also editing the intent; `none_actionable` forbids implying a
1427
1427
  decision was recorded; `unknown_counterparty` states plainly that nothing was
1428
1428
  decided and re-lists the current set; `already_decided` says whose move it is;
1429
1429
  `error` forbids describing the pairing as decided. A host that throws is
@@ -1592,7 +1592,7 @@ remains.
1592
1592
  ### Changed
1593
1593
 
1594
1594
  - **A verdict has a floor under it: an askable unknown outranks a conclusion.**
1595
- Every stage of the flow — signal, discovery, agents talking, match, meet — was
1595
+ Every stage of the flow — intent, discovery, agents talking, match, meet — was
1596
1596
  verified working except one arrow: the agent asking its own client something
1597
1597
  only that client can settle. In a week of live traffic it fired zero times,
1598
1598
  against 23 policy-recognized consultation moments. The reason is structural
@@ -1664,7 +1664,7 @@ remains.
1664
1664
  settle, so an open dimension on turn 0 is the shape the protocol asked for, not
1665
1665
  a dodge — and a floor that bound there would park every negotiation before it
1666
1666
  ever made contact. Turn 0 already has its own designed consult, the pre-contact
1667
- verdict, bounded per signal.
1667
+ verdict, bounded per intent.
1668
1668
 
1669
1669
  - **The verdict prompt's escape hatch is now conditional.** "What remains unknown
1670
1670
  is the kind of thing two people settle in a first conversation" waved verdicts
@@ -1682,7 +1682,7 @@ remains.
1682
1682
  ### Fixed
1683
1683
 
1684
1684
  - **No turn may repeat a message already on the record.** A counterparty asked what
1685
- a phrase in the client's own signal meant; the answering agent could not consult
1685
+ a phrase in the client's own intent meant; the answering agent could not consult
1686
1686
  its (unreachable) principal and its record did not settle the phrase, so with no
1687
1687
  legal move left it copied the question back word for word. Both models then
1688
1688
  locked — reproducing text already in context is close to deterministic — and the
@@ -1702,7 +1702,7 @@ remains.
1702
1702
  `PRINCIPAL_UNREACHABLE_RULE` said never stall and never route the client's
1703
1703
  question to the other side, but named no move for the case that occurred: the
1704
1704
  COUNTERPARTY asks something client-authoritative that the record does not
1705
- settle. The rule now says to state the limit of the record — "X's signal says
1705
+ settle. The rule now says to state the limit of the record — "X's intent says
1706
1706
  Y; it does not specify further" is a complete answer — and to let the
1707
1707
  counterparty score that dimension unknown, never repeating or mirroring their
1708
1708
  question and never inventing an answer the record does not hold.
@@ -1757,7 +1757,7 @@ remains.
1757
1757
 
1758
1758
  ### Fixed
1759
1759
 
1760
- - **Retrieval scores no longer clamp at a flat ceiling.** The multi-signal bonus in
1760
+ - **Retrieval scores no longer clamp at a flat ceiling.** The multi-intent bonus in
1761
1761
  `mergeStrategyCandidates` was added to the raw similarity and then clamped
1762
1762
  (`Math.min(raw + boost, 1)`), so candidates found by enough strategies all landed
1763
1763
  on exactly 1.0. Candidates enter evaluation strictly by rank, so a head cluster of
@@ -1847,7 +1847,7 @@ remains.
1847
1847
 
1848
1848
  - **The QuestionerAgent generation half** (conversational-questions plan,
1849
1849
  "Retirements"). Questions are conversation: the parked negotiation is the
1850
- durable record and the question-message in the signal's DM is its
1850
+ durable record and the question-message in the intent's DM is its
1851
1851
  rendering, so the card generators go. Removed: `QuestionerAgent`,
1852
1852
  `question.presets`, the blocking chat `ask_user_question` tool and its
1853
1853
  `ChatQuestionsHost` bridge (with the `user_question` stream event and the
@@ -1862,8 +1862,8 @@ remains.
1862
1862
 
1863
1863
  ### Changed
1864
1864
 
1865
- - The signal and onboarding personas interview in plain conversation: the
1866
- guided New Signal intake drops its blocking question-card rounds, and its
1865
+ - The intent and onboarding personas interview in plain conversation: the
1866
+ guided New Intent intake drops its blocking question-card rounds, and its
1867
1867
  stage machine reduces to interview → complete (`create_intent` is the only
1868
1868
  remaining stage marker).
1869
1869
 
@@ -1996,7 +1996,7 @@ same 44 names as before. Only paths private to the capability moved.
1996
1996
 
1997
1997
  - **BREAKING**: The `intents` capability now ships as a single class. `Intents`
1998
1998
  replaces `IntentGraphFactory`, `SemanticVerifier`, `IntentIndexer`,
1999
- `SignalIntakePackGenerator`, `SignalIntakeOrchestrator`,
1999
+ `IntentIntakePackGenerator`, `IntentIntakeOrchestrator`,
2000
2000
  `normalizeIntentDescription`, and `FALLBACK_WHO_QUESTION`, all of which are
2001
2001
  no longer exported. Dependencies move from positional constructor arguments
2002
2002
  to a named `IntentsDeps` bag, and every field is optional — a host that wants
@@ -2007,9 +2007,9 @@ same 44 names as before. Only paths private to the capability moved.
2007
2007
  | `new IntentGraphFactory(db, embedder, queue, enqueue).createGraph()` | `new Intents({ database, embedder, queue, questionerEnqueue }).createGraph()` |
2008
2008
  | `new SemanticVerifier().invoke(content, context)` | `new Intents().verifyIntent(content, context)` |
2009
2009
  | `new IntentIndexer().invoke(...)` / `.evaluate(...)` | `new Intents().indexIntent(...)` |
2010
- | `new SignalIntakePackGenerator().generate(input)` | `new Intents().generateIntakePack(input)` |
2011
- | `new SignalIntakeOrchestrator().generateFollowUps(input)` | `new Intents().generateIntakeFollowUps(input)` |
2012
- | `new SignalIntakeOrchestrator().synthesize(input)` | `new Intents().synthesizeIntake(input)` |
2010
+ | `new IntentIntakePackGenerator().generate(input)` | `new Intents().generateIntakePack(input)` |
2011
+ | `new IntentIntakeOrchestrator().generateFollowUps(input)` | `new Intents().generateIntakeFollowUps(input)` |
2012
+ | `new IntentIntakeOrchestrator().synthesize(input)` | `new Intents().synthesizeIntake(input)` |
2013
2013
  | `normalizeIntentDescription(text)` | `Intents.normalizeDescription(text)` |
2014
2014
  | `FALLBACK_WHO_QUESTION` | `Intents.FALLBACK_INTAKE_QUESTION` |
2015
2015
 
@@ -2075,7 +2075,7 @@ same 44 names as before. Only paths private to the capability moved.
2075
2075
  - `ContactServiceAdapter` narrows to `listContacts` / `removeContact` /
2076
2076
  `searchContacts`; `importContacts` and `addContact` are gone, along with the
2077
2077
  `ContactInput`, `ContactResult` and `ContactImportResult` domain types.
2078
- - Orchestrator, negotiator, signal and onboarding prompt surfaces no longer
2078
+ - Orchestrator, negotiator, intent and onboarding prompt surfaces no longer
2079
2079
  advertise contact import or Gmail import.
2080
2080
 
2081
2081
  ## 16.1.0 - 2026-08-17
@@ -2142,7 +2142,7 @@ from the package root.
2142
2142
  (`projectActivitySummary`, `ActivitySummaryResponseSchema`,
2143
2143
  `QUESTION_MODE_TO_DOMAIN`, `READ_ACTIVITY_SUMMARY_TOOL_NAME`, …).
2144
2144
  - **Persona helpers** — the `filter*Tools` / `narrow*Tools` helpers, the
2145
- `*_TOOL_NAMES` constants, and the `SIGNAL_NEW_SIGNAL_KICKOFF` /
2145
+ `*_TOOL_NAMES` constants, and the `INTENT_NEW_INTENT_KICKOFF` /
2146
2146
  `ONBOARDING_PROFILE_KICKOFF` constants. The persona IDs, the prompt
2147
2147
  constants, and `REPORTER_BRIEFING_KICKOFF` stay — `apps/web` imports the
2148
2148
  latter.
@@ -2154,7 +2154,7 @@ from the package root.
2154
2154
  slated for removal with the eval harnesses, and this accessor should be
2155
2155
  pruned in the same change. These back live Railway configuration and are
2156
2156
  unchanged in behaviour; only the re-export is gone.
2157
- - **Signal-intake types** — `IntakePack`, `IntakePackInput`, `SynthesisInput`,
2157
+ - **Intent-intake types** — `IntakePack`, `IntakePackInput`, `SynthesisInput`,
2158
2158
  `SynthesisResult`, `FollowUpPlan`, `answerLabel`, `normalizeIntakePack`, …
2159
2159
 
2160
2160
  Two of the removed symbols (`createAgentTools` and
@@ -2359,7 +2359,7 @@ Directory names only.
2359
2359
 
2360
2360
  | before | after |
2361
2361
  |---|---|
2362
- | `signals/` | `intents/` |
2362
+ | `intents/` | `intents/` |
2363
2363
  | `communities/` | `networks/` |
2364
2364
  | `opportunity/` | `opportunities/` |
2365
2365
  | `negotiation/` | `negotiations/` |
@@ -2395,7 +2395,7 @@ This is internal structure only.
2395
2395
  were `*.tools.port.ts` port definitions misfiled into a facade directory. The
2396
2396
  ports moved into their capability's `ports/`.
2397
2397
  - Removed the nine per-capability `public/index.ts` barrels. Three of them
2398
- (`signals`, `communities`, `opportunity`) already had zero importers.
2398
+ (`intents`, `communities`, `opportunity`) already had zero importers.
2399
2399
 
2400
2400
  ### Changed
2401
2401
 
@@ -2426,7 +2426,7 @@ This is internal structure only.
2426
2426
  (three pure text predicates, no imports of its own). `negotiation` and
2427
2427
  `contacts` needed it and were pulling the whole opportunity capability.
2428
2428
  - `UnderspecificationTypeSchema` → `shared/schemas/underspecification.schema.ts`.
2429
- The signals clarifier was importing the entire questions capability — LLM
2429
+ The intents clarifier was importing the entire questions capability — LLM
2430
2430
  agents and tools included — to reach a three-value enum.
2431
2431
 
2432
2432
  - `CAPABILITY_DIRECTORIES` mapped `questioner` but not `questions`, so every
@@ -2467,7 +2467,7 @@ commit (`225425371d`) rather than from memory.
2467
2467
 
2468
2468
  Production evidence at the time: the orchestrator had written no new session
2469
2469
  since 2026-08-04, and the presence of `onboarding`-persona rows showed the
2470
- Signal cutover flag was already on. The 9,464 historical orchestrator
2470
+ Intent cutover flag was already on. The 9,464 historical orchestrator
2471
2471
  conversations remain readable.
2472
2472
 
2473
2473
  ## 13.2.1 - 2026-08-16
@@ -2482,7 +2482,7 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2482
2482
  declaration-only placeholders with zero inbound imports; `runtime/background`
2483
2483
  and `public` consisted of nothing but a header comment. The only thing
2484
2484
  referencing them was a spec asserting that they existed.
2485
- - Removed eight unused capability barrels (`signals/index.ts`,
2485
+ - Removed eight unused capability barrels (`intents/index.ts`,
2486
2486
  `communities/index.ts`, `contacts/index.ts`, `questions/index.ts`,
2487
2487
  `opportunity/index.ts`, `negotiation/index.ts`, `integrations/index.ts`,
2488
2488
  `participant-agents/index.ts`). Each was `export * from "./public/index.js"`
@@ -2501,8 +2501,8 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2501
2501
  `shared/agent/tool.registry.ts` and `shared/agent/tool.factory.ts`, and the
2502
2502
  indirection is gone. `mcp.server.ts` was the one direct consumer of the old
2503
2503
  location and now resolves to the same single home.
2504
- - `signals/application/intent.tools.ts` is imported directly by the tool
2505
- factory; the `runtime/foreground/signals/intent.tools.ts` pass-through
2504
+ - `intents/application/intent.tools.ts` is imported directly by the tool
2505
+ factory; the `runtime/foreground/intents/intent.tools.ts` pass-through
2506
2506
  re-export that sat between them is removed.
2507
2507
  - Replaced `architecture/tests/runtime-shells.spec.ts` with
2508
2508
  `architecture/tests/package-entry.spec.ts`, which asserts the invariants that
@@ -2631,7 +2631,7 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2631
2631
 
2632
2632
  ### Removed
2633
2633
 
2634
- - **Breaking (14.0.0):** remove the `orchestrator` chat persona. `ORCHESTRATOR_PERSONA_ID` and `ORCHESTRATOR_PERSONA` are gone from the public API, and the orchestrator system prompt (`buildSystemContent`) and its conditional prompt-module registry are deleted. `ChatPersonaLoopBehaviors.hallucinationRecovery` is retained — it is opted into by the onboarding, signal and negotiator personas, not just the removed one.
2634
+ - **Breaking (14.0.0):** remove the `orchestrator` chat persona. `ORCHESTRATOR_PERSONA_ID` and `ORCHESTRATOR_PERSONA` are gone from the public API, and the orchestrator system prompt (`buildSystemContent`) and its conditional prompt-module registry are deleted. `ChatPersonaLoopBehaviors.hallucinationRecovery` is retained — it is opted into by the onboarding, intent and negotiator personas, not just the removed one.
2635
2635
  - Remove the never-emitted `question_generator_start` / `question_generator_end` stream events and the `DebugMetaDiscoveryQuestions` debug payload, which had no producer.
2636
2636
 
2637
2637
  ### Changed
@@ -2685,26 +2685,26 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2685
2685
 
2686
2686
  ### Added
2687
2687
  - Add the Personal Agent Hermes negotiation-runtime contract (11.1.0). The public negotiation facade now exports `configuredAskUserEnabled` and `askUserAnswerWindowMs` for host-side owner-consultation admission, with regenerated consumer/export inventories. The generated Hermes negotiator skill receives a privacy-minimal structural envelope: server-provided seat, protocol version, deadlines, closed allowed actions, consultation eligibility, opportunity identifiers/status, and message-free history. Owner memory, private context, consultation text, evaluator reasoning, actor prose, and shared-message prose are excluded; each scheduled pass permits at most one response or owner consultation and treats all pickup prose as untrusted data.
2688
- - Add a live answer-first signal-intake eval with unrelated, relevant, and no-bridge profile cases plus provider-free corpus, runner, and scorer checks.
2688
+ - Add a live answer-first intent-intake eval with unrelated, relevant, and no-bridge profile cases plus provider-free corpus, runner, and scorer checks.
2689
2689
  - Add the protocol-only Guided Atlas, deterministic architecture inventory
2690
2690
  generator, and source-evidenced Configuration Lab. The atlas explains
2691
2691
  normative concepts, the current `packages/protocol` reference implementation,
2692
2692
  and counterfactual behavior-gate changes, while live environment values and
2693
2693
  concrete API or host implementations remain outside its scope. Tooling-only
2694
2694
  public-package change; no root export or runtime behavior changes.
2695
- - Deterministic fast signal intake (#1307; 8.1.0). `SignalIntakePackGenerator`
2695
+ - Deterministic fast intent intake (#1307; 8.1.0). `IntentIntakePackGenerator`
2696
2696
  precomputes a per-user intake brief plus round-1 question, and
2697
- `SignalIntakeOrchestrator` drives the funnel as a deterministic state machine
2697
+ `IntentIntakeOrchestrator` drives the funnel as a deterministic state machine
2698
2698
  on flash instead of sequential pro turns, with synthesis speculated during a
2699
- deterministic community picker. New stable exports from the `signals` facade:
2700
- `SignalIntakePackGenerator`, `normalizeIntakePack`, `SignalIntakeOrchestrator`,
2699
+ deterministic community picker. New stable exports from the `intents` facade:
2700
+ `IntentIntakePackGenerator`, `normalizeIntakePack`, `IntentIntakeOrchestrator`,
2701
2701
  `answerLabel`, `FALLBACK_WHO_QUESTION`, `FALLBACK_BRING_QUESTION`, and the
2702
2702
  `IntakePack` / `IntakePackInput` / `IntakePackQuestion` /
2703
2703
  `IntakePackQuestionOption` / `IntakeAnswer` / `SynthesisInput` /
2704
2704
  `SynthesisResult` types. Minor bump: additive surface only.
2705
2705
 
2706
2706
  ### Changed
2707
- - Make fast signal-intake follow-ups answer-first with a two-stage model boundary: an answer-only core call chooses the missing axis and supplies two or three concrete domain options, then an isolated bridge call may append at most one premise-derived profile option so an existing profile theme cannot dominate or reorder a newly stated intent.
2707
+ - Make fast intent-intake follow-ups answer-first with a two-stage model boundary: an answer-only core call chooses the missing axis and supplies two or three concrete domain options, then an isolated bridge call may append at most one premise-derived profile option so an existing profile theme cannot dominate or reorder a newly stated intent.
2708
2708
  - Remove unsupported deprecated source/deep forwarding shims after migrating repository consumers to canonical modules; stable package-root exports are unchanged.
2709
2709
  - Add a fail-closed isolated provider-free test gate (10.1.1). Tooling-only
2710
2710
  safety foundation; no runtime or public API behavior changes.
@@ -2797,12 +2797,12 @@ above. Entries below keep the version they were developed under.
2797
2797
  - Add canonical shared guidance source and unified MCP_INSTRUCTIONS/read_docs
2798
2798
  (IND-602/603; 7.10.0): The single normative `CANONICAL_GUIDANCE_SUMMARY`
2799
2799
  (1,555 chars, under the 4,500-char MCP context budget) covers Index Network
2800
- entity model (identity/context, premises, signals, communities/networks,
2800
+ entity model (identity/context, premises, intents, communities/networks,
2801
2801
  opportunities), negotiation semantics with the critical distinction
2802
2802
  **"A2A acceptance is not owner approval"** (separate gates), H2A/A2A
2803
2803
  workflows, and the boundary **"H2H (human-to-human) never exposed; escalation
2804
2804
  to native surfaces (web, Telegram) is outside MCP scope."** Seven detailed
2805
- canonical topics (identity-context, premises, signals, communities-networks,
2805
+ canonical topics (identity-context, premises, intents, communities-networks,
2806
2806
  opportunities, negotiations, workflows) are published via read_docs on both
2807
2807
  MCP and REST/chat surfaces. MCP surface read_docs serves canonical guidance
2808
2808
  only; REST/chat retains legacy supplemental topics for backwards compatibility.
@@ -2970,7 +2970,7 @@ above. Entries below keep the version they were developed under.
2970
2970
  `manage:negotiations`); the handler then passes the typed resolved MCP caller
2971
2971
  context into one centralized permission projection, so global agents receive
2972
2972
  only the domains their permissions authorize while session humans receive the
2973
- full owner view. Signal IDs/titles (`opportunitiesBySignal`) are exposed only
2973
+ full owner view. Intent IDs/titles (`opportunitiesByIntent`) are exposed only
2974
2974
  with `manage:intents`, and question counts are meta-network — never network
2975
2975
  filtered — while each count inherits the permission of the domain the
2976
2976
  question affects: the adapter groups pending/answered counts by question
@@ -3165,15 +3165,15 @@ above. Entries below keep the version they were developed under.
3165
3165
  policy characterization.
3166
3166
  - Characterization specs for membership authority (join-policy enforcement,
3167
3167
  owner-only removal), privacy/scope intersection (scoped vs unscoped read,
3168
- `showAll` bypass), and signal assignment policy (direct / evaluated /
3168
+ `showAll` bypass), and intent assignment policy (direct / evaluated /
3169
3169
  no-prompt fast path, membership re-check at persistence time, unassign
3170
3170
  authority).
3171
3171
 
3172
3172
  ### Changed
3173
3173
  - `capabilities/communities.facade.ts` now imports from
3174
3174
  `communities/application/` instead of the old `network/` paths.
3175
- - `capabilities/signals.indexing.facade.ts` updated to import
3176
- `IntentIndexer` from `capabilities/signals.facade.ts` (canonical) instead
3175
+ - `capabilities/intents.indexing.facade.ts` updated to import
3176
+ `IntentIndexer` from `capabilities/intents.facade.ts` (canonical) instead
3177
3177
  of the legacy `intent/intent.indexer.ts` shim.
3178
3178
  - Communities capability boundary script updated: `communities/` directory now
3179
3179
  maps to the `communities` capability (alongside legacy `network/`).
@@ -3292,7 +3292,7 @@ above. Entries below keep the version they were developed under.
3292
3292
  the graph while retaining its LangGraph node routing and externally visible
3293
3293
  lifecycle semantics (IND-530).
3294
3294
  - Slice tool-factory dependencies into named capability-owned ports for
3295
- enrichment, signals, communities, opportunities, premises, contacts,
3295
+ enrichment, intents, communities, opportunities, premises, contacts,
3296
3296
  integrations, participant agents, negotiations, and questions. `ToolDeps`
3297
3297
  and `ToolContext` remain structurally compatible composition intersections at
3298
3298
  registry/runtime boundaries; ports are declared and exported through their
@@ -3311,20 +3311,20 @@ above. Entries below keep the version they were developed under.
3311
3311
  - Allow the private intent-refinement provenance snapshot to identify intent creation as a producer and make the shared refinement prompt independent of no-opportunity process state, enabling creation and authoritative discovery producers to converge on one ordinary intent-page question cadence.
3312
3312
 
3313
3313
  ### Added
3314
- - Capability facades for Signals, Participant context, Communities,
3314
+ - Capability facades for Intents, Participant context, Communities,
3315
3315
  Opportunities, Negotiation, Questions, Participant agents, Contacts, and
3316
3316
  Integrations. Cross-capability callers now use named, narrow facade contracts;
3317
3317
  the root barrel remains backward compatible and also adds the corresponding
3318
3318
  explicit tool-factory entry points. Architecture tooling records every allowed
3319
3319
  dependency direction and preserves the in-place directory layout for later
3320
3320
  extraction work (IND-528).
3321
- - Add the private `recovery` Questioner purpose and one-question intent recovery preset for post-discovery signal refinement (IND-506). The preset receives only the owned intent, global owner context, and an optional bounded aggregate count of fail-closed validated no-opportunity outcomes; it forbids candidate/counterparty/process narration, preserves the existing creation-time intent preset, persists publicly as ordinary `mode='intent'` questions with versioned internal recovery metadata, and carries optional material-fingerprint plus expected-owner guards through answer-only updates so the final database write can recheck lifecycle as well as content.
3321
+ - Add the private `recovery` Questioner purpose and one-question intent recovery preset for post-discovery intent refinement (IND-506). The preset receives only the owned intent, global owner context, and an optional bounded aggregate count of fail-closed validated no-opportunity outcomes; it forbids candidate/counterparty/process narration, preserves the existing creation-time intent preset, persists publicly as ordinary `mode='intent'` questions with versioned internal recovery metadata, and carries optional material-fingerprint plus expected-owner guards through answer-only updates so the final database write can recheck lifecycle as well as content.
3322
3322
  - Add versioned internal negotiation-question provenance and explicit source/candidate opportunity-actor intent threading for ordinary follow-up, inflight consultation, and uptake questions (IND-507). Runtime mode/purpose discriminants, structured `askUser` safety validation, neutral uptake context, and visible-field output gates exclude raw counterparty profile/identity/intent, private transcript, evaluator reasoning, match reasons, event/community inference, evidence, and internal IDs. Exact settlement/task correlation now threads through run-existing continuation admission without changing producer triggers or the ≤2 ordinary/inflight and ≤1 uptake cardinality.
3323
- - Add the restricted persisted `onboarding` chat persona (IND-450) with an exact consent/profile/guided-signal/completion allowlist, an onboarding-specific privacy and explicit-approval prompt, Signal's proposal-only live-membership narrowing, shared guided intake stages, and durable `profileConfirmedAt` / exact `firstSignalIntentId` completion markers; selected first signals must be active, owned, and created no earlier than a valid profile-confirmation timestamp. Gmail/contact import, opportunity/discovery/negotiation, community and membership mutation, administration, arbitrary scraping, and unreviewed shared tools remain excluded; the legacy orchestrator onboarding flow remains available to flag-off and non-web consumers.
3323
+ - Add the restricted persisted `onboarding` chat persona (IND-450) with an exact consent/profile/guided-intent/completion allowlist, an onboarding-specific privacy and explicit-approval prompt, Intent's proposal-only live-membership narrowing, shared guided intake stages, and durable `profileConfirmedAt` / exact `firstIntentId` completion markers; selected first intents must be active, owned, and created no earlier than a valid profile-confirmation timestamp. Gmail/contact import, opportunity/discovery/negotiation, community and membership mutation, administration, arbitrary scraping, and unreviewed shared tools remain excluded; the legacy orchestrator onboarding flow remains available to flag-off and non-web consumers.
3324
3324
  - Harden reporter turn handling so only the exact kickoff produces the detailed briefing, focused follow-ups stay narrow, and one-turn-local contextual natural-language confirmation deterministically bypasses the model and tools in favor of the visible confirmation card (IND-493).
3325
- - Dark-gated reporter cleanup-action proposals for retracting owner premises, narrowing owned signals, and pausing owned signals (IND-490 PR1). `propose_cleanup_actions` is conditionally registered only when `WEB_AGENT_ACTIONS_ENABLED` is enabled alongside the reporter surface; it validates full owner UUIDs, requires pause evidence, persists a confirmation request, and never mutates data in chat.
3325
+ - Dark-gated reporter cleanup-action proposals for retracting owner premises, narrowing owned intents, and pausing owned intents (IND-490 PR1). `propose_cleanup_actions` is conditionally registered only when `WEB_AGENT_ACTIONS_ENABLED` is enabled alongside the reporter surface; it validates full owner UUIDs, requires pause evidence, persists a confirmation request, and never mutates data in chat.
3326
3326
  - Read-only `reporter` chat persona for Agent-surface activity reporting (IND-476 PR1), with an exact positive allowlist, self-only narrowing, aggregate-only opportunity reporting, grounded `report_agent_activity` metrics, and a public briefing kickoff marker. Mutation, discovery, negotiation, memory, question-answering, scraping, and counterparty identity surfaces remain unavailable.
3327
- - Restricted `signal` chat persona for the main-web cutover (IND-449), built on the existing persona-neutral runtime with a custom signals/profile prompt, an exact positive allowlist, proposal hallucination recovery, and the discovery-coupled create-intent callback disabled. Signal-specific wrappers clamp focused intent/network reads to owned active intents and current memberships, prohibit other-user membership enumeration, and validate live membership before forwarding network-scoped proposals. Shared orchestrator, MCP, and direct-tool registries are unchanged.
3327
+ - Restricted `intent` chat persona for the main-web cutover (IND-449), built on the existing persona-neutral runtime with a custom intents/profile prompt, an exact positive allowlist, proposal hallucination recovery, and the discovery-coupled create-intent callback disabled. Intent-specific wrappers clamp focused intent/network reads to owned active intents and current memberships, prohibit other-user membership enumeration, and validate live membership before forwarding network-scoped proposals. Shared orchestrator, MCP, and direct-tool registries are unchanged.
3328
3328
  - `RawEvidenceOwnerAnswer` is now re-exported from the root barrel alongside the other Lens C negotiation-evidence segment types, so API-side projections (IND-465 slice 2) can type owner-answer evidence without deep imports. Type-only, additive; no runtime change.
3329
3329
  - Default-off `POOL_QUESTIONS_VISIT_TRIGGER` accessor plus the shared 6h `POOL_VISIT_MINING_DEBOUNCE_MS` debounce window for visit-triggered pool mining: the flag only adds a *when* for the existing mining hook — every mining/question gate (`POOL_QUESTIONS_MODE`, k-anonymity floor, VoI threshold, per-intent budgets, freshness fingerprints, push budgets) applies unchanged (IND-439 visibility-audit slice).
3330
3330
  - Default-off deadlock detection with a persuasion→bargaining mode shift for v2 negotiations (IND-428, dialogue-game backlog item 6): a deterministic trailing-run detector (`assessDeadlock`, no LLM in the decision) flags N consecutive `counter`/`question` turns without convergence (`NEGOTIATION_DEADLOCK_THRESHOLD`, integer >= 2, default 4) and — only when `NEGOTIATION_DEADLOCK_SHIFT_ENABLED` is literally `true` — shifts the system agent's drafting stance from arguing merits to offering concessions/scope reductions, escalating to `ask_user` only where that action is already legally held. The shift changes stance only: locutions, seat vocabularies (`allowedActionsFor`), termination rules, and turn-cap semantics are untouched; externally dispatched turns never receive the stance. The applied shift is recorded once per session as internal-only `tasks.metadata.deadlockShift` (optional `setTaskDeadlockShift` hook; never projected by API surfaces) plus a `negotiation_deadlock_shift` trace event. Detection and persistence fail open, and with the flag off the drafting path is byte-identical to before. The turn protocol's formal dialogue-game framing (locutions, combination rules, commitment store, termination) is documented in `docs/design/negotiation-dialogue-game.md`. Symbols are module-local (deep import from `negotiation/negotiation.deadlock.js`), deliberately not re-exported from the root barrel per the IND-457 externally-consumed-surface policy.
@@ -3356,7 +3356,7 @@ above. Entries below keep the version they were developed under.
3356
3356
  - Made negotiation startup claim the exact persisted pre-negotiation status and version, atomically promote the winning opportunity to `negotiating` with its task, and skip finalize persistence when init owns no task (IND-496).
3357
3357
  - Made Personal Agent negotiation narration lifecycle-accurate: concluded agent tasks now carry additive current-opportunity, owner-acceptance, and no-H2H-evidence labels; agent-side `accept` no longer implies owner acceptance, a completed connection, or a message thread (IND-492).
3358
3358
  - Made owned-intent opportunity persistence trigger-aware: recent/lifecycle dedup now reuses only rows linked to the same trigger intent, cross-trigger rows remain independently visible, enrichment cannot absorb another trigger's row, and final persistence reports typed same-trigger/active-negotiation conflicts (IND-495).
3359
- - Clamped intent-pinned `list_negotiations` results to the user's signal, added explicit signal/all scope metadata, and prevented stale cross-signal history from being presented as current negotiations (IND-483).
3359
+ - Clamped intent-pinned `list_negotiations` results to the user's intent, added explicit intent/all scope metadata, and prevented stale cross-intent history from being presented as current negotiations (IND-483).
3360
3360
  - Routed continuation-created and recovered opportunities through the normal negotiation boundary, threaded each persisted attempt version into atomic negotiation-task claiming, protected active/input-required tasks from duplicate negotiation, compensated pre-task failures and timeouts to truthful draft/latent states, and refreshed continuation cards from current lifecycle state (IND-470).
3361
3361
  - Normalized opportunity actor intent IDs at evaluator, graph, and shared persistence boundaries so blank or null-like model sentinels are omitted, valid branded string IDs remain supported, enrichment cannot use or reintroduce malformed provenance, and legacy negotiation reads fail closed (IND-469).
3362
3362
  - Forwarded per-attempt `AbortSignal`s through eval provider paths and hardened failure provenance against secret leakage, hostile rejection objects, classifier failures, and concurrent artifact writers (IND-444).
package/IMPLEMENTATION.md CHANGED
@@ -150,9 +150,9 @@ module classes (see [Intents](#intents) and [Networks](#networks) below).
150
150
 
151
151
  ## On-demand discovery
152
152
 
153
- Discovery is not a protocol workflow and does not run when a signal is written.
153
+ Discovery is not a protocol workflow and does not run when an intent is written.
154
154
  The host exposes it as a search: the owner's agent sends a query, the host
155
- embeds it and retrieves candidate signals from the communities that signal is
155
+ embeds it and retrieves candidate intents from the communities that intent is
156
156
  shared in, and the agent picks which counterparties are worth an opportunity.
157
157
  Nothing is generated ahead of the query and nothing is cached.
158
158
 
@@ -169,7 +169,7 @@ do nothing. `scoreIntent` remains independent metadata work.
169
169
 
170
170
  ## Intents
171
171
 
172
- Signals are the protocol's base unit, and the whole capability ships as one
172
+ Intents are the protocol's base unit, and the whole capability ships as one
173
173
  class. `Intents` covers the lifecycle graph, semantic verification, and payload
174
174
  clarification.
175
175
 
@@ -189,14 +189,14 @@ first use, so an unused method costs nothing.
189
189
 
190
190
  | Method | Purpose |
191
191
  |---|---|
192
- | `createGraph()` | Prepare and create exactly one new signal; explicitly read, update, archive, or transition existing signals. Requires `database` |
192
+ | `createGraph()` | Prepare and create exactly one new intent; explicitly read, update, archive, or transition existing intents. Requires `database` |
193
193
  | `verifyIntent(content, profileContext)` | Felicity conditions, speech-act classification, semantic entropy, specificity |
194
194
  | `prepare({ payload, answers? })` | Fold recovery answers into the draft, then return `ready` with metadata or `needs_revision` with admission feedback and a dynamic recovery form; model failures throw for retry |
195
195
  | `scoreIntent(content, profileContext?)` | Measure saved text without admission filters; a negative verdict still returns metadata |
196
196
  | `Intents.normalizeDescription(description)` | Normalize an explicit update description; creation preserves text verbatim |
197
197
 
198
198
  Creation with `inputContent` prepares the description once and persists that exact
199
- text in a new record, even if a similar signal exists. Guided hosts call `prepare`
199
+ text in a new record, even if a similar intent exists. Guided hosts call `prepare`
200
200
  until it returns `ready`, then issue their own authenticated preparation receipt
201
201
  bound to the owner and admitted draft. After authenticating the receipt, pass
202
202
  `preparation: { metadata }` to `createGraph().invoke()` alongside the final
@@ -214,7 +214,7 @@ membership remain the host's responsibility.
214
214
  ## Networks
215
215
 
216
216
  Communities ship the same way: one class covering the community lifecycle graph,
217
- the membership graph, and signal↔community assignment.
217
+ the membership graph, and intent↔community assignment.
218
218
 
219
219
  ```typescript
220
220
  import { Networks } from "@indexnetwork/protocol";
@@ -231,9 +231,9 @@ construction never fails.
231
231
  |---|---|
232
232
  | `createGraph()` | Compile the community lifecycle graph — create, read, update, delete. Requires `database` |
233
233
  | `createMembershipGraph()` | Compile the roster graph — add, list, remove members. Requires `database` |
234
- | `createAssignmentGraph()` | Compile signal↔community assignment — link and unlink. Requires `database` |
234
+ | `createAssignmentGraph()` | Compile intent↔community assignment — link and unlink. Requires `database` |
235
235
 
236
- Assignment applies no scoring policy: a link exists because the signal's owner
236
+ Assignment applies no scoring policy: a link exists because the intent's owner
237
237
  asked for it, so the row is written at score 1 with `mode: manual_override`.
238
238
 
239
239
  ## The REST API and the CLI