Repository navigation
observability: dissolve the transition package into H records, Apps views, and K (OBS) - #425
Conversation
|
@amy-why-3459 @zengchuang-hw Please review OBS at |
|
Reviewed range: base What I checked:
Blocking:
Question (please confirm or restore)
Non-blocking
Not verified here: I did not run the full pytest suite on this host. I only ran the targeted repro above. I did not re-check the two Windows-only |
There was a problem hiding this comment.
PR review verdict — DO NOT PASS
Reviewed base fe16b29388de29708d30ea388b589355540f3172 (PR target main) / merge-base 8150ee048af6503070fa71768fbf64dffcc1a77e and head 3b1e49150d7265b07138bdf48100579553433ef2.
Blockers
-
load_campaign_capturedropped the assembly-projection check (behavior regression).src/inferrsi/apps/views/capture_delivery.pyL7 importsverify_capturefrominferrsi.harness.records.knowledge_capture, and L115 uses that H-only verifier.- H
verify_capture(harness/records/knowledge_capture.pyL90–153) only checks stored bytes /assembled_sha256. The projection check (assemble_context_text(contexts) == assembled_text) lives inapps/campaign.py::verify_captureL78–90. - On main,
observability/capture_delivery.pyused the full verifier. Local repro with the same Reader astests/test_campaign_record_injection.py: append toassembled_textand recomputeassembled_sha256→ H returnsverified, Apps returnsassembly_mismatch, butload_campaign_captureaccepts the capture. Sosearch_attribution/import_searchcan accept captures main rejected. - Expected: import
verify_capturefrominferrsi.apps.campaign(Apps→Apps); keepMAX_CONTEXT_CAPTURE_BYTESfrom H; add a regression test that a consistent-digest / wrong-projection capture is rejected byload_campaign_capture.
-
Ready-lane CI fails on this head (ruff I001).
full-check3.10/3.11 andlint-and-smokeconcluded failure on3b1e4915.- Six import-sort errors in:
apps/views/capture_delivery.py,codex_search.py,search_archive.py,search_attribution.py,tests/test_search_archive.py,tests/test_search_attribution.py(all auto-fixable). Re-review needs green required checks on the fixed head.
-
Governing #413 required D008 owners before moving
dashboard_workflow/profile_timeline.- Issue acceptance: 「
dashboard_workflow.py/profile_timeline.py须先补 D008 owner 再搬」; Amy’s #413 comment asked to land owners first. - This PR moves both modules and explicitly leaves
docs/contracts/function-owners.mdunchanged (no D008 rows). Either add the owner rows (or record an authorized scope exception on #413) before claiming the slice complete.
- Issue acceptance: 「
Notes (not blockers by themselves)
- UTF-8 encode failure on
assembled_textin Hverify_capturenow returnsassembly_mismatch(L149–150); main returnedinvalid_format. Confirm intent or restoreinvalid_formatfor a move-only change. - Disclosed Windows
test_codex_search_delivery.pyfailures look like pre-existing #384/bin/zsh+ backslash path issues (import-path-only delta vs main); not treated as OBS dissolve defects here. - Package dissolve itself largely matches scope:
observability/absent; H records have no K/Apps imports; Apps injectsBACKENDS/TASK_RELEVANCE;isolation_completeremains false. Those do not clear the blockers above.
|
补充一项 Apps 侧检视意见,针对 #413 已记录的退出条件。当前 PR 已移动
这项与 Amy 的 capture projection 检视 可以一起复核。 |
|
Incremental review:
|
|
Apps 侧复核了 |
amy-why-3459
left a comment
There was a problem hiding this comment.
LGTM
PR review verdict — PASS
Reviewed base fe16b29388de29708d30ea388b589355540f3172 (current main, merged in by 41bd362e) and head cf08a8784d105f78048d1d962b428d86df555047. This is an incremental review of 71327f195f6dd232158531baf28a7cb1fd7a3483..cf08a8784d105f78048d1d962b428d86df555047, checked against my comments 6850066896 / 6850270976 and the blockers in review 5889336956.
- Projection check restored.
apps/views/capture_delivery.pynow importsverify_capturefrominferrsi.apps.campaign, which is Apps → Apps and adds no H → Apps edge. Fromharness.records.knowledge_captureit now imports onlyMAX_CONTEXT_CAPTURE_BYTES. I re-ran my repro at this head: a capture whoseassembled_textandassembled_sha256agree but do not match the projection is now rejected byload_campaign_capture(assembly_mismatch). A genuine capture is still accepted. The newtest_load_campaign_capture_rejects_consistent_digest_with_wrong_projectioncovers this. Resolved. - Reason code.
harness/records/knowledge_capture.pyL148–149 returnsinvalid_formatagain whenassembled_textcannot be encoded, as on main. The H and Apps verifiers both giveinvalid_format(checked locally, andtest_harness_keeps_invalid_format_when_assembled_text_is_not_utf8covers it). Resolved. - D008 rows.
docs/contracts/function-owners.mdadds rows fordashboard_workflow(Apps views),profile_timelinerecord/byte paths (H records) andpre_profile_searches(Apps views,apps/views/profile_searches.py). They match the code placement. The rows are explicitly marked "owner pending formal review". This approval covers the code and the recorded placement. It is not the D008 acceptance decision, which still has to be recorded before merge, as 6850491471 notes. - The import-sort commit fixed ruff I001. The
mainmerge41bd362eonly brings in #400 files. Hosted checks at this head are all successful: lint-and-smoke, full-check 3.10/3.11, installed-package 3.10/3.11, declarations and pr-references.
Non-blocking, still open: docs/legacy-knowledge-manifest.json L44/L138 still cite the old observability/... consumer paths. I did not run the full pytest suite locally.
There was a problem hiding this comment.
PR review verdict — DO NOT PASS
Reviewed base fe16b29388de29708d30ea388b589355540f3172 and head cf08a8784d105f78048d1d962b428d86df555047; main has since advanced to f7b640f2 (relevant to the second blocker). This is an incremental review; I agree with @amy-why-3459's review 5889711958 on the projection fix and do not repeat it.
Blockers
docs/contracts/function-owners.md:22-24adds the three D008 rows but all still say "owner pending formal review", while the moves are in this diff. #413 makes recording the D008 owner a precondition of the move. Record the acceptance (or an accepted exception) and cite it here; this is the same blocker as #422.- This head no longer merges onto current
main(f7b640f2): a localgit merge-treereports content conflicts insrc/inferrsi/apps/views/dashboard_data.pyandsrc/inferrsi/apps/views/dashboard_external.py, and #405's newobservability/dashboard_experiments.pyandexperiment_view.htmlland in the directory this PR dissolves, so they must move toapps/views(with package data/imports) before the "observability disappears" claim holds on merge. Rebase, move the two files and rerun CI; the approval on cf08a87 will need a fresh review.
Issue completion
#413 is partially complete: records/views/K ownership, removal of the two edges, no forwarding shells and byte-identical fixed-record behavior are met; the D008 acceptance and the merge with main are still missing.
Check scope
Read #413/#371, all comments and reviews, and the head diff; ran the 26 changed test files (462 collected, 461 passed, 1 skipped; one environmental test deselected because it fails identically on main). Did not run the full suite, Ruff, Windows or host installs.
| | `harness/scenarios/external` `read_metric`/`validate_metric` | B semantic validation; `execute_command` and retention → H | no whole-file ownership; offline assess executes nothing | | ||
| | `campaign_records` `STAGES`/claim capture/reconciliation | H records; dashboard/report presentation → Apps | first remove the `campaign_records → dashboard_data` reverse dependency; #333 is Proposed and no claim is made that a unified event envelope is accepted | | ||
| | `catalog.repository_pack`/`REPO_TYPES` | D020 neutral raw-data technical leaf; target interpretation stays H | K does not expose the pack reader publicly; `infra` changes only its same-leaf import; seven K bodies/root entries/tests move together | | ||
| | `apps/views/dashboard_workflow` `command_state`/`run_workflow`/`validation_progress` (**added with the OBS dissolve; owner pending formal review**) | Apps views: read-only presentation projection of workflow and command state | The functions only project existing records for the dashboard; this row records the landing and does not claim formal D008 acceptance | |
There was a problem hiding this comment.
| | `campaign_records` `STAGES`/claim capture/reconciliation | H records; dashboard/report presentation → Apps | first remove the `campaign_records → dashboard_data` reverse dependency; #333 is Proposed and no claim is made that a unified event envelope is accepted | | ||
| | `catalog.repository_pack`/`REPO_TYPES` | D020 neutral raw-data technical leaf; target interpretation stays H | K does not expose the pack reader publicly; `infra` changes only its same-leaf import; seven K bodies/root entries/tests move together | | ||
| | `apps/views/dashboard_workflow` `command_state`/`run_workflow`/`validation_progress` (**added with the OBS dissolve; owner pending formal review**) | Apps views: read-only presentation projection of workflow and command state | The functions only project existing records for the dashboard; this row records the landing and does not claim formal D008 acceptance | | ||
| | `harness/records/profile_timeline` `attach_profile`, fixed-byte verification, and digest reads (`read_profiles`/`profile_event_table`) (**added with the OBS dissolve; owner pending formal review**) | H records: attach a reviewed profile and verify stored bytes | Record and byte-integrity paths stay in H; this row records the landing and does not claim formal D008 acceptance | |
There was a problem hiding this comment.
Optional, not blocking: this row describes H as attaching and byte-verifying the profile, but _compile also builds the dashboard overview stored with the record (top-7 lanes per kind, 256 display buckets, label truncation, top-10 kernels). If D008 is accepted as worded, state explicitly that this precomputed overview stays in H because it is stored content-addressed at attach time, or track moving it to Apps as a follow-up.
|
Incremental review: What I checked in the merge resolution:
This resolves the merge/#405 part of review 5891935385. Blocking: lint fails at this head, so
Still open from before: |
|
@amy-why-3459 @zengchuang-hw @david6666666 Please re-review #425 at This head moves the #405 experiment page and template into Still open and not self-approved: the three D008 owner rows remain "owner pending formal review". Prior approval of |
There was a problem hiding this comment.
PR review verdict — DO NOT PASS
Reviewed base a590ccb25596396a592f237105166ade4aedeaaa and head b455414721d36563ca9b7b66284651dbcd84ee7e.
Incremental re-review after author request #425 (comment). Prior cursor[bot] CR was on cf08a878…; this head is the ordinary merge of current main (incl. #405/#424/#427). Independent reviewer; not the PR author. Governing Issue #413.
Resolved since prior CR
- Merge/#405 placement:
dashboard_experiments.pyandexperiment_view.htmllive underapps/views/; nosrc/inferrsi/observabilitypackage remains; noinferrsi.observabilityimports insrc/tests/tools. - Prior projection/
invalid_formatblockers remain fixed (capture_deliveryuses Appsverify_capture; H keepsMAX_CONTEXT_CAPTURE_BYTES). - Local focused tests at this head:
tests/test_dashboard_experiments.py+tests/test_campaign_record_injection.pyall passed.
Blockers (must clear before Approve)
- Required lint/full-check are red on this head. Reproduced with repo ruff (
E/F/I, line-length 100):src/inferrsi/apps/views/dashboard_data.py:936E501 (105 > 100) on theproject_experiments(...)call introduced by this merge.src/inferrsi/apps/views/dashboard_experiments.py:33,75,307I001 — blank line needed betweensanitized_textand relativedashboard_dataimports (ruff check --fixhandles the three).
Hostedlint-and-smokeandfull-check3.10/3.11 are failure onb4554147…. Expected: green required checks on the fixed head.
- D008 acceptance still missing.
docs/contracts/function-owners.md:22-24still mark the three OBS rows "owner pending formal review" while the moves are already in the diff. #413 requires recording owner acceptance (or an accepted exception) before merge. Cite the acceptance in those rows.
Notes (non-blocking)
- Author disclosed Windows
test_codex_search_delivery.pyfailures remain unpatched. - Amy's APPROVE of
cf08a878was dismissed by this push; this CR does not Approve.
No merge.
|
Incremental review: Resolved from my last comment (6870464543) and review 5901513348
Blocking
Question on
Non-blocking
I ran |
History-only rewrite for PR 425. This commit has a single parent (current main) and does not rebase or replay unsquashed #397 / H02 review-stack commits. Method: head already contains current main; transplanted official tree 911ac41 Official head at preparation: 911ac41 Current main at preparation: 57f8e8a No file-content change relative to that method's resulting tree. Local candidate only; no push. Refs #413 Agent-assisted-by: Claude Code / claude-fable-5-2 [effort=xhigh] (author) Agent-assisted-by: Grok Bot (route prototype author) Agent-assisted-by: Grok Bot Agent-assisted-by: Codex (author) Agent-assisted-by: Claude Code / claude-fable-5-2 effort=xhigh (author) Signed-off-by: GUOGUO <xwdong1998@163.com>
911ac41 to
d173eee
Compare
|
Re-checked Resolved
Still open
Non-blocking (unchanged)
Checks on I compared commit trees and the PR body. I did not run tests this round. |
There was a problem hiding this comment.
PR review verdict — DO NOT PASS
Reviewed base 57f8e8a4915b38201d9fa58d4d05acbe3c4199ee / current origin/main (advanced past that tip) and head d173eee822d7902011373011155706b1d31de0a5. Tree identical to 911ac41 (2e0c550e…). Independent re-review; governing #413. Prior cursor[bot] CR was on b455414….
Resolved since CR 5901513348
- Lint E501/I001 fixed; Ready CI all green on this head (lint-and-smoke, full-check 3.10/3.11, installed-package, declarations, pr-references, dashboard-browser).
- D008 OBS rows adopted in
function-owners.md;d008-wave2-ownership-decision.mdpresent with OBS Adopted anchors. observability/gone; Appsverify_captureprojection path retained; #405 experiment pages underapps/views.
Blocker (must clear before Approve)
mergeable_state=dirty. GitHub and localgit merge-treevs currentmainfail with content conflicts indocs/module-layout.md,pyproject.toml,tests/fixtures/knowledge_retrieval.py,tests/test_codex_plugin.py(main advanced with #426 K02 while this head still parents57f8e8a). Expected: rebase/merge onto current main, resolve conflicts, push, green Ready CI, then independent re-review on the new head.
No merge.
Ordinary merge of main at acc881f, which moved the packaged Knowledge corpus to knowledge/data and the repository pack descriptions to harness/data. No rebase, cherry-pick or history rewrite. Four files conflicted. Each resolution keeps both sides: - pyproject.toml: keep the K02 package-data tables for inferrsi.knowledge and inferrsi.harness. The root package declares only the dissolved view templates, apps/views/*.html, in place of observability/*.html. - docs/module-layout.md: keep the K02 statement of the resource move and name apps/views/ as the home of the dashboard templates. - tests/fixtures/knowledge_retrieval.py: keep the Apps and Harness record imports of the dissolved package and add the K02 source_entry import that the K02 fixture body uses. - tests/test_codex_plugin.py: expect the K02 resource roots and the apps/views templates in the staged plugin runtime. Agent-assisted-by: Claude Code / claude-fable-5-2 [effort=xhigh] (merge integration) Signed-off-by: GUOGUO <xwdong1998@163.com>
Use the status sentence of the old-run split branch so that the shared header of docs/contracts/function-owners.md is byte-identical in both branches. The table stays a Proposed baseline, individually adopted entries are identified by their linked decision records, and the wording grants no blanket acceptance. No row, owner or decision record changes. Agent-assisted-by: Claude Code / claude-fable-5-2 [effort=xhigh] (doc wording alignment) Signed-off-by: GUOGUO <xwdong1998@163.com>
Ordinary merge of accepted main 37220b1. Preserve the original PR ancestry and canonical D008 record, matching function-owner headers, and package payload bytes. Resolve only the two CLI import regions as a proven union: retain Apps capture_context, add main knowledge_reader/read, and remove unused KnowledgeStore and the obsolete duplicate observability binding. Preserve six-key/no-observation bytes and real-observation provenance. Verification: changed CLI Ruff E/F/I, diff check, byte/AST invariants and 5 focused Apps read/campaign regression tests passed on this exact staged tree. Prior broader evidence remains tied to its recorded tree. Assisted-by: Grok Bot (deterministic integration and validation; no coding-model call). Signed-off-by: GUOGUO <xwdong1998@163.com>
Local preservation only. Original isolated WorkSwarm regression remains unpassed (45-second child timeout); host/main comparison is inconclusive. No acceptance or remote CI success claimed. Signed-off-by: GUOGUO <xwdong1998@163.com>
|
Incremental review: How I checked the merges: I compared the PR's net diff against its base before (
I found no unexpected changes beyond the merges. Resolved since my last comment (6876763079)
Still open
Non-blocking
What I did: compared the net diffs before and after, read |
|
Posted by an agent on behalf of @Dong1017 (incremental review only; the WorkSwarm timeout question and the stale checks table were already raised by @amy-why-3459 and are not repeated). Incremental note on head The remaining approval blocker is a confirmation from the #428 author. It has been listed as open in three rounds now (10:24Z, 11:43Z and 23:58Z UTC on 2026-11-14). On GitHub, #428 ("feat: 补齐知识检索解释与逐轮候选证据导航", merged 2026-11-14 06:07Z) was opened by @amy-why-3459, and its only commenter is the same account. @amy-why-3459, if you are the #428 author, could you record the confirmation here or on #413 directly? That would close item 1. If you meant a different owner for #428's output layout, please name them so we can ask them. Checking scope: read #425 comments that mention #428 and #428's author and comment metadata. I did not re-read the diff or run tests; there are no code findings in this note. |
|
Re-check on the same head
Non-blocking: the checks table at body L110-113 still shows |
There was a problem hiding this comment.
LGTM
PR review verdict — PASS
Reviewed base 8c321005d50c2ecef61bf20132409d88474a6450 and head 5ccb2b7fd9d0b86c153349318280c426d9ce565c. Independent re-review; governing #413. Prior cursor[bot] CR was on d173eee (dirty merge).
Prior blockers on this head
- Dirty merge / #405 placement: resolved.
mainis an ancestor; GitHubmergeable=true;dashboard_experiments+experiment_view.htmlunderapps/views; nosrc/inferrsi/observability. - Lint E501/I001: resolved. Local ruff E/F/I clean on the 64 changed Python files; Ready CI green on this head.
- D008: resolved. OBS rows adopted in
function-owners.mdwith decision anchors;d008-wave2-ownership-decision.mdSHA-25698644a754c3186752b530e39cd99fc9116cd2fb2d532825673e959fc818ff078. - Projection /
invalid_format: still fixed (capture_delivery→ Appsverify_capture; H keepsMAX_CONTEXT_CAPTURE_BYTES+invalid_format).
#413 scope checks
observability/gone; H records have no Apps/Knowledge imports; Apps injects BACKENDS/TASK_RELEVANCE;events_urlnot in Hprofile_timeline.- Ready CI on exact head all success: lint-and-smoke, declarations, pr-references, installed-package 3.10/3.11, full-check 3.10/3.11, dashboard-browser.
- Focused local tests at this head passed (campaign injection projection/
invalid_format, dashboard experiments/external, optimization story, search archive/attribution/capture delivery, first-wave isolation, isolated dashboard export).
#428 confirmation ask (not a blocker)
Open peer ask for #428-author confirmation of the pre-#428 no-observation capture_context baseline is process preference, not a code or #413 evidence defect. Packaged KnowledgeReader path stays on the extended/#428 layout; the legacy six-key / inferrsi collect branch is an explicit, tested edge for custom readers without observation/provenance. Amy (as #428 author) may still record her separate confirmation before her own Approve.
No merge.
|
@amy-why-3459 @zengchuang-hw — answering the timeout question in the latest review for The Windows main control remains inconclusive because archive preparation did not finish. These Linux results neither prove a Windows baseline failure nor exclude a Windows-specific regression. The current PR body records this distinction and the successful hosted checks. The PR 428 layout decision remains yours, as you confirmed; it is not claimed closed. |
|
Re-check on the same head Resolved: item 2 (the WorkSwarm 45-second child timeout). I checked the body against your comment. Body L119 records the main-only control on The stale checks table I flagged earlier as non-blocking is fixed too. Still open: item 1 (#428 layout decision). As I said in 6886949109, this one is mine to close. I still need to post my decision on the different layout for readers that report no observation or provenance (body L29-31 and L37: six keys, |
Merge current main9ede1835 (#422) into OBS. Preserve both changelog sections and all five D008 owner rows. Adapt workflow test imports to B01 Apps legacy composition and OBS Apps views. No #428 layout decision is made. Local merge preserved before exact-new-head Linux validation; prior5ccb2b7 test results do not validate this head. Windows isolated controls remain inconclusive. Agent-assisted-by: Grok Bot (deterministic merge resolution; no new coding-model request) Signed-off-by: GUOGUO <xwdong1998@163.com>
|
Incremental review: How I checked the merge: I compared the PR's net diff against its base before (
I found no unexpected changes beyond the merge. Checks on Still open
What I did: compared the net diffs before and after, and compared them against the |
|
Re-check on the same head Resolved: item 2 (stale body). The body now covers Still open: item 1, the #428 layout decision (mine). Body L148 correctly leaves it open. Everything else on this PR is now cleared on my side, so the decision I still owe on the no-observation / no-provenance baseline (body L29-31, L37) is the only thing keeping me from approving. |
There was a problem hiding this comment.
I checked 9489466a on Windows. All 99 tests in campaign record injection, campaign trace, Dashboard workflow, retrieval projection, profile timeline, and search capture delivery passed. It also merges cleanly with the current main containing #444, using Git's merge-tree check.
@amy-why-3459 I saw your formal approval on this head. Could you also record which byte layout should be the #413 acceptance baseline for custom readers supplying neither observation nor item provenance, and add the review verdict text for this exact head? The prior comment and the current PR body still leave the choice between the pre-#428 composed Apps capture and the #428 default-filled layout open. @david6666666 Could you independently review the OBS migration once that byte baseline is recorded?
I also ran the Windows legacy run compatibility suite and external-workspace checks for the Codex, WorkSwarm, and DSH plugin bundles on this head. 61 passed. The DSH check exercised the local bundle and bootstrap.
There was a problem hiding this comment.
LGTM
PR review verdict — PASS
Reviewed base 9ede1835d16352b60c559302882bf2cea3e19c0d and head 9489466a8aae1bc3a31f8cf138bf42c601f7f124. Independent re-review after dismissed cursor[bot] Approve 5908416986 on 5ccb2b7; governing #413.
Delta since 5ccb2b7
- One merge commit
9489466aintegrating accepted B01 (#422 / main9ede1835). OBS-critical files (campaign.py, capture delivery, H records, views placement) unchanged vs prior Approve head. - Net OBS-touching delta:
function-owners.mdgains the two already-adopted B01 rows from main; dashboard/module-boundary tests importexecute_trial/run_experimentfromapps.legacy.run.
Prior blockers on this head
- Dirty merge / #405 placement: resolved. Base
9ede1835is an ancestor; GitHubmergeable=true;observability/absent; experiments underapps/views. - Lint E501/I001: resolved. Local ruff E/F/I clean on focused OBS paths; Ready CI all success on this exact head (lint-and-smoke, declarations, pr-references, installed-package 3.10/3.11, full-check 3.10/3.11, dashboard-browser).
- D008: resolved. Three OBS rows adopted with decision anchors;
d008-wave2-ownership-decision.mdSHA-25698644a754c3186752b530e39cd99fc9116cd2fb2d532825673e959fc818ff078. - Projection /
invalid_format: still fixed (capture_delivery→ Appsverify_capture; H keepsMAX_CONTEXT_CAPTURE_BYTES+invalid_format).
#413 scope checks
- No
src/inferrsi/observability; noinferrsi.observabilityimports in src/tests/tools. - H
harness/recordshas no Apps/Knowledge imports;events_urlnot in Hprofile_timeline(Apps dashboard adds route). - Focused local pytest: 214 passed (
test_campaign_record_injection, dashboard experiments/external/workflow, optimization story, search archive/attribution, module boundaries). - Classic
git merge-treevs advancedorigin/mainc2f463f0shows no content conflicts (auto-merge clean); not treated as an Approve blocker.
#428 byte-baseline ask (not a blocker)
Reassessed zengchuang-hw's ask that Amy record which layout is the #413 acceptance baseline for custom readers without observation/provenance. Independent judgment: not a PASS blocker.
- PR body already records the integration decision: pre-#428 composed Apps
capture_context(six-key /inferrsi collect) for that edge; packagedKnowledgeReaderstays on the extended/#428 path with main bytes. - Missing peer prose confirmation is process preference for Issue #413 closure / Amy's own checklist, not a code defect or missing #413 dissolve evidence on this head.
- Amy's current-head Approve (5908896687) does not change that code assessment.
No merge.
|
Dong1017 and Amy jointly decided to preserve the historical six-key |
observability: dissolve the transition package into H records, Apps views, and K (OBS)
Refs #413
Scope and exact head
impl/obs-dissolve-2.9489466a8aae1bc3a31f8cf138bf42c601f7f124(read back 2026-11-15 11:04:45 Asia/Shanghai after the ordinary fast-forward of this already-committed merge). Parents are previous official OBS head5ccb2b7fd9d0b86c153349318280c426d9ce565cand currentmain9ede1835d16352b60c559302882bf2cea3e19c0d(includes accepted B01 benchmark: split the legacy run/evaluate chain into B, H, and Apps legacy (B01) #422 and skill-eval: split the four-file family by function owner and drop the residual (S01) #437). Treeb8d36e5c0d255cddcff128a078ad5f0513787063. Current main is an ancestor. Unique three-dot diff versus current main: 78 files, +1445 / −727. Commit count versus main is 6. AuthorGUOGUO <xwdong1998@163.com>with the existing DCO and Agent-assisted-by trailers. Refs task: OBS — 解散 observability 过渡包并归位记录与展示 #413. This is an ordinary merge that preserves the OBS capture contracts and the already-adopted shared D008 rows, not a force-with-lease rewrite of the current tip and not a merge of the PR into main. Previous official remote tip5ccb2b7fd9d0b86c153349318280c426d9ce565cremains an ancestor of this head.d173eee(tree2e0c550e05722c795edb3b8de4f258e87e7c860d, parent then-main57f8e8a4915b38201d9fa58d4d05acbe3c4199ee; that tree was identical to previous official head911ac41eec01b660084ac5dd3c92aa6435c795a1), the branch received ordinary merges of later main:e6804db8de0e49897d2bed943d46171e0a01f71e(K02 resource move), docs header alignment6e8dc01b1424eafa059755e37f8af1b4e4f155a0,afca605b721d88017450e3dc0e8a7124bdeb2105(preserve OBS Apps contracts with then-main read routing), and5ccb2b7(then-main including skill-eval: split the four-file family by function owner and drop the residual (S01) #437, preserving capture contracts), and then9489466a(current main9ede1835, including accepted B01 benchmark: split the legacy run/evaluate chain into B, H, and Apps legacy (B01) #422). The9489466amerge had three content conflicts:CHANGELOG.mdkeeps both Changed entries;docs/contracts/function-owners.mdkeeps all five already-adopted D008 rows (this PR still adds the three OBS rows; the two B01 rows now come from main);tests/test_dashboard_workflow.pyimportsexecute_trial/run_experimentfromapps.legacy.runandload_dashboardfromapps.views. No feat: 补齐知识检索解释与逐轮候选证据导航 #428 layout decision is made. Earlier provenance of the911ac41/d173eeetree: ordinary merge9aa890d938c934194d2b6f0cd47a100e2910eb50of previous PR headb455414721d36563ca9b7b66284651dbcd84ee7eand then-main57f8e8a(including the final feat: 补齐知识检索解释与逐轮候选证据导航 #428 behavior), then6f36c57d38f12e45d1b640adf3a1a7a9ff769772(Apps route, shared D008 record, lint) and911ac41(real earlier Apps capture bytes). The current treeb8d36e5cis not identical to5ccb2b7/17d5550for to911ac41/d173eee; hosted jobs and local results on those earlier SHAs are previous-head evidence only and do not validate this head.observability/compatibility shell; Harness records import neither Apps nor Knowledge.overall isolation_completeremains false. No Issue completion is claimed.Five merge conflicts: semantic decisions
apps/views/dashboard_data.pysanitized_textacceptslimit=Nonefor the complete redacted tail.apps/views/knowledge_view.htmlapps/views/retrieval_projection.pysource: nulland unhashable/unsafecontext_idguards.harness/records/knowledge_capture.pytests/test_optimization_story.pyAll four Apps HTML resources (
template,review_template,experiment_view,knowledge_view) retain main's bytes. Both layouts, offline/live navigation, focus retention, source/hash checks, full redacted text and immutable capture bytes are preserved. No whole bundleresourcesare copied into capture items.Real legacy Apps bytes, not relaxed assertions
The initial local integration incorrectly broadened the six-key layout assertion. That was caught before push and corrected, not accepted as a passing repair.
context_item(view)again returns exactly the six identity keys.provenance=Trueis an explicit extension.capture_contextuses the original composition: six keys,ids: [],inferrsi collect <version>, original ordering, no retrieval/null-field additions.KnowledgeReaderalways supplies an observation; its captures retain feat: 补齐知识检索解释与逐轮候选证据导航 #428's metadata and match main's bytes.Deliberate edge differences from main are disclosed: without an observation
save_retrievalomits a nullretrievalfield; a missing/malformedcampaign.jsonuses the Apps uniformValueError. The legacy-onlycapture_contextbranch intentionally retains the earlier six-key contract.Explicit byte-acceptance baseline
For the #413 byte-preservation acceptance, the baseline for a custom reader supplying neither observation nor item provenance is the pre-#428 composed Apps
capture_contextcontract, not #428's newly introduced null/default fields. Theinferrsi collectlabel on that legacy-only branch is intentional historical byte identity even though the wrapper entry point is capture-context. It does not invent an entry-point trace in an old-format record. The extended path usessave_retrievaland its explicit wrapper entry point/calls. Genuine packaged-reader #428 captures stay on that extended path and retain main's bytes. This is the recorded integration decision, not a claim that the #428 author has independently confirmed it; the reviewer's request for that confirmation remains open.D008 and route delta
docs/contracts/d008-wave2-ownership-decision.mdis the same canonical record as #422, SHA-25698644a754c3186752b530e39cd99fc9116cd2fb2d532825673e959fc818ff078. It was not moved, forked or independently reworded.The three OBS rows in
function-owners.mdindividually record adopted ownership and cite#dashboard-workflow,#profile-records-and-overview,#pre-profile-searches. The baseline header does not imply adoption of every row. This records the delegated architecture decision, not reviewer approval.profile_timelineno longer decorates stored summaries withevents_url; Appsdashboard_snapshotadds the identical route. Tests cover absence from Harness records, the served byte/hash identity and unchanged stored files.Review-root evidence
invalid_format.docs/legacy-knowledge-manifest.jsonis intentionally unchanged: its oldobservabilitypaths are historical evidence. Current callers are Apps campaign/views/CLI, not upward Harness imports.9489466a; independent re-review is still required.Qualification and limits
The local/Linux/package figures and hosted jobs below that name
911ac41,d173eee, or5ccb2b7were gathered on those earlier trees. Current head9489466ahas a different tree (b8d36e5c, after later main including #422 / B01). Those earlier results remain evidence about the earlier trees only. They are not a claim that those commands were re-run at9489466a.WinError 1314); browser dependency absent. Ran immediately before the unchanged source was committed as911ac41; the log header still names the preceding index/head.git archiveof911ac41, isolated Linux Chromium, both required browser suitesb9bbe81f2eb5af244c0401c19b569bab98a894f79d8ef912ad9378a116dc4706. Scratch SCM version is not the repository SHA.Earlier 532-pass/5-skip selection predates the last three-file correction and is not presented as a final-head rerun. Broad local Ruff 0.14.10 reports ten inherited F811 findings on both parents; only changed-file Ruff is claimed green locally. Two historical Windows
test_codex_search_delivery.pyfailures remain disclosed, untouched and not re-measured in this round.Hosted checks on previous official head
911ac41(same tree; not ad173eeere-run)911ac41Both full-check versions on
911ac41: 4343 passed,26 skipped,1 warning,342 subtests passed (3.11:330.02s;3.10:343.94s). Hosted Chromium on911ac41: 31 passed in 77.39s. These completed jobs executed the911ac41tree; they must not be described as a re-run ofd173eee.The
pr-referencesfailure on911ac41evaluated the preceding remote body containing negated Issue-closing syntax. That body was later replaced (this text usesRefs).Hosted checks on previous official head
d173eee(different tree; not a5ccb2b7re-run)A new hosted run started after the 2026-11-14 19:36 Asia/Shanghai replacement (same tree, new commit SHA). First read-back at that time:
lint-and-smoke(job),declarations(job),pr-references(job), andinstalled-package3.10/3.11 (jobs, 3.11) already success;full-check3.10/3.11 anddashboard-browserwere still in_progress and are not reported as passed. The already-completedpr-referencessuccess is a new check run on SHAd173eee, not a reuse of the failed911ac41job.Hosted checks on previous official head
5ccb2b7(different tree; not a9489466are-run)A new hosted run started after the 2026-11-15 07:44 Asia/Shanghai ordinary push of that merge onto then-main (including #437). First read-back 2026-11-15 07:46 Asia/Shanghai:
5ccb2b7full-check3.10/3.11 anddashboard-browsercompleted successfully at 07:46:26–07:51:54 Asia/Shanghai on5ccb2b7. Those completed jobs executed the5ccb2b7tree; they must not be described as a re-run of9489466a. At that read-back GitHubmergeable=trueandmergeable_state=blocked;auto_mergewas null, and no amy-why-3459 or zengchuang-hw Approve existed on5ccb2b7.Local Linux evidence on previous official head
5ccb2b7(not a9489466are-run)On the shared Debian 13.7 / Python 3.13.5 host that previously produced the S01 qualify PASS, an exact
git archiveof5ccb2b7/ tree17d5550f(completed 2026-11-15 07:15 Asia/Shanghai, before this push) gave 300 passed, 0 failed/errors/skips, covering the four exact codex/workswarm export and knowledge-reads nodes plus ten OBS-impacted modules. Native 45-second timeouts and integrity checks were not relaxed. This is candidate-host evidence, not hosted CI and not a full-suite or isolation-regression pass.After the 2026-11-15 review request for a main-only control, the same host, existing S01 venv, flags, native 45-second timeout, integrity checks, and fresh basetemp were reused on the already-verified
git archiveof then-main8c321005/ treec749eac3(completed 2026-11-15 08:01:45 Asia/Shanghai). The same four isolated nodes also passed:test_isolated_runtime_can_export_dashboard× codex/workswarm in 2.036s, andtest_isolated_runtime_and_exact_knowledge_reads× codex/workswarm in 4.063s, exit 0, no failures/errors/skips or outer timeout. On this comparable Linux host those nodes fail on neither this branch (T315 export 1.775s / reads 4.305s) nor plain main. The original isolated WorkSwarm 45-second child timeout remains an unpassed prior Windows record and is not re-characterized as a branch-only defect. The earlier same-host Windows comparison versus main is still inconclusive (main hit a 120-second outer packaging cutoff) and is not claimed as a confirmed main-baseline failure.Hosted checks triggered on current head
9489466aA new hosted run started after the 2026-11-15 11:04:45 Asia/Shanghai ordinary fast-forward of this merge onto current main. Ready-lane workflow run 43670684461 concluded success at 11:12:57 Asia/Shanghai.
9489466afull-check3.10/3.11 anddashboard-browsercompleted successfully at 11:06:54–11:12:57 Asia/Shanghai on9489466a. GitHubmergeable=true;mergeable_state=blocked(required reviews outstanding; all listed hosted checks on this head have succeeded).auto_mergeis null. No amy-why-3459 or zengchuang-hw Approve exists on this head.Local Linux evidence on exact current head
9489466aOn the shared Debian 13.7 / Python 3.13.5 host that previously produced the S01 qualify PASS, an exact
git archiveof9489466a/ treeb8d36e5c(archive SHA-2563845e65e65a886bce22eb649d32fac07015dc06816362de9c212f58c98e21ab1, reconstructed tree verified; completed 2026-11-15 11:03:20 Asia/Shanghai, before this push) gave 362 passed, 0 failed/errors/skips: isolatedtest_isolated_runtime_can_export_dashboard× codex/workswarm in 2.287s,test_isolated_runtime_and_exact_knowledge_reads× codex/workswarm in 4.305s, and the merged B01/OBS contract selection (16 files includingtests/test_dashboard_workflow.pyand the OBS/B01 boundary and capture modules) 358 passed in 15.178s. One worker; fresh basetemp; native 45-second timeouts and integrity checks were not relaxed. This is candidate-host evidence for this exact head, not hosted CI and not a full-suite or isolation-regression pass. Earlier5ccb2b7Linux results do not validate this head. No new isolated-node control on main9ede1835was run in this round. The earlier same-host Windows comparison versus main remains inconclusive and is not claimed as a confirmed main-baseline failure.Diff and history provenance
Against current main
9ede1835d16352b60c559302882bf2cea3e19c0d: 78 files, +1445 / −727.9ede1835..9489466acontains 6 commits:d173eee,e6804db8,6e8dc01b,afca605b,5ccb2b7, and9489466a. Current main is an ancestor; GitHubmergeable=true. The earlier official heads5ccb2b7(tree17d5550f),d173eee(tree2e0c550e, parent57f8e8a) and911ac41remain as ancestry or rollback provenance; they are not the current tip and do not have the current tree.No policy cutover, frozen-manifest edit, or other-PR implementation is added by this merge beyond integrating already-landed main (including #437 and #422). Benchmark/S01/R01/CLI migrations remain their respective deliveries. Independent reviewer acceptance remains outstanding. The still-open review item is amy-why-3459's own #428 layout decision for the pre-#428 no-observation / no-provenance composed Apps
capture_contextbaseline; it is not claimed resolved by this body update. The earlier WorkSwarm timeout concern was closed in #425 (comment) .