Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

release.next

Na co exekutor integrace zvedá verzi trunku, když přistává head (ADR 0134): verze, kterou trunk deklaruje, jak daleko head posouvá veřejný kontrakt změřený proti commitnutému registru trunku, co ten posun vyžaduje podle režimu verze, spodní mez repozitáře z `release.floor` v politice, třída výjimky, která mez snížila, pokud každá změněná cesta spadá do jedné, větší z požadavku a meze, a verze trunku jím zvýšená — s jednou větou na krok. Vše se čte z gitu na dvou refech, takže odpověď nezávisí na tom, který spustitelný soubor běží, ani na vlastní verzi větve, a proto opakované přistání nemůže zvýšit dvakrát. Rozhoduje a nic nezapisuje; vstup, který nelze přečíst, se odmítne, nehádá se.

Na co exekutor integrace zvedá verzi trunku, když přistává head (ADR 0134): verze, kterou trunk deklaruje, jak daleko head posouvá veřejný kontrakt změřený proti commitnutému registru trunku, co ten posun vyžaduje podle režimu verze, spodní mez repozitáře z `release.floor` v politice, třída výjimky, která mez snížila, pokud každá změněná cesta spadá do jedné, větší z požadavku a meze, a verze trunku jím zvýšená — s jednou větou na krok. Vše se čte z gitu na dvou refech, takže odpověď nezávisí na tom, který spustitelný soubor běží, ani na vlastní verzi větve, a proto opakované přistání nemůže zvýšit dvakrát. Rozhoduje a nic nezapisuje; vstup, který nelze přečíst, se odmítne, nehádá se.

Zpřístupnění

Kde je tato jedna definice dosažitelná. Absence je explicitní: povrch, který není uveden, ji nenese.

povrchjako
MCPnástroj majordomus_release_next
HTTPGET /api/v1/release/next operationId release.next
příkazová řádka—

Schémata

Kanonický vstup a výstup z typů Rustu; schéma nástroje MCP a parametry a odpovědi OpenAPI se odvozují z nich.

vstup · ReleaseNextInput

Vstup release.next: přistání, na které se ptá.

use majordomus_cli::capability::builtin::release::NextInput;
// nothing named is the landing the executor performs: this branch onto the trunk
let input = NextInput::default();
assert_eq!((input.base.as_deref(), input.head()), (None, "HEAD"));
vlastnosttyppovinnépopis
základ string | null ne Trunk, ze kterého přistání vychází; když chybí, remote-tracking ref trunku, který tento repozitář jmenuje (výchozí větev jeho remote, jinak jeho vlastní trunk).
head string | null ne Co přistává; HEAD při absenci.
JSON Schema
{
  "additionalProperties": false,
  "description": "The input of `release.next`: the landing it is asked about.\n\n```\nuse majordomus_cli::capability::builtin::release::NextInput;\n// nothing named is the landing the executor performs: this branch onto the trunk\nlet input = NextInput::default();\nassert_eq!((input.base.as_deref(), input.head()), (None, \"HEAD\"));\n```",
  "properties": {
    "base": {
      "description": "The trunk the landing raises from; when absent, the remote-tracking ref of the trunk\nthis repository names (its remote's default branch, else its own trunk).",
      "type": [
        "string",
        "null"
      ]
    },
    "head": {
      "description": "What lands; `HEAD` when absent.",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "title": "ReleaseNextInput",
  "type": "object"
}

výstup · LandingDecision

Co přistání přiděluje a proč, krok za krokem.

use majordomus_cli::release::compat::Impact;
use majordomus_cli::release::landing::{decide, LandingDecision, ReleasePolicy, DECISION_SCHEMA};
use majordomus_cli::release::version::Version;
let d: LandingDecision = decide(Version::parse("1.2.3").unwrap(), Impact::None, &ReleasePolicy::default(), &[]);
assert_eq!(d.schema, DECISION_SCHEMA);
assert_eq!(d.next_version, "1.2.3", "nothing moved and nothing is owed");
vlastnosttyppovinnépopis
alokace reference ano Zda politika alokuje při přistání; rozhodnutí se počítá tak či tak.
výjimka jedno ze 2 ne Výjimka, která snížila práh, pokud nějaká byla.
vysvětlení array ano Jedna věta na krok, v pořadí, v jakém bylo rozhodnuto.
spodní mez reference ano Spodní mez politiky, nebo none, když se uplatnila výjimka.
režim reference ano Režim kompatibility, který verze trunku uvádí v platnost.
next_version string ano Verze kmene zvýšená o selected.
pozorováno reference ano Jak daleko změna posouvá veřejný kontrakt, změřeno (ADR 0051).
required_by_compatibility reference ano Co tento posun vyžaduje podle režimu verze.
schema string ano DECISION_SCHEMA.
vybráno reference ano Větší z požadavku a spodní meze.
trunk_version string ano Co deklaruje hlavní větev: číslo, od něhož se zvedá to další.
JSON Schema
{
  "$defs": {
    "AppliedExemption": {
      "description": "The exemption a decision applied, by class.\n\n```\nuse majordomus_cli::release::landing::AppliedExemption;\nlet e = AppliedExemption { id: \"plan-records\".into(), reason: \"plan records\".into() };\nassert_eq!(e.id, \"plan-records\");\n```",
      "properties": {
        "id": {
          "description": "The class's id.",
          "type": "string"
        },
        "reason": {
          "description": "The class's description, which is the reason the floor did not apply.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "reason"
      ],
      "type": "object"
    },
    "ReleaseAllocation": {
      "description": "Whether the integration executor allocates the version when it lands a pull request.\n\n```\nuse majordomus_cli::release::landing::Allocation;\n// a policy that says nothing changes nothing: a pull request raises its own version\nassert_eq!(Allocation::default(), Allocation::Off);\nlet a: Allocation = serde_json::from_str(\"\\\"landing\\\"\").unwrap();\nassert_eq!(a.as_str(), \"landing\");\n```",
      "oneOf": [
        {
          "const": "off",
          "description": "The version is raised by whoever changes the contract, as before ADR 0134.",
          "type": "string"
        },
        {
          "const": "landing",
          "description": "The integration executor raises it at landing; a pull request does not.",
          "type": "string"
        }
      ]
    },
    "ReleaseImpact": {
      "description": "How much a change moves the contract.\n\nOrdered, so that \"the declared bump covers what is required\" is a comparison rather than\na table:\n\n```\nuse majordomus_cli::release::compat::Impact;\nassert!(Impact::Major > Impact::Minor);\nassert!(Impact::Minor > Impact::Patch);\nassert!(Impact::Patch > Impact::None);\n```",
      "oneOf": [
        {
          "const": "none",
          "description": "The contract did not move.",
          "type": "string"
        },
        {
          "const": "patch",
          "description": "It moved behind the boundary: a caller cannot tell.",
          "type": "string"
        },
        {
          "const": "minor",
          "description": "Something arrived; every existing caller still works.",
          "type": "string"
        },
        {
          "const": "major",
          "description": "Something a caller could hold is gone or changed under it.",
          "type": "string"
        }
      ]
    },
    "ReleasePolicyMode": {
      "description": "How this project turns a measured impact into the version it owes.\n\nSemantic versioning hands `0.y.z` a blanket exemption — \"anything MAY change at any\ntime\" — and Elm refuses the exemption by starting every package at `1.0.0`, because a\nrule with an escape hatch is a rule about when to use the hatch. This repository is `0.x`\nand has not earned `1.0.0`, so neither answer is available: demanding `major` would\ndemand `1.0.0` for a single removal, and granting the exemption would let a breaking\nchange ship as a patch.\n\nSo below `1.0.0` the floor is a minor. Any movement of the surface, gone or new, is at\nleast a minor release; only an unchanged surface owes nothing. That is the strongest\nsignal `0.x` has, and a removal is still *named* as breaking whatever the verdict, so the\nevidence does not quietly become a minor along with the number.\n\nAt `1.0.0` the shift ends: `Mode::Semver` is the ordinary rule, and the transition is\none line of `Policy::required_of`.\n\n```\nuse majordomus_cli::release::compat::{Mode, Policy};\nuse majordomus_cli::release::version::Version;\nassert_eq!(Policy::for_version(Version::parse(\"0.9.0\").unwrap()).mode, Mode::Pre1_0Strict);\nassert_eq!(Policy::for_version(Version::parse(\"1.0.0\").unwrap()).mode, Mode::Semver);\n```",
      "oneOf": [
        {
          "const": "pre1-0-strict",
          "description": "Below `1.0.0`: breaking changes are allowed, and cost a minor rather than nothing.",
          "type": "string"
        },
        {
          "const": "semver",
          "description": "At or above `1.0.0`: the impact is the requirement.",
          "type": "string"
        }
      ]
    }
  },
  "description": "What a landing allocates, and why, step by step.\n\n```\nuse majordomus_cli::release::compat::Impact;\nuse majordomus_cli::release::landing::{decide, LandingDecision, ReleasePolicy, DECISION_SCHEMA};\nuse majordomus_cli::release::version::Version;\nlet d: LandingDecision = decide(Version::parse(\"1.2.3\").unwrap(), Impact::None, &ReleasePolicy::default(), &[]);\nassert_eq!(d.schema, DECISION_SCHEMA);\nassert_eq!(d.next_version, \"1.2.3\", \"nothing moved and nothing is owed\");\n```",
  "properties": {
    "allocation": {
      "$ref": "#/$defs/ReleaseAllocation",
      "description": "Whether the policy allocates at landing; the decision is computed either way."
    },
    "exemption": {
      "anyOf": [
        {
          "$ref": "#/$defs/AppliedExemption"
        },
        {
          "type": "null"
        }
      ],
      "description": "The exemption that lowered the floor, if one did."
    },
    "explanation": {
      "description": "One sentence per step, in the order the decision was made.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "floor": {
      "$ref": "#/$defs/ReleaseImpact",
      "description": "The policy's floor, or `none` when an exemption applied."
    },
    "mode": {
      "$ref": "#/$defs/ReleasePolicyMode",
      "description": "The compatibility mode the trunk's version puts in force."
    },
    "next_version": {
      "description": "The trunk's version raised by `selected`.",
      "type": "string"
    },
    "observed": {
      "$ref": "#/$defs/ReleaseImpact",
      "description": "How far the change moves the public contract, measured (ADR 0051)."
    },
    "required_by_compatibility": {
      "$ref": "#/$defs/ReleaseImpact",
      "description": "What that movement requires under the version's mode."
    },
    "schema": {
      "description": "`DECISION_SCHEMA`.",
      "type": "string"
    },
    "selected": {
      "$ref": "#/$defs/ReleaseImpact",
      "description": "The larger of the requirement and the floor."
    },
    "trunk_version": {
      "description": "What the trunk declares: the number the next one is raised from.",
      "type": "string"
    }
  },
  "required": [
    "schema",
    "trunk_version",
    "observed",
    "required_by_compatibility",
    "floor",
    "selected",
    "next_version",
    "allocation",
    "mode",
    "explanation"
  ],
  "title": "LandingDecision",
  "type": "object"
}

Politiky

benchmark
waived — prominuto: published_history
cache
vypnuto — každé volání spustí handler

Cíle benchmarku

Odvozeno z registru pro tento repozitář: jeden požadavek na transport a případy, které poskytuje typ vstupu. Celá matice je na stránce měření výkonu.

transportstatepřípadytargets
directprominuto (published_history)0
mcpprominuto (published_history)0
httpprominuto (published_history)0

Prohledává názvy a popisy všech stránek, které tento web publikuje.