@hraness/direct 0.7.6 → 0.7.7

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/README.md CHANGED
@@ -12,14 +12,14 @@ state with predictable local fixtures. it does not click through the browser
12
12
  or test the systems it replaces.
13
13
 
14
14
  ```sh
15
- bun add --dev @hraness/direct@0.7.6
15
+ bun add --dev @hraness/direct@0.7.7
16
16
  # or
17
- npm install --save-dev @hraness/direct@0.7.6
17
+ npm install --save-dev @hraness/direct@0.7.7
18
18
  ```
19
19
 
20
- [npm](https://www.npmjs.com/package/@hraness/direct) ·
21
- [github](https://github.com/hraness/direct) ·
22
- [overview](https://hraness.com/direct)
20
+ [Install @hraness/direct from npm](https://www.npmjs.com/package/@hraness/direct) ·
21
+ [Direct source on GitHub](https://github.com/hraness/direct) ·
22
+ [Direct overview](https://hraness.com/direct)
23
23
 
24
24
  ```text
25
25
  real interface and feature state
@@ -53,7 +53,7 @@ Copy this prompt into Codex, Claude Code, or another coding agent:
53
53
 
54
54
  ```text
55
55
  Use $direct to install hraness/direct from
56
- the npm registry at the exact 0.7.6 version. Follow the repository README, add
56
+ the npm registry at the exact 0.7.7 version. Follow the repository README, add
57
57
  `@hraness/direct` to devDependencies only, and verify that the production
58
58
  dependency graph excludes Direct. Do not add a fixture composition until I
59
59
  ask.
@@ -69,7 +69,7 @@ Pin the public npm package to an exact immutable version:
69
69
  ```json
70
70
  {
71
71
  "devDependencies": {
72
- "@hraness/direct": "0.7.6"
72
+ "@hraness/direct": "0.7.7"
73
73
  }
74
74
  }
75
75
  ```
@@ -218,7 +218,7 @@ A quiet probe means the declared deterministic work settled. It does not prove t
218
218
  | `@hraness/direct/web` | Atomic browser installation, with low-level bridge and firewall escape hatches | Browser only |
219
219
  | `@hraness/direct/tooling/browser-verification` | Protocol-bound bridge reads, bounded agent-browser commands, local server leases, and artifact writes | Bun 1.3.14 with Node APIs |
220
220
  | `@hraness/direct/tooling/bombadil-campaign` | Direct property and conservative action factories for a Bombadil specification | Bombadil 0.7.2 specification compiler |
221
- | `@hraness/direct/tooling/bombadil` | Local server ownership, native Bombadil lifecycle, trace attestation, replay, and diagnostic artifacts | Bun 1.3.14 with Node APIs |
221
+ | `@hraness/direct/tooling/bombadil` | Local server ownership, native Bombadil lifecycle, serial campaign matrices, trace attestation and summaries, replay, and diagnostic artifacts | Bun 1.3.14 with Node APIs |
222
222
  | `@hraness/direct/tooling/bundle-boundary` | Deterministic emitted-file scans and exact versioned-wire evidence | Bun 1.3.14 with Node APIs |
223
223
 
224
224
  The tooling subpaths are development-only. They are built separately from the
@@ -264,6 +264,7 @@ export * from "@antithesishq/bombadil/browser/defaults/properties";
264
264
 
265
265
  const direct = createDirectBombadilProperties();
266
266
  export const direct_safe_actions = createDirectBombadilActions();
267
+ export const direct_startup_contract = direct.startupContract;
267
268
  export const direct_exact_contract = direct.exactContract;
268
269
  export const direct_stable_catalog = direct.stableCatalog;
269
270
  export const direct_no_declared_violations = direct.noDeclaredViolations;
@@ -275,7 +276,34 @@ path, and any additional safe actions. Call `runDirectBombadilFuzz` from
275
276
  `@hraness/direct/tooling/bombadil` in a small Bun wrapper. The runner accepts
276
277
  only an explicit local HTTP origin, starts an argv-only server command, invokes
277
278
  the exact native 0.7.2 binary, attests the bounded trace with Direct's canonical
278
- parsers, writes pass or failure artifacts, and releases its owned processes.
279
+ parsers, writes pass or failure artifacts plus a compact exploration summary,
280
+ and releases its owned processes. Use `runDirectBombadilFuzzMatrix` when a
281
+ product owns several scenarios; it runs them serially and requires one exact
282
+ campaign selector for replay.
283
+
284
+ Startup is the only repairable contract phase. It must reach one exact Direct
285
+ observation within ten seconds. From that sample onward, activation identity,
286
+ route, scenario, catalog, and zero declared violations are immediate safety
287
+ invariants; only quiescence remains bounded liveness.
288
+
289
+ Keep liveness formulas time-bounded. Prefer guarded product actions with
290
+ explicit weights over unrestricted browser actions, and name small JSON
291
+ snapshots that expose semantic state without retaining page content. Run short
292
+ 12–30 second campaigns while editing and longer 60–300 second matrices in a
293
+ scheduled diagnostic lane. Inspect and replay a retained failing trace, then
294
+ promote the smallest readable failure to a deterministic product regression.
295
+ When a campaign must exercise an interaction, require a named product value to
296
+ change after the intended action kind, as well as after a non-Wait action, so
297
+ bootstrap, idle, prerequisite, and unrelated transitions do not satisfy the
298
+ exploration policy. Attribution requires adjacent exact Direct observations;
299
+ it is temporal response evidence rather than proof of causality.
300
+ If the full product snapshot includes viewport dimensions, put that requirement
301
+ on a separate interaction snapshot without viewport fields and require an
302
+ opposite-size `SetViewport` independently. Latch the first ready product state
303
+ for initial-world properties so later actions cannot repair a bad initial state.
304
+ The raw trace remains authoritative and may contain screenshots, URLs, typed
305
+ text, accessible labels, and local paths; treat it as potentially sensitive.
306
+ Summary counts and hashes help triage exploration but are not Direct coverage.
279
307
  See [Verification](./docs/verification.md#run-a-bounded-bombadil-campaign) for
280
308
  the complete configuration and proof limits.
281
309