Golden Paths and the Platform Contract
A platform team publishes a standard way to build a service: a template, pipeline, runtime, dashboards and documentation. New services adopt it, but four hundred existing services stay where they are. A year later the copies have diverged and nobody has budgeted for updating them. This is an illustrative situation. The missing agreement concerns what the platform supports, how changes reach consumers, and who pays for the work.
A golden path can express standards while also offering useful support. Its contract needs to state both: which requirements apply, what users receive, and how needs outside the supported path are handled. A mandate alone does not establish that the path works well; optional adoption alone does not establish a complete operating agreement.
Discovery and waiting are different problems
Spotify’s 2020 account describes a fragmented tool landscape navigated through colleagues. Its response combined discoverable tools, a clear route, usable instructions and a visible support channel. Documentation can make a route easier to find, but it does not necessarily remove the queues along it.
In his 2018 essay, Evan Bottcher calls dependencies between teams’ work queues backlog coupling. He reports an Australian telecommunications study in which tasks requiring another team’s scheduled work took 10–12 times as long in elapsed time. This is one reported comparison, not a universal multiplier or an estimate of time that automation alone would recover.
A useful path addresses both problems: users can discover what to do, and routine supported actions require less manual fulfillment. Some reviews, capacity waits and exceptional requests remain legitimate. Identify which waits can be removed and which need a clear owner and response expectation.
Define the supported route
Spotify defines a golden path as an opinionated, supported route to building something. The choices can reduce cognitive load, while the support agreement tells users what happens when those choices fail. Supported should name a scope, contact route, service hours and response expectations; it should not merely imply that someone will answer.
| Question | On the supported path | An approved alternative |
|---|---|---|
| Choices | Tested combinations and documented configuration options | Team-selected choices within applicable controls |
| Support | Named operators, initial response and escalation | Explicit division of retained platform support and alternative operation |
| Changes | Documented version, rollout and migration policy | An owner and budget for maintaining compatibility |
| Controls | Defaults and enforcement whose coverage is verified | Evidence accepted by the control owner, plus operating and cost agreement |
Spotify’s account permits departures with different support. Bottcher reports Netflix’s paved-road approach as assigning the maintenance cost of alternatives to the teams choosing them. These historical examples illustrate a support bargain; they do not establish one policy for every organization. Names such as paved road and silver path have local meanings. Define the options and support levels rather than inferring them from the label.
Make the path useful within its constraints
Bottcher argues that a platform must be compelling beyond its mandate. Compare using it with building and maintaining an alternative over the same task and lifetime. An inconvenient onboarding process may still lead to lower maintenance effort, but that benefit needs evidence and does not excuse avoidable setup problems.
DORA warns about rigid standards designed without users and offerings that ignore different workloads. Its phrase enabling constraints directs attention to limits that help teams work effectively. Required controls and even required implementations can be justified. Their scope, reasons and process for unmet needs should remain explicit.
When users have a meaningful choice, adoption supplies evidence of preference. Where use is mandatory, evaluate task success, elapsed time, reliability, support demand and direct feedback. Composability can help different teams, but an integrated bundle may be appropriate when its parts must be operated together. Decide from the supported tasks and operating requirements.
Use the tutorial to inspect the path
Spotify connects long tutorials to the underlying work: documenting each step exposes friction that a shorter explanation might merely hide. Use that discipline to inspect the journey rather than asking writers to omit necessary instructions.
Step count is a useful clue when the task, users and documentation granularity are comparable. It is not a measure of effort by itself. A single button can conceal hours of waiting, and splitting an instruction into two lines changes the count without changing the task. Observe elapsed time, hands-on effort, failures and rework alongside it.
Update documentation when the supported workflow changes. Assign someone to coordinate the complete journey even when several teams own its sections. Spotify describes that coordination problem after distributing content ownership; distributed authorship can still work with an explicit review and release process.
Keep a short route for completing the task and deeper explanations for operation and diagnosis. Users need to understand inputs, outputs and failure behavior without learning every implementation detail. Spotify’s account describes widely used onboarding tutorials as a source of feedback on the path itself; observe where users struggle and use that evidence to improve both the route and its explanation.
Separate copies, referenced artifacts and operated services
Scaffolding generates initial project material. Backstage Software Templates can fill in a code skeleton and publish it, while built-in or custom actions can also register software or call other systems. A scaffolder may combine several delivery mechanisms; its name does not determine who operates the result.
| Delivery mechanism | What changes centrally | What remains to do |
|---|---|---|
| Copied code or configuration | The source template; existing copies need a separate update | Prepare and review patches, reconcile local adaptations, test and deploy |
| Referenced artifact, such as a pipeline definition or image | A shared revision is published | Select or resolve that revision; execute, rebuild or redeploy as required |
| Operated service behind an API | The provider updates its implementation | Preserve the consumer contract, stage rollout and coordinate any consumer migration |
The CNCF maturity model describes customized templates becoming difficult to update at its standard-tooling interface level. This is a risk of that arrangement, not a survey showing where most platforms operate. Copies can remain maintainable when their supported adaptations and update process are designed together.
A reference does not mean automatic adoption. GitHub reusable workflows allow a commit SHA, tag or branch reference and recommend a SHA for stability and security. An immutable pin needs an update before consumers receive the fix. A moving reference picks up changes when it resolves again and can propagate faults as well as improvements. Preserve the resolved revision as evidence of what ran.
Copies can also be updated centrally through a codemod and repository pull requests. The work needs review capacity and can encounter conflicts or service-specific decisions. An illustrative fleet of four hundred repositories may require a campaign; its duration depends on those conditions rather than a fixed delay.
Adoption timing depends on the artifact. A referenced pipeline change applies when a later run resolves and uses the updated definition; an existing run or saved pipeline snapshot may retain its earlier version. A changed base image requires a build that actually selects the new image, followed by deployment of the resulting artifact. A new image does not update existing containers.
Configuration takes effect when the application reads and uses it. Startup-only values need a restart or another supported reload mechanism. Updating a mounted file does not change a process that never rereads it. A managed configuration API can accept an update well before every instance uses it.
AWS AppConfig deployment strategies can distribute a change gradually and monitor it during a final bake period. Alarm-based rollback depends on configuring the relevant CloudWatch alarms and the required permissions. Verify both delivery and actual use of the configuration; the API’s acceptance is not evidence that the fleet has adopted it.
Choose the mechanism by lifecycle cost. Keep copied material limited to what consumers need to adapt, within mandatory controls. A shared pipeline template can reduce repeated implementation, while an operated service introduces its own availability and interface commitments. A thinnest viable platform reuses suitable providers where possible. Anything expected to improve does not automatically need a new service.
Distinguish divergence from a defect
Three comparisons answer different questions. None decides acceptability without knowing the requirement and the reason for the difference.
- Distance from the central standard. A team may have an approved adaptation or an unapproved deviation. Compare the applicable standard, its mandatory scope and the recorded exception.
- An unadopted version. Check compatibility, migration cost, support dates and required patch deadlines. An older version can be acceptable or a control violation even when it runs exactly as declared.
- Declared versus actual state. configuration drift can come from manual edits, automatic updates, other controllers or external configuration. Investigate whether it is an error, an authorized emergency change or permitted variation before deciding which state to restore.
A system’s own declaration can reveal the third difference; it cannot by itself establish adherence to a separate standard or support policy. Composable platform capabilities can provide an adaptation route, while an approved external alternative may be appropriate where the platform cannot meet the requirement.
Version the path and communicate changes
Treat the supported path as an interface with consumers. The following are design recommendations for making its change policy usable.
- Declare the interface and current version. Name the inputs, outputs and behaviors users may rely on. If using semantic versioning, apply it to that declared contract.
- Define a breaking change. Changing a required input or supported behavior may require migration even if the template still runs.
- State the support lifecycle. Record how long previous versions receive support, which updates are required and when retirement decisions are made.
- Separate rollout from notice. A release channel can expose volunteers before the default population. It does not notify affected owners by itself. Specify the notice channel, change details, migration instructions, lead time and emergency-security exceptions.
- Assign migration work. Name who prepares, approves and deploys changes to existing services, who funds them and how completion is observed.
Use deprecation notices to explain retirement and replacements, with a stated migration window where removal is planned. day 2 operations includes keeping that commitment. Where compatibility permits, expand and contract allows old and new forms to coexist until consumers have moved and the agreed recovery window closes.
Bring existing services into a supported state
Spotify describes Golden State as checks showing whether a system follows the path. Common configurations can make shared upgrade automation more feasible. They do not establish that every service can undergo the same procedure or that no application-team work remains.
Use conformance as one input to upgrade eligibility. Verify installed and target versions, supported combinations, state and external dependencies, deployment authority, service checks and recovery conditions. Shared automation can reduce repeated work while service-specific validation, approval or migration remains necessary. Distinguish changes the provider can complete from those requiring consumers to act.
Make results readable and actionable for owners. A service catalog can display known versions, responsible teams and the checks’ coverage and freshness. An audit trail may also be a required governance record; it is not merely a side effect of helping developers. Record the observed rollout outcome as well as the eligibility decision.
Write the support and exception boundary
Bottcher separates application operation from platform operation. Use that as a starting point, not a reason for providers to know nothing about their consumers or to own only availability. The platform can avoid owning product logic while maintaining the consumer inventory and version information needed for support, security changes and retirement.
Assign the operator for each capability, including external providers. State the initial response route, escalation, authority to change the service and security responsibilities. When an incident’s cause is unknown, the initial responder coordinates until a receiving owner accepts the handoff; diagnosis can require joint work.
For alternatives, the control owner must validate that required controls are met. Agree compatibility, cost and operational support before treating a different implementation as approved. Temporary exceptions need an owner and an exit condition or expiry. An enduring approved alternative needs maintained ownership and periodic review rather than an arbitrary promise to remove it.
What the path agreement contains
Define the contract’s purpose through the supported tasks, users, prerequisites and required controls. Assign operators and consumer duties, initial response and escalation routes, and the authority to make decisions. Those responsibilities frame the user journey: provide instructions alongside observed time, effort, waiting, failures and rework.
Connect the declared interface and supported versions to notices, rollout and migration ownership, and retirement. Conformance and upgrades need checks with known coverage, clear eligibility, remaining consumer work and recovery conditions. An approved alternative needs its own control approval, cost and support agreement, and review or exit conditions.
Make support usable by stating its hours, contact route, response expectations, scope and exclusions. Together with the preceding responsibilities, these terms tell users what help is available and which work remains theirs.
Start with a useful journey for a stream aligned team or another defined user group. Test whether it improves their work before expanding the offering. One narrow path can be easier to maintain, but compare scope and recurring toil rather than inferring effort from the number of paths alone.
The opening scenario needs an adoption and maintenance agreement as well as a template. Define what the path offers, what is required, how existing services receive changes and how exceptions are supported. That gives users and providers a contract they can test against actual work.
References
- Spotify — Golden Paths
- Evan Bottcher — What I Talk About When I Talk About Platforms
- CNCF Platforms White Paper
- CNCF Platform Engineering Maturity Model
- Backstage Software Templates
- Backstage — Writing Custom Actions
- DORA — Platform engineering
- GitHub — Reuse workflows
- AWS AppConfig — Deployment strategies
- DORA — Value stream mapping
Discover more from Insightful Data Lab
Subscribe to get the latest posts sent to your email.
