Establishes the tasks/architecture/ blocker-task half of the Safe Exit protocol. Each deferred OQ now has an external-trigger tracker task representing its unblocking condition, and the OQ's Blocked on field names the tracker task ID — closing the gap where the deferral field existed but the task-graph half was unenforced. Changes: - Add 6 external-trigger tracker tasks for the deferred OQs (OQ-09, 10, 32, 41, 44, 46) under tasks/architecture/, tagged [external-trigger, deferred-oq] - Add structured Blocked on field to OQ-09 and OQ-10 (previously used legacy 'deferred' status with the reason in the Resolution prose); index now surfaces all 6 deferred OQs with concrete conditions, no placeholders - Document the architecture-task level mapping (level: implementation for ADRs/specs, decomposition for spec-to-ADR breakdown, planning for backlog seeding, research/review direct fits) and the deferred-OQ blocker-task pattern in docs/sdd_process.md - Mark architecture/safe-exit-blocker-task-mechanism and architecture/oq-09-10-blocking-conditions completed (implemented by this pass) - Fix 4 pre-existing ADR-050 implementation tasks: status: done → completed (taskgraph enum is 'completed', not 'done') — taskgraph validate now passes for all 100 tasks
56 lines
2.3 KiB
Markdown
56 lines
2.3 KiB
Markdown
---
|
|
id: architecture/oq-10-git-adapter-spec
|
|
name: External trigger — speccing alknet-git (resolve OQ-10 when that crate is specified, not deferred past it)
|
|
status: pending
|
|
depends_on: []
|
|
scope: single
|
|
risk: trivial
|
|
impact: component
|
|
level: research
|
|
tags: [external-trigger, deferred-oq]
|
|
---
|
|
|
|
## Description
|
|
|
|
External-trigger tracker for [OQ-10](../docs/architecture/questions/010-git-adapter-scope-smart-protocol-only-or-full-server.md)
|
|
(Git Adapter Scope — Smart Protocol Only or Full Server?). This is **not
|
|
actionable work** — it tracks when the alknet-git crate is being specified,
|
|
at which point OQ-10 must be resolved (not deferred past it).
|
|
|
|
## Trigger condition
|
|
|
|
The alknet-git crate is being specified. The OQ's Resolution text already
|
|
states: "Resolve this when speccing alknet-git, not deferred past it." The
|
|
two sub-questions:
|
|
|
|
1. **Git adapter scope** — start with git smart protocol over QUIC streams;
|
|
ERC721 integration and full server capabilities are additive.
|
|
2. **Composability fork** — whether git operations are registered in the
|
|
`OperationRegistry` and callable via `env.invoke()`, or only available as
|
|
raw smart protocol on `alknet/git`. The path of least resistance (raw
|
|
smart protocol only) forecloses agent composition of git operations; to
|
|
make git composable, a call-protocol projection (a set of
|
|
`HandlerRegistration` bundles wrapping git operations behind the
|
|
registry) must be built alongside or instead of the raw handler.
|
|
|
|
## What unblocking looks like
|
|
|
|
When alknet-git is specced:
|
|
|
|
1. Mark this task `status: completed`.
|
|
2. Move [OQ-10](../docs/architecture/questions/010-git-adapter-scope-smart-protocol-only-or-full-server.md)
|
|
from `deferred` to `open`, then resolve it as part of the alknet-git spec
|
|
pass (the Resolution text is explicit: do not defer past the spec).
|
|
|
|
## Why this is a task, not just an OQ field
|
|
|
|
OQ-10 predates the formalized `deferred(scope)` + blocking-condition pattern
|
|
and lacked a structured `Blocked on:` field (it used the legacy `deferred`
|
|
status with the deferral reason in the Resolution prose). This task
|
|
formalizes the blocking condition and gives the OQ a machine-readable
|
|
presence in the task graph.
|
|
|
|
## Verification
|
|
|
|
This task is "completed" when alknet-git is being specced and OQ-10 has been
|
|
moved to `open` (then resolved as part of that spec pass). |