Skip to content

v0.2.0-rc.27

Choose a tag to compare

@Danceiny Danceiny released this 05 Oct 08:14
· 46 commits to main since this release
04efce3

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 web boots again on the 0.2.0-rc.2 DSH 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_render and gotry_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 hbcli is 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_save accepts a typed homeCity with optional/explicit exact homeCityEvidence binding (a single non-empty evidence may be omitted; multiple require explicit); the ledger persists homeCityPreference { 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/read persist standard presentationMeta at the Host layer and output the fields required by SearchPathsResultView/ReadResultView plus FileLocation; the published ./client adapter renders custom list/read keyed cards in DSH Web via window.__ModuleLoader__.load keyed on the runtime block (wire name tool.call.toolview, key = gotry_artifacts_list / gotry_artifacts_read, see client/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.ts 12 isolated-fixture proofs + scripts/dsh-artifact-web-e2e.ts fresh-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 / destination 48c794c58b02d543be01f3bec98a056447dfeb85.
  • 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) to 0.1.5-alpha.1 (230-package closure). The target version is pinned exactly, never following the mutable alpha dist-tag (currently pointing at 0.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 of dsh-tool-subagent-report; the add/remove set is confirmed by regenerated npm and pnpm lockfiles. ts/package.json overrides expanded from 14 to 230, pinning the full peer closure at 0.1.5-alpha.1 and preventing the ^0.1.5-alpha.1 caret from drifting transitive peers to 0.1.5-alpha.2. Added failing-precondition contract test dsh-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: the SettingsProvider.prototype.installSection seam, the 7 map_* tools, settings watch/reload/dispose, Session V3 one-way migration, and the agent/session/inbox/steer seams all survive on 0.1.5-alpha.1, with no behavior change. Historical 0.1.2-alpha.3 evidence 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 now 0.2.0-rc.2.)
  • TS strict install closure (#202) — on top of rc.20, which already shipped the MIT dsh-map-tools in the package, completed the exact overrides for the alpha.3 peer closure so that a bare npm ci in ts/ 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

  • 行为契约瘦身 23→13 条——窄域细则归位工具描述/路由卡… (aaf69cc)
  • derive planner prompt from shared sources… (90390cd)

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)