fallow 3.19.0 → 3.21.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/capabilities.json +2 -2
- package/package.json +10 -10
- package/skills/fallow/references/cli-reference.md +11 -11
- package/types/output-contract.d.ts +84 -6
package/capabilities.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.21.0",
|
|
4
4
|
"manifest_version": "1",
|
|
5
5
|
"description": "Codebase analyzer for TypeScript/JavaScript: unused code, circular dependencies, code duplication, complexity hotspots, and architecture boundary violations",
|
|
6
6
|
"global_flags": [
|
|
@@ -1792,7 +1792,7 @@
|
|
|
1792
1792
|
"name": "--walkthrough-file",
|
|
1793
1793
|
"type": "string",
|
|
1794
1794
|
"required": false,
|
|
1795
|
-
"description": "Ingest an agent's judgment JSON and POST-VALIDATE it against the LIVE graph. Rejects any judgment whose `signal_id` fallow did not emit (anti-hallucination); refuses the whole payload as stale when the echoed graph-snapshot hash no longer matches (the tree moved). The verifier is the graph, not a second model. Implies the brief; always exits 0. The agent's free-text framing
|
|
1795
|
+
"description": "Ingest an agent's judgment JSON and POST-VALIDATE it against the LIVE graph. Rejects any judgment whose `signal_id` fallow did not emit (anti-hallucination); refuses the whole payload as stale when the echoed graph-snapshot hash no longer matches (the tree moved); rejects an `action` outside `block`, `address`, `consider`, `fyi` (`invalid-action`). The verifier is the graph, not a second model. Implies the brief; always exits 0. The agent's free-text framing and action label are fenced as non-deterministic and never gate or auto-post"
|
|
1796
1796
|
},
|
|
1797
1797
|
{
|
|
1798
1798
|
"name": "--walkthrough",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.21.0",
|
|
4
4
|
"mcpName": "io.github.fallow-rs/fallow",
|
|
5
5
|
"description": "Codebase intelligence for TypeScript and JavaScript. Free static analysis of code and styles, optional paid runtime intelligence (Fallow Runtime). Quality, risk, architecture, dependencies, duplication, and design-system drift for humans, CI, and the agents writing your code. Zero-config framework support.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -88,14 +88,14 @@
|
|
|
88
88
|
"@tanstack/intent": "0.3.6"
|
|
89
89
|
},
|
|
90
90
|
"optionalDependencies": {
|
|
91
|
-
"@fallow-cli/darwin-arm64": "3.
|
|
92
|
-
"@fallow-cli/darwin-x64": "3.
|
|
93
|
-
"@fallow-cli/linux-x64-gnu": "3.
|
|
94
|
-
"@fallow-cli/linux-arm64-gnu": "3.
|
|
95
|
-
"@fallow-cli/linux-x64-musl": "3.
|
|
96
|
-
"@fallow-cli/linux-arm64-musl": "3.
|
|
97
|
-
"@fallow-cli/win32-arm64-msvc": "3.
|
|
98
|
-
"@fallow-cli/win32-x64-msvc": "3.
|
|
99
|
-
"fallow-type-aware": "3.
|
|
91
|
+
"@fallow-cli/darwin-arm64": "3.21.0",
|
|
92
|
+
"@fallow-cli/darwin-x64": "3.21.0",
|
|
93
|
+
"@fallow-cli/linux-x64-gnu": "3.21.0",
|
|
94
|
+
"@fallow-cli/linux-arm64-gnu": "3.21.0",
|
|
95
|
+
"@fallow-cli/linux-x64-musl": "3.21.0",
|
|
96
|
+
"@fallow-cli/linux-arm64-musl": "3.21.0",
|
|
97
|
+
"@fallow-cli/win32-arm64-msvc": "3.21.0",
|
|
98
|
+
"@fallow-cli/win32-x64-msvc": "3.21.0",
|
|
99
|
+
"fallow-type-aware": "3.21.0"
|
|
100
100
|
}
|
|
101
101
|
}
|
|
@@ -299,7 +299,7 @@ fallow list --workspaces --format json --quiet
|
|
|
299
299
|
fallow workspaces --format json --quiet # alias of `fallow list --workspaces`
|
|
300
300
|
```
|
|
301
301
|
|
|
302
|
-
The `--workspaces` JSON output carries `workspaces[]` (name, project-root-relative path, `is_internal_dependency` bool) plus `workspace_diagnostics[]`. Each diagnostic has a `kind` discriminator (`undeclared-workspace`, `malformed-package-json`, `glob-matched-no-package-json`, `malformed-tsconfig`, `tsconfig-reference-dir-missing`, `malformed-pnpm-workspace-yaml`, `skipped-large-file`, `skipped-minified-file`, `source-read-failure`, `bun-lockb-override-resolution-skipped`) with a typed payload (`error`, `pattern`, or none), and a `path` that is project-root-relative with forward slashes on every envelope that carries the array. The same `workspace_diagnostics[]` array is also surfaced on the `fallow dead-code --format json`, `fallow dupes --format json`, and `fallow health --format json` envelopes, at the top level of the bare combined `fallow --format json` envelope, on `fallow audit --format json` under `dead_code`, and on the `audit-brief` envelope shared by `fallow review --format json` and `fallow audit --brief --format json`, also under `dead_code` (omitted when empty). The combined carrier is the envelope root, not a section, so `--skip check`, `--only health`, and `--only dupes` all still report what their analyses recorded. The combined root is the union of what every analysis in the run recorded, deduplicated on the whole `kind` (typed payload included) plus `path`, so two overlapping globs still report the same package-less directory once per `pattern` (a declared glob's no-op `./` prefix is normalised away, so one glob written `"./apps/**"` in `package.json` and `apps/**` in `pnpm-workspace.yaml` stays one entry): a combined run walks the project once per analysis, and a per-analysis `production` mode (`production: { deadCode, health, dupes }`, `--production-health`) can give those walks different file sets, so only the union reports what the run as a whole saw. Each analysis contributes the workspace-discovery list its own config load produced, the same list `fallow list --workspaces` reports, so the combined root can carry an `undeclared-workspace` or `glob-matched-no-package-json` entry that the standalone `dead-code`, `check`, `health`, and `dupes` envelopes, which read the process diagnostics registry instead, do not. `fallow audit --format json` and the `audit-brief` envelope are on the same broad side: they fold the dead-code analysis's own list into their `dead_code.workspace_diagnostics[]`, so they too report an `undeclared-workspace` entry the standalone envelopes miss. The CLI and the programmatic route (MCP code mode, NAPI, embedders) agree on everything an analysis records: both folds close with the same process-registry read, which covers what an analysis records after its section captured its list (a `source-read-failure`, or the analysis-stage kinds a health run's own dead-code precompute records) and skips `skipped-large-file` and `skipped-
|
|
302
|
+
The `--workspaces` JSON output carries `workspaces[]` (name, project-root-relative path, `is_internal_dependency` bool) plus `workspace_diagnostics[]`. Each diagnostic has a `kind` discriminator (`undeclared-workspace`, `malformed-package-json`, `glob-matched-no-package-json`, `malformed-tsconfig`, `tsconfig-reference-dir-missing`, `malformed-pnpm-workspace-yaml`, `skipped-large-file`, `skipped-minified-file`, `skipped-source-dotdir`, `source-read-failure`, `bun-lockb-override-resolution-skipped`) with a typed payload (`error`, `pattern`, or none), and a `path` that is project-root-relative with forward slashes on every envelope that carries the array. The same `workspace_diagnostics[]` array is also surfaced on the `fallow dead-code --format json`, `fallow dupes --format json`, and `fallow health --format json` envelopes, at the top level of the bare combined `fallow --format json` envelope, on `fallow audit --format json` under `dead_code`, and on the `audit-brief` envelope shared by `fallow review --format json` and `fallow audit --brief --format json`, also under `dead_code` (omitted when empty). The combined carrier is the envelope root, not a section, so `--skip check`, `--only health`, and `--only dupes` all still report what their analyses recorded. The combined root is the union of what every analysis in the run recorded, deduplicated on the whole `kind` (typed payload included) plus `path`, so two overlapping globs still report the same package-less directory once per `pattern` (a declared glob's no-op `./` prefix is normalised away, so one glob written `"./apps/**"` in `package.json` and `apps/**` in `pnpm-workspace.yaml` stays one entry): a combined run walks the project once per analysis, and a per-analysis `production` mode (`production: { deadCode, health, dupes }`, `--production-health`) can give those walks different file sets, so only the union reports what the run as a whole saw. Each analysis contributes the workspace-discovery list its own config load produced, the same list `fallow list --workspaces` reports, so the combined root can carry an `undeclared-workspace` or `glob-matched-no-package-json` entry that the standalone `dead-code`, `check`, `health`, and `dupes` envelopes, which read the process diagnostics registry instead, do not. `fallow audit --format json` and the `audit-brief` envelope are on the same broad side: they fold the dead-code analysis's own list into their `dead_code.workspace_diagnostics[]`, so they too report an `undeclared-workspace` entry the standalone envelopes miss. The CLI and the programmatic route (MCP code mode, NAPI, embedders) agree on everything an analysis records: both folds close with the same process-registry read, which covers what an analysis records after its section captured its list (a `source-read-failure`, or the analysis-stage kinds a health run's own dead-code precompute records) and skips `skipped-large-file`, `skipped-minified-file`, and `skipped-source-dotdir`, since those reach an envelope only from the walk that recorded them. The two analysis-stage kinds (`malformed-pnpm-workspace-yaml`, `bun-lockb-override-resolution-skipped`) are recorded by the dead-code analyze pass, so they only appear on runs that include it: `fallow dupes --format json` and `fallow --only dupes` report the workspace-discovery and source-discovery kinds alone. A malformed ROOT `package.json` exits 2 at config load; everything else warns and continues.
|
|
303
303
|
|
|
304
304
|
The `--boundaries` JSON output carries `boundaries.logical_groups[]` alongside the existing `zones[]` / `rules[]` arrays. Each logical-group entry surfaces a user-authored `autoDiscover` parent zone (which expansion otherwise flattens into per-child zones like `features/auth` / `features/billing`): `name`, `children`, `auto_discover` (verbatim user strings), `status` (`ok` / `empty` / `invalid_path`), `source_zone_index`, summed `file_count`, optional `authored_rule` (the pre-expansion `{ allow, allowTypeOnly }` keyed on the parent), optional `fallback_zone` cross-reference when the parent also kept its own `patterns` (Bulletproof case), optional `merged_from` (parent zone indices when the user declared the same parent name twice; surfaces the duplicate in JSON instead of only in `tracing::warn!`), optional `original_zone_root` (echo of the parent's `root` subtree scope for monorepo patchers), and optional `child_source_indices` (parallel to `children`, attributing each child to a specific `auto_discover` entry when multiple paths were authored). The full shape is documented in `docs/output-schema.json` under `ListBoundariesOutput`.
|
|
305
305
|
|
|
@@ -385,7 +385,7 @@ Human output groups paths under "Shared with your team (commit these)" and "Loca
|
|
|
385
385
|
{
|
|
386
386
|
"kind": "agent-install",
|
|
387
387
|
"schema_version": 1,
|
|
388
|
-
"fallow_version": "3.
|
|
388
|
+
"fallow_version": "3.20.0",
|
|
389
389
|
"root": "/abs/path",
|
|
390
390
|
"mode": "install",
|
|
391
391
|
"dry_run": false,
|
|
@@ -589,7 +589,7 @@ fallow health --format json --quiet --trend
|
|
|
589
589
|
{
|
|
590
590
|
"kind": "health",
|
|
591
591
|
"schema_version": 7,
|
|
592
|
-
"version": "3.
|
|
592
|
+
"version": "3.21.0",
|
|
593
593
|
"elapsed_ms": 32,
|
|
594
594
|
"summary": {
|
|
595
595
|
"files_analyzed": 482,
|
|
@@ -987,7 +987,7 @@ fallow audit \
|
|
|
987
987
|
{
|
|
988
988
|
"kind": "audit",
|
|
989
989
|
"schema_version": 7,
|
|
990
|
-
"version": "3.
|
|
990
|
+
"version": "3.21.0",
|
|
991
991
|
"command": "audit",
|
|
992
992
|
"verdict": "fail",
|
|
993
993
|
"changed_files_count": 12,
|
|
@@ -1064,7 +1064,7 @@ fallow flags --format json --quiet --workspace my-package
|
|
|
1064
1064
|
```json
|
|
1065
1065
|
{
|
|
1066
1066
|
"schema_version": 7,
|
|
1067
|
-
"version": "3.
|
|
1067
|
+
"version": "3.21.0",
|
|
1068
1068
|
"elapsed_ms": 116,
|
|
1069
1069
|
"feature_flags": [],
|
|
1070
1070
|
"total_flags": 0
|
|
@@ -1165,7 +1165,7 @@ fallow security --gate newly-reachable --changed-since origin/main
|
|
|
1165
1165
|
{
|
|
1166
1166
|
"kind": "security",
|
|
1167
1167
|
"schema_version": "4",
|
|
1168
|
-
"version": "3.
|
|
1168
|
+
"version": "3.21.0",
|
|
1169
1169
|
"elapsed_ms": 42,
|
|
1170
1170
|
"config": {
|
|
1171
1171
|
"rules": {
|
|
@@ -1194,7 +1194,7 @@ fallow security --gate newly-reachable --changed-since origin/main
|
|
|
1194
1194
|
{
|
|
1195
1195
|
"kind": "security",
|
|
1196
1196
|
"schema_version": "4",
|
|
1197
|
-
"version": "3.
|
|
1197
|
+
"version": "3.21.0",
|
|
1198
1198
|
"elapsed_ms": 42,
|
|
1199
1199
|
"config": {
|
|
1200
1200
|
"rules": {
|
|
@@ -1959,7 +1959,7 @@ The HTTP layer mirrors the bash `gh_api_retry` / `curl_retry` helpers: `FALLOW_A
|
|
|
1959
1959
|
{
|
|
1960
1960
|
"kind": "dead-code",
|
|
1961
1961
|
"schema_version": 7,
|
|
1962
|
-
"version": "3.
|
|
1962
|
+
"version": "3.21.0",
|
|
1963
1963
|
"elapsed_ms": 45,
|
|
1964
1964
|
"total_issues": 12,
|
|
1965
1965
|
"entry_points": {
|
|
@@ -2119,7 +2119,7 @@ When `--baseline` is used in combined output, the JSON includes a `baseline_delt
|
|
|
2119
2119
|
{
|
|
2120
2120
|
"kind": "dupes",
|
|
2121
2121
|
"schema_version": 7,
|
|
2122
|
-
"version": "3.
|
|
2122
|
+
"version": "3.21.0",
|
|
2123
2123
|
"elapsed_ms": 82,
|
|
2124
2124
|
"total_clones": 15,
|
|
2125
2125
|
"total_lines_duplicated": 230,
|
|
@@ -2163,11 +2163,11 @@ When running `fallow` with no subcommand (all analyses), the JSON output combine
|
|
|
2163
2163
|
{
|
|
2164
2164
|
"kind": "combined",
|
|
2165
2165
|
"schema_version": 7,
|
|
2166
|
-
"version": "3.
|
|
2166
|
+
"version": "3.21.0",
|
|
2167
2167
|
"elapsed_ms": 159,
|
|
2168
2168
|
"check": {
|
|
2169
2169
|
"schema_version": 7,
|
|
2170
|
-
"version": "3.
|
|
2170
|
+
"version": "3.21.0",
|
|
2171
2171
|
"elapsed_ms": 45,
|
|
2172
2172
|
"total_issues": 12,
|
|
2173
2173
|
"unused_files": [],
|
|
@@ -442,6 +442,8 @@ kind: "skipped-large-file"
|
|
|
442
442
|
size_bytes: number
|
|
443
443
|
kind: "skipped-minified-file"
|
|
444
444
|
} | {
|
|
445
|
+
kind: "skipped-source-dotdir"
|
|
446
|
+
} | {
|
|
445
447
|
/**
|
|
446
448
|
* Filesystem or UTF-8 decoding error from `read_to_string`.
|
|
447
449
|
*/
|
|
@@ -988,7 +990,7 @@ export type FeatureFlagActionType = ("investigate-flag" | "suppress-line")
|
|
|
988
990
|
* Independently-versioned wire-version newtype for the brief envelope.
|
|
989
991
|
* Serializes as the integer `REVIEW_BRIEF_SCHEMA_VERSION`.
|
|
990
992
|
*/
|
|
991
|
-
export type ReviewBriefSchemaVersion =
|
|
993
|
+
export type ReviewBriefSchemaVersion = 8
|
|
992
994
|
/**
|
|
993
995
|
* The exactly-three shippable decision categories (the SOLID-3). No cut category
|
|
994
996
|
* (abstraction / deletion / convention / irreversibility) is representable: this
|
|
@@ -1033,6 +1035,13 @@ export type DecisionSurfaceSchemaVersion = number
|
|
|
1033
1035
|
* The discriminated action kinds a decision can carry.
|
|
1034
1036
|
*/
|
|
1035
1037
|
export type DecisionActionType = ("ask-expert" | "suppress")
|
|
1038
|
+
/**
|
|
1039
|
+
* Whether a changed source unit has a test file importing it, and whether that
|
|
1040
|
+
* test moved with the change. A direct-importer fact from the graph, not a
|
|
1041
|
+
* coverage claim: `untouched` says a test exists and was not edited, which is
|
|
1042
|
+
* the verification question the reviewer asks the author, never an answer.
|
|
1043
|
+
*/
|
|
1044
|
+
export type TestAdjacency = ("none" | "untouched" | "changed")
|
|
1036
1045
|
/**
|
|
1037
1046
|
* The `fallow suppressions --format json` schema version. Independently
|
|
1038
1047
|
* versioned from the main contract, mirroring `SecuritySchemaVersion`.
|
|
@@ -2545,7 +2554,8 @@ _meta?: (Meta | null)
|
|
|
2545
2554
|
* `malformed-package-json`, `glob-matched-no-package-json`,
|
|
2546
2555
|
* `malformed-tsconfig`, `tsconfig-reference-dir-missing`;
|
|
2547
2556
|
* - source discovery, during the file walk: `skipped-large-file`,
|
|
2548
|
-
* `skipped-minified-file`, `source-
|
|
2557
|
+
* `skipped-minified-file`, `skipped-source-dotdir`,
|
|
2558
|
+
* `source-read-failure`;
|
|
2549
2559
|
* - dead-code analysis, from the dependency-catalog and override
|
|
2550
2560
|
* detectors: `malformed-pnpm-workspace-yaml`,
|
|
2551
2561
|
* `bun-lockb-override-resolution-skipped`.
|
|
@@ -5435,7 +5445,12 @@ crap?: (number | null)
|
|
|
5435
5445
|
*/
|
|
5436
5446
|
coverage_pct?: (number | null)
|
|
5437
5447
|
/**
|
|
5438
|
-
* Coverage tier bucket
|
|
5448
|
+
* Coverage tier bucket.
|
|
5449
|
+
*
|
|
5450
|
+
* Derived from `coverage_pct` when coverage was measured. When
|
|
5451
|
+
* `coverage_source` is estimated, `coverage_pct` is absent and the tier
|
|
5452
|
+
* describes the static estimate behind the CRAP score rather than an
|
|
5453
|
+
* observation, so read the two fields together.
|
|
5439
5454
|
*/
|
|
5440
5455
|
coverage_tier?: (CoverageTier | null)
|
|
5441
5456
|
/**
|
|
@@ -5735,6 +5750,16 @@ istanbul_matched?: (number | null)
|
|
|
5735
5750
|
* Functions in the Istanbul coverage file, in Istanbul mode.
|
|
5736
5751
|
*/
|
|
5737
5752
|
istanbul_total?: (number | null)
|
|
5753
|
+
/**
|
|
5754
|
+
* Analyzed files the Istanbul coverage file carried an entry for.
|
|
5755
|
+
* Read against `istanbul_files_total`, this separates a coverage file
|
|
5756
|
+
* that did not join from code the coverage file says nothing ran in.
|
|
5757
|
+
*/
|
|
5758
|
+
istanbul_files_matched?: (number | null)
|
|
5759
|
+
/**
|
|
5760
|
+
* Files described by the Istanbul coverage file, joined or not.
|
|
5761
|
+
*/
|
|
5762
|
+
istanbul_files_total?: (number | null)
|
|
5738
5763
|
/**
|
|
5739
5764
|
* Findings with critical severity.
|
|
5740
5765
|
*/
|
|
@@ -12518,6 +12543,16 @@ units: ReviewUnitFact[]
|
|
|
12518
12543
|
* the `units` module directories.
|
|
12519
12544
|
*/
|
|
12520
12545
|
order: string[]
|
|
12546
|
+
/**
|
|
12547
|
+
* Connected components of the inter-unit dependency graph: groups of
|
|
12548
|
+
* module directories that share no import edge with any unit outside the
|
|
12549
|
+
* group. Present only when there are two or more; a single slice is just
|
|
12550
|
+
* `order`. A slice proves the absence of import edges to the rest of the
|
|
12551
|
+
* change, nothing more: whether it can land on its own is still a
|
|
12552
|
+
* judgment (generated files and lockstep contracts share no edge and
|
|
12553
|
+
* still belong together). An orientation fact, never a demand to split.
|
|
12554
|
+
*/
|
|
12555
|
+
independent_slices?: string[][]
|
|
12521
12556
|
}
|
|
12522
12557
|
/**
|
|
12523
12558
|
* One review unit: a coherent by-module cluster of the changed set.
|
|
@@ -12683,6 +12718,19 @@ cycle_introduced: string[]
|
|
|
12683
12718
|
* reachable through an `exports` path is present (exactly one).
|
|
12684
12719
|
*/
|
|
12685
12720
|
public_api_added: string[]
|
|
12721
|
+
/**
|
|
12722
|
+
* Third-party dependencies a changed `package.json` declares that the base
|
|
12723
|
+
* manifest did not, as `<manifest>::<name>` keys. Every dependency section
|
|
12724
|
+
* participates. Always present, empty when no manifest changed.
|
|
12725
|
+
*/
|
|
12726
|
+
dependency_added: string[]
|
|
12727
|
+
/**
|
|
12728
|
+
* Declared dependencies whose range moved across a major version (or a
|
|
12729
|
+
* `0.x` minor) vs base, as `<manifest>::<name>@<from>-><to>` keys. Minor
|
|
12730
|
+
* and patch moves are not candidates; a non-numeric range is skipped.
|
|
12731
|
+
* Always present, empty when nothing crossed a major version.
|
|
12732
|
+
*/
|
|
12733
|
+
dependency_major_bumped: string[]
|
|
12686
12734
|
}
|
|
12687
12735
|
/**
|
|
12688
12736
|
* One weakening signal: a category, the file it was detected in, and a short
|
|
@@ -12963,6 +13011,11 @@ out_of_diff: string[]
|
|
|
12963
13011
|
* Routed expert(s), when ownership signals are available.
|
|
12964
13012
|
*/
|
|
12965
13013
|
expert: string[]
|
|
13014
|
+
/**
|
|
13015
|
+
* Direct test adjacency of this unit. Absent when the graph was not
|
|
13016
|
+
* retained or the unit is itself a test file.
|
|
13017
|
+
*/
|
|
13018
|
+
test_adjacency?: (TestAdjacency | null)
|
|
12966
13019
|
}
|
|
12967
13020
|
/**
|
|
12968
13021
|
* One stable per-hunk CHANGE ANCHOR: a changed region the agent may cite as a
|
|
@@ -13005,8 +13058,10 @@ previous_change_anchor?: (string | null)
|
|
|
13005
13058
|
*/
|
|
13006
13059
|
export interface AgentSchema {
|
|
13007
13060
|
/**
|
|
13008
|
-
* How the agent must structure each judgment: cite an emitted `signal_id
|
|
13009
|
-
* add free-text `framing` (non-deterministic, fenced),
|
|
13061
|
+
* How the agent must structure each judgment: cite an emitted `signal_id`
|
|
13062
|
+
* or `change_anchor`, add free-text `framing` (non-deterministic, fenced),
|
|
13063
|
+
* an optional `concern`, and an optional `action` from the closed
|
|
13064
|
+
* vocabulary.
|
|
13010
13065
|
*/
|
|
13011
13066
|
judgment_shape: string
|
|
13012
13067
|
/**
|
|
@@ -13018,6 +13073,16 @@ echo_field: string
|
|
|
13018
13073
|
* The anchoring rule name.
|
|
13019
13074
|
*/
|
|
13020
13075
|
anchoring_rule: string
|
|
13076
|
+
/**
|
|
13077
|
+
* The closed `action` vocabulary ([`JUDGMENT_ACTIONS`]): a judgment with
|
|
13078
|
+
* any other value is rejected on reentry.
|
|
13079
|
+
*/
|
|
13080
|
+
action_vocabulary: string[]
|
|
13081
|
+
/**
|
|
13082
|
+
* The recommended `concern` vocabulary ([`JUDGMENT_CONCERNS`]), documented
|
|
13083
|
+
* for grouping; free text is still accepted.
|
|
13084
|
+
*/
|
|
13085
|
+
concern_vocabulary: string[]
|
|
13021
13086
|
}
|
|
13022
13087
|
/**
|
|
13023
13088
|
* The `fallow review --walkthrough-file` validation envelope: the result of
|
|
@@ -13095,6 +13160,13 @@ agent_framing: string
|
|
|
13095
13160
|
* The agent's optional concern category.
|
|
13096
13161
|
*/
|
|
13097
13162
|
concern?: (string | null)
|
|
13163
|
+
/**
|
|
13164
|
+
* The author-action label the judgment carries (`block`, `address`,
|
|
13165
|
+
* `consider`, or `fyi`), validated against [`JUDGMENT_ACTIONS`]. It tells
|
|
13166
|
+
* the receiving author what is required and what is optional; it is the
|
|
13167
|
+
* reviewer's instruction, fenced with the framing, never a gate.
|
|
13168
|
+
*/
|
|
13169
|
+
action?: (string | null)
|
|
13098
13170
|
/**
|
|
13099
13171
|
* Hard fence: always `false`. The framing is agent prose, never a
|
|
13100
13172
|
* deterministic fallow result, so it never gates or auto-posts.
|
|
@@ -13118,9 +13190,15 @@ change_anchor: string
|
|
|
13118
13190
|
/**
|
|
13119
13191
|
* The rejection reason: `unanchored-signal-id` (cited a signal fallow did
|
|
13120
13192
|
* not emit), `unknown-change-anchor` (cited a region fallow did not emit),
|
|
13121
|
-
*
|
|
13193
|
+
* `stale-snapshot` (the tree moved), or `invalid-action` (an `action`
|
|
13194
|
+
* outside [`JUDGMENT_ACTIONS`]; the anchor itself resolved).
|
|
13122
13195
|
*/
|
|
13123
13196
|
reason: string
|
|
13197
|
+
/**
|
|
13198
|
+
* The offending value for an `invalid-action` rejection, echoed so the
|
|
13199
|
+
* agent can correct it in one round trip. Absent for the other reasons.
|
|
13200
|
+
*/
|
|
13201
|
+
invalid_value?: (string | null)
|
|
13124
13202
|
}
|
|
13125
13203
|
/**
|
|
13126
13204
|
* The `fallow suppressions --format json` envelope. `FallowOutput`
|