Skip to content

[research·roadmap] Staged direction: pre-trade challenge → decision memory → rule learning #475

Description

@atomchung

Privacy boundary

This is a public roadmap issue. No real trade, holding, amount, date, thesis, evidence item, source, or other content from any private repository may be copied into this issue or into fomo-kernel. Product lessons must be expressed only as generic requirements, public research, or fictional fixtures.

Status

Owner-updated to enforce staged scope and a strict separation between the public kernel and any private investing workflow.

This issue is a staged product roadmap and scope guard, not a request to reproduce a full investment workflow and not an implementation epic.

Phase 1 slices: #479 (book-aware lane, landed as M1) and #597 (no-book entry lane, owner-ruled into this phase 2026-07-30).
Foundation and safety: #467, #456, #478, #414.

Product decision

FOMO Kernel should not become a full investment OS, wealth manager, research terminal, or copy of any private investing system.

Real investing use validates the needs, not the amount of product that must be copied:

  • information before a trade matters;
  • the reason for acting matters;
  • portfolio consequence matters;
  • later outcomes should be compared with what was believed at the time;
  • personal rules should eventually be tested rather than merely written down.

The narrower product thesis is:

FOMO Kernel is a local, auditable decision-accountability kernel for trading. It challenges the next trade against the user's actual book, records the minimum context needed to judge that decision later, and gradually learns which personal rules deserve to survive.

A host may have rich research, ticker notes, news collection, or a private investment process. FOMO Kernel does not need to own or ingest those systems. It needs a small, explicitly supplied contract for receiving the decision-relevant result.

Core user questions

The long-term product should become unusually good at answering:

為什麼當初買?
現在加碼的理由,和當初一樣嗎?
這是真的新證據,還是價格下跌後的合理化?
這筆交易會讓組合變成幾個高度相關的同一押注嗎?
上次用相同理由加碼,發生了什麼?
我訂過的規則,到底有沒有用?

These remain the product direction. They do not all need to ship in the first version.

Market conclusion, kept short

Adjacent products already cover AI journals, behavioral analytics, thesis notes, research workflows, broker sync, and portfolio advice. Breadth is therefore not the opportunity.

The differentiating loop is the connection between:

what the user knew / believed
→ what the proposed trade does to the actual book
→ what the user decided and executed
→ what happened afterward
→ whether the reason, rule, and agent judgment held up

The first release only needs to make the first two arrows useful and preserve enough explicitly supplied context for later reconciliation.


Staged roadmap

Phase 0 — make the existing two capabilities trustworthy

Goal: review and consider must quote the same honest portfolio footing before more memory is added.

Work already has homes:

Phase 0 adds no broad product capability. It prevents the next phases from learning from or advising against the wrong book.

Phase 1 — minimal pre-trade decision loop

Goal: make one pre-trade conversation useful without requiring a full profile, ticker wiki, research database, or review card.

A user should be able to say:

"I am considering adding this position. My current reason is X; what changed is Y."

Two entry lanes, one conversation

Owner ruling 2026-07-30: evidence is a gradient, not a 1/0, and refusing to answer is not the mechanism that earns an upload — guidance is. A user with nothing recorded still enters here; they are walked up, and the product's own chain has to earn the trade history rather than demand it as a precondition.

Lane Entry condition Outcome Owner
1a — no-book entry no transaction export, no holdings snapshot one bounded DecisionFraming: strongest case for and against, the decision's key tension, the user's own exit condition, and a visible statement that actual weight, concentration, cash and rule collisions were not checked #597
1b — book-aware a recorded book or supplied snapshot TradeEvaluation: exact consequence, rule collisions, two-sided provenance-labelled challenge #479landed

1a is an entry to the same conversation, not a lesser product and not a separate phase. It reuses 1b's questions, the bounded market-lookup contract, the limitation vocabulary and every red line; it must not reopen, fork or widen any 1b contract. 1b's landing is unaffected by 1a's absence.

The failure mode 1a is designed against: a book-free answer that reads as a partially-filled TradeEvaluation. It is a separate bounded outcome with a stated limit, and it never emits an empty or zero-valued portfolio_state.

The response in either lane combines:

Engine-owned facts

  • exact portfolio basis and freshness;
  • post-trade position weight;
  • concentration / driver overlap;
  • cash consequence;
  • collision with currently tracked rules;
  • explicit limitations when data is stale or incomplete.

Small decision context

  • current reason;
  • why now / what changed;
  • zero to a few evidence references explicitly supplied by the user or host.

Agent interpretation

  • case for and against;
  • whether the input contains an evidence delta or only a price delta;
  • which claims come from the record, public facts, or agent judgment;
  • important items not checked.

Lane 1b's implementation slice is #479 (landed). Lane 1a is #597, and its own decision gate — one ephemeral conversation-only prototype plus an owner verdict — comes before any implementation issue is opened for it.

Phase 1 does not require

  • automatic consultation-to-broker-trade matching;
  • a new permanent DecisionEpisode graph;
  • cross-period reason similarity search;
  • automatic thesis-drift detection;
  • a complete research/evidence platform;
  • rule backtesting;
  • a new mandatory card lifecycle;
  • reading from or copying any private repository.

The existing consider record and existing review flow remain the containers. The first step is to add only the missing decision context beside the already-computed consequence.

Scope guard specific to lane 1a

Phase 1 success gate

A context-free consider call remains unchanged, while a context-bearing call can:

  1. compute the consequence against a stated portfolio basis when a book exists; and when none exists, produce lane 1a's bounded framing that states which portfolio facts were not checked, rather than refusing or improvising them;
  2. preserve the user's explicitly supplied current reason and what changed;
  3. produce a two-sided, provenance-labelled answer;
  4. work from plain conversation or an optional external host;
  5. avoid importing any news, wiki, KOL, asset-management, or private-repository subsystem;
  6. invite the next piece of evidence by naming the specific answer it would buy — not by asking for data in the abstract, and never by withholding a useful answer as leverage.

Do not start Phase 2 until this interaction is used enough to show that users actually provide and revisit the context.

Phase 2 — cross-period personal memory

Goal: answer the first five core questions from the user's own fomo-kernel history.

Build on, rather than replace, existing work:

This phase should enable:

  • why the user originally bought;
  • whether today's add reason differs from the earlier reason;
  • what changed between the two statements;
  • retrieval of a small number of relevant prior executed analogs;
  • what happened after similar reasons were used before.

Scope guard

Do not start by designing a full InstrumentThesisThread, universal evidence graph, or generalized investment ontology. Use the existing trade, thesis, consultation, and append-only state until a concrete reader cannot be built without a new object.

A new domain object must solve a measured failure, not merely make the diagram cleaner.

Phase 2 may read only data the user deliberately supplied to fomo-kernel or that fomo-kernel computed itself. It must not silently pull from a private repository.

Phase 3 — rule learning

Goal: answer, "我訂過的規則,到底有沒有用?"

The likely product shape is Decision Policy Replay, not a generic strategy backtest.

It may report:

  • how many real opportunities were eligible for the rule;
  • when the rule would have triggered;
  • whether the user followed it;
  • which actual trades the rule would have blocked or modified;
  • what those actual trades subsequently did;
  • whether the rule should be kept, revised, promoted, or retired.

It must not claim a fabricated full-portfolio counterfactual such as "this rule would have made $X," because the record does not know where released capital would have gone or which unexecuted trades would have replaced the blocked ones.

No separate implementation issue is opened yet. Phase 3 depends on Phase 2 history, known_at discipline, and an opportunity denominator. Opening it now would create a speculative backlog rather than an executable slice.

Phase 4 — optional adapters, only after validation

Possible thin integrations:

  • an explicitly configured external-host context adapter;
  • read-only broker sync;
  • ETF constituent lookup;
  • faster invocation surfaces such as a share sheet, browser extension, or command launcher.

Adapters must be opt-in and contract-based. They may pass only fields deliberately selected for the kernel; they must not crawl, mirror, or bulk-copy a private repository.

These are adapters around the kernel, not reasons to turn the kernel into a resident wealth-management application.


Simplified ownership boundary

FOMO Kernel owns

  1. PortfolioState and deterministic trade consequences.
  2. TradePremise for the proposed action.
  3. A small DecisionContext deliberately supplied by the user or host.
  4. Append-only memory created inside fomo-kernel for later review and reconciliation.
  5. Rule adherence and, later, bounded rule efficacy analysis.

The host may own

  • ticker wikis and long-form theses;
  • morning notes, KOL scans, filings, and research reports;
  • watchlists and idea discovery;
  • richer owner-specific decision procedures;
  • any presentation layer beyond the kernel's stable outputs.

The reusable boundary is:

The host gathers information; the kernel receives only a deliberately selected decision-relevant delta beside the computed consequence.

No implicit repository reading or bulk synchronization is part of this boundary.


Explicitly out of scope for the first product stage

  • cloning any private or full research workflow;
  • reading, copying, indexing, or summarizing a private repository into fomo-kernel;
  • household net worth, retirement, tax, or full asset-allocation management;
  • autonomous stock selection or market-wide alpha discovery;
  • price targets and market forecasts as engine facts;
  • a crawler, filing warehouse, transcript database, or KOL platform;
  • a generic evidence knowledge graph;
  • automatic tracking of every trade considered but not taken;
  • multi-trade swap / pass / defer ontology;
  • automatic execution matching;
  • redesigning all current rule types at once;
  • requiring a card for daily conversational use;
  • generic investment advice offered in place of a portfolio fact the product could not compute.

These may be revisited only after a narrower phase demonstrates a concrete missing capability, and never by copying private records into the public repository.

Issue map

Need Existing / new issue
Portfolio correctness and common basis #467, #456, #478
Free-form answer provenance #414
Minimal current reason + evidence delta (lane 1b) #479
No-book decision framing (lane 1a) #597
Bounded market-context lookup #601
Declared principles, their revisions, and declared-vs-observed collisions #446
Cross-period self-report reader #450
Motive accumulation / reason drift #403
Optional bounded profile distillation #446, #453
Trigger reliability #458
Decision Policy Replay not opened until prerequisites exist

Product positioning draft

FOMO Kernel challenges the next trade against your actual book and preserves the minimum decision context needed to judge it later.

Long-term loop:

Why I acted → what the trade did to my book → what happened → what rule I learned → whether the next decision changed.

Near-term loop:

What I am considering → why now → what it does to my book → which rule or assumption it conflicts with.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions