@cat-factory/contracts 0.302.0 → 0.303.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/merge.d.ts CHANGED
@@ -1574,6 +1574,800 @@ export declare const riskPolicySchema: v.ObjectSchema<{
1574
1574
  readonly createdAt: v.NumberSchema<undefined>;
1575
1575
  }, undefined>;
1576
1576
  export type RiskPolicy = v.InferOutput<typeof riskPolicySchema>;
1577
+ /**
1578
+ * Which tier a risk policy in a board's visible library is STORED at, and therefore who may edit
1579
+ * it. `account` policies are authored once for the whole account and every board under it
1580
+ * inherits them read-only; `workspace` policies belong to the board that holds them.
1581
+ *
1582
+ * There is deliberately no `builtin` member, unlike the fragment and foundational-service tiers.
1583
+ * The built-in catalog (`seedRiskPolicies()`) is COPIED into each board at creation and reconciled
1584
+ * against the catalog from there, so a built-in is a `workspace` row a board owns outright: it can
1585
+ * be edited, deleted and reseeded. A tier that carried no rows would have to answer what a reseed
1586
+ * means, and the answer is already "the row this board owns".
1587
+ */
1588
+ export declare const riskPolicyTierSchema: v.PicklistSchema<["account", "workspace"], undefined>;
1589
+ export type RiskPolicyTier = v.InferOutput<typeof riskPolicyTierSchema>;
1590
+ /**
1591
+ * One entry of the library a board actually picks from: the merge of its own policies with the
1592
+ * ones it inherits from its account, each carrying the tier that owns it.
1593
+ *
1594
+ * The tier is what every reader needs and none can re-derive: a board's editor renders an
1595
+ * inherited policy read-only beside a clone action, and the engine resolves a task's pin through
1596
+ * the same merged view, so a pinned account policy governs a run exactly as a local one does.
1597
+ * A workspace row WINS over an account row of the same id, and a board's suppression drops an
1598
+ * inherited id from this list outright (`riskPolicySuppressionSchema`).
1599
+ */
1600
+ export declare const riskPolicyLibraryEntrySchema: v.ObjectSchema<{
1601
+ readonly id: v.StringSchema<undefined>;
1602
+ readonly name: v.StringSchema<undefined>;
1603
+ /** Auto-merge only when the assessment's complexity is at or below this. */
1604
+ readonly maxComplexity: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
1605
+ /** Auto-merge only when the assessment's risk is at or below this. */
1606
+ readonly maxRisk: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
1607
+ /** Auto-merge only when the assessment's impact is at or below this. */
1608
+ readonly maxImpact: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
1609
+ /** How many times the `ci-fixer` agent may try to turn CI green before giving up. */
1610
+ readonly ciMaxAttempts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
1611
+ /**
1612
+ * How many reviewer passes the iterative requirements-review loop may run before it
1613
+ * stops on its own and asks the human to pick (extra round / proceed anyway / reset the
1614
+ * task). One reviewer pass = one iteration; the initial review counts as iteration 1.
1615
+ */
1616
+ readonly maxRequirementIterations: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
1617
+ /**
1618
+ * The highest finding severity the requirements review tolerates WITHOUT stopping. When
1619
+ * every outstanding finding from a reviewer pass is at or below this level, the findings
1620
+ * are recorded but the run does NOT pause for human approval — the incorporation
1621
+ * companion is skipped and the next pipeline step runs automatically. `none` (the
1622
+ * default) tolerates nothing, so any finding pauses for a human; `high` tolerates
1623
+ * everything. Severity order: none < low < medium < high.
1624
+ */
1625
+ readonly maxRequirementConcernAllowed: v.PicklistSchema<["none", "low", "medium", "high"], undefined>;
1626
+ /**
1627
+ * How many times the test quality-control companion may loop the Tester for a more
1628
+ * complete report before it stops gating and lets the run proceed to the greenlight /
1629
+ * fixer decision. One QC-driven Tester re-run = one iteration, so this is the maximum
1630
+ * number of QC re-runs: `1` permits a single re-run before the gate gives up. Independent
1631
+ * of the `ciMaxAttempts` fixer budget.
1632
+ */
1633
+ readonly maxTesterQualityIterations: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
1634
+ /**
1635
+ * How long (minutes) the post-release-health gate watches the deployed release's
1636
+ * Datadog monitors/SLOs before declaring it healthy and advancing.
1637
+ */
1638
+ readonly releaseWatchWindowMinutes: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>;
1639
+ /**
1640
+ * How many `on-call` investigations the post-release-health gate may dispatch while
1641
+ * watching before it gives up and raises a notification. The on-call agent investigates
1642
+ * rather than fixing prod, so 1 is the sensible default.
1643
+ */
1644
+ readonly releaseMaxAttempts: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
1645
+ /**
1646
+ * How long (minutes) the `human-review` gate waits after the latest review comment before
1647
+ * dispatching the `fixer` to address the batch — a grace window so a reviewer leaving a
1648
+ * series of comments isn't churned mid-stream. Only the unapproved path waits; an approved
1649
+ * PR's outstanding comments are addressed immediately.
1650
+ */
1651
+ readonly humanReviewGraceMinutes: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
1652
+ /**
1653
+ * The minimum score (0..1) a JUDGE step's verdict must reach for the run to advance
1654
+ * without a human. Below it, the judge applies its registration's `onFail` disposition
1655
+ * (park / bounce / fail). The per-task counterpart of `maxRequirementConcernAllowed`:
1656
+ * how much rubric deviation THIS task tolerates. See `docs/initiatives/judge-registry.md`.
1657
+ */
1658
+ readonly judgeMinScore: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
1659
+ /**
1660
+ * How many BOUNCE rounds a judge may spend — re-arming the preceding producing step with
1661
+ * the verdict's findings as rework feedback — before it must stop and ask a human. `0`
1662
+ * means never bounce (a failing verdict goes straight to the registration's park/fail).
1663
+ */
1664
+ readonly judgeMaxBounces: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
1665
+ /**
1666
+ * When false the `merger` step never auto-merges: every PR is routed to a human
1667
+ * `merge_review` notification regardless of the assessment scores. The built-in
1668
+ * "Manual review only" preset sets this; a custom preset may too. Defaults to true
1669
+ * (the historical behaviour: auto-merge a within-threshold, explained assessment).
1670
+ */
1671
+ readonly autoMergeEnabled: v.BooleanSchema<undefined>;
1672
+ /**
1673
+ * Estimate gating for the optional implementation-fork decision phase on the Coder step
1674
+ * (the same three axes / `onMissingEstimate` as any other {@link stepGatingSchema}). When
1675
+ * present and `enabled`, a task whose Coder config resolves to `auto` surfaces materially
1676
+ * different implementation approaches and parks for a human whenever ANY supplied axis of
1677
+ * its estimate is met/exceeded; `onMissingEstimate: 'run'` proposes even without an
1678
+ * estimate (fail toward asking). Absent/disabled ⇒ fork surfacing is off in `auto` mode
1679
+ * (a task can still force it via its `always` tri-state). Disabled by default on the
1680
+ * built-in presets.
1681
+ */
1682
+ readonly forkDecision: v.OptionalSchema<v.NullableSchema<v.ObjectSchema<{
1683
+ readonly enabled: v.BooleanSchema<undefined>;
1684
+ readonly minComplexity: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
1685
+ readonly minRisk: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
1686
+ readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
1687
+ readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
1688
+ }, undefined>, undefined>, undefined>;
1689
+ /**
1690
+ * Per-change-class auto-merge rules ({@link mergeClassRulesSchema}). An absent class — and
1691
+ * therefore an empty object — means "use the score ceilings above", so `{}` is the identity.
1692
+ * A rule NEVER overrides `autoMergeEnabled: false`: that master switch wins first.
1693
+ */
1694
+ readonly classRules: Omit<v.StrictObjectSchema<{
1695
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1696
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1697
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1698
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1699
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1700
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1701
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1702
+ readonly entries: {
1703
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1704
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1705
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1706
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1707
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1708
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1709
+ };
1710
+ readonly "~standard": v.StandardProps<{
1711
+ config?: "always" | "never" | "thresholds" | undefined;
1712
+ dependency?: "always" | "never" | "thresholds" | undefined;
1713
+ docs?: "always" | "never" | "thresholds" | undefined;
1714
+ schema?: "always" | "never" | "thresholds" | undefined;
1715
+ source?: "always" | "never" | "thresholds" | undefined;
1716
+ test?: "always" | "never" | "thresholds" | undefined;
1717
+ }, {
1718
+ config?: "always" | "never" | "thresholds" | undefined;
1719
+ dependency?: "always" | "never" | "thresholds" | undefined;
1720
+ docs?: "always" | "never" | "thresholds" | undefined;
1721
+ schema?: "always" | "never" | "thresholds" | undefined;
1722
+ source?: "always" | "never" | "thresholds" | undefined;
1723
+ test?: "always" | "never" | "thresholds" | undefined;
1724
+ }>;
1725
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1726
+ config?: "always" | "never" | "thresholds" | undefined;
1727
+ dependency?: "always" | "never" | "thresholds" | undefined;
1728
+ docs?: "always" | "never" | "thresholds" | undefined;
1729
+ schema?: "always" | "never" | "thresholds" | undefined;
1730
+ source?: "always" | "never" | "thresholds" | undefined;
1731
+ test?: "always" | "never" | "thresholds" | undefined;
1732
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1733
+ readonly "~types"?: {
1734
+ readonly input: {
1735
+ config?: "always" | "never" | "thresholds" | undefined;
1736
+ dependency?: "always" | "never" | "thresholds" | undefined;
1737
+ docs?: "always" | "never" | "thresholds" | undefined;
1738
+ schema?: "always" | "never" | "thresholds" | undefined;
1739
+ source?: "always" | "never" | "thresholds" | undefined;
1740
+ test?: "always" | "never" | "thresholds" | undefined;
1741
+ };
1742
+ readonly output: {
1743
+ config?: "always" | "never" | "thresholds" | undefined;
1744
+ dependency?: "always" | "never" | "thresholds" | undefined;
1745
+ docs?: "always" | "never" | "thresholds" | undefined;
1746
+ schema?: "always" | "never" | "thresholds" | undefined;
1747
+ source?: "always" | "never" | "thresholds" | undefined;
1748
+ test?: "always" | "never" | "thresholds" | undefined;
1749
+ };
1750
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1751
+ } | undefined;
1752
+ };
1753
+ /**
1754
+ * Per-ROLE narrowing of `classRules` ({@link classRulesByRoleSchema}), keyed on the workspace
1755
+ * role the run's initiator held when it was admitted. Narrow-only, so an empty map is the
1756
+ * identity and a role entry can never widen what `classRules` already allows.
1757
+ */
1758
+ readonly classRulesByRole: Omit<v.StrictObjectSchema<{
1759
+ admin: Omit<v.StrictObjectSchema<{
1760
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1761
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1762
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1763
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1764
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1765
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1766
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1767
+ readonly entries: {
1768
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1769
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1770
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1771
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1772
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1773
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1774
+ };
1775
+ readonly "~standard": v.StandardProps<{
1776
+ config?: "always" | "never" | "thresholds" | undefined;
1777
+ dependency?: "always" | "never" | "thresholds" | undefined;
1778
+ docs?: "always" | "never" | "thresholds" | undefined;
1779
+ schema?: "always" | "never" | "thresholds" | undefined;
1780
+ source?: "always" | "never" | "thresholds" | undefined;
1781
+ test?: "always" | "never" | "thresholds" | undefined;
1782
+ }, {
1783
+ config?: "always" | "never" | "thresholds" | undefined;
1784
+ dependency?: "always" | "never" | "thresholds" | undefined;
1785
+ docs?: "always" | "never" | "thresholds" | undefined;
1786
+ schema?: "always" | "never" | "thresholds" | undefined;
1787
+ source?: "always" | "never" | "thresholds" | undefined;
1788
+ test?: "always" | "never" | "thresholds" | undefined;
1789
+ }>;
1790
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1791
+ config?: "always" | "never" | "thresholds" | undefined;
1792
+ dependency?: "always" | "never" | "thresholds" | undefined;
1793
+ docs?: "always" | "never" | "thresholds" | undefined;
1794
+ schema?: "always" | "never" | "thresholds" | undefined;
1795
+ source?: "always" | "never" | "thresholds" | undefined;
1796
+ test?: "always" | "never" | "thresholds" | undefined;
1797
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1798
+ readonly "~types"?: {
1799
+ readonly input: {
1800
+ config?: "always" | "never" | "thresholds" | undefined;
1801
+ dependency?: "always" | "never" | "thresholds" | undefined;
1802
+ docs?: "always" | "never" | "thresholds" | undefined;
1803
+ schema?: "always" | "never" | "thresholds" | undefined;
1804
+ source?: "always" | "never" | "thresholds" | undefined;
1805
+ test?: "always" | "never" | "thresholds" | undefined;
1806
+ };
1807
+ readonly output: {
1808
+ config?: "always" | "never" | "thresholds" | undefined;
1809
+ dependency?: "always" | "never" | "thresholds" | undefined;
1810
+ docs?: "always" | "never" | "thresholds" | undefined;
1811
+ schema?: "always" | "never" | "thresholds" | undefined;
1812
+ source?: "always" | "never" | "thresholds" | undefined;
1813
+ test?: "always" | "never" | "thresholds" | undefined;
1814
+ };
1815
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1816
+ } | undefined;
1817
+ };
1818
+ member: Omit<v.StrictObjectSchema<{
1819
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1820
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1821
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1822
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1823
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1824
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1825
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1826
+ readonly entries: {
1827
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1828
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1829
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1830
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1831
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1832
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1833
+ };
1834
+ readonly "~standard": v.StandardProps<{
1835
+ config?: "always" | "never" | "thresholds" | undefined;
1836
+ dependency?: "always" | "never" | "thresholds" | undefined;
1837
+ docs?: "always" | "never" | "thresholds" | undefined;
1838
+ schema?: "always" | "never" | "thresholds" | undefined;
1839
+ source?: "always" | "never" | "thresholds" | undefined;
1840
+ test?: "always" | "never" | "thresholds" | undefined;
1841
+ }, {
1842
+ config?: "always" | "never" | "thresholds" | undefined;
1843
+ dependency?: "always" | "never" | "thresholds" | undefined;
1844
+ docs?: "always" | "never" | "thresholds" | undefined;
1845
+ schema?: "always" | "never" | "thresholds" | undefined;
1846
+ source?: "always" | "never" | "thresholds" | undefined;
1847
+ test?: "always" | "never" | "thresholds" | undefined;
1848
+ }>;
1849
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1850
+ config?: "always" | "never" | "thresholds" | undefined;
1851
+ dependency?: "always" | "never" | "thresholds" | undefined;
1852
+ docs?: "always" | "never" | "thresholds" | undefined;
1853
+ schema?: "always" | "never" | "thresholds" | undefined;
1854
+ source?: "always" | "never" | "thresholds" | undefined;
1855
+ test?: "always" | "never" | "thresholds" | undefined;
1856
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1857
+ readonly "~types"?: {
1858
+ readonly input: {
1859
+ config?: "always" | "never" | "thresholds" | undefined;
1860
+ dependency?: "always" | "never" | "thresholds" | undefined;
1861
+ docs?: "always" | "never" | "thresholds" | undefined;
1862
+ schema?: "always" | "never" | "thresholds" | undefined;
1863
+ source?: "always" | "never" | "thresholds" | undefined;
1864
+ test?: "always" | "never" | "thresholds" | undefined;
1865
+ };
1866
+ readonly output: {
1867
+ config?: "always" | "never" | "thresholds" | undefined;
1868
+ dependency?: "always" | "never" | "thresholds" | undefined;
1869
+ docs?: "always" | "never" | "thresholds" | undefined;
1870
+ schema?: "always" | "never" | "thresholds" | undefined;
1871
+ source?: "always" | "never" | "thresholds" | undefined;
1872
+ test?: "always" | "never" | "thresholds" | undefined;
1873
+ };
1874
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1875
+ } | undefined;
1876
+ };
1877
+ viewer: Omit<v.StrictObjectSchema<{
1878
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1879
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1880
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1881
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1882
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1883
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1884
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1885
+ readonly entries: {
1886
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1887
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1888
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1889
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1890
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1891
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1892
+ };
1893
+ readonly "~standard": v.StandardProps<{
1894
+ config?: "always" | "never" | "thresholds" | undefined;
1895
+ dependency?: "always" | "never" | "thresholds" | undefined;
1896
+ docs?: "always" | "never" | "thresholds" | undefined;
1897
+ schema?: "always" | "never" | "thresholds" | undefined;
1898
+ source?: "always" | "never" | "thresholds" | undefined;
1899
+ test?: "always" | "never" | "thresholds" | undefined;
1900
+ }, {
1901
+ config?: "always" | "never" | "thresholds" | undefined;
1902
+ dependency?: "always" | "never" | "thresholds" | undefined;
1903
+ docs?: "always" | "never" | "thresholds" | undefined;
1904
+ schema?: "always" | "never" | "thresholds" | undefined;
1905
+ source?: "always" | "never" | "thresholds" | undefined;
1906
+ test?: "always" | "never" | "thresholds" | undefined;
1907
+ }>;
1908
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1909
+ config?: "always" | "never" | "thresholds" | undefined;
1910
+ dependency?: "always" | "never" | "thresholds" | undefined;
1911
+ docs?: "always" | "never" | "thresholds" | undefined;
1912
+ schema?: "always" | "never" | "thresholds" | undefined;
1913
+ source?: "always" | "never" | "thresholds" | undefined;
1914
+ test?: "always" | "never" | "thresholds" | undefined;
1915
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1916
+ readonly "~types"?: {
1917
+ readonly input: {
1918
+ config?: "always" | "never" | "thresholds" | undefined;
1919
+ dependency?: "always" | "never" | "thresholds" | undefined;
1920
+ docs?: "always" | "never" | "thresholds" | undefined;
1921
+ schema?: "always" | "never" | "thresholds" | undefined;
1922
+ source?: "always" | "never" | "thresholds" | undefined;
1923
+ test?: "always" | "never" | "thresholds" | undefined;
1924
+ };
1925
+ readonly output: {
1926
+ config?: "always" | "never" | "thresholds" | undefined;
1927
+ dependency?: "always" | "never" | "thresholds" | undefined;
1928
+ docs?: "always" | "never" | "thresholds" | undefined;
1929
+ schema?: "always" | "never" | "thresholds" | undefined;
1930
+ source?: "always" | "never" | "thresholds" | undefined;
1931
+ test?: "always" | "never" | "thresholds" | undefined;
1932
+ };
1933
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1934
+ } | undefined;
1935
+ };
1936
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1937
+ readonly entries: {
1938
+ admin: v.OptionalSchema<Omit<v.StrictObjectSchema<{
1939
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1940
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1941
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1942
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1943
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1944
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1945
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
1946
+ readonly entries: {
1947
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1948
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1949
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1950
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1951
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1952
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
1953
+ };
1954
+ readonly "~standard": v.StandardProps<{
1955
+ config?: "always" | "never" | "thresholds" | undefined;
1956
+ dependency?: "always" | "never" | "thresholds" | undefined;
1957
+ docs?: "always" | "never" | "thresholds" | undefined;
1958
+ schema?: "always" | "never" | "thresholds" | undefined;
1959
+ source?: "always" | "never" | "thresholds" | undefined;
1960
+ test?: "always" | "never" | "thresholds" | undefined;
1961
+ }, {
1962
+ config?: "always" | "never" | "thresholds" | undefined;
1963
+ dependency?: "always" | "never" | "thresholds" | undefined;
1964
+ docs?: "always" | "never" | "thresholds" | undefined;
1965
+ schema?: "always" | "never" | "thresholds" | undefined;
1966
+ source?: "always" | "never" | "thresholds" | undefined;
1967
+ test?: "always" | "never" | "thresholds" | undefined;
1968
+ }>;
1969
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
1970
+ config?: "always" | "never" | "thresholds" | undefined;
1971
+ dependency?: "always" | "never" | "thresholds" | undefined;
1972
+ docs?: "always" | "never" | "thresholds" | undefined;
1973
+ schema?: "always" | "never" | "thresholds" | undefined;
1974
+ source?: "always" | "never" | "thresholds" | undefined;
1975
+ test?: "always" | "never" | "thresholds" | undefined;
1976
+ }, v.PicklistIssue | v.StrictObjectIssue>;
1977
+ readonly "~types"?: {
1978
+ readonly input: {
1979
+ config?: "always" | "never" | "thresholds" | undefined;
1980
+ dependency?: "always" | "never" | "thresholds" | undefined;
1981
+ docs?: "always" | "never" | "thresholds" | undefined;
1982
+ schema?: "always" | "never" | "thresholds" | undefined;
1983
+ source?: "always" | "never" | "thresholds" | undefined;
1984
+ test?: "always" | "never" | "thresholds" | undefined;
1985
+ };
1986
+ readonly output: {
1987
+ config?: "always" | "never" | "thresholds" | undefined;
1988
+ dependency?: "always" | "never" | "thresholds" | undefined;
1989
+ docs?: "always" | "never" | "thresholds" | undefined;
1990
+ schema?: "always" | "never" | "thresholds" | undefined;
1991
+ source?: "always" | "never" | "thresholds" | undefined;
1992
+ test?: "always" | "never" | "thresholds" | undefined;
1993
+ };
1994
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
1995
+ } | undefined;
1996
+ }, undefined>;
1997
+ member: v.OptionalSchema<Omit<v.StrictObjectSchema<{
1998
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
1999
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2000
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2001
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2002
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2003
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2004
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
2005
+ readonly entries: {
2006
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2007
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2008
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2009
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2010
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2011
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2012
+ };
2013
+ readonly "~standard": v.StandardProps<{
2014
+ config?: "always" | "never" | "thresholds" | undefined;
2015
+ dependency?: "always" | "never" | "thresholds" | undefined;
2016
+ docs?: "always" | "never" | "thresholds" | undefined;
2017
+ schema?: "always" | "never" | "thresholds" | undefined;
2018
+ source?: "always" | "never" | "thresholds" | undefined;
2019
+ test?: "always" | "never" | "thresholds" | undefined;
2020
+ }, {
2021
+ config?: "always" | "never" | "thresholds" | undefined;
2022
+ dependency?: "always" | "never" | "thresholds" | undefined;
2023
+ docs?: "always" | "never" | "thresholds" | undefined;
2024
+ schema?: "always" | "never" | "thresholds" | undefined;
2025
+ source?: "always" | "never" | "thresholds" | undefined;
2026
+ test?: "always" | "never" | "thresholds" | undefined;
2027
+ }>;
2028
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
2029
+ config?: "always" | "never" | "thresholds" | undefined;
2030
+ dependency?: "always" | "never" | "thresholds" | undefined;
2031
+ docs?: "always" | "never" | "thresholds" | undefined;
2032
+ schema?: "always" | "never" | "thresholds" | undefined;
2033
+ source?: "always" | "never" | "thresholds" | undefined;
2034
+ test?: "always" | "never" | "thresholds" | undefined;
2035
+ }, v.PicklistIssue | v.StrictObjectIssue>;
2036
+ readonly "~types"?: {
2037
+ readonly input: {
2038
+ config?: "always" | "never" | "thresholds" | undefined;
2039
+ dependency?: "always" | "never" | "thresholds" | undefined;
2040
+ docs?: "always" | "never" | "thresholds" | undefined;
2041
+ schema?: "always" | "never" | "thresholds" | undefined;
2042
+ source?: "always" | "never" | "thresholds" | undefined;
2043
+ test?: "always" | "never" | "thresholds" | undefined;
2044
+ };
2045
+ readonly output: {
2046
+ config?: "always" | "never" | "thresholds" | undefined;
2047
+ dependency?: "always" | "never" | "thresholds" | undefined;
2048
+ docs?: "always" | "never" | "thresholds" | undefined;
2049
+ schema?: "always" | "never" | "thresholds" | undefined;
2050
+ source?: "always" | "never" | "thresholds" | undefined;
2051
+ test?: "always" | "never" | "thresholds" | undefined;
2052
+ };
2053
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
2054
+ } | undefined;
2055
+ }, undefined>;
2056
+ viewer: v.OptionalSchema<Omit<v.StrictObjectSchema<{
2057
+ config: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2058
+ dependency: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2059
+ docs: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2060
+ schema: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2061
+ source: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2062
+ test: v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>;
2063
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
2064
+ readonly entries: {
2065
+ config: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2066
+ dependency: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2067
+ docs: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2068
+ schema: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2069
+ source: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2070
+ test: v.OptionalSchema<v.PicklistSchema<readonly ["thresholds", "always", "never"], undefined>, undefined>;
2071
+ };
2072
+ readonly "~standard": v.StandardProps<{
2073
+ config?: "always" | "never" | "thresholds" | undefined;
2074
+ dependency?: "always" | "never" | "thresholds" | undefined;
2075
+ docs?: "always" | "never" | "thresholds" | undefined;
2076
+ schema?: "always" | "never" | "thresholds" | undefined;
2077
+ source?: "always" | "never" | "thresholds" | undefined;
2078
+ test?: "always" | "never" | "thresholds" | undefined;
2079
+ }, {
2080
+ config?: "always" | "never" | "thresholds" | undefined;
2081
+ dependency?: "always" | "never" | "thresholds" | undefined;
2082
+ docs?: "always" | "never" | "thresholds" | undefined;
2083
+ schema?: "always" | "never" | "thresholds" | undefined;
2084
+ source?: "always" | "never" | "thresholds" | undefined;
2085
+ test?: "always" | "never" | "thresholds" | undefined;
2086
+ }>;
2087
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
2088
+ config?: "always" | "never" | "thresholds" | undefined;
2089
+ dependency?: "always" | "never" | "thresholds" | undefined;
2090
+ docs?: "always" | "never" | "thresholds" | undefined;
2091
+ schema?: "always" | "never" | "thresholds" | undefined;
2092
+ source?: "always" | "never" | "thresholds" | undefined;
2093
+ test?: "always" | "never" | "thresholds" | undefined;
2094
+ }, v.PicklistIssue | v.StrictObjectIssue>;
2095
+ readonly "~types"?: {
2096
+ readonly input: {
2097
+ config?: "always" | "never" | "thresholds" | undefined;
2098
+ dependency?: "always" | "never" | "thresholds" | undefined;
2099
+ docs?: "always" | "never" | "thresholds" | undefined;
2100
+ schema?: "always" | "never" | "thresholds" | undefined;
2101
+ source?: "always" | "never" | "thresholds" | undefined;
2102
+ test?: "always" | "never" | "thresholds" | undefined;
2103
+ };
2104
+ readonly output: {
2105
+ config?: "always" | "never" | "thresholds" | undefined;
2106
+ dependency?: "always" | "never" | "thresholds" | undefined;
2107
+ docs?: "always" | "never" | "thresholds" | undefined;
2108
+ schema?: "always" | "never" | "thresholds" | undefined;
2109
+ source?: "always" | "never" | "thresholds" | undefined;
2110
+ test?: "always" | "never" | "thresholds" | undefined;
2111
+ };
2112
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
2113
+ } | undefined;
2114
+ }, undefined>;
2115
+ };
2116
+ readonly "~standard": v.StandardProps<{
2117
+ admin?: {
2118
+ config?: "always" | "never" | "thresholds" | undefined;
2119
+ dependency?: "always" | "never" | "thresholds" | undefined;
2120
+ docs?: "always" | "never" | "thresholds" | undefined;
2121
+ schema?: "always" | "never" | "thresholds" | undefined;
2122
+ source?: "always" | "never" | "thresholds" | undefined;
2123
+ test?: "always" | "never" | "thresholds" | undefined;
2124
+ } | undefined;
2125
+ member?: {
2126
+ config?: "always" | "never" | "thresholds" | undefined;
2127
+ dependency?: "always" | "never" | "thresholds" | undefined;
2128
+ docs?: "always" | "never" | "thresholds" | undefined;
2129
+ schema?: "always" | "never" | "thresholds" | undefined;
2130
+ source?: "always" | "never" | "thresholds" | undefined;
2131
+ test?: "always" | "never" | "thresholds" | undefined;
2132
+ } | undefined;
2133
+ viewer?: {
2134
+ config?: "always" | "never" | "thresholds" | undefined;
2135
+ dependency?: "always" | "never" | "thresholds" | undefined;
2136
+ docs?: "always" | "never" | "thresholds" | undefined;
2137
+ schema?: "always" | "never" | "thresholds" | undefined;
2138
+ source?: "always" | "never" | "thresholds" | undefined;
2139
+ test?: "always" | "never" | "thresholds" | undefined;
2140
+ } | undefined;
2141
+ }, {
2142
+ admin?: {
2143
+ config?: "always" | "never" | "thresholds" | undefined;
2144
+ dependency?: "always" | "never" | "thresholds" | undefined;
2145
+ docs?: "always" | "never" | "thresholds" | undefined;
2146
+ schema?: "always" | "never" | "thresholds" | undefined;
2147
+ source?: "always" | "never" | "thresholds" | undefined;
2148
+ test?: "always" | "never" | "thresholds" | undefined;
2149
+ } | undefined;
2150
+ member?: {
2151
+ config?: "always" | "never" | "thresholds" | undefined;
2152
+ dependency?: "always" | "never" | "thresholds" | undefined;
2153
+ docs?: "always" | "never" | "thresholds" | undefined;
2154
+ schema?: "always" | "never" | "thresholds" | undefined;
2155
+ source?: "always" | "never" | "thresholds" | undefined;
2156
+ test?: "always" | "never" | "thresholds" | undefined;
2157
+ } | undefined;
2158
+ viewer?: {
2159
+ config?: "always" | "never" | "thresholds" | undefined;
2160
+ dependency?: "always" | "never" | "thresholds" | undefined;
2161
+ docs?: "always" | "never" | "thresholds" | undefined;
2162
+ schema?: "always" | "never" | "thresholds" | undefined;
2163
+ source?: "always" | "never" | "thresholds" | undefined;
2164
+ test?: "always" | "never" | "thresholds" | undefined;
2165
+ } | undefined;
2166
+ }>;
2167
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
2168
+ admin?: {
2169
+ config?: "always" | "never" | "thresholds" | undefined;
2170
+ dependency?: "always" | "never" | "thresholds" | undefined;
2171
+ docs?: "always" | "never" | "thresholds" | undefined;
2172
+ schema?: "always" | "never" | "thresholds" | undefined;
2173
+ source?: "always" | "never" | "thresholds" | undefined;
2174
+ test?: "always" | "never" | "thresholds" | undefined;
2175
+ } | undefined;
2176
+ member?: {
2177
+ config?: "always" | "never" | "thresholds" | undefined;
2178
+ dependency?: "always" | "never" | "thresholds" | undefined;
2179
+ docs?: "always" | "never" | "thresholds" | undefined;
2180
+ schema?: "always" | "never" | "thresholds" | undefined;
2181
+ source?: "always" | "never" | "thresholds" | undefined;
2182
+ test?: "always" | "never" | "thresholds" | undefined;
2183
+ } | undefined;
2184
+ viewer?: {
2185
+ config?: "always" | "never" | "thresholds" | undefined;
2186
+ dependency?: "always" | "never" | "thresholds" | undefined;
2187
+ docs?: "always" | "never" | "thresholds" | undefined;
2188
+ schema?: "always" | "never" | "thresholds" | undefined;
2189
+ source?: "always" | "never" | "thresholds" | undefined;
2190
+ test?: "always" | "never" | "thresholds" | undefined;
2191
+ } | undefined;
2192
+ }, v.PicklistIssue | v.StrictObjectIssue>;
2193
+ readonly "~types"?: {
2194
+ readonly input: {
2195
+ admin?: {
2196
+ config?: "always" | "never" | "thresholds" | undefined;
2197
+ dependency?: "always" | "never" | "thresholds" | undefined;
2198
+ docs?: "always" | "never" | "thresholds" | undefined;
2199
+ schema?: "always" | "never" | "thresholds" | undefined;
2200
+ source?: "always" | "never" | "thresholds" | undefined;
2201
+ test?: "always" | "never" | "thresholds" | undefined;
2202
+ } | undefined;
2203
+ member?: {
2204
+ config?: "always" | "never" | "thresholds" | undefined;
2205
+ dependency?: "always" | "never" | "thresholds" | undefined;
2206
+ docs?: "always" | "never" | "thresholds" | undefined;
2207
+ schema?: "always" | "never" | "thresholds" | undefined;
2208
+ source?: "always" | "never" | "thresholds" | undefined;
2209
+ test?: "always" | "never" | "thresholds" | undefined;
2210
+ } | undefined;
2211
+ viewer?: {
2212
+ config?: "always" | "never" | "thresholds" | undefined;
2213
+ dependency?: "always" | "never" | "thresholds" | undefined;
2214
+ docs?: "always" | "never" | "thresholds" | undefined;
2215
+ schema?: "always" | "never" | "thresholds" | undefined;
2216
+ source?: "always" | "never" | "thresholds" | undefined;
2217
+ test?: "always" | "never" | "thresholds" | undefined;
2218
+ } | undefined;
2219
+ };
2220
+ readonly output: {
2221
+ admin?: {
2222
+ config?: "always" | "never" | "thresholds" | undefined;
2223
+ dependency?: "always" | "never" | "thresholds" | undefined;
2224
+ docs?: "always" | "never" | "thresholds" | undefined;
2225
+ schema?: "always" | "never" | "thresholds" | undefined;
2226
+ source?: "always" | "never" | "thresholds" | undefined;
2227
+ test?: "always" | "never" | "thresholds" | undefined;
2228
+ } | undefined;
2229
+ member?: {
2230
+ config?: "always" | "never" | "thresholds" | undefined;
2231
+ dependency?: "always" | "never" | "thresholds" | undefined;
2232
+ docs?: "always" | "never" | "thresholds" | undefined;
2233
+ schema?: "always" | "never" | "thresholds" | undefined;
2234
+ source?: "always" | "never" | "thresholds" | undefined;
2235
+ test?: "always" | "never" | "thresholds" | undefined;
2236
+ } | undefined;
2237
+ viewer?: {
2238
+ config?: "always" | "never" | "thresholds" | undefined;
2239
+ dependency?: "always" | "never" | "thresholds" | undefined;
2240
+ docs?: "always" | "never" | "thresholds" | undefined;
2241
+ schema?: "always" | "never" | "thresholds" | undefined;
2242
+ source?: "always" | "never" | "thresholds" | undefined;
2243
+ test?: "always" | "never" | "thresholds" | undefined;
2244
+ } | undefined;
2245
+ };
2246
+ readonly issue: v.PicklistIssue | v.StrictObjectIssue;
2247
+ } | undefined;
2248
+ };
2249
+ /**
2250
+ * Roles whose runs are forced into dry-run mode ({@link dryRunRolesSchema}) — the work happens
2251
+ * and the PR opens, but nothing merges. Empty on the built-ins.
2252
+ */
2253
+ readonly dryRunRoles: v.ArraySchema<v.PicklistSchema<readonly ["admin", "member", "viewer"], undefined>, undefined>;
2254
+ /**
2255
+ * Per-ROLE allowlist of the change classes this preset will land at all
2256
+ * ({@link submissionClassesByRoleSchema}). Orthogonal to `classRulesByRole`, and both apply: a
2257
+ * class may be `always` under the role's class rules and still outside its allowlist, and the
2258
+ * allowlist wins, because it bars landing rather than deciding how much review landing takes.
2259
+ * A role with no entry is unrestricted, so `{}` is the identity. Empty on the built-ins.
2260
+ */
2261
+ readonly submissionClassesByRole: Omit<v.StrictObjectSchema<{
2262
+ admin: v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>;
2263
+ member: v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>;
2264
+ viewer: v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>;
2265
+ }, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
2266
+ readonly entries: {
2267
+ admin: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>, undefined>;
2268
+ member: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>, undefined>;
2269
+ viewer: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["docs", "test", "dependency", "config", "source", "schema"], undefined>, undefined>, undefined>;
2270
+ };
2271
+ readonly "~standard": v.StandardProps<{
2272
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2273
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2274
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2275
+ }, {
2276
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2277
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2278
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2279
+ }>;
2280
+ readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
2281
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2282
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2283
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2284
+ }, v.ArrayIssue | v.PicklistIssue | v.StrictObjectIssue>;
2285
+ readonly "~types"?: {
2286
+ readonly input: {
2287
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2288
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2289
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2290
+ };
2291
+ readonly output: {
2292
+ admin?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2293
+ member?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2294
+ viewer?: ("config" | "dependency" | "docs" | "schema" | "source" | "test")[] | undefined;
2295
+ };
2296
+ readonly issue: v.ArrayIssue | v.PicklistIssue | v.StrictObjectIssue;
2297
+ } | undefined;
2298
+ };
2299
+ /**
2300
+ * Whether a run governed by this policy answers its own automatic-loop caps
2301
+ * ({@link runAutonomySchema}). `attended` on every built-in but the unattended default.
2302
+ */
2303
+ readonly autonomy: v.PicklistSchema<["attended", "unattended"], undefined>;
2304
+ /**
2305
+ * The minimum confidence (0..1) a Requirement-Writer recommendation must REPORT for an
2306
+ * `unattended` run to take it as a review finding's answer and carry on with no person.
2307
+ *
2308
+ * Read ONLY on the unattended path, and inert under `attended` for the reason `dryRunRoles` is
2309
+ * inert without a role policy: an attended run's auto-recommendations are drafts a human is
2310
+ * about to read, so grading them changes nothing about who decides. Under `unattended` the same
2311
+ * suggestion is the final answer, so the grade is the whole bar.
2312
+ *
2313
+ * It gates only the findings the REVIEWER classified `autoAnswerable` — a genuine product
2314
+ * judgement is never eligible however confident the Writer sounds — and an UNREPORTED
2315
+ * confidence is below every floor above 0, so a garbled Writer reply parks the run rather than
2316
+ * quietly answering it. `0` accepts anything the Writer produces for that class of finding.
2317
+ */
2318
+ readonly minAutoAnswerConfidence: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
2319
+ /**
2320
+ * The workspace's fallback preset for a run somebody started IN THE APP, used by tasks that
2321
+ * pick none. Exactly one per workspace is true.
2322
+ */
2323
+ readonly isDefault: v.BooleanSchema<undefined>;
2324
+ /**
2325
+ * The workspace's fallback preset for a run nothing is watching (the public API, a tracker
2326
+ * dispatch, a schedule fire), used by tasks that pick none. Exactly one per workspace is true,
2327
+ * and it may be the same row as `isDefault`: a deployment that wants one posture everywhere
2328
+ * flags one policy both ways.
2329
+ */
2330
+ readonly isUnattendedDefault: v.BooleanSchema<undefined>;
2331
+ /**
2332
+ * Monotonic seed version for a BUILT-IN preset (`seedRiskPolicies()` assigns it). When the
2333
+ * current catalog version for this id exceeds the persisted copy's `version`, the SPA offers
2334
+ * to reseed it. Absent on user-created presets (not version-tracked) and on rows persisted
2335
+ * before versioning existed (treated as 0).
2336
+ */
2337
+ readonly version: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
2338
+ readonly createdAt: v.NumberSchema<undefined>;
2339
+ readonly tier: v.PicklistSchema<["account", "workspace"], undefined>;
2340
+ }, undefined>;
2341
+ export type RiskPolicyLibraryEntry = v.InferOutput<typeof riskPolicyLibraryEntrySchema>;
2342
+ /**
2343
+ * One policy a board is HIDING: an account policy id it has opted out of, so the policy loses the
2344
+ * merge and no task on that board can pin it.
2345
+ *
2346
+ * A hidden id is by construction absent from the merged library, which is what makes this a
2347
+ * separate read rather than a flag on the entry — without it, hiding would be a one-way door with
2348
+ * nothing on screen to undo.
2349
+ *
2350
+ * `inherited` is the honest half: `false` says the suppression currently hides NOTHING, because
2351
+ * the account has since deleted the policy it named. A reader must not conclude a posture is
2352
+ * being withheld when there is none to withhold, and the name is then the id, which is the only
2353
+ * thing left that identifies what was hidden.
2354
+ */
2355
+ export declare const riskPolicySuppressionSchema: v.ObjectSchema<{
2356
+ readonly id: v.StringSchema<undefined>;
2357
+ readonly name: v.StringSchema<undefined>;
2358
+ readonly inherited: v.BooleanSchema<undefined>;
2359
+ }, undefined>;
2360
+ export type RiskPolicySuppression = v.InferOutput<typeof riskPolicySuppressionSchema>;
2361
+ /**
2362
+ * How long a risk policy's name may be.
2363
+ *
2364
+ * Exported because the SPA has to AGREE about it, not merely be validated against it: cloning an
2365
+ * inherited policy composes the copy's name client-side (the label is localized copy, and the
2366
+ * backend does not localize prose), so the composer needs the same ceiling the schema enforces.
2367
+ * Without it a long enough source name pushed the composed `{name} (copy)` past the limit and the
2368
+ * clone action answered a 422 the operator had no field to act on.
2369
+ */
2370
+ export declare const RISK_POLICY_NAME_MAX_LENGTH = 60;
1577
2371
  /** Create a new merge threshold preset in a workspace. */
1578
2372
  export declare const createRiskPolicySchema: v.ObjectSchema<{
1579
2373
  readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 60, undefined>]>;
@@ -2827,6 +3621,23 @@ export declare const updateRiskPolicySchema: v.ObjectSchema<{
2827
3621
  readonly isUnattendedDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2828
3622
  }, undefined>;
2829
3623
  export type UpdateRiskPolicyInput = v.InferOutput<typeof updateRiskPolicySchema>;
3624
+ /**
3625
+ * Copy an INHERITED account policy into the board's own tier, so the board can edit its numbers
3626
+ * without an account admin and without changing the posture of every other board.
3627
+ *
3628
+ * The copy gets a FRESH id rather than shadowing the account id. An override sharing the id reads
3629
+ * as the same policy in every picker and on every task that pinned it, so a board editing its copy
3630
+ * would silently re-point work that was filed against the account's posture; a new id moves nothing
3631
+ * that already exists and says what it is.
3632
+ *
3633
+ * `name` is optional and defaults to the source policy's, because two policies may share a name
3634
+ * (nothing keys off it) and the backend does not localize prose — a caller that wants the copy
3635
+ * marked as one sends the marked name itself.
3636
+ */
3637
+ export declare const cloneRiskPolicySchema: v.ObjectSchema<{
3638
+ readonly name: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 60, undefined>]>, undefined>;
3639
+ }, undefined>;
3640
+ export type CloneRiskPolicyInput = v.InferOutput<typeof cloneRiskPolicySchema>;
2830
3641
  /** Parse-or-throw an assessment payload an agent returned (the engine validates it). */
2831
3642
  export declare function parseMergeAssessment(value: unknown): MergeAssessment;
2832
3643
  /** Which assessment axis exceeded its preset ceiling. */