{"id":1426727,"url":"https://alion.io/job/marum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric","title":"PhD Position (m/f/d): World Models for Software Architecture Synthesis (Constructor Fabric)","company":{"id":1803206,"name":"MARUM","domain":"marum.de","url":"https://alion.io/company/marum","size_band":"501-1000","is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":"Workday","truth_index":{"grade":"B","score":83,"open_postings":3,"ghost_share":0,"stale_share":0.667,"repost_share":0,"time_to_fill_p50_days":40,"computed_at":"2026-10-20T05:45:00Z"}},"role":"Early Careers","role_family":"Early Careers","seniority":null,"employment_type":"full_time","work_mode":"on_site","remote_scope":null,"remote_scope_basis":null,"remote_working_hours":null,"hiring_geo_confidence":"explicit","locations":["Bremen, Germany"],"countries":["DE"],"hiring_countries":[],"hiring_countries_total":0,"salary":null,"salary_estimate":{"min_usd":16500,"max_usd":26000,"period":"year","method":"role_country_seniority_unknown","sample_n":697},"experience_years_min":null,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"Asyncio","optional":false},{"name":"Dask","optional":false},{"name":"DGL","optional":false},{"name":"Digital Twin","optional":false},{"name":"GNN","optional":false},{"name":"Linux","optional":false},{"name":"LLM","optional":false},{"name":"LLM Evaluation","optional":false},{"name":"Machine Learning","optional":false},{"name":"MLFlow","optional":false},{"name":"Pytest","optional":false},{"name":"Python","optional":false},{"name":"PyTorch","optional":false},{"name":"PyTorch C++","optional":false},{"name":"Ray","optional":false},{"name":"Weights & Biases","optional":false},{"name":"World Models","optional":false},{"name":"C++","optional":true},{"name":"Docker","optional":true},{"name":"Java","optional":true},{"name":"JAX","optional":true},{"name":"Kotlin","optional":true},{"name":"Kubernetes","optional":true},{"name":"OpenTelemetry","optional":true},{"name":"Prometheus","optional":true},{"name":"Rust","optional":true},{"name":"Terraform","optional":true}],"status":"live","first_seen_at":"2026-09-28T23:53:43Z","employer_posted_date":"2026-09-28","last_verified_at":"2026-10-18T17:05:12Z","board_verified":true,"closed_at":null,"days_open":21,"trust":{"level":"ok","repost_count":null,"flags":[],"days_open":21},"description":"Supervisor: Prof. Dr. Alexander Tormasov\nAbout the Position\nConstructor Knowledge Labs (CKL), in collaboration with Constructor Technology, invites applications for a PhD position in machine learning for software engineering and formal methods, on the Constructor Fabric project.\nConstructor Fabric turns a company's informal knowledge into production software through a pipeline of composable capability units called gears: requirements → architecture → product fit → framework (G1) → application → runtime. We are building a World Model over that pipeline - a model that does not just generate code, but predicts the consequences of an architectural decision: total cost of ownership, unintended side effects, latency and failure behaviour, and whether a proposed composition is even admissible.\nThe central object is not a digital twin of the application but its formal architectural skeleton: gear contracts (GearSpec), a typed attributed hypergraph of the application (AppGraph), a composition algebra that defines which assemblies are legal, and several semantic projections (types, protocols, resources, security) over which properties are proved, refuted by counterexample, or reported as an explainable gap. All of it is written in a domain-specific language whose syntax trees and graphs we keep in a projectional editor (JetBrains MPS) - so the DSL is not a convenience layer, it is the thing that defines the model's state space and the boundary of what the model is allowed to propose.\nWhat you will work on\nDepending on your background, one or two of:\nFormal skeleton and composition - GearSpec as a contract $(Requires, Provides, State, Effects, Assumptions, Guarantees, Parameters)$; AppGraph as a typed attributed hypergraph; an algebra of assembly (sequential, parallel, feedback, refinement); semantic projections and system-level invariants over trajectories.\nArchitecture synthesis as an inverse problem - given a specification, load and constraints, find the composition of gears that realises it. Constraint solving and MCTS as the baseline; a learned transition/value model for ranking and pruning; LLM proposals treated strictly as candidate hypotheses that a DSL parser, type checker and property checks must then admit or reject.\nDSL design and language engineering - the gear DSL and its glue layer decide which AppGraphs are expressible at all, and therefore where the search space ends. This thread covers the abstract syntax and static semantics of that DSL; the requirement that an architectural decision be unbypassable by construction (you must not be able to wire authentication around the Auth Resolver); what happens to the language when gear contracts change or a 201st gear is added; projectional representation of graphs with cycles; and the open hypothesis that a specialised G1-DSL is generated together with every G1.\nLocal transition models and pipeline surrogates - fast approximate predictors for single pipeline steps (spec change → code quality, architecture → product fit, app → runtime outcome), with calibrated uncertainty, validated against real telemetry.\nData - reconstructing (specification → architecture) pairs from open repositories at scale, plus synthetic project generation from a fixed gear set and DSL grammar to cover rare transitions, gaps and counterexamples.\nYour Profile\nMSc (or equivalent) in computer science, mathematics, or a mathematical natural science.\nCoursework in compilers, programming-language theory, language design or model-driven engineering is a strong positive signal, half of this project is deciding what a formal architecture description is allowed to say.\nEvidence that you finish things: a maintained open-source repository, a peer-reviewed publication, or a strong competition result.\nFluent technical English.\nMost importantly: the habit of stating an assumption explicitly and designing an experiment that could falsify it.\nRequired mathematical background\nCore skills:\nProbability and statistics. Estimation, Bayesian inference, uncertainty quantification and calibration (proper scoring rules, reliability diagrams, ECE), experiment design and significance testing. A prediction we cannot calibrate is not usable here.\nLinear algebra and multivariate calculus at the level needed to derive, not just call, a training objective: matrix calculus, gradients, stochastic optimisation, conditioning.\nDiscrete mathematics and graph theory. Typed and attributed graphs and hypergraphs, subgraph matching and isomorphism, graph rewriting, reachability, basic complexity classes.\nMathematical logic and formal methods. First-order logic, type systems, SAT/SMT, temporal logic (LTL/CTL) and model checking, pre/post-conditions, invariants, refinement.\nSequential decision making. MDP/POMDP, dynamic programming, model-based RL, latent state-space (world) models, Monte-Carlo Tree Search.\nStrong command of at least one, working knowledge of a second:\nFormal languages, semantics and language engineering - grammars (context-free, attribute and graph grammars), derivation and reachability, parsing; abstract versus concrete syntax; operational and denotational semantics; metamodelling, model-driven engineering, model-to-model transformation, and projectional (structural) editing of the kind JetBrains MPS implements. We are asking for the education, not the tool: you should know why a projectional editor exists, what a metamodel buys you over a text grammar, and how a language evolves without breaking its existing models. Hands-on MPS experience is explicitly not required - we will teach it.\nCategory theory for compositional systems - monoidal and traced monoidal categories, functors as semantic projections, string diagrams, operads. This is the language of our assembly algebra.\nCausal inference - structural causal models, do-calculus, counterfactuals, identifiability. Required for the \"what happens if we replace this technology / move on-premises\" class of questions, which similarity search alone cannot answer.\nQueueing theory and applied stochastic processes - M/M/1 and networks of queues, heavy tails, retries, timeouts, partial failure and reliability models. This is the resource and stochastic projection.\nCombinatorial optimisation, constraint programming and program synthesis theory - CEGIS, version-space algebras, symmetry breaking, search heuristics.\nRepresentation learning theory - VAEs and latent dynamics, GNN expressiveness (Weisfeiler-Leman hierarchy), permutation equivariance, embedding migration under a changing vocabulary.\nRequired hands-on programming skills\nThis is an engineering-heavy PhD. We expect code that another person can clone, run and reproduce - not notebooks that worked once.\nMust have:\nPython (professional level). Type hints, packaging, `pytest`, profiling, `asyncio`, memory-aware data structures. You write unbuffered, logged, restartable long-running jobs by default.\nTraining loops written from scratch, custom datasets and collation, mixed precision, multi-GPU; experiment tracking (W&B or MLflow), configuration management (Hydra), strict seed and artefact reproducibility.\nGraph machine learning. PyTorch Geometric or DGL - message passing, heterogeneous and typed graphs, graph transformers, handling graphs whose node vocabulary changes between versions.\nSolvers and verification tooling driven from Python. Z3 or cvc5 hands-on; demonstrated exposure to at least one model checker (TLA+/TLC, SPIN, NuSMV, Alloy) or proof assistant (Lean, Coq, Isabelle).\nCode as data. AST manipulation, `tree-sitter`, static analysis, dependency and interface graph extraction, large-scale repository mining.\nParallel data pipelines. `multiprocessing`, Ray or Dask; checkpointing, heartbeats, cost estimation before launching a run that touches millions of files.\nLLM engineering. API orchestration, structured and grammar-constrained decoding, evaluation harnesses, token/cost accounting - with the discipline to treat model output as a hypothesis subject to formal checks.\nLinux, git, code review, shell.\nDesirable:\nLanguage tooling you have actually used: ANTLR, Xtext, Lark, or a parser, type checker or interpreter you wrote yourself. Our internal representation of gear syntax trees and graphs lives in JetBrains MPS - again, we do not ask for MPS experience, only that you are comfortable reading and extending a metamodel; Java/Kotlin literacy helps once you get there.\nJAX, or compiler / SAT-SMT internals.\nInfrastructure literacy - Docker, Kubernetes, Terraform, OpenTelemetry/Prometheus - since the resource projection is calibrated against real deployment telemetry.\nOne systems language (Rust, Go or C++) for performance-critical search.\nPrior experience with production software architecture, or with a brownfield system you had to change without breaking.\nFunding\nThe appointment provides full financial coverage through a dedicated fellowship, comprising:\nMonthly stipend of €1,650\nMonthly research-cost allowance of €100 (Forschungskostenpauschale)\nHealth-insurance subsidy of €100 per month\nLocation: Bremen, Germany\nDuration: 3 years, full time\nStart date: November 2026\nApplication package must include\nCV, including publications, code, or research projects.\nCover letter (1-2 pages) explaining your motivation, research interests, and fit with the project.\nA link to code you have written.\nA one-page research statement picking one open research question from the project and sketching how you would approach it.\nMaster’s and Bachelor’s degree certificate and transcripts.\nContact information for 2-3 academic referees.\nApplications are reviewed on a rolling basis. Shortlisted candidates will be invited to interviews.\nPlease note that only applications submitted through the official application portal will be considered for recognition","description_format":"text","description_chars":9797,"description_truncated":false,"requirements":{"experience_years_min":null,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":{"level":"bachelor","optional":false},"security_clearance":false,"languages":[{"language":"English","level":"All levels","optional":false}]},"benefits":[],"hiring_locations":[{"name":"Germany","iso":"DE","kind":"country"}],"hiring_excludes":[],"relocation_offered":false,"industries":["Environmental Science"],"lifecycle":[{"event":"open","at":"2026-09-28T23:53:43Z"}],"visa":[],"liveness":{"score":73,"band":"hot","label":"Hiring now","p_open":1,"p_active":0.813,"p_room":0.9,"age_days":21,"expected_fill_days":40,"reasons":["conf:36","win:mid"],"computed_at":"2026-10-20T05:45:00Z"},"pay":null,"html_url":"https://alion.io/job/marum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric","json_url":"https://alion.io/job/marum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric.json","meta":{"generated_at":"2026-10-20T07:27:46Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"crawler_verified","counted_by":"address","units_charged":1,"used_today":7936,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-21T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":1803206},"rest":"https://alion.io/mcp/rest/get_company?id=1803206"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Fmarum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Fmarum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Fmarum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/marum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Fmarum-phd-position-mfd-world-models-for-software-architecture-synthesis-constructor-fabric"}]}