Website profiles · Technology insights · Alternatives

since.dev No paid content found

Categories: Development

Your code didn’t change. Everything under it did. Since.dev turns supported API, SDK and model changes into repair PRs.

Visit website

Updated: 2026-09-23 09:18 Language: English (default) Access: Normal

Profile views 4 Outbound visits 0
Since.dev Full homepage screenshot
Editorial Review

Website Review

What is Since.dev?

Since.dev is a service for keeping a codebase working when the things it depends on change. Its premise, stated on the homepage, is that "your code didn't change. Everything under it did." It watches supported dependencies — package registries and ecosystems such as npm, PyPI, RubyGems, Rust, and GitHub, plus OpenAPI-described APIs — and when something upstream shifts, it traces that change to the code in your repository that is affected and prepares a repair as a draft pull request.

The workflow it describes has four steps: spot the external change, find the code it touches, prepare a small supported fix, and hand it to your CI for the final call. Repairs arrive as draft PRs that run your existing checks, and you can request a revision on the same PR rather than opening a new one. Upstream evidence — such as a migration guide noting that send became messages.create — stays attached to the fix so a reviewer can see why the patch looks the way it does.

Who it suits

Teams maintaining repositories with many third-party dependencies, where SDK releases, deprecations, and provider API changes create steady maintenance work. It is also aimed at people building AI agents: Since.dev offers a "world state" check, letting an agent verify assumptions such as a recorded SDK version against the latest observation before acting, using recorded evidence rather than a fresh fetch.

Trade-offs to weigh

  • It only covers supported sources, so changes outside those ecosystems still need manual tracking.
  • A prepared patch is a starting point, not an automatic merge — your tests and reviewers decide.
  • The value depends on how much dependency churn your project actually sees; a small, stable codebase may gain little.

A concrete example

Suppose a fictional example-sdk moves from 19.0.0 to 20.0.0 overnight with a renamed method. A scheduled check notices the release and its migration guide, locates the call sites in your repository, and opens a draft PR with a focused patch. You review the diff, see the linked evidence, and let CI confirm it.

Next step: connect a repository and watch one dependency you already track closely, so you can judge the quality of the first repair PR before relying on it more broadly. If you mainly want change detection without automated fixes, compare it with dedicated dependency-monitoring tools such as Dependabot or Renovate before committing.

How does Since.dev turn dependency changes into repair pull requests?

Since.dev watches the dependencies behind your repository and, when a supported upstream change appears, traces it to the code that depends on it and opens a draft pull request with a focused repair. The flow described on the site runs in four stages: spot the external change, find the affected code, prepare a small supported fix, and hand it to your CI for review.

The pipeline in practice

  1. Connect a GitHub repository. Since.dev monitors supported dependency sources — npm, GitHub, PyPI, Rust, OpenAPI, and RubyGems are listed.
  2. Detect a change. A scheduled check picks up a release along with its official migration guide (for example, an SDK bump with a documented send → messages.create migration).
  3. Map impact. The change is linked to the endpoints, calls, or types that use it in your code.
  4. Prepare a repair. A draft PR is opened with a small patch and the upstream evidence attached.
  5. Review. Your existing CI runs on the PR. You can request a revision and review the updated patch on the same PR.

What makes it different from generic dependency bots

Typical dependency updater Since.dev (as described)
Bumps a version number Connects an API/SDK/model change to affected code
Often leaves breakage for you to fix Prepares a supported migration patch
Evidence is the changelog Upstream evidence stays with the repair
Separate tooling for agents Verification of external facts for agents

A concrete scenario

You maintain a service that calls a payments SDK. The provider deprecates /v1/messages in favour of /v2/messages. Instead of reading the migration guide and hunting through src/integrations/, you get a draft PR touching the calls that use the old endpoint, with the guide linked and your tests already running.

Where the agent angle fits

The site also describes a verification step: before an AI agent acts, it can check its assumptions — a version, a provider condition, an external fact — against the latest recorded observation, without a fresh fetch. That is aimed at teams building agents on top of changing APIs, where stale assumptions cause silent failures.

Decision criteria

  • Useful if your breakage comes from upstream API or SDK movement rather than your own commits.
  • Less useful if your dependencies are internal and stable, or if changes rarely come with migration guides.
  • Check which ecosystems and sources are supported before adopting; the listed set is broad but not exhaustive.

Next step

Connect one repository with a dependency you know is drifting, and see whether the first draft PR matches how your team would have fixed it by hand.

For related context, GitHub's own dependency tooling is at GitHub, and package registries such as npm publish the release notes that feed this kind of monitoring.

Can Since.dev work with private GitHub repositories and my existing CI pipeline?

Yes. Since.dev is designed around connecting a GitHub repository, watching supported dependencies for upstream changes, and preparing draft PRs that run through the CI you already have. The page explicitly says "Draft PRs use your existing CI" and "Tests run in your repository," so the final gate stays yours: your pipeline, your branch protections, your review.

For a private repository, the practical workflow looks like this:

  1. You connect the repo to Since.dev.
  2. It tracks supported sources (npm, GitHub, PyPI, Rust, OpenAPI, RubyGems are listed) for changes such as API moves, SDK updates, deprecations and provider changes.
  3. When something changes, it traces the affected code and opens a small, supported repair as a draft PR.
  4. Your existing CI runs on that PR. If you want changes, you request a revision on the same PR and review the updated patch.

Two things worth checking before you rely on it:

  • Which dependencies are actually "supported." The page lists ecosystems and change types, but coverage varies by source. Start with the one or two dependencies that cause you the most migration pain, not your whole dependency tree.
  • How much of your CI is required to pass before merge. Since.dev prepares the patch; it does not replace your tests. If a repair touches code your CI doesn't cover well, the draft PR still needs human review.

A concrete decision criterion: if your team already spends time chasing SDK and API changes and your CI gives fast, trustworthy feedback on PRs, this fits naturally. If your CI is slow or flaky, the value drops, because every repair PR inherits that friction.

Next step: connect a single repository with one actively changing dependency, let it produce one draft PR, and judge the patch quality and CI behavior before rolling it out more widely.

For related context on the GitHub side of this workflow, see GitHub.

How do I verify that my AI agent's assumptions about external APIs and SDKs are still valid?

Check each assumption against a recorded observation of the external source, then act on the difference. The practical pattern is: record what the dependency looked like when the agent's plan was written, re-check that record later, and treat a mismatch as a signal to review rather than an automatic failure.

Since.dev describes this as "world state": external facts, versions and provider conditions that an agent can check before acting. Its verification reads recorded evidence rather than performing a fresh fetch, and the illustrative result shows three outcomes — valid, changed, unknown — with the agent receiving evidence to review when an observation differs. That distinction matters: "unknown" is not the same as "still valid."

A concrete workflow

  1. Capture the assumption explicitly, e.g. example-sdk.version = 19.0.0 or "endpoint /v1/messages accepts this payload."
  2. Attach a source: the release notes, migration guide, API contract or package registry entry that justified it.
  3. Re-check on a schedule or before a consequential action.
  4. On a difference, route to a human or a repair step rather than letting the agent proceed on stale facts.

The failure mode this addresses is quiet. Your agent's code didn't change; the SDK, endpoint or model behind it did.

Trade-offs to weigh

Approach Strength Weakness
Fresh fetch at decision time Current by definition Slow, rate-limited, can fail mid-task
Recorded observation (as described by Since.dev) Fast, auditable, works offline Only as fresh as the last recording
Agent self-reports confidence No extra infrastructure Models are often confidently wrong

Recorded evidence also gives you an audit trail: when an agent acted on a wrong assumption, you can see what it believed and when that belief was last true. The cost is staleness — you must know the observation time and source health, which Since.dev lists as part of verification.

Where this connects to repair

Verification tells you something changed. Repair is the next step: Since.dev traces supported upstream changes to affected code and prepares a focused draft PR, using your existing CI, with revisions on the same PR. The upstream evidence stays attached to the fix, so a reviewer can see why the patch exists.

If you only want the checking half, Since.dev covers verification separately from repair. For the underlying change feeds, official sources such as GitHub release pages and package registries like npm and PyPI are where the observations originate.

Next step: pick your three most load-bearing external assumptions — the ones that would silently break an agent's task — and write down the version or contract each depends on. That list is what you verify.

Which package registries and API specifications does Since.dev monitor for changes?

Since.dev monitors a set of package registries and API specification sources it describes as its supported sources. From the page, the named registries are:

  • npm
  • GitHub
  • PyPI
  • Rust
  • RubyGems

On the API side, the page names OpenAPI as a specification type it watches, and it discusses API contract changes such as endpoints moving (for example, /v1/messages to /v2/messages) and deprecations. It also refers to SDK updates, provider changes and model changes, and shows an example of detecting a new SDK release plus its official migration guide.

Practical reading: the list is explicitly framed as "supported sources," so treat it as the current coverage boundary rather than a claim about every registry or spec format. If your stack uses npm, PyPI, Rust, RubyGems, GitHub-hosted packages or OpenAPI-described APIs, the workflow the page describes — detect the upstream change, trace it to affected code, prepare a focused patch, then let your existing CI and reviewers decide — maps directly onto your setup.

Next step: before connecting a repository, inventory your direct dependencies and the API specs your services consume, then check each against that supported list. Anything outside it is where you would still need manual monitoring, even if the rest of the workflow fits.

What should I do when Since.dev detects a breaking change in a dependency my code uses?

Review the draft repair PR it prepares, then let your own CI and judgment decide whether to merge it. Since.dev's described workflow is: connect a GitHub repository, it observes supported upstream changes (APIs, SDKs, models), traces them to affected code, and opens a focused draft patch that runs through your existing CI, with upstream evidence attached and revisions possible on the same PR.

Your practical sequence

  1. Read the change and the evidence first. The page describes keeping "upstream evidence" with the repair, and shows a migration-guide-style signal (for example, a method rename). Confirm the change is real and the source is authoritative before touching code.
  2. Inspect the patch's scope. A good repair is small and local to the call sites that actually break. If the diff sprawls into unrelated files, treat that as a signal to revise or reject.
  3. Let your tests run. The draft PR uses your CI, so failures there are the real gate — not the tool's confidence.
  4. Request a revision if the fix is wrong or incomplete, and re-review the updated patch on the same PR.
  5. Merge only when the change matches your intended migration, or close it and handle the upgrade deliberately (for example, pinning the old version until you're ready).

When to slow down

  • Breaking changes with behavioral, not just signature, differences: a compiling patch can still be semantically wrong. Add or update tests around the affected behavior.
  • Security- or data-sensitive dependencies: verify the new version's provenance yourself rather than relying on the detection alone.
  • If your agent tooling depends on the same facts, check its assumptions against the latest recorded observation before it acts — the site frames this as "world state" verification, and it reads recorded evidence rather than performing a fresh fetch, so confirm observation time and source health.

Decision criterion: merge if the PR is narrow, tests pass, and the upstream change is one you'd have made anyway; revise if the direction is right but the code isn't; close and schedule manually if the upgrade needs design work beyond a patch.

Next step: open the draft PR, read the linked upstream evidence, and check whether the diff touches only the broken call sites. If you want to compare how other tools approach dependency updates, look at GitHub Dependabot documentation for its (different) scope — version bumps rather than API-migration repairs.

Related questions

More questions →
What Is Self-Healing Software and How Does It Repair Dependency Changes?

Self-healing software, as Since.dev describes it, watches the dependencies behind your code and turns supported upstream changes into repair pull requests. The premise is stated plainly: "Your code didn't change. Everything under it did." So the repair targets the layer beneath your code — an API that moved, an SDK that released a new major version, a deprecated endpoint — rather than your application logic.

This is not autonomous production mutation. The output is a draft PR that runs through your existing CI, with a human making the final call. If you're looking for a system that silently rewrites and deploys code, that's a different category. If you want the detection and the first draft of the fix handled for you, this is the shape of it.

The detect → impact → repair → review loop

Since.dev's own workflow illustration breaks into four steps:

  1. Spot the external change. A scheduled check finds a release — the example shows a package moving from 19.0.0 to 20.0.0 — along with its official migration guide.
  2. Find the code it touches. The system traces the change to the affected code in your repository (the example points at src/integrations/messages.ts).
  3. Prepare a small, supported fix. A focused patch is drafted, not a broad rewrite.
  4. Review. Your CI runs, and you decide whether to merge.

The key word in step 3 is supported. A repair is tied to upstream evidence — a migration guide, a documented API change, a recorded observation — rather than generated from a model's general sense of what looks right.

What "supported" means in practice

The example in the source material is concrete: an endpoint moves from /v1/messages to /v2/messages, and the migration guide says send becomes messages.create. The repair connects that documented change to the calls that use it. The evidence stays attached to the repair, so a reviewer can check the reasoning rather than trust it.

That's the main distinction from generic AI code generation. A generic model might produce a plausible-looking patch with no traceable source. A supported repair carries the upstream change that justifies it.

What gets monitored

Since.dev lists the dependency surfaces it watches:

Surface Examples from the source
Package registries npm, PyPI, Rust, RubyGems
API contracts OpenAPI specs, endpoint moves, deprecations
SDKs Version releases and their migration guides
Providers Provider-side changes and model updates

The scope is "supported sources" — the platform is explicit that coverage is bounded, not universal. Anything outside that set won't produce a repair.

The verification layer for AI agents

A separate piece of the model is aimed at agents rather than repositories. Before an agent acts, it can check its assumptions against the latest recorded observation — what Since.dev calls "world state": external facts, versions, and provider conditions.

The illustration is a version check:

  • example-sdk.version = 19.0.0 → valid
  • The recorded observation changes to 20.0.0 → changed
  • The agent gets evidence to review rather than acting on a stale assumption

One detail worth noting: verification reads recorded evidence, without a fresh fetch. That means the check is fast and consistent, but its accuracy depends on how recently the observation was recorded. A stale record produces a confident but outdated answer.

Practical limits and failure points

  • Unsupported sources produce nothing. If a dependency isn't in the supported set, there's no detection and no repair.
  • Stale observations mislead. Both the repair path and the agent verification path depend on recorded observations being current. The source itself flags "check observation time and source health" as part of verification.
  • Patches still need review. The draft PR is a starting point. Your CI and your judgment are the gate — the source describes the final call as yours.
  • Small patches, by design. The repairs are described as "small" and "focused." A change that requires restructuring your integration rather than adjusting a call may fall outside what a supported patch can do.

How to decide if this fits

Self-healing software in this sense is worth evaluating if your maintenance burden comes from upstream drift — SDK majors, endpoint deprecations, provider changes — rather than from your own feature work. The value is in the detection and the first draft, not in removing review.

It's a poor fit if your dependencies are mostly unsupported sources, if you need changes deployed without human review, or if your integration changes tend to be architectural rather than call-level.

The honest test is to connect a repository and watch one real change go through the loop: does the detected change match what you'd have found yourself, does the patch land where you'd have written it, and does the attached evidence let you review it quickly? That tells you more than any description of the category.

What Is Repository Impact Analysis and How Do You Trace Dependency Changes to Affected Code?

Repository impact analysis is the step between "a dependency changed" and "here is the code that needs to change." It maps an external change — an API move, an SDK update, a deprecation, a provider change — to the specific call sites in your repository that depend on the old behavior. You need it when a dependency you don't control ships a change, because your code didn't change but everything under it did. The output is not a fix; it's a scoped list of affected code plus the evidence to justify each item.

Impact analysis vs. monitoring vs. repair

These three get conflated, and the confusion causes teams to either over-trust a dashboard or skip straight to a patch they can't verify.

Stage Question it answers Output What it does not do
Dependency monitoring Did something change upstream? A release, version bump, or deprecation notice Tell you what in your repo is affected
Repository impact analysis Which code does this change touch? Affected call sites, blast radius, supporting evidence Produce the fix
Automated repair What is the smallest correct fix? A draft PR with a focused patch Decide whether to merge — your CI and review do

Monitoring without impact analysis produces alerts nobody acts on. Repair without impact analysis produces patches you can't defend in review. Impact analysis is the layer that makes both useful.

How to trace a dependency change to affected code

The workflow below follows the sequence Since.dev describes: connect a repository, see what changed, find the affected code, review a supported repair. The first three steps are impact analysis proper.

1. Detect the change and pin it to a version

You need the change as a discrete, dated fact, not a vague sense that something moved. In Since.dev's illustrative example, a scheduled check finds a release and its official migration guide:

  • Previously observed: 19.0.0 at 09:00
  • Latest observed: 20.0.0 at 10:15
  • Migration guide: send → messages.create

The version pair and the timestamp are what make the finding checkable later. Without them you're reasoning about "the latest SDK," which is a moving target.

2. Locate the call sites that use the changed surface

This is the core of impact analysis: connecting a documented change to the calls that use it. For an endpoint move like /v1/messages → /v2/messages, you're looking for every place your code references the old path or the old method name — for example src/integrations/messages.ts.

Two things make this tractable rather than a grep exercise:

  • Typed changes. When the change is expressed as a typed difference (a method renamed, a field removed, a signature changed), you can match it against your code's usage rather than guessing from prose release notes.
  • A documented source. A change tied to an official migration guide gives you a defined before/after to search for. An undocumented behavior shift gives you nothing to match on.

3. Assess the blast radius

Not every affected call site carries the same risk. Sort what you found:

  • Direct callers of the changed API — these break or behave differently.
  • Transitive users — code that consumes the output of a direct caller, which may need adjustment even though it never touches the dependency.
  • Test and fixture code — often the largest count and the lowest risk, but it will fail CI if ignored.

The blast radius is what tells you whether this is a one-line patch or a migration with a plan.

4. Keep the evidence with the finding

Impact analysis that can't be re-checked is just an assertion. The evidence to retain:

  • The version pair (previously observed → latest observed) and the observation time.
  • The upstream source — the migration guide, changelog, or contract that documents the change.
  • The observation's health — when it was recorded and whether the source is still valid.

Since.dev's verification model reads recorded evidence rather than performing a fresh fetch, which means a check returns the observation as it was captured, not a live re-query. That distinction matters: it tells you whether you're looking at current world state or a snapshot, and it lets an agent check its assumptions against the latest recorded observation before acting.

Common failure points

Stale observations. If the recorded version is 19.0.0 but upstream is at 20.0.0, your impact analysis is describing a world that no longer exists. Always confirm the observation time against the change you're analyzing.

Untyped changes. A prose release note saying "improved messaging" gives you nothing to match against your code. Impact analysis degrades to manual reading, and false negatives (missed call sites) become likely.

False positives. A rename that matches a string in an unrelated file, or a deprecated endpoint still used intentionally behind a feature flag, will show up as affected when it isn't. This is why the output is a review list, not an automatic edit — the affected-code list is a hypothesis your review confirms or rejects.

Confusing "affected" with "broken." A deprecation notice means the code still works today. Impact analysis tells you what will need attention, which is different from what is failing now.

How impact analysis feeds into a repair

Once you have the affected call sites and the evidence, the repair step is small by design: a focused patch that traces the supported upstream change to the affected code, with the upstream evidence staying attached to the repair. In Since.dev's workflow, that becomes a draft PR that runs your existing CI, and revisions happen on the same PR — you request a revision and review the updated patch.

The division of labor is the point: Since.dev prepares supported patches and draft PRs, tests run in your repository, and your CI makes the final call. Impact analysis is what makes that handoff reviewable instead of a black box — you can see which code was flagged, why, and against which version.

What to check before you trust an impact analysis

  • Is the observed version current, and when was it recorded?
  • Is the change backed by a documented source (migration guide, contract, changelog)?
  • Are the affected call sites listed with file-level specificity?
  • Does the blast radius distinguish direct callers from transitive and test code?
  • Can you re-run the check and get the same evidence?

If all five hold, you have an impact analysis you can act on. If any are missing, you have a notification — useful, but not yet a decision.

What Is GitHub Maintenance and How Do You Handle Dependency Changes?

GitHub maintenance is the ongoing work of keeping a repository healthy as everything around your code changes — not just editing your own files. The practical core is a four-step loop: detect an external change (API, SDK, package, or model), find the code it affects, prepare a small supported fix, and review it through your existing CI. Since.dev describes exactly this loop: it turns supported API, SDK, and model changes into repair PRs, on the premise that "your code didn't change. Everything under it did."

Why unchanged code breaks

Your repository depends on things you don't control. When those things move, your code can stop working even though no one touched it:

  • An API endpoint is deprecated or moved (the site's example: /v1/messages → /v2/messages).
  • An SDK ships a new major version with a changed call signature (illustrated as send → messages.create).
  • A package release changes behavior, or a provider changes a contract.

Because the break originates outside your repo, the maintenance work isn't "write new features" — it's "notice the external change, trace it to the affected code, and apply a focused fix."

The detect → impact → repair → review workflow

Since.dev lays this out as a four-stage path from outside change to inside fix:

  1. Detect — a scheduled check finds a release and its official migration guide. The site's illustrative example shows a previously observed version 19.0.0 at 09:00 and a latest observed 20.0.0 at 10:15.
  2. Impact — find the code the change touches (e.g. src/integrations/messages.ts).
  3. Repair — prepare a small, supported fix as a draft PR.
  4. Review — your CI runs, and you make the final call.

The output is deliberately narrow: "a small, supported fix," not a rewrite. The site frames the result as "small patch. Clear evidence."

What a repair PR actually contains

A repair PR is a draft pull request that carries the fix plus the reasoning behind it. Two properties matter for maintenance:

  • It uses your existing CI. Draft PRs run through the checks you already have in place, so a repair is validated the same way any other change is.
  • The evidence travels with the fix. Upstream evidence — the migration guide, the observed version change — stays attached to the repair, so a reviewer can see why the patch exists.

If the first attempt isn't right, you can request a revision on the same PR and review the updated patch, rather than opening a new one.

Verifying external facts before you act

A maintenance decision is only as good as the fact behind it. Since.dev's verification angle is "world state": external facts, versions, and provider conditions that an agent or a person can check before acting.

The mechanism is worth noting: verification reads recorded evidence, without a fresh fetch. So a check like example-sdk.version = 19.0.0 can come back valid, changed (the observation differs — e.g. now 20.0.0), or unknown. When it returns changed, you get evidence to review rather than a silent assumption. When it returns unknown, treat that as a gap to resolve, not a pass.

What to check when a dependency change breaks your build

Use this as a triage list:

Check Why it matters
Which dependency changed, and from what version to what Confirms the trigger (e.g. 19.0.0 → 20.0.0)
Is there an official migration guide? The supported fix should follow it, not guesswork
Which files call the changed API/SDK? Scopes the blast radius before you patch
Does the fix run through your existing CI? Keeps validation consistent with your normal flow
Is the upstream evidence attached to the PR? Lets a reviewer verify the reasoning
Is the version observation current? A stale or unknown observation can mislead the fix

Where this fits in GitHub maintenance

Traditional maintenance covers your own code, issues, and PRs. Dependency-driven maintenance adds a second track: watching the APIs, SDKs, packages, and models underneath you, and turning their changes into reviewable repairs. Since.dev's supported sources span npm, GitHub, PyPI, Rust, OpenAPI, and RubyGems, and its stated goal is "less chasing changes, more moving forward."

The division of labor is explicit: the tool detects, traces, and prepares; your CI and your final call decide what merges. That keeps maintenance reviewable and keeps the judgment with your team.

What Is a Software Repair PR and How Does It Fix Dependency Changes?

A software repair PR is a draft pull request that patches code affected by an upstream change — an API, SDK, or model update — rather than by anything you edited yourself. Since.dev describes the trigger plainly: "Your code didn't change. Everything under it did." The tool watches supported dependencies, traces a detected change to the code that uses it, and prepares a focused patch that runs through your existing CI. It applies when the change is one of the supported sources and the affected code can be traced to a call site; unsupported changes or indirect usages that the trace misses still need a human.

The workflow, step by step

Since.dev lays out four stages in its illustrative workflow:

  1. Spot the external change. A scheduled check finds a release and its official migration guide. The example shows a package observed at 19.0.0 at 09:00 and 20.0.0 at 10:15, with a migration guide noting send → messages.create.
  2. Find the impact. The tool locates the code the change touches — for instance, an endpoint moving from /v1/messages to /v2/messages and the call in src/integrations/messages.ts.
  3. Prepare a repair. A small, supported fix is drafted as a patch.
  4. Review. The draft PR runs your checks; the final call is yours.

The output is a draft PR, not a merge. Your CI runs in your repository, and you review the patch before anything lands.

What a repair PR contains

Element What it is
Focused patch A small change scoped to the affected code, not a broad rewrite
Upstream evidence The migration guide, version observation, or contract change behind the fix
CI results Your existing checks, run on the draft PR
Revision path The same PR can be updated on request, so review happens in one place

Since.dev states that "upstream evidence stays with the repair," so the reason for the patch is visible alongside it rather than in a separate ticket.

What to verify before merging

  • Affected call sites. Confirm the patch covers every place the changed API, SDK, or model is used — including indirect usages the trace may not have caught.
  • Test results. The draft PR uses your CI, so treat a green run as necessary but not sufficient; check that the tests actually exercise the changed path.
  • Whether the change still holds. Since.dev's verification reads recorded evidence without a fresh fetch, so an observation can be stale. Its example shows a version check returning valid, changed, or unknown — if the observation differs from what your agent or code assumes, review the evidence before acting.

Common failure modes

  • Unsupported changes. Only supported sources produce repair PRs; anything outside that set needs manual work.
  • Stale observations. Verification reads recorded evidence, so a check can reflect an older state than the live one.
  • Missed indirect usages. A patch scoped to traced call sites may not cover code that reaches the dependency through another path.
  • Assumption drift in agents. If an agent acts on a version or provider condition that has since changed, the repair PR is not the fix — the assumption is.

The practical test for whether a repair PR is worth adopting: if your maintenance load comes from dependencies changing under stable code, and those changes fall within supported sources, a draft PR with evidence and your own CI is a reviewable starting point rather than a blank page.

What Is OpenAPI-Generated API Documentation and How Does It Work?

OpenAPI-generated API documentation is reference documentation that is produced automatically from an OpenAPI description file rather than written by hand. You write (or generate) a machine-readable specification of your API — endpoints, parameters, request bodies, responses, schemas, and auth — and a documentation tool reads that file and renders a browsable, often interactive reference site. The spec becomes the single source of truth; the docs become a build artifact.

This differs from manually written docs in one fundamental way: with hand-written docs, the prose is the source of truth and the API is described separately. With spec-driven docs, the API description is the source, and every page, table, and code sample is derived from it.

How the workflow actually runs

A typical spec-driven documentation pipeline has five stages:

  1. Author or generate the spec. You either write an OpenAPI document by hand (YAML or JSON), or generate it from code annotations, framework metadata, or a design-first editor. Design-first means the spec is written before implementation; code-first means it is extracted from existing code.
  2. Validate and lint. The spec is checked against the OpenAPI schema and against style rules — consistent naming, required descriptions, no undocumented 4xx responses, no orphaned schemas.
  3. Bundle and transform. Multi-file specs are combined, $ref pointers are resolved, and the document is optionally split into per-tag or per-version outputs.
  4. Render. A documentation tool converts the spec into HTML: an endpoint list, a sidebar of operations, parameter tables, response schemas, and a "try it" console.
  5. Publish and version. The rendered site is deployed, and each API version gets its own snapshot so consumers can read docs matching the version they call.

Steps 2 through 5 are usually automated in CI. If the spec fails validation, the docs build fails — which is the point.

Spec-driven vs. hand-written documentation

Dimension OpenAPI-generated Hand-written
Source of truth The spec file The prose
Consistency with the API High, if the spec is accurate Drifts as the API changes
Effort per endpoint Low after setup Repeated for every endpoint
Narrative and tutorials Weak; needs separate pages Strong
Code samples Generated per language from schemas Written and maintained manually
Customization Bounded by the tool's templates Unlimited
Failure mode Accurate spec, poor docs, or stale spec Beautiful docs that describe an API that no longer exists

The practical conclusion most teams reach: generate the reference, write the guides. Reference material is repetitive and mechanical, which is exactly what generation is good at. Conceptual explanations, migration notes, and tutorials carry judgment that a spec cannot express.

What you get out of the box

Generated reference pages commonly include:

  • An operation list grouped by tag or path, with HTTP method and path.
  • Parameter tables showing name, location (path, query, header, cookie), type, required flag, and description.
  • Request and response schemas rendered as expandable trees, including nested objects and arrays.
  • Authentication details pulled from the securitySchemes section.
  • Interactive request consoles that let a reader send a real call from the browser.
  • Generated code samples in several languages, derived from the same schemas.
  • Multiple output formats, such as a static site, a single HTML file, or a mock server.

Because all of these come from one document, changing a field name in the spec updates the parameter table, the schema tree, and every code sample at once.

Where spec-driven documentation breaks down

Generation is not free. The trade-offs are real:

Spec quality becomes documentation quality. A field with no description produces a table row with an empty cell. A vague summary produces a vague heading. Tools can enforce presence of descriptions via linting, but they cannot enforce that the description is useful.

Customization has limits. If you need a page that does not map to an OpenAPI concept — a conceptual overview, a pricing explanation, a comparison of two endpoints — you write it outside the generator and link to it.

Not everything is expressible. Webhooks, streaming responses, long-polling behavior, and complex multi-step flows are awkward or impossible to describe fully in OpenAPI. Those need prose.

The spec can go stale. If the spec is maintained separately from the implementation, it drifts just like hand-written docs. The mitigation is to generate the spec from code, or to test the implementation against the spec in CI.

Interactive consoles need care. A "try it" button that hits a production API with real credentials is a security and rate-limit problem. Point it at a sandbox, or disable it.

Deciding whether to adopt it

Adopt spec-driven reference documentation if most of these are true:

  • Your API has more than a handful of endpoints, or changes frequently.
  • You ship client SDKs or code samples in more than one language.
  • Multiple teams consume the API and need a consistent, always-current reference.
  • You already have, or are willing to maintain, an OpenAPI description.

Stay with hand-written docs, or a hybrid, if:

  • Your API is small and stable, and the reference fits on one page.
  • Your documentation is mostly conceptual and contains little endpoint-level detail.
  • You cannot commit to keeping the spec in sync with the implementation.

A reasonable middle path: generate the reference from the spec, and hand-write the getting-started guide, authentication walkthrough, and error-handling page. Link the two directions so readers can move from concept to endpoint and back.

A minimal starting checklist

  1. Produce one valid OpenAPI document for a single API version.
  2. Add a linter with rules for descriptions, operation IDs, and error responses.
  3. Wire the docs build into CI so a failing spec fails the build.
  4. Render the reference and review it as a reader, not as the author.
  5. Write the two or three conceptual pages the generator cannot produce.
  6. Version the published docs alongside the API version.

The core idea is simple: describe the API once, in a format both machines and humans can read, and let the reference documentation fall out of that description. Everything else — tooling, hosting, interactivity — is a detail on top of that decision.

Website Overview

Page metadata, canonical configuration and social previews work together to provide more consistent search and sharing presentation. An active inbound-mail setup with incomplete authentication may leave the domain more open to impersonation. Provider hosting alone does not close that gap.

Domain and Registration

The domain was registered less than a year ago and has limited historical evidence to assess. Transfer-protection status is present, helping reduce the risk of unauthorized domain transfers. The registrar is CloudFlare, Inc., a widely used domain service provider. The domain uses the common .dev extension, which is not an independent safety signal.

DNS and Email

MX records exist, but SPF, DKIM and DMARC were not detected. Protection against domain impersonation may be incomplete. Nameservers are provided by Cloudflare, indicating managed DNS hosting. MX records point to the Amazon SES email service. No CNAME was found; the observed records resolve directly to addresses. TXT records include verification markers for Google. Such markers may also remain after a service stops being used.

TLS and Certificates

The certificate uses an RSA 2048-bit public key, offering broad client compatibility. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued by Let's Encrypt, commonly associated with automated certificate services. The certificate's total validity is about 89 days, consistent with a short renewal cycle.

HTTP and Browser Security

The response lacks these common security headers: CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, clickjacking protection. CORS permits any origin to read this response. This is common for public resources; sensitive responses need narrower handling. No X-Powered-By header was found, reducing one common source of backend fingerprinting information. No obvious internal addresses or debug information were found in the headers. The Server header contains the custom value Vercel.

Technology Stack Analysis

The public page identifies Google Analytics, Vercel without precise versions, leaving fewer clues for version-specific scanning.

Search and Social Sharing

Twitter Card metadata is configured. JSON-LD includes Organization data, helping describe the organization as an entity. The title has 33 characters, within a common display range. A meta description is present, with 119 characters. The observed directives allow indexing and link following.

Hosting and Email

DNSCloudflare
HostingVercel
EmailAmazon SES
Location United States flagUnited States 216.150.1.193

User reviews (0)

  • No reviews yet.

Pages, Search and Sharing

Meta descriptionYour code didn’t change. Everything under it did. Since.dev turns supported API, SDK and model changes into repair PRs.
Canonical URLhttps://since.dev/
LanguageEnglish (default)
Twitter Cardsummary_large_image
All bots 1 allowed · 0 disallowed
  • Allow/

Registration details RDAP / WHOIS

RegistrarCloudFlare, Inc.
Registered2026-08-06
Expires2027-08-06
Domain statusclient transfer prohibited
Nameserversjulian.ns.cloudflare.com、wanda.ns.cloudflare.com
DNSSECunsigned

DNS records

TypeNameValueTTLPriority
Asince.dev216.150.1.193294—
Asince.dev216.150.16.193294—
MXsince.devinbound-smtp.us-east-1.amazonaws.com360010
NSsince.devjulian.ns.cloudflare.com86400—
NSsince.devwanda.ns.cloudflare.com86400—
TXTsince.devgoogle-site-verification=aOqFIHRBftHvWbDwbIAqS37pOsWpDHkxl6kOHtZAHJw3600—

TLS and certificates

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subjectsince.dev
IssuerLet's Encrypt
Valid until2026-11-04T19:29 · Remaining when checked: 42 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HeaderValue
content-typetext/html; charset=utf-8
cache-controlpublic, max-age=0, must-revalidate
serverVercel
strict-transport-securitymax-age=63072000
access-control-allow-origin*

Identified technologies

Google AnalyticsVercel