@indexnetwork/protocol 66.0.0-rc.637.1 → 66.0.0-rc.639.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 (32) hide show
  1. package/CHANGELOG.md +75 -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.graph.modes.js +1 -1
  22. package/dist/internal/opportunities/opportunity.presentation.d.ts +3 -3
  23. package/dist/internal/opportunities/opportunity.presentation.js +10 -10
  24. package/dist/internal/shared/agent/model.config.js +4 -1
  25. package/dist/platform/database/entities.d.ts +5 -5
  26. package/dist/protocol/negotiation.rules.d.ts +1 -1
  27. package/dist/protocol/negotiation.rules.js +1 -1
  28. package/dist/protocol/protocol.prompt.d.ts +2 -2
  29. package/dist/protocol/protocol.prompt.js +37 -37
  30. package/dist/protocol/schemas/chat-context.schema.d.ts +1 -1
  31. package/dist/protocol/schemas/chat-context.schema.js +1 -1
  32. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,7 @@
5
5
  ### Added
6
6
 
7
7
  - `OpportunityDetection.source` gains `'introducer'`, stamped on opportunities a third party opens.
8
+ - Protocol agent requests to OpenRouter carry `HTTP-Referer` and `X-Title` headers, so their spend is attributed apart from the hosted agent's, and a `trace` named by the agent key (for example `intentInferrer` or `chat`).
8
9
 
9
10
  ## 66.0.0
10
11
 
@@ -339,7 +340,7 @@ pin a supported release, use `latest`.
339
340
  - Agent-facing tool descriptions, scope-refusal messages, and `read_docs`
340
341
  guidance now say "network" or "community" wherever they said "index".
341
342
  - The intent assignment pipeline keeps its verb naming (`getIntentForIndexing`,
342
- `indexer.graph.ts`, `IndexedIntent`): those describe assigning a signal, not
343
+ `indexer.graph.ts`, `IndexedIntent`): those describe assigning an intent, not
343
344
  the community noun.
344
345
 
345
346
  ## 48.1.0 - 2026-09-04
@@ -359,7 +360,7 @@ pin a supported release, use `latest`.
359
360
  ### Added
360
361
 
361
362
  - **`Intents.clarify({ payload, answers? })` → `{ payload, questions }`.** One
362
- stateless round of signal clarification: with no answers it returns the payload
363
+ stateless round of intent clarification: with no answers it returns the payload
363
364
  untouched plus the questions worth asking; with answers it rewrites the payload
364
365
  so those answers are stated in it and returns whatever is still open. Nothing
365
366
  is stored, so skipping is always valid. `ClarifyAnswer`, `ClarifyInput`,
@@ -372,14 +373,14 @@ pin a supported release, use `latest`.
372
373
  `FollowUpPlan`, `SynthesisInput` and `SynthesisResult` are removed along with
373
374
  the pack generator and intake orchestrator. Clarification is `clarify` now, and
374
375
  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
376
+ - **BREAKING: intents are no longer proposed before they are created.** The
376
377
  dry-run branch of `create_intent`, the `intent_proposal` fence it emitted and
377
378
  the `autoApprove` argument are gone. `create_intent({ description, networkIds })`
378
379
  persists directly, so hosts can drop their proposal storage and their confirm
379
380
  and reject endpoints.
380
381
  - **BREAKING: networks are no longer assigned by a model.** `IntentNetworkIndexer`,
381
382
  `IntentIndexingResult`, `Intents.indexIntent` and the evaluated branch of the
382
- indexer graph are removed, and so is the threshold scoring behind them. A signal
383
+ indexer graph are removed, and so is the threshold scoring behind them. An intent
383
384
  reaches exactly the networks its owner names on create or links afterwards with
384
385
  `create_intent_index`.
385
386
  - **BREAKING: agents no longer have transports.** `AgentTransportRecord`,
@@ -517,7 +518,7 @@ No aliases or compatibility shims: hosts must drop the deleted ports.
517
518
  refs and the `personal-agent.e2e` spec — are deleted. Index no longer runs an
518
519
  agent; a host that wants one builds it as a client over REST/MCP.
519
520
  - **BREAKING: `ChatGraph` and the whole chat capability are gone.**
520
- `ChatGraphFactory`, `ChatAgent`, the personas (`SIGNAL_PERSONA`,
521
+ `ChatGraphFactory`, `ChatAgent`, the personas (`INTENT_PERSONA`,
521
522
  `ONBOARDING_PERSONA`, `withPersona`), the streamer, suggester, summarizer,
522
523
  title generator, interrupt classifier, question-dedup, chat state/tools/utils
523
524
  and the chat-streaming types no longer exist. There is no H2A chat runtime in
@@ -727,14 +728,14 @@ remains.
727
728
 
728
729
  - **`NegotiationGraph` refuses to open an opportunity whose introducers have
729
730
  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.
731
+ discovery decides which intents to wake, so no caller can reach past it.
731
732
  - **New negotiation pause reason `open_failed`.** `NEGOTIATION_PAUSE_REASONS`
732
733
  gains it, and `{ negotiationId, pause }` now accepts
733
734
  `NegotiationSystemPauseReason` (`'counterparty_silent' | 'open_failed'`)
734
735
  rather than the single literal. A kickoff whose open failed after `init`
735
736
  created the task compensates it into this pause, so the round's active count
736
737
  can still reach zero. Unlike `turn_cap` it stays re-kickable.
737
- - **A negotiation binds a signal PER SEAT.** `NegotiationTaskMetadata.intentId`
738
+ - **A negotiation binds an intent PER SEAT.** `NegotiationTaskMetadata.intentId`
738
739
  and `.round` are replaced by `seats: Record<string, NegotiationSeatBinding>`
739
740
  keyed by intent id (`{ userId, round }`), and `setNegotiationRound` becomes
740
741
  `bindNegotiationSeat(taskId, intentId, binding)`. Both sides' IS-A can now
@@ -750,7 +751,7 @@ remains.
750
751
  the caller's own brief only. The `brief` on the graph's open/resume inputs is
751
752
  the INITIATING seat's, never the counterparty's.
752
753
  - **`NegotiationGraphDatabase` gains `getPausedNegotiationTasksForIntent`** —
753
- the signal-scoped read of every paused, unresolved negotiation. Reflect
754
+ the intent-scoped read of every paused, unresolved negotiation. Reflect
754
755
  reasons over that, not over one round: a negotiation a later kickoff left
755
756
  behind keeps its old round, and a round-scoped read hid it from every future
756
757
  verdict.
@@ -765,11 +766,11 @@ remains.
765
766
  `END` without it, so a chat- or MCP-run discovery persists matches nobody is
766
767
  woken for.
767
768
  - **`PersonalAgentDeps` gains `wakeForMatches`** — the agent wakes its own
768
- signal again for a discovery batch that landed after the turn read its match
769
+ intent again for a discovery batch that landed after the turn read its match
769
770
  list.
770
771
  - **The retired `queueNegotiateExisting` host callback is removed** from
771
772
  `ToolDeps` and `OpportunityGraphFactory`. Approving the final introducer
772
- gate emits `matches_ready` for the source participant's bound signal; it
773
+ gate emits `matches_ready` for the source participant's bound intent; it
773
774
  never directly opens or resumes a negotiation.
774
775
 
775
776
  - **AgentGraph: one PersonalAgent, routed on the shape of its input.** New
@@ -781,7 +782,7 @@ remains.
781
782
  what ACT does. IS-A's verbs are `message_user`, `ask`, `kickoff`, `promote`,
782
783
  `reject`, `note_dossier`, `retire_dossier`, `accept_opportunity`; there is
783
784
  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,
785
+ starts no negotiations. The host implements the ports (intent DM, dossier,
785
786
  act ledger, reply transport, the owner's accept path, matches list).
786
787
  - **The interim `NegotiationAuthor` is deleted.** `NegotiationGraphDeps.author`
787
788
  is now a required `NegotiationTurnAuthor` port taking ids only
@@ -790,15 +791,15 @@ remains.
790
791
  Removed exports: `NegotiationAuthor`, `NegotiationAuthorInput`.
791
792
  - **Discovery no longer opens negotiations.** The opportunity graph's
792
793
  `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.
794
+ per intent per persisted batch through the new `MatchesReadyFn` host
795
+ callback; the intent's PersonalAgent decides whether to reach out at all.
795
796
  `OpportunityGraphFactory`'s sixth constructor argument changes from
796
797
  `negotiationGraph` to `matchesReady`, and `ToolFactory`/`ToolDeps` gain
797
798
  `matchesReady`. The tool factory no longer builds a second, reflect-less
798
799
  negotiation graph: without the host's own composition there is no
799
800
  negotiation graph in that context at all.
800
801
  - **The all-paused → reflect trigger is gated on a round-size stamp.**
801
- `NegotiationRoundReflectJobData` gains `userId` (the signal's owner, so the
802
+ `NegotiationRoundReflectJobData` gains `userId` (the intent's owner, so the
802
803
  consumer can invoke the PersonalAgent). `NegotiationGraphDatabase` gains
803
804
  `getNegotiationTasksForIntentRound`, `getIntentNegotiationRound` and
804
805
  `stampIntentNegotiationRoundSize`, and `bumpIntentNegotiationRound` must now
@@ -835,13 +836,13 @@ remains.
835
836
 
836
837
  ### Changed
837
838
 
838
- - **One PersonalAgent persona.** The signal, onboarding, and negotiator chat
839
+ - **One PersonalAgent persona.** The intent, onboarding, and negotiator chat
839
840
  personas collapse into a single `createPersonalAgentPersona(identity)`
840
841
  factory with `PERSONAL_AGENT_PERSONA_ID = 'personal'`. What a turn may do is
841
842
  derived from the session's resolved scope context, never from a persona id;
842
843
  the onboarding prompt/toolset is a fragment selected by incomplete-onboarding
843
844
  session state on truly unscoped sessions only. Removed exports:
844
- `SIGNAL_PERSONA_ID`, `createSignalPersona`, `ONBOARDING_PERSONA_ID`,
845
+ `INTENT_PERSONA_ID`, `createIntentPersona`, `ONBOARDING_PERSONA_ID`,
845
846
  `createOnboardingPersona`, `NEGOTIATOR_PERSONA_ID`, `PersonalAgentChat`,
846
847
  `PersonalAgentChatDeps`. The negotiator persona (prompt, chat toolset, and
847
848
  its `remember`/`forget` chat tools plus the `negotiatorMemoryTools` host
@@ -923,7 +924,7 @@ remains.
923
924
  client answered the one question the initiator paused to ask, the resumed
924
925
  turn-0 decision was entirely re-drafted: an agent that still held a
925
926
  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
927
+ preference read from the profile rather than the intent) could withdraw
927
928
  anyway, seconds after the client answered the thing it did ask, with the
928
929
  counterparty never contacted. Now, if the resumed turn drafts `withdraw`
929
930
  and the dimension actually asked about reconciled to `ok`, the graph
@@ -1005,7 +1006,7 @@ remains.
1005
1006
 
1006
1007
  - **BREAKING: the intent graph routes on the shape of its input, not an
1007
1008
  `operationMode` flag.** `operationMode` is gone from the graph's invoke
1008
- input. Callers now signal intent by which fields they set:
1009
+ input. Callers now express intent by which fields they set:
1009
1010
  `inputContent` alone creates; `inputContent` + `targetIntentIds` is an
1010
1011
  explicit update; `targetIntentIds` + `archive: true` expires; `targetIntentIds`
1011
1012
  + `status` pauses/resumes; `proposalId` (+ `description`, `networkId`)
@@ -1077,7 +1078,7 @@ remains.
1077
1078
  the deterministic consultation policy are on; deadlock-shift is on; the
1078
1079
  negotiator drafts in the `skeptic` stance (`advocate` and `evaluator`, and the
1079
1080
  `stance*` predicates that distinguished them, are gone); negotiators receive
1080
- only each participant's exact opportunity-bound signal; HyDE generates under
1081
+ only each participant's exact opportunity-bound intent; HyDE generates under
1081
1082
  `frame-v1`; candidate evaluation runs in parallel; retrieval floor is `0.20`
1082
1083
  and the evaluator score floor is `40`; the two question miners are pinned to
1083
1084
  `shadow`.
@@ -1163,7 +1164,7 @@ remains.
1163
1164
  - **Persona identity + create_intent scope rule (#1479) — the version stamp
1164
1165
  the change shipped without.** Every chat persona now introduces itself as
1165
1166
  the user's own agent: `buildAgentSelfIntroduction`, plus
1166
- `createSignalPersona` / `createOnboardingPersona` factories taking
1167
+ `createIntentPersona` / `createOnboardingPersona` factories taking
1167
1168
  `agentName` the way the negotiator already did. Tool registration gained
1168
1169
  the scope rule (`isToolAllowedInScope`, `filterToolsForScope`). #1479
1169
1170
  merged these exports without bumping, so two different export surfaces
@@ -1203,11 +1204,11 @@ remains.
1203
1204
  - **An answer beats staleness — drift is logged, never fatal.** Observed live:
1204
1205
  a client answered her own parked question ("Timing: This week") through the
1205
1206
  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
1207
+ returned `lost`, because the intent had been edited twice since the park and
1207
1208
  the revalidation fence required the world to look exactly as it did at park
1208
1209
  time. The park became a zombie: still `input_required`, still rendered as
1209
1210
  "waiting on YOUR answer" by every surface, structurally unanswerable. The
1210
- design law is explicit: signal edits cascade nothing, and a stale negotiation
1211
+ design law is explicit: intent edits cascade nothing, and a stale negotiation
1211
1212
  is solved by ANSWERING its question — the user's answer is the freshest
1212
1213
  commitment there is, and the resumed turn rebuilds its context from current
1213
1214
  data anyway.
@@ -1215,16 +1216,16 @@ remains.
1215
1216
  The settle's one fence is now two. Coherence stays hard: an answer that does
1216
1217
  not belong to its park (settlement mismatch, wrong recipient, task no longer
1217
1218
  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
1219
+ stops losing: within a live opportunity and an active intent, the answer
1219
1220
  settles and resumes regardless of what moved since the park.
1220
1221
 
1221
1222
  - **The unresumable tail is an explicit proposal, not a silent drop.** When
1222
1223
  current reality genuinely cannot continue — terminal opportunity or archived
1223
- signal — the answer is still recorded as heard: settlement result and resume
1224
+ intent — the answer is still recorded as heard: settlement result and resume
1224
1225
  outcome `recorded_unresumable` (additive), the block-consumption result
1225
1226
  counts it in its own `recorded` array so a `skipped` count can never again
1226
1227
  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
1228
+ truth, proposing re-discovery under the updated intent — an offer, never an
1228
1229
  automatic act.
1229
1230
 
1230
1231
  ## 23.6.0 - 2026-08-20
@@ -1370,14 +1371,14 @@ remains.
1370
1371
  ### Added
1371
1372
 
1372
1373
  - **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
1374
+ negotiator DM for one intent, a client told their agent to reject the
1374
1375
  counterparty — a pairing parked `input_required`. The agent could not comply.
1375
1376
  The owner makes exactly three kinds of decision in that room. They ANSWER a
1376
1377
  question a parked negotiation asked, which `answer_pending_question` gave a
1377
- lane. They EDIT the signal, which `update_intent` always covered.
1378
+ lane. They EDIT the intent, which `update_intent` always covered.
1378
1379
  And they pass a VERDICT on a counterparty, which had no lever at all. So on
1379
1380
  "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
1381
+ edit the intent instead; the pairing stayed parked and the counterparty
1381
1382
  stayed live.
1382
1383
 
1383
1384
  `update_opportunity` is in the negotiator toolset and cannot substitute for
@@ -1397,7 +1398,7 @@ remains.
1397
1398
  cannot see them. `NegotiatorVerdictToolsHost` is the whole surface the package
1398
1399
  knows; the composition root owns everything behind it.
1399
1400
 
1400
- - **Numbered refs, never ids.** The prompt renders this signal's actionable
1401
+ - **Numbered refs, never ids.** The prompt renders this intent's actionable
1401
1402
  counterparties as `N. {name} — {state}`, and the tool takes the number. The
1402
1403
  schema offers no place to put an id and no result string carries one. The rule
1403
1404
  is `answer_pending_question`'s, for a sharper reason: a ref the model can name
@@ -1412,18 +1413,18 @@ remains.
1412
1413
 
1413
1414
  ### Changed
1414
1415
 
1415
- - **The pinned-signal prompt gains a verdict section, and only where the tools
1416
+ - **The pinned-intent prompt gains a verdict section, and only where the tools
1416
1417
  exist.** `NegotiatorPromptOptions.actionableCounterparties` renders
1417
1418
  `## Verdicts {userName} can pass here` plus two tool-reference rows. It says
1418
1419
  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
1420
+ the intent; that a verdict the client did not pass must never be passed for
1420
1421
  them; that `update_opportunity` is not this lever; and that an accept is one
1421
1422
  side of two and never a connection. Rendered only in an intent-pinned session
1422
1423
  with a non-empty list, since that is the only place the tools are registered.
1423
1424
  Absent or empty leaves the prompt byte-identical to 23.4.0.
1424
1425
 
1425
1426
  - **Result copy is honest at every status.** `executed` names the counterparty
1426
- and forbids also editing the signal; `none_actionable` forbids implying a
1427
+ and forbids also editing the intent; `none_actionable` forbids implying a
1427
1428
  decision was recorded; `unknown_counterparty` states plainly that nothing was
1428
1429
  decided and re-lists the current set; `already_decided` says whose move it is;
1429
1430
  `error` forbids describing the pairing as decided. A host that throws is
@@ -1592,7 +1593,7 @@ remains.
1592
1593
  ### Changed
1593
1594
 
1594
1595
  - **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
1596
+ Every stage of the flow — intent, discovery, agents talking, match, meet — was
1596
1597
  verified working except one arrow: the agent asking its own client something
1597
1598
  only that client can settle. In a week of live traffic it fired zero times,
1598
1599
  against 23 policy-recognized consultation moments. The reason is structural
@@ -1664,7 +1665,7 @@ remains.
1664
1665
  settle, so an open dimension on turn 0 is the shape the protocol asked for, not
1665
1666
  a dodge — and a floor that bound there would park every negotiation before it
1666
1667
  ever made contact. Turn 0 already has its own designed consult, the pre-contact
1667
- verdict, bounded per signal.
1668
+ verdict, bounded per intent.
1668
1669
 
1669
1670
  - **The verdict prompt's escape hatch is now conditional.** "What remains unknown
1670
1671
  is the kind of thing two people settle in a first conversation" waved verdicts
@@ -1682,7 +1683,7 @@ remains.
1682
1683
  ### Fixed
1683
1684
 
1684
1685
  - **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
1686
+ a phrase in the client's own intent meant; the answering agent could not consult
1686
1687
  its (unreachable) principal and its record did not settle the phrase, so with no
1687
1688
  legal move left it copied the question back word for word. Both models then
1688
1689
  locked — reproducing text already in context is close to deterministic — and the
@@ -1702,7 +1703,7 @@ remains.
1702
1703
  `PRINCIPAL_UNREACHABLE_RULE` said never stall and never route the client's
1703
1704
  question to the other side, but named no move for the case that occurred: the
1704
1705
  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
1706
+ settle. The rule now says to state the limit of the record — "X's intent says
1706
1707
  Y; it does not specify further" is a complete answer — and to let the
1707
1708
  counterparty score that dimension unknown, never repeating or mirroring their
1708
1709
  question and never inventing an answer the record does not hold.
@@ -1757,7 +1758,7 @@ remains.
1757
1758
 
1758
1759
  ### Fixed
1759
1760
 
1760
- - **Retrieval scores no longer clamp at a flat ceiling.** The multi-signal bonus in
1761
+ - **Retrieval scores no longer clamp at a flat ceiling.** The multi-intent bonus in
1761
1762
  `mergeStrategyCandidates` was added to the raw similarity and then clamped
1762
1763
  (`Math.min(raw + boost, 1)`), so candidates found by enough strategies all landed
1763
1764
  on exactly 1.0. Candidates enter evaluation strictly by rank, so a head cluster of
@@ -1847,7 +1848,7 @@ remains.
1847
1848
 
1848
1849
  - **The QuestionerAgent generation half** (conversational-questions plan,
1849
1850
  "Retirements"). Questions are conversation: the parked negotiation is the
1850
- durable record and the question-message in the signal's DM is its
1851
+ durable record and the question-message in the intent's DM is its
1851
1852
  rendering, so the card generators go. Removed: `QuestionerAgent`,
1852
1853
  `question.presets`, the blocking chat `ask_user_question` tool and its
1853
1854
  `ChatQuestionsHost` bridge (with the `user_question` stream event and the
@@ -1862,8 +1863,8 @@ remains.
1862
1863
 
1863
1864
  ### Changed
1864
1865
 
1865
- - The signal and onboarding personas interview in plain conversation: the
1866
- guided New Signal intake drops its blocking question-card rounds, and its
1866
+ - The intent and onboarding personas interview in plain conversation: the
1867
+ guided New Intent intake drops its blocking question-card rounds, and its
1867
1868
  stage machine reduces to interview → complete (`create_intent` is the only
1868
1869
  remaining stage marker).
1869
1870
 
@@ -1996,7 +1997,7 @@ same 44 names as before. Only paths private to the capability moved.
1996
1997
 
1997
1998
  - **BREAKING**: The `intents` capability now ships as a single class. `Intents`
1998
1999
  replaces `IntentGraphFactory`, `SemanticVerifier`, `IntentIndexer`,
1999
- `SignalIntakePackGenerator`, `SignalIntakeOrchestrator`,
2000
+ `IntentIntakePackGenerator`, `IntentIntakeOrchestrator`,
2000
2001
  `normalizeIntentDescription`, and `FALLBACK_WHO_QUESTION`, all of which are
2001
2002
  no longer exported. Dependencies move from positional constructor arguments
2002
2003
  to a named `IntentsDeps` bag, and every field is optional — a host that wants
@@ -2007,9 +2008,9 @@ same 44 names as before. Only paths private to the capability moved.
2007
2008
  | `new IntentGraphFactory(db, embedder, queue, enqueue).createGraph()` | `new Intents({ database, embedder, queue, questionerEnqueue }).createGraph()` |
2008
2009
  | `new SemanticVerifier().invoke(content, context)` | `new Intents().verifyIntent(content, context)` |
2009
2010
  | `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)` |
2011
+ | `new IntentIntakePackGenerator().generate(input)` | `new Intents().generateIntakePack(input)` |
2012
+ | `new IntentIntakeOrchestrator().generateFollowUps(input)` | `new Intents().generateIntakeFollowUps(input)` |
2013
+ | `new IntentIntakeOrchestrator().synthesize(input)` | `new Intents().synthesizeIntake(input)` |
2013
2014
  | `normalizeIntentDescription(text)` | `Intents.normalizeDescription(text)` |
2014
2015
  | `FALLBACK_WHO_QUESTION` | `Intents.FALLBACK_INTAKE_QUESTION` |
2015
2016
 
@@ -2075,7 +2076,7 @@ same 44 names as before. Only paths private to the capability moved.
2075
2076
  - `ContactServiceAdapter` narrows to `listContacts` / `removeContact` /
2076
2077
  `searchContacts`; `importContacts` and `addContact` are gone, along with the
2077
2078
  `ContactInput`, `ContactResult` and `ContactImportResult` domain types.
2078
- - Orchestrator, negotiator, signal and onboarding prompt surfaces no longer
2079
+ - Orchestrator, negotiator, intent and onboarding prompt surfaces no longer
2079
2080
  advertise contact import or Gmail import.
2080
2081
 
2081
2082
  ## 16.1.0 - 2026-08-17
@@ -2142,7 +2143,7 @@ from the package root.
2142
2143
  (`projectActivitySummary`, `ActivitySummaryResponseSchema`,
2143
2144
  `QUESTION_MODE_TO_DOMAIN`, `READ_ACTIVITY_SUMMARY_TOOL_NAME`, …).
2144
2145
  - **Persona helpers** — the `filter*Tools` / `narrow*Tools` helpers, the
2145
- `*_TOOL_NAMES` constants, and the `SIGNAL_NEW_SIGNAL_KICKOFF` /
2146
+ `*_TOOL_NAMES` constants, and the `INTENT_NEW_INTENT_KICKOFF` /
2146
2147
  `ONBOARDING_PROFILE_KICKOFF` constants. The persona IDs, the prompt
2147
2148
  constants, and `REPORTER_BRIEFING_KICKOFF` stay — `apps/web` imports the
2148
2149
  latter.
@@ -2154,7 +2155,7 @@ from the package root.
2154
2155
  slated for removal with the eval harnesses, and this accessor should be
2155
2156
  pruned in the same change. These back live Railway configuration and are
2156
2157
  unchanged in behaviour; only the re-export is gone.
2157
- - **Signal-intake types** — `IntakePack`, `IntakePackInput`, `SynthesisInput`,
2158
+ - **Intent-intake types** — `IntakePack`, `IntakePackInput`, `SynthesisInput`,
2158
2159
  `SynthesisResult`, `FollowUpPlan`, `answerLabel`, `normalizeIntakePack`, …
2159
2160
 
2160
2161
  Two of the removed symbols (`createAgentTools` and
@@ -2359,7 +2360,7 @@ Directory names only.
2359
2360
 
2360
2361
  | before | after |
2361
2362
  |---|---|
2362
- | `signals/` | `intents/` |
2363
+ | `intents/` | `intents/` |
2363
2364
  | `communities/` | `networks/` |
2364
2365
  | `opportunity/` | `opportunities/` |
2365
2366
  | `negotiation/` | `negotiations/` |
@@ -2395,7 +2396,7 @@ This is internal structure only.
2395
2396
  were `*.tools.port.ts` port definitions misfiled into a facade directory. The
2396
2397
  ports moved into their capability's `ports/`.
2397
2398
  - Removed the nine per-capability `public/index.ts` barrels. Three of them
2398
- (`signals`, `communities`, `opportunity`) already had zero importers.
2399
+ (`intents`, `communities`, `opportunity`) already had zero importers.
2399
2400
 
2400
2401
  ### Changed
2401
2402
 
@@ -2426,7 +2427,7 @@ This is internal structure only.
2426
2427
  (three pure text predicates, no imports of its own). `negotiation` and
2427
2428
  `contacts` needed it and were pulling the whole opportunity capability.
2428
2429
  - `UnderspecificationTypeSchema` → `shared/schemas/underspecification.schema.ts`.
2429
- The signals clarifier was importing the entire questions capability — LLM
2430
+ The intents clarifier was importing the entire questions capability — LLM
2430
2431
  agents and tools included — to reach a three-value enum.
2431
2432
 
2432
2433
  - `CAPABILITY_DIRECTORIES` mapped `questioner` but not `questions`, so every
@@ -2467,7 +2468,7 @@ commit (`225425371d`) rather than from memory.
2467
2468
 
2468
2469
  Production evidence at the time: the orchestrator had written no new session
2469
2470
  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
2471
+ Intent cutover flag was already on. The 9,464 historical orchestrator
2471
2472
  conversations remain readable.
2472
2473
 
2473
2474
  ## 13.2.1 - 2026-08-16
@@ -2482,7 +2483,7 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2482
2483
  declaration-only placeholders with zero inbound imports; `runtime/background`
2483
2484
  and `public` consisted of nothing but a header comment. The only thing
2484
2485
  referencing them was a spec asserting that they existed.
2485
- - Removed eight unused capability barrels (`signals/index.ts`,
2486
+ - Removed eight unused capability barrels (`intents/index.ts`,
2486
2487
  `communities/index.ts`, `contacts/index.ts`, `questions/index.ts`,
2487
2488
  `opportunity/index.ts`, `negotiation/index.ts`, `integrations/index.ts`,
2488
2489
  `participant-agents/index.ts`). Each was `export * from "./public/index.js"`
@@ -2501,8 +2502,8 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2501
2502
  `shared/agent/tool.registry.ts` and `shared/agent/tool.factory.ts`, and the
2502
2503
  indirection is gone. `mcp.server.ts` was the one direct consumer of the old
2503
2504
  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
2505
+ - `intents/application/intent.tools.ts` is imported directly by the tool
2506
+ factory; the `runtime/foreground/intents/intent.tools.ts` pass-through
2506
2507
  re-export that sat between them is removed.
2507
2508
  - Replaced `architecture/tests/runtime-shells.spec.ts` with
2508
2509
  `architecture/tests/package-entry.spec.ts`, which asserts the invariants that
@@ -2631,7 +2632,7 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2631
2632
 
2632
2633
  ### Removed
2633
2634
 
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.
2635
+ - **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
2636
  - Remove the never-emitted `question_generator_start` / `question_generator_end` stream events and the `DebugMetaDiscoveryQuestions` debug payload, which had no producer.
2636
2637
 
2637
2638
  ### Changed
@@ -2685,26 +2686,26 @@ No public API change: all 441 exported symbols are byte-identical to 13.2.0, and
2685
2686
 
2686
2687
  ### Added
2687
2688
  - 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.
2689
+ - 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
2690
  - Add the protocol-only Guided Atlas, deterministic architecture inventory
2690
2691
  generator, and source-evidenced Configuration Lab. The atlas explains
2691
2692
  normative concepts, the current `packages/protocol` reference implementation,
2692
2693
  and counterfactual behavior-gate changes, while live environment values and
2693
2694
  concrete API or host implementations remain outside its scope. Tooling-only
2694
2695
  public-package change; no root export or runtime behavior changes.
2695
- - Deterministic fast signal intake (#1307; 8.1.0). `SignalIntakePackGenerator`
2696
+ - Deterministic fast intent intake (#1307; 8.1.0). `IntentIntakePackGenerator`
2696
2697
  precomputes a per-user intake brief plus round-1 question, and
2697
- `SignalIntakeOrchestrator` drives the funnel as a deterministic state machine
2698
+ `IntentIntakeOrchestrator` drives the funnel as a deterministic state machine
2698
2699
  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`,
2700
+ deterministic community picker. New stable exports from the `intents` facade:
2701
+ `IntentIntakePackGenerator`, `normalizeIntakePack`, `IntentIntakeOrchestrator`,
2701
2702
  `answerLabel`, `FALLBACK_WHO_QUESTION`, `FALLBACK_BRING_QUESTION`, and the
2702
2703
  `IntakePack` / `IntakePackInput` / `IntakePackQuestion` /
2703
2704
  `IntakePackQuestionOption` / `IntakeAnswer` / `SynthesisInput` /
2704
2705
  `SynthesisResult` types. Minor bump: additive surface only.
2705
2706
 
2706
2707
  ### 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.
2708
+ - 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
2709
  - Remove unsupported deprecated source/deep forwarding shims after migrating repository consumers to canonical modules; stable package-root exports are unchanged.
2709
2710
  - Add a fail-closed isolated provider-free test gate (10.1.1). Tooling-only
2710
2711
  safety foundation; no runtime or public API behavior changes.
@@ -2797,12 +2798,12 @@ above. Entries below keep the version they were developed under.
2797
2798
  - Add canonical shared guidance source and unified MCP_INSTRUCTIONS/read_docs
2798
2799
  (IND-602/603; 7.10.0): The single normative `CANONICAL_GUIDANCE_SUMMARY`
2799
2800
  (1,555 chars, under the 4,500-char MCP context budget) covers Index Network
2800
- entity model (identity/context, premises, signals, communities/networks,
2801
+ entity model (identity/context, premises, intents, communities/networks,
2801
2802
  opportunities), negotiation semantics with the critical distinction
2802
2803
  **"A2A acceptance is not owner approval"** (separate gates), H2A/A2A
2803
2804
  workflows, and the boundary **"H2H (human-to-human) never exposed; escalation
2804
2805
  to native surfaces (web, Telegram) is outside MCP scope."** Seven detailed
2805
- canonical topics (identity-context, premises, signals, communities-networks,
2806
+ canonical topics (identity-context, premises, intents, communities-networks,
2806
2807
  opportunities, negotiations, workflows) are published via read_docs on both
2807
2808
  MCP and REST/chat surfaces. MCP surface read_docs serves canonical guidance
2808
2809
  only; REST/chat retains legacy supplemental topics for backwards compatibility.
@@ -2970,7 +2971,7 @@ above. Entries below keep the version they were developed under.
2970
2971
  `manage:negotiations`); the handler then passes the typed resolved MCP caller
2971
2972
  context into one centralized permission projection, so global agents receive
2972
2973
  only the domains their permissions authorize while session humans receive the
2973
- full owner view. Signal IDs/titles (`opportunitiesBySignal`) are exposed only
2974
+ full owner view. Intent IDs/titles (`opportunitiesByIntent`) are exposed only
2974
2975
  with `manage:intents`, and question counts are meta-network — never network
2975
2976
  filtered — while each count inherits the permission of the domain the
2976
2977
  question affects: the adapter groups pending/answered counts by question
@@ -3165,15 +3166,15 @@ above. Entries below keep the version they were developed under.
3165
3166
  policy characterization.
3166
3167
  - Characterization specs for membership authority (join-policy enforcement,
3167
3168
  owner-only removal), privacy/scope intersection (scoped vs unscoped read,
3168
- `showAll` bypass), and signal assignment policy (direct / evaluated /
3169
+ `showAll` bypass), and intent assignment policy (direct / evaluated /
3169
3170
  no-prompt fast path, membership re-check at persistence time, unassign
3170
3171
  authority).
3171
3172
 
3172
3173
  ### Changed
3173
3174
  - `capabilities/communities.facade.ts` now imports from
3174
3175
  `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
3176
+ - `capabilities/intents.indexing.facade.ts` updated to import
3177
+ `IntentIndexer` from `capabilities/intents.facade.ts` (canonical) instead
3177
3178
  of the legacy `intent/intent.indexer.ts` shim.
3178
3179
  - Communities capability boundary script updated: `communities/` directory now
3179
3180
  maps to the `communities` capability (alongside legacy `network/`).
@@ -3292,7 +3293,7 @@ above. Entries below keep the version they were developed under.
3292
3293
  the graph while retaining its LangGraph node routing and externally visible
3293
3294
  lifecycle semantics (IND-530).
3294
3295
  - Slice tool-factory dependencies into named capability-owned ports for
3295
- enrichment, signals, communities, opportunities, premises, contacts,
3296
+ enrichment, intents, communities, opportunities, premises, contacts,
3296
3297
  integrations, participant agents, negotiations, and questions. `ToolDeps`
3297
3298
  and `ToolContext` remain structurally compatible composition intersections at
3298
3299
  registry/runtime boundaries; ports are declared and exported through their
@@ -3311,20 +3312,20 @@ above. Entries below keep the version they were developed under.
3311
3312
  - 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
3313
 
3313
3314
  ### Added
3314
- - Capability facades for Signals, Participant context, Communities,
3315
+ - Capability facades for Intents, Participant context, Communities,
3315
3316
  Opportunities, Negotiation, Questions, Participant agents, Contacts, and
3316
3317
  Integrations. Cross-capability callers now use named, narrow facade contracts;
3317
3318
  the root barrel remains backward compatible and also adds the corresponding
3318
3319
  explicit tool-factory entry points. Architecture tooling records every allowed
3319
3320
  dependency direction and preserves the in-place directory layout for later
3320
3321
  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.
3322
+ - 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
3323
  - 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.
3324
+ - 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
3325
  - 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.
3326
+ - 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
3327
  - 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.
3328
+ - 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
3329
  - `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
3330
  - 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
3331
  - 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 +3357,7 @@ above. Entries below keep the version they were developed under.
3356
3357
  - 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
3358
  - 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
3359
  - 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).
3360
+ - 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
3361
  - 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
3362
  - 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
3363
  - 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