Reconcile v0.1.3 promotion fixes from main into dev - #126
Conversation
…ce794d6 Promote Artifact Memory v0.1.3 candidate to main
Reviewer's GuideThis promotion merges the v0.1.3 fixes from main into dev, preserving promotion history while improving literal-search Unicode semantics, tightening receipt and slice contracts, recalibrating ranked-search performance evidence, and strengthening cross-runtime SQLite validation. Sequence diagram for Unicode-aware literal searchsequenceDiagram
participant Caller
participant Search as search_records
participant SQLite
participant Filter as LifecycleFilter
Caller->>Search: search_records(index, query, literal=True)
Search->>SQLite: _LITERAL_SOURCE_QUERY
Search->>SQLite: CREATE VIRTUAL TABLE temp.literal_records_fts
Search->>SQLite: INSERT folded summary and labels
Search->>SQLite: _LITERAL_FOLDED_MATCH_QUERY
SQLite-->>Search: Candidate records
Search->>Filter: Apply folded containment and lifecycle filter
Filter-->>Search: Matching record IDs
Search-->>Caller: Literal search results
Flow diagram for warmed ranked-search measurementsflowchart LR
A[Generate deterministic corpus] --> B[project_records]
B --> C[_warm_search_modes]
C --> D[search_records unranked]
C --> E[search_records rank=True]
D --> F[Measure median timings]
E --> F
F --> G[Compare bm25 and unranked cost]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've found 1 issue
Prompt for AI Agents
Please address the comments from this code review:
## Individual Comments
### Comment 1
<location path="scripts/measure_ranked_search.py" line_range="132-136" />
<code_context>
return round(statistics.median(samples), 3)
+def _warm_search_modes(index: Path, query: str) -> None:
+ """Pay one-time validation, connection, and page costs before timing."""
+ search_records(index, query)
+ search_records(index, query, rank=True)
+
+
def _parse_scales(text: str) -> list[int]:
</code_context>
<issue_to_address>
**issue (testing):** The warm-up does not remove connection setup or connection-local schema/runtime costs from the timed measurements: each call to `search_records` opens and closes its own SQLite connection, and the timed calls create fresh connections after `_warm_search_modes` returns. The benchmark therefore still measures per-call cold connection costs despite claiming that connection costs are excluded.
**Triggers:** When interpreting the ranked-versus-unranked timing results as warmed measurements.
**Suggested fix:** Reuse one connection for the warm-up and all timed queries, or change the documentation and generator profile to state precisely which process- and OS-level caches are warmed.
</issue_to_address>Sourcery assessment
Needs a human reviewer. 1 finding to address first, and if the new literal-matching or receipt-contract behavior is wrong, searches could return incorrect results or valid consumers could reject receipts lacking the new mode field. Reverting restores the prior behavior, while already-issued receipts or cached search results would need to be regenerated or repaired.
Blocking findings: scripts/measure_ranked_search.py:136
PR Summary by QodoFix Unicode literal search and harden v0.1.3 promotion evidence
AI Description
Diagram
High-Level Assessment
Files changed (28)
|
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Code Review by Qodo
1.
|
|
Codex Review: Didn't find any major issues. Swish! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
PR review loop disposition:
This note records why the loop is not waiting indefinitely on this finding state. |
|
@codex review agent-control fresh required Codex review request |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…-main Return PR #126 review fix to main
Closes no issue automatically; this is a branch promotion from
maintodev.Promotion Evidence
joefeser/artifact-memoryorigin/main@dd8a12430467617cb10768e1b17bea033594dec2codex/promote-main-to-dev-dd8a12430467starts atdd8a12430467617cb10768e1b17bea033594dec2origin/dev@eb08ece794d65cc04cb4f2d42ab957307d9e0483merge_commitCommits To Promote
Validation / Handoff
agent-control pr-loop --repo joefeser/artifact-memory --pr <PR_NUMBER> --base dev --require-codex-review --quiet --jsonSecurity Impact
Compatibility Impact
query_modein valid v1 search receipts. Earlier development-candidate receipts that omit it fail validation and must be regenerated.Policy Notes
Post-Merge Reconciliation
main, open a separate source-based branch/PR that names each selected commit and its review evidence. Do not inferdd8a12430467617cb10768e1b17bea033594dec2..HEAD, merge unrelateddev-only work, or patch/force-pushmainduring this promotion.Summary by Sourcery
Reconcile v0.1.3 search, receipt, validation, and measurement fixes into the development branch.
New Features:
Bug Fixes:
Enhancements:
Documentation:
Tests: