chore(beads): close satisfied merged WIP proofs - #3916
Conversation
|
Warning Review limit reached
Next review available in: 34 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 76a34b8aab
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
| {"_type":"issue","id":"polylogue-t46.4","title":"Delegate daemon session-similarity KNN to SqliteVecProvider.query_by_session","design":"daemon/similarity.py re-implements session-seeded vector ranking (raw MATCH/k SQL over message_embeddings, per-session best-distance aggregation, matched-message count, L2-\u003ecosine in _l2_to_cosine_similarity:217) that storage/search_providers/sqlite_vec_queries.py:143 SqliteVecProvider.query_by_session already does -- the substrate file even comments that the daemon's _PER_MESSAGE_K mirrors it. Fix: build_similar_payload (http.py:3158) should call the facade/vec-provider session-similarity method and only project the payload; delete the daemon KNN/aggregation/L2-\u003ecosine copy. If the daemon needs a per-session rollup the provider does not expose, add it to the provider (substrate), not the surface.","acceptance_criteria":"daemon _knn_for_embedding/_aggregate_hits/_l2_to_cosine_similarity are deleted; /api/similar ranking equals SqliteVecProvider.query_by_session ordering for a seed session (parity test); the sqlite_vec_queries comment about mirroring _PER_MESSAGE_K is removed because there is no longer a mirror; devtools verify green.","notes":"[Delivery upgrade 2026-07-07T00:05:00Z] Release=C-read-evidence-contract; lane=read-contracts; readiness=B-local-inspection-needed; proof=CLI/daemon/MCP/Python/web query parity suite and content-hash citation drift fixture. Original readiness=B-local-inspection-needed.\n[Prework packet 2026-07-07] Static execution packet (anchors, mechanism, plan, tests, verification): .agent/handoffs/polylogue-gpt-pro-2026-07-07/prework-v2/task_packets/042_polylogue_t46_4.md (depth: anchored-contract-prework; urgency: T1-critical-path-correctness). Generated from master @ 8a975a40 2026-07-06 — verify source anchors before coding; line numbers are snapshot-relative.","status":"closed","priority":2,"issue_type":"task","owner":"ezo.dev@gmail.com","created_at":"2026-07-04T21:26:21Z","created_by":"Sinity","updated_at":"2026-08-03T19:37:20Z","closed_at":"2026-08-03T19:37:20Z","close_reason":"Implemented by merged PR #3678: delegated daemon similarity ranking to SqliteVecProvider.query_by_session with real HTTP parity coverage.","labels":["area:surface","delivery:C-read-evidence-contract","horizon:frontier","lane:read-contracts","refactor"],"dependencies":[{"issue_id":"polylogue-t46.4","depends_on_id":"polylogue-t46","type":"parent-child","created_at":"2026-07-04T23:26:21Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-1xc.10","title":"Design spike: express session insights + aggregates as declared derived views over a single refresh engine","design":"Longer-horizon refactor the operator gestured at ('insights as declared derived views'). Today per-session (profiles, latency, work_events, phases, runs, observed_events, context_snapshots) and cross-session (threads, session_tag_rollups, provider_day aggregates) refresh logic is hand-woven across rebuild.py (~1600 lines), aggregates.py, threads.py, and the convergence stage. Evaluate whether these can be declared as a registry of derived-view specs (source rows -\u003e materialized table, per-session vs grouped scope, materializer version) driven by one incremental refresh engine that automatically computes the affected scope on write and the global scope on version bump. Goal: collapse the bespoke incremental-vs-full branching and make adding an insight a declaration rather than editing five files. This is a spike/ADR, NOT a commitment to rewrite - measure whether the abstraction pays for itself against the current working code. Cross-reference insights/registry.py (already a partial registry).","acceptance_criteria":"1) An ADR under docs/ (or thoughtspace) that inventories every current insight table, classifies per-session vs cross-session scope and its affected-scope function, and proposes (or explicitly rejects) a declared-derived-view registry with a single refresh engine. 2) Includes a migration sketch and a cost/benefit call vs leaving rebuild.py as-is. 3) If accepted, spawns implementation child beads; if rejected, records why so it is not re-litigated. No production code change in this bead.","notes":"[Delivery upgrade 2026-07-07T00:05:00Z] Release=B-storage-rebuild-bytes; lane=storage-rebuild-scale; readiness=D-horizon-ready; proof=large-corpus rebuild probe, blue-green generation swap proof, WAL/resource envelope report. Original readiness=D-horizon-ready.","status":"closed","priority":2,"issue_type":"feature","owner":"ezo.dev@gmail.com","created_at":"2026-07-04T21:22:49Z","created_by":"Sinity","updated_at":"2026-07-13T04:04:37Z","closed_at":"2026-07-13T04:04:37Z","labels":["area:storage","delivery:B-storage-rebuild-bytes","lane:storage-rebuild-scale"],"dependencies":[{"issue_id":"polylogue-1xc.10","depends_on_id":"polylogue-1xc","type":"parent-child","created_at":"2026-07-04T23:22:48Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-1xc.10","depends_on_id":"polylogue-5wp","type":"supersedes","created_at":"2026-07-13T06:04:36Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-1xc.8","title":"Schema rebuild-safety scenario","design":"scenario-coverage.yaml gap 'schema-rebuild-safety' orphaned on gh#590. A scenario proving derived-tier rebuild (index/embeddings) from durable source/user evidence is lossless and idempotent, and durable-tier additive migration preserves user.db assertions. Ties 1xc.7 scale-regression lane + z7rv migration framework.","acceptance_criteria":"A rebuild-safety scenario resets a derived tier and rebuilds from source, asserting byte/row parity + no user.db loss; a durable additive migration round-trips behind the backup gate. Verify: the scenario under devtools lab lanes.","notes":"[Delivery upgrade 2026-07-07T00:05:00Z] Release=B-storage-rebuild-bytes; lane=storage-rebuild-scale; readiness=B-local-inspection-needed; proof=large-corpus rebuild probe, blue-green generation swap proof, WAL/resource envelope report. Original readiness=B-local-inspection-needed.\n[Prework packet 2026-07-07] Static execution packet (anchors, mechanism, plan, tests, verification): .agent/handoffs/polylogue-gpt-pro-2026-07-07/prework-v2/task_packets/089_polylogue_1xc_8.md (depth: anchored-contract-prework; urgency: T1-critical-path-correctness). Generated from master @ 8a975a40 2026-07-06 — verify source anchors before coding; line numbers are snapshot-relative.\n2026-07-15 hierarchy repair: rebuild-safety is the proof slice of the derived-tier transition protocol b5l. Scale-hardening 1xc remains related and supplies corpus/resource conditions, but no longer counts the same scenario as a second child.","status":"open","priority":2,"issue_type":"task","owner":"ezo.dev@gmail.com","created_at":"2026-07-04T21:17:28Z","created_by":"Sinity","updated_at":"2026-07-31T22:35:46Z","labels":["area:audit","area:storage","delivery:B-storage-rebuild-bytes","horizon:frontier","lane:storage-rebuild-scale"],"dependencies":[{"issue_id":"polylogue-1xc.8","depends_on_id":"polylogue-1xc","type":"relates-to","created_at":"2026-07-15T20:48:45Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-1xc.8","depends_on_id":"polylogue-b5l","type":"parent-child","created_at":"2026-07-15T19:19:12Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":2,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-1xc.8","title":"Schema rebuild-safety scenario","design":"scenario-coverage.yaml gap 'schema-rebuild-safety' orphaned on gh#590. A scenario proving derived-tier rebuild (index/embeddings) from durable source/user evidence is lossless and idempotent, and durable-tier additive migration preserves user.db assertions. Ties 1xc.7 scale-regression lane + z7rv migration framework.","acceptance_criteria":"A rebuild-safety scenario resets a derived tier and rebuilds from source, asserting byte/row parity + no user.db loss; a durable additive migration round-trips behind the backup gate. Verify: the scenario under devtools lab lanes.","notes":"[Delivery upgrade 2026-07-07T00:05:00Z] Release=B-storage-rebuild-bytes; lane=storage-rebuild-scale; readiness=B-local-inspection-needed; proof=large-corpus rebuild probe, blue-green generation swap proof, WAL/resource envelope report. Original readiness=B-local-inspection-needed.\n[Prework packet 2026-07-07] Static execution packet (anchors, mechanism, plan, tests, verification): .agent/handoffs/polylogue-gpt-pro-2026-07-07/prework-v2/task_packets/089_polylogue_1xc_8.md (depth: anchored-contract-prework; urgency: T1-critical-path-correctness). Generated from master @ 8a975a40 2026-07-06 — verify source anchors before coding; line numbers are snapshot-relative.\n2026-07-15 hierarchy repair: rebuild-safety is the proof slice of the derived-tier transition protocol b5l. Scale-hardening 1xc remains related and supplies corpus/resource conditions, but no longer counts the same scenario as a second child.","status":"closed","priority":2,"issue_type":"task","owner":"ezo.dev@gmail.com","created_at":"2026-07-04T21:17:28Z","created_by":"Sinity","updated_at":"2026-08-10T10:41:21Z","closed_at":"2026-08-10T10:41:21Z","close_reason":"Satisfied by merged PR #3915 (cb0de952a): exact-head rebuild-safety and rebuild-differential lab passed; 7 focused tests and all 24 quick checks passed.","labels":["area:audit","area:storage","delivery:B-storage-rebuild-bytes","horizon:frontier","lane:storage-rebuild-scale"],"dependencies":[{"issue_id":"polylogue-1xc.8","depends_on_id":"polylogue-1xc","type":"relates-to","created_at":"2026-07-15T20:48:45Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-1xc.8","depends_on_id":"polylogue-b5l","type":"parent-child","created_at":"2026-07-15T19:19:12Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":2,"comment_count":0} |
There was a problem hiding this comment.
Keep the durable migration proof tracked
Keep this Bead open or defer the residual to a named successor: its acceptance criteria require a durable additive migration to round-trip behind the backup gate, but PR #3915's run_rebuild_safety() only rebuilds index.db twice and compares the unchanged user.db snapshot (devtools/rebuild_safety_scenario.py:533-567); neither the scenario nor its tests exercise a migration or backup manifest. Closing it therefore reports the durable half of the Bead as satisfied without implementing its required proof.
AGENTS.md reference: AGENTS.md:L477-L482
Useful? React with 👍 / 👎.
| {"_type":"issue","id":"polylogue-e6ja","title":"Close the zero-tests-pre-merge hole: bounded per-PR test lane or local-verify attestation (operator decision)","description":"Operator DELIBERATELY removed the 45-min full-suite job from the per-PR path (ci.yml:44-49, ~18 min wait not worth it) - that decision stands and this bead does not propose reverting it. But the combined state means a PR can merge with zero tests executed anywhere: per-PR CI has no test job, the pre-push hook runs verify --quick (no pytest), and even that is skipped when .cache/last-verify-head matches HEAD. The post-merge net catches regressions only after they land (the 2026-07-05 drift was repaired days later in PR #2556). Question to adjudicate: is a BOUNDED middle tier worth its cost, or is a local-attestation signal enough?\n","design":"Options for operator decision: (A) changed-package heuristic job: map changed paths to tests/unit/\u003cpackage\u003e subsets, hard 10-minute timeout, non-required check at first (observability before gate); simple, no testmon-state transfer. (B) testmon-affected job: restore testmon DB artifact from the last master run and run affected-only; highest fidelity, but testmon state transfer across runners is fragile and the local forkserver deadlock (polylogue-27rb) argues against trusting testmon in CI yet. (C) attestation-only: pre-push hook records the verify tier+head into the push (e.g. commit trailer or PR body check), and a CI check verifies the attestation exists - zero CI compute, makes \"tests were run locally\" legible instead of assumed. Recommendation: C now (cheap, honest), A later if post-merge regressions recur; B rejected until 27rb lands. Whatever is chosen, document the skip/miss semantics in ci.yml comments next to the existing decision comment.\n","acceptance_criteria":"Operator decision recorded on this bead (option A/B/C or explicit wontfix); the chosen mechanism demonstrated on one sample PR within its stated budget; ci.yml comment block updated to describe the resulting gate semantics. VERIFY: sample PR link + check output in notes.","notes":"[RATIFIED 2026-07-08, decision brief .agent/reports/decision-brief-2026-07-08.md] DECIDED: option C (attestation) now — pre-push hook records verify tier + head; CI check makes local-test claims legible. Escalation PRE-COMMITTED: two post-merge regressions within 30 days triggers option A (changed-package job, 10-min cap, non-required initially). Option B rejected until polylogue-27rb lands. This bead is now execution-ready: implement C.\nEVIDENCE 2026-07-13: tonight was this bead's question at maximum width — GitHub Actions account-locked, so ~44 PRs merged on local gates only (devtools verify --quick + focused tests + review-fleet evidence + conductor spot-checks). It WORKED (one red-master window, fixed forward within the hour), which is evidence FOR the local-verify attestation option: the conductor pattern (rebase -\u003e quick gate -\u003e focused selection -\u003e merge) is a de facto attestation protocol. Adjudicate with tonight's merge log as the dataset; polylogue-of39 (post-billing CI re-verification) will measure what the local gates missed, closing the loop on the decision.\nPriority correction 2026-07-15: promoted P3 to P2 during invariant review. The bead covers a current single-writer, resource-containment, durable-lifecycle, verification-gate, or interactive-latency contract with concrete evidence; promotion does not automatically admit it to the active execution set.\nVerification (group2 sweep, 2026-07-30): LIVE. Ratified decision was option C (pre-push attestation + CI check of local-verify claims). grep -rn attestation .github/workflows/*.yml and pre-push hook return nothing; git log --grep attestation shows no matching commit. The decided mechanism was never implemented.","status":"open","priority":2,"issue_type":"task","owner":"ezo.dev@gmail.com","created_at":"2026-07-08T17:31:48Z","created_by":"Sinity","updated_at":"2026-07-31T22:35:43Z","labels":["area:devloop","area:test","decision","horizon:frontier"],"dependencies":[{"issue_id":"polylogue-e6ja","depends_on_id":"polylogue-27rb","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-e6ja","depends_on_id":"polylogue-88jp","type":"parent-child","created_at":"2026-07-15T19:13:20Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-e6ja","depends_on_id":"polylogue-ct3r2","type":"relates-to","created_at":"2026-08-03T07:01:14Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-d45p","title":"Maintain an evidence-backed verification failure ledger","description":"Managed verification already persists structured run artifacts, but failure knowledge still fragments into flake folklore, one-off clean-baseline beads, timeout notes, environment-poisoning incidents, and silent known-red expectations. The same node may be flaky at one environment fingerprint, deterministically broken across commits, or invalid because a worktree used another checkout environment. Without one durable observation ledger, every red requires re-derivation and every accepted red erodes the gate.","design":"Build a VerificationFailureRecord/ledger from VerifyRun artifacts. Identity includes test/check id, git head and dirty state, environment/harness fingerprint, selected dependency graph, runtime/resource evidence, first/last observation, and retained artifact refs. Classification is evidence-derived and revisable: deterministic regression, flake, timeout/resource, environment contamination, tool/infrastructure failure, expected transition, or unknown. Disposition carries owning capability/Bead, quarantine or baseline authority, expiry, and required next proof. Same-head outcome variance is flake evidence, not proof by itself; persistent failure across clean heads is regression evidence; mixed-checkout fingerprints remain contamination. Verify diagnostics consume the ledger, but never auto-retry or silently convert failure to success. Existing risk records in 88jp consume this ledger as one evidence adapter.","acceptance_criteria":"1. A machine-readable ledger records every observed failing test/check with stable identity, git/dirty/environment/harness/dependency fingerprints, first/last seen, outcomes, runtime/resource data, artifact refs, classification confidence, owner/Bead, disposition, and expiry. 2. Existing VerifyRun history yields candidates for deterministic regression, same-head variance, timeout/resource, mixed-checkout environment contamination, infrastructure failure, and unknown without conflating them. 3. The known Python 3.11 concurrency flake, mixed-checkout phantom failures, and polylogue-p5li six-node clean-baseline cohort classify distinctly with cited evidence. 4. Verify failure diagnostics annotate ledger matches and unexplained reds; a quarantine/baseline exception requires authority, Bead, scope, and expiry, and expiry fails the policy gate. 5. No automatic retry or broad quarantine turns a red green; a deterministic open regression remains red or explicitly policy-blocked until its owning repair lands. 6. Removing environment identity, same-head history, expiry, or artifact evidence makes mutation-sensitive classification tests fail; focused devtools tests and verification-manifest gates pass.","notes":"LOOP INSTANCE 2026-07-13: the flake ledger is rxdo.11-family — watch: VerifyRun artifacts (3,727 run dirs); measure: per-test failure/pass history with env fingerprints; propose: quarantine candidates with bead refs + expiry (v8dz marker is the actuator); judge: operator or calibrated agent. Tonight adds material: the 9-failure phantom on the embeddings-hygiene branch (mixed-checkout .venv artifact, resolved on re-run) is exactly the flaky-vs-broken classification this ledger would have answered in seconds.\nInvariant reformulation 2026-07-15: generalizes the flake-only ledger into the single verification-failure evidence adapter. polylogue-p5li is the first deterministic-baseline consumer; polylogue-wple supplies environment-poisoning detection evidence.","status":"open","priority":2,"issue_type":"feature","owner":"ezo.dev@gmail.com","created_at":"2026-07-08T17:31:45Z","created_by":"Sinity","updated_at":"2026-07-31T22:35:43Z","metadata":{"frontier":"active","frontier_program_ref":"polylogue-88jp"},"labels":["area:devloop","area:test","horizon:frontier"],"dependencies":[{"issue_id":"polylogue-d45p","depends_on_id":"polylogue-88jp","type":"parent-child","created_at":"2026-07-13T07:05:29Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-d45p","depends_on_id":"polylogue-9e5.11","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-d45p","depends_on_id":"polylogue-wple","type":"relates-to","created_at":"2026-07-15T21:35:15Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-hjwr","title":"Deterministic-rebuild differential lane: full rebuild vs incremental convergence must agree","description":"Derived tiers are rebuild-from-source by design, but nothing asserts the two properties that make that trustworthy: (1) DETERMINISM - two full rebuilds of the same source.db produce logically identical index content; (2) INCREMENTAL-VS-FULL EQUIVALENCE - the daemon converger refresh path and a from-scratch rebuild agree. Both are live risks, not hypotheticals: a7xr.2 shows converger and repair disagree on session_profile staleness for NULL-sort-key sessions, and f2qv.5 shows session_model_usage/session_provider_usage_events are written at ingest but absent from convergence refresh entirely (no self-heal). This differential is also the gate that makes blue-green rebuilds (b5l) safe to trust and the rebuild-safety scenario (1xc.8) checkable.\n","design":"A devtools lab lane: seed a scratch archive from the fixture/demo corpus; path A = full derived rebuild (ops reset --index + reingest equivalent, in-process); path B = incremental ingest + convergence stages (+ targeted refresh after mutations: re-ingest one session, delete one). Dump logical projections of every derived table as ordered SELECTs excluding a documented allowlist of volatile columns (materialization timestamps, run ids, generation counters), then structurally diff A vs B, and A vs A-rerun for determinism. Failures print per-table row-level diffs. Demo-corpus tier runs per lane invocation; scale_medium tier reserved for --lab/nightly. Anchors: storage/insights/session/rebuild.py (rebuild chokepoint), daemon/convergence_stages.py (refresh lanes), archive_tiers DDL for table census so new derived tables are auto-included (fail if a derived table is neither diffed nor allowlisted - prevents silent scope decay).\n","acceptance_criteria":"Lane runnable via devtools lab; auto-census requires every derived table to be diffed or explicitly allowlisted; a seeded divergence of the a7xr.2 class is demonstrably caught; run against current master either green or with each divergence filed as its own bead and referenced from this one. VERIFY: the lab lane command recorded in notes, run twice (determinism) on the demo corpus.","notes":"THIRD COMPARAND 2026-07-13: the differential lane now has three paths that must agree, not two — full rebuild vs incremental convergence vs FAST-FORWARD (devtools/index_fast_forward.py, deployed and used on the live archive tonight; #2804/#2805 + p5r4 sampling). The fast-forward equivalence-sampling machinery is reusable as this lane's comparison engine.\nTHIRD COMPARAND 2026-07-13: three paths must now agree, not two — full rebuild vs incremental convergence vs FAST-FORWARD (devtools/index_fast_forward.py, deployed on the live archive tonight; #2804/#2805 + p5r4 sampling). The fast-forward equivalence-sampling machinery is reusable as this lane's comparison engine.\n[Verification sweep 2026-07-31, bead-landing-check group5] Verdict: LIVE. No landing note; only scope clarification (third comparand: fast-forward path) added 2026-07-13; differential lane itself not built.\n2026-08-03: the differential idea lands better as a metamorphic PROPERTY on synthetic corpora (incremental==bulk in the hermetic convergence-property loop bead) than as a live-archive lane - consider closing into that bead once it lands; the live-archive variant survives only as the one-time 0x7nh canary differ around the actual reindex.","status":"open","priority":2,"issue_type":"feature","owner":"ezo.dev@gmail.com","created_at":"2026-07-08T17:30:17Z","created_by":"Sinity","updated_at":"2026-08-03T07:09:14Z","labels":["area:daemon","area:storage","area:test","horizon:frontier"],"dependencies":[{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-1xc.8","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-a7xr.2","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-b5l","type":"parent-child","created_at":"2026-07-15T01:23:34Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-f2qv.5","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-hjwr","title":"Deterministic-rebuild differential lane: full rebuild vs incremental convergence must agree","description":"Derived tiers are rebuild-from-source by design, but nothing asserts the two properties that make that trustworthy: (1) DETERMINISM - two full rebuilds of the same source.db produce logically identical index content; (2) INCREMENTAL-VS-FULL EQUIVALENCE - the daemon converger refresh path and a from-scratch rebuild agree. Both are live risks, not hypotheticals: a7xr.2 shows converger and repair disagree on session_profile staleness for NULL-sort-key sessions, and f2qv.5 shows session_model_usage/session_provider_usage_events are written at ingest but absent from convergence refresh entirely (no self-heal). This differential is also the gate that makes blue-green rebuilds (b5l) safe to trust and the rebuild-safety scenario (1xc.8) checkable.\n","design":"A devtools lab lane: seed a scratch archive from the fixture/demo corpus; path A = full derived rebuild (ops reset --index + reingest equivalent, in-process); path B = incremental ingest + convergence stages (+ targeted refresh after mutations: re-ingest one session, delete one). Dump logical projections of every derived table as ordered SELECTs excluding a documented allowlist of volatile columns (materialization timestamps, run ids, generation counters), then structurally diff A vs B, and A vs A-rerun for determinism. Failures print per-table row-level diffs. Demo-corpus tier runs per lane invocation; scale_medium tier reserved for --lab/nightly. Anchors: storage/insights/session/rebuild.py (rebuild chokepoint), daemon/convergence_stages.py (refresh lanes), archive_tiers DDL for table census so new derived tables are auto-included (fail if a derived table is neither diffed nor allowlisted - prevents silent scope decay).\n","acceptance_criteria":"Lane runnable via devtools lab; auto-census requires every derived table to be diffed or explicitly allowlisted; a seeded divergence of the a7xr.2 class is demonstrably caught; run against current master either green or with each divergence filed as its own bead and referenced from this one. VERIFY: the lab lane command recorded in notes, run twice (determinism) on the demo corpus.","notes":"THIRD COMPARAND 2026-07-13: the differential lane now has three paths that must agree, not two — full rebuild vs incremental convergence vs FAST-FORWARD (devtools/index_fast_forward.py, deployed and used on the live archive tonight; #2804/#2805 + p5r4 sampling). The fast-forward equivalence-sampling machinery is reusable as this lane's comparison engine.\nTHIRD COMPARAND 2026-07-13: three paths must now agree, not two — full rebuild vs incremental convergence vs FAST-FORWARD (devtools/index_fast_forward.py, deployed on the live archive tonight; #2804/#2805 + p5r4 sampling). The fast-forward equivalence-sampling machinery is reusable as this lane's comparison engine.\n[Verification sweep 2026-07-31, bead-landing-check group5] Verdict: LIVE. No landing note; only scope clarification (third comparand: fast-forward path) added 2026-07-13; differential lane itself not built.\n2026-08-03: the differential idea lands better as a metamorphic PROPERTY on synthetic corpora (incremental==bulk in the hermetic convergence-property loop bead) than as a live-archive lane - consider closing into that bead once it lands; the live-archive variant survives only as the one-time 0x7nh canary differ around the actual reindex.","status":"closed","priority":2,"issue_type":"feature","owner":"ezo.dev@gmail.com","created_at":"2026-07-08T17:30:17Z","created_by":"Sinity","updated_at":"2026-08-10T10:41:21Z","closed_at":"2026-08-10T10:41:21Z","close_reason":"Satisfied by merged PR #3915 (cb0de952a): deterministic rebuild/incremental differential proof passed across 58 tables with zero uncovered; exact-head focused and quick verification passed.","labels":["area:daemon","area:storage","area:test","horizon:frontier"],"dependencies":[{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-1xc.8","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-a7xr.2","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-b5l","type":"parent-child","created_at":"2026-07-15T01:23:34Z","created_by":"Sinity","metadata":"{}"},{"issue_id":"polylogue-hjwr","depends_on_id":"polylogue-f2qv.5","type":"relates-to","created_at":"2026-07-31T14:40:08Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} |
There was a problem hiding this comment.
Keep the fast-forward comparand open
Keep this Bead open or transfer the missing comparand to a named successor: its notes explicitly strengthen the proof to require full rebuild, incremental convergence, and fast-forward to agree, but PR #3915's runner creates only full_pass, full_rerun_pass, and incremental_pass (devtools/rebuild_safety_scenario.py:627-667) and contains no fast-forward path. Closing it now makes the tracker claim the differential is complete while that required route remains untested.
AGENTS.md reference: AGENTS.md:L477-L482
Useful? React with 👍 / 👎.
| {"_type":"issue","id":"polylogue-sru.3","title":"Benign-recovery vs consequential-silence split by handler kind","description":"Read failures are ~94% silent but 'tried another path' is usually benign; Bash/test failures are the consequential class. Scope the headline to consequential handler kinds or add an explicit split — credibility depends on not inflating with trivial recoveries.","design":"Handler kind is already available on the paired failure row (actions lane exposes handler/tool). Define the consequential set explicitly in code (Bash/test/build/write-class handlers) and the benign-recovery set (Read/Glob/Grep-class 'tried another path'), emit split headline rows: silent-proceed among consequential vs among all. Keep the mapping a named constant with a rationale comment so reviewers can argue with it. Report both; never let the headline mix classes silently. Same regen/tests as the other methodology children.","status":"closed","priority":1,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-03T04:31:28Z","created_by":"Sinity","updated_at":"2026-07-31T22:35:43Z","started_at":"2026-07-03T07:55:37Z","closed_at":"2026-07-03T07:58:08Z","close_reason":"Completed: claim-vs-evidence now reports a first-class handler-class split separating consequential shell/edit/write-class tool failures from benign read/search/path-discovery failures and other tools. The regenerated active-archive artifact shows consequential=4,177 failures with 921 silent-proceed (22.0% lower bound), benign_recovery=633 with 166 silent-proceed (26.2%), and other=190 with 92 silent-proceed (48.4%). Focused tests and demo shelf checks passed.","labels":["area:substrate","campaign"],"dependencies":[{"issue_id":"polylogue-sru.3","depends_on_id":"polylogue-sru","type":"parent-child","created_at":"2026-07-03T06:31:28Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-sru.1","title":"Expose action-unit outcome fields + followup_class as product capability","description":"Capabilities-may-not-be-silos gate for the campaign: the facts the report needs must become composable query capability. After this, the whole report is `actions where is_error:true | group by session.origin, followup_class | count` and every future cut (model/tool/repo/time) is free.","design":"1) is_error/exit_code are normalized at parse time (sources/parsers/base_models.py:74-75) but ActionQueryRowPayload (surfaces/payloads.py:~1298) carries neither — add as filterable/groupable action-unit fields. 2) Add derived followup_class (acknowledged|silent_proceed|wordless_continuation|ambiguous) + followup_message_ref computed in the source-derived lowering (no cache tables). 3) Reduce devtools workspace claim-vs-evidence to a render preset over these query strings, or retire it. Touchpoint chain: stage parser -\u003e AST to_payload -\u003e executor -\u003e metadata.py aggregate_group_fields -\u003e shell_completion_values.py -\u003e devtools render openapi + cli-output-schemas + cli-reference. Line refs pre-07-03; re-locate.","acceptance_criteria":"Fixture session with known unacknowledged failure fires via pure query strings; report README numbers reproducible from the printed queries.","notes":"Completed: action-unit outcome follow-up classification is now shared query capability. is_error/exit_code were already wired; this slice added source-derived followup_class and followup_message_ref over existing actions/messages/blocks, exposed followup_class as filterable/groupable action metadata, added action row payload fields, routed root CLI terminal-unit aggregate expressions before session-selector compilation, and moved the report classifier from scripts into polylogue.archive.actions.followup. Reproduction/query forms are now printed in .agent/demos/claim-vs-evidence/PUBLIC_REPRODUCTION.md: actions where is_error:true | group by followup_class | count; actions where followup_class:silent_proceed. Verification: focused DSL/report/CLI tests passed; active demo packet regenerated over archive root /home/sinity/.local/share/polylogue schema v23 with 41,886 structured failures and 5,000 inspected; devtools verify --quick passed run 20260703T092510Z-quick-718233-46e8b587.","status":"closed","priority":1,"issue_type":"feature","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-03T04:31:27Z","created_by":"Sinity","updated_at":"2026-07-03T09:25:36Z","started_at":"2026-07-03T09:05:37Z","closed_at":"2026-07-03T09:25:36Z","close_reason":"Completed","labels":["area:query","area:substrate","campaign"],"dependencies":[{"issue_id":"polylogue-sru.1","depends_on_id":"polylogue-sru","type":"parent-child","created_at":"2026-07-03T06:31:26Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-cybpg","title":"docs: publish recovered architecture and readiness packets","description":"Publish the recovered architecture, decision, and Bead-readiness packets into the current documentation surface so their evidence and sequencing are discoverable from master.","design":"Carry the three recovered documents onto current master, index each through devtools/docs_surface.py and docs/README.md, and preserve their references to live Beads without claiming the underlying implementation work is complete.","acceptance_criteria":"1. The readiness, content-identity/lineage, and decision-adjudication packets exist on current master. 2. Each packet is indexed in devtools/docs_surface.py and docs/README.md. 3. render all --check, devtools verify --quick, and focused documentation checks pass. 4. The packet text does not claim its referenced implementation Beads are closed.","status":"open","priority":2,"issue_type":"task","owner":"ezo.dev@gmail.com","created_at":"2026-08-10T08:05:41Z","created_by":"Sinity","updated_at":"2026-08-10T08:05:41Z","labels":["area:docs","area:planning","lane:reindex"],"dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type":"issue","id":"polylogue-cybpg","title":"docs: publish recovered architecture and readiness packets","description":"Publish the recovered architecture, decision, and Bead-readiness packets into the current documentation surface so their evidence and sequencing are discoverable from master.","design":"Carry the three recovered documents onto current master, index each through devtools/docs_surface.py and docs/README.md, and preserve their references to live Beads without claiming the underlying implementation work is complete.","acceptance_criteria":"1. The readiness, content-identity/lineage, and decision-adjudication packets exist on current master. 2. Each packet is indexed in devtools/docs_surface.py and docs/README.md. 3. render all --check, devtools verify --quick, and focused documentation checks pass. 4. The packet text does not claim its referenced implementation Beads are closed.","status":"closed","priority":2,"issue_type":"task","owner":"ezo.dev@gmail.com","created_at":"2026-08-10T08:05:41Z","created_by":"Sinity","updated_at":"2026-08-10T09:49:53Z","closed_at":"2026-08-10T09:49:53Z","close_reason":"Satisfied by merged PR #3914 (c75a5e2c4). The three recovered architecture/readiness packets are on master, indexed in docs surfaces, and the exact-head focused documentation check plus quick verification passed; packet text preserves referenced implementation work as open.","labels":["area:docs","area:planning","lane:reindex"],"dependency_count":0,"dependent_count":0,"comment_count":0} |
There was a problem hiding this comment.
Fold these closures into their implementation branches
Do not land these Bead closures as a standalone post-merge chore(beads) commit: all three rows close work attributed to already-merged PRs #3914 and #3915, which is exactly the sibling-bookkeeping pattern the repository forbids because it commonly leaves code and durable tracker state on divergent branches. The closures should have traveled with the implementation/documentation branches they accompany rather than as this separate delta.
AGENTS.md reference: AGENTS.md:L303-L309
Useful? React with 👍 / 👎.
Summary
Close the Beads whose implementation obligations are now satisfied by merged PRs #3914 and #3915.
Problem
The tracker still represented merged documentation and rebuild-proof work as open, obscuring the remaining partial and production-phase obligations.
Solution
polylogue-cybpgfor merged PR docs: publish recovered architecture packets #3914.polylogue-1xc.8andpolylogue-hjwrfor merged PR test(devtools): publish rebuild safety differential lane #3915.Verification
bd show polylogue-cybpg --json,bd show polylogue-1xc.8 --json, andbd show polylogue-hjwr --jsonreportstatus=closedwith evidence-bearing close reasons.bd export -o .beads/issues.jsonlexported 1766 issues.