Macro-2 Rejected-Channel Register — R2-B2 (2026-06-19)
Macro-2 Rejected-Channel Register — R2-B2
Date: 2026-06-19 · Workstream: R2-B2-MACRO-2-OWNER-DECISION-PREREQ-CLOSURE-READINESS-2026-06-19 (Deliverable 12 of 45) · Editorial revision: rev1
Class: rejected/deferred channel register · READ-ONLY · NON-ENACTING · NON-AUTHORIZING · NO channel selected · NO write performed.
Metadata convention. Editorial revision (rev1) only. AgentData storage revision/
content_lengthauthoritative at read time; not pinned here.
Rejection lock. Records which channels are rejected as standing channels and which are future-gated (not candidates) — with reasons. It rejects/defers as classification only; it selects nothing and forecloses no future Owner choice.
0. Status and non-authorization
STATUS: PASS — engineering / classification. A register of the rejected and future-gated channels, with fresh-evidence reasons. It selects nothing.
Engineering PASS ≠ authority PASS. Default disposition: HOLD. No channel selected; no install/enable; no DB write/DDL/DML; no TD; no blocker resolved; v0.1 not overwritten; v0.2 not authority.
Evidence basis — FRESH_READONLY_EVIDENCE (2026-06-19) + INHERITED_KB_EVIDENCE. Reading discipline: main process, no reader-agents.
1. Purpose
State, separately from the candidates, which channels are out of contention now and why — so the Owner's choice is bounded to the live candidates.
2. Sources / evidence read
Deliverable 6 (channel ballot); the inspect-producer TD-prep §11 (manual one-shot reject; B5 separation); the fresh RQ-ledger. Read directly, main process.
3. Accepted baseline (carried)
manual one-shot = rejected as a standing channel; pg_cron + job_queue = risky/future-gated.
4. Rejected / future-gated register
| Channel | Classification | Reason (FRESH 2026-06-19) | Could it return? |
|---|---|---|---|
| manual one-shot | rejected as standing channel | the 2026-03-21 SSH+docker exec pattern; violates Điều 32 §2.1 (no manual SQL / no curl bypass); not testable/replaceable/rollback-able as a block; vehicle of the fused INSERT |
only as B5 — a separate, bounded, Owner-approved one-time backlog pass through the same fail-closed contract (never the fused shortcut) |
| pg_cron | future-gated (not a candidate now) | extension absent (RQ-4); installing it is a net-new infra write | yes, if the Owner approves an extension install (separate gate) |
| job_queue worker | future-gated (not a candidate now) | queue.worker.enabled=false, queue.job_substrate.enabled=false (RQ-13); event_outbox 215,607 undrained (RQ-8) — the "queue nobody drains" failure mode is already present |
yes, if the Owner enables + proves draining (separate gate) |
Reading. Rejection/deferral is classification, not foreclosure — the Owner may still later open pg_cron or job_queue behind their own gates; manual one-shot stays rejected as a standing channel (its only legitimate residual form is B5).
5. Result
manual one-shot rejected as standing; pg_cron + job_queue future-gated; the live candidate set is host cron + agent-api (Deliverables 6–9). No channel selected.
6. Owner-gated future work
Re-opening pg_cron/job_queue (install/enable) or running a one-time B5 pass are all separate Owner-gated acts; forbidden now.
7. What remains unresolved
- Candidate set bounded to host cron + agent-api; pg_cron/job_queue future-gated; manual one-shot rejected.
- Blockers — all OPEN.
8. Ready for GPT/Codex review
Yes — as the rejected-channel register.
Core rule: manual one-shot rejected as standing (B5 = its only residual form); pg_cron + job_queue future-gated; no channel selected; no foreclosure of a future Owner-gated choice.
Default disposition: HOLD. Engineering PASS ≠ authority PASS. All blockers remain OPEN.