Skip to content

feat(email-writing): parse contextual review candidates - #1375

Draft
seonghobae wants to merge 9 commits into
feat/llm-email-writing-orchestrator-task5from
feat/llm-email-writing-candidate-task6
Draft

feat(email-writing): parse contextual review candidates#1375
seonghobae wants to merge 9 commits into
feat/llm-email-writing-orchestrator-task5from
feat/llm-email-writing-candidate-task6

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Scope

This Draft PR implements Task 6 only: contextual LLM Candidate-review prompt/response parsing and deterministic integrity validation. It does not call or admit the independent Judge, publish a calibration policy, expose user-facing diagnostics, gate sending, integrate Inkspan, or release the feature.

Candidate semantics originate from contextual LLM workflows through the Naruon-owned orchestrator boundary. There is no keyword/regex/phrase-list/sender-domain/recipient-count/language-name/nearest-text/position semantic fallback. Candidate confidence is Candidate self-assessment only and is never Judge evidence.

Current stack state

Direct parent #1356 is beb28466573b2163df97b027a6d3ac3776773869. Current Task-6 head is 6a37753c86959ae07e6257496658ea4ae17f513c, propagated by an ordinary non-force two-parent descendant merge after the Task-5 import-boundary repair. No force-push or destructive rebase was used.

The unique Candidate delta remains six paths: the Candidate TDD workflow, contextual candidate parser/request service, versioned prompt builder, candidate-output fixture, and focused tests. The Task-5 port/import regression and causal fix are inherited from the parent and are not duplicated as Candidate semantics.

Candidate contract retained

  • versioned contextual rubric and strict exact-JSON response contract;
  • explicit untrusted-context/prompt-injection boundaries;
  • duplicate-key/extra-field/malformed/non-finite/Unicode/control rejection;
  • bounded diagnostics and inert plain-text replacement;
  • exact Unicode-code-point TextPositionSelector validation and overlapping-selector rejection;
  • server-authorized evidence identifiers only;
  • incremental → route and deep → conduct orchestration modes;
  • prompt/template and payload hashes without retaining raw prompt/model plaintext;
  • redacted stable public errors;
  • Candidate output is not user-facing until independent Judge and admission policy later approve it.

Judge/dependency boundary

Task-owned child #1524 is now ad888235577ba87f32d96e06fab1cfb9992d84a9 on this exact Candidate predecessor. External Cursor #1402 remains read-only at 3d6b3341c5dd15512d5d60cd5f8d95a1bbc6d846; it is not writable ancestry and no predecessor review/check evidence is transferred.

Fresh immutable dependency evidence still shows fast-mlsirm v0.9.1, tag commit 09f762ded35786dd1078222a4577ff09d649816f, with the required Judge symbols in tagged source but no attached distributable asset. Runtime import remains gated on an approved immutable distributable/package source, exact integrity hash/provenance, Python 3.14 install/runtime compatibility, and the Naruon hash lock. Unavailable-package behavior remains dependency-injected rather than assuming package absence.

Candidate and Judge remain separate calls/roles. Same-model Candidate/Judge use requires an explicitly published compatible calibration policy; otherwise adjudicate or abstain.

Current verification state

For exact current head 6a37753c86959ae07e6257496658ea4ae17f513c, current Task-6 PR job 100236063658 / run 33626711891 is queued before executed steps. Same-head job 100236044139 / run 33626706704 terminated cancelled before useful execution. PR governance metadata controller job 100236053229 is also queued. These are non-passing current-head states; predecessor success is not transferable.

Central runner acquisition is tracked through .github#712. Naruon does not churn the Candidate source merely to provoke scheduling.

Keep Draft while current-head evidence and downstream immutable-dependency/Judge admission gates are incomplete. Merge only on an unchanged head satisfying live rulesets/protection, every applicable exact-head gate, zero valid unresolved findings, and any qualifying independent approval actually required after the last push. Pending/queued/skipped-required/cancelled/neutral/failed/absent/stale/predecessor/synthetic/model-only/status-only/author-only evidence is non-passing.

No writing-guidance diagnostic is shipped by this Candidate-only slice; editing and sending remain available.

@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

PR governance metadata gate is not ready for 6a37753c86959ae07e6257496658ea4ae17f513c:

  • Draft PR: merge automation is paused.

Bring feat/llm-email-writing-candidate-task6 onto the current
feat/llm-email-writing-orchestrator-task5 head without changing Task 6
candidate-parse semantics or restoring write-capable workflows.

Co-authored-by: Seongho Bae <seonghobae@users.noreply.github.com>
@seonghobae

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review the unchanged exact current head fa844bd035ab1f188a28c58e0ed2dc45fa31d0f3 (normal merge of live parent #1356 9cd9b953). Predecessor a3dd2e27 evidence does not transfer. Local Task 6: 41 passed, 100% coverage. Write-capable promotion/finalize workflows stay absent. Keep Draft. This comment is not an approval.

@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

@seonghobae I will review exact head fa844bd035ab1f188a28c58e0ed2dc45fa31d0f3. I will treat predecessor-head evidence as non-passing and keep the PR Draft.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@seonghobae seonghobae added the enhancement New feature or request label Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: medium Normal-priority or P2 work status: draft Draft pull request type: feature New or expanded product capability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants