Files
Assistant/dev/tasks/ARCH-000004-implement-diff-scope-guardrail.json
m 111ad75dea
CI / test (push) Successful in 11s
feat: enforce exact task diff scope
2026-08-16 16:47:06 +03:00

83 lines
3.3 KiB
JSON

{
"task_id": "ARCH-000004",
"task_revision": 1,
"architecture_revision": "ARCH-000003 accepted by explicit user continuation",
"base_repo_revision": "b007f09",
"risk_tier": "E",
"intent": "Implement the accepted exact Git diff-to-active-task scope guardrail, protect its control surfaces, and make promotion CI fail closed.",
"requirement_ids": ["CONSTITUTION-1.3.27", "CONSTITUTION-1.3.28"],
"allowed_change_scope": {
"modules": [],
"paths": [
".gitea/workflows/ci.yml",
"architecture/adrs/ADR-0004-exact-diff-scope-guardrail.md",
"architecture/architecture-registry.yaml",
"architecture/architecture-registry.json",
"ci/architecture/protected-paths.txt",
"cmd/devctl/**",
"dev/ACTIVE_TASK.json",
"dev/tasks/ARCH-000004-implement-diff-scope-guardrail.json",
"docs/DIFF_SCOPE_GUARDRAIL_PROPOSAL.md"
]
},
"forbidden_change_scope": {
"paths": [
"architecture/ARCHITECTURE_CONSTITUTION.md",
"architecture/CORE_SEMANTIC_MODEL_V1.md",
"security/**",
"database/**",
"modules/**",
"contracts/**",
"adapters/**",
"deploy/**",
"tests/**"
]
},
"allowed_architecture_delta": {
"new_cross_module_dependencies": 0,
"new_canonical_owners": 0,
"new_privileges": 0
},
"contracts": {
"consume": ["Git repository state", "Codex Task Packet JSON"],
"may_change": ["devctl command surface", "promotion CI guardrail", "protected path registry"]
},
"semantic_owner": "none-architecture-guardrail",
"canonical_state": ["none"],
"state_transitions": ["active task pointer selects exactly one task packet for promotion validation"],
"side_effects_and_privileges": ["reads Git metadata and working-tree path names only", "does not read changed file contents", "does not mutate repository or external systems"],
"persistence_and_migrations": ["versioned dev/ACTIVE_TASK.json only", "no database migration"],
"failure_retry_restart": ["all missing, invalid, ambiguous or out-of-scope states fail closed", "command is deterministic and safe to rerun"],
"assumptions": [
"The user's continuation after the ARCH-000003 acceptance request accepts all eight proposal decisions",
"The implementation task starts at commit b007f09",
"Inactive historical task packets are preserved without retroactive validation"
],
"acceptance_scenarios": [
"one committed active-task pointer selects and agrees with one packet",
"base revision resolves to an ancestor commit",
"tracked, staged, unstaged, untracked, deleted and renamed paths are checked",
"only deterministic exact, subtree and segment-local glob matches are allowed",
"all malformed or ambiguous inputs fail closed",
"CI checks out full history and invokes preflight plus check-diff through the active pointer",
"workflow, devctl and active pointer become protected Tier E surfaces",
"registry YAML and JSON remain equivalent",
"negative fixtures demonstrate every required rejection"
],
"required_tests": [
"unit",
"negative fixtures",
"architecture preflight",
"architecture sentinel",
"registry parity",
"go vet",
"exact diff-scope self-check",
"independent Tier E CI review"
],
"terminal_gap_states": [
"BLOCKED_BY_ARCHITECTURE_GAP",
"BLOCKED_BY_SPEC_GAP",
"BLOCKED_BY_CONFLICT"
]
}