Skip to content
QUORVE LABS

LangGraph · trace

SRS generator

Retrieve tickets, wiki pages, and indexed docs, then generate a structured software requirements spec. Features become tickets, gaps close the loop, traceability stays read-only.

GRAPH NODES, STATE, SEQUENCES, SERVICES

01Generation sequence (G1)

First generation for a group. G1 must be Accepted or Rejected before another Generate or a chat refine.

G1 SEQUENCE

Rendering diagram…

02Feedback / chat refine

analyze-feedback is a three-gate classifier: intent, domain relevance, already addressed. Direct replies never start the graph.

FEEDBACK

Rendering diagram…

03Graph nodes

NodeReadsWritesExternal
query_gen_nodemappings, feedbacks, mode, rejected/validated contextgen_query_list, query_enhance_countLLM missing-context or feedback-query chain
jira_retrieval_nodelast query, flagvalidated_context, wiki query candidatesLLM query + judge (≤10 workers, fail-open); Jira MCP (≤5); summarizer
confluence_retrieval_nodewiki candidates, flagvalidated_contextREST CQL; LLM section judge (keyword heuristic on failure)
batch_retrieval_nodelast querycontext bags; rejected_context = [[]]Vector search, ≤8 workers, cosine distance 0.4
soft_gen_nodevalidated context, modefinal_docFeatures LLM then metadata LLM

judge_node exists in code but is not wired. Retry (generation_checker_route) loops to query_gen_node if rejected_context has entries and enhance count < 3. Because batch retrieval currently writes rejected_context = [[]], that retry does not fire in production today — a known gap, not a secret.

04State and document

State is a TypedDict through every node. SoftwareRequirement is the structured document soft_gen_node builds in two calls, then renders to markdown.

DATA MODEL

Rendering diagram…

SRSFeatureBody is call 1. SRSMetadata is call 2. Inference flags are corrected deterministically after call 1.

05Threading and status

JOB MODEL

Rendering diagram…

Cooperative cancel via threading.Event. Status fields: gen, indexing, mapping, jira.

06Layer 4 — feature tickets

Takes one SRS markdown, strips relationship tables, splits ### features, runs one schema-validated LLM call per feature, writes JSON + markdown. Blocked until G1 is accepted or rejected.

07Layer 5 — gap closed loop

Compares Layer 4 features to live Story/Epic tickets for the same domain — not spec vs a local mapping file. Relevance judge runs only on the strict “Run gap analysis” path, batches of 15, fail-open keep-batch.

CategoryFollow-up
Exact / PartialRecord only
missing_in_clientOptional Jira create (ADF payload, user REST creds)
missing_in_llmOptional SRS regenerate via feedback mode, then auto Layer 4

08Layer 6 — traceability

GET-only. Checks that software_requirement.md exists for the group and that the latest named snapshot has a matching *_jira_features.json. Never generates.

09Services at a glance

ServiceRole
Pipeline facadeThreads, status, logs, stop events
ArchiveG1 baseline + revision history
Session managerSingle-editor / multi-viewer lock, heartbeat
Gap analysisFeature vs ticket matcher
Ticket fetchJira MCP + relevance judge
Ticket createREST create parent + sub-tasks
SRS gap regenFeedback round seeded with missing tickets
EvalAsync scoring, fail-open
URL extractorEnrich chat with linked ticket/page text