Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ Follows [Keep a Changelog](https://keepachangelog.com/); versioning is [SemVer](
- session-ledger distill compiler property surface (WBS-6.2 #462): `crates/sl-viewer/tests/properties_session_ledger_distill.rs` adds 9 proptest properties pinning `session_ledger::distill::compile` and `compile_and_store` (the deterministic compilation pipeline that turns a `Session` into a `ContinuationBundle` + episodic memories). `compile` always produces a bundle whose `source_id` equals `session.id`, is injectable (carries an `Acceptance` slice), emits one slice for every documented kind (`Acceptance` / `Intent` / `Context` / `Contract` / `Provenance` / `Worklog`) — even for empty sessions — and whose `total_token_estimate()` equals the sum of per-slice `token_estimate` values. `compile` is deterministic across calls. The `Worklog` slice's body deserializes to a `WorklogProjection` whose `message_count` equals `session.messages.len()`. `compile_and_store` returns an injectable bundle with the input `source_id`, writes exactly 3 episodic memories (intent / contract / context) to the memory store, and is deterministic across fresh stores.

- session-ledger heuristic intent extractor property surface (WBS-6.2 #463): `crates/sl-viewer/tests/properties_session_ledger_intent.rs` adds 10 proptest properties pinning `session_ledger::distill::extractor::HeuristicIntentExtractor::extract_intent` (the P1 SSOT for what the user wants — drives resume prompt, search index, and wiki/docs view). `user_turn_count` always equals the count of `Role::User` messages and ignores `Assistant` / `Subagent` / `Tool` / `System` messages. Empty sessions produce an empty `Intent`. Repeated acceptance / constraint patterns are deduplicated. Every documented acceptance pattern (16 of them: `looks good`, `works`, `that's correct`, `correct`, `done`, `fixed`, `passes`, `approved`, `looks right`, `looks great`, `all good`, `that works`, `nice`, `perfect`, `exactly`, `confirmed`) and every documented constraint pattern (19 of them: `don't change`, `do not change`, `must not`, `should not`, `keep`, `maintain`, `preserve`, `never`, `don't touch`, `do not touch`, `don't modify`, `do not modify`, `only`, `but don't`, `but do not`, `without changing`, `without modifying`, `leave alone`, `leave as is`) is recognized in any user message. Labeled `Goal:` / `Objective:` / `Task:` lines win over surrounding preamble. Labeled `Constraint:` / `Requirement:` / `Boundary:` lines contribute their full text. The extractor is deterministic across calls.

- session-ledger heuristic context extractor property surface (WBS-6.2 #464): `crates/sl-viewer/tests/properties_session_ledger_context.rs` adds 20 proptest properties pinning `session_ledger::distill::context_extractor::HeuristicContextExtractor::extract_context` (the P2 adapter for [`ContextExtractor`] — drives the working-context slice of any `ContinuationBundle`). `cwd` and `title` are always copied verbatim from the session. Empty sessions and whitespace-only messages yield an empty `Context`. Every detected file path is non-empty, ≥3 chars, and either contains a `/` or ends with a documented extension. Every documented file extension (28 of them: `.rs`, `.ts`, `.tsx`, `.js`, `.jsx`, `.py`, `.go`, `.java`, `.kt`, `.rb`, `.c`, `.h`, `.cpp`, `.hpp`, `.cs`, `.swift`, `.toml`, `.json`, `.yaml`, `.yml`, `.md`, `.sql`, `.css`, `.scss`, `.html`, `.sh`, `.tf`, `.lock`) is detected. Files / symbols / decisions / environment notes are deduplicated across messages. Decision summaries all read `Session contains '<pattern>' language` and rationale equals the source message. Every documented decision pattern (15 of them) and every documented environment pattern (19 of them) is detected, both case-insensitively. Symbols are extracted only from tokens containing `::` or `()`. `extract_context` is deterministic across calls, and the `ContextExtractor` trait path returns the same `Context` as the associated function.
- session-ledger heuristic contract extractor property surface (WBS-6.2 #465): `crates/sl-viewer/tests/properties_session_ledger_contract.rs` adds 18 proptest properties pinning `session_ledger::distill::contract_extractor::HeuristicContractExtractor::extract_contract` (the P2 adapter for [`ContractExtractor`] — drives the acceptance-contract slice of any `ContinuationBundle`). Empty sessions and whitespace-only messages yield an empty `Contract`. Every section string has a documented prefix and suffix shape (`Goal/requirement: '...'`, `Verification: '...'`, `Constraint: '...'`, `Do-not-touch: '...'`). Every documented criteria pattern (12 of them), test pattern (21 of them), constraint pattern (15 of them), and do-not-touch pattern (14 of them) is detected, and all patterns match case-insensitively. Success criteria / tests / constraints / do-not-touch lists are deduplicated across messages. `extract_contract` is deterministic across calls, and the `ContractExtractor` trait path returns the same `Contract` as the associated function. `is_empty()` is true iff every collection is empty.
- Commit signing header scan (C04 L34): `commit-signing-check.ps1` reads bounded commit headers via line-scanner (no unbounded `git cat-file` buffers or `(?ms)` regex); `-SelfCheck` + `tests/commit_signing_check.rs`.

- Loom permutation CI timeout (P0 stability): split blocking `loom-permutation.yml` into core + per-daemon `loom_model` jobs with `LOOM_MAX_PREEMPTIONS` on broadcast/pipeline/shutdown; mirror in soft `loom-smoke.yml` so Wave-40 tokio-shaped daemon graph tests no longer exceed single-job ceilings.
Expand Down
Loading
Loading