Commit Graph
2193 Commits
Author SHA1 Message Date
Jesse_ChenandClaude Fable 5 9943a05a01 docs(research): brief for minute-resolution scoring, plus the upstream gap report
上游 b9a0ef8f..92d3a47a 的 43 个提交里生时校正零改动,没有新技法可取。候选
分不开的根因在本仓自己的打分结构:一个日精度事件里窗口内恒定的项上限 11.5
分,随分钟变化的项上限 2.125 分,约 5:1。研究单先修封存基准(v3 每例仅 3 件
事、被标 invalidated)出 v4,再离线量五个改法:分盘除数、去底座、KP 宫头子主
计分(产品 2026-09-14 拍板,推翻 BUG-325 的「不得计分」一条)、年精度事件改
边际似然、聚类签名层与计分层对齐。有收益才另立实现单。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 11:17:33 +00:00
jesse-ux d97b9e9fe6 fix(rectification): ask unused style probes before every range card
Independent Staging Quality Gate / validate (push) Failing after 9m19s
Independent Staging Quality Gate / publish (push) Skipped
Hold delivery whenever tie-break questions remain, not only on a one-point lead. Drop the event-anchor discard for varga_style; keep the two-sign split gate.
2026-09-14 18:30:40 +08:00
jesse-ux 7f28bfecbb fix(rectification): ask tie-break questions before the range card (BUG-685/686/687)
Close leads hold delivery until unused D9/D10 style questions are asked. Tie-break POST merges the new turn into the transcript. Range copy no longer lists declined lines.
2026-09-14 18:23:54 +08:00
Jesse_ChenandClaude Fable 5 1c424bf6d5 docs(tasks): drop the event-anchor gate for style probes, keep the sign-count gate
产品追问:事件题答「没有」不应连带关掉风格题。核实后 varga_style 的
unanchored_varga_style 丢弃分支(method-followup.ts:1261)确实没有道理——风格题
只看该分盘上升星座,不依赖事件。本单删除该分支。真正该留的是区分力门:候选在该
分盘上上升星座少于两种时探针本就不生成(candidate-contrast-packet.ts:610),本案
三个候选 D9 同为天蝎,所以感情风格题仍不出现属正确行为;D10 巨蟹/狮子应出现。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 10:01:14 +00:00
Jesse_ChenandClaude Fable 5 c139d5b674 docs(tasks): widen the tie-break decision to always precede the range card
产品在真机上指出「你平时做事」「感情里你倾向」这类性格题从没被问就出了卡。
D1 由「前两名分差 ≤1 才问」放宽为「带年月题问完、出交付卡之前,只要参考题可
用且没用过就先问两道」。性格题权重不变(不淘汰、只 ±1,09-09 决策与 BUG-629/
651 防复发条维持),锚点要求也不放宽:该领域没有带年月事件时那道题本就不出现。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 09:58:56 +00:00
Jesse_ChenandClaude Fable 5 a6381e029b docs(tasks): tie-break before the range card, and make the entry actually respond
参考题 POST 实际成功(ok/choiceReady/focusId),但 requestTieBreak 调的是不带
合并回调的 loadCaseSnapshot(),新助手 turn 不进 messages,题也就没有渲染位置
(BUG-685)。产品拍板方案 A:前两名 posterior 分差 ≤1 时先问两道参考题再出
交付卡,卡上收起按钮(BUG-686)。rangeNarrowHint 无视 declinedTopics,把用户
刚答过「没有/跳过」的线又列一遍(BUG-687)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 09:49:54 +00:00
jesse-ux 9da42c99d2 fix(rectification): keep tied-first from delivering while probes remain (BUG-683/684)
Independent Staging Quality Gate / validate (push) Successful in 13m48s
Independent Staging Quality Gate / publish (push) Successful in 2m6s
tied_first is only terminal when there is no dated probe and targeted collect is exhausted. An unnarrowed opening window cannot announce adopt. Delivered dead choice cards take the delivered gap instead of the repair copy.
2026-09-14 17:06:51 +08:00
Jesse_ChenandClaude Fable 5 e42a62dfac docs(tasks): regression fix brief for premature tied-first delivery
d5a8db0a 把 tied_first 早退放到 coverageBlocks 之前且没有 probe 守卫,新案子
答两题、区间仍是整个开局窗口就判 adopt_representative/can_adopt:true/代表
分钟(BUG-683)。配套测试传 discriminatorProbe: null,与实现语义不一致,所以
没拦住。另立 BUG-684(investigating):交付态下仍有画不出的死卡,delivered
终态因要求无题而不触发,界面仍印「没有拿到下一个问题」。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 08:33:17 +00:00
jesse-ux d5a8db0a4e fix(rectification): deliver range cards on tied first place instead of falling back to collect (BUG-680/681/682)
Independent Staging Quality Gate / validate (push) Successful in 17m18s
Independent Staging Quality Gate / publish (push) Successful in 13m52s
Refresh persist failures no longer count as attempts. tied_first completes with a range before stillNeedNarrowing. Delivery narration and cards share DELIVERY_OUTCOMES. The question gap gets a delivered terminal so the unavailable copy does not appear after a range is given.
2026-09-14 15:41:04 +08:00
Jesse_ChenandClaude Fable 5 e59ef9fbfd docs(tasks): brief for delivery narrated while decision falls back to collect
tied_first 并列到顶时,persistNextInterviewIfIdle 因刷新尝试「落库失败仍回报
已尝试」而在第二次计算时判交付并播出结论,GET 重算又回到 collect_evidence 且
清零交付能力(BUG-680)。交付话术闸门认 completed_with_range/provisional_range,
交付卡闸门只认 ADOPT_OUTCOMES,能说不能画(BUG-681)。缺口状态机没有终态,
兜底印「没有拿到下一个问题」(BUG-682)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 07:00:55 +00:00
jesse-ux b50a8f94ac fix(ci): update DESIGN contract after hanging spoken questions (BUG-679)
Independent Staging Quality Gate / validate (push) Successful in 10m36s
Independent Staging Quality Gate / publish (push) Successful in 7m40s
Quality gate run 2598 failed because the unwritten-evidence test still required the old persisted-question DESIGN sentence. Align the assertion with the BUG-678 hang-back contract.
2026-09-14 13:43:03 +08:00
jesse-ux 2dbcf2661b fix(rectification): hang spoken year follow-ups and drop engine representative from model tables (BUG-678/676)
Independent Staging Quality Gate / validate (push) Failing after 11m54s
Independent Staging Quality Gate / publish (push) Skipped
Spoken collect without askedTurnId now hangs on the last assistant message, remaining-candidate copy uses credible_range, and engine representativeTime no longer keeps eliminated minutes in model house tables.
2026-09-14 12:12:27 +08:00
Jesse_ChenandClaude Fable 5 a5acd535d5 docs(tasks): brief for spoken-question orphans and engine representative time
BUG-675 的挂回规则只覆盖选择题,定向补事的年份追问仍掉进 persisted_question
纯文本块,无头像裸行(BUG-678)。同屏两个范围口径:采集文案用活跃候选首尾、
时间轴用 credible_range。BUG-676 依产品提供的 candidates 收敛:前端推理自洽,
05:14 来自引擎自身排序,界面未显示,但它被 case-receipt-projection 算进活跃
时间,已淘汰分钟的宫位表因此进了模型上下文。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-14 03:47:30 +00:00
jesse-ux d021bca5e1 fix(ci): clear leftover .venv before Python 3.14 venv create (BUG-677)
Independent Staging Quality Gate / validate (push) Successful in 12m2s
Independent Staging Quality Gate / publish (push) Successful in 2m8s
Staging gate run 2594 died in Install dependencies with FileExistsError on a reused hostexecutor .venv. Remove the leftover directory and create the venv with --clear so Python 3.14 mkdir does not abort the job.
2026-09-14 09:49:25 +08:00
jesse-ux 69ffa07d6b fix(rectification): stop speaking unstampable distinguish stems (BUG-674/675)
Independent Staging Quality Gate / validate (push) Failing after 20s
Independent Staging Quality Gate / publish (push) Skipped
Distinguish followups that cannot stamp a probe now go to persistExhaustionCollect instead of repeating the card stem in the assistant body. Choice focuses without asked_turn_id hang on the last assistant turn, and persisted_question with a live choice_card renders the existing card. Representative-time inconsistency is warn-only (BUG-676 investigating).
2026-09-14 03:42:48 +08:00
Jesse_ChenandClaude Fable 5 9375012f17 docs(tasks): brief for unstampable probes, naked cards and stale representative time
探针池空后判别题盖不上 probe,焦点写不进库,上一单 D3 把题干念进正文导致
同一道题反复问且回答不算数(BUG-674,本单 D1 推翻该决策,改走定向补事卡)。
快照已有 choice_card 时 persisted_question 仍只画一行裸题(BUG-675)。同一轮
receipt 的 representative_time 落在 eliminated_ids 内,先取证加守卫(BUG-676)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-13 18:34:23 +00:00
jesse-ux 8221c6121b fix(rectification): restore targeted collect cards from spoken focus (BUG-673)
Independent Staging Quality Gate / validate (push) Successful in 10m39s
Independent Staging Quality Gate / publish (push) Successful in 2m9s
Keep targeted existence questions as A-D cards. Recover collect-schema
stock by question-id prefix, surface the stem when persist fails, and
send spoken targeted existence to the repair exit instead of a naked prompt.
2026-09-14 01:51:55 +08:00
Jesse_ChenandClaude Fable 5 9a943cc2dc docs(tasks): brief for targeted-collect question stored as spoken focus
定向补事题以采集型 schema 存进会话焦点,前端 persisted_question 兜底把它
裸画成一行,无卡无修复入口;同轮计划的 D9 题因 nextInterviewPersisted 被
误置而静默丢失。BUG-670 的识别条件只认 targeted_collect 字段,救不回存量
焦点。任务书给出写入侧禁降级、复原侧按题号识别、不得吞题、前端兜底四项。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-09-13 17:27:40 +00:00
Jesse_ChenandClaude Opus 5 007a05fe48 docs(research): add the chance baseline the house-lord measurement was missing
Block-layer unique top-1 0.20 sits at or below the 0.35 random expectation for
2.95 candidate ascendants, so H1-H4 had no signal to amplify. Not significant at
n=20; recorded as "no positive signal", not "worse than chance".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 17:24:08 +00:00
jesse-ux 53565d0da1 docs(research): measure house-lord gochara rules with no benefit
Independent Staging Quality Gate / validate (push) Successful in 15m27s
Independent Staging Quality Gate / publish (push) Successful in 2m20s
Offline H1-H4 measurement on 20 public AA holdout cases.
Block unique top-1 did not rise; H4 made it worse; minute layer unchanged.
Leave production scoring untouched. Transits must not drive minute conclusions.
2026-09-14 01:07:11 +08:00
Jesse_ChenandClaude Opus 5 04479890f4 docs(tasks): research brief for house-lord and outer-planet transit rules
Measure four relaxations offline on 20 public AA cases: transit aspects to natal
house lords, tight node conjunctions, year-precision transits, and house-lord
scoring for the block stage. No production change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 16:43:47 +00:00
Jesse_ChenandCursor 14d199e694 fix(rectification): compare health and occupation aliases through one merge (BUG-672)
Independent Staging Quality Gate / validate (push) Successful in 12m12s
Independent Staging Quality Gate / publish (push) Successful in 24m21s
Skipped or already-reported health must not be asked again as health_pressure, and occupation declined as other must still close the occupation line.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 23:08:55 +08:00
Jesse_ChenandCursor 9912760104 fix(rectification): keep range-card tie-break entry honest after D9/D10 answers (BUG-666~668)
Independent Staging Quality Gate / validate (push) Successful in 13m8s
Independent Staging Quality Gate / publish (push) Canceled after 9m59s
Hide the button once both personality cards are answered, persist the second card in the same opt-in round, and freeze Skill 10.0.26.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 22:45:31 +08:00
Jesse_ChenandCursor 192845ce2f fix(rectification): keep targeted collect cards tappable after snapshot reread (BUG-669~671)
Independent Staging Quality Gate / validate (push) Successful in 25m6s
Independent Staging Quality Gate / publish (push) Successful in 2m9s
GET dropped the A–D card when the recast had no choice_frame, so a refresh left a disabled card and a collect-wait. Project from the persisted copy, rebuild the keep frame, and send a dead choice to repair-exit.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 21:50:35 +08:00
Jesse_ChenandClaude Opus 5 3c75643b83 docs(tasks): record that a page refresh does not revive the dead targeted card
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 12:20:58 +00:00
Jesse_ChenandClaude Opus 5 fe5a54e015 docs(tasks): P0 brief for dead targeted collect cards (BUG-669~671)
Reproduced: with a collect_method_evidence focus open, the plan rebuilds an
active_focus followup without a choice_frame, so GET projects no choice_card and
the card renders disabled while the page waits for a dated event.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 12:19:10 +00:00
Jesse_ChenandClaude Opus 5 0b7d43e622 docs(tasks): tie-break entry fix brief (BUG-666~668) after accepting 530f260f and ab1ade59
Accepted the targeted-collect cards round and the refresh R3/R4 round; the
range-card tie-break entry keeps showing after D9/D10 are answered and errors
on click. Product decision: one click asks both cards, then the entry goes away.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 12:10:36 +00:00
Jesse_ChenandCursor ab1ade59b7 fix(rectification): emit finer dated probes on refresh only (BUG-664/665)
Independent Staging Quality Gate / validate (push) Successful in 10m11s
Independent Staging Quality Gate / publish (push) Successful in 7m26s
After six dated answers, refresh can use 30-day same-year windows plus pratyantar and D9/D10 Narayana. First-round probe rules stay at 45 days.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 18:19:46 +08:00
Jesse_ChenandCursor 530f260f76 fix(rectification): ask remaining split lines one card at a time (BUG-661~663)
Independent Staging Quality Gate / validate (push) Successful in 12m9s
Independent Staging Quality Gate / publish (push) Successful in 2m17s
Dated-pool empty now yields existence cards per remaining layer, leftover-candidate copy, and an optional D9/D10 tie-break on the range card. Skill 10.0.25.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 16:50:25 +08:00
Jesse_ChenandCursor b063c66835 docs(research): measure dated probe supply after six answers
Independent Staging Quality Gate / validate (push) Successful in 11m55s
Independent Staging Quality Gate / publish (push) Successful in 8m53s
Offline holdout replay shows refresh-only R3+R4 add discriminative dated probes; R1/R2 do not meet the gate.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 12:59:46 +08:00
Jesse_ChenandClaude Fable 5.1 da048676ba docs(tasks): targeted collect cards brief (BUG-661~663) and probe-supply research brief after product decision
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 04:10:38 +00:00
Jesse_ChenandClaude Fable 5.1 4e93ca1587 docs(tasks): decision draft for narrowing after dated probe pool is empty (A/B/C/D options)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-13 04:04:11 +00:00
Jesse_ChenandCursor 5d54d0597d test(rectification): lock failReceipt engine_message for compare failures
Independent Staging Quality Gate / validate (push) Successful in 12m27s
Independent Staging Quality Gate / publish (push) Successful in 7m46s
BUG-659 moved compare tool_failed fingerprints into failReceipt; keep the
source lock on the shared helper so the staging gate still requires a
redacted engine_message.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 11:03:20 +08:00
Jesse_ChenandCursor 073a45b73e fix(rectification): keep set-focus idempotent and record tool failures (BUG-659/660)
Independent Staging Quality Gate / validate (push) Failing after 13m36s
Independent Staging Quality Gate / publish (push) Skipped
Same-id focus returns instead of making the model retry; kind_hint targetKind is ignored. Failed receipts keep a redacted original error and known codes. Host fallback recap no longer duplicates dates.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 00:23:11 +08:00
Jesse_ChenandClaude Fable 5.1 fb18f72f0d docs(tasks): set-focus tool_failed brief (BUG-659/660); mark BUG-656~658 fix as deployed
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-12 13:18:14 +00:00
Jesse_ChenandCursor 529fcc097f fix(rectification): keep invite collect CHECK-legal after kind mapping (BUG-656)
Independent Staging Quality Gate / validate (push) Successful in 9m14s
Independent Staging Quality Gate / publish (push) Successful in 2m12s
Full TAP failed because invite_more is not a target_kind enum value, and
exhaustion re-decide after skipped targeted persist must reuse decideAfterInferenceChange.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 06:34:35 +08:00
Jesse_ChenandCursor eae049d0ea fix(rectification): persist refresh attempts and map collect focus kinds (BUG-656/657/658)
Independent Staging Quality Gate / validate (push) Failing after 13m28s
Independent Staging Quality Gate / publish (push) Skipped
Empty engine refresh now records an already_answered attempt so GET can leave wait-to-narrow; collect kinds map onto the table CHECK; remaining candidates drive probe refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 06:09:20 +08:00
Jesse_ChenandClaude Fable 5.1 2b6d28e7a7 docs(tasks): index 09-11 rectification briefs; fix brief for BUG-656~658 after reviewing 512be9b7
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-11 21:30:34 +00:00
Jesse_ChenandCursor e59dd47cdf docs: record BUG-655 fix SHA 512be9b7
Independent Staging Quality Gate / validate (push) Successful in 14m28s
Independent Staging Quality Gate / publish (push) Successful in 12m52s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 01:53:25 +08:00
Jesse_ChenandCursor 512be9b76e fix(rectification): persist refreshed probes only when the engine has new questions (BUG-655)
Empty refreshes were writing inference rows, and GET-selected probe keys could miss inference_state, so persist rejected the next card.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-12 01:51:57 +08:00
Jesse_ChenandCursor 6c9a089620 fix(rectification): refresh remaining probes and targeted collect before delivering range (BUG-653/654)
Independent Staging Quality Gate / validate (push) Successful in 13m54s
Independent Staging Quality Gate / publish (push) Successful in 10m50s
Dated-choice exhaustion is not convergence. Refresh probes from remaining
active candidates, then ask a targeted collect, then deliver. Skill 10.0.24.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 18:28:39 +08:00
Jesse_ChenandCursor 9941c34d4b docs: record BUG-651 gate follow-up SHA f870d3d7
Independent Staging Quality Gate / validate (push) Successful in 10m6s
Independent Staging Quality Gate / publish (push) Successful in 16m23s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 15:23:27 +08:00
Jesse_ChenandCursor f870d3d757 fix(rectification): keep dated precision cards after empty dated discriminator pool (BUG-651)
Staging gate 2558 failed because leftover tests still expected D9/D10 or leftover collect after the pool emptied. Discriminate sessions still deliver; dated precision cards still ask.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 15:22:55 +08:00
Jesse_ChenandCursor 035865d4c1 docs: record BUG-651/652 fix SHA 66f63c76
Independent Staging Quality Gate / validate (push) Failing after 13m47s
Independent Staging Quality Gate / publish (push) Skipped
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 14:34:46 +08:00
Jesse_ChenandCursor 66f63c7643 fix(rectification): deliver range when dated discriminator pool is empty (BUG-651/652)
When dated choice probes are exhausted after the training gate, stop treating yearless D9/D10 cards as the next discriminator and persist a range carrier in the same answer transaction.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 14:33:39 +08:00
Jesse_ChenandCursor 1fa994ea63 fix(rectification): keep dated occupation answers scoreable (BUG-649/650)
Independent Staging Quality Gate / validate (push) Successful in 13m26s
Independent Staging Quality Gate / publish (push) Successful in 9m33s
Occupation collect was wiping year-month into an unscored note, and idle gap copy never joined the evidence turn.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 11:49:52 +08:00
Jesse_ChenandCursor e36bda53fc docs: record BUG-646–648 fix SHA dd8f35f7
Independent Staging Quality Gate / validate (push) Failing after 35s
Independent Staging Quality Gate / publish (push) Has been skipped
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 01:44:39 +08:00
Jesse_ChenandCursor dd8f35f7ba fix(rectification): invite-first collect, holdout at 4 events, Skill 10.0.23 (BUG-646–648)
Stop domain-wheel collecting and age-band years in prompts. Ask until the training gate, then discriminate until convergence, then deliver a range plus a concrete follow-up. Reserve holdout only with four dated events.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 01:43:02 +08:00
Jesse_ChenandClaude Fable 5.1 cb04529728 docs(tasks): collection redesign v2 — threshold-driven stops, no provisional result
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-10 15:12:06 +00:00
Jesse_ChenandClaude Fable 5.1 98bc79fae4 docs(tasks): collection-flow redesign brief (BUG-646~648); supersede exhausted-gate brief
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
2026-09-10 15:06:58 +00:00