diff --git a/README.ko.md b/README.ko.md index 0b4edcc..d2d4dd2 100644 --- a/README.ko.md +++ b/README.ko.md @@ -244,6 +244,7 @@ README에서는 빠른 검토 경로만 유지하고, 세부 marker contract는 | 먼저 열어볼 operation risk가 있는가? | `Reviewer operation quick scan`, `raw_marker=reviewer_focus_operation_quick_scan`, `Orchestrator queue/deadline/fallback markers` | detailed row를 열기 전에 queue pressure, `max_total_queue_depth`, deadline miss, fallback count, Jetson/device-local identity를 먼저 봅니다. | | 어떤 preserved run/path를 보는가? | `Runtime replay duration scope`, `Lab EdgeEnv preservation context`, `Jetson/device-local EdgeEnv preservation run`, `Jetson/device-local EdgeEnv preservation details` | replay duration과 `identity=jetson_device_local_preservation`, `path=device_local_starter` label을 빠르게 찾게 합니다. | | optional AIGuard full-evidence source fixture는 무엇인가? | `runtime_intelligence_source_traceability_summary.md`, `source_traceability_alignment`, `aiguard_optional_present_source_artifact` | EdgeEnv mirror와 AIGuard optional-present fixture가 같은 read-only source artifact와 재생성 명령을 가리키는지 확인합니다. | +| upstream sample handoff는 어디서 확인하는가? | Orchestrator `agent_scheduler_delay_sample.json`, `remote_fallback_recovery_sample.json` -> AIGuard `scheduler_delay_pattern`, `remote_execution_recovered_by_fallback` -> Lab report marker | curated sample을 benchmark output이나 Lab policy input으로 만들지 않고 cross-repo 검토 경로만 제공합니다. | | 어떤 warning이 review context로만 남는가? | `AIGuard max queue raw-context traceability`, `AIGuard operation timeline evidence`, `AIGuard runtime operation anomalies`, `AIGuard remote dispatch event summary`, `Remote fallback starter evidence`, `production_remote_execution=false` | AIGuard/Orchestrator가 policy owner가 되지 않도록 deterministic warning과 remote starter evidence를 보존합니다. | 세부 marker contract는 [docs/portfolio/edgeenv_runtime_regression_lab_handoff.md](docs/portfolio/edgeenv_runtime_regression_lab_handoff.md)에 정리되어 있습니다. diff --git a/README.md b/README.md index 3f79389..8e749f4 100644 --- a/README.md +++ b/README.md @@ -538,6 +538,7 @@ in the handoff document linked below. | Is there an operation risk worth opening first? | `Reviewer operation quick scan`, `raw_marker=reviewer_focus_operation_quick_scan`, `Orchestrator queue/deadline/fallback markers` | Surfaces queue pressure, `max_total_queue_depth`, deadline misses, fallback count, and Jetson/device-local identity before the detailed rows. | | Which preserved run/path is being reviewed? | `Runtime replay duration scope`, `Lab EdgeEnv preservation context`, `Jetson/device-local EdgeEnv preservation run`, `Jetson/device-local EdgeEnv preservation details` | Keeps replay duration, `identity=jetson_device_local_preservation`, and `path=device_local_starter` easy to find. | | Which optional AIGuard source fixture backs the full-evidence path? | `runtime_intelligence_source_traceability_summary.md`, `source_traceability_alignment`, `aiguard_optional_present_source_artifact` | Lets reviewers confirm the EdgeEnv mirror and AIGuard optional-present fixture point to the same read-only source artifact and reproduction command. | +| Which upstream samples explain the handoff? | Orchestrator `agent_scheduler_delay_sample.json`, `remote_fallback_recovery_sample.json` -> AIGuard `scheduler_delay_pattern`, `remote_execution_recovered_by_fallback` -> Lab report markers | Gives reviewers a cross-repo navigation path without making curated samples benchmark outputs or Lab policy inputs. | | Which warnings remain review context only? | `AIGuard max queue raw-context traceability`, `AIGuard operation timeline evidence`, `AIGuard runtime operation anomalies`, `AIGuard remote dispatch event summary`, `Remote fallback starter evidence`, `production_remote_execution=false` | Preserves deterministic warning and remote starter evidence without making AIGuard/Orchestrator the policy owner. | These rows do not turn Orchestrator, EdgeEnv, or AIGuard into final decision diff --git a/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md b/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md index b576096..52ee088 100644 --- a/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md +++ b/docs/portfolio/edgeenv_runtime_regression_lab_handoff.md @@ -193,6 +193,7 @@ Expected Lab behavior: - When EdgeEnv preservation context is present, Lab renders `Lab EdgeEnv preservation context` with `lab_report_preservation_context_present=True`, `lab_preservation=present`, and `lab_context=present` so the Runtime Intelligence report gate and entrypoint evidence index use the same Lab-owned marker vocabulary. - When an EdgeEnv handoff manifest is provided, the bundle gate requires EdgeEnv-produced file keys, external AIGuard file keys, source repository mapping, artifact roles, producer contracts, and boundary flags to match Lab's Runtime Intelligence bundle contract. - The same manifest gate requires `expected_report_markers` to preserve these exact Lab-owned report markers: `Runtime Intelligence Risk Summary`, `Runtime replay duration scope`, `Orchestrator operation feed context`, `EdgeEnv fixture matrix coverage`, `Reviewer operation quick scan`, `Orchestrator task event rollup`, `Lab EdgeEnv preservation context`, `AIGuard operation risk rollup evidence`, `AIGuard task event rollup evidence`, `AIGuard operation timeline evidence`, `AIGuard runtime operation anomalies`, `AIGuard remote dispatch event summary`, `AIGuard remote event summary consistency`, `Remote fallback starter evidence`, `lab=Remote fallback starter evidence; evidence=remote_execution_recovered_by_fallback`, `AIGuard producer-lineage guard alignment`, and `Lab remains the final deployment decision owner.`. +- Reviewer navigation can trace Orchestrator curated samples through AIGuard evidence into Lab report rows: `agent_scheduler_delay_sample.json` -> `scheduler_delay_pattern` -> `Reviewer operation quick scan` / `Orchestrator queue/deadline/fallback markers`, and `remote_fallback_recovery_sample.json` -> `remote_execution_recovered_by_fallback` -> `Remote fallback starter evidence`. Lab does not treat those curated samples as benchmark outputs, production retry proof, or deployment policy inputs. - The external AIGuard artifact gate also requires `runtime_queue_overload` raw context to preserve `orchestrator_candidate_operation_max_total_queue_depth=7`, keeping the diff --git a/tests/test_runtime_intelligence_bundle_manifest.py b/tests/test_runtime_intelligence_bundle_manifest.py index 72dcdee..1b3f617 100644 --- a/tests/test_runtime_intelligence_bundle_manifest.py +++ b/tests/test_runtime_intelligence_bundle_manifest.py @@ -218,6 +218,7 @@ def test_readme_runtime_intelligence_section_stays_scannable(): assert "Is telemetry/replay evidence complete enough?" in readme assert "Is there an operation risk worth opening first?" in readme assert "Which preserved run/path is being reviewed?" in readme + assert "Which upstream samples explain the handoff?" in readme assert "Which warnings remain review context only?" in readme for row in [ "최종 판단 owner는 누구인가?", @@ -225,6 +226,7 @@ def test_readme_runtime_intelligence_section_stays_scannable(): "telemetry/replay evidence가 충분한가?", "먼저 열어볼 operation risk가 있는가?", "어떤 preserved run/path를 보는가?", + "upstream sample handoff는 어디서 확인하는가?", "어떤 warning이 review context로만 남는가?", ]: assert row in readme_ko @@ -247,10 +249,32 @@ def test_readme_runtime_intelligence_section_stays_scannable(): "Remote fallback starter evidence", "Lab remains the final deployment decision owner", "production_remote_execution=false", + "agent_scheduler_delay_sample.json", + "remote_fallback_recovery_sample.json", + "scheduler_delay_pattern", + "remote_execution_recovered_by_fallback", ]: assert marker in readme assert marker in readme_ko + handoff = ( + REPO_ROOT + / "docs" + / "portfolio" + / "edgeenv_runtime_regression_lab_handoff.md" + ).read_text(encoding="utf-8") + for marker in [ + "agent_scheduler_delay_sample.json", + "remote_fallback_recovery_sample.json", + "scheduler_delay_pattern", + "remote_execution_recovered_by_fallback", + "Reviewer operation quick scan", + "Remote fallback starter evidence", + "benchmark outputs", + "deployment policy inputs", + ]: + assert marker in handoff + def test_readme_internal_links_include_matching_korean_labels(): readme = (REPO_ROOT / "README.md").read_text(encoding="utf-8")