- 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/
2.3 KiB
id, name, status, depends_on, scope, risk, impact, level, tags
| id | name | status | depends_on | scope | risk | impact | level | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| architecture/oq-tn-12-tracker | OQ-TN-12 follow-through: hub re-produce composition helper (deferred scope) | pending | single | trivial | isolated | research |
|
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.