You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4e6e378
Browse filesBrowse the repository at this point in the historyBrowse files
- Outbox: a malformed `outbox.json` keeps its valid entries and is set aside
as `outbox.json.corrupt-<ms>` before it is replaced; oversized legacy usage
batches are split when read
- Backfill runs again whenever a pull finds no earlier cache, and proposes a
lesson changed since the server last saw it (skips only unchanged ones)
- Batch results match only one exact `(lesson_key, submission_hash)`; proposals
sharing both never share a request; unmatched, duplicate or incomplete
results stay queued and report an error
- A whole-request refusal (422) is never resent as is: items are sent one by
one and the refused item is held
- Usage over 500 items is split into entries with derived `batch_id`s; parse
`skipped_items`
- Wire limits (tags, path triggers, coexists, replaces) are checked after
coalescing and again before sending; provenance is cut to 4000
- `lessons_not_available` backs off like an older server and keeps the cache
- Promotions derive proposals in `beforePublish` and queue them in a new
`afterPublish` hook, so a failed promote never touches the queue
- Session views track the account and a per-project binding epoch; LRU memo
- Rotate `local_keys` past 1000 across pulls (`local_keys_offset`)
- Keyset-page `GET /submissions` with `since` (echoed as received) and
`after_id`
- `learn sync --json` exits non-zero on failure; `disable --sync` checks the
override before dropping the cache; `learn show` marks held proposals and
workspace-wide team lessons
- Build lesson delivery on a fresh clone when sync is on
- `lesson-api.ts` uses flat exports with `export * as LessonApi`
- Docs and a note on regenerating `lint_cases.json`
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Copy file name to clipboardExpand all lines: docs/docs/configure/learn.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -212,15 +212,15 @@ With sync off, learn makes no network requests for lessons and delivers no team
212
212
- each lesson's text, tags, path triggers, pin, provenance, and coexistence declarations;
213
213
- how often each team lesson was delivered, and helpful or harmful marks the curator gave it.
214
214
215
-
Everything you send lands as a proposal. It reaches the team only after the workspace owner approves it, and that includes lessons promoted automatically on your machine. The first sync also uploads the lessons the project already has: the candidate if there is one, otherwise the approved set, at most 200 per run, starting with the most helpful. A lesson the candidate removed counts as an intentional removal and is not uploaded.
215
+
Everything you send lands as a proposal. It reaches the team only after the workspace owner approves it, and that includes lessons promoted automatically on your machine. The first sync also uploads the lessons the project already has: the candidate if there is one, otherwise the approved set, at most 200 per run, starting with the most helpful. A lesson the candidate removed counts as an intentional removal and is not uploaded. The same upload runs again after sync was off or the pulled lessons were deleted. It skips a lesson the workspace already holds as it is now (your open proposal, an earlier submission, or the team version) and proposes one you changed since: a revision of your open proposal, or a new proposal. A lesson the team has a version of, or retired, is not proposed by this upload; edit it to propose a change. A lesson the workspace would refuse is not sent, and `learn status` lists it as not syncable: text over 140 characters, more than 32 tags or a tag over 64 characters, more than 32 path triggers, more than 100 coexistence declarations, or more than 50 replaced lessons. Provenance over 4,000 characters is shortened.
216
216
217
217
**Editing team lessons.** Reflection sees team lessons but never writes them into `candidate.json` or `approved.json`. Editing, removing, or superseding a team lesson becomes a proposal that names the approved version it replaces. The current lesson stays live until the owner approves the change. Proposals are queued in `outbox.json` and sent after reflection and promotion, at session start, and by `learn sync` and `learn push`.
218
218
219
219
**Conflicts.** If someone else changed a lesson on the server first, for example the owner edited your proposal or approved another edit, your proposal is held instead of being sent again over their change. If the server already holds what you proposed, the held proposal is dropped. Otherwise `learn status` lists it, and you resend it after review with `learn push --resubmit <lesson key>`. A proposal the owner rejected is never sent again.
220
220
221
221
**Retirement.** When the owner retires a lesson, the next pull hides it in every project, including a copy restored by a Git checkout or `learn rollback`. A running session drops it from its "Team rules" section and from later requests, but text the agent has already received is not rewritten. Rolling back locally changes only your local lessons. If the workspace still serves a playbook skill published earlier with `learn promote --publish`, its lessons keep being delivered until the owner detaches that skill in the workspace's Skills page; `learn sync` warns about it. With sync on, `promote --publish` is refused.
222
222
223
-
**Accounts and links.** The pulled lessons and the queue belong to one account, workspace, and repository. After you switch accounts, relink, or unlink, the old cache is no longer used. Queued proposals from the old scope are held and are never sent to the new one. `learn disable --sync` turns sync off and deletes the pulled lessons, and leaves capture and local lessons as they are. If the server does not support lesson sync yet, learn retries once a day.
223
+
**Accounts and links.** The pulled lessons and the queue belong to one account, workspace, and repository. After you switch accounts, relink, or unlink, the old cache is no longer used. Queued proposals from the old scope are held and are never sent to the new one. `learn disable --sync` turns sync off and deletes the pulled lessons, and leaves capture and local lessons as they are. When `ALTIMATE_LEARN_SYNC` or a higher-precedence config keeps sync on, it reports that and keeps the pulled lessons. If the server does not support lesson sync yet, or not for your tenant, learn retries once a day.
224
224
225
225
## Learn vs memory vs a knowledge base
226
226
@@ -273,7 +273,7 @@ altimate-code learn status --json
273
273
274
274
### show
275
275
276
-
Prints approved lessons, the candidate, a diff between them, and pending replacements. Each lesson shows its id, text, and counters (`helpful`, `harmful`, `applied`). Flagged lessons print a `WARNING` line. Lessons over 140 characters from older stores are marked `long`. With lesson sync on, lessons are marked `(team)` (approved in the workspace), `(pending review)` (your proposal is waiting for the owner) or `(local)`, and a "Team" section lists the team lessons.
276
+
Prints approved lessons, the candidate, a diff between them, and pending replacements. Each lesson shows its id, text, and counters (`helpful`, `harmful`, `applied`). Flagged lessons print a `WARNING` line. Lessons over 140 characters from older stores are marked `long`. With lesson sync on, lessons are marked `(team)` (approved in the workspace), `(pending review)` (your proposal is waiting for the owner or to be sent), `(held — run learn push --resubmit <key>)` (your proposal conflicted with a change on the server) or `(local)`, and a "Team" section lists the team lessons.
277
277
278
278
```bash
279
279
altimate-code learn show
@@ -383,7 +383,7 @@ altimate-code learn reject
383
383
384
384
### sync / push
385
385
386
-
`sync` pulls the approved team lessons and sends queued proposals; `push` only sends. Both need [lesson sync](#sync-with-your-workspace) to be on. `sync` reports each store's pull, what was sent, and warns when the workspace still serves a learn-managed playbook skill.
386
+
`sync` pulls the approved team lessons and sends queued proposals; `push` only sends. Both need [lesson sync](#sync-with-your-workspace) to be on. `sync` reports each store's pull, what was sent, and warns when the workspace still serves a learn-managed playbook skill. Both exit non-zero when sync was skipped, a pull failed, or a proposal was not sent; with `--json` the report is printed first.
0 commit comments