excel唯一逻辑修复

This commit is contained in:
andy
2026-09-15 14:24:20 +08:00
parent ede1d47c47
commit af85ea22ec
24 changed files with 784 additions and 34 deletions

View File

@@ -1,7 +1,7 @@
{
"contract_version": "ltjt-lifecycle-v2.9-roster-leader-contact-2026-08",
"current_agent_parse_prompt_version": "ltjt-agent-prompt-v1.8-independent-headcount-categories",
"current_extension_version": "0.5.184",
"current_extension_version": "0.5.185",
"original_arrangement_date_selection": "Hotel, vehicle, transport and other/filing update selection accepts MM-DD or YYYY-MM-DD; omitted year matches original ERP month/day within the exact group only. Require exactly one persisted row, then freeze its actual full dates and id. Full year is exact; mixed/cross-year endpoints are matched independently with actual range order checked. No match or ambiguity blocks before mutation; show up to five original candidates and ask to resubmit complete dates. Creation and legacy target-date changes retain existing semantics.",
"historical_test_marker": "TEST-202609",
"scope": "/System/Business/",
@@ -29,7 +29,8 @@
"cooldown_minutes": 2,
"max_attempts_per_cooldown": 1,
"action": "reload the existing allowlisted ERP tab with bypassCache=true, wait for complete, then repeat the read-only GET probe",
"failure_policy": "record structured recovery status and require manual login/inspection; an interrupted MV3 service worker recovery is normalized out of running and the next successful read-only probe returns the recovery state to idle; never retry a business operation"
"failure_policy": "record structured recovery status and require manual login/inspection; an interrupted MV3 service worker recovery is normalized out of running and the next successful read-only probe returns the recovery state to idle; never retry a business operation",
"reload_diagnostics": "record recovery_reload_requested_at and recovery_tab_id when reload is invoked; resolution failures snapshot safe recovery timing so later probes do not replace task evidence; timestamps alone do not prove causation"
}
},
"erp_account_identity": {
@@ -83,6 +84,17 @@
"storage": "runtime state in extension local storage; sanitized public snapshot in the encrypted execution result plus a PII-free JSONB summary"
},
"execution_policy": {
"readonly_resolution_navigation_retry": {
"scope": "resolveLifecycleOperation before route preparation and write_started only",
"trigger": "Chrome Frame with ID 0 was removed",
"max_attempts": 2,
"stable_document_wait_ms": 8000,
"readiness": "two complete read-only top document samples at least 250 ms apart, same non-empty Chrome documentId and allowlisted URL; fail closed without documentId",
"execution_guard": "same execution_id, state running, no write_started_at, cancellation checked throughout wait and before retry",
"retry_action": "fresh adapter injection and complete read-only unique target resolution; never replay a save or retry a business no-match/ambiguous result",
"failure_attribution": "resolution exceptions remain erp_resolution; route and preflight exceptions retain their actual phase",
"diagnostics": "bounded per-task attempt count, injection/action step, observation timestamp and safe automatic recovery status/timestamps with same-tab indicator; no business values or URLs; no normal heartbeat log"
},
"release_state": "guarded_narrow_candidate_pending_business_approval",
"platform_envelope_requires": [
"task_id",