83 lines
3.3 KiB
JSON
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"
|
|
]
|
|
}
|