Repository navigation
v0.2.0-rc.27
Why this release. The published latest (0.0.1-rc.24) cannot start gotry web on a clean machine: its pinned DSH runtime (0.1.5-rc.1) fails at startup with user patch-layer watching requires the Cordis HMR service (#600). This release moves the whole DSH family to 0.2.0-rc.2 (279 packages, #610), which no longer contains that startup path. The founder confirmed the release on 2026-10-04. The version stays paired with the Stai Travel Bridge extension version 0.2.0.27 (extension-version invariant).
What's New (since rc.24)
- First-run fix — a clean-machine
npx @danceiny/gotry webboots again on the0.2.0-rc.2DSH closure; the previous closure crashed at startup in clean-machine runs of the web profile. - Itinerary artifacts — deck renderer and static export bundle with a real QR matrix, product entries
gotry_itinerary_deck_renderandgotry_itinerary_render(HTML), host-owned Lavish review tools, artifact list paging with literal metadata search, the share-contract layer and the one-tap session-link contract (contract level, default off). - Realtime and session retrieval — FlyAI: all public search kinds, safe setup checks, bounded process cleanup, fail-closed on malformed or terminated results; independent searches now run in parallel with bounded cancellation. Dida: city-plus-date query chain, destination driving, portal-delivered one-time login auto-fill, English room names. Session bridge: extension client binding for login-check-then-search, job-failure classification instead of false
needs-login, redacted transport shapes for drift diagnosis, job ledger and event uplink. - Embedded Booking Copilot planner — typed-decision and authority hardening, search-invalidation receipts, deployable turn deadlines, warm start and stall budgets; the planner's own process start has its own tight budget and error type, so a startup failure is no longer reported as a model timeout.
- Memory and recall — recall tick scheduler and why-now cards; tenant-ledger repair control plane (apply and rollback with receipts); the session dual-zone memory partition contract (P4-1, inert and default off).
- Observability — structured verdict logs and planner/backend startup-stage markers on the service runtime; boot diagnostics keep the ordered stage records (#511).
- Capability onboarding — plain-language failure reasons when a channel such as
hbcliis missing, a first-contact prompt that states the impact, a bilingual onboarding doc. - hbcli — customer email-code two-step login tool surface.
- Inert, default-off contracts — the external-event (W2A) seam, the Money/FX fact contract and the offline administrative-atlas loader. None activates a live path.
- Stai Travel Bridge is live on the Chrome Web Store (0.2.0.27, #346/#537) — v0.2.0.26 was rejected on 2026-09-26 because the listing metadata did not match the observed behavior; the listing was renamed Stai Travel Bridge and v0.2.0.27 was resubmitted on 2026-09-30. The public store page and the store update endpoint both serve 0.2.0.27 (pulled back 2026-10-04). The installed-extension checks — desktop connection, employee-portal join and Dida login — remain open under #346.
Previously queued items (carried from the former Unreleased list)
- Persistent default departure city (#338, 2026-09-10) —
gotry_motivation_saveaccepts a typedhomeCitywith optional/explicit exacthomeCityEvidencebinding (a single non-empty evidence may be omitted; multiple require explicit); the ledger persistshomeCityPreference { value, evidence, updated_at }and reads it back as a soft default via{{motivation_brief}}. An explicit current-turn departure city takes precedence; explicit null clears the active default. - Artifact views enter the M4 queue (issue #285, 2026-09-10) —
gotry_artifacts_list/readpersist standardpresentationMetaat the Host layer and output the fields required bySearchPathsResultView/ReadResultViewplusFileLocation; the published./clientadapter renders custom list/read keyed cards in DSH Web viawindow.__ModuleLoader__.loadkeyed on the runtimeblock(wire nametool.call.toolview, key =gotry_artifacts_list/gotry_artifacts_read, seeclient/client.js), with clickable paths, first line showing source + full path + line-number preview + source identity + content version; the workspace/sidebar file tree remains an additional preview surface. Read-scope whitelist = stateRoot root + session dsh working directory (excluding node_modules/.git); extension whitelist = text types; cross-root / symlink escape / missing file / oversize file (>2MB) uniformly return ok:false + error + hint. This layer is read-only; the WriteGate red line is not involved. Acceptance evidence =scripts/artifacts-capability-tests.ts12 isolated-fixture proofs +scripts/dsh-artifact-web-e2e.tsfresh-profile Web list→select/open→read→edit→updated-read proof (covering the changed-file notice with correct preview after rewrite, and update visibility after reload) + smoke §15/§15b. Delivered via PR #305 / destination48c794c58b02d543be01f3bec98a056447dfeb85. - M4→M6 public delivery and debt ledger (#270) — architecture debt rows uniformly point to a public tracker or concrete trigger conditions; D-12/D-16/D-24 archived; the issue→Draft PR→exact-head review→merge/destination receipt becomes the general public delivery contract. Local/fixture evidence still does not constitute real admission for #20/#136/#137.
- DSH runtime closure migrated to 0.1.5-alpha.1 (#268) — precisely migrated the root-pinned DSH runtime dependency from
0.1.2-alpha.3(216-package closure) to0.1.5-alpha.1(230-package closure). The target version is pinned exactly, never following the mutablealphadist-tag (currently pointing at0.1.5-alpha.2). 230 = 15 additions (dsh-api-workspace-files/dsh-client-file-upload/dsh-client-resources/dsh-client-ui-open-in-app/dsh-client-ui-sidebar-files/dsh-client-ui-sidebar-right/dsh-client-ui-sidebar-textpreview/dsh-host-open-in-app/dsh-http-proxy/dsh-package-manifest/dsh-session-format/dsh-session-format-catalog/dsh-session-format-v0-to-v1/dsh-session-format-v1-to-v2/dsh-session-format-v2-to-v3) + removal ofdsh-tool-subagent-report; the add/remove set is confirmed by regenerated npm and pnpm lockfiles.ts/package.jsonoverrides expanded from 14 to 230, pinning the full peer closure at0.1.5-alpha.1and preventing the^0.1.5-alpha.1caret from drifting transitive peers to0.1.5-alpha.2. Added failing-precondition contract testdsh-target-closure-proof.ts(reads the repo's actual state; must fail on the starting 216/alpha.3 closure, must pass after migration), wired into run-all §23b. API audit (tsc --noEmit+ smoke + map-tools clean-tarball proof) reproduced no target incompatibility: theSettingsProvider.prototype.installSectionseam, the 7map_*tools, settings watch/reload/dispose, Session V3 one-way migration, and the agent/session/inbox/steer seams all survive on0.1.5-alpha.1, with no behavior change. Historical0.1.2-alpha.3evidence is retained in old §9/roadmap/stage1/release-notes entries, not batch-replaced; settings behavior unchanged. These deterministic proofs do not constitute M5/M6 admission. (Later superseded: the closure is now0.2.0-rc.2.) - TS strict install closure (#202) — on top of rc.20, which already shipped the MIT
dsh-map-toolsin the package, completed the exact overrides for the alpha.3 peer closure so that a barenpm ciints/no longer depends on--legacy-peer-deps; added clean-tarball fail-closed proof.
Installation
Run npx @danceiny/gotry@0.2.0-rc.27 web (Node ≥ 22.15). Once latest points to this version, npx @danceiny/gotry web is equivalent; pin the exact version if your registry mirror lags.
dist-tag plan
TAG=latest ./scripts/publish-npm.sh, with the tag passed explicitly (#50①). The compatibility rc tag stays on 0.0.1-rc.20; whether to retire it remains an owner decision.
Added
- P4-1 会话双区记忆分区契约纯核(全离线)… (#609)
- 服务运行时补 verdict 结构化日志与 planner/backend 启动阶段标记… (#607)
- 客户邮箱验证码两步登录工具面——hotelbyte 注册支持跟进… (#605)
- one-tap 深链契约——schema 闭集签名 token + plan-it 行动卡(Phase E #580)… (64152dc)
- tick scheduler + 召回触发评估器 + why-now 卡(Phase D… (72cadce)
- deck bundle QR 真矩阵——qrcode 库渲染 + share_intent.generated(Phase B 切片 3b… (ed49d20)
- Share 契约层——adapters + HMAC token + consent + shareDeck 流程(Phase C… (60b9668)
- gotry try 离线 deck demo——零安装/零 LLM key/零 dsh 主机(Phase A… (2c97870)
- deck 静态导出 bundle——.html+manifest.json+qr.svg 占位(Phase B 切片 3a… (d926794)
- deck 产品入口 gotry_itinerary_deck_render + 落盘路径护栏(Phase B 切片 2… (6cec827)
- 行程 deck 渲染器切片 1——共享契约层 + 纯 deck 投影 + 反漂移锁(#564)… (0521d54)
- 首次接触 prompt 加影响面 + 能力 onboarding 双语文档(#559 B 步)… (7804ccb)
- dida 报价补卡片字段与多语言名(hotel-fe#3731)… (5e86063)
- dida 按城市+日期的查询链路 + 修挑战误判(酒店名含「验证」)… (6ad1f5f)
- dida 目的地搜索驱动——选目的地 + 用我们的日期重写落地 URL… (eee0312)
- 代填登录——portal 投递一次性凭据 → 扩展开登录页代填提交… (ab13222)
- expose safe setup checks and preserve credential boundaries… (891704e)
- wire all public search kinds… (41492a9)
- parallelize independent queries with bounded cancellation… (#523)
- 数据修复控制面——只读 inventory/显式映射迁移引擎/backup+幂等 journal+rollback(#254 工程段)… (f8cb94b)
- make the planner turn deadline deployable… (1422cd8)
- list paging + literal metadata search (issue #458)… (#459)
- expose host-owned itinerary review tools… (#456)
- local Lavish Editor session adapter (issue #443)… (#450)
- product generation entry gotry_itinerary_render (#442)… (#449)
- bounded pure itinerary HTML renderer (internal slice… (#445)
- discover HTML itinerary artifacts with safe source preview (#441)… (#444)
- external-event seam contract (untrusted sensor adapter… (#435)
- unavailable/changed recovery chain contract (#142 partial)… (#404)
- sponsor plugin same-kernel end-to-end reuse proof (#235)… (#402)
- independent cancel/refund results with explicit commission disclosure (#233)… (#401)
- persistent trusted approvals and atomic outbox (#231)… (#399)
- transaction bridge unknown-result reconciliation contract (#232)… (#398)
- mechanical guard requiring explicit authorization before bridging internal travel tools (#348)… (#388)
- add docs/ops/security.md + .zh-CN.md (audit 2026-09-11)… (#387)
- execute in admin browser extension… (#380)
- 授权 tenant 修复 apply/rollback 与回执协议(#254)… (#378)
- booking-executor 模块骨架(M1 第 1 刀,只读观察+截图存证)… (#377)
- dida 适配器 v2——加载态推荐流校准(UAT 实测)+ CDP 车道多响应收集… (#372)
- gotry-backend unified service — kernel + booking-copilot/session-search modules… (#366)
- persist evidence-bound home city defaults… (#356)
- add evidence-backed ground transfer inputs… (#357)
- expose generated artifacts in DSH… (#305)
- 只读 tenant 修复计划 dry-run (#254 第一切片)… (#309)
- repair optional dependencies in session… (#314)
- dida supplier-portal adapter + capability-routed bridge jobs (hotel-be portal-integration line)… (#297)
- one explicit web onboarding prompt reusing doctor --fix… (e9dfa2b)
- add opt-in lifecycle collector… (af97248)
Fixed
- upgrade dsh family to 0.2.0-rc.2… (#610)
- preserve Dida English room names… (#599)
- prevent extension errors from leaking into flight evidence… (1459225)
- record redacted flight transport shapes to diagnose session drift… (18a6758)
- distinguish deterministic sf comparators from live provider evidence… (d89311e)
- freeze sf live benchmark query baseline… (aba55de)
- keep login checks and searches on one extension client… (eaa972b)
- preserve extension job failures instead of misclassifying them… (6682541)
- require matched wish conditions before routing signals… (80a36b1)
- reject invalid artifacts and store submission responses… (fb5a218)
- identify local bundles and verify QR payloads… (33f22de)
- preserve safe recovery guidance across web reads… (b90b333)
- reject operational validation failures without throwing… (a8debef)
- CWS 发布改直连 REST API——browser-actions/chrome-webstore-upload 已 404… (520c67a)
- 对齐 portal 安装检测契约并补齐商店自动上架(hotel-fe#3802)… (01299ac)
- 自检 review 第二轮 14 项修复——广播升级拒绝/流终结语义/stop 核平/构造强制/单表派生(#577… (f5ed350)
- 自检 review 8 项修复——阻塞 next/三态 start/有界队列/逐卡容错(#577… (991fb51)
- QR 渲染 try/catch + 零写入保护 + files[] 发布缺口补 10 文件(#569 review 修复)… (7ff186b)
- 自检 review 14 项修复——原型键防护/target 绑定/never-throws/幂等 grant(#573… (001ecf1)
- pnpm-lock.yaml 同步 qrcode 依赖(#569 CI 修复)… (2048845)
- root package.json 补 qrcode 依赖——dist 构建从根目录解析(#569 回归修复)… (c4b7e55)
- 骨架未覆盖 leg 在用户面显式 ⚠ 前缀 + 证据文案去承诺(#559 卡点 4)… (5cdb06e)
- 能力失败原因改人话——hbcli 缺失时用户看到的是 (exit null) 进程噪音(#559)… (74f0813)
- 启动失败诊断按序上报阶段记录——256 字节 stderr 尾部截断会丢掉最早到达的阶段… (9978baa)
- 自建进程启动改用独立紧预算与独立类型,启动失败不再报成模型超时(#554)… (5bf469b)
- JSON-RPC 错误响应保留类名与 wire code,不再退化为 unknown(#511)… (8b883a9)
- mergeDidaRatesBodies 调用处漏传 searchCache… (a120d46)
- close-failure 证明记录 range 观察结果而非强制确认空… (6564ccc)
- stderr drain 有界化收口 #516——进程组边界统一复用 spawn-bounded(stdoutFd/drainMs opt-in… (c347556)
- 代填在登录页就绪前持续重试——SPA 首次返回 inputs-not-found 即收工会让登录页空着… (d1ffc6f)
- 对齐扩展合同门禁——content_scripts 断言纳入 join 交付、版本/端口回退… (0caf675)
- join ticket 从事件 detail 读取——隔离世界读不到页面 window 属性… (bf9fbc4)
- 补 http://*.dida.com 域权限——非 Secure 会话 cookie 对 cookies API 不可见… (a5d655a)
- portal 域加入 bridge matches/host_permissions… (4478cb6)
- 诊断 unsupported 平台不再声称预期组——恢复 v1 的 expectedPgid=null 契约(#518… (096757f)
- 清理期限届满先核验进程组静默——Darwin 仅剩僵尸被 kill(-pgid… (e92cca5)
- 安全收紧官方 CLI 首建的配置目录… (a69ca2d)
- 只允许合法命中或空结果写入库存事实… (e892500)
- 防止模型结果渲染丢失结构化观测… (c010e83)
- 补齐套餐筛选并明确展示中转航段… (7cc85fc)
- support official captured result shapes… (277780d)
- 让配置检查显示最近试用额度受限时间… (de9b534)
- preserve official exploration and Marriott query mappings… (bf571fd)
- keep credential bytes out of malformed-config errors… (f692727)
- fail closed on local process termination… (38d56cf)
- align error contracts and redact upstream secrets… (30bf690)
- make FlyAI setup verification truthful and safe… (650f1b5)
- 保留清理首错与进程诊断以定位偶发超时… (7f5f868)
- reject requests after worker termination… (cfd8d17)
- await initialized runtimes and close every owned worker… (e037c74)
- keep benchmark evidence in the explicitly selected root… (1d30362)
- prevent Dida retries after terminal verdicts and require explicit live opt-in… (af1060c)
- make the stall budget an idle (no-notification) budget… (f23a394)
- tighten the first-run stall budget to 15s… (d3c5d6f)
- warm the harness at module start and keep stall-retrying while the deadline funds it… (9c26651)
- per-kind planner tools and stall-retry for non-DeepSeek providers… (1d69656)
- forward the planner deadline on the serving path… (308578a)
- name the resolved planner route instead of inheriting it silently… (a745f6e)
- preserve ephemeral backend port selection… (2b35661)
- package booking intent schema… (a54fbfe)
- harden typed planner decisions… (35d3144)
- reject non-finite timeoutMs on POST search (#483… (#486)
- harden typed planner reliability… (#487)
- validate POST search/login bodies before property access (#483)… (#485)
- carry the extension install link out of the search route (hotel-fe#3611)… (#482)
- normalize CRLF/CR and exercise space+tab closer (Refs #479… (#481)
- close i18n heading gap, tighten CommonMark closer, and exercise CLI matrix (Refs #479)… (#480)
- reject numeric revision mismatch before canonical-schema (Refs #473… (#476)
- reject authority before canonical-schema and reserved-namespace carriers (#473)… (#475)
- 让非法引用在工具边界内纠正… (#472)
- target the registered system-prompt row (#467)… (#469)
- accept search invalidation receipts… (#468)
- wrap planner example in decision envelope… (#466)
- require typed planner authority… (#461)
- escape backticks in §67 heading to stop command substitution… (#447)
- route persisted local channel health into advice (#436)… (#439)
- enforce inert W2A contract… (#440)
- execute sf-summary through symlink paths… (#421)
- forward-fix Issue 411 challenge summary closure… (#416)
- use public npm tarball URLs in lockfiles… (#415)
- stop sf live benchmark batch after first challenge (#411)… (#413)
- main() injected now so fixture stays in 7-day window… (#410)
- 页面重派票据时重取(异步票不再被 DOMContentLoaded 单次读取错过)… (#396)
- relative future years (今年/明年/后年/年内) must yield a planning window so past slots are excluded (#2)… (#395)
- out-of-vocab booking-phrasing free text must fail closed, not silently pass (#381)… (#390)
- backfill version field for native binary placeholders in lockfile… (c28d6be)
- bind destination transfer estimates to outbound/return directions (#364)… (#382)
- bind anchored flight/hotel rows to fact fields (#363… (#365)
- bind anchored policy rows to full registered content (#359)… (#360)
- add typed 12306 session rail facts… (#358)
- reject any malformed item sibling… (#354)
- separate rail claims from flight evidence… (#353)
- preserve IANA time zones through flight planning… (#351)
- widen non-keyword hotel + policy vocabulary (#301/#302)… (8a2c7cc)
- contain dsh child liveness failures (Refs #271)… (9f3f8bb)
- select coherent offline sf evidence batches… (#336)
- block contradictory exact-date prices… (#330)
- enforce future named-year planning windows… (#333)
- contain dsh child liveness failures (Refs #271)… (9ec9856)
- guard continuable ids before jobs tools… (#334)
- safe synchronous dispatch rejection logs… (#332)
- require identical complete duplicate arguments… (#328)
- align selected site and train gating (#311 follow-up)… (#326)
- fail closed on edited policy as_of… (#316)
- fail closed on malformed flight batches… (#319)
- bind session approval to selected supplier site (#308)… (#311)
- close D-26 residual — policy typed-anchor + 海关申报 keyword (issue #273)… (#304)
- 中文授权提示使用中文标点… (#296)
- require valid stay dates before supplier dispatch… (#295)
- npx 指引统一 scoped @danceiny/gotry;bootstrap §19 --scan 测试 fixture 化… (#293)
- align persona config and bridge handle with 0.1.5-alpha.1… (#291)
- migrate runtime closure to 0.1.5-alpha.1… (#287)
- validate tool args in the plugin… (3b88560)
- preserve booking planner criteria during repair… (#286)
- repair empty-string input to {} for zero-arg actions… (5a81324)
- preserve host fatal semantics while recording incidents… (#280)
- schema-rejection feedback loop + occupancy repair… (#278)
- replace the removed Node 26 dist transform… (#277)
- harden web startup boundary after #266… (9b0d5a0)
- repair index-keyed occupancy arrays… (e925c3c)
- time anchor, exact patch property names, star/dates examples… (a77ad36)
- make vendored payload install-order invariant… (178cfec)
- sync dsh map tools lock importer… (0963a79)
- raise planner token budget for reasoning models… (729643c)
- pin decision kind to task.allowedActions in persona… (3454918)
- pin exact decision-envelope example into planner persona… (35dc73b)
- tolerate parsed tool arguments and log envelope misses… (33c5ea2)
- unwrap MiniMax-M2 nested decision envelopes… (5984a29)
- follow DEEPSEEK_MODEL/LLM_MODEL instead of hardcoded glm-4.6… (2b0abd8)
- update qs to 6.16.0… (0c92f43)
- utils.custom.sql-injection-template-literal security vulnerability… (700b963)
- 恢复 alpha.3 真实 settings 接线… (fdbc8ff)
- #227 局部 native cleanup 队列 + 冷初始化单 Context… (#244)
- 补齐省略整数位 numeric 解析边界… (#243)
- 加固 M4 价值证据合同… (#238)
- align vendored map tools with DSH alpha.3 settings… (#239)
- 严格解析租户参数避免串位… (#236)
- 让 ADR-16 tenant scope 真正约束事件与重建… (#229)
Changed
Documentation
- record Stai Travel Bridge 0.2.0.27 live on the Chrome Web Store (public pull-back 2026-10-04)… (1d03a7a)
- P4 会话双区记忆实现级设计落地——创始人 2026-10-02 批准立项… (#603)
- #537 收口并入 #346 唯一跟踪——join/Dida 链路验收并入 #346 关单条件… (#602)
- 把 #137/#136/#82 三项 owner-only 决策整理成可拍板的简报、可填矩阵与决策模板… (#604)
- 记录 Stai Travel Bridge 0.2.0.27 重提回执… (#598)
- define store acceptance evidence before closing extension issues… (#588)
- record Stai store review receipt so release status stays accurate… (#587)
- make merged PRs and closed issues the completion gate… (30a27a9)
- align issue execution with delivered contracts and remaining gates… (b11aca4)
- Karpo Deck Web 参考研究——gotry 成品感借鉴决策落地为双语对… (c0a4f73)
- 终验收报告对齐 #541/#545 的记录式 proof 裁决(#510 #513)… (f74c50d)
- 终验收报告改引交付树全量回归证据(663s,a7d5072a…,#510 #513)… (ab0905a)
- 报告改引最终树的全量回归证据(676s,9c617a88…,#518)… (a7025c3)
- 补记 #530 真实 Key live 复测… (a8524e9)
- 记录实装验收结果和真实供应商验证边界… (c671fec)
- 同步万豪套餐公开筛选契约… (1dce0d2)
- clarify FlyAI Marriott flag and fact boundaries… (e253faf)
- define capability and credential acceptance boundaries… (6c3ebad)
- record readiness evidence and unresolved runtime limits… (4970bda)
- record evidence isolation proof and live acceptance limits… (d496a4a)
- make Dida runner acceptance and live evidence limits reviewable… (9377cf1)
- Round 12 canary 报告重写——从哈希清单改为可读评测总结;并入 main 解冲突… (c120383)
- sf-01..08 冻结 manifest——用例/通道矩阵/真实会话需求分类(#272 离线段)… (fca8971)
- Round 12 冻结 canary 跑测报告——身份/官方分数/逐约束失败分析(#203/#215 收官段)… (e72b571)
- zh 镜像去重 Round 12 段——旧合并遗留与本次追加段合并为一段… (eb79cbf)
- architecture 密集引用目录拆分——§3 清单与 §8 展开正文迁入 concern-owned 双语权威文档… (52adc7e)
- Round 12 冻结 treatment 结果入册——官方 evaluator 首次产出非 null 分数… (5691f24)
- specify HTTP extension install contract… (#484)
- restore reader-first authority boundaries… (#478)
- reconcile #231-#235 pre-entry mechanisms (issue #452)… (#453)
- reconcile #271 CLOSED + link D-26 FX residual to #344… (#451)
- correct seam §2 routing claims, mark routing propagation TODO #436… (#437)
- record scoped contract-only seam approval… (#434)
- repoint wider remainder tracker from closed #341 to open #429… (#430)
- show the current M3-M6 evidence path… (#425)
- keep open debt register limited to remaining work… (#426)
- WriteGate falsification suite references follow §61 renumber (#399 followup)… (#403)
- D-NEW boundary closure — SDK transport/supervisor/deployment evidenced 2026-09-11 (#271)… (#397)
- publish v0.0.1-rc.24 + user-guide #258 onboarding (audit 2026-09-11)… (#391)
- sync #212/#278/#377/#372 to §9 evolution (audit 2026-09-11)… (#386)
- sync #380/#367/#263 to §9 evolution (audit 2026-09-11)… (#383)
- founder 拍板——中文标点硬性规则写入 AGENTS 双语契约;Built with/版本基线上移至 Star History 之前;修正 star-history light 模式误拉 dark 图表… (#376)
- 中文文档全量改用中文标点(founder 硬性规则);README 开篇按工程师+旅行者受众改写… (#375)
- phase 2——docs/ 子目录 37 篇双语成对,全量覆盖达成… (#374)
- 顶层文档全量双语成对(loopx 约定)——不一致视为 bug… (#373)
- 结构重组为 9 节——状态节去除 issue/PR 数字噪音,Tools/Verify/Trustworthy/Roadmap/Star History 归并进相邻节… (#371)
- 三轮精简再砍近半——词汇表/愿望池状态图/分层表/路线图表让位给 docs… (#370)
- 二轮精简——Tools 全表拆到 docs/tools.md,Quick Start/Consent/Project Status 压成摘要,README 只留导航与产品叙事… (#369)
- 精简双语 README 三分之一篇幅并给英文页换上英文标注架构图… (#368)
- Demo 区换上 user-attachments 视频 URL… (#362)
- define fact WriteGate seam contract… (dc9b595)
- define fact to WriteGate seam for issue 303… (a3bf667)
- link active design debt to public trackers… (82c7d0f)
- correct PR325 evidence and media boundaries… (#331)
- give doctor repair its own debt ID… (#324)
- 已清偿债务迁出主线文档,迁入 debt-archive.md 追加式存档(stacked on #310)… (#317)
- align m4-m6 governance trackers… (33935ef)
- 勾稽首例 #250 实际处置——founder 评审后合入而非关闭… (#261)
- 建立外部 PR 工作流——首个外部 PR(#250 安全机器人误报)暴露维护者侧流程空白… (#260)
- close dispatch and milestone evidence gaps… (f780810)
- 收敛M4→M6阻断事实… (638c896)
- M4→M6 任务图 + M5 WriteGate proposal + P6/贡献闸修订(issue #225)… (b7c0bd4)
- keep collector demo executable… (57e04e8)
Tests
- keep close-failure proof independent of systemd polling… (fa05317)
- deck §6 纯度检查覆盖共享层 + §5 反漂移锁镜像 html 拒绝集(#564)… (09e8ef3)
- 归因 #511 的 20 秒启动超时=SDK 默认预算+关闭阶梯… (c147631)
- 对齐 #513 proof 真实清理观察预算与 provider 尺度(12s… (e5028ea)
- 收口 #514——锁定「终止携带陈旧 429 文本」的 fail-closed 分类并落地最终态报告(原分支 b520eef 设计已被 #523/#531 演进吸收… (2bf17ee)
- 放宽安装版 E2E 的 setup 验证预算… (68c204c)
- align FlyAI doctor verification contract… (c3a4f21)
- 为超时场景保留进程启动预算… (b6c39e2)
- 按官方 help 保留万豪套餐排序验证… (7bbc849)
- cover controlled FlyAI transfer facts… (50c07ef)
- align FlyAI product fixture contracts… (88f18ae)
- align FlyAI fixture shapes with official CLI… (c1e7a02)
- harden FlyAI installed product harness… (bbeea61)
- add installed FlyAI product boundary E2E… (735d7e7)
- cover FlyAI setup dispatch and endpoint binding… (b17ff16)
- gate unified gotry backend artifact… (673d0d3)
- retain install diagnostics and clean owned proof artifacts (#488)… (#489)
- preserve booking search invalidation (#142 #468)… (#471)
- retain original assertion error across fixture teardown failures… (#465)
- teardown directIngressRoot fixture… (#464)
- guard the shipped native HTML preview path (ref #448)… (#460)
- reap the exact lavish fixture group… (#457)
- remove duplicate misleading entry matrix… (#433)
- 4-entry regression matrix (direct / file-link / parent-dir-link / import-no-side-effects) for issue #420… (#428)
- clean-consumer install revalidates registry metadata (#394 followup)… (#408)
- raise default spawn bounds to 15s… (#409)
- spawn-level fake-CLI full-chain E2E for reconciliation (#232)… (#407)
- pin ChinaTravel diagnostic-only countability face (#203 Phase 1 admission gate solidification)… (#405)
- freeze wider D-39 boundary offline… (#406)
- frozen kernel manifest with runtime-module evidence generation (#234)… (#400)
- relative fixture clock so 7-day window cannot age out hardcoded dates (#138 slice)… (#393)
- accept joinTicket.bridgeUrl derived expressions in bridge-only fetch contract (#380 followup)… (#389)
- document packaged web retry cancellation proof… (#361)
- prove model requests through loopback DSH runtime (#289)… (#323)
- verify pinned release artifact before contract proof… (#321)
- keep HotelByte supplier checks explicitly offline… (#320)
- cover Dida routing order… (#315)
- #232 release-contract 离线钉版 + outcome 分类… (#312)
- prove fixture group reap… (#292)
- reap fixture groups on waiter failure… (#288)
- 钉住租户 fold 与迁移边界… (#237)
Build
- gotry-backend 发布构建脚本… (#367)
CI
- protect M4/M5/M6 parent admission trackers (#417… (#419)
- protect M4/M5/M6 parent admission trackers from child PR auto-close (#417)… (#418)
Chore
- listing 更名 Stai → Stai Travel Bridge… (#597)
- 对外显示名更名 GoTry Session Bridge → Stai… (04b68eb)
- wire issue #443 offline Lavish adapter suite (#443)… (#455)
- generate lunar new-year anchors via library… (#392)
- DSH runtime 闭包升级到 0.1.5-rc.1(232 包)… (#379)
Other
- 落地 #344 Money/FX fact 契约切片(默认关闭、零活体汇率源、D-26 边界不变):金额+币种+汇率证据全字段必填 fail-closed、同估值时点比较、主源+降级仅接口与数据形状… (#606)
- 落地 #342 离线行政区划 atlas 机制(默认关闭、零调用方、数据面零切换):Natural Earth v5.1.2 钉 commit 公有领域选型+manifest SHA-256 provenance/只读加载器 ambiguo… (#608)
- agent: feat/browser-lane-ledger… (#601)
- Keep session searches on the login-check extension origin… (#591)
- Explain Ctrip sniff timeouts without misclassifying response shape… (#590)
- Use public privacy-policy links in the packaged Stai README… (3772a9a)
- Prepare an accurate Stai store candidate after the reused extension version drifted… (77ab6ac)
- session(planner): 埋点本地启动 initialize 耗时… (4d1c6d5)