Receive more than a list of hours.
Connect each agreed delivery item to a source revision, an observable behavior and the person responsible for accepting it.
Assign a bounded piece of application ownership
State which application, supervisor subtree or service the engagement covers. Identify the technical lead, release owner and business-data owner. The first monthly milestone can be a reviewed recovery change with a reproducible fault case, rather than an open-ended promise to improve reliability.
Separate a healthy process from correct business data
In SR12, Normalizer begins with local count 7. Its first replacement starts at 0 while Connector keeps count 3 and Delivery keeps count 2. Use that visible difference to ask where your application stores recoverable progress, which external actions need reconciliation and who checks the receiving records.
Agree when the team should stop automatic recovery
The exercise permits two automatic restarts inside five virtual seconds. A third fault at the same virtual time stops the whole group. The receiving view retains the events and asks for a runbook check before a manual start. Translate the example into an application-specific escalation and support agreement.
Give the monthly handover a failure case it can answer.
The SR12 exercise starts Connector, Normalizer and Delivery with separate generations and local counters. Fail Normalizer, inspect the replacement, then repeat the fault until the group stops. A receiving acknowledgement enables a deliberate manual recovery while the incident history stays visible.
Bring the recovery case into your hiring brief.
Open the browser exercise and download its twenty acceptance cases. Ask the development scope to connect this behavior to the installed Elixir/OTP application, durable business data and the actual deployment process.
Run the recovery acceptance exercise
Follow child generations and local counters through an isolated fault, a repeated-failure stop and a reviewed manual start. The virtual clock makes the restart window reproducible; Reset returns the synthetic example to its initial state.
Open the supervision recovery demoRead the Elixir supervision reference
Elixir documents supervisor strategies, child restart types and restart limits. Review these options against the versions installed in your application rather than treating an example policy as a universal setting.
Elixir primary reference: SupervisorCheck the OTP escalation boundary
The Erlang supervision reference explains how exceeding restart intensity terminates the supervisor and its children. Use the actual supervision tree to identify what the next level does and who receives the resulting incident.
Erlang/OTP primary reference: supervisionKeep a receiving API contract alongside recovery work
If the Elixir application exchanges commands with a separate NestJS service, name both implementation owners and agree their acceptance evidence. The API response, a worker replacement and the resulting business record are separate things to verify.
Review a separate backend API consultationMake responsibility visible throughout the engagement
A monthly allocation needs an agreed backlog, access boundaries, review evidence and someone authorised to receive the work. Establish these before development begins.
Submit the application and monthly brief
List the Elixir, Erlang/OTP and Phoenix versions where used, dependency lockfile, repository owner, deployment target and present support arrangement. Describe the change backlog and priority outcome. Request a written quotation identifying proposed allocation, responsibilities and the first review milestone.
Agree working capacity and access
Confirm the hours or delivery capacity, collaboration window, meeting cadence, approver and treatment of unused or additional time. Supply authorised development and staging access through your existing access process. Decide whether discovery, implementation, QA and release work share the allocation or receive separate estimates.
Map the recovery boundary
Identify the children in the relevant supervisor group, their start order, restart type and state dependencies. SR12 uses three permanent children and an explicit one_for_one policy. Agree the installed behavior with the developer and record which dependencies should remain running when the selected child fails.
Test the isolated fault and state reset
Fail Normalizer once in the exercise. Its generation changes from G1 to G2 and its local count becomes 0; the two other generations stay at G1. For the application milestone, test this boundary in staging and inspect durable records separately so a process restart is not mistaken for a completed business operation.
Exercise escalation and reviewed recovery
Repeat the failure until SR12 stops the group. Advancing the virtual clock does not restart that stopped group. The receiver checks the example runbook, then starts fresh generations explicitly. Define the real alert, escalation owner, data reconciliation and authorised recovery procedure in the delivery item.
Close the month against accepted work
Receive the source revision, completed cases, known open items and operational notes. Record what the technical receiver accepted and which backlog items carry forward. Agree the next allocation, release responsibility, notice terms and support coverage before renewing the engagement.
Put the commercial terms in the quotation
- Ask Codeblix to assess the application and confirm the allocation available for the requested scope. Agree the start date, technical responsibilities, monthly fee basis, included work, payment schedule and any minimum term directly in the quotation.
- Name the person who prioritises the backlog and the person who accepts a completed item. Specify how extra requests, urgent incidents, absences, changes in allocation and end-of-engagement handover are handled. A recurring arrangement should have a clear notice and renewal process.
- Give the same sanitized repository inventory and first-milestone case to each provider. Distinguish an engineer joining your existing delivery process from a team responsible for an entire outcome; price and management responsibilities depend on that choice.
Define data, integrations and release ownership
- Identify databases, queues and external services used by the selected application area. Document direction of data flow, authentication ownership and the point at which the receiving system considers work committed. Include any required migration, reconciliation or compatibility work explicitly.
- Agree a staging environment, representative synthetic fixtures and the acceptance evidence for each failure case. SR12 is a browser exercise for the recovery discussion; implementation acceptance should include the installed application and its persistent data under controlled failures.
- Separate development delivery from hosting and operational support. Record who deploys, the rollback checkpoint, monitoring access, support hours, response expectations and who authorises recovery outside normal working time. Include code, lockfiles and the receiving runbook in the handover.
Six records for a monthly Elixir engagement
Bring an application inventory and a small recovery case that a technical receiver can check.
| Record | Example inputs | Required output and control |
|---|---|---|
| Engagement allocation | Monthly capacity, review cadence, scope owner, fee basis and notice terms | Confirm the quotation and responsibility for prioritising and accepting work. |
| Application inventory | Elixir/OTP versions, lockfile, source revision, environment and release owner | Locate the code and dependency boundary that the first milestone changes. |
| Supervisor policy | SR12; one_for_one; permanent children; two restarts in five virtual seconds | Make the example allowance explicit and review actual production settings separately. |
| Child observation | Connector G1/count3; Normalizer G1/count7; Delivery G1/count2 | Record the replacement generation and which in-memory values are reset. |
| Fault event | Virtual time, failed child, automatic restart or stopped group | Retain the incident sequence and check what the surrounding supervision tree does. |
| Receiving acknowledgement | Runbook check, data reconciliation, escalation owner and manual-start event | Receive the change with its evidence and make recovery responsibility explicit. |
Start SR12 at virtual time 0 with generations G1/G1/G1. Fail Normalizer once: only it becomes G2 and its count resets from 7 to 0. A second fault replaces it again; a third fault at time 0 stops all three children because the allowance is two restarts. Advancing six seconds leaves that stopped group stopped. Acknowledge the receiving check and start the reviewed group: generations advance, local counters reset and the original fault history remains.
Request the same first-milestone evidence from each provider.
These primary offers describe different engagement models. Use your application inventory and recovery case to ask what delivery, technical review and operational handover each quotation includes.
| Option | Published focus | Ask in your demo |
|---|---|---|
| ElixirExperts | Individual developers, development teams and extended in-house delivery, with hiring and project-quote enquiries. | Who receives a recovery change, and which runbook and state checks accompany the monthly report? |
| BorderlessMind | Dedicated monthly, time-and-material and other hiring models, with candidate selection and contracting steps. | How are the allocated hours connected to accepted application changes and unresolved incidents? |
| Serokell | Elixir consultation, custom applications, dedicated teams and application maintenance with a quote enquiry. | Does the scope include the supervision boundary, persistent-state review and receiving evidence? |
Choose an engagement with a named scope owner, a receiving technical lead and explicit commercial terms. Confirm the actual allocation and first delivery item with Codeblix before work begins.
Category reference: Elixir Supervisor reference. Use SR12 and the checklist as project discussion inputs. Agree application-specific acceptance in the development quotation.
Connect development scope to the receiving system
Keep each application’s owner and acceptance boundary visible when several services exchange data.
Browse application development solutionsQuestions to settle before the monthly engagement
Use these answers to prepare the application brief and a focused quotation request.
What should I send with a monthly Elixir development enquiry?
Describe the application, current versions, repository ownership, hosting arrangement and the backlog you want addressed. Include a sanitized failure example, the first desired milestone and your technical receiver. State the capacity and collaboration window you need so Codeblix can review allocation and quote the work.
How are the monthly fee and allocation agreed?
The quotation should state the capacity or hours, work categories, fee basis, review cadence and treatment of additional requests. Confirm availability, start date, payment schedule, notice and renewal terms directly. Application assessment may be needed before implementation work can be estimated responsibly.
Can the engagement cover an existing application?
Discuss maintenance, scoped changes or a defined new build using the actual source and dependency inventory. Establish authorised access, a reproducible staging environment and the present release process. Identify any discovery, upgrades or data migration needed for the requested work.
What is the first milestone shown on this page?
The SR12 recovery exercise turns a process-failure concern into a receiving case. It tracks three child generations, replacement of Normalizer, a bounded restart window and a stopped group requiring acknowledgement before manual recovery. Use its cases to describe the implementation evidence you want.
What happens to the example local count after a restart?
Normalizer begins with count 7 and its replacement begins at 0. Connector and Delivery retain their example values after that isolated replacement. The milestone must separately establish where the real application stores business progress and how the receiver reconciles external effects.
Does elapsed time automatically recover the stopped group?
In SR12 it does not. After the third fault exhausts the allowance, advancing the virtual clock leaves all children stopped. The receiving check and explicit manual-start action are required. Agree actual escalation and recovery behavior against the installed supervision tree.
How will integration and migration work be handled?
List the databases, queues, API consumers and external owners affected by the delivery item. State the required data direction, credentials owner, compatibility rules and reconciliation sample. Include migration, dependency updates and other-system changes explicitly in the agreed backlog or estimate.
What should I receive at the end of the month?
Receive the accepted source revisions, completed cases, release notes, recovery instructions and remaining backlog. Record the receiver’s decisions and any unresolved incident. Confirm future capacity, release responsibility, support coverage and notice terms before the next period.
