feat(stage2): add S2_00 AgentBackend spec
Keep the adapter non-executable until the native loader primitive and signed runtime admission contracts are bound.
This commit is contained in:
@@ -16,6 +16,17 @@
|
|||||||
- 하위 에이전트(subagents)를 사용하여 핵심 테마와 교훈을 식별하고 MEMORY.md에 섹션으로 저장하라.
|
- 하위 에이전트(subagents)를 사용하여 핵심 테마와 교훈을 식별하고 MEMORY.md에 섹션으로 저장하라.
|
||||||
- 향후 세션 시작 시 MEMORY.md의 이전 섹션을 참조하라.
|
- 향후 세션 시작 시 MEMORY.md의 이전 섹션을 참조하라.
|
||||||
|
|
||||||
|
## 2026-08-30 — S2_00 AgentBackend YAML 작업명세 구현
|
||||||
|
|
||||||
|
한 줄 요약: `S_00_SOW.md`의 S2_00 계약을 두 독립 후보의 앙상블과 독립 evaluator 2개씩 정확히 2회 검증·증분개정하여 `Stage_2_S2_00.yml`로 구현하되, 미확인 native primitive를 창작하지 않고 O-06이 닫힐 때까지 명시적인 비실행 authoring projection으로 고정했다.
|
||||||
|
|
||||||
|
- 최종 산출물: `YAML_Prompts/2. Stage_2/Stage_2_S2_00.yml`; 954행/45,833 bytes/SHA-256 `3fbadd9bf48e8d3921b43f766690bf67ad1dd2cd0a8f624d78a9b3223edeeeb7`. 후보 A는 계약 완전성, 후보 B는 canonical 참조 최소화를 강화했고 main agent가 thin loader-adapter 구조로 병합했다.
|
||||||
|
- 실행 의미: 실행 성격은 `NON-LLM-DETERMINISTIC`이지만 현재 AgentBackend의 외부 고정 `.py` native invocation primitive가 확인되지 않았다. 따라서 `tasks: []`, `nexts: []`, `DRAFT_NOT_EXECUTABLE`, `OPEN_EXTERNAL_BACKEND`를 유지하며 빈 task를 성공 no-op으로 해석하지 않는다. 인라인 Python, direct runtime 우회, shell, 임의 MCP/tool, 구 Stage 2 v.0~v.3 dependency·fallback은 모두 금지한다.
|
||||||
|
- 계약 범위: loader만 호출하는 단일 원자 native primitive가 향후 invoke→profile별 single receipt 검증→상호배타 dispatch를 소유하도록 했다. Stage 1 exact input 16개 + signal expansion 1 family, `C00→C05→C10→C15`, normal 12-family와 diagnostic exact 5-family, `S2_10`/`S2_40_STATUS_ONLY` 상호배타 route 및 final status single writer `S2_40`을 보존한다.
|
||||||
|
- 2회 검증 교정: Round 1에서 affected-scope·보존식·review/slot·party/title·native projection·single receipt·workspace·retry·self-binding을 보강했다. Round 2의 법률/계약 `CRITICAL 0·MAJOR 4·MINOR 1`과 architecture `CRITICAL 0·MAJOR 6·MINOR 1`을 반영해 review `SUPPORTED`, slot `UNEVALUABLE`, explicit-relation adapter 미결속 처리, validate-only receipt v1/사건실행 receipt v2 분리, non-DEV admission·600초 process-tree timeout·workspace mapping·self-hash 전제를 명시했다. 지정 횟수 종료 후 제3의 독립 PASS 평가는 수행하지 않았다.
|
||||||
|
- drift·검증: 복사 view 24개를 `local_pointer → authority_ref#authority_pointer` 19개와 future-blocking row 5개로 기계 판독 가능하게 만들었다. unique-key YAML parse, pointer·fixed argv·input/output/route/schema enum 교차대조, UTF-8/final newline/trailing whitespace 및 `git diff --check`를 통과했고, 기존 `tests/s2_00` 38/38 PASS와 loader validate-only `VALIDATED_WITH_PENDING_BINDINGS`를 재확인했다.
|
||||||
|
- 잔여 경계: O-06 native adapter, O-07 signed admission, receipt v2와 runtime stdout single-JSON capture, loader non-DEV/timeout, authenticated workspace mapping, explicit relation adapter, Stage 1 completion seal와 detached signature가 열려 있다. 현 파일은 static adapter contract일 뿐 case invoke·downstream E2E·canary/production admission 또는 법률 검수 완료를 증명하지 않으며, 전제가 닫히면 canonical `agent_scripts/Stage_2_S2_00.yml` native projection을 원자 생성·hash binding·재봉인해야 한다.
|
||||||
|
|
||||||
## 2026-08-30 — S2_00 고정 YAML·assets·sources 구현
|
## 2026-08-30 — S2_00 고정 YAML·assets·sources 구현
|
||||||
|
|
||||||
한 줄 요약: 정본 `S_00_SOW.md`와 `S2_00_assets.md`에 따라 `Default_Agent/Stage_2_Clean/`에 S2_00 고정 자산 141개를 생성하고, N=3 병렬 생성·순차 hash binding·독립 감사 2회와 병렬 증분수정을 거쳐 38/38 test 및 전체 정적 closure를 통과했다.
|
한 줄 요약: 정본 `S_00_SOW.md`와 `S2_00_assets.md`에 따라 `Default_Agent/Stage_2_Clean/`에 S2_00 고정 자산 141개를 생성하고, N=3 병렬 생성·순차 hash binding·독립 감사 2회와 병렬 증분수정을 거쳐 38/38 test 및 전체 정적 closure를 통과했다.
|
||||||
|
|||||||
@@ -0,0 +1,954 @@
|
|||||||
|
# S2_00 AgentBackend orchestration specification
|
||||||
|
# Canonical runtime logic remains under Default_Agent/Stage_2_Clean/.
|
||||||
|
# This authoring projection is intentionally non-executable until O-06 is closed.
|
||||||
|
Agent:
|
||||||
|
name: Stage_2_S2_00
|
||||||
|
description: >-
|
||||||
|
현행 Stage 1 Part 1-4 산출물을 release-bound fixed runtime으로 검증·보존·정규화하고,
|
||||||
|
claim-neutral cluster slice와 prompt bundle plan을 작성하는 S2_00 AgentBackend
|
||||||
|
loader-adapter 작업명세서. 이 파일은 외부 고정 Python을 호출하는 검증된
|
||||||
|
AgentBackend primitive와 live loader receipt가 결속되기 전에는 실행형 스크립트가 아니다.
|
||||||
|
version: "1.0.0-draft"
|
||||||
|
|
||||||
|
metadata:
|
||||||
|
workflow_id: S2_00
|
||||||
|
execution_class: NON-LLM-DETERMINISTIC
|
||||||
|
artifact_role: AGENTBACKEND_LOADER_ADAPTER_CONTRACT
|
||||||
|
contract_schema_version: stage2_agent_loader_adapter_contract.v1-draft
|
||||||
|
contract_schema_ref: null
|
||||||
|
contract_schema_status: NOT_IMPLEMENTED_DRAFT_ONLY
|
||||||
|
owner: Stage_2_workflow_maintainer
|
||||||
|
|
||||||
|
implementation_status: FIXED_ASSETS_PRESENT_ADAPTER_OPEN
|
||||||
|
specification_status: DRAFT_NOT_EXECUTABLE
|
||||||
|
authorization_status: DEV_VALIDATION_ONLY
|
||||||
|
invocation_status: OPEN_EXTERNAL_BACKEND
|
||||||
|
runtime_activation_allowed: false
|
||||||
|
|
||||||
|
strategy_ref: stage_2_optimal_update_strategy_v.4.md
|
||||||
|
sow_ref: S_00_SOW.md
|
||||||
|
canonical_root_ref: Default_Agent/Stage_2_Clean
|
||||||
|
canonical_workflow_ref: >-
|
||||||
|
Default_Agent/Stage_2_Clean/workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
loader_binding_ref: >-
|
||||||
|
Default_Agent/Stage_2_Clean/deployment/stage2_loader_binding.yml
|
||||||
|
loader_ref: Default_Agent/Stage_2_Clean/release_ops/stage2_loader.py
|
||||||
|
runtime_ref: Default_Agent/Stage_2_Clean/runtime/s2_00_ingress.py
|
||||||
|
release_ref: Default_Agent/Stage_2_Clean/manifest/stage2_release.json
|
||||||
|
|
||||||
|
source_of_truth_order:
|
||||||
|
- Default_Agent/Stage_2_Clean/manifest/stage2_release.json
|
||||||
|
- Default_Agent/Stage_2_Clean/deployment/stage2_loader_binding.yml
|
||||||
|
- Default_Agent/Stage_2_Clean/workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
canonical_contract_is_imported_not_copied: true
|
||||||
|
duplicated_runtime_logic_allowed: false
|
||||||
|
duplicated_hash_binding_allowed: false
|
||||||
|
legacy_runtime_dependencies: []
|
||||||
|
old_stage2_fallbacks: []
|
||||||
|
stage1_new_required_outputs: []
|
||||||
|
|
||||||
|
Stages:
|
||||||
|
- name: S2_00
|
||||||
|
description: >-
|
||||||
|
검증된 host adapter가 canonical stage2_loader.py만 호출하고, loader가
|
||||||
|
release·binding·asset closure를 검증한 뒤 C00→C05→C10→C15 fixed runtime을
|
||||||
|
수행하도록 하는 단일 deterministic stage. O-06 미해결 상태에서는 downstream을
|
||||||
|
스케줄하지 않으며 빈 tasks를 성공 no-op으로 해석해서는 안 된다.
|
||||||
|
prevs: []
|
||||||
|
nexts: []
|
||||||
|
tasks: []
|
||||||
|
|
||||||
|
x_activation_gate:
|
||||||
|
open_id: O-06
|
||||||
|
status: OPEN_EXTERNAL_BACKEND
|
||||||
|
runtime_activation_allowed: false
|
||||||
|
empty_tasks_meaning: NON_EXECUTABLE_CONTRACT_NOT_SUCCESSFUL_NOOP
|
||||||
|
blocker_reason: >-
|
||||||
|
현재 확인된 Agent Script 문법에는 release-bound 외부 고정 .py를 직접 호출하는
|
||||||
|
native task primitive가 없다. Direct MCP, code-executor, shell, 인라인 Python,
|
||||||
|
또는 확인되지 않은 tool name으로 우회하지 않는다.
|
||||||
|
allowed_until_closed:
|
||||||
|
- STATIC_CONTRACT_VALIDATION
|
||||||
|
- LOADER_VALIDATE_ONLY
|
||||||
|
- DEV_FIXTURE_TEST_HARNESS
|
||||||
|
forbidden_until_closed:
|
||||||
|
- AGENTBACKEND_CASE_RUN_INVOCATION
|
||||||
|
- S2_10_HANDOFF
|
||||||
|
- S2_40_STATUS_ONLY_HANDOFF
|
||||||
|
- SUBSET_CANARY_EXECUTION
|
||||||
|
- PRODUCTION_EXECUTION
|
||||||
|
required_closure_evidence:
|
||||||
|
- BACKEND_OWNER_APPROVED_FIXED_ENTRYPOINT_ADAPTER_SYNTAX
|
||||||
|
- LIVE_LOADER_INVOCATION_RECEIPT
|
||||||
|
- LOADER_BYPASS_NEGATIVE_TEST_PASS
|
||||||
|
- USER_WORKSPACE_CONTEXT_BINDING_PASS
|
||||||
|
activation_patch_contract:
|
||||||
|
replacement_mode: ATOMIC_NATIVE_EXECUTABLE_PROJECTION
|
||||||
|
draft_host_registry_policy: REJECT_IMPORT_AND_EXECUTION
|
||||||
|
draft_rejection_code: EMPTY_TASK_STAGE_REJECTED
|
||||||
|
executable_projection_allowed_top_level_fields_only: true
|
||||||
|
executable_projection_must_remove_extension_fields:
|
||||||
|
- Agent.metadata
|
||||||
|
- Agent.Stages[0].x_activation_gate
|
||||||
|
- Agent.Stages[0].x_s2_00_contract
|
||||||
|
executable_projection_task_count: 1
|
||||||
|
executable_projection_task_role: >-
|
||||||
|
NATIVE_LOADER_INVOKE_RECEIPT_VALIDATE_AND_EXCLUSIVE_DISPATCH
|
||||||
|
executable_projection_graph_owner: ONE_ATOMIC_APPROVED_HOST_PRIMITIVE
|
||||||
|
executable_projection_internal_semantics:
|
||||||
|
- INVOKE_BOUND_STAGE2_LOADER
|
||||||
|
- VERIFY_PROFILE_SPECIFIC_SINGLE_LOADER_RECEIPT
|
||||||
|
- VERIFY_ROUTE_STATUS_AND_ARTIFACT_HASH_BINDING
|
||||||
|
- DISPATCH_EXACTLY_ONE_DOWNSTREAM_OR_FAIL_ZERO_DOWNSTREAM
|
||||||
|
stage_level_unconditional_nexts_after_activation: []
|
||||||
|
exclusive_downstream_handoffs:
|
||||||
|
- S2_10
|
||||||
|
- S2_40_STATUS_ONLY
|
||||||
|
s2_10_edge_requires:
|
||||||
|
- LOADER_INVOKE_SUCCESS
|
||||||
|
- ROUTE_IN_TO_S2_10_OR_TO_S2_10_WITH_ISSUES
|
||||||
|
- IMMUTABLE_EXECUTABLE_CLUSTER_SLICE_AND_BUNDLE_ONLY
|
||||||
|
s2_40_status_only_edge_requires:
|
||||||
|
- LOADER_INVOKE_SUCCESS
|
||||||
|
- ROUTE_EQUALS_TO_S2_40_STATUS_ONLY
|
||||||
|
- EXACT_FIVE_DIAGNOSTIC_ARTIFACTS_ONLY
|
||||||
|
both_downstream_edges_same_run_allowed: false
|
||||||
|
required_post_patch_evidence:
|
||||||
|
- AGENTBACKEND_PARSE_CONSTRUCT_PASS
|
||||||
|
- EXACTLY_ONE_NATIVE_LOADER_TASK_PASS
|
||||||
|
- ATOMIC_INVOKE_VALIDATE_EXCLUSIVE_DISPATCH_PASS
|
||||||
|
- EMPTY_TASK_DRAFT_REJECTION_PASS
|
||||||
|
- EXECUTABLE_AGENT_SCRIPT_SELF_HASH_PASS
|
||||||
|
- LOADER_RECEIPT_SCHEMA_STRICT_PASS
|
||||||
|
- RUNTIME_STDOUT_EXACTLY_ONE_JSON_PASS
|
||||||
|
- ROUTE_STATUS_ARTIFACT_HASH_BINDING_PASS
|
||||||
|
- MALFORMED_EXTRA_MISSING_RECEIPT_ZERO_DOWNSTREAM_PASS
|
||||||
|
- ROUTE_MUTUAL_EXCLUSION_AND_AFFECTED_SCOPE_CONFORMANCE_PASS
|
||||||
|
- TIMEOUT_RETRY_OWNERSHIP_CONFORMANCE_PASS
|
||||||
|
release_rebind_required: true
|
||||||
|
|
||||||
|
x_s2_00_contract:
|
||||||
|
canonical_import:
|
||||||
|
mode: RELEASE_BOUND_EXACT_REFERENCE
|
||||||
|
workflow_ref: workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
workflow_id: S2_00
|
||||||
|
workflow_schema_version: stage2_workflow_contract.v1
|
||||||
|
loader_ref: release_ops/stage2_loader.py
|
||||||
|
binding_ref: deployment/stage2_loader_binding.yml
|
||||||
|
runtime_ref: runtime/s2_00_ingress.py
|
||||||
|
release_ref: manifest/stage2_release.json
|
||||||
|
runtime_logic_override_allowed: false
|
||||||
|
input_output_override_allowed: false
|
||||||
|
directory_scan_allowed: false
|
||||||
|
glob_fallback_allowed: false
|
||||||
|
fuzzy_basename_allowed: false
|
||||||
|
|
||||||
|
host_adapter_slot:
|
||||||
|
primitive_name: null
|
||||||
|
primitive_schema: null
|
||||||
|
native_task_definition: null
|
||||||
|
status: OPEN_EXTERNAL_BACKEND
|
||||||
|
required_semantics:
|
||||||
|
loader_only_invocation: true
|
||||||
|
direct_runtime_invocation_allowed: false
|
||||||
|
shell: false
|
||||||
|
arbitrary_command_allowed: false
|
||||||
|
arbitrary_executable_allowed: false
|
||||||
|
arbitrary_source_code_allowed: false
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
caller_selected_output_root_allowed: false
|
||||||
|
user_workspace_context_forwarding_required: true
|
||||||
|
byte_preserving_workspace_transport_required: true
|
||||||
|
loader_receipt_capture_required: true
|
||||||
|
runtime_stdout_capture_required: true
|
||||||
|
runtime_stdout_strict_single_json_required: true
|
||||||
|
runtime_extra_or_missing_json_allowed: false
|
||||||
|
runtime_returncode_zero_required: true
|
||||||
|
runtime_result_ok_true_required: true
|
||||||
|
prohibited_substitutes:
|
||||||
|
- INLINE_PYTHON_CODE_EXECUTOR
|
||||||
|
- DIRECT_RUNTIME_S2_00_INGRESS_CALL
|
||||||
|
- TEXT_NORMALIZING_RAW_DIGEST_TRANSPORT
|
||||||
|
- UNVERIFIED_MCP_TOOL_OR_ENDPOINT
|
||||||
|
single_loader_receipt_contract:
|
||||||
|
output_object_count: 1
|
||||||
|
current_schema_ref: schemas/deployment.schema.json#/$defs/loader_receipt
|
||||||
|
current_schema_version: stage2_loader_receipt.v1
|
||||||
|
required_case_schema_version: stage2_loader_receipt.v2
|
||||||
|
binding_status: PENDING_LOADER_AND_SCHEMA_UPGRADE
|
||||||
|
sole_envelope_writer: release_ops/stage2_loader.py
|
||||||
|
common_required_fields:
|
||||||
|
- schema_version
|
||||||
|
- loader_id
|
||||||
|
- workflow_id
|
||||||
|
- mode
|
||||||
|
- request_digest
|
||||||
|
- run_id
|
||||||
|
- attempt_id
|
||||||
|
- argv_digest
|
||||||
|
- release_class
|
||||||
|
- release_digest
|
||||||
|
- binding_digest
|
||||||
|
- asset_validation
|
||||||
|
- invocation_status
|
||||||
|
- backend_session_binding_digest
|
||||||
|
- workspace_mapping_digest
|
||||||
|
- transport_adapter_id
|
||||||
|
- transport_adapter_sha256
|
||||||
|
- byte_preserving_transport_verified
|
||||||
|
- shell
|
||||||
|
mode_contracts:
|
||||||
|
VALIDATE_ONLY:
|
||||||
|
required_fields:
|
||||||
|
- pending_bindings
|
||||||
|
- pending_binding_count
|
||||||
|
forbidden_fields:
|
||||||
|
- run_binding_digest
|
||||||
|
- runtime_returncode
|
||||||
|
- runtime_result_digest
|
||||||
|
- ingress_route
|
||||||
|
- ingress_status_sha256
|
||||||
|
- publish_status
|
||||||
|
INVOKE:
|
||||||
|
required_fields:
|
||||||
|
- run_binding_digest
|
||||||
|
- runtime_returncode
|
||||||
|
- runtime_result_digest
|
||||||
|
- ingress_route
|
||||||
|
- ingress_status_sha256
|
||||||
|
- publish_status
|
||||||
|
- pending_bindings
|
||||||
|
- pending_binding_count
|
||||||
|
required_values:
|
||||||
|
pending_binding_count: 0
|
||||||
|
runtime_returncode: 0
|
||||||
|
publish_status: PUBLISHED_OR_IDEMPOTENT_REVALIDATED
|
||||||
|
host_binding_fields_source: APPROVED_NATIVE_ADAPTER_SESSION_EVIDENCE
|
||||||
|
invocation_status_is_profile_specific: true
|
||||||
|
malformed_extra_missing_or_noop_disposition: FAIL_WITH_ZERO_DOWNSTREAM
|
||||||
|
loader_update_and_schema_reseal_required: true
|
||||||
|
|
||||||
|
loader_request_contract:
|
||||||
|
fixed_values:
|
||||||
|
workflow_id: S2_00
|
||||||
|
release_ref: manifest/stage2_release.json
|
||||||
|
backend_bound_values:
|
||||||
|
- argument_id: run_id
|
||||||
|
source: RUN_TUPLE_BINDING
|
||||||
|
raw_user_value_allowed: false
|
||||||
|
- argument_id: attempt_id
|
||||||
|
source: TRANSIENT_RETRY_BINDING
|
||||||
|
canonical_id_input_allowed: false
|
||||||
|
- argument_id: user_context_sha256
|
||||||
|
source: BACKEND_SESSION
|
||||||
|
raw_user_id_persist_allowed: false
|
||||||
|
- argument_id: workspace_context_sha256
|
||||||
|
source: BACKEND_SESSION
|
||||||
|
raw_workspace_id_persist_allowed: false
|
||||||
|
- argument_id: stage1_run_root_ref
|
||||||
|
source: BACKEND_WORKSPACE_TRANSPORT
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
- argument_id: stage1_deployment_root_ref
|
||||||
|
source: BACKEND_WORKSPACE_TRANSPORT
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
deployed_contents_must_match: >-
|
||||||
|
manifest/stage2_release.json#/dependency_locks/stage1
|
||||||
|
allowed_flags_in_order:
|
||||||
|
- --workflow-id
|
||||||
|
- --release-ref
|
||||||
|
- --run-id
|
||||||
|
- --attempt-id
|
||||||
|
- --user-context-sha256
|
||||||
|
- --workspace-context-sha256
|
||||||
|
- --stage1-run-root-ref
|
||||||
|
- --stage1-deployment-root-ref
|
||||||
|
positional_argument_count: 0
|
||||||
|
invocation_profiles:
|
||||||
|
DEV_VALIDATE_ONLY:
|
||||||
|
base_flags_plus:
|
||||||
|
- --validate-only
|
||||||
|
expected_status:
|
||||||
|
- VALIDATED
|
||||||
|
- VALIDATED_WITH_PENDING_BINDINGS
|
||||||
|
case_runtime_success_allowed: false
|
||||||
|
downstream_handoff_allowed: false
|
||||||
|
CASE_INVOKE:
|
||||||
|
additional_flags: []
|
||||||
|
validate_only_flag_allowed: false
|
||||||
|
runtime_and_publish_receipt_required: true
|
||||||
|
downstream_handoff_allowed_only_after_receipt_pass: true
|
||||||
|
CASE_INVOKE_NO_DOWNSTREAM_CANARY:
|
||||||
|
additional_flags: []
|
||||||
|
isolated_workspace_required: true
|
||||||
|
route_dispatch_allowed: false
|
||||||
|
purpose: VERIFY_NON_DEV_ADMISSION_AND_SINGLE_RECEIPT_BEFORE_ROUTING
|
||||||
|
negative_test_required: VALIDATE_ONLY_CANNOT_SATISFY_CASE_TASK_SUCCESS
|
||||||
|
|
||||||
|
release_and_integrity_gate:
|
||||||
|
trust_boundary: release_ops/stage2_loader.py
|
||||||
|
loader_bypass_allowed: false
|
||||||
|
binding_id: S2-BINDING-S2_00-V1
|
||||||
|
current_release_class: DEV_FIXTURE_RELEASE
|
||||||
|
current_release_status: DRAFT_NOT_EXECUTABLE
|
||||||
|
current_authorization_status: DEV_VALIDATION_ONLY
|
||||||
|
validate_only_expected_status: VALIDATED_WITH_PENDING_BINDINGS
|
||||||
|
signed_canary_admission_required: true
|
||||||
|
signed_production_admission_required: true
|
||||||
|
module_acceptance_is_production_release: false
|
||||||
|
required_checks:
|
||||||
|
- RELEASE_AND_BINDING_STRICT_PARSE
|
||||||
|
- AUTHORING_ROOT_AND_WORKSPACE_ROOT_CONFINEMENT
|
||||||
|
- WORKFLOW_LOADER_RUNTIME_SCHEMA_RAW_HASH_CLOSURE
|
||||||
|
- MODULE_MANIFEST_AND_RELEASE_ORACLE_CROSS_BINDING
|
||||||
|
- STAGE1_DEPENDENCY_LOCK_CLOSURE
|
||||||
|
- FIXED_ARGV_CONTRACT
|
||||||
|
- LEGACY_FALLBACK_EMPTY
|
||||||
|
- EXTERNAL_NETWORK_DISABLED
|
||||||
|
open_or_pending_evidence:
|
||||||
|
- O-06_AGENTBACKEND_NATIVE_ADAPTER
|
||||||
|
- O-07_SIGNED_RELEASE_ADMISSION
|
||||||
|
- STAGE1_COMPLETION_SEAL
|
||||||
|
- DETACHED_RELEASE_SIGNATURE
|
||||||
|
o06_closure_scope: LIVE_VALIDATE_ONLY_ADAPTER_RECEIPT
|
||||||
|
case_runtime_activation_requires:
|
||||||
|
- O_06_CLOSED
|
||||||
|
- O_07_CLOSED
|
||||||
|
- RELEASE_CLASS_IS_SUBSET_CANARY_OR_PRODUCTION
|
||||||
|
- RELEASE_STATUS_IS_ADMITTED
|
||||||
|
- SIGNED_NON_DEV_ADMISSION_VERIFIER_BOUND_AND_TESTED
|
||||||
|
- LOADER_NON_DEV_RELEASE_CLASS_SUPPORT_BOUND_AND_RESEALED
|
||||||
|
- PENDING_BINDING_COUNT_ZERO
|
||||||
|
- STAGE1_COMPLETION_SEAL_VALID
|
||||||
|
- DETACHED_RELEASE_SIGNATURE_VALID
|
||||||
|
- LOADER_RECEIPT_V2_SCHEMA_STRICT_PASS
|
||||||
|
- RUNTIME_STDOUT_EXACTLY_ONE_JSON_PASS
|
||||||
|
- ROUTE_STATUS_ARTIFACT_HASH_BINDING_PASS
|
||||||
|
- MALFORMED_EXTRA_MISSING_RECEIPT_ZERO_DOWNSTREAM_PASS
|
||||||
|
- ROUTE_MUTUAL_EXCLUSION_AND_AFFECTED_SCOPE_CONFORMANCE_PASS
|
||||||
|
- CASE_INVOKE_NO_DOWNSTREAM_CANARY_PASS
|
||||||
|
- AUTHENTICATED_WORKSPACE_MAPPING_BINDING_PASS
|
||||||
|
- CROSS_WORKSPACE_TAMPER_AND_COLLISION_NEGATIVE_TEST_PASS
|
||||||
|
- LOADER_600_SECOND_PROCESS_TREE_TIMEOUT_PASS
|
||||||
|
- RETRY_POLICY_AND_NEW_ATTEMPT_ID_CONFORMANCE_PASS
|
||||||
|
- EXPLICIT_RELATION_ADAPTER_BOUND_OR_HARD_JOIN_DISABLED_PASS
|
||||||
|
- LIVE_CASE_INVOKE_SINGLE_RECEIPT_PASS
|
||||||
|
user_workspace_transport_receipt_contract:
|
||||||
|
backend_session_hash_exact_equality_required: true
|
||||||
|
workspace_mapping_digest_required: true
|
||||||
|
transport_adapter_identity_and_hash_required: true
|
||||||
|
byte_preserving_capability_required: true
|
||||||
|
raw_user_or_workspace_id_persistence_allowed: false
|
||||||
|
tamper_negative_test_required: true
|
||||||
|
|
||||||
|
agent_script_self_binding_contract:
|
||||||
|
asset_id: AGENT-SCRIPT-S2_00
|
||||||
|
authoring_source_base: MAIN_WORKING_DIRECTORY
|
||||||
|
authoring_source_path: Stage_2_S2_00.yml
|
||||||
|
executable_projection_path: agent_scripts/Stage_2_S2_00.yml
|
||||||
|
canonical_path_root: Default_Agent/Stage_2_Clean
|
||||||
|
schema_id: stage2_agent_loader_adapter_contract.v1-draft
|
||||||
|
schema_ref: null
|
||||||
|
required_native_schema_id: stage2_agent_loader_adapter_contract.v1
|
||||||
|
binding_status: PENDING_O06_NATIVE_PROJECTION
|
||||||
|
required_manifest_targets:
|
||||||
|
- deployment/stage2_loader_binding.yml
|
||||||
|
- manifest/module_manifest.json
|
||||||
|
- manifest/stage2_release.json
|
||||||
|
exact_raw_sha256_required_before_activation: true
|
||||||
|
current_authoring_projection_is_release_asset: false
|
||||||
|
bind_authoring_source_directly_allowed: false
|
||||||
|
executable_projection_must_be_atomically_generated_and_resealed: true
|
||||||
|
|
||||||
|
fixed_runtime_contract:
|
||||||
|
runtime_ref: runtime/s2_00_ingress.py
|
||||||
|
only_direct_caller: release_ops/stage2_loader.py
|
||||||
|
component_order:
|
||||||
|
- C00
|
||||||
|
- C05
|
||||||
|
- C10
|
||||||
|
- C15
|
||||||
|
component_responsibilities:
|
||||||
|
C00: EXACT_RESOLVE_BOUNDED_SNAPSHOT_STRICT_VALIDATE_SOURCE_LOCK
|
||||||
|
C05: INDEPENDENT_MULTISET_AND_REVIEW_CONSERVATION
|
||||||
|
C10: SOURCE_PRESERVING_CONTEXT_CROSSWALK_BASE_ISSUE
|
||||||
|
C15: CLAIM_NEUTRAL_CLUSTER_SLICE_BUNDLE_AND_ATOMIC_PUBLISH
|
||||||
|
llm_calls_allowed: false
|
||||||
|
external_network_access_allowed: false
|
||||||
|
dynamic_code_allowed: false
|
||||||
|
runtime_package_install_allowed: false
|
||||||
|
|
||||||
|
snapshot_and_parse_policy:
|
||||||
|
transport_class: RELEASE_BOUND_BYTE_PRESERVING_WORKSPACE_TRANSPORT
|
||||||
|
text_normalizing_transport_for_raw_digest_allowed: false
|
||||||
|
same_descriptor_one_read_required: true
|
||||||
|
raw_hash_parse_and_schema_use_same_buffer: true
|
||||||
|
strict_utf8_json_required: true
|
||||||
|
duplicate_json_key_allowed: false
|
||||||
|
nan_or_infinity_allowed: false
|
||||||
|
trailing_extra_object_allowed: false
|
||||||
|
resource_limits_source: manifest/stage2_release.json
|
||||||
|
snapshot_seal_before_and_after_required: true
|
||||||
|
source_snapshot_change_disposition: DISCARD_ATTEMPT
|
||||||
|
|
||||||
|
stage1_ingress_view:
|
||||||
|
authority: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml#/Agent/Stages/0/orchestration_contract/input_contract
|
||||||
|
default_exact_input_count: 16
|
||||||
|
signal_manifest_expansion_family_count: 1
|
||||||
|
default_exact_paths:
|
||||||
|
- evidence_indexed.json
|
||||||
|
- evidence_event_candidates.json
|
||||||
|
- client_goal.json
|
||||||
|
- routing/domain_screening.json
|
||||||
|
- routing/domain_activation_manifest.json
|
||||||
|
- quality_gates/B1_evidence_indexed_gate.json
|
||||||
|
- quality_gates/B2_event_candidates_gate.json
|
||||||
|
- quality_gates/stage1_part1_soft_gate_handoff.json
|
||||||
|
- BO.json
|
||||||
|
- signals/signal_manifest.json
|
||||||
|
- quality_gates/stage1_part2_review_handoff.json
|
||||||
|
- legal_effect_structures.json
|
||||||
|
- quality_gates/stage1_part3_review_handoff.json
|
||||||
|
- Fact_Ledger_base.json
|
||||||
|
- stage1_tmp/fact_ledger/fact_ledger_writer_report.json
|
||||||
|
- quality_gates/stage1_part4_review_handoff.json
|
||||||
|
signal_manifest_expansion_rule: signals/<signal_manifest.files[i].path>
|
||||||
|
optional_fields_only:
|
||||||
|
- client_goal.json#/defendant_target_matrix
|
||||||
|
- client_goal.json#/parties/defendants/*/asset_status
|
||||||
|
optional_fields_as_sibling_files_allowed: false
|
||||||
|
stage1_contract_manifest_default_required: false
|
||||||
|
stage1_new_production_task_required: false
|
||||||
|
deployment_dependency_lock_ref: manifest/stage2_release.json#/dependency_locks/stage1
|
||||||
|
expected_stage1_deployment_path_count: 55
|
||||||
|
|
||||||
|
signal_and_conservation_policy:
|
||||||
|
signal_downstream_read_set_exact:
|
||||||
|
- ALL
|
||||||
|
manifest_file_order_preserved: true
|
||||||
|
semantic_file_kinds:
|
||||||
|
- canonical
|
||||||
|
- domain_signal
|
||||||
|
integrity_only_file_kinds:
|
||||||
|
- compatibility_view
|
||||||
|
signal_file_and_record_equations_separate: true
|
||||||
|
signal_record_occurrence_identity:
|
||||||
|
- manifest_transaction_id
|
||||||
|
- file_path
|
||||||
|
- record_ordinal
|
||||||
|
- signal_id
|
||||||
|
dual_sg01_raw_hashes_preserved_separately: true
|
||||||
|
dual_sg01_semantic_projection_comparison_required: true
|
||||||
|
upstream_pass_trusted_without_recompute: false
|
||||||
|
bo_fact_ledger_set_cardinality_multiset_required: true
|
||||||
|
review_occurrence_single_partition_required: true
|
||||||
|
preserve_stage1_ids_codepoint_exactly: true
|
||||||
|
raw_stage1_id_normalization_allowed: false
|
||||||
|
fact_ledger_current_v8_required_keys:
|
||||||
|
- domain_effects
|
||||||
|
- calculation_requests
|
||||||
|
required_independent_conservation_checks:
|
||||||
|
- BO_FACT_LEDGER_SOURCE_BO_SET_CARDINALITY_MULTISET
|
||||||
|
- FACT_ID_PRODUCER_SEQUENCE_DUPLICATE_AND_MISSING
|
||||||
|
- LES_DECLARED_ACTUAL_DOMAIN_TYPE_ROUTE_AND_BO_REVERSE_JOIN
|
||||||
|
- EVIDENCE_EVENT_FINAL_ID_GATE_EXCEPTION_AND_DANGLING_REF
|
||||||
|
- SIGNAL_FILE_MULTISET_RAW_HASH_COUNT_AND_PROJECTION_LINEAGE
|
||||||
|
- SIGNAL_SEMANTIC_RECORD_OCCURRENCE_MULTISET
|
||||||
|
- EXPECTED_RUNNABLE_CONFIG_AND_ACTIVE_DOMAIN_SIGNAL_CLOSURE
|
||||||
|
- P1_P4_PATH_WRAPPER_DIGEST_RECEIPT_AND_WRITER_REPORT
|
||||||
|
- EVERY_INPUT_ALLOWLIST_PRODUCER_SCHEMA_HASH_RUN_TRANSACTION
|
||||||
|
schema_pass_substitutes_for_semantic_conservation_pass: false
|
||||||
|
review_partition_contract:
|
||||||
|
partitions:
|
||||||
|
- SUPPORTED
|
||||||
|
- CONDITIONAL
|
||||||
|
- UNRESOLVED
|
||||||
|
- EXCLUDED
|
||||||
|
- UNMAPPED
|
||||||
|
pairwise_disjoint: true
|
||||||
|
exhaustive_over_raw_review_occurrences: true
|
||||||
|
unknown_upstream_status_disposition: UNMAPPED
|
||||||
|
legacy_resolved_alias_target: SUPPORTED
|
||||||
|
legacy_resolved_alias_requires_release_bound_adapter: true
|
||||||
|
inferred_supported_promotion_allowed: false
|
||||||
|
blocked_review_item_limits_affected_ready_scope_only: true
|
||||||
|
|
||||||
|
affected_scope_policy:
|
||||||
|
technical_disposition_enum:
|
||||||
|
- AVAILABLE
|
||||||
|
- AVAILABLE_WITH_ISSUES
|
||||||
|
- UNAVAILABLE
|
||||||
|
every_occurrence_has_exactly_one_disposition: true
|
||||||
|
unavailable_occurrence_receipt_preserved: true
|
||||||
|
impact_scope_enum:
|
||||||
|
- GLOBAL
|
||||||
|
- CLUSTER
|
||||||
|
- PARTY_CONTEXT
|
||||||
|
- OBJECT_CONTEXT
|
||||||
|
- FACT
|
||||||
|
- EVIDENCE
|
||||||
|
- SIGNAL
|
||||||
|
- REVIEW_ITEM
|
||||||
|
occurrence_disposition_required_fields:
|
||||||
|
- scope_technical_disposition
|
||||||
|
- impact_scope
|
||||||
|
- scope_refs
|
||||||
|
- source_contract_row_refs
|
||||||
|
- reason_codes
|
||||||
|
- downstream_allowed_actions
|
||||||
|
minimum_coherent_package_predicate:
|
||||||
|
- SAME_RUN_FACT_AND_BO_IDENTITY_UNIVERSE_RESOLVABLE
|
||||||
|
- ALL_AVAILABLE_INCOMPLETE_AND_UNAVAILABLE_SCOPES_ENUMERATED
|
||||||
|
- EVERY_USED_AND_UNUSABLE_SOURCE_EXPLAINED_IN_MANIFEST_AND_ISSUES
|
||||||
|
- AT_LEAST_ONE_SCHEMA_VALID_EXECUTABLE_CLUSTER_SLICE_AND_BUNDLE
|
||||||
|
evidence_gap_or_legal_uncertainty_is_global_abort: false
|
||||||
|
non_global_abort_reason_classes:
|
||||||
|
- EVIDENCE_OR_EVENT_GATE_UNCERTAIN
|
||||||
|
- EVENT_DATE_UNRESOLVED
|
||||||
|
- CLIENT_GOAL_OR_OPTIONAL_TARGET_ASSET_ABSENT
|
||||||
|
- PARTIAL_DOMAIN_CONFIG_GAP
|
||||||
|
- UNRESOLVED_CONDITIONAL_EXCLUDED_OR_UNMAPPED_REVIEW_ITEM
|
||||||
|
- RECOVERABLE_JOIN_GAP
|
||||||
|
- DOWNSTREAM_CASE_TYPE_RULE_OR_CORPUS_RELEASE_ISSUE
|
||||||
|
- CACHE_MISS_OR_CACHE_SERVICE_UNAVAILABLE
|
||||||
|
closed_route_decision_table:
|
||||||
|
TO_S2_10:
|
||||||
|
requires_all:
|
||||||
|
- CORE_ANCHORS_AND_CONSERVATION_CONSISTENT
|
||||||
|
- EXECUTABLE_CLUSTER_IDS_NONEMPTY
|
||||||
|
- NO_RECOVERABLE_SCOPE_ISSUE_REQUIRING_WITH_ISSUES_LABEL
|
||||||
|
TO_S2_10_WITH_ISSUES:
|
||||||
|
requires_all:
|
||||||
|
- MINIMUM_COHERENT_PACKAGE_POSSIBLE
|
||||||
|
- RECOVERABLE_SCOPE_OR_REVIEW_ISSUES_EXIST
|
||||||
|
- EXECUTABLE_CLUSTER_IDS_NONEMPTY
|
||||||
|
TO_S2_40_STATUS_ONLY:
|
||||||
|
requires_any:
|
||||||
|
- MINIMUM_COHERENT_PACKAGE_IMPOSSIBLE
|
||||||
|
- GLOBAL_RUN_OR_TRANSACTION_IDENTITY_CONFLICT
|
||||||
|
- TRUSTED_SOURCE_UNIVERSE_CANNOT_BE_ENUMERATED
|
||||||
|
- NO_CONSISTENT_EXECUTABLE_OR_RESIDUAL_SLICE
|
||||||
|
- RESIDUAL_ONLY_AND_EXECUTABLE_CLUSTER_IDS_EMPTY
|
||||||
|
- ALL_BUNDLE_COHORTS_NON_EXECUTABLE
|
||||||
|
|
||||||
|
context_and_cluster_policy:
|
||||||
|
source_ref_required_for_every_context_row: true
|
||||||
|
stage1_canonical_id_preferred: true
|
||||||
|
occurrence_context_id_only_when_canonical_id_absent: true
|
||||||
|
party_object_fuzzy_merge_allowed: false
|
||||||
|
legal_conclusion_allowed: false
|
||||||
|
case_type_id_creation_allowed: false
|
||||||
|
claim_option_id_creation_allowed: false
|
||||||
|
atomic_claim_id_creation_allowed: false
|
||||||
|
claim_group_id_creation_allowed: false
|
||||||
|
slot_crosswalk_contract:
|
||||||
|
required_link_chain:
|
||||||
|
- FACT_TO_BO_PARTY_OBJECT
|
||||||
|
- BO_TO_LES_DOMAIN_TYPE_ROUTE
|
||||||
|
- LES_TO_SIGNAL_CALCULATION_AND_LAW_VERSION
|
||||||
|
- FACT_TO_ELEMENT_OPPOSING_DEFENSE_REBUTTAL_SLOT
|
||||||
|
- FACT_TO_EVIDENCE_STATUS_EVIDENCE_AND_EVENT
|
||||||
|
- FACT_TO_REVIEW_CLIENT_GOAL_AND_CLIENT_INSTRUCTION
|
||||||
|
slot_state_enum:
|
||||||
|
- SUPPORTED
|
||||||
|
- CONDITIONAL
|
||||||
|
- UNRESOLVED
|
||||||
|
- NOT_APPLICABLE
|
||||||
|
- UNEVALUABLE
|
||||||
|
config_gap_disposition: UNEVALUABLE
|
||||||
|
missing_stage1_rebuttal_or_canonical_slot_creation_allowed: false
|
||||||
|
proposed_slot_is_canonical_slot: false
|
||||||
|
proposed_slot_requires:
|
||||||
|
- authority_ref
|
||||||
|
- taxonomy_difference
|
||||||
|
- review_disposition
|
||||||
|
corpus_element_may_replace_stage1_slot_without_approved_crosswalk: false
|
||||||
|
party_and_title_context_contract:
|
||||||
|
separate_fields:
|
||||||
|
- plaintiff_title_chain
|
||||||
|
- defendant_role
|
||||||
|
- liability_form
|
||||||
|
- client_instruction
|
||||||
|
- recovery_information
|
||||||
|
- completeness_status
|
||||||
|
- source_refs
|
||||||
|
client_no_sue_means_claim_nonexistence: false
|
||||||
|
recovery_risk_means_claim_nonexistence: false
|
||||||
|
hard_join_predicates:
|
||||||
|
- SAME_BO_ID
|
||||||
|
- LES_SOURCE_BO_ID
|
||||||
|
- SAME_EVIDENCE_REF
|
||||||
|
- SAME_EVENT_REF
|
||||||
|
- APPROVED_EXPLICIT_CASE_RELATION
|
||||||
|
approved_explicit_case_relation_contract:
|
||||||
|
adapter_id: S2A-FACT-EXPLICIT-RELATION-V1
|
||||||
|
schema_ref: null
|
||||||
|
required_release_pointer: >-
|
||||||
|
manifest/stage2_release.json#/relation_adapters/S2A-FACT-EXPLICIT-RELATION-V1
|
||||||
|
allowed_logical_input_id: fact_ledger_base
|
||||||
|
allowed_json_pointer_patterns:
|
||||||
|
- /facts/*/relations/*
|
||||||
|
- /facts/*/explicit_relations/*
|
||||||
|
- /facts/*/candidate_relations/*
|
||||||
|
allowed_relation_kinds:
|
||||||
|
- claim_precondition
|
||||||
|
- accessory_of
|
||||||
|
- incompatible_with
|
||||||
|
- EXPLICIT_DEPENDENCY
|
||||||
|
- EXPLICIT_CASE_RELATION
|
||||||
|
exact_source_relation_required: true
|
||||||
|
binding_status: UNBOUND_BLOCKS_EXPLICIT_HARD_JOIN
|
||||||
|
unbound_disposition: >-
|
||||||
|
APPROVED_EXPLICIT_CASE_RELATION을 hard join에서 제외하고 issue로 보존한다.
|
||||||
|
activation_evidence_required:
|
||||||
|
- EXPLICIT_RELATION_ADAPTER_SCHEMA_BOUND
|
||||||
|
- EXPLICIT_RELATION_ADAPTER_RELEASE_POINTER_PASS
|
||||||
|
- UNAPPROVED_RELATION_HARD_JOIN_NEGATIVE_TEST_PASS
|
||||||
|
same_domain_profile_type_route_or_display_value_as_hard_join_allowed: false
|
||||||
|
legal_relation_projection_status: CANDIDATE_ONLY
|
||||||
|
candidate_only_relation_types:
|
||||||
|
- claim_precondition
|
||||||
|
- accessory_of
|
||||||
|
- incompatible_with
|
||||||
|
similarity_only_hard_join_allowed: false
|
||||||
|
domain_registry_depends_on_as_litigation_edge_allowed: false
|
||||||
|
cycles_preserved_as_scc: true
|
||||||
|
executable_and_residual_partitions_disjoint: true
|
||||||
|
|
||||||
|
bundle_policy:
|
||||||
|
plan_only: true
|
||||||
|
prompt_text_generation_allowed: false
|
||||||
|
cache_policy_ref: registry/cache/prompt_cache_policy.yml
|
||||||
|
forbidden_bulk_inputs:
|
||||||
|
- FULL_137_CASE_CATALOG
|
||||||
|
- RAW_CORPUS
|
||||||
|
- ALL_RELIEF_MARKDOWN
|
||||||
|
- ALL_LAW_VALUE_ROWS
|
||||||
|
pii_in_static_prefix_allowed: false
|
||||||
|
cache_miss_or_service_down_is_quality_failure: false
|
||||||
|
prefix_hash_or_pii_failure_scope: COHORT_NON_EXECUTABLE
|
||||||
|
mode_release_mapping:
|
||||||
|
STRUCTURAL_FIXTURE: DEV_FIXTURE_RELEASE
|
||||||
|
SUBSET_CANARY: SUBSET_CANARY_RELEASE
|
||||||
|
PRODUCTION: PRODUCTION_RELEASE
|
||||||
|
structural_fixture_case_run_publish_allowed: false
|
||||||
|
structural_fixture_downstream_route_allowed: false
|
||||||
|
|
||||||
|
output_and_route_contract:
|
||||||
|
output_root_source: LOADER_BOUND_WORKSPACE_MAPPING
|
||||||
|
current_runtime_mapping_status: UNBOUND_FOR_CASE_ACTIVATION
|
||||||
|
current_runtime_mapping_observation: >-
|
||||||
|
runtime currently derives project_root/stage2_runs/<run_id>; authenticated workspace
|
||||||
|
mapping is not yet supplied by a bound native adapter.
|
||||||
|
required_workspace_mapping_contract:
|
||||||
|
source: AUTHENTICATED_BACKEND_WORKSPACE_TRANSPORT
|
||||||
|
opaque_mapping_handle_required: true
|
||||||
|
mapping_digest_required: true
|
||||||
|
stage1_run_and_deployment_roots_same_workspace_required: true
|
||||||
|
output_destination_deterministically_derived_from_mapping_and_run_id: true
|
||||||
|
cross_workspace_collision_and_tamper_negative_test_required: true
|
||||||
|
caller_selected_output_root_allowed: false
|
||||||
|
normal_branch:
|
||||||
|
route_values:
|
||||||
|
- TO_S2_10
|
||||||
|
- TO_S2_10_WITH_ISSUES
|
||||||
|
required_artifacts:
|
||||||
|
- ingress/stage1_input_manifest.json
|
||||||
|
- ingress/intake_report.json
|
||||||
|
- context/case_context.json
|
||||||
|
- context/evidence_inventory.json
|
||||||
|
- context/object_registry.json
|
||||||
|
- context/party_and_title_context.json
|
||||||
|
- context/slot_crosswalk.json
|
||||||
|
- context/cluster_plan.json
|
||||||
|
- context/cluster_slices/<cluster_id>.json
|
||||||
|
- context/bundle_plan.json
|
||||||
|
- review/issue_ledger.base.json
|
||||||
|
- ingress/ingress_status.json
|
||||||
|
technical_diagnostic_allowed: false
|
||||||
|
diagnostic_branch:
|
||||||
|
route_values:
|
||||||
|
- TO_S2_40_STATUS_ONLY
|
||||||
|
exact_artifacts:
|
||||||
|
- ingress/stage1_input_manifest.json
|
||||||
|
- ingress/intake_report.json
|
||||||
|
- ingress/technical_diagnostic.json
|
||||||
|
- review/issue_ledger.base.json
|
||||||
|
- ingress/ingress_status.json
|
||||||
|
context_publish_allowed: false
|
||||||
|
ingress_status_written_last: true
|
||||||
|
whole_tree_atomic_publish_required: true
|
||||||
|
partial_publish_allowed: false
|
||||||
|
downstream_route_after_successful_loader_invoke_only: true
|
||||||
|
normal_route_requires_nonempty_executable_cluster_ids: true
|
||||||
|
final_status_writer: S2_40
|
||||||
|
s2_00_final_status_write_allowed: false
|
||||||
|
|
||||||
|
retry_and_idempotence:
|
||||||
|
timeout_seconds: 600
|
||||||
|
timeout_source: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml#/Agent/Stages/0/orchestration_contract/execution/timeout_seconds
|
||||||
|
timeout_source_is_release_policy: false
|
||||||
|
outer_timeout_owner: APPROVED_NATIVE_HOST_ADAPTER
|
||||||
|
subprocess_timeout_owner: release_ops/stage2_loader.py
|
||||||
|
current_loader_timeout_support: MISSING_BLOCKS_CASE_ACTIVATION
|
||||||
|
process_tree_cancel_on_timeout_required: true
|
||||||
|
retry_policy_ref: manifest/stage2_release.json#/retry_policies/0
|
||||||
|
retry_policy_id: S2-RETRY-TRANSIENT-READ-V1
|
||||||
|
referenced_row_policy_id_equality_required: true
|
||||||
|
retry_policy_literals_duplicated_here: false
|
||||||
|
retryable_class: TRANSIENT_READ_OR_LOCK_ONLY
|
||||||
|
timeout_retryable_only_if_closed_retry_policy_code_present: true
|
||||||
|
timeout_retry_disposition_source: manifest/stage2_release.json#/retry_policies/0
|
||||||
|
per_attempt_timeout_receipt_required: true
|
||||||
|
semantic_or_integrity_failure_retry_allowed: false
|
||||||
|
run_tuple_material:
|
||||||
|
- input_set_digest
|
||||||
|
- stage2_release_digest
|
||||||
|
- algorithm_digest
|
||||||
|
- release_class
|
||||||
|
attempt_id_is_run_tuple_material: false
|
||||||
|
every_retry_requires_new_attempt_id: true
|
||||||
|
same_run_tuple_byte_identical_required: true
|
||||||
|
different_run_tuple_requires_new_run_id: true
|
||||||
|
conflicting_existing_output_overwrite_allowed: false
|
||||||
|
|
||||||
|
prohibitions:
|
||||||
|
llm_provider_field_allowed: false
|
||||||
|
llm_model_field_allowed: false
|
||||||
|
prompt_body_allowed: false
|
||||||
|
inline_python_allowed: false
|
||||||
|
inline_schema_allowed: false
|
||||||
|
direct_runtime_call_allowed: false
|
||||||
|
arbitrary_mcp_endpoint_allowed: false
|
||||||
|
external_network_access_allowed: false
|
||||||
|
directory_scan_allowed: false
|
||||||
|
fuzzy_path_fallback_allowed: false
|
||||||
|
claim_or_case_type_generation_allowed: false
|
||||||
|
final_document_status_seal_or_commit_allowed: false
|
||||||
|
legacy_stage2_v0_v3_dependencies: []
|
||||||
|
old_stage2_runtime_fallbacks: []
|
||||||
|
|
||||||
|
acceptance_boundary:
|
||||||
|
executable_yaml_acceptance_deferred: true
|
||||||
|
defer_reason: O-06_OPEN_EXTERNAL_BACKEND
|
||||||
|
static_checks_required_now:
|
||||||
|
- YAML_STRICT_PARSE
|
||||||
|
- CANONICAL_REFERENCE_PATHS_EXIST
|
||||||
|
- CANONICAL_WORKFLOW_COMPONENT_AND_IO_MATCH
|
||||||
|
- NO_LLM_PROMPT_INLINE_CODE_OR_UNVERIFIED_TOOL
|
||||||
|
- LEGACY_V0_V3_DEPENDENCY_COUNT_ZERO
|
||||||
|
- FIXED_ARGV_MATCHES_LOADER_BINDING
|
||||||
|
- RELEASE_STATUS_REMAINS_DRAFT_NOT_EXECUTABLE
|
||||||
|
- CANONICAL_HASH_AND_JSON_POINTER_DRIFT_TEST_PASS
|
||||||
|
- DRAFT_EMPTY_TASK_HOST_REJECTION_PASS
|
||||||
|
validate_only_adapter_claim_requires:
|
||||||
|
- O_06_CLOSED
|
||||||
|
- NATIVE_ADAPTER_SCHEMA_AND_HASH_BOUND
|
||||||
|
- LIVE_VALIDATE_ONLY_LOADER_RECEIPT_PASS
|
||||||
|
- LOADER_BYPASS_NEGATIVE_TEST_PASS
|
||||||
|
case_runtime_executable_claim_requires:
|
||||||
|
- NATIVE_EXECUTABLE_PROJECTION_PARSE_CONSTRUCT_PASS
|
||||||
|
- EXACTLY_ONE_NATIVE_LOADER_TASK_PASS
|
||||||
|
authoritative_case_activation_prerequisite_ref: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/release_and_integrity_gate/case_runtime_activation_requires
|
||||||
|
all_authoritative_case_activation_prerequisites_required: true
|
||||||
|
canary_or_production_claim_requires:
|
||||||
|
- CASE_RUNTIME_EXECUTABLE_CLAIM_PASS
|
||||||
|
- RELEASE_SCOPE_MATCHES_CASE_RUN
|
||||||
|
- DOWNSTREAM_HANDOFF_MOCK_PASS
|
||||||
|
completion_claim_allowed_now: STATIC_AGENT_ADAPTER_CONTRACT_ONLY
|
||||||
|
|
||||||
|
canonical_view_drift_control:
|
||||||
|
copied_fields_are_non_authoritative_views: true
|
||||||
|
authoritative_contract_hash_source: manifest/stage2_release.json
|
||||||
|
comparison_rows:
|
||||||
|
- contract_id: COMPONENT_ORDER
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/fixed_runtime_contract/component_order
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/component_order
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: FIXED_ARGV_ALLOWED_FLAGS
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/loader_request_contract/allowed_flags_in_order
|
||||||
|
authority_ref: deployment/stage2_loader_binding.yml
|
||||||
|
authority_pointer: /fixed_argv_contract/allowed_flags
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: STAGE1_INPUT_ALLOWLIST
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/stage1_ingress_view/default_exact_paths
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/input_contract
|
||||||
|
comparison_mode: EXACT_PATH_PROJECTION_IN_DECLARED_ORDER
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: NORMAL_OUTPUT_BRANCH
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/output_and_route_contract/normal_branch/required_artifacts
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/output_contract/normal_branch
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: DIAGNOSTIC_OUTPUT_BRANCH
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/output_and_route_contract/diagnostic_branch/exact_artifacts
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/output_contract/diagnostic_branch
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: ROUTE_ENUMS
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/output_and_route_contract
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/routing
|
||||||
|
comparison_mode: ROUTE_VALUE_AND_EXCLUSIVE_HANDOFF_PROJECTION_EXACT
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: RETRY_POLICY
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/retry_and_idempotence
|
||||||
|
authority_ref: manifest/stage2_release.json
|
||||||
|
authority_pointer: /retry_policies/0
|
||||||
|
comparison_mode: RETRY_POLICY_ID_AND_CLASSIFICATION_PROJECTION_EXACT
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: AFFECTED_SCOPE_REQUIRED_FIELDS
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/affected_scope_policy/occurrence_disposition_required_fields
|
||||||
|
authority_ref: schemas/ingress.schema.json
|
||||||
|
authority_pointer: /$defs/affected_scope_fields/required
|
||||||
|
comparison_mode: EXACT_SET
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: AFFECTED_SCOPE_TECHNICAL_ENUM
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/affected_scope_policy/technical_disposition_enum
|
||||||
|
authority_ref: schemas/ingress.schema.json
|
||||||
|
authority_pointer: /$defs/scope_technical_disposition/enum
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: AFFECTED_SCOPE_IMPACT_ENUM
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/affected_scope_policy/impact_scope_enum
|
||||||
|
authority_ref: schemas/ingress.schema.json
|
||||||
|
authority_pointer: /$defs/impact_scope/enum
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: CONSERVATION_CONTRACT
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/signal_and_conservation_policy
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/conservation_contract
|
||||||
|
comparison_mode: REQUIRED_INVARIANT_PROJECTION_EXACT
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: REVIEW_PARTITION_ENUM
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/signal_and_conservation_policy/review_partition_contract/partitions
|
||||||
|
authority_ref: schemas/review_status.schema.json
|
||||||
|
authority_pointer: /$defs/normalized_review_partition/enum
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: SLOT_EVALUATION_ENUM
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/context_and_cluster_policy/slot_crosswalk_contract/slot_state_enum
|
||||||
|
authority_ref: schemas/context.schema.json
|
||||||
|
authority_pointer: >-
|
||||||
|
/$defs/slot_crosswalk_row/properties/evaluation_status/enum
|
||||||
|
comparison_mode: EXACT_SEQUENCE
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: EXPLICIT_RELATION_ADAPTER
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/context_and_cluster_policy/approved_explicit_case_relation_contract
|
||||||
|
authority_ref: null
|
||||||
|
authority_pointer: null
|
||||||
|
comparison_mode: REQUIRED_FUTURE_BINDING
|
||||||
|
binding_status: UNBOUND_BLOCKS_EXPLICIT_HARD_JOIN
|
||||||
|
- contract_id: BUNDLE_POLICY
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/bundle_policy
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/bundle_policy
|
||||||
|
comparison_mode: REQUIRED_POLICY_PROJECTION_EXACT
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: FINAL_STATUS_SINGLE_WRITER
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/output_and_route_contract/final_status_writer
|
||||||
|
authority_ref: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
authority_pointer: >-
|
||||||
|
/Agent/Stages/0/orchestration_contract/routing/final_status_writer
|
||||||
|
comparison_mode: EXACT_SCALAR
|
||||||
|
binding_status: BOUND
|
||||||
|
- contract_id: CURRENT_LOADER_RECEIPT_SCHEMA
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/host_adapter_slot/single_loader_receipt_contract/current_schema_version
|
||||||
|
authority_ref: schemas/deployment.schema.json
|
||||||
|
authority_pointer: /$defs/loader_receipt/properties/schema_version/const
|
||||||
|
comparison_mode: EXACT_SCALAR
|
||||||
|
binding_status: BOUND_VALIDATE_ONLY
|
||||||
|
- contract_id: REQUIRED_CASE_LOADER_RECEIPT_PROFILE
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/host_adapter_slot/single_loader_receipt_contract
|
||||||
|
authority_ref: null
|
||||||
|
authority_pointer: null
|
||||||
|
comparison_mode: REQUIRED_FUTURE_BINDING
|
||||||
|
binding_status: UNBOUND_BLOCKS_CASE_ACTIVATION
|
||||||
|
- contract_id: CURRENT_RELEASE_CLASS
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/release_and_integrity_gate/current_release_class
|
||||||
|
authority_ref: manifest/stage2_release.json
|
||||||
|
authority_pointer: /release_class
|
||||||
|
comparison_mode: EXACT_SCALAR
|
||||||
|
binding_status: BOUND_DEV_ONLY
|
||||||
|
- contract_id: CURRENT_RELEASE_STATUS
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/release_and_integrity_gate/current_release_status
|
||||||
|
authority_ref: manifest/stage2_release.json
|
||||||
|
authority_pointer: /release_status
|
||||||
|
comparison_mode: EXACT_SCALAR
|
||||||
|
binding_status: BOUND_DEV_ONLY
|
||||||
|
- contract_id: CURRENT_AUTHORIZATION_STATUS
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/release_and_integrity_gate/current_authorization_status
|
||||||
|
authority_ref: manifest/stage2_release.json
|
||||||
|
authority_pointer: /authorization_status
|
||||||
|
comparison_mode: EXACT_SCALAR
|
||||||
|
binding_status: BOUND_DEV_ONLY
|
||||||
|
- contract_id: CASE_ACTIVATION_PREREQUISITES
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/release_and_integrity_gate/case_runtime_activation_requires
|
||||||
|
authority_ref: null
|
||||||
|
authority_pointer: null
|
||||||
|
comparison_mode: REQUIRED_FUTURE_RELEASE_BINDING
|
||||||
|
binding_status: UNBOUND_BLOCKS_CASE_ACTIVATION
|
||||||
|
- contract_id: TIMEOUT_AND_PROCESS_TREE_CONTROL
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/retry_and_idempotence
|
||||||
|
authority_ref: null
|
||||||
|
authority_pointer: null
|
||||||
|
comparison_mode: REQUIRED_FUTURE_LOADER_AND_HOST_BINDING
|
||||||
|
binding_status: UNBOUND_BLOCKS_CASE_ACTIVATION
|
||||||
|
- contract_id: EXECUTABLE_PROJECTION_SELF_BINDING
|
||||||
|
local_pointer: >-
|
||||||
|
/Agent/Stages/0/x_s2_00_contract/agent_script_self_binding_contract
|
||||||
|
authority_ref: null
|
||||||
|
authority_pointer: null
|
||||||
|
comparison_mode: REQUIRED_FUTURE_MANIFEST_HASH_BINDING
|
||||||
|
binding_status: UNBOUND_BLOCKS_CASE_ACTIVATION
|
||||||
|
every_row_requires_local_pointer: true
|
||||||
|
every_bound_row_requires_authority_ref_and_pointer: true
|
||||||
|
unbound_row_requires_closed_blocking_disposition: true
|
||||||
|
drift_disposition: BLOCK_ACTIVATION_AND_REGENERATE_VIEW
|
||||||
@@ -0,0 +1,531 @@
|
|||||||
|
Agent:
|
||||||
|
name: Stage_2_S2_00
|
||||||
|
description: >-
|
||||||
|
현행 Stage 1 Part 1-4 산출물을 release-bound fixed runtime으로 검증·보존·정규화하고,
|
||||||
|
claim-neutral cluster slice와 prompt bundle plan을 작성하기 위한 S2_00 선언형 작업명세서.
|
||||||
|
이 문서는 AgentBackend의 외부 고정 .py 호출 primitive가 검증되기 전에는 실행형 스크립트가 아니다.
|
||||||
|
version: "1.0.0-draft-candidate-a"
|
||||||
|
|
||||||
|
metadata:
|
||||||
|
workflow_id: S2_00
|
||||||
|
execution_class: NON-LLM-DETERMINISTIC
|
||||||
|
specification_role: DECLARATIVE_AGENT_WRAPPER
|
||||||
|
specification_status: DRAFT_NOT_EXECUTABLE
|
||||||
|
authorization_status: DEV_VALIDATION_ONLY
|
||||||
|
invocation_status: OPEN_EXTERNAL_BACKEND
|
||||||
|
runtime_activation_allowed: false
|
||||||
|
owner: Stage_2_workflow_maintainer
|
||||||
|
strategy_ref: stage_2_optimal_update_strategy_v.4.md
|
||||||
|
sow_ref: S_00_SOW.md
|
||||||
|
canonical_deployment_root: Default_Agent/Stage_2_Clean
|
||||||
|
canonical_workflow_ref: >-
|
||||||
|
Default_Agent/Stage_2_Clean/workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
loader_binding_ref: >-
|
||||||
|
Default_Agent/Stage_2_Clean/deployment/stage2_loader_binding.yml
|
||||||
|
release_ref: Default_Agent/Stage_2_Clean/manifest/stage2_release.json
|
||||||
|
legacy_stage2_dependencies: []
|
||||||
|
|
||||||
|
Stages:
|
||||||
|
- name: S2_00
|
||||||
|
description: >-
|
||||||
|
C00 -> C05 -> C10 -> C15를 고정 순서로 수행한다. 정상 package는 S2_10 handoff를,
|
||||||
|
minimum coherent package를 만들 수 없는 경우에는 S2_40 status-only handoff를 준비한다.
|
||||||
|
최종 상태·법률판단·소송문안·seal·commit은 작성하지 않는다.
|
||||||
|
prevs: []
|
||||||
|
nexts: []
|
||||||
|
tasks: []
|
||||||
|
|
||||||
|
x_agentbackend_execution_gate:
|
||||||
|
field_namespace_status: DECLARATIVE_EXTENSION_NOT_NATIVE_PRIMITIVE
|
||||||
|
executable_from_this_yaml: false
|
||||||
|
blocker_id: O-06
|
||||||
|
blocker_status: OPEN_EXTERNAL_BACKEND
|
||||||
|
blocker_reason: >-
|
||||||
|
현재 확인된 Agent Script 문법에는 release-bound 외부 고정 .py를 직접 호출하는 native task
|
||||||
|
primitive가 없다. 따라서 Direct MCP, code-executor, shell 또는 인라인 Python으로 우회하지 않는다.
|
||||||
|
required_closure_evidence:
|
||||||
|
- BACKEND_OWNER_APPROVED_FIXED_ENTRYPOINT_ADAPTER_SYNTAX
|
||||||
|
- LIVE_LOADER_INVOCATION_RECEIPT
|
||||||
|
- LOADER_BYPASS_NEGATIVE_TEST_PASS
|
||||||
|
allowed_until_closed:
|
||||||
|
- STATIC_CONTRACT_VALIDATION
|
||||||
|
- LOADER_VALIDATE_ONLY
|
||||||
|
- DEV_FIXTURE_TEST_HARNESS
|
||||||
|
forbidden_until_closed:
|
||||||
|
- AGENTBACKEND_CASE_RUN_INVOCATION
|
||||||
|
- SUBSET_CANARY_EXECUTION
|
||||||
|
- PRODUCTION_EXECUTION
|
||||||
|
|
||||||
|
x_s2_00_contract:
|
||||||
|
identity:
|
||||||
|
workflow_id: S2_00
|
||||||
|
module_id: WF-S2_00
|
||||||
|
workflow_schema_version: stage2_workflow_contract.v1
|
||||||
|
asset_version: s2_00.1
|
||||||
|
execution_class: NON-LLM-DETERMINISTIC
|
||||||
|
|
||||||
|
canonical_assets:
|
||||||
|
workflow:
|
||||||
|
asset_id: WF-S2_00
|
||||||
|
path: workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
loader:
|
||||||
|
asset_id: LOADER-STAGE2
|
||||||
|
path: release_ops/stage2_loader.py
|
||||||
|
loader_binding:
|
||||||
|
asset_id: BINDING-S2_00
|
||||||
|
path: deployment/stage2_loader_binding.yml
|
||||||
|
fixed_runtime:
|
||||||
|
asset_id: RUNTIME-S2_00
|
||||||
|
path: runtime/s2_00_ingress.py
|
||||||
|
release_manifest:
|
||||||
|
asset_id: MANIFEST-STAGE2-RELEASE
|
||||||
|
path: manifest/stage2_release.json
|
||||||
|
module_manifest:
|
||||||
|
asset_id: MANIFEST-MODULE
|
||||||
|
path: manifest/module_manifest.json
|
||||||
|
schemas:
|
||||||
|
ingress: schemas/ingress.schema.json
|
||||||
|
context: schemas/context.schema.json
|
||||||
|
deployment: schemas/deployment.schema.json
|
||||||
|
review_status: schemas/review_status.schema.json
|
||||||
|
cache_policy: registry/cache/prompt_cache_policy.yml
|
||||||
|
regression_manifest: tests/fixtures/regression_manifest.json
|
||||||
|
asset_resolution_policy:
|
||||||
|
root: Default_Agent/Stage_2_Clean
|
||||||
|
path_source: SIGNED_RELEASE_AND_LOADER_BINDING_ONLY
|
||||||
|
physical_hash_verification_required: true
|
||||||
|
directory_scan_allowed: false
|
||||||
|
glob_fallback_allowed: false
|
||||||
|
fuzzy_basename_allowed: false
|
||||||
|
legacy_fallback_allowed: false
|
||||||
|
|
||||||
|
execution:
|
||||||
|
trust_boundary: release_ops/stage2_loader.py
|
||||||
|
loader_bypass_allowed: false
|
||||||
|
loader_invocation_contract_status: OPEN_EXTERNAL_BACKEND
|
||||||
|
fixed_runtime_entrypoint: runtime/s2_00_ingress.py
|
||||||
|
component_order:
|
||||||
|
- C00
|
||||||
|
- C05
|
||||||
|
- C10
|
||||||
|
- C15
|
||||||
|
component_contracts:
|
||||||
|
C00:
|
||||||
|
purpose: exact ingress, bounded snapshot, source lock, strict parse
|
||||||
|
function_refs:
|
||||||
|
- resolve_stage1_sources
|
||||||
|
- load_release_lock
|
||||||
|
- open_bounded_snapshot
|
||||||
|
- load_json_strict
|
||||||
|
- validate_ingress_contracts
|
||||||
|
- expand_stage2_signal_all
|
||||||
|
- verify_activation_projection
|
||||||
|
- verify_cross_artifact_seals
|
||||||
|
C05:
|
||||||
|
purpose: independent multiset and review conservation
|
||||||
|
function_refs:
|
||||||
|
- normalize_review_items
|
||||||
|
- check_conservation
|
||||||
|
C10:
|
||||||
|
purpose: source-bound context, crosswalk and base issue ledger
|
||||||
|
function_refs:
|
||||||
|
- build_case_context
|
||||||
|
- build_evidence_inventory
|
||||||
|
- build_object_registry
|
||||||
|
- build_party_and_title_context
|
||||||
|
- build_slot_crosswalk
|
||||||
|
- mint_stage2_id
|
||||||
|
- mint_context_occurrence_id
|
||||||
|
C15:
|
||||||
|
purpose: claim-neutral cluster, SCC DAG, immutable slices and bundle plan
|
||||||
|
function_refs:
|
||||||
|
- compile_cluster_plan
|
||||||
|
- compile_cluster_slices
|
||||||
|
- compile_bundle_plan
|
||||||
|
- validate_bundle_release_cohorts
|
||||||
|
- publish_atomically
|
||||||
|
timeout_policy_source: manifest/stage2_release.json
|
||||||
|
retry_policy_id: S2-RETRY-TRANSIENT-READ-V1
|
||||||
|
retry_policy_ref: manifest/stage2_release.json#/retry_policies/0
|
||||||
|
retryable_failure_class:
|
||||||
|
- TRANSIENT_READ
|
||||||
|
- TRANSIENT_LOCK
|
||||||
|
nonretryable_failure_class:
|
||||||
|
- HASH_MISMATCH
|
||||||
|
- SCHEMA_MISMATCH
|
||||||
|
- PRODUCER_MISMATCH
|
||||||
|
- CONSERVATION_MISMATCH
|
||||||
|
- RUN_ID_BINDING_CONFLICT
|
||||||
|
|
||||||
|
snapshot_and_parse_policy:
|
||||||
|
transport_class: RELEASE_BOUND_BYTE_PRESERVING_WORKSPACE_TRANSPORT
|
||||||
|
text_normalizing_transport_for_raw_digest_allowed: false
|
||||||
|
same_descriptor_one_read_required: true
|
||||||
|
raw_hash_parse_and_schema_use_same_buffer: true
|
||||||
|
strict_utf8_json_required: true
|
||||||
|
duplicate_json_key_allowed: false
|
||||||
|
nan_or_infinity_allowed: false
|
||||||
|
trailing_extra_object_allowed: false
|
||||||
|
resource_limits_source: manifest/stage2_release.json
|
||||||
|
snapshot_seal_before_and_after_required: true
|
||||||
|
source_snapshot_change_disposition: DISCARD_ATTEMPT
|
||||||
|
source_snapshot_change_issue_code: SOURCE_SNAPSHOT_CHANGED
|
||||||
|
|
||||||
|
invocation_request:
|
||||||
|
fixed_values:
|
||||||
|
workflow_id: S2_00
|
||||||
|
release_ref: manifest/stage2_release.json
|
||||||
|
host_supplied_values:
|
||||||
|
- run_id
|
||||||
|
- attempt_id
|
||||||
|
- stage1_run_root_ref
|
||||||
|
- stage1_deployment_root_ref
|
||||||
|
backend_session_values:
|
||||||
|
- user_context_sha256
|
||||||
|
- workspace_context_sha256
|
||||||
|
forbidden_caller_values:
|
||||||
|
- executable
|
||||||
|
- command
|
||||||
|
- source_code
|
||||||
|
- runtime_entrypoint
|
||||||
|
- output_root
|
||||||
|
- arbitrary_absolute_path
|
||||||
|
shell_allowed: false
|
||||||
|
arbitrary_command_allowed: false
|
||||||
|
|
||||||
|
release_binding:
|
||||||
|
release_class_allowed_while_o07_open:
|
||||||
|
- DEV_FIXTURE_RELEASE
|
||||||
|
current_release_status: DRAFT_NOT_EXECUTABLE
|
||||||
|
current_authorization_status: DEV_VALIDATION_ONLY
|
||||||
|
validate_only_expected_status: VALIDATED_WITH_PENDING_BINDINGS
|
||||||
|
signed_canary_admission_required: true
|
||||||
|
signed_production_admission_required: true
|
||||||
|
module_acceptance_is_production_release: false
|
||||||
|
|
||||||
|
input_roots:
|
||||||
|
stage1_run_root_ref:
|
||||||
|
source: backend_workspace_transport
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
stage1_deployment_root_ref:
|
||||||
|
source: stage2_release_dependency_lock
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
|
||||||
|
stage1_input_allowlist:
|
||||||
|
- logical_input_id: evidence_indexed
|
||||||
|
requirement_class: EVIDENCE_EVENT_SCOPE
|
||||||
|
exact_path: evidence_indexed.json
|
||||||
|
adapter_id: S2A-EVIDENCE-V3-ENVELOPE-V1
|
||||||
|
- logical_input_id: evidence_event_candidates
|
||||||
|
requirement_class: EVIDENCE_EVENT_SCOPE
|
||||||
|
exact_path: evidence_event_candidates.json
|
||||||
|
adapter_id: S2A-EVENTS-V1-ENVELOPE-V1
|
||||||
|
- logical_input_id: client_goal
|
||||||
|
requirement_class: OPTIMIZATION_CONTEXT
|
||||||
|
exact_path: client_goal.json
|
||||||
|
optional_json_pointers:
|
||||||
|
- /defendant_target_matrix
|
||||||
|
- /parties/defendants/*/asset_status
|
||||||
|
invented_sibling_files_allowed: false
|
||||||
|
- logical_input_id: domain_screening
|
||||||
|
requirement_class: ROUTING_PROFILE_BACKBONE
|
||||||
|
exact_path: routing/domain_screening.json
|
||||||
|
- logical_input_id: domain_activation_manifest
|
||||||
|
requirement_class: ROUTING_PROFILE_BACKBONE
|
||||||
|
exact_path: routing/domain_activation_manifest.json
|
||||||
|
adapter_id: S2A-DUAL-SG01-V1
|
||||||
|
- logical_input_id: b1_evidence_indexed_gate
|
||||||
|
requirement_class: INTEGRITY_CORROBORATOR
|
||||||
|
exact_path: quality_gates/B1_evidence_indexed_gate.json
|
||||||
|
- logical_input_id: b2_event_candidates_gate
|
||||||
|
requirement_class: INTEGRITY_CORROBORATOR
|
||||||
|
exact_path: quality_gates/B2_event_candidates_gate.json
|
||||||
|
- logical_input_id: stage1_part1_soft_gate_handoff
|
||||||
|
requirement_class: INTEGRITY_CORROBORATOR
|
||||||
|
exact_path: quality_gates/stage1_part1_soft_gate_handoff.json
|
||||||
|
adapter_id: S2A-P1-HANDOFF-FLAT-V1
|
||||||
|
- logical_input_id: bo
|
||||||
|
requirement_class: IDENTITY_BACKBONE
|
||||||
|
exact_path: BO.json
|
||||||
|
adapter_id: S2A-BO-V8-LIST-V1
|
||||||
|
- logical_input_id: signal_manifest
|
||||||
|
requirement_class: ROUTING_PROFILE_BACKBONE
|
||||||
|
exact_path: signals/signal_manifest.json
|
||||||
|
adapter_id: S2A-SIGNAL-ALL-V1
|
||||||
|
producer_alias_id: PA-SG-COMPILER-001
|
||||||
|
- logical_input_id: stage1_part2_review_handoff
|
||||||
|
requirement_class: INTEGRITY_CORROBORATOR
|
||||||
|
exact_path: quality_gates/stage1_part2_review_handoff.json
|
||||||
|
adapter_id: S2A-P2-HANDOFF-FLAT-V1
|
||||||
|
- logical_input_id: legal_effect_structures
|
||||||
|
requirement_class: ROUTING_PROFILE_BACKBONE
|
||||||
|
exact_path: legal_effect_structures.json
|
||||||
|
- logical_input_id: stage1_part3_review_handoff
|
||||||
|
requirement_class: INTEGRITY_CORROBORATOR
|
||||||
|
exact_path: quality_gates/stage1_part3_review_handoff.json
|
||||||
|
adapter_id: S2A-P3-HANDOFF-WRAPPED-V1
|
||||||
|
- logical_input_id: fact_ledger_base
|
||||||
|
requirement_class: IDENTITY_BACKBONE
|
||||||
|
exact_path: Fact_Ledger_base.json
|
||||||
|
adapter_id: S2A-FACT-LEDGER-CURRENT-V8-V1
|
||||||
|
- logical_input_id: fact_ledger_writer_report
|
||||||
|
requirement_class: INTEGRITY_CORROBORATOR
|
||||||
|
exact_path: stage1_tmp/fact_ledger/fact_ledger_writer_report.json
|
||||||
|
- logical_input_id: stage1_part4_review_handoff
|
||||||
|
requirement_class: INTEGRITY_CORROBORATOR
|
||||||
|
exact_path: quality_gates/stage1_part4_review_handoff.json
|
||||||
|
adapter_id: S2A-P4-HANDOFF-WRAPPED-V1
|
||||||
|
- logical_input_id: signal_payload_family
|
||||||
|
requirement_class: SIGNAL_PAYLOAD
|
||||||
|
exact_path_rule: signals/<signal_manifest.files[i].path>
|
||||||
|
manifest_order_preserved: true
|
||||||
|
|
||||||
|
stage1_deployment_contract:
|
||||||
|
dependency_lock_id: STAGE1-DEPLOYMENT-CLOSURE-2026-08-29
|
||||||
|
dependency_lock_ref: manifest/stage2_release.json#/dependency_locks/stage1
|
||||||
|
exact_concrete_path_count: 55
|
||||||
|
allowed_sources:
|
||||||
|
- runtime_manifest.json
|
||||||
|
- domains/_registry_index.json
|
||||||
|
- domains/<domain_id>/domain_config.json
|
||||||
|
- signals/signal_registry.v2.json
|
||||||
|
- manifest_or_registry_enumerated_platform_schemas
|
||||||
|
- manifest_or_registry_enumerated_signal_schemas
|
||||||
|
stage1_contract_manifest:
|
||||||
|
default_required: false
|
||||||
|
allowed_only_for_release_bound_relocation: true
|
||||||
|
new_logical_artifact_kind_allowed: false
|
||||||
|
producer_alias_ids:
|
||||||
|
- PA-SG-COMPILER-001
|
||||||
|
|
||||||
|
part1_digest_guard:
|
||||||
|
exact_keys:
|
||||||
|
- evidence_indexed_sha256
|
||||||
|
- evidence_event_candidates_sha256
|
||||||
|
- b1_gate_sha256
|
||||||
|
- b2_gate_sha256
|
||||||
|
- screening_sha256
|
||||||
|
- activation_manifest_sha256
|
||||||
|
- registry_index_sha256
|
||||||
|
recompute_from_raw_bytes: true
|
||||||
|
|
||||||
|
signal_policy:
|
||||||
|
downstream_read_set_exact:
|
||||||
|
- ALL
|
||||||
|
file_rows_preserve_manifest_order: true
|
||||||
|
physical_path_rule: signals/<files[i].path>
|
||||||
|
semantic_file_kinds:
|
||||||
|
- canonical
|
||||||
|
- domain_signal
|
||||||
|
integrity_only_file_kinds:
|
||||||
|
- compatibility_view
|
||||||
|
file_and_record_conservation_separate: true
|
||||||
|
record_occurrence_identity:
|
||||||
|
- manifest_transaction_id
|
||||||
|
- file_path
|
||||||
|
- record_ordinal
|
||||||
|
- signal_id
|
||||||
|
routing_sg01_ref: routing/domain_activation_manifest.json
|
||||||
|
signal_sg01_ref: signals/domain_activation_manifest.json
|
||||||
|
sg01_raw_hashes_preserved_separately: true
|
||||||
|
sg01_semantic_projection_comparison_required: true
|
||||||
|
|
||||||
|
conservation_policy:
|
||||||
|
upstream_status_trusted_without_recompute: false
|
||||||
|
preserve_stage1_ids_codepoint_exactly: true
|
||||||
|
normalize_raw_stage1_ids: false
|
||||||
|
bo_fact_ledger_set_cardinality_multiset_required: true
|
||||||
|
fact_id_sequence_rule: F-001..F-N
|
||||||
|
every_source_occurrence_has_one_disposition: true
|
||||||
|
unavailable_occurrence_receipt_preserved: true
|
||||||
|
review_occurrence_single_partition_required: true
|
||||||
|
fact_ledger_current_v8_required_keys:
|
||||||
|
- domain_effects
|
||||||
|
- calculation_requests
|
||||||
|
|
||||||
|
affected_scope_policy:
|
||||||
|
scope_technical_disposition_enum:
|
||||||
|
- AVAILABLE
|
||||||
|
- AVAILABLE_WITH_ISSUES
|
||||||
|
- UNAVAILABLE
|
||||||
|
impact_scope_enum:
|
||||||
|
- GLOBAL
|
||||||
|
- CLUSTER
|
||||||
|
- PARTY_CONTEXT
|
||||||
|
- OBJECT_CONTEXT
|
||||||
|
- FACT
|
||||||
|
- EVIDENCE
|
||||||
|
- SIGNAL
|
||||||
|
- REVIEW_ITEM
|
||||||
|
required_disposition_fields:
|
||||||
|
- scope_refs
|
||||||
|
- source_contract_row_refs
|
||||||
|
- reason_codes
|
||||||
|
- downstream_allowed_actions
|
||||||
|
occurrence_partition_must_be_disjoint_and_exhaustive: true
|
||||||
|
|
||||||
|
context_identity_policy:
|
||||||
|
source_ref_required_for_every_row: true
|
||||||
|
party_object_fuzzy_merge_allowed: false
|
||||||
|
stage1_canonical_id_preferred: true
|
||||||
|
occurrence_context_id_only_when_canonical_id_absent: true
|
||||||
|
unresolved_identity_issue_code: IDENTITY_UNRESOLVED
|
||||||
|
physical_path_or_parallel_ordinal_as_mint_input_allowed: false
|
||||||
|
|
||||||
|
cluster_policy:
|
||||||
|
legal_conclusion_allowed: false
|
||||||
|
case_type_id_creation_allowed: false
|
||||||
|
claim_option_id_creation_allowed: false
|
||||||
|
hard_join_predicates:
|
||||||
|
- SAME_BO_ID
|
||||||
|
- LES_SOURCE_BO_ID
|
||||||
|
- SAME_EVIDENCE_REF
|
||||||
|
- SAME_EVENT_REF
|
||||||
|
- APPROVED_EXPLICIT_CASE_RELATION
|
||||||
|
similarity_only_hard_join_allowed: false
|
||||||
|
domain_registry_depends_on_as_litigation_edge_allowed: false
|
||||||
|
cycles_preserved_as_scc: true
|
||||||
|
executable_and_residual_partitions_disjoint: true
|
||||||
|
|
||||||
|
bundle_policy:
|
||||||
|
plan_only: true
|
||||||
|
prompt_text_generation_allowed: false
|
||||||
|
static_prefix_classes:
|
||||||
|
- P00_SYSTEM_SAFETY
|
||||||
|
- P10_LEGAL_RESOLUTION
|
||||||
|
- ACTIVE_PROFILE
|
||||||
|
- APPROVED_COMMON_AUTHORITY
|
||||||
|
dynamic_tail_classes:
|
||||||
|
- CLUSTER_SLICE
|
||||||
|
- PRIOR_WAVE_NARROW_VERDICT_PLACEHOLDER
|
||||||
|
forbidden_bulk_inputs:
|
||||||
|
- FULL_137_CASE_CATALOG
|
||||||
|
- RAW_CORPUS
|
||||||
|
- ALL_RELIEF_MARKDOWN
|
||||||
|
- ALL_LAW_VALUE_ROWS
|
||||||
|
pii_in_static_prefix_allowed: false
|
||||||
|
cache_miss_is_quality_failure: false
|
||||||
|
prefix_hash_or_pii_failure_scope: COHORT_NON_EXECUTABLE
|
||||||
|
mode_release_mapping:
|
||||||
|
STRUCTURAL_FIXTURE: DEV_FIXTURE_RELEASE
|
||||||
|
SUBSET_CANARY: SUBSET_CANARY_RELEASE
|
||||||
|
PRODUCTION: PRODUCTION_RELEASE
|
||||||
|
structural_fixture_case_run_publish_allowed: false
|
||||||
|
structural_fixture_downstream_route_allowed: false
|
||||||
|
|
||||||
|
output_contract:
|
||||||
|
output_root_source: loader_bound_stage2_run_root
|
||||||
|
output_root_argument_allowed: false
|
||||||
|
normal_branch:
|
||||||
|
- ingress/stage1_input_manifest.json
|
||||||
|
- ingress/intake_report.json
|
||||||
|
- context/case_context.json
|
||||||
|
- context/evidence_inventory.json
|
||||||
|
- context/object_registry.json
|
||||||
|
- context/party_and_title_context.json
|
||||||
|
- context/slot_crosswalk.json
|
||||||
|
- context/cluster_plan.json
|
||||||
|
- context/cluster_slices/<cluster_id>.json
|
||||||
|
- context/bundle_plan.json
|
||||||
|
- review/issue_ledger.base.json
|
||||||
|
- ingress/ingress_status.json
|
||||||
|
diagnostic_branch:
|
||||||
|
- ingress/stage1_input_manifest.json
|
||||||
|
- ingress/intake_report.json
|
||||||
|
- ingress/technical_diagnostic.json
|
||||||
|
- review/issue_ledger.base.json
|
||||||
|
- ingress/ingress_status.json
|
||||||
|
ingress_status_written_last: true
|
||||||
|
normal_branch_technical_diagnostic_allowed: false
|
||||||
|
diagnostic_branch_partial_context_publish_allowed: false
|
||||||
|
whole_tree_atomic_publish_required: true
|
||||||
|
|
||||||
|
routing_contract:
|
||||||
|
normal_routes:
|
||||||
|
- TO_S2_10
|
||||||
|
- TO_S2_10_WITH_ISSUES
|
||||||
|
diagnostic_route: TO_S2_40_STATUS_ONLY
|
||||||
|
normal_route_requires_nonempty_executable_cluster_ids: true
|
||||||
|
status_only_exact_inputs:
|
||||||
|
- ingress/ingress_status.json
|
||||||
|
- ingress/technical_diagnostic.json
|
||||||
|
- ingress/stage1_input_manifest.json
|
||||||
|
- ingress/intake_report.json
|
||||||
|
- review/issue_ledger.base.json
|
||||||
|
final_status_writer: S2_40
|
||||||
|
s2_00_final_status_write_allowed: false
|
||||||
|
s2_00_control_run_status_write_allowed: false
|
||||||
|
minimum_coherent_package_predicate:
|
||||||
|
- SAME_RUN_FACT_AND_BO_IDENTITY_UNIVERSE_RESOLVABLE
|
||||||
|
- ALL_AVAILABLE_INCOMPLETE_AND_UNAVAILABLE_SCOPES_ENUMERATED
|
||||||
|
- EVERY_USED_AND_UNUSABLE_SOURCE_EXPLAINED_IN_MANIFEST_AND_ISSUES
|
||||||
|
- AT_LEAST_ONE_SCHEMA_VALID_EXECUTABLE_CLUSTER_SLICE_AND_BUNDLE
|
||||||
|
route_decisions:
|
||||||
|
TO_S2_10:
|
||||||
|
when:
|
||||||
|
- CORE_ANCHORS_AND_CONSERVATION_CONSISTENT
|
||||||
|
- EXECUTABLE_CLUSTER_IDS_NONEMPTY
|
||||||
|
TO_S2_10_WITH_ISSUES:
|
||||||
|
when:
|
||||||
|
- MINIMUM_COHERENT_PACKAGE_POSSIBLE
|
||||||
|
- RECOVERABLE_SCOPE_OR_REVIEW_ISSUES_EXIST
|
||||||
|
- EXECUTABLE_CLUSTER_IDS_NONEMPTY
|
||||||
|
TO_S2_40_STATUS_ONLY:
|
||||||
|
when_any:
|
||||||
|
- MINIMUM_COHERENT_PACKAGE_IMPOSSIBLE
|
||||||
|
- GLOBAL_RUN_OR_TRANSACTION_IDENTITY_CONFLICT
|
||||||
|
- TRUSTED_SOURCE_UNIVERSE_CANNOT_BE_ENUMERATED
|
||||||
|
- NO_CONSISTENT_EXECUTABLE_OR_RESIDUAL_SLICE
|
||||||
|
- RESIDUAL_ONLY_AND_EXECUTABLE_CLUSTER_IDS_EMPTY
|
||||||
|
- ALL_BUNDLE_COHORTS_NON_EXECUTABLE
|
||||||
|
not_a_standalone_diagnostic_reason:
|
||||||
|
- EVIDENCE_OR_EVENT_GATE_UNCERTAIN
|
||||||
|
- EVENT_DATE_UNRESOLVED
|
||||||
|
- CLIENT_GOAL_OR_OPTIONAL_TARGET_ASSET_ABSENT
|
||||||
|
- PARTIAL_DOMAIN_CONFIG_GAP
|
||||||
|
- UNRESOLVED_CONDITIONAL_EXCLUDED_OR_UNMAPPED_REVIEW_ITEM
|
||||||
|
- RECOVERABLE_JOIN_GAP
|
||||||
|
- DOWNSTREAM_CASE_TYPE_RULE_OR_CORPUS_RELEASE_ISSUE
|
||||||
|
- CACHE_MISS_OR_CACHE_SERVICE_UNAVAILABLE
|
||||||
|
|
||||||
|
idempotence_and_publish:
|
||||||
|
run_binding_tuple:
|
||||||
|
- input_set_digest
|
||||||
|
- stage2_release_digest
|
||||||
|
- algorithm_digest
|
||||||
|
- release_class
|
||||||
|
attempt_id_is_run_binding_input: false
|
||||||
|
same_tuple_output_requirement: BYTE_IDENTICAL
|
||||||
|
existing_same_digest_disposition: IDEMPOTENT_SUCCESS_AFTER_REVALIDATION
|
||||||
|
existing_different_digest_disposition: RUN_ID_BINDING_CONFLICT
|
||||||
|
publish_method: SAME_FILESYSTEM_WHOLE_TREE_ATOMIC_RENAME
|
||||||
|
|
||||||
|
prohibitions:
|
||||||
|
llm_calls_allowed: false
|
||||||
|
llm_configuration_allowed: false
|
||||||
|
prompt_body_allowed: false
|
||||||
|
inline_python_allowed: false
|
||||||
|
inline_schema_allowed: false
|
||||||
|
dynamic_code_allowed: false
|
||||||
|
runtime_package_install_allowed: false
|
||||||
|
arbitrary_external_network_allowed: false
|
||||||
|
approved_workspace_transport_is_external_egress: false
|
||||||
|
directory_scan_allowed: false
|
||||||
|
fuzzy_path_fallback_allowed: false
|
||||||
|
stage1_new_required_outputs: []
|
||||||
|
legacy_stage2_v0_v3_dependencies: []
|
||||||
|
old_stage2_runtime_fallbacks: []
|
||||||
|
legal_judgment_allowed: false
|
||||||
|
final_document_write_allowed: false
|
||||||
|
final_seal_or_commit_allowed: false
|
||||||
|
|
||||||
|
acceptance_boundary:
|
||||||
|
static_contract_validation_required: true
|
||||||
|
release_hash_closure_required: true
|
||||||
|
loader_validate_only_required: true
|
||||||
|
fixed_runtime_unit_property_tests_required: true
|
||||||
|
live_agentbackend_invocation_required_for_executable_claim: true
|
||||||
|
live_stage1_to_s2_00_e2e_required_for_implementation_complete_claim: true
|
||||||
|
s2_10_and_s2_40_handoff_mock_required: true
|
||||||
|
korean_lawyer_review_is_not_s2_00_module_acceptance: true
|
||||||
|
production_readiness_may_not_be_inferred_from_dev_fixture_pass: true
|
||||||
@@ -0,0 +1,317 @@
|
|||||||
|
Agent:
|
||||||
|
name: Stage_2_S2_00
|
||||||
|
description: >-
|
||||||
|
Stage 1 Part 1-4의 현행 산출물을 대상으로 canonical S2_00 fixed runtime을
|
||||||
|
release-bound loader를 통해서만 호출하기 위한 AgentBackend adapter 계약 후보.
|
||||||
|
이 파일은 O-06이 닫히기 전에는 실행 가능한 Agent Script가 아니다.
|
||||||
|
version: "1.0.0-candidate-b"
|
||||||
|
|
||||||
|
metadata:
|
||||||
|
workflow_id: S2_00
|
||||||
|
execution_class: NON-LLM-DETERMINISTIC
|
||||||
|
artifact_role: AGENTBACKEND_LOADER_ADAPTER_CONTRACT
|
||||||
|
contract_schema_version: stage2_agent_loader_adapter_contract.v1-draft
|
||||||
|
owner: Stage_2_workflow_maintainer
|
||||||
|
|
||||||
|
implementation_status: FIXED_ASSETS_PRESENT_ADAPTER_OPEN
|
||||||
|
invocation_status: OPEN_EXTERNAL_BACKEND
|
||||||
|
release_class: DEV_FIXTURE_RELEASE
|
||||||
|
release_status: DRAFT_NOT_EXECUTABLE
|
||||||
|
authorization_status: DEV_VALIDATION_ONLY
|
||||||
|
runtime_activation_allowed: false
|
||||||
|
|
||||||
|
canonical_root_ref: Default_Agent/Stage_2_Clean
|
||||||
|
canonical_workflow_ref: >-
|
||||||
|
Default_Agent/Stage_2_Clean/workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
loader_binding_ref: >-
|
||||||
|
Default_Agent/Stage_2_Clean/deployment/stage2_loader_binding.yml
|
||||||
|
loader_ref: Default_Agent/Stage_2_Clean/release_ops/stage2_loader.py
|
||||||
|
release_ref: Default_Agent/Stage_2_Clean/manifest/stage2_release.json
|
||||||
|
|
||||||
|
source_of_truth_order:
|
||||||
|
- Default_Agent/Stage_2_Clean/manifest/stage2_release.json
|
||||||
|
- Default_Agent/Stage_2_Clean/deployment/stage2_loader_binding.yml
|
||||||
|
- Default_Agent/Stage_2_Clean/workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
duplicated_runtime_logic_allowed: false
|
||||||
|
duplicated_hash_binding_allowed: false
|
||||||
|
legacy_runtime_dependencies: []
|
||||||
|
old_stage2_fallbacks: []
|
||||||
|
stage1_new_required_outputs: []
|
||||||
|
|
||||||
|
Stages:
|
||||||
|
- name: S2_00
|
||||||
|
description: >-
|
||||||
|
AgentBackend가 검증된 native adapter로 canonical stage2_loader.py만 호출하고,
|
||||||
|
loader가 release·binding·asset closure를 검증한 뒤 C00→C05→C10→C15
|
||||||
|
fixed runtime을 실행하도록 하는 단일 deterministic stage의 계약 후보.
|
||||||
|
현재는 backend primitive가 검증되지 않았으므로 tasks를 의도적으로 비워 둔다.
|
||||||
|
prevs: []
|
||||||
|
nexts: []
|
||||||
|
tasks: []
|
||||||
|
|
||||||
|
activation_gate:
|
||||||
|
status: OPEN_EXTERNAL_BACKEND
|
||||||
|
agentbackend_runtime_activation_allowed: false
|
||||||
|
empty_tasks_meaning: NON_EXECUTABLE_CONTRACT_NOT_SUCCESSFUL_NOOP
|
||||||
|
required_closeout:
|
||||||
|
open_id: O-06
|
||||||
|
owner: AgentBackend_owner
|
||||||
|
evidence: >-
|
||||||
|
AgentBackend가 arbitrary command/path/source를 받지 않고 canonical
|
||||||
|
stage2_loader.py만 shell=false fixed argv로 호출했음을 입증하는 live receipt
|
||||||
|
post_closeout_actions:
|
||||||
|
- native adapter의 실제 schema와 task syntax를 이 파일에 명시한다.
|
||||||
|
- deployment/stage2_loader_binding.yml에 adapter identity와 raw hash를 결속한다.
|
||||||
|
- manifest/stage2_release.json을 재봉인하고 loader integration test를 실행한다.
|
||||||
|
- tasks가 비어 있는 현 후보를 production에 그대로 배포하지 않는다.
|
||||||
|
|
||||||
|
canonical_contract:
|
||||||
|
workflow_ref: workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml
|
||||||
|
workflow_id: S2_00
|
||||||
|
execution_class: NON-LLM-DETERMINISTIC
|
||||||
|
entrypoint_ref: runtime/s2_00_ingress.py
|
||||||
|
loader_ref: release_ops/stage2_loader.py
|
||||||
|
binding_ref: deployment/stage2_loader_binding.yml
|
||||||
|
release_ref: manifest/stage2_release.json
|
||||||
|
component_order:
|
||||||
|
- C00
|
||||||
|
- C05
|
||||||
|
- C10
|
||||||
|
- C15
|
||||||
|
contract_import_policy:
|
||||||
|
mode: REFERENCE_CANONICAL_ASSET
|
||||||
|
inline_copy_allowed: false
|
||||||
|
runtime_logic_override_allowed: false
|
||||||
|
input_output_policy_override_allowed: false
|
||||||
|
|
||||||
|
backend_adapter_requirements:
|
||||||
|
primitive_name: null
|
||||||
|
primitive_schema: null
|
||||||
|
status: OPEN_EXTERNAL_BACKEND
|
||||||
|
required_semantics:
|
||||||
|
loader_only_invocation: true
|
||||||
|
direct_runtime_invocation_allowed: false
|
||||||
|
shell: false
|
||||||
|
arbitrary_command_allowed: false
|
||||||
|
arbitrary_executable_allowed: false
|
||||||
|
arbitrary_source_code_allowed: false
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
caller_selected_output_root_allowed: false
|
||||||
|
user_workspace_context_forwarding_required: true
|
||||||
|
byte_preserving_workspace_transport_required: true
|
||||||
|
loader_receipt_capture_required: true
|
||||||
|
prohibited_substitutes:
|
||||||
|
- INLINE_PYTHON_CODE_EXECUTOR
|
||||||
|
- DIRECT_RUNTIME_S2_00_INGRESS_CALL
|
||||||
|
- TEXT_NORMALIZING_RAW_DIGEST_TRANSPORT
|
||||||
|
- UNVERIFIED_MCP_TOOL_OR_ENDPOINT
|
||||||
|
|
||||||
|
loader_request_contract:
|
||||||
|
fixed_values:
|
||||||
|
workflow_id: S2_00
|
||||||
|
release_ref: manifest/stage2_release.json
|
||||||
|
backend_bound_values:
|
||||||
|
- argument_id: run_id
|
||||||
|
source: RUN_TUPLE_BINDING
|
||||||
|
raw_user_value_allowed: false
|
||||||
|
- argument_id: attempt_id
|
||||||
|
source: TRANSIENT_RETRY_BINDING
|
||||||
|
canonical_id_input_allowed: false
|
||||||
|
- argument_id: user_context_sha256
|
||||||
|
source: BACKEND_SESSION
|
||||||
|
raw_user_id_persist_allowed: false
|
||||||
|
- argument_id: workspace_context_sha256
|
||||||
|
source: BACKEND_SESSION
|
||||||
|
raw_workspace_id_persist_allowed: false
|
||||||
|
- argument_id: stage1_run_root_ref
|
||||||
|
source: BACKEND_WORKSPACE_TRANSPORT
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
- argument_id: stage1_deployment_root_ref
|
||||||
|
source: STAGE2_RELEASE_DEPENDENCY_LOCK
|
||||||
|
arbitrary_absolute_path_allowed: false
|
||||||
|
allowed_flags_in_order:
|
||||||
|
- --workflow-id
|
||||||
|
- --release-ref
|
||||||
|
- --run-id
|
||||||
|
- --attempt-id
|
||||||
|
- --user-context-sha256
|
||||||
|
- --workspace-context-sha256
|
||||||
|
- --stage1-run-root-ref
|
||||||
|
- --stage1-deployment-root-ref
|
||||||
|
positional_argument_count: 0
|
||||||
|
validate_only_is_runtime_invocation: false
|
||||||
|
|
||||||
|
release_and_integrity_gate:
|
||||||
|
authority: release_ops/stage2_loader.py
|
||||||
|
binding_id: S2-BINDING-S2_00-V1
|
||||||
|
required_checks:
|
||||||
|
- RELEASE_AND_BINDING_STRICT_PARSE
|
||||||
|
- AUTHORING_ROOT_AND_WORKSPACE_ROOT_CONFINEMENT
|
||||||
|
- WORKFLOW_LOADER_RUNTIME_SCHEMA_RAW_HASH_CLOSURE
|
||||||
|
- MODULE_MANIFEST_AND_RELEASE_ORACLE_CROSS_BINDING
|
||||||
|
- STAGE1_DEPENDENCY_LOCK_CLOSURE
|
||||||
|
- FIXED_ARGV_CONTRACT
|
||||||
|
- LEGACY_FALLBACK_EMPTY
|
||||||
|
- EXTERNAL_NETWORK_DISABLED
|
||||||
|
current_blockers:
|
||||||
|
- open_id: O-06
|
||||||
|
status: OPEN_EXTERNAL_BACKEND
|
||||||
|
- open_id: O-07
|
||||||
|
status: OPEN_RELEASE_AUTHORIZATION
|
||||||
|
- open_id: SNAPSHOT-SEAL-BIND
|
||||||
|
status: PENDING_SEQUENTIAL_BIND
|
||||||
|
- open_id: DEV-DETACHED-RELEASE-ENVELOPE
|
||||||
|
status: OPEN_RELEASE_AUTHORIZATION
|
||||||
|
current_execution_boundary:
|
||||||
|
authoring_validation_allowed: true
|
||||||
|
agentbackend_invoke_allowed: false
|
||||||
|
s2_10_handoff_allowed: false
|
||||||
|
s2_40_status_only_handoff_allowed: false
|
||||||
|
canary_or_production_allowed: false
|
||||||
|
|
||||||
|
stage1_ingress_binding:
|
||||||
|
source_contract_authority: >-
|
||||||
|
workflows/S2_00_stage1_ingress_normalize_and_bundle_compile.yml#/Agent/Stages/0/orchestration_contract/input_contract
|
||||||
|
default_input_count_excluding_manifest_expansion: 16
|
||||||
|
signal_manifest_expansion_family_count: 1
|
||||||
|
default_exact_logical_inputs:
|
||||||
|
- evidence_indexed.json
|
||||||
|
- evidence_event_candidates.json
|
||||||
|
- client_goal.json
|
||||||
|
- routing/domain_screening.json
|
||||||
|
- routing/domain_activation_manifest.json
|
||||||
|
- quality_gates/B1_evidence_indexed_gate.json
|
||||||
|
- quality_gates/B2_event_candidates_gate.json
|
||||||
|
- quality_gates/stage1_part1_soft_gate_handoff.json
|
||||||
|
- BO.json
|
||||||
|
- signals/signal_manifest.json
|
||||||
|
- quality_gates/stage1_part2_review_handoff.json
|
||||||
|
- legal_effect_structures.json
|
||||||
|
- quality_gates/stage1_part3_review_handoff.json
|
||||||
|
- Fact_Ledger_base.json
|
||||||
|
- stage1_tmp/fact_ledger/fact_ledger_writer_report.json
|
||||||
|
- quality_gates/stage1_part4_review_handoff.json
|
||||||
|
manifest_expansion_rule: signals/<signal_manifest.files[i].path>
|
||||||
|
optional_fields_only:
|
||||||
|
- client_goal.json#/defendant_target_matrix
|
||||||
|
- client_goal.json#/parties/defendants/*/asset_status
|
||||||
|
optional_fields_as_sibling_files_allowed: false
|
||||||
|
stage1_contract_manifest_default_required: false
|
||||||
|
directory_scan_allowed: false
|
||||||
|
glob_fallback_allowed: false
|
||||||
|
fuzzy_basename_allowed: false
|
||||||
|
|
||||||
|
fixed_runtime_contract:
|
||||||
|
runtime_ref: runtime/s2_00_ingress.py
|
||||||
|
direct_caller: release_ops/stage2_loader.py
|
||||||
|
other_callers_allowed: false
|
||||||
|
component_order:
|
||||||
|
- C00
|
||||||
|
- C05
|
||||||
|
- C10
|
||||||
|
- C15
|
||||||
|
component_responsibilities:
|
||||||
|
C00: EXACT_RESOLVE_STRICT_VALIDATE_SOURCE_LOCK
|
||||||
|
C05: INDEPENDENT_MULTISET_AND_REVIEW_CONSERVATION
|
||||||
|
C10: SOURCE_PRESERVING_CONTEXT_CROSSWALK_BASE_ISSUE
|
||||||
|
C15: CLAIM_NEUTRAL_CLUSTER_SLICE_BUNDLE_AND_ATOMIC_PUBLISH
|
||||||
|
llm_calls_allowed: false
|
||||||
|
external_network_access_allowed: false
|
||||||
|
dynamic_code_allowed: false
|
||||||
|
runtime_package_install_allowed: false
|
||||||
|
|
||||||
|
output_contract:
|
||||||
|
output_root_source: LOADER_BOUND_WORKSPACE_MAPPING
|
||||||
|
caller_selected_output_root_allowed: false
|
||||||
|
normal_branch:
|
||||||
|
route_values:
|
||||||
|
- TO_S2_10
|
||||||
|
- TO_S2_10_WITH_ISSUES
|
||||||
|
required_artifacts:
|
||||||
|
- ingress/stage1_input_manifest.json
|
||||||
|
- ingress/intake_report.json
|
||||||
|
- context/case_context.json
|
||||||
|
- context/evidence_inventory.json
|
||||||
|
- context/object_registry.json
|
||||||
|
- context/party_and_title_context.json
|
||||||
|
- context/slot_crosswalk.json
|
||||||
|
- context/cluster_plan.json
|
||||||
|
- context/cluster_slices/<cluster_id>.json
|
||||||
|
- context/bundle_plan.json
|
||||||
|
- review/issue_ledger.base.json
|
||||||
|
- ingress/ingress_status.json
|
||||||
|
ingress_status_written_last: true
|
||||||
|
technical_diagnostic_allowed: false
|
||||||
|
diagnostic_branch:
|
||||||
|
route_values:
|
||||||
|
- TO_S2_40_STATUS_ONLY
|
||||||
|
exact_artifacts:
|
||||||
|
- ingress/stage1_input_manifest.json
|
||||||
|
- ingress/intake_report.json
|
||||||
|
- ingress/technical_diagnostic.json
|
||||||
|
- review/issue_ledger.base.json
|
||||||
|
- ingress/ingress_status.json
|
||||||
|
context_publish_allowed: false
|
||||||
|
whole_tree_atomic_publish_required: true
|
||||||
|
partial_publish_allowed: false
|
||||||
|
final_status_writer: S2_40
|
||||||
|
s2_00_final_status_write_allowed: false
|
||||||
|
|
||||||
|
route_contract:
|
||||||
|
route_source: ingress/ingress_status.json
|
||||||
|
route_schema_ref: schemas/ingress.schema.json#/$defs/ingress_status
|
||||||
|
route_after_successful_loader_invoke_only: true
|
||||||
|
branches:
|
||||||
|
TO_S2_10:
|
||||||
|
downstream_workflow_id: S2_10
|
||||||
|
executable_cluster_required: true
|
||||||
|
TO_S2_10_WITH_ISSUES:
|
||||||
|
downstream_workflow_id: S2_10
|
||||||
|
executable_cluster_required: true
|
||||||
|
TO_S2_40_STATUS_ONLY:
|
||||||
|
downstream_workflow_id: S2_40_STATUS_ONLY
|
||||||
|
exact_input_count: 5
|
||||||
|
agentbackend_route_activation_status: OPEN_EXTERNAL_BACKEND
|
||||||
|
|
||||||
|
retry_and_idempotence:
|
||||||
|
retry_policy_ref: manifest/stage2_release.json#/retry_policies/0
|
||||||
|
retry_policy_id: S2-RETRY-TRANSIENT-READ-V1
|
||||||
|
retry_policy_literals_duplicated_here: false
|
||||||
|
retryable_class: TRANSIENT_READ_OR_LOCK_ONLY
|
||||||
|
semantic_or_integrity_failure_retry_allowed: false
|
||||||
|
run_tuple_material:
|
||||||
|
- input_set_digest
|
||||||
|
- stage2_release_digest
|
||||||
|
- algorithm_digest
|
||||||
|
- release_class
|
||||||
|
same_run_tuple_byte_identical_required: true
|
||||||
|
different_run_tuple_requires_new_run_id: true
|
||||||
|
conflicting_existing_output_overwrite_allowed: false
|
||||||
|
|
||||||
|
prohibitions:
|
||||||
|
llm_provider_field_allowed: false
|
||||||
|
llm_model_field_allowed: false
|
||||||
|
prompt_body_allowed: false
|
||||||
|
inline_python_allowed: false
|
||||||
|
inline_schema_allowed: false
|
||||||
|
direct_runtime_call_allowed: false
|
||||||
|
arbitrary_mcp_endpoint_allowed: false
|
||||||
|
external_network_access_allowed: false
|
||||||
|
directory_scan_allowed: false
|
||||||
|
fuzzy_path_fallback_allowed: false
|
||||||
|
raw_stage1_id_normalization_allowed: false
|
||||||
|
claim_or_case_type_generation_allowed: false
|
||||||
|
old_stage2_dependency_allowed: false
|
||||||
|
fixture_success_as_production_evidence_allowed: false
|
||||||
|
|
||||||
|
acceptance_contract:
|
||||||
|
executable_yaml_acceptance_deferred: true
|
||||||
|
defer_reason: O-06_OPEN_EXTERNAL_BACKEND
|
||||||
|
non_execution_static_checks:
|
||||||
|
- YAML_STRICT_PARSE
|
||||||
|
- CANONICAL_REFERENCE_PATHS_EXIST
|
||||||
|
- NO_LLM_OR_PROMPT_OR_INLINE_CODE
|
||||||
|
- LEGACY_V0_V3_DEPENDENCY_COUNT_ZERO
|
||||||
|
- FIXED_ARGV_MATCHES_LOADER_BINDING
|
||||||
|
- RELEASE_STATUS_REMAINS_DRAFT_NOT_EXECUTABLE
|
||||||
|
completion_claim_allowed_now: CONTRACT_CANDIDATE_ONLY
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
# S2_00 AgentBackend YAML 구현
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
`S_00_SOW.md`와 Stage 2 v4 계약을 그대로 실행 경계로 삼아, 이미 배포된 `Default_Agent/Stage_2_Clean/` 고정 자산을 소비하는 독립 실행용 `Stage_2_S2_00.yml`을 작성한다.
|
||||||
|
|
||||||
|
## Deliverables
|
||||||
|
|
||||||
|
- `YAML_Prompts/2. Stage_2/Stage_2_S2_00.yml`
|
||||||
|
- `YAML_Prompts/2. Stage_2/MEMORY.md`의 압축 작업 기록
|
||||||
|
- 후보 2개, 앙상블, 2회 독립 병렬 평가의 검증 근거
|
||||||
|
|
||||||
|
## Scope and Non-Scope
|
||||||
|
|
||||||
|
- 범위: AgentBackend orchestration YAML, loader/runtime 호출 계약, deterministic 분기·출력·오류 전파, 정적 검증.
|
||||||
|
- 비범위: 신규 Python 구현, 법률 content 보강, Stage 1 live 실행, production admission, 외부 서명·법률가 승인.
|
||||||
|
|
||||||
|
## Known Inputs
|
||||||
|
|
||||||
|
- `YAML_Prompts/2. Stage_2/S_00_SOW.md`
|
||||||
|
- `YAML_Prompts/2. Stage_2/stage_2_optimal_update_strategy_v.4.md`
|
||||||
|
- `YAML_Prompts/2. Stage_2/SKILL.md`
|
||||||
|
- `YAML_Prompts/2. Stage_2/Default_Agent/Stage_2_Clean/`
|
||||||
|
- `YAML_Prompts/2. Stage_2/Prompt_stage_2_S2_00_assets_creation.txt`
|
||||||
|
|
||||||
|
## Material Assumptions
|
||||||
|
|
||||||
|
- 사용자 문구의 `S2_00_SOW.md`는 저장소 정본 파일명 `S_00_SOW.md`를 가리킨다.
|
||||||
|
- 최종 YAML은 Main working directory에 저장하며, 고정 Python의 내용을 인라인 재구현하지 않고 배포 자산을 호출한다.
|
||||||
|
|
||||||
|
## Questions That Could Change the Outcome
|
||||||
|
|
||||||
|
- 없음. 경로·실행 경계는 정본 SOW, 배포 binding 및 로컬 YAML 가이드에서 확인한다.
|
||||||
|
|
||||||
|
## Workstreams and Dependencies
|
||||||
|
|
||||||
|
1. 정본 계약과 실제 배포 자산의 일치 여부를 조사한다.
|
||||||
|
2. 독립 후보 YAML 2개를 병렬 설계한다.
|
||||||
|
3. Main agent가 계약별 장점을 취합해 단일 초안을 작성한다.
|
||||||
|
4. 독립 evaluator 2개로 Round 1 평가 후 증분 개정한다.
|
||||||
|
5. 새 evaluator 2개로 Round 2 평가 후 증분 개정한다.
|
||||||
|
6. 구문·DAG·경로·금지 edge·MEMORY를 검증한다.
|
||||||
|
|
||||||
|
## Source and Tool Plan
|
||||||
|
|
||||||
|
- 로컬 정본 문서와 실제 파일을 우선한다.
|
||||||
|
- `rg`, YAML parser, 프로젝트 테스트와 읽기 전용 sub-agent 감사를 사용한다.
|
||||||
|
- 외부 웹 조사나 외부 write는 수행하지 않는다.
|
||||||
|
|
||||||
|
## Validation Plan
|
||||||
|
|
||||||
|
- YAML parse 및 Agent/Stages/task_procedure/tasks 연결 검증
|
||||||
|
- 모든 참조 자산의 존재·NFC 경로 검증
|
||||||
|
- loader/runtime 호출·상태 분기·single writer·구 v.0~v.3 dependency 0 확인
|
||||||
|
- 독립 평가 2개 × 정확히 2회
|
||||||
|
- staged/working tree의 무관 파일 비변경 확인
|
||||||
|
|
||||||
|
## Approval Boundaries
|
||||||
|
|
||||||
|
- 요청된 로컬 파일 생성·검증만 수행한다.
|
||||||
|
- commit, production 배포, 외부 실행, 서명·법률 승인 상태 변경은 수행하지 않는다.
|
||||||
|
|
||||||
|
## Progress
|
||||||
|
|
||||||
|
- [x] 프로젝트 규칙·MEMORY·SKILL 위치 확인
|
||||||
|
- [x] 정본 SOW·v4·배포 계약 조사
|
||||||
|
- [x] 독립 후보 2개
|
||||||
|
- [x] 앙상블 초안
|
||||||
|
- [x] Round 1 평가·개정
|
||||||
|
- [x] Round 2 평가·개정
|
||||||
|
- [x] 정적 검증
|
||||||
|
- [x] MEMORY 기록
|
||||||
|
|
||||||
|
## Decision Log
|
||||||
|
|
||||||
|
| Date/Stage | Decision | Basis | Consequence |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 2026-08-30 / 착수 | `S_00_SOW.md`를 사용자 지칭 SOW의 정본으로 사용 | 저장소에 `S2_00_SOW.md`는 없고 해당 내용·history가 `S_00_SOW.md`에 존재 | 잘못된 유사 파일 생성·참조 방지 |
|
||||||
|
| 2026-08-30 / 앙상블 | canonical workflow를 복제하지 않는 thin loader-adapter를 기본으로 하고 필요한 보존·route view만 둔다 | 후보 A는 계약 완전성, 후보 B는 drift 최소화를 각각 강화 | release가 유일 정본이며 이 파일의 복사 field는 비권위 view |
|
||||||
|
| 2026-08-30 / Round 1 | O-06 전에는 빈 tasks·nexts와 host reject를 유지하고, O-06 후에는 지원 field만 가진 native projection으로 원자 교체한다 | 현재 AgentBackend에 외부 `.py` native primitive가 확인되지 않았고 확장 field는 실행 grammar가 아님 | 성공 no-op·미확인 tool 창작·loader 우회 방지 |
|
||||||
|
| 2026-08-30 / Round 1 | loader/runtime 변경 요구는 YAML의 activation prerequisite로만 기록한다 | 이번 deliverable은 YAML 1개이며 기존 고정 자산 수정은 범위 밖 | single receipt·timeout·context binding 없이는 case activation 금지 |
|
||||||
|
| 2026-08-30 / Round 2 | review enum은 `SUPPORTED`, slot enum은 `UNEVALUABLE` 포함으로 실제 schema와 일치시키고 explicit relation adapter가 미결속이면 해당 hard join만 비활성화한다 | 두 evaluator가 enum drift와 자유형 explicit relation 결속을 MAJOR로 식별 | 입력 의미를 임의 확장하지 않고 scope별 issue로 보존 |
|
||||||
|
| 2026-08-30 / Round 2 | validate-only receipt v1과 사건 실행 receipt v2를 분리하고 native task를 loader invoke·receipt 검증·상호배타 dispatch를 담당하는 단일 원자 primitive로 한정한다 | 현재 loader는 case receipt·stdout capture·timeout·non-DEV admission을 구현하지 않음 | O-06/O-07 및 후속 구현 전 `tasks: []`, `nexts: []` 유지 |
|
||||||
|
| 2026-08-30 / 최종 | 복사 view 24개를 machine-addressable local/authority pointer 또는 명시적 future blocking row로 관리한다 | evaluator의 drift-control·self-binding 지적 | canonical 자산 변경을 묵시적으로 수용하지 않고 activation 차단 |
|
||||||
|
|
||||||
|
## Evidence Ledger
|
||||||
|
|
||||||
|
| Claim/Issue | Source or Test | Status | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| S2_00 계약 | `S_00_SOW.md` | 조사 중 | 전체 계약 확인 필요 |
|
||||||
|
| Stage 2 상하류 경계 | `stage_2_optimal_update_strategy_v.4.md` | 조사 중 | S2_10/S2_40 handoff 포함 |
|
||||||
|
| AgentBackend YAML 문법 | `YAML_Prompts/2. Stage_2/SKILL.md` | 확인 | 독립 실행 YAML 구조·code-executor 규칙 적용 |
|
||||||
|
| 배포 자산 | `Default_Agent/Stage_2_Clean/` | 조사 중 | manifest/binding/runtime 확인 필요 |
|
||||||
|
| 후보 설계 | `plans/s2-00-agent-yaml-candidate-a.yml`, `candidate-b.yml` | 확인 | 2개 독립 후보 모두 O-06 OPEN을 보존 |
|
||||||
|
| Round 1 법률·계약 평가 | 독립 evaluator | 반영 | affected-scope·review·slot·relation·route 보강 |
|
||||||
|
| Round 1 architecture 평가 | 독립 evaluator | 반영 | native projection·single receipt·activation·retry·self-binding 보강 |
|
||||||
|
| Round 2 법률·계약 평가 | 독립 evaluator | 반영 | CRITICAL 0, MAJOR 4, MINOR 1; review/slot·explicit relation·receipt profile·활성화 경계 개정 |
|
||||||
|
| Round 2 architecture 평가 | 독립 evaluator | 반영 | CRITICAL 0, MAJOR 6, MINOR 1; native graph·workspace·timeout·self-binding·drift row 개정 |
|
||||||
|
| 최종 YAML 정적 계약 | duplicate-key detector + pointer cross-check | PASS | 24 comparison rows(19 bound, 5 future-blocking), 16+1 ingress, C00→C15, 12/5 output 확인 |
|
||||||
|
| 기존 S2_00 회귀검사 | `unittest discover tests/s2_00` | PASS | 38/38 PASS |
|
||||||
|
| loader trust-boundary 검사 | validate-only loader 호출 | PASS WITH PENDING | `VALIDATED_WITH_PENDING_BINDINGS`; production 또는 case invoke 증명 아님 |
|
||||||
|
|
||||||
|
## Risks and Failure Modes
|
||||||
|
|
||||||
|
- 정본 workflow YAML과 AgentBackend 실행 YAML을 혼동해 duplicate runtime logic을 만드는 위험
|
||||||
|
- DRAFT/DEV release를 production-ready로 오인하는 위험
|
||||||
|
- localdocs user/workspace 격리 또는 host loader 경계를 우회하는 위험
|
||||||
|
- 조건 분기에서 diagnostic artifact가 누락되거나 두 consumer가 동시에 실행되는 위험
|
||||||
|
|
||||||
|
## Results and Residual Uncertainty
|
||||||
|
|
||||||
|
`Stage_2_S2_00.yml`을 954행/45,833 bytes/SHA-256
|
||||||
|
`3fbadd9bf48e8d3921b43f766690bf67ad1dd2cd0a8f624d78a9b3223edeeeb7`로 생성했다.
|
||||||
|
이는 S2_00 고정 자산을 가리키는 정적 AgentBackend loader-adapter 계약이다. O-06 native
|
||||||
|
primitive, O-07 signed admission, receipt v2, authenticated workspace mapping, loader timeout,
|
||||||
|
explicit relation adapter, completion seal·detached signature가 닫히지 않아 실행 task와 downstream
|
||||||
|
edge는 의도적으로 비어 있다. 따라서 현 결과는 production-ready 실행 YAML이 아니라 검증 가능한
|
||||||
|
`DRAFT_NOT_EXECUTABLE` authoring projection이며, 위 전제들을 모두 충족한 atomic native projection으로
|
||||||
|
교체·재봉인한 뒤에만 case activation을 주장할 수 있다.
|
||||||
Reference in New Issue
Block a user