Skip to content

Commit 1c6d8d8

Browse files
committed
test(agent-workspace): cover ownership conflicts
1 parent 4431eda commit 1c6d8d8

8 files changed

Lines changed: 198 additions & 3 deletions
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Ownership Conflict Probe
2+
3+
Ownership conflict probe validates that controlled responsibility records are not flattened into one stable owner.
4+
5+
## Deployment Ownership
6+
7+
The deployment owner is Release Ops in the handoff sheet.
8+
9+
Context paragraph keeps the ownership conflict inside one scoped section.
10+
11+
The deployment owner is Rollback Team in the rollback appendix.
12+
13+
Operators must resolve which deployment owner is active before release.

docs/diataxis/en/explanation/development-progress-dashboard.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ It tracks what is already implemented, where the hard gaps remain, and how to ve
55

66
## 2026-07-05 RSE Document-Augmented Graph RAG Implementation Plan
77

8-
This slice now tracks implementation progress for richer Knowledge Workspace answers. The concrete plan remains at [RSE document-augmented graph RAG answer pipeline](../../../plans/2026-07-05-001-feat-rse-document-augmented-rag-plan.md), but the branch has moved beyond planning: the deterministic RSE/document-augmentation path, full-document graph-neighbor augmentation, query-intent graph-neighbor ranking, intent-aware graph connection-path ordering, intent-aligned graph-window ambiguity filtering, budgeted context pack, stable RAG context replay ids, provider-backed sufficiency trace, bounded one-step recovery, RAG failure-stage classification, RAG-aware one-message release review, claim-level citation-backed RAG release gating, prompt/preamble artifact filtering for public RAG clauses, answer claim-to-citation trace/export mapping, operand-aware compare answer-profile budgeting, how-to answer-profile budgeting, causal answer-profile budgeting, generic answer-profile ranking, Mermaid-label evidence extraction, runtime verifier fields, graph successor-window and graph-diagnostics verifier assertions, context-budget truncation/drop/malformed-provider/timeout-provider/graphintent probe coverage, conflicting adjacent, same-section non-adjacent, cross-document structured measurement/date/location/quantity evidence including plural unitless quantity facts, full-document remote-scan hard-negative coverage, controlled current-vs-historical, environment-qualified, version-qualified, and platform-qualified false-positive guards, single- and multi-neighbor graph source-unavailable hard-negative coverage, localized frontend RAG status, and export RAG trace preservation are implemented. Calibrated graph-confidence thresholds, broader replay tooling over larger corpora, more natural synthesis over label-heavy evidence, further profile-specific release-budget calibration, broader semantic conflict classes, and larger runtime probes remain follow-up work.
8+
This slice now tracks implementation progress for richer Knowledge Workspace answers. The concrete plan remains at [RSE document-augmented graph RAG answer pipeline](../../../plans/2026-07-05-001-feat-rse-document-augmented-rag-plan.md), but the branch has moved beyond planning: the deterministic RSE/document-augmentation path, full-document graph-neighbor augmentation, query-intent graph-neighbor ranking, intent-aware graph connection-path ordering, intent-aligned graph-window ambiguity filtering, budgeted context pack, stable RAG context replay ids, provider-backed sufficiency trace, bounded one-step recovery, RAG failure-stage classification, RAG-aware one-message release review, claim-level citation-backed RAG release gating, prompt/preamble artifact filtering for public RAG clauses, answer claim-to-citation trace/export mapping, operand-aware compare answer-profile budgeting, how-to answer-profile budgeting, causal answer-profile budgeting, generic answer-profile ranking, Mermaid-label evidence extraction, runtime verifier fields, graph successor-window and graph-diagnostics verifier assertions, context-budget truncation/drop/malformed-provider/timeout-provider/graphintent probe coverage, conflicting adjacent, same-section non-adjacent, cross-document structured measurement/date/location/quantity evidence including plural unitless quantity facts, controlled ownership identity conflicts, full-document remote-scan hard-negative coverage, controlled current-vs-historical, environment-qualified, version-qualified, and platform-qualified false-positive guards, single- and multi-neighbor graph source-unavailable hard-negative coverage, localized frontend RAG status, and export RAG trace preservation are implemented. Calibrated graph-confidence thresholds, broader replay tooling over larger corpora, more natural synthesis over label-heavy evidence, further profile-specific release-budget calibration, broader semantic conflict classes, and larger runtime probes remain follow-up work.
99

1010
Current code-vs-plan reading:
1111

@@ -16,7 +16,7 @@ Current code-vs-plan reading:
1616
| Graph context should use in-degree/out-degree and neighbor content, not only neighbor titles | `KnowledgeLearningPlatform.agentConversation()` now materializes selected graph-neighbor items and lets the evidence assembler produce both snippet-level and full-document-aware `graph_neighbor_support` fragments. `graphContextAssembler.ts` now ranks predecessor/successor windows and connection paths with query-intent scoring policies, relation-kind priority, confidence/provenance scoring, anchor-equivalent filtering, bibliography exclusion, and intent-aligned ambiguity filtering before evidence assembly. Compare windows prefer `contrast` / `analogy` neighbors when present, fail open to structural neighbors only when no aligned candidate exists, and expose aligned/misaligned candidate diagnostics. | Implemented deterministic path; larger-corpus calibration remains |
1717
| The answer should be one visible message while orchestration stays in backend | `conversationComposer.ts` now passes `ragContextPack` and `ragSufficiencyReview` into `answerReleaseReview.ts`; release review can revise or enrich a public answer from direct, document, and graph fragments while keeping orchestration in trace/status surfaces, and `rag_claim_citation_support` now contracts drafts when sentence-level public claims are unsupported or only weakly covered by citation-backed RAG fragments. Compare-intent RAG answers now extract operands, keep explicit scope from being hard-narrowed to only title-hit document ids, reserve four direct-support clauses for both sides, rank evidence by operand/fragment coverage, and turn Mermaid comparison labels into readable evidence before graph contrast context is added. How-to answers now reserve direct/document/graph budget for ordered steps, prerequisites, downstream checks, and failure handling instead of collapsing to a generic overview. Generic answers now use query-term coverage ranking and two direct-support slots so broad prompts keep the most relevant grounded clauses instead of generic preambles. `KnowledgeLearningPlatform.ts` now records optional `answerClaimCitations` that map public-answer claims to citation ids, RAG fragment ids, and source paths for trace/export auditing, while `agent_workspace.js` / `workspace_panes.js` show compact status rather than extra chat messages. | Preserved and strengthened |
1818
| LLM judging should improve answer completeness | `ragSufficiencyJudge.ts` has deterministic gates plus an injected optional LLM judge hook. `ragSufficiencyProviderJudge.ts` now adapts the existing `LlmProviderClient` / NoteMD settings boundary with strict JSON parsing, timeout, no retries, and deterministic fallback through the reviewer catch path; malformed completion text now rejects at the adapter boundary so `llm_judge_failed:*` remains replayable. `KnowledgeLearningPlatform.agentConversation()` now performs at most one bounded recovery assembly/review pass when the first pack is recoverably borderline or insufficient. | Implemented for Unit 5 |
19-
| Weak evidence should degrade explicitly | `RagSufficiencyReview` now records `sufficient`, `borderline`, or `insufficient` plus degradation states such as `partial_coverage`, `conflict`, and `insufficient_evidence`; `evidenceContextAssembler.ts` now emits a `conflict` fragment for same-subject measurement, unitless quantity/limit, date/year, explicit state/status, or controlled location evidence with divergent values when those facts are adjacent or non-adjacent inside the same scoped section, marks graph-neighbor source-window misses with graph-neighbor role provenance, and `ragSufficiencyJudge.ts` degrades graph context when the neighbor has only a direct span but no recoverable source window. `KnowledgeLearningPlatform.ts` classifies the resulting states under `context_assembly` or `graph_evidence` as appropriate. The frontend evidence pane displays the compact state. | Implemented for deterministic review; broader semantic classes remain open |
19+
| Weak evidence should degrade explicitly | `RagSufficiencyReview` now records `sufficient`, `borderline`, or `insufficient` plus degradation states such as `partial_coverage`, `conflict`, and `insufficient_evidence`; `evidenceContextAssembler.ts` now emits a `conflict` fragment for same-subject measurement, unitless quantity/limit, date/year, explicit state/status, controlled location, or controlled ownership identity evidence with divergent values when those facts are adjacent or non-adjacent inside the same scoped section, marks graph-neighbor source-window misses with graph-neighbor role provenance, and `ragSufficiencyJudge.ts` degrades graph context when the neighbor has only a direct span but no recoverable source window. `KnowledgeLearningPlatform.ts` classifies the resulting states under `context_assembly` or `graph_evidence` as appropriate. The frontend evidence pane displays the compact state. | Implemented for deterministic review; broader semantic classes remain open |
2020

2121
Architecture ownership now has a sharper split:
2222

@@ -68,6 +68,7 @@ Fresh implementation evidence in this slice:
6868
- The runtime probe `conflicting_location_evidence_probe_en`, backed by `Knowledge_Base/raglocationconflict`, now extends the conflict slice to a conservative location comparable-fact class: explicit location/site/region/zone/room/rack/slot/bay subjects with Rack A and Rack B values produce a `conflict` fragment, keep both sides visible in the one public answer, and degrade under `context_assembly`.
6969
- The runtime probe `conflicting_quantity_limit_evidence_probe_en`, backed by `Knowledge_Base/ragquantityconflict`, now extends the conflict slice to conservative unitless quantity facts: explicit count/limit/threshold/budget/quota/capacity/size/window/attempts/retries subjects with `3` and `5` values produce a `conflict` fragment, keep both sides visible in one public answer, and degrade under `context_assembly`.
7070
- The runtime probe `conflicting_multi_document_quantity_evidence_probe_en`, backed by `Knowledge_Base/ragquantitymulticonflict`, now verifies cross-document plural unitless quantity facts: `retry attempts are 3` and `retry attempts are 5` produce a cross-document `conflict` fragment, keep both values in one public answer, and degrade under `context_assembly` without widening the extractor beyond explicit quantity subjects.
71+
- The runtime probe `conflicting_ownership_identity_evidence_probe_en`, backed by `Knowledge_Base/ragidentityconflict`, now extends the controlled semantic-conflict slice to ownership identity facts: explicit owner/assignee/contact/maintainer/team/group subjects with `Release Ops` and `Rollback Team` values produce a `conflict` fragment, keep both sides visible in one public answer, and degrade under `context_assembly`.
7172
- The runtime probe `temporal_scoped_location_probe_en`, backed by `Knowledge_Base/ragtemporalqualifier`, verifies the paired hard negative: current and historical placement facts stay in separate comparable scopes, the public answer can use the current Rack A fact, and the RAG pack does not emit a false `conflict` fragment.
7273
- The runtime probe `environment_scoped_state_status_probe_en`, backed by `Knowledge_Base/ragenvironmentqualifier`, now verifies the next condition-qualified guard: staging-enabled and production-disabled status facts stay in explicit environment scopes, the RAG pack forbids `conflict`, and sufficiency remains `sufficient/none` instead of degrading a cross-environment state difference.
7374
- The runtime probe `version_scoped_state_status_probe_en`, backed by `Knowledge_Base/ragversionqualifier`, now verifies the next condition-qualified guard: version-1.0-enabled and version-2.0-disabled status facts stay in explicit version scopes, the RAG pack forbids `conflict`, and sufficiency remains `sufficient/none` instead of degrading a cross-version state difference.

docs/diataxis/zh/explanation/development-progress-dashboard.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
- focused graph-window ambiguity 测试现在验证:compare intent 在存在 `contrast` / `analogy` 邻居时会过滤高置信 `sequence` / `prerequisite` successor;当图里没有 compare-aligned 邻居时仍 fail-open 到结构 successor。runtime verifier 现在也会在 `graphintent` compare 探针中断言 graph diagnostics:至少 2 个 intent-aligned successor candidate、至少 1 个 intent-misaligned successor candidate,并确认没有使用 misaligned-successor fallback。
6565

6666
- runtime probe `conflicting_multi_document_quantity_evidence_probe_en` 现在由 `Knowledge_Base/ragquantitymulticonflict` 支撑,验证跨文档复数无单位数量事实:`retry attempts are 3``retry attempts are 5` 会产出跨文档 `conflict` fragment,在单条公开回答中保留两侧数值,并在 `context_assembly` 下显式降级;该切片只扩大显式 quantity subject 的语法覆盖,不把开放域数量语义冲突纳入已完成范围。
67+
- runtime probe `conflicting_ownership_identity_evidence_probe_en` 现在由 `Knowledge_Base/ragidentityconflict` 支撑,验证受控责任归属事实:显式 owner/assignee/contact/maintainer/team/group subject 中 `Release Ops``Rollback Team` 会产出 `conflict` fragment,在单条公开回答中保留两侧证据,并在 `context_assembly` 下显式降级;该切片只覆盖责任归属 identity 类,不把开放域身份或语义矛盾纳入已完成范围。
6768

6869
后续推进:
6970

docs/plans/2026-07-05-001-feat-rse-document-augmented-rag-plan.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,7 @@ flowchart TB
491491
- explicit platform-qualified state false-positive guards through `platform_scoped_state_status_probe_en`;
492492
- explicit unitless quantity/limit conflict coverage through `conflicting_quantity_limit_evidence_probe_en`;
493493
- cross-document plural unitless quantity conflict coverage through `conflicting_multi_document_quantity_evidence_probe_en`;
494+
- controlled ownership identity conflict coverage through `conflicting_ownership_identity_evidence_probe_en`;
494495
- causal answer-profile budgeting through `causal_answer_profile_budget_en`;
495496
- full-document graph-neighbor augmentation through minimum role/boundary fragment-count assertions;
496497
- graph self-neighbor filtering;
@@ -525,6 +526,7 @@ flowchart TB
525526
- Runtime: `what is platform scoped state status probe?` reads `Knowledge_Base/ragplatformqualifier/platform scoped state status probe.md`, preserves Windows-enabled and Android-disabled state facts as platform-qualified evidence, keeps `forbiddenRagRoles: ['conflict']`, and returns `sufficient/none` instead of degrading as a conflict.
526527
- Runtime: `what is quantity limit conflict probe?` reads `Knowledge_Base/ragquantityconflict/quantity limit conflict probe.md`, preserves `retry limit is 3` and `retry limit is 5` as unitless quantity conflict evidence, keeps both values in one public answer, and classifies the degradation under `context_assembly`.
527528
- Runtime: `compare nominal retry attempts quantity conflict probe with field retry attempts quantity conflict evidence` reads two scoped files under `Knowledge_Base/ragquantitymulticonflict`, preserves plural `retry attempts are 3` and `retry attempts are 5` statements as a cross-document unitless quantity `conflict` fragment, keeps both values in one public answer, and classifies the degradation under `context_assembly`.
529+
- Runtime: `what is ownership conflict probe?` reads `Knowledge_Base/ragidentityconflict/ownership conflict probe.md`, preserves `deployment owner is Release Ops` and `deployment owner is Rollback Team` as a controlled ownership identity `conflict` fragment, keeps both values in one public answer, and classifies the degradation under `context_assembly`.
528530
- Runtime: `why causal answer profile probe needs bounded evidence?` reads `Knowledge_Base/ragcausalprofile/causal answer profile probe.md`, uses the bounded causal RAG profile (`20` fragments, `1500` chars per fragment, `7600` total chars), keeps the source boundary at `full_document`, and returns one public answer containing mechanism and downstream evidence.
529531
- Runtime: `compare multi document calibration tolerance conflict probe with field calibration tolerance conflict evidence` reads two scoped files under `Knowledge_Base/ragmulticonflict`, preserves `+/-0.10 mm` and `+/-0.50 mm` as a cross-document `conflict` fragment, keeps both values in the one public answer, and classifies the degradation under `context_assembly`.
530532
- Runtime: `compare nominal full scan source with field full scan source` reads two scoped files under `Knowledge_Base/ragfullscan`, detects remote appendix `+/-0.10 mm` and `+/-0.50 mm` facts outside the matched opening spans through full-document scanning, keeps both values in one public answer, and proves the local paragraph window is not the source-reading maximum.
@@ -999,6 +1001,8 @@ flowchart TB
9991001

10001002
**跨文档数量事实增量(2026-07-07):** `evidenceContextAssembler.ts` 的 unitless quantity 抽取现在支持复数谓词 `are`,用于覆盖 `retry attempts are 3` 这类自然工程写法。由 `Knowledge_Base/ragquantitymulticonflict` 支撑的 `conflicting_multi_document_quantity_evidence_probe_en` 验证两个 scoped 文档中的 `retry attempts are 3``retry attempts are 5` 会作为跨文档 quantity `conflict` fragment 进入有界 `RagContextPack`,公开回答仍保持单条消息并保留两侧数值,降级归因仍是 `context_assembly`。该切片只扩大保守 quantity fact 的语法覆盖,不声称解决开放域数量语义冲突。
10011003

1004+
**责任归属事实增量(2026-07-07):** `evidenceContextAssembler.ts` 现在加入保守的 `identity` comparable-fact 类,只识别 owner、assignee、contact、maintainer、team、group 等显式责任归属主题。由 `Knowledge_Base/ragidentityconflict` 支撑的 `conflicting_ownership_identity_evidence_probe_en` 验证同一 scoped section 中 `deployment owner is Release Ops``deployment owner is Rollback Team` 会产出 `conflict` fragment、`borderline/conflict` sufficiency 和 `context_assembly` 归因。该切片扩大的是受控责任归属语义类,不声称已经解决开放域身份或语义矛盾检测。
1005+
10021006
## 系统影响
10031007

10041008
- **检索层:** span-level retrieval 仍是主入口;document augmentation 在候选选择之后发生。

0 commit comments

Comments
 (0)