Internal procedure for writers, coding agents, and maintainers. This is not
the customer README. Product facts for buyers and operators stay in
README.md.
README.mdis customer/operator facing. Do not turn it into a bot work manual (PR stacking, exact-head CI tips, do-not-merge checklists, CloudAgent or OpenCode session steps, hourly-loop instructions).- Cross-agent security and LLM-gateway rules live in
AGENTS.md. - Secrets reach
src/only through the typed WorkerEnvbinding (wrangler secret put). Do not introduceprocess.env/os.getenvsecret reads insrc/. - Do not sequentially try the next model or agent. The orchestrator selects min-cost / max-performance. Do not configure a direct-provider fallback.
- Do not treat cancelled OpenCode or Strix bodies as paper or standard grounds.
Reuse existing verified APA 7th citations in
docs/doctoring/; do not invent papers or treat drafts as final. - Do not merge this leaf into a composition hub. Hub-and-leaf calls through the
published API and
contracts/orchestrator-gateway.jsonare the supported path. Naruon and gyeot (곁) are intended composition hubs; keep those links.
The product repository owns the default-branch-only
central-review runtime. It
accepts a noema-review repository_dispatch event containing
target_repository, pr_number, and the exact pr_head_sha; branch-selected
manual workflow code cannot receive the App key. The runtime waits up to 90
minutes for non-OpenCode checks, initializes and explores CodeGraph at the
exact target head, permits a single provider request to run for 90 minutes, and
delegates upstream failover to contextual-orchestrator before publishing an
App-authored review. Before sending the manifest it rejects known
direct-provider URLs and verifies the unauthenticated /healthz service
identity. It rejects target symlinks, strips credentials from the CodeGraph
subprocess, and revalidates the live head immediately before publication.
The production cutover is intentionally separate from the code change because
it creates organization variables and a secret. Follow the
contextual-orchestrator reviewer cutover runbook;
do not reuse OPENAI_API_KEY as Noema's gateway token.
Example dispatch (bind the SHA from a fresh PR read, never from stale local state):
gh api repos/ContextualWisdomLab/noema/dispatches -X POST --input - <<'JSON'
{"event_type":"noema-review","client_payload":{"target_repository":"ContextualWisdomLab/example","pr_number":1,"pr_head_sha":"0123456789abcdef0123456789abcdef01234567"}}
JSONSandbox and evidence-collection isolation:
docs/noema-agent-sandbox-plan.md.
.github/workflows/hourly-product-development.yml runs a proposal-only
OpenCode session through the same contextual-orchestrator gateway contract as
review (NOEMA_LLM_API_URL, NOEMA_LLM_MODEL, dedicated NOEMA_LLM_API_KEY)
when the PR queue is empty. It does not iterate a model-candidate list. It
cannot review, merge, release, or deploy; the existing hourly
commercial-readiness loop retains exact-head governance and SHA-bound merge
authority.
Operator narrative:
docs/operations/hourly-product-development.md.
Prerequisites:
docs/operations/hourly-product-development-prerequisites.md.
.github/workflows/hourly-commercial-readiness.yml inspects open pull requests
and, only when current-head evidence is complete, performs a SHA-bound squash
merge. It does not checkout or execute PR-branch code.
Operator narrative:
docs/hourly-commercial-readiness-loop.md.
Do not treat a green predecessor head, a synthetic merge ref, or a queued check
as acceptance. Exact-head CI and review evidence are recorded in those
operations docs, not in README.md.
These tips are for agents and maintainers. They are not buyer documentation.
- Keep stacked PRs in dependency order. A feature-base stacked PR may have no
Security Scan run; absence is non-passing evidence, not scanner success.
After the predecessor integrates, retarget onto an eligible protected base
(
main,master, ordevelop) and require a fresh terminal-success Security Scan on the unchanged exact head before merge. - Do not merge from this procedure document. Human or existing commercial-readiness authority decides merge.
- Do not mark a PR Ready when citations are unverified, when the change is
stacked on an unmerged parent, or when
README.mdhas bot-manual leftover. - A failing
trivy-fsis a real finding. Remediate by bumping the vulnerable npm dependency. Do not weaken the gate. SeeAGENTS.md.
OpenCode is a coding agent used by hourly-product-development.yml only. It is
not a customer interface and not a paper or standard. Pin, budget, runner
split, and publication lease are in
docs/operations/hourly-product-development.md.
Do not clone an OpenCode sidecar into naruon or gyeot. Do not copy OpenCode
bot model-candidate lists.
Cloud Agent / Cursor Cloud runs follow the same README rule: land
customer-visible product facts in README.md, and keep run procedure here or
in AGENTS.md.