79 lines
3.7 KiB
JSON
79 lines
3.7 KiB
JSON
{
|
|
"task_id": "ARCH-000005",
|
|
"task_revision": 1,
|
|
"architecture_revision": "ADR-0004",
|
|
"base_repo_revision": "91d03b730d1bdbbe8e67b831fb21046768c4df5e",
|
|
"risk_tier": "E",
|
|
"intent": "Produce a proposal-only decision for Domovoy's first real external operation, including typed semantics, authority, capability binding, idempotency, reconciliation, secret lifecycle, and safe implementation slices without installing credentials or changing runtime behavior.",
|
|
"requirement_ids": ["INV-AUTH-001", "INV-OWN-001", "CONSTITUTION-1.3.5", "CONSTITUTION-1.3.14", "CONSTITUTION-1.3.31"],
|
|
"allowed_change_scope": {
|
|
"modules": [],
|
|
"paths": [
|
|
"docs/FIRST_EXTERNAL_OPERATION_PROPOSAL.md",
|
|
"dev/ACTIVE_TASK.json",
|
|
"dev/tasks/ARCH-000005-first-external-operation-proposal.json"
|
|
]
|
|
},
|
|
"forbidden_change_scope": {
|
|
"paths": [
|
|
"architecture/**",
|
|
"ci/**",
|
|
".gitea/**",
|
|
"security/**",
|
|
"database/**",
|
|
"modules/**",
|
|
"contracts/**",
|
|
"adapters/**",
|
|
"cmd/**",
|
|
"deploy/**",
|
|
"tests/**"
|
|
]
|
|
},
|
|
"allowed_architecture_delta": {
|
|
"new_cross_module_dependencies": 0,
|
|
"new_canonical_owners": 0,
|
|
"new_privileges": 0,
|
|
"new_third_party_dependencies": 0
|
|
},
|
|
"contracts": {
|
|
"consume": ["Architecture Constitution", "Core Semantic Model V1", "ADR-0003", "existing CapabilityBinding ownership", "existing Commit/Executor boundary"],
|
|
"may_change": []
|
|
},
|
|
"semantic_owner": "proposal-only; no architecture decision is accepted by this task",
|
|
"canonical_state": ["none"],
|
|
"state_transitions": ["none"],
|
|
"side_effects_and_privileges": ["select ARCH-000005 in the protected active-task pointer so promotion CI can validate this proposal", "no endpoint call, secret creation, deployment, or runtime mutation"],
|
|
"persistence_and_migrations": ["none"],
|
|
"failure_retry_restart": ["proposal must specify deterministic idempotency and read-only reconciliation", "implementation remains blocked until explicit acceptance and a concrete compatible destination"],
|
|
"assumptions": [
|
|
"The first external operation should extend the existing Creator and Continuity flow rather than introduce an unrelated automation domain",
|
|
"A destination chosen later can provide an idempotent create-by-ActionIntentID and read-only lookup protocol",
|
|
"No arbitrary URL or arbitrary provider payload should cross the Creator or model boundary",
|
|
"docker-test remains prohibited"
|
|
],
|
|
"acceptance_scenarios": [
|
|
"proposal compares notification, arbitrary webhook, file export, Git mutation, and direct provider alternatives",
|
|
"proposal recommends one typed operation without treating the provider mechanism as domain meaning",
|
|
"proposal keeps destination binding canonical under the existing Capability owner and secrets external",
|
|
"proposal requires explicit Creator confirmation, live Work justification, current authority, and current capability binding revision",
|
|
"proposal defines idempotent execution, UNKNOWN_OUTCOME, read-only reconciliation, and binding retirement behavior",
|
|
"proposal prevents SSRF, redirects, arbitrary URL/body, ambient credentials, and blind retry",
|
|
"proposal identifies the minimum external destination facts still requiring explicit acceptance",
|
|
"the active task pointer selects this proposal and no implementation, protected architecture, credential, or deployment state is changed"
|
|
],
|
|
"required_tests": [
|
|
"architecture preflight",
|
|
"exact diff scope",
|
|
"constitutional and ADR-0003 semantic review",
|
|
"go test",
|
|
"go vet",
|
|
"CI"
|
|
],
|
|
"terminal_gap_states": [
|
|
"BLOCKED_BY_SPEC_GAP",
|
|
"BLOCKED_BY_ARCHITECTURE_GAP",
|
|
"BLOCKED_BY_MISSING_CAPABILITY",
|
|
"BLOCKED_BY_CONFLICT"
|
|
]
|
|
}
|