You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Owner-approved product/implementation issue — separate owner, not an extension of #597. Not on the current M1 correctness critical path.
Owner ruling, 2026-07-30:
A user who explicitly brings a live trade decision to FOMO Kernel has created an intent worth recording.
The kernel should record that intent automatically; do not ask a separate “save this?” confirmation.
A later transaction record is evidence that the action occurred.
If no transaction evidence arrives, a later relevant interaction may ask once whether the user bought, did not buy, changed the plan, or is still considering it.
This issue owns that intent lifecycle. #597 continues to own the no-book conversational framing only. #490 continues to own execution-qualified decision memory and trade-event linkage truth.
Milestone
M2 — Recall and Compare My Reasons.
The write begins at the Phase-1 decision moment, but its value is longitudinal memory and later intent-versus-action reconciliation. Do not start this automatically while the current M1 correctness/answer-quality queue is active.
User outcome
A user can begin with no holdings snapshot or transaction history, discuss one real trade, and later return without reconstructing what they meant at the time.
The product can truthfully distinguish:
what the user intended / considered;
whether the user later reported acting;
whether a canonical transaction record proves an action occurred;
whether that transaction can be linked unambiguously to this specific intent.
Example progression:
“I am considering buying X as a small test because Y; I would exit if Z.”
→ DecisionIntent recorded automatically
→ later transaction import proves a buy occurred
→ unique compatible intent is linked, or one bounded mapping question is asked
→ later review can compare intended size/reason/exit with actual book and action
If no transaction evidence appears, the next relevant interaction may ask one bounded question:
“你上次考虑买入 X,后来有执行吗?”
The answer resolves the intent without pretending that a missing trade record exists.
[Phase 2] Not-Buy Tracker:沒買的決策也要記,30天後驗「不買對嗎」 #35 — old Not-Buy Tracker, closed not_planned. It proposed tracking broad watchlist/non-actions plus 30-day counterfactual P&L. This issue is narrower: only a trade the user deliberately brought into a real decision conversation, with no automatic opportunity or missed-return counterfactual.
Problem and consequence
The current stage-1 route creates useful decision context and immediately discards it.
Consequences:
the next conversation repeats the same three questions;
a later holdings snapshot cannot compare declared importance with actual weight;
a later transaction cannot be tied back to the earliest reason and exit condition;
“considered”, “reported executed” and “transaction-proven executed” remain indistinguishable outside the transient host chat;
FOMO Kernel loses the first and often most decision-proximate memory supplied by a new user.
This is not primarily a storage shortage. It is a missing product/domain contract.
Decision
1. Automatic intent capture; no per-intent save confirmation
Explicitly invoking FOMO Kernel for one live trade decision is the product moment that authorizes local decision-memory capture. The host does not ask a second “save this?” question.
User control remains at the local data layer through status/export/reset/deletion mechanisms. Public GitHub evidence remains synthetic.
Only a deliberate trade-decision conversation qualifies. A ticker mention, news question, watchlist scan, or generic company research does not.
2. The stored truth is DecisionIntent, not profile or execution
The first record says only:
The user was considering this action and said these things at this time.
It does not say:
the user executed;
the declared target is an actual portfolio weight;
the exit condition is an adopted permanent rule;
the user has a stable investor style;
the agent’s generated challenge is a user fact.
3. Minimum append-only contract
Use one versioned append-only stream with stable intent_id and event types such as opened, resolved, and superseded; do not mutate an original intent in place.
An opened intent minimally carries:
intent_id;
proposed instrument/action;
exact user wording for intended importance/target size, why_now, and exit/invalidation where supplied;
bounded evidence references when explicitly supplied;
status projection initially open;
idempotency fingerprint so retries cannot append duplicates.
Agent-authored challenge prose is not canonical intent truth. It may be reproduced from source facts or stored separately as labelled judgment only after a concrete reader exists.
4. Resolution sources remain distinct
A resolution event records both status and authority:
executed_trade_record — a canonical TradeEvent proves an action occurred and is linked to this intent;
executed_user_reported — the user says they acted, but no canonical TradeEvent currently proves quantity/date/book consequence;
not_executed_user_reported;
modified — the original intent is superseded by a new one rather than rewritten;
still_considering — remains open;
unknown — no answer; never infer decline or expiry from silence.
A user-reported execution must not create a fabricated TradeEvent, holding, quantity, price or actual portfolio consequence. Later transaction evidence may upgrade the relation.
5. Transaction evidence proves action, but intent linkage may still be ambiguous
A transaction record is sufficient evidence that the recorded buy/sell occurred.
It does not always prove which prior intent or exact reason it realizes when there are multiple same-instrument intents, modified plans, partial executions or different quantities.
First-version rule:
exactly one compatible open intent → link automatically;
zero compatible intents → record the trade normally; do not invent an intent;
multiple compatible intents → ask one bounded mapping question; never guess;
Local-first durable memory. Real intents, reasons, exit conditions, transaction records and mappings remain in the user’s local data root.
Public repository issues, tests, PRs and QA receipts use fictional/generic data only. No private decision text, instrument, amount, date, source or reconstructable combination is posted to GitHub.
Rollout / compatibility / recovery
Slice A — no-book intent writer + bounded reader: append-only record, idempotency, same-instrument recall and one resolution prompt. No execution promotion yet beyond authority-labelled user response.
Later only if proven useful: a shared bounded “what I considered” query spanning no-book intents and existing TradeEvaluations without copying either source.
Legacy roots without the stream remain valid. Rebuilding the status projection from events must be deterministic. A failed append or resolution leaves the prior projection intact; partial files and conflicting resolutions fail closed. Rollback of Slice A removes the new reader/writer without mutating existing ledger, TradeEvaluation or execution-link records.
Stop condition
Stop after the smallest writer+reader slice and one owner-live trajectory prove that the next interaction is materially better: no repeated explanation, intent/execution truth stays separate, and the user can resolve or upgrade the intent in one bounded turn. Do not continue into profile distillation, rule learning, counterfactual P&L or background reminders.
Status
Owner-approved product/implementation issue — separate owner, not an extension of #597. Not on the current M1 correctness critical path.
Owner ruling, 2026-07-30:
This issue owns that intent lifecycle. #597 continues to own the no-book conversational framing only. #490 continues to own execution-qualified decision memory and trade-event linkage truth.
Milestone
M2 — Recall and Compare My Reasons.
The write begins at the Phase-1 decision moment, but its value is longitudinal memory and later intent-versus-action reconciliation. Do not start this automatically while the current M1 correctness/answer-quality queue is active.
User outcome
A user can begin with no holdings snapshot or transaction history, discuss one real trade, and later return without reconstructing what they meant at the time.
The product can truthfully distinguish:
Example progression:
If no transaction evidence appears, the next relevant interaction may ask one bounded question:
The answer resolves the intent without pretending that a missing trade record exists.
Current behavior / evidence
Verified against
main@dabf709/ PR #616:DecisionFramingis host-side only;why_now, or exit condition.Nearby owners do not cover this lifecycle:
TradeEvaluation, i.e. a contemplated trade evaluated against a recorded book.not_planned. It proposed tracking broad watchlist/non-actions plus 30-day counterfactual P&L. This issue is narrower: only a trade the user deliberately brought into a real decision conversation, with no automatic opportunity or missed-return counterfactual.Problem and consequence
The current stage-1 route creates useful decision context and immediately discards it.
Consequences:
This is not primarily a storage shortage. It is a missing product/domain contract.
Decision
1. Automatic intent capture; no per-intent save confirmation
Explicitly invoking FOMO Kernel for one live trade decision is the product moment that authorizes local decision-memory capture. The host does not ask a second “save this?” question.
User control remains at the local data layer through status/export/reset/deletion mechanisms. Public GitHub evidence remains synthetic.
Only a deliberate trade-decision conversation qualifies. A ticker mention, news question, watchlist scan, or generic company research does not.
2. The stored truth is
DecisionIntent, not profile or executionThe first record says only:
It does not say:
3. Minimum append-only contract
Use one versioned append-only stream with stable
intent_idand event types such asopened,resolved, andsuperseded; do not mutate an original intent in place.An opened intent minimally carries:
intent_id;why_now, and exit/invalidation where supplied;decision_framinginitially; do not duplicate an existing [feat·M1] Bounded TradeEvaluation with visible two-sided challenge #479TradeEvaluationrow);recorded_atand producing host/run provenance;open;Agent-authored challenge prose is not canonical intent truth. It may be reproduced from source facts or stored separately as labelled judgment only after a concrete reader exists.
4. Resolution sources remain distinct
A resolution event records both status and authority:
executed_trade_record— a canonical TradeEvent proves an action occurred and is linked to this intent;executed_user_reported— the user says they acted, but no canonical TradeEvent currently proves quantity/date/book consequence;not_executed_user_reported;modified— the original intent is superseded by a new one rather than rewritten;still_considering— remains open;unknown— no answer; never infer decline or expiry from silence.A user-reported execution must not create a fabricated TradeEvent, holding, quantity, price or actual portfolio consequence. Later transaction evidence may upgrade the relation.
5. Transaction evidence proves action, but intent linkage may still be ambiguous
A transaction record is sufficient evidence that the recorded buy/sell occurred.
It does not always prove which prior intent or exact reason it realizes when there are multiple same-instrument intents, modified plans, partial executions or different quantities.
First-version rule:
modifiedand create/link the final intent/premise according to [feat·M2] Explicit execution link promotes an evaluation into durable decision memory #490’s execution contract.6. Follow-up is relevant-event triggered, not a background scheduler
When no transaction evidence resolves an open intent, ask at most one resolution question at the next relevant product moment, for example:
Do not create a timer, notification service, 30-day missed-return queue or broad watchlist sweep in the first version. Silence leaves the intent open.
7. First reader ships with the writer
Do not repeat #429’s write-only-memory defect.
The first implementation must include a visible reader that, on the next relevant interaction:
A writer without this reader is incomplete.
Scope
This issue owns:
DecisionIntentappend contract and stable identity;Non-goals
InvestorProfile, style label or personality inference.TradeEvaluation; avoid duplicate intent records for the same source decision.Acceptance criteria
DecisionIntentwithout asking a save-confirmation question.why_now, action or final premise receives a distinct identity.executed_trade_record.executed_user_reportedand creates no trade/holding/quantity/price fact.not_executedor expired.Dependencies and relations
Privacy boundary
Local-first durable memory. Real intents, reasons, exit conditions, transaction records and mappings remain in the user’s local data root.
Public repository issues, tests, PRs and QA receipts use fictional/generic data only. No private decision text, instrument, amount, date, source or reconstructable combination is posted to GitHub.
Rollout / compatibility / recovery
Legacy roots without the stream remain valid. Rebuilding the status projection from events must be deterministic. A failed append or resolution leaves the prior projection intact; partial files and conflicting resolutions fail closed. Rollback of Slice A removes the new reader/writer without mutating existing ledger, TradeEvaluation or execution-link records.
Stop condition
Stop after the smallest writer+reader slice and one owner-live trajectory prove that the next interaction is materially better: no repeated explanation, intent/execution truth stays separate, and the user can resolve or upgrade the intent in one bounded turn. Do not continue into profile distillation, rule learning, counterfactual P&L or background reminders.