Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
08d0cee
major ln-sync pass
lunelson Aug 3, 2026
20f96c6
Record deadness-oracle blind spot and host-convergence confirmation
lunelson Aug 3, 2026
0f89d03
FE-1311: Admit integrity-cleanup frontier to PLAN
lunelson Aug 3, 2026
71a0ec4
FE-1311: Scope the integrity-cleanup sweep ledger
lunelson Aug 3, 2026
e2af7af
FE-1311: Record decide-during-build disposition for the knip row
lunelson Aug 3, 2026
aa439a8
Add planning substrate assessment
lunelson Aug 3, 2026
542e133
FE-1311: Retire pre-FE-1163 tool-schema snapshots for direct provider…
lunelson Aug 3, 2026
d4fdf5d
FE-1311: Block the consequential-fact deletion row on falsified premise
lunelson Aug 3, 2026
acdb0b6
FE-1311: Delete the committed Oxc schema copies
lunelson Aug 3, 2026
e429856
FE-1311: Delete two test-only executor/web modules, keep three declar…
lunelson Aug 3, 2026
8a658fc
FE-1311: Key the execute-tool authority map by the tool-names roster …
lunelson Aug 3, 2026
9b136cc
FE-1311: Delete the two inert execute-plan artifact tools and their w…
lunelson Aug 3, 2026
7542eae
FE-1311: Delete the orphaned query-projection helper, keep five live …
lunelson Aug 4, 2026
6a50e12
FE-1311: Keep row-schemas.ts and both TypeBox deps; falsify the A7 de…
lunelson Aug 4, 2026
2558155
FE-1311: Keep the TOON wrapper and dep; an active D83-L clause blocks…
lunelson Aug 4, 2026
86437a2
FE-1311: Replace stringify-tree with a native recursive tree formatter
lunelson Aug 4, 2026
e4bd073
FE-1311: Delete the deterministic-exchange minting chain, keep the se…
lunelson Aug 4, 2026
1681799
FE-1311: Block the probes build-exclusion row on built-path consumers
lunelson Aug 4, 2026
d9760f6
FE-1311: Move the web build stack to devDependencies and unship dist/…
lunelson Aug 4, 2026
223592c
FE-1311: Close row A11 as built-by-rescope with residue re-homed
lunelson Aug 4, 2026
ad955ba
FE-1311: Name the CI ripgrep out-of-graph consumer at its provisionin…
lunelson Aug 4, 2026
c661724
FE-1311: Consolidate executor state predicates into one owner
lunelson Aug 4, 2026
4be8774
FE-1311: Consolidate canonicalPath to one executor-owned helper
lunelson Aug 4, 2026
9c481e8
FE-1311: Consolidate pathExists to one executor-owned helper
lunelson Aug 4, 2026
89c4856
FE-1311: Record the synonym-blindness consolidation hazard from row B4
lunelson Aug 4, 2026
502f7b9
FE-1311: Reject the automated deadness gate, wire the structural one
lunelson Aug 4, 2026
2d3a66b
FE-1311: Tie off the integrity-cleanup sweep
lunelson Aug 4, 2026
d6433ba
FE-1311: Reconcile integrity cleanup closure
lunelson Aug 4, 2026
781b8ed
FE-1311: Exclude unshipped web artifacts
lunelson Aug 5, 2026
c0e7222
FE-1311: Document probe topology
lunelson Aug 5, 2026
e58a26f
FE-1311: Enforce comparison public root
lunelson Aug 5, 2026
4584c23
FE-1311: Reuse executor path existence helper
lunelson Aug 5, 2026
7f89afe
FE-1311: Name DB schema column coverage
lunelson Aug 5, 2026
e8901ce
FE-1311: Close integrity cleanup frontier
lunelson Aug 5, 2026
28cea21
FE-1311: Restore portable subagent discovery
lunelson Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .agents/skills/ln-review/references/contract-lenses.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ Each finding routes to one of three repairs: **enforce it loudly** (fail on viol

- A **hand-maintained test-double inventory shadowing a canonical registry** — a test stub (`getAllTools()`, capability lists, route tables) that transcribes the members of a live registry by hand instead of deriving from the canonical constant. Every add/retire in the registry silently drifts the stub: retired members linger (masking regressions the inventory-consuming logic should catch), new members are omitted (the code under test never sees them), duplicates creep in. Point-fixing the stub after a review comment repairs one snapshot, not the fault (graduated 2026-07-09 from the PR #304 induction: three fixture sites — `getAllTools()` listing `ask` twice, retaining retired `REQUEST_RESPONSE_TOOL`, and omitting active `present_digest` — were each corrected by hand while remaining transcribed). **Discriminator:** does a canonical exported constant/registry enumerate the same membership the stub hand-lists? If the double intentionally diverges (a minimal-capability harness, a degraded-context probe), the divergence must be *derived too* (canonical set minus named exclusions) or explicitly commented; a bare hand-list with no derivation and no divergence note is the finding. Repair class **thread the real value**: build the stub from the canonical constant (spread it, filter it with named exclusions); the double should express its *difference* from canon, never re-state canon. Search seam: grep test files for inventory-shaped stub methods and array literals of registry member names; cross against the exported canonical constants for that registry.

- A **deadness verdict computed by reference scan, applied to an artifact with out-of-graph consumers** — an "unused, delete it" claim derived from grepping the repo's import graph, aimed at an artifact whose consumption seam the scan cannot see: environment provisioning consumed by spawned runtimes (a CI apt package that agents under test shell out to), canonical intent registers (`TOPOLOGY.md`, `treedocs.yaml`, PLAN-parked items, intentional topology stubs), the published-package surface (runtime vs `devDependencies` decided by what consumers install, not what `src/` imports), and gitignored data planes. Both faces are silent: the delete lands green locally (import graph clean, default tests pass) and breaks only in a CI lane or consumer install — or the delete proceeds and the canonical docs that named the seam rot unreconciled (graduated 2026-08-03 from the reduction-review induction: CI `ripgrep` was flagged "nothing invokes it" while FE-1241's commit message provisioned it so "the Linux full gate can exercise bounded grep reads" by spawned agents; four deletion targets — `run-auto-replan-policy`, `row-schemas`, `drawer-card`, `validate-fixture` — were named by `TOPOLOGY.md` files the review never mentioned; a deps→`devDependencies` move was argued from repo imports rather than the published surface). **Discriminator:** does the artifact's consumption run through text the scan can see? If it was provisioned or declared *for* an out-of-graph consumer, reference-count zero is not evidence of deadness; a repo-code-only artifact with zero references and no canonical-doc mention is genuinely dead and not this lens. Repair class **name the contract**: annotate the provisioning site with its out-of-graph consumer (a comment on the CI install line naming the spawned-agent need and its decision/issue id), and gate every deletion on canonical-doc reconciliation (update or challenge the `TOPOLOGY.md`/PLAN entry in the same change). Search seam: for each delete claim, run `git log -S <artifact>` for stated purpose at introduction, and cross the target against `src/**/TOPOLOGY.md`, `src/treedocs.yaml`, and `memory/PLAN.md` parked items; for dependency reclassification, inspect what the published package (`files`/`prepack` output) actually needs at install time, and enumerate gitignored data planes with `git ls-files` rather than ignore-respecting globs.

- A **contract-bearing predicate duplicated by copy instead of import** — a function whose result feeds an identity, parity, equality, or authority decision (`canonicalPath`, `markingsEqual`, terminal-summary classification, run-id derivation) defined independently in two or more production files rather than imported from one owner. The copies are typically byte-identical at introduction, so review sees "just a small helper"; the fault is latent — the first divergent edit makes seams that must agree (writer vs reader projection, git ports vs execution authority) silently disagree about "equal", "same path", or "terminal", with no error, while each copy's local tests stay green (graduated 2026-08-03 from two consecutive review-batch inductions: `stringArraysEqual` defined in four executor files with terminal-summary/marking semantics spread across `orchestrate.ts`, `observer-read.ts`, `petri-events.ts`, `petri-replay.ts` — a writer/reader-authority pair sharing state semantics by copy; `canonicalPath` defined identically in the three `src/app/git-*-port.ts` files plus `executor/worktree.ts` and `executor/run-execution-authority.ts` — the exact seams that must agree on path identity for promotion/landing writes; `pathExists` ×22 and `defaultRunId` ×7 as the same family at lower stakes). **Discriminator: does the predicate's result feed an equality/identity/parity/authority decision shared across seams?** If yes → this lens; a trivial shim with stable, decision-free semantics (`isRecord` ×32, `parseJson` ×11 at graduation time) is tolerated duplication, not the finding — do not flag it. Repair class **name the contract**: one imported owner per predicate family (an executor state-predicates module imported by writer, reader authority, and replay; one shared canonical-path helper for the git/authority seams); the copies then delete. Search seam: scan duplicate function definitions — `rg -n --no-heading '^(export )?(async )?function (\w+)\(' src -o -r '$3'` over production files, count names appearing in ≥2 files — then apply the discriminator to each hit; pay first attention to names containing `equal`, `canonical`, `terminal`, `default*Id`, `sanitize`, `classif`.

## Catalog governance

This catalog is the stabilized lens library. `ln-induct` is the generator that induces fresh lenses from review-bot evidence and proposes graduating recurring ones into this list.
9 changes: 9 additions & 0 deletions .changeset/trim-published-install-surface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@hashintel/brunch": patch
---

Trim the published install surface without changing runtime behavior:

- Production dependencies 23 → 15. `stringify-tree` is deleted with its last consumer, and seven packages move to `devDependencies`: the six web-only ones (`react`, `react-dom`, `@tanstack/react-query`, `@tanstack/react-router`, `@fontsource-variable/inter`, `@fontsource-variable/geist-mono`) and the build-time `drizzle-typebox`. None of the eight is reachable from either published entry point (`bin/brunch.js` or `main`); the React and TanStack code ships inlined in the prebuilt `dist-web` Vite bundle and the fonts ship as `.woff2` assets beside it.
- The package `files` list excludes `dist/probes` and the unbundled `dist/web` tree. Probe scripts still build locally, while the shipped browser application remains the self-contained `dist-web` bundle.
- Executor internals consolidate: the two inert execute-plan artifact tools and their report writers are removed, the execute-tool authority map is type-coupled to the `tool-names.ts` roster union so roster drift becomes a compile error, and the duplicated path-existence predicate collapses to one executor-owned helper.
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ jobs:
git config --global init.defaultBranch main

- name: Install native test dependencies
# ripgrep is consumed out-of-graph: FE-1241 provisioned it for the Grep tool of the
# comparison-lane agents this gate spawns, so a reference scan of src/ will always
# report zero consumers. expect/zsh are named in src/dev/tui-driver; ripgrep is not.
run: |
sudo apt-get update
sudo apt-get install --yes expect ripgrep zsh
Expand Down
1 change: 0 additions & 1 deletion .oxfmtrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
"docs/**",
"memory/**",
".fixtures/**",
"@types/**",
"tmp/**",
"dist-web/**",
"bin/**",
Expand Down
1 change: 0 additions & 1 deletion .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@
"docs/**",
"memory/**",
".fixtures/**",
"@types/**",
"tmp/**",
"src/**/_suspended/**",
"dist-web/**",
Expand Down
2 changes: 1 addition & 1 deletion .pi/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"packages": [
"npm:pi-interactive-shell@0.13.0"
]
}
}
Loading
Loading