Files
alktunnels/tasks/architecture/oq-tn-12-tracker.md
T
glm-5.3-flash 0ceecf582b docs: remove em dashes from repo prose and forbid them going forward
- 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

Follows 6b20924 (src doc comments) and cd0afe0 (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/
2026-11-03 14:12:46 +00:00

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.