Skip to content

Verify OMP preset activation and cross-provider coexistence after native-history fixes #205

Closed

Description

@pablontiv

Problem

Native OMP v3 ingestion and its preset are delivered by #124 / PR #125. Native preset installation is delivered by #123 / PR #188. Read-only inspection found an active OMP manifest in the local runtime configuration; actual installed-revision ingestion and recall remain unverified. One integrated proof must establish that OMP works alongside the corrections in #199, #200, #201 and #159.

Mixed-fixture verification on clean integrated revision d77d62e exposed a recovery defect: planning rejects canonical identities emitted by the native OMP and Pi readers because compat.ValidateRecoveryUUID accepts only RFC UUIDs and Claude-derived suffixes. The actual CLI exited 1 before recovery mutation. The correction must honor existing canonical opaque reader identities and preserve collision, payload and ownership checks; it adds no rich-event recovery guarantee. Keep a consumer-visible regression and rerun the same mixed recovery path after the fix.

Change

Exercise the shipped OMP reader and preset on the integrated revision after the open prerequisites merge. First ingest a synthetic mixed-provider fixture through the actual CLI in isolated HOME/config/SQLite state, including OMP, Pi, Codex and two native OpenCode sessions/projects in one source database. Then consume a genuine OMP headless source using the clean candidate development binary installed into a private prefix with fresh private HOME/configuration/index state. Preserve an already active manifest; install missing presets through presets install --config-home with the explicit runtime configuration home. Obtain exact-target approval before modifying an existing manifest or using the six-preset overwrite operation. Public evidence contains synthetic data or sanitized counts only.

Scope is supported activation, a consumer-visible mixed-provider integration regression, and observed coexistence. Existing source, privacy, origin, replay, canonical ownership and derived-metadata recovery contracts remain authoritative.

Acceptance

  1. The actual CLI installs/preserves the shipped presets and ingests the deterministic mixed fixture. Record revision, effective isolated configuration and expected provider counts. OMP discovery uses the canonical direct-session JSONL shape and native v3 decoder.
  2. OMP preserves header/cwd identity, native physical-block UUIDs and parser-backed origins. Reasoning remains opt-in; toggling it retains IDs, ordinals and tool coordinates. Appended results enrich native error/exit/interruption signals without duplicate calls. Commands, failures, sequences and existing filtered/trend consumers retain proven and unknown outcomes correctly. Direct-search echo eligibility remains correct.
  3. Pi and Codex each emit one event per supported native call, pair interleaved outputs by native ID, preserve explicit success/failure/unknown and replay unchanged available sources through the shared bounded scheduler. Codex wrapper success remains distinct from nested-operation outcome. OMP native ToolUseID populates nullable tool_events.native_call_id while message_uuid remains the canonical message owner. Existing recovery rederives tool_events: available inputs can restore native metadata; expired-source lossy rederivation retains unknown native IDs. Verify that boundary without adding a new rich-event recovery contract.
  4. More than 200 eligible matches per FTS stream demonstrate the adopted bounded search contract, stable ranking, scope and echo filtering. Candidate exhaustion is truthful on early and empty later pages; typed search retains direct pagination. JSON retains its array shape. Robot candidate/omission metadata respects the complete escaped token budget, including tiny-budget stderr fallback.
  5. Two OpenCode sessions/projects in one source remain separate in list, search, exact context, tags and sequences. Context stays in the owning session; sequences and project/tag scopes remain isolated. Updates, replay and canonical recovery preserve native ownership and retained payload.
  6. After isolated mixed-fixture PASS, prove consumption by the clean candidate development binary installed into a private prefix with fresh private HOME/configuration/index state of a genuine installed OMP 18.12.6 headless session created through headless provider inference with two native bash calls. Record the exact candidate revision, effective private manifest/configuration and target scoping, using canonical direct-session logging. Verify opaque IDs, origin, cwd, recall JSON and robot/context/pattern behavior; pair native bash calls by their native IDs and canonical message owners. Preserve source and production manifest unchanged, and retain the session. Establish isolated mixed-provider PASS separately. Preserve successful native calls whose output omits exit status as success with exit unknown; preserve failure with is_error=true and exit 7. Do not claim reasoning-content indexing without thinking blocks. Observe genuine-provider proof independently of synthetic-fixture success. The original global installed mixed-target acceptance involving OMP/Pi/Codex/Claude/OpenCode is tracked in a separate follow-up created by the same backend run.
  7. Run the targeted commands below, the final corrective regressions from the four delivered issues, and the normal full gate once after integration. Confirm the actual merged test names and record exact commands, exit status and observed outcomes. Update existing operator documentation for the activation path actually exercised.

Targeted verification

go test ./internal/readers ./internal/input_config ./internal/storage ./cmd/backscroll -run 'OMP|Pi|Codex|OpenCode|Native|IngestionFingerprint|ReplayScheduler|Search|Robot|Budget|RefillCandidate' -count=1
go test ./internal/presets ./cmd/backscroll -run 'InstallUsesExplicitConfigHome|InstallPreservesExistingPreset|InstallOverwritesWithExplicitOption|EmbeddedPresetsMatchShippedInputs|PresetsInstallUsesExplicitConfigHome' -count=1
just check && just ci

CLI proof must include config, list, search in JSON and robot modes, context using an actually returned UUID, commands/failures/sequences, repeated startup, appended results and reasoning changes. Use fixture-specific expected counts and ownership, not exit zero alone. The cap fixture includes both first and beyond-pool pages plus typed contrast. All initial proof uses private temporary HOME/config/database state and a dev binary from the integrated revision. Local operational commands can synchronize the index and require target authorization.

Dependencies and delivery provenance

All four corrective prerequisites are merged and closed: #199 / PR #204 (Pi native events), #200 / PR #207 (Codex native events/V19), #201 / PR #210 (truthful bounded pagination), and #159 / PR #209 (OpenCode native session/project ownership/V20). Their native feature runs succeeded and completed owned-resource cleanup. The three native blocked-by relationships identify these completed prerequisites; they are no longer unresolved blockers.

Integrated main is d77d62e. Five separate isolated real-CLI E2E cases passed against a clean dev binary from that revision. They establish per-provider delivery evidence, not the single mixed-index proof or authorized installed-target proof required by this issue. #206 / PR #208 delivered the omp-dagu 0.3.94 adoption; its native run also succeeded and cleaned its resources. Runtime investigation remains separate from this integration scope.

Existing OMP v3 ingestion (#124 / PR #125) and native preset installation (#123 / PR #188) are completed provenance. This issue verifies their activation and coexistence rather than implementing a second reader. It remains open until the acceptance criteria above, including genuine OMP headless/private candidate-consumer proof, are observed.

Breakdown source: plan

Operator-authorized scope split: close this bounded isolated-mixed plus actual OMP-headless consumer proof; preserve the original global installed mixed-target acceptance in the separate follow-up. Production inputs and manifests remain unchanged. Public headless evidence: #205 (comment)

Activity

  1. pablontiv commented on Oct 21, 2026

    @pablontiv
    OwnerAuthor

    Pregunta

    Combine demonstrated native OMP, Pi, Codex and OpenCode CLI behavior in one isolated index; no new external or runtime capability is required. Installed-target proof waits for isolated PASS and exact-target approval.

    BASIS

    PR204 PR207 PR209 PR210 merged; integrated d77d62e dev CLI all five cases PASS, local://final-artifact-e2e-h6xjt_14/report.json. Independent generation0 request1 TriageReview205 says poc=no.

    REVIEW

    TriageReview205

  2. pablontiv commented on Oct 21, 2026

    @pablontiv
    OwnerAuthor

    Additional bounded native-metadata recovery evidence

    Two additional read-only recovery routes have now been exhausted. An exact target lookup in the consistent perennial backup found only task_id/resume/task-result references, not original native Session objects. SQLite 3.54.0 .recover and import on private consistent copies recovered 425 surviving Session rows, zero of the four required target Session rows, and no lost_and_found rows. The orphan set remains 52 messages / 246 parts for the four missing native sessions. Source data bytes were preserved.

    Task references and prose are not authoritative Session metadata. The real mixed-provider acceptance remains BLOCKED until the original four Session rows or a verified native export/recovery is available. Isolated candidate proof does not establish real production acceptance. This evidence does not mark #205 accepted or close it.

  3. pablontiv commented on Oct 22, 2026

    @pablontiv
    OwnerAuthor

    Additional isolated real OMP headless + candidate-consumer proof

    Installed OMP 18.12.6 produced a genuine native v3 session through headless provider inference and two native bash calls. The retained issue-205 candidate at f4e95a89c298faaca61c0a66f5949ff433b9c099 consumed that session in an isolated private config/manifest/index. The provider session was retained unchanged. The production index, active production manifests, and other provider sources were untouched; Backscroll read only the newly owned OMP test session.

    Consumer proof matched all 8/8 native physical blocks and their original identities, in order, paired both native bash calls by original call IDs and canonical message owners, and preserved human/assistant/automation origins (2/4/2). It preserved the successful call with unknown exit status (no invented zero) and the failed call with is_error=true, exit code 7, and error result. Config/list/search JSON and robot modes, exact context, commands/failures/sequences, project scoping, and error/success anchors were exercised. Three startups produced no duplicates; toggling reasoning preserved IDs, ordinals, and tool coordinates. The session contained no thinking blocks, so reasoning-content indexing was not demonstrated.

    These are bounded genuine-provider and isolated candidate-consumer PASS results, not the original mixed-production acceptance. Criterion 6 remains unmet: production OpenCode ingestion still lacks four Session rows for 52 orphan messages, so no installed-target/mixed-index acceptance or issue closure is claimed. See the prior recovery evidence.

  4. added a commit that references this issue on Oct 22, 2026
    224e571
  5. pablontiv commented on Oct 22, 2026

    @pablontiv
    OwnerAuthor

    Final isolated five-consumer CLI evidence and split follow-up

    The clean candidate 28a807ca0db31f4c3c1a2b57132a2b1d4bf53c83 passed the final isolated five-case real-CLI suite, run once with the publication-safe command form:

    python3 <temporary-e2e-harness> --binary <clean-dev-artifact> --case all

    Exit status 0; 104 real CLI invocations, all exited 0. All five bounded cases passed:

    • Pi: interleaved native call/result pairing and stable identities through replay; 5 outcomes (3 signalled, 2 unknown), then 4/1 after appended empty result.
    • Codex: 9 native call IDs paired with outcomes; failure exit 7, oversized-output exit 9, wrapper success remains distinct, orphan output unpaired, and snapshot retained after source removal.
    • Search: 651 text / 201 tool rows; per-stream 200-candidate cap, stable ranking and typed uncapped pagination; robot escaping and all tested token budgets stayed within budget.
    • OpenCode: 2 sessions mapped to 2 projects with scoped search/context/tags/sequences; deterministic identities, no duplicate append, and canonical recovery reproduced 8 rows.
    • OMP: native call IDs coexist with canonical message UUIDs; origin and child isolation held; result enrichment preserved call identity; reasoning toggle preserved IDs/ordinals/coordinates.

    Candidate revision and artifact SHA-256 were unchanged before/after; no rebuild or repository edits. The independent review and QA passed; the integrated candidate's just check && just ci gate passed with coverage 86.8%. The mixed CLI fixture and genuine OMP 18.12.6 headless-source consumption were separately demonstrated. In that genuine-source proof, successful native calls lacking an exit status remained success with exit unknown (not zero); failure retained is_error=true and exit 7. Reasoning toggle invariance was shown; the source had no thinking blocks, so reasoning-content indexing is not claimed.

    This five-case run used synthetic fixtures in isolated temporary state, did not access production sessions/configuration, and did not exercise the globally installed mixed target. It does not re-prove the real OMP exit-unknown fixture (its OMP success fixture supplied an explicit exit code); the separately recorded genuine-source proof establishes that behavior. One whole-suite run only; repeat/restart/rebuild idempotence assertions were within the harness.

    PR #224 merged and the native run completed its close_gate: PRIMARY fast-forwarded from 7a61327 to 224e571; tested SHA 28a807ca0db31f4c3c1a2b57132a2b1d4bf53c83, base SHA 224e5717897673568f344e2c0a3f8b513170a301, and issue-205 worktree/branch cleanup completed. This does not establish global installed-target acceptance or restoration of the missing native records.

    The original global installed mixed-target acceptance is tracked separately in issue #223, which remains blocked pending the four original authoritative OpenCode Session records. No workaround or global installation success is claimed; the designated reconciler owns any remaining lifecycle transitions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions