assertledger 1.2.0 → 1.3.1

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/docs/reference.md CHANGED
@@ -14,6 +14,9 @@ For a first run, use `assertledger doctor .` and the [Git qualification guide](g
14
14
  ```sh
15
15
  assertledger init . --dry-run --json
16
16
  assertledger init . --json
17
+ assertledger setup . --client codex --dry-run --json
18
+ assertledger setup . --client codex --write --json
19
+ assertledger demo --allow-unsafe-execution --json
17
20
  assertledger audit . --json
18
21
  assertledger analyze . --json
19
22
  assertledger schema verification-request --json
@@ -11,6 +11,20 @@ assertledger init . --json
11
11
  assertledger audit . --json
12
12
  ```
13
13
 
14
+ To initialize and install a project-local read-only agent connection through one preflight, use:
15
+
16
+ ```sh
17
+ assertledger setup . --client codex --dry-run --json
18
+ assertledger setup . --client codex --write --json
19
+ ```
20
+
21
+ `setup` previews by default. It composes the existing `init` and `connect` checks and refuses the
22
+ whole operation before its first managed-file write if either side is blocked or conflicting. Use
23
+ `--client claude-code` for Claude Code. It does not authorize execution, reload a client, or prove
24
+ repository behavior. If a new connection conflict appears after init, rollback removes only regular
25
+ init files created by this setup call whose bytes still equal the plan. A regenerated or changed
26
+ file is preserved and reported under `PARTIAL_FAILURE` with exit code 5.
27
+
14
28
  The dry run emits the exact canonical bytes and SHA-256 digests that a subsequent write plans to
15
29
  use. Writes use a same-directory temporary file followed by an atomic rename. A second run returns
16
30
  `UNCHANGED` without rewriting matching files. A missing lock or a stale, structurally valid lock
@@ -43,6 +57,14 @@ replaces the configured one, so a different declaration never silently widens or
43
57
  inventory: it fails closed, for example with `CONFIG_CONFLICT`, or with
44
58
  `UNSUPPORTED_REPOSITORY_SYMLINK` when a narrower list exposes a link again. Links outside the declared names stay fail-closed.
45
59
 
60
+ When `analyze` refuses a link, the stable `UNSUPPORTED_REPOSITORY_SYMLINK` line stays first and the
61
+ exit code stays 4. The CLI then prints `Link detail: "<path>"`, the first link found, followed by
62
+ the catalogue guidance; the MCP `assertledger_analyze` error carries the same lines. The path is a
63
+ quoted JSON string with every character outside printable ASCII escaped and long names truncated,
64
+ because a file name is repository content. Only the first link is named, so declare its entry and
65
+ run again to meet the next one. `analyze` itself takes no `--exclude`: the declaration goes through
66
+ `init`, which needs a detected package manager.
67
+
46
68
  The configured list governs only these static diagnostics and the evidence digests of
47
69
  `assertledger.lock.json`; it produces no campaign evidence. `audit`, a campaign's repository copy and
48
70
  its manifest `repositoryDigest` keep their own exclusions: the defaults, plus the verification
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "assertledger",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "Verify that regression tests detect a declared bug, with deterministic verdicts and replayable evidence.",
5
5
  "type": "module",
6
6
  "private": false,