Skip to content

Commit bdaeff8

Browse files
pelikhanCopilot
andcommitted
Merge main and regenerate workflow locks
Merge origin/main at c154c71 and regenerate workflows from the merged compiler and sources. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2 parents e915022 + c154c71 commit bdaeff8

350 files changed

Lines changed: 6323 additions & 4463 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.changeset/clarify-model-rejection-diagnostics.md‎

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎.github/aw/compat.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"min-gh-aw": "0.72.0",
3535
"max-gh-aw": "*",
3636
"min-agent": "1.0.21",
37-
"max-agent": "1.0.89",
37+
"max-agent": "1.0.90",
3838
"open": true
3939
},
4040
{

‎.github/aw/memory-stateful-patterns.md‎

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,30 +113,29 @@ Write the current advisory IDs to `/tmp/gh-aw/repo-memory/default/vuln-baseline.
113113
- **Engine restriction** — `repo-memory` requires Claude or a custom engine; it is **not available** for the Copilot engine
114114
- **Baseline schema** — store only stable identifiers (advisory ID strings), not mutable fields like severity, to avoid false "new" alerts when metadata changes
115115

116-
## Append-only Event History (repo-memory ledger; experimental)
116+
## Append-only Event History (standalone ledger; experimental)
117117

118-
Use the repo-memory ledger when a workflow needs a durable event log rather than
118+
Use a standalone ledger when a workflow needs a durable event log rather than
119119
a replaceable baseline: for example, a low-volume audit that appends one
120120
structured result per run and queries prior results by a stable event key.
121-
Configure it alongside repo-memory:
121+
Configure a built-in log independently of repo-memory:
122122

123123
```yaml
124124
tools:
125-
repo-memory:
126-
branch-name: memory/audit-history
127-
ledger:
125+
ledger:
126+
audit-history:
127+
type: log
128128
compaction:
129129
min-segments: 32
130130
max-segments: 32
131131
```
132132
133-
At the start of a run, use `ledger_query` or `ledger_get` to inspect relevant
134-
records; after the result is complete, use `ledger_append` to add an immutable
135-
record with an explicit timestamp and stable domain key. Use
136-
`ledger_status` to inspect malformed or incomplete records. Never modify ledger
137-
shards directly. When concurrent runs can report the same event, deduplicate
138-
and resolve conflicts using deterministic application rules; the ledger
139-
converges after branch merges but does not provide transactions.
133+
At the start of a run, query the read-only SQLite `state` or `records` tables at
134+
`/tmp/gh-aw/ledgers/audit-history/ledger.db`. After the result is complete,
135+
submit `ledger_append` with `operation: append` and a `value` containing a
136+
stable domain key. The response confirms queuing; records become durable only
137+
after `push_ledger_changes` succeeds. Never modify SQLite or ledger shards
138+
directly. Use stable application keys to identify duplicate events.
140139

141-
For shard/record/query limits, compaction behavior, and the Cloud Hypervisor
142-
isolation model, see [memory.md](memory.md#structured-event-history-repo-memory-ledger-experimental).
140+
For built-in types, script restrictions, and persistence behavior, see
141+
[memory.md](memory.md#structured-event-history-standalone-ledger-experimental).

‎.github/aw/memory.md‎

Lines changed: 39 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ For workflows that **persist state across runs** — deduplication, incremental
2020
| Track a numeric metric and compare current vs. baseline (runs at least every 7 days) | `cache-memory` ✅ first choice |
2121
| Long-lived knowledge base visible in PRs and code reviews | `repo-memory` |
2222
| Baselines that must survive cache expiry (e.g. security findings, dedup lists) | `repo-memory` |
23-
| Bounded append-only structured event history with record-level queries | `repo-memory` with the experimental ledger |
23+
| Bounded append-only structured event history and built-in current-state projections | Experimental `tools.ledger` |
2424
| Human-readable wiki pages for knowledge accumulation | `repo-memory` with `wiki: true` |
2525
| Persist notes/state inline on the triggering issue or PR | `comment-memory` |
2626
| Private-preview GitHub Drives backend (enrolled repos only) | `drive-memory` — see [drive-memory.md](drive-memory.md) |
@@ -206,63 +206,59 @@ tools:
206206
207207
Compiler creates a separate `push_repo_memory` job with `contents: write`; main agent job stays read-only.
208208

209-
### Structured event history: repo-memory ledger (experimental)
209+
### Structured event history: standalone ledger (experimental)
210210

211211
Use the ledger for immutable, structured events when each run should add records
212212
and later runs need to query them. For example, a low-volume audit can append
213213
one result per scan and query prior results by a stable application-level key.
214-
The ledger exposes `ledger_append`, `ledger_get`, `ledger_query`, and
215-
`ledger_status`; its SQLite query projection is disposable and rebuilt from the
216-
persisted JSONL shards.
214+
Configure `tools.ledger` independently of repo-memory. The legacy
215+
`tools.repo-memory.ledger` declaration is unsupported. Each ledger has a
216+
`ledgers/<name>` branch and a disposable read-only SQLite projection rebuilt
217+
from persisted JSONL shards.
217218

218219
```yaml
219220
tools:
220-
repo-memory:
221-
branch-name: memory/audit-history
222-
ledger:
221+
ledger:
222+
audit-history:
223+
type: log
223224
compaction:
224225
min-segments: 32
225226
max-segments: 32
226227
```
227228

228-
Optionally set `ledger.schema` to a repository-relative JSON Schema file to
229-
validate payloads. The supported schema vocabulary is intentionally limited;
230-
see the [repo-memory reference](https://github.com/github/gh-aw/blob/main/docs/src/content/docs/reference/repo-memory.md#structured-ledger).
231-
232-
Ledger records are append-only and concurrent histories converge when their
233-
repo-memory branches merge, but this is not a transactional database. Include
234-
stable event keys and timestamps in payloads, deduplicate and resolve
235-
conflicting application events deterministically, and use `ledger_status` to
236-
check for malformed or incomplete records. Do not edit ledger shard files
237-
directly.
238-
239-
The ledger is experimental and bounded: it inspects at most 1024 shard files
240-
(configurable with `ledger.max-shards`), each record is limited to 32 KiB, each
241-
shard defaults to 100 KiB, each run defaults to a 10 KiB append budget, and each
242-
query returns at most 500 records. Configure limits with
243-
`max-segment-kb`, `max-record-kb`, and `max-patch-kb`; defaults align with
244-
repo-memory's 100 KiB per-file and 10 KiB per-push defaults. Compilation warns
245-
when ledger limits exceed the corresponding repo-memory persistence limits.
229+
Declare `type: log`, `set`, `map`, `table`, `counter`, or `claims` for built-in state
230+
models. Schemas validate operation values, not envelopes; tables require a
231+
string primary-key field through `key`. Maps expose `ledger_map_put` and
232+
`ledger_map_delete`; claims expose `ledger_claim_add` and `ledger_claim_vote`.
233+
Other types use typed `ledger_append` operations.
234+
235+
Query `state` for current state or `records` for immutable history at
236+
`/tmp/gh-aw/ledgers/<name>/ledger.db`. For a log, submit `ledger_append` with
237+
`operation: append` and the event in `value`. Requests are deferred and become
238+
durable only when the trusted `push_ledger_changes` job succeeds; queued writes
239+
are not immediately visible in the run's projection. Never edit SQLite or
240+
canonical ledger files.
241+
242+
Each record is limited to 32 KiB, each shard defaults to 100 KiB, and each run
243+
defaults to a 10 KiB append budget. Configure per-ledger limits with
244+
`max-segment-kb`, `max-record-kb`, and `max-patch-kb`. Projection preparation
245+
inspects at most 1024 canonical files and 100 MiB of history.
246246
Each writing workflow invocation creates a shard, so a frequently running
247247
workflow can exhaust the shard limit. Use ordinary repo-memory files for
248248
replaceable snapshots, pruned baselines, or histories that need more than 1024
249-
writer shards. Use bounded declarative `ledger.compaction` options to compact
250-
stable segments; custom JavaScript compactor scripts are disabled because Node's
251-
in-process VM is not a security boundary. Ledger workflows require AWF's
252-
Cloud Hypervisor runtime, which keeps ledger storage outside the agent's
253-
`filesystem.allowWrite` paths; only the MCP ledger server can append records.
254-
The persistence job ignores agent-supplied coverage files and overwrites of
255-
trusted shards, then verifies replacement coverage before retirement.
256-
257-
The ledger is eventually convergent, not transactional or exactly-once. Record
258-
SHA-256 values are unkeyed checksums, not authentication; rely on the AWF write
259-
boundary, use stable application keys, and deterministically resolve duplicates
260-
and concurrent conflicts. Compaction, normalization, and save details appear in
261-
the persistence step summary. Every successful append also emits a redacted
262-
`ledger_mutation` audit entry to a dedicated ledger transaction log; a trusted
263-
post-agent step revalidates and merges those entries into the safe outputs for
264-
threat detection, and their safe-output handler only logs that metadata and
265-
performs no side effects.
249+
writer shards. Compaction belongs to Agentic Maintenance, never the agent or
250+
persistence job. Use per-ledger `compaction` settings (`schedule`,
251+
`min-segments`, `max-segments`) or disable it with `compaction: false`.
252+
Custom `replay.script`, `replay.config`, and `compaction.script` settings are
253+
rejected. Ordinary repo-memory `validation.script` remains a separate supported
254+
file-storage validator.
255+
256+
Removing custom replay does not rewrite history. Existing raw-record ledgers
257+
can omit `type` and query `records.payload` with SQLite JSON functions. Do not
258+
add a built-in type to raw history unless every payload already matches that
259+
type's operation format. Use a new ledger name for a new typed state model.
260+
See the [ledger replay reference](https://github.com/github/gh-aw/blob/main/docs/src/content/docs/experimental/ledger-replay.md)
261+
and [compaction guide](https://github.com/github/gh-aw/blob/main/docs/src/content/docs/experimental/ledger-compaction.md).
266262

267263
### Tradeoffs
268264

‎.github/workflows/ab-testing-advisor.lock.yml‎

Lines changed: 15 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)