feat(email-writing): parse contextual review candidates - #1375
feat(email-writing): parse contextual review candidates#1375seonghobae wants to merge 9 commits into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
PR governance metadata gate is not ready for
|
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>
|
@coderabbitai review Please review the unchanged exact current head |
|
|
|
@coderabbitai review |
|
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 is6a37753c86959ae07e6257496658ea4ae17f513c, 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
TextPositionSelectorvalidation and overlapping-selector rejection;incremental → routeanddeep → conductorchestration modes;Judge/dependency boundary
Task-owned child #1524 is now
ad888235577ba87f32d96e06fab1cfb9992d84a9on this exact Candidate predecessor. External Cursor #1402 remains read-only at3d6b3341c5dd15512d5d60cd5f8d95a1bbc6d846; 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 commit09f762ded35786dd1078222a4577ff09d649816f, 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 job100236063658/ run33626711891is queued before executed steps. Same-head job100236044139/ run33626706704terminated cancelled before useful execution.PR governance metadata controllerjob100236053229is 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.