Repository navigation
docs(skills): objectstack-ai says agent memory is enforced by the AI runtime, not declared only - #21652
Conversation
…runtime, not declared only The Common Pitfalls clause on `memory` still read "declared only — no runtime reads it". The agent memory contract now states what the cloud AI runtime honours: long-term notes are recalled and reflected on, `maxEntries` and `reflectionInterval` are required once `longTerm.enabled` is true, and there is no storage backend to choose. The pitfall's point — none of these is a gate — is kept; nothing else in the pitfall changes. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CB6W87z22K2yjUCDyVrJRk
Contract reviewServed-tier: Read-only shape: the diff against the merge base 15fe567, card #21415 with every comment, and this head's check-runs; nothing built or run locally. Reviewed by the dispatch seat in seat (served tier equals the constant's value, read from ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS |
维护者速读(终稿)— PR #21652(#21415)· skills seat 1 · 2026-10-04T00:28Z改了什么: 为什么改: 风险与代价(含回滚): 纯技能文本,无 changeset( 席位意见: 建议批准。三件事实逐条对照 你要做的(一个动作): 在 PR #21652 上给一次 APPROVED review;批准后由席位清标、ready、挂 auto-merge 入队。 |
Fixes #21415
Clause-②: no
What changed
skills/objectstack-ai/SKILL.md, Common Pitfalls 1, told an AI author thatmemoryis "declared only — no runtime reads it". Since the agent memory contract landed onmain(spec commit 22c2d6f, ruling A′ on #20274), that sentence is false in the published catalog, and the open Version Packages PR (#21352) ships that contract in the next release — the skill must not go out contradicting it.One clause is rewritten; nothing else in the pitfall changes. The new text states the three facts the contract makes true and keeps the pitfall's point that none of this is a gate:
memoryis enforced by the AI runtime ☁️ — long-term notes are recalled and reflected on;maxEntriesandreflectionIntervalare required oncelongTerm.enabledis true;The sentence that follows ("For a gate that is enforced, use …") is untouched. The three other
memorymentions in the file (:218–247) are the knowledge adapter id'memory', a different thing, and are left alone.Evidence read from the spec (at
origin/main15fe567,packages/spec/src/ai/agent.zod.ts)enabled,maxEntriesandreflectionInterval".LONG_TERM_STORE_RETIRED: "agent.memory.longTerm.storewas removed in @objectstack/spec 17.7.0 (ADR-0049 enforce-or-remove) — the memory store is platform infrastructure, not agent metadata".MAX_ENTRIES_REQUIRED: "agent.memory.longTerm.maxEntriesis required whenagent.memory.longTerm.enabledis true".REFLECTION_INTERVAL_REQUIRED: "agent.memory.reflectionIntervalis required whenagent.memory.longTerm.enabledis true".REFLECTION_INTERVAL_WITHOUT_LONG_TERM: "agent.memory.reflectionIntervalrequiresagent.memory.longTerm.enabled: true".checkAgentMemoryContract, the refinement onmemorythat issues those three.origin/main(git merge-base --is-ancestor, exit 0) and of the Version PR's base 36ad321 (REST compare: ahead 112, behind 0).Readings
origin/main15fe567 (the dispatch read 0c50b5d; the one commit between touchespackages/spec/srconly, and the skill file is byte-identical across the two).skills/**/SKILL.mdsummed): 4397 → 4400 lines.node scripts/check-skills-token-ratchet.mjs:skills/objectstack-ai/SKILL.md5486 → 5539 tokens, ceiling 6806 unchanged, headroom 1320 → 1267. Self-test: 65 cases pass.Verification (all at f85f008, the only commit on the branch)
Gate list derived in the worktree with
node scripts/pm/dispatch-gates.mjs --commands(no paths; change set off merge base 15fe567): 24 commands, identical to the dispatch's list. Every one exited 0;--ranreconciliation with exit codes recorded: "24 derived, 24 run, 0 NOT-MEASURED, 0 UNRUN … a DERIVED zero — all 24 recorded an exit code and none of them is 3".pnpm --filter @objectstack/spec buildunderscripts/pm/os-verify-lock.sh— "VERDICT command-exit 0" (held 127s, waited 134s), beforecheck:skill-docs— "✅ Skill docs in sync".check:doc-formula-expressionsfirst answered exit 3 (PREREQUISITE NOT MET:@objectstack/formula/@objectstack/lintunbuilt — nothing measured); afterturbo run build --filter=@objectstack/formula --filter=@objectstack/lintunder the lock (VERDICT command-exit 0) it reads "✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 460 files / 1381 TS blocks judged clean".check:skill-identifier-liveness— "OK — Leg 1: 457 citation(s) over 53 published file(s) checked against 118371 implementation word tokens (0 ledgered exemption(s)); Leg 2: 8 registered exhaustive section(s), 0 ledgered gap(s)".check:doc-authoring— "17369 customer-facing string(s) across 1256 spec sources clean — no internal issue-id references".check:nul-bytes— "OK (scanned 10022 text file(s) … no raw ASCII control bytes)"; control-character grep over the edited file: 0 hits.check:skill-compatibility— "10 SKILL.md file(s) reconciled against 80 workspace packages";check:corpus-claim-drift,check:role-word,check:closing-keyword-parity(+ self-test, 40 assertions),check-doc-route-spelling --advisory(+ self-test),check:comment-mask-corpus(8119 files, 0 disagree),check:ci-filter-parity,check:agent-test-spelling,check:cross-package-test-inputs,check:driver-memory-census,check:gitlink-declared,check:pm-governed-merges,check:refd-timer-probe,check:skill-frame-sync,check:watch-hint-literal— all green.Changeset: none —
skills/**is not shipped by any workspace package'sfiles[];skip-changesetis requested on this PR.维护者速读(草稿)
改了什么。 只改
skills/objectstack-ai/SKILL.md的 Common Pitfalls 第 1 条里关于memory的那半句:原文说「memory只是声明、没有运行时读它」,现在改成「memory由 AI 运行时 ☁️ 强制执行 —— 长期记忆会被回忆与反思;longTerm.enabled为 true 时maxEntries与reflectionInterval必填;存储后端不可选」,并保留「这些都不是 gate」的要点。其余一字未动。净增 3 行(预算 ≤ 3),token 读数 5486 → 5539(上限 6806 未动)。为什么改。 这份 skill 随
npx skills add发到客户项目,AI 作者照它写元数据。spec 的agent.memory契约已经在main上落地(PR #21413),开着的 Version Packages PR 会把它随下一版一起发出去;若 skill 仍说「没有运行时读它」,AI 作者会漏写必填的maxEntries/reflectionInterval,或继续写已退役的longTerm.store,发布时被拒。写给 AI 的文档说错一句等于产品缺陷,且必须与契约同版发运,这是 p1 的由来。风险与代价(含回滚)。 纯文档改动,不发运任何包,无 changeset;本地 24 个派生门禁全绿。风险仅在措辞:三件事实均逐条对照
packages/spec/src/ai/agent.zod.ts的拒收文案核过。回滚 = revert 这一个 commit(f85f008),无其它依赖。席位意见。 (留空,由席位定稿)
你要做的。 这是 Tier H 受管面(
skills/**),需要你一次授权的 APPROVED review;之后由席位落地。不需要你操作 Version Packages PR。Acceptance notes
knowledgeadapter id'memory'at :218–247 of the same file is unrelated toagent.memoryand was not touched.git push(2: the empty branch probe, then f85f008), onepr_createthrough the fleet-write relay, onelabel-write(skip-changeset+ assignee), one report comment. No MCP calls.Generated by Claude Code