- Rewrote the remaining em dashes outside docs/reviews/ (preserved as historical record, matching the alktty precedent): tests/ (313), fuzz/ (34 plus one shell comment), tasks/ (671 plus 12 kept in fences), docs/research + sdd_process + plans (525 plus 25 in fences), docs/architecture/overview.md fence labels (13), README, CHANGELOG, AGENTS.md, fuzz/README.md (176), and the .opencode/agents prompts (110) - Rewrote fenced content too: ASCII tree and module-map label separators, Rust snippet comments, and template placeholders; wire data, JSON/BAST examples, and transcripts survive verbatim - Rewrote 6 assert/expect message literals in tests/ and 2 format strings in fuzz/shared/src; no test data changed - Added Project Convention 18: no em dashes in prose (doc comments, markdown including docs/ and tasks/, agent prompts, commit messages); fence content rule, en-dash clause rule, and the no-spaced-hyphen prohibition follow alktty's convention 15 Follows6b20924(src doc comments) andcd0afe0(docs/architecture). Verification: cargo test (141 pass); cargo clippy --all-targets -D warnings; cargo fmt --check; cargo doc --no-deps; wasm check and clippy for wasm32-unknown-unknown with -D warnings; em dash grep over the repo returns matches only in docs/reviews/
67 lines
2.3 KiB
Markdown
67 lines
2.3 KiB
Markdown
---
|
|
id: architecture/oq-tn-12-tracker
|
|
name: "OQ-TN-12 follow-through: hub re-produce composition helper (deferred scope)"
|
|
status: pending
|
|
depends_on: []
|
|
scope: single
|
|
risk: trivial
|
|
impact: isolated
|
|
level: research
|
|
tags: [architecture, external-trigger, deferred-oq, hub, producer, consumer]
|
|
---
|
|
|
|
## Description
|
|
|
|
OQ-TN-12 is `deferred(scope)` (open-questions.md): the hub re-produce
|
|
composition helper: whether a crate that re-produces a tunnel resource it
|
|
consumes (a hub proxy: consumer + `register_openable` on the same
|
|
connection) needs a composition helper from this crate, or assembles from
|
|
the public producer/consumer surface as-is. ADR-004 resolved the substrate
|
|
inversion point to "no trait, halves functions"; the re-produce half has no
|
|
concrete consumer yet, so the decision is deferred until one exists.
|
|
|
|
This task is the machine-readable half of the deferral (per
|
|
`docs/sdd_process.md` §Deferred OQs and the blocker-task half): it tracks
|
|
whether the unblocking condition has arrived. It is not implementation
|
|
work and blocks nothing.
|
|
|
|
The unblocking condition: a concrete hub-proxy consumer, i.e. a
|
|
crate that
|
|
re-produces a consumed tunnel resource (the reverse POC's hub is the seed
|
|
shape minus re-export: consumer + `register_openable` on the same
|
|
connection, without exercising re-export).
|
|
|
|
## Work
|
|
|
|
- Re-read OQ-TN-12 + ADR-004 at triage; confirm no hub-proxy consumer has
|
|
materialized (if one has, the OQ transitions deferred(scope) → open and
|
|
the composition-helper decision runs as its own task).
|
|
|
|
## Verification
|
|
|
|
- [ ] Tracked (this file existing and being reviewed at triage time IS
|
|
the tracking mechanism; no code or doc change is expected unless
|
|
the unblocking condition above arrives)
|
|
|
|
## Out of scope
|
|
|
|
- Deciding the composition-helper question itself (runs as a new
|
|
architecture task once the condition arrives)
|
|
- Building a hub proxy (the condition is a consumer existing, not us
|
|
building one)
|
|
|
|
## References
|
|
|
|
- docs/architecture/open-questions.md OQ-TN-12 (the deferral + Blocked-on
|
|
condition)
|
|
- docs/architecture/decisions/004-no-backend-trait.md (the no-trait
|
|
resolution this deferral rides on)
|
|
- docs/sdd_process.md §Deferred OQs and the blocker-task half
|
|
|
|
## Notes
|
|
|
|
> Agent fills during implementation.
|
|
|
|
## Summary
|
|
|
|
> Agent fills this on completion. |