chore: track Goal Zero bead hygiene review - #609
Open
jamestexas wants to merge 1 commit into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the repo’s rsry bead ledger to track new coordination work and reflect recent CDC-related findings/closure.
Changes:
- Marks
mache-abf404as done and records the 2026-08-05 re-measurement results in its comments. - Adds a new bead
mache-c436a6to scope CDC chunk-diff–driven change-detection/invalidation work. - Adds a new bead
mache-d3ac32to meta-review Signet/Notme bead hygiene and release-train organization.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| {"schema_version":1,"id":"mache-c3248b","title":"Audit public repos for canonical bead JSONL format","description":"Check public ecosystem repos for the same canonical bead JSONL shape fixed in mache: tracked .beads/beads.jsonl, local binary DB ignored, beads-jsonl merge driver wiring where applicable, and no active bd CLI guidance. Include ~/github/jamestexas/agents and exclude crumb per user request.","status":"open","priority":2,"issue_type":"task","owner":"dev-agent","created_at":"2026-07-23T14:31:23+00:00","updated_at":"2026-07-23T14:31:23+00:00","created_by":"jamestexas","dependency_count":0,"dependent_count":0,"comment_count":7,"dependencies":[],"comments":[{"id":"458","issue_id":"mache-c3248b","text":"Audit result 2026-07-23: public GitHub remotes checked, crumb excluded, agents included. OK JSONL canonical: ley-line-open, mache, rosary, canonical-hours, cloister (except beads.db ignore gap), notme (missing tracked .gitattributes reference), agents (missing tracked .gitattributes reference + legacy bd docs), plus no-bead-store public repos claude-code/codex/turso/zen. Missing tracked .beads/beads.jsonl but exportable: assay 45, kiln 27, signet 68. Empty stores missing JSONL: go-cms 0, go-platform-signers 0. x-ray has a store/schema failure: rsry export fails around comments.edit_reason / no such table issues after Dolt migration attempt. Older repos also retain tracked bd README/config/hooks and AGENTS bd guidance. Do not touch crumb; canonical-hours noted only.","author":"rsry-cli","created_at":"2026-07-23T14:35:03Z"},{"id":"459","issue_id":"mache-c3248b","text":"Starting fix pass: target public repos with bead stores. Will avoid crumb; no-store third-party repos left alone; x-ray tracked separately as store/schema repair. Need preserve pre-existing dirty worktrees.","author":"rsry-cli","created_at":"2026-07-23T14:37:04Z"},{"id":"460","issue_id":"mache-c3248b","text":"User clarified: fixes must land remotely too, and audit must verify bead refs/remotes/hooks are not pointing at entire/entire-graph. Checking git config, hooks, .beads, .gitattributes, AGENTS, and remote refs before making cross-repo changes.","author":"rsry-cli","created_at":"2026-07-23T14:37:36Z"},{"id":"461","issue_id":"mache-c3248b","text":"Fix pass result 2026-07-23: remote PRs opened and merged for agents#6, assay#2, cloister#186, go-cms#19, go-platform-signers#6, notme#48, signet#138. Each branch came from clean origin/main temp worktrees; setup scan excluding bead history found no entire/entire-graph refs in git config/hooks/.beads setup/.gitattributes/AGENTS. JSONL records after fix: agents 5, assay 45, cloister 108, go-cms 0, go-platform-signers 0, notme 115, signet 68. Kiln could not be pushed: GitHub reports repo archived/read-only. x-ray remains blocked by bead store/schema export failure (comments.edit_reason / issues table). canonical-hours and rosary noted but not touched.","author":"rsry-cli","created_at":"2026-07-23T14:51:51Z"},{"id":"462","issue_id":"mache-c3248b","text":"Remaining non-code blocker: kiln has a valid local export candidate (27 bead records) but GitHub rejects push with 'repository was archived so it is read-only'. To land kiln remotely, unarchive the repo or intentionally leave it frozen.","author":"rsry-cli","created_at":"2026-07-23T14:52:14Z"},{"id":"463","issue_id":"mache-c3248b","text":"User asked to true up canonical-hours too. Clarification: prior audit left it alone because JSONL + .gitattributes were already present; remaining drift is stale bd scaffold/guidance. Starting clean-temp-worktree fix.","author":"rsry-cli","created_at":"2026-07-23T15:23:35Z"},{"id":"464","issue_id":"mache-c3248b","text":"Canonical-hours true-up complete: PR agentic-research/canonical-hours#26 merged after check + smells passed. It already had .beads/beads.jsonl (54 records) and .gitattributes merge=beads-jsonl; fix removed remaining tracked bd scaffold/guidance and normalized .beads/.gitignore. Setup scan found no entire/entire-graph refs.","author":"rsry-cli","created_at":"2026-07-23T15:27:35Z"}],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"Report each audited public repo as OK/missing/drift, with concrete file-level evidence and follow-up beads for fixes.","files":[".beads","AGENTS.md",".gitattributes",".gitignore"],"test_files":[],"derived_from":[]} | ||
| {"schema_version":1,"id":"mache-c35b45","title":"mache serve <single-source-file> is a hard error post-CGO-removal — add temp-dir staging shim like mount --infer","description":"Found during PR-B (mache-37ae8b) test alignment (commit 1f83171). After in-process tree-sitter removal, `buildServeGraph` on a single SOURCE file (.go) is a HARD ERROR: the auto-leyline serve path (cmd/serve.go:457) is IsDir-gated, `leyline parse` rejects non-directory paths, and ingestSourceFile fails loudly without an ASTWalker. `mount --infer` already handles single files by staging into a temp dir (cmd/mount_inference.go), but serve has no equivalent shim — so `mache serve foo.go` (serve_registry.go:522 passes an empty schema for non-dir sources) dies end-to-end. Either add the staging shim to buildServeGraph or make the error explicitly guide the user to the dir form. Documented degradation, not a regression in projected output — but a UX cliff. TestBuildServeGraph_NilInvalidatorForNonDir currently pins the hard-error behavior.","status":"open","priority":2,"issue_type":"task","owner":"dev-agent","created_at":"2026-07-23T04:49:13+00:00","updated_at":"2026-07-23T04:49:13+00:00","created_by":"jamestexas","dependency_count":0,"dependent_count":0,"comment_count":0,"dependencies":[],"comments":[],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"`mache serve <single-file.go>` either succeeds by staging the file into a temp dir before `leyline parse` (mirroring cmd/mount_inference.go's single-file handling) OR fails with a clear, actionable message pointing the user at the directory form. A cmd test asserts the chosen behavior. `go test ./cmd/` green.","files":["cmd/serve.go","cmd/serve_registry.go"],"test_files":["cmd/sheaf_wire_test.go"],"derived_from":[]} | ||
| {"schema_version":1,"id":"mache-c380d2","title":"_ast smell dogfood blocked: leyline _ast baseline isn't reproducible across darwin/linux (CI mismatch)","description":"The _ast smell dogfood (mache-46af85 part 2) was split out of PR #516 (preserved on branch wip/mache-46af85-dogfood-ast-rules) because a docs/smell-baseline-ast.json generated locally on darwin does NOT match the linux CI run: the CI smells:ast step reported many NEW long_function findings (socket.go:210, tools/mcp-fetch/main.go:54, tools/notion-fetch/*, tools/server-json-gen/*, tools/coverage-gate/*, tools/sheaf-subscribe-probe/main.go:28, several test files) that the darwin baseline lacked.\n\nThe lane already builds from TRACKED files only (git ls-files → cpio) for parity within a platform, and uses the pinned leyline. Two candidate causes to determine:\n 1. Cross-platform leyline variance (darwin-arm64 vs linux-amd64 v0.7.0 producing different _ast / long_function line-spans or function sets) — if real, a committed baseline can't be authored on darwin. Depends on/relates to ley-line-open determinism.\n 2. Local baseline was generated from an incomplete tracked-file set (some tracked tools/*-probe were physically moved out during the session, so cpio skipped them even though git ls-files listed them → those files absent from the baseline; CI's clean checkout has them → NEW).\n\nResolution paths: (a) verify (2) by regenerating with a fully-present tree and diffing; (b) if (1) is real, generate the baseline IN CI (a `task smells:ast:baseline` job that commits the artifact) or normalize the metric to be platform-stable; (c) confirm leyline _ast output is byte-stable across platforms (file an LLO bead if not). Also note: mache's community-detection quotient test (internal/ingest/quotient_test.go:704) flaked on the same linux run — a separate determinism flake to watch.\n\nClose condition: `task smells:ast` passes in linux CI against a committed baseline, and the baseline is reproducible (0 NEW) from a clean checkout on the platform CI uses.","status":"done","priority":2,"issue_type":"bug","owner":"scoping-agent","created_at":"2026-07-23T04:49:13+00:00","updated_at":"2026-07-23T04:49:13+00:00","created_by":null,"dependency_count":0,"dependent_count":0,"comment_count":2,"dependencies":[],"comments":[{"id":"196","issue_id":"mache-c380d2","text":"ROOT CAUSE FOUND — it's cause (2), a cpio portability bug, NOT cross-platform leyline variance:\n\n`git ls-files -z | cpio -pd0 \"$SRC\"` copies 0 files on macOS (BSD cpio doesn't handle -0/null-delimited stdin the way GNU cpio on Linux/CI does). So the baseline was generated from an EMPTY tree (0 findings baselined); CI's GNU cpio copied all tracked files → every finding was NEW. I misread the earlier \"tracked tool present? NO (bad)\" + \"0 parsed\" as working.\n\nFIX confirmed: replace cpio with `git archive HEAD | tar -x -C \"$SRC\"` — fully portable (git+tar everywhere, no flag ambiguity). Local test: copies 770 tracked files, leyline parses 696, long_function = 103 INCLUDING the 5 CI-flagged files (socket.go, mcp-fetch, notion-fetch, server-json-gen, coverage-gate). git archive HEAD uses the COMMITTED tree = exactly CI's checkout → exact parity. Minor nuance: local runs then gate HEAD, not uncommitted working-tree changes (acceptable for a ratchet).\n\nResidual risk: git archive equalizes the FILE SET; if leyline ALSO has darwin↔linux output variance (masked until now by the empty baseline), the regenerated darwin baseline could still differ from linux CI — handle by generating the baseline in CI if that surfaces. But the primary blocker (cpio) is resolved.\n\nNext: on top of LLO v0.7.1 (#517), swap cpio→git archive in smells:ast:run, regenerate a REAL baseline, verify smells:ast 0 NEW, re-open the dogfood PR.","author":"rsry-mcp","created_at":"2026-07-23T04:49:13Z"},{"id":"197","issue_id":"mache-c380d2","text":"Auto-closed by rsry close-merged --local: PR #518 merged","author":"rosary","created_at":"2026-07-23T04:49:13Z"}],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"smells:ast passes in CI against a committed docs/smell-baseline-ast.json, and regenerating from a clean checkout on the CI platform yields 0 NEW (the baseline is reproducible). Root cause (cross-platform variance vs incomplete-set) identified and addressed.","files":["Taskfile.yml","docs/smell-baseline-ast.json","cmd/rules/long_function.json"],"test_files":[],"derived_from":[]} | ||
| {"schema_version":1,"id":"mache-c436a6","title":"Consume LLO's source_blobs CDC chunk-diff as a change-detection signal to narrow live-reparse invalidation","description":"## Context\n\nTwo prior findings converge here:\n\n1. `mache-6c9e1d` — a source-backed `mache serve` does a one-shot `leyline parse` into a frozen `.db`; live edits aren't reparsed and the sheaf cascade doesn't engage without the managed daemon path.\n2. `mache-238673` — node_hash memoization / sheaf incremental recompute is \"the real payoff\" of an incremental architecture, separate from CDC's storage-dedup framing.\n3. `mache-abf404` (closed 2026-08-05) — CDC's `source_blobs` target (once ley-line-open-baa57f landed) is cost-neutral (+0.35% db size, re-measured on v0.15.1) but shows zero dedup benefit on a single-repo snapshot, because mache's own read pattern (construct-granular, ~731 B/read) can't benefit from chunk-level paging regardless.\n\nSo CDC's storage-dedup value proposition is a dead end for mache. But a falsification experiment run in the same session found the OTHER property CDC claims — boundary stability — genuinely holds and IS useful:\n\n## The falsified finding (2026-08-05, real edit to a real file)\n\nSingle-line edit to `cmd/serve_registry.go` (41,682 → 41,765 bytes, +83 bytes at line 500):\n- File chunks into exactly 2 chunks (source_blobs target).\n- Chunk 0 (bytes [0, 22888)→[0, 22971)): hash changed — contains the edit.\n- Chunk 1 (bytes [22888, 41682)→[22971, 41765)): hash **byte-identical** across the edit, despite its absolute byte offset shifting +83. Content-defined chunking correctly re-finds the same boundary in the unchanged tail.\n\nThis is a real, working change-detection primitive: \"which byte range(s) of this file actually differ from the last-known chunk manifest\" — for free, without diffing file content directly.\n\n## The idea (NOT this bead's implementation — scoping only)\n\nmache already tracks node byte-provenance in the same coordinate system (`internal/graph.SourceOrigin`, used today for write-back's `ShiftOrigins`). If a daemon-managed CDC index is kept live (source_blobs target, incrementally rechunked on file change — `leyline_cdc::rechunk_with_stats`, ADR-0033 §1.2), the changed chunk(s)' byte spans could be intersected against mache's own node byte-origins to determine which specific AST nodes actually need re-invalidation on an edit — narrowing mache's current \"any fsnotify event → reparse/invalidate the whole file\" behavior to \"reparse/invalidate only the nodes overlapping the changed byte range.\"\n\nExpected payoff scales with file size: negligible for small files (most Go source, ~1-3 chunks each) but real for large files (generated code, big data/config files) where an edit near the end currently forces whole-file reprocessing.\n\n## Explicitly NOT in scope for this bead\n\n- Implementation. Per 2026-08-05 direction: \"LLO needs to be in a good place first.\"\n- Blocked on `ley-line-open-c3d746` (daemon `--cdc` has no way to select the `source-blobs` target today — only the standalone `leyline cdc enable` CLI does).\n- Requires daemon-side incremental rechunk to actually be exercised live (not just one-shot activation) — needs verification that `rechunk_with_stats`'s bounded-rescan-window claim (ley-line-open-f8ebe7, closed) holds under mache's actual watch-and-reparse cadence, not just LLO's own unit tests.\n\n## Acceptance criteria (once unblocked and picked up)\n\nA daemon-managed `mache serve` with CDC enabled (source-blobs target) on a large fixture file: editing one region produces a chunk-manifest diff naming only the chunks overlapping the edit; those chunk byte-spans, intersected against mache's `SourceOrigin` node table, name a node set that a human/independent check agrees is exactly \"the nodes touched by the edit\" (no false negatives — a changed node must appear; false positives are acceptable but should be measured). `go test ./internal/leyline/... ./internal/graph/...` covers the correlation logic.","status":"open","priority":3,"issue_type":"feature","owner":"scoping-agent","created_at":"2026-08-05T17:54:30+00:00","updated_at":"2026-08-05T17:54:30+00:00","created_by":null,"dependency_count":0,"dependent_count":0,"comment_count":0,"dependencies":["ley-line-open-c3d746"],"comments":[],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"","files":["internal/leyline/socket.go","internal/graph/graph.go","cmd/serve.go"],"test_files":[],"derived_from":[]} |
| {"schema_version":1,"id":"mache-c3248b","title":"Audit public repos for canonical bead JSONL format","description":"Check public ecosystem repos for the same canonical bead JSONL shape fixed in mache: tracked .beads/beads.jsonl, local binary DB ignored, beads-jsonl merge driver wiring where applicable, and no active bd CLI guidance. Include ~/github/jamestexas/agents and exclude crumb per user request.","status":"open","priority":2,"issue_type":"task","owner":"dev-agent","created_at":"2026-07-23T14:31:23+00:00","updated_at":"2026-07-23T14:31:23+00:00","created_by":"jamestexas","dependency_count":0,"dependent_count":0,"comment_count":7,"dependencies":[],"comments":[{"id":"458","issue_id":"mache-c3248b","text":"Audit result 2026-07-23: public GitHub remotes checked, crumb excluded, agents included. OK JSONL canonical: ley-line-open, mache, rosary, canonical-hours, cloister (except beads.db ignore gap), notme (missing tracked .gitattributes reference), agents (missing tracked .gitattributes reference + legacy bd docs), plus no-bead-store public repos claude-code/codex/turso/zen. Missing tracked .beads/beads.jsonl but exportable: assay 45, kiln 27, signet 68. Empty stores missing JSONL: go-cms 0, go-platform-signers 0. x-ray has a store/schema failure: rsry export fails around comments.edit_reason / no such table issues after Dolt migration attempt. Older repos also retain tracked bd README/config/hooks and AGENTS bd guidance. Do not touch crumb; canonical-hours noted only.","author":"rsry-cli","created_at":"2026-07-23T14:35:03Z"},{"id":"459","issue_id":"mache-c3248b","text":"Starting fix pass: target public repos with bead stores. Will avoid crumb; no-store third-party repos left alone; x-ray tracked separately as store/schema repair. Need preserve pre-existing dirty worktrees.","author":"rsry-cli","created_at":"2026-07-23T14:37:04Z"},{"id":"460","issue_id":"mache-c3248b","text":"User clarified: fixes must land remotely too, and audit must verify bead refs/remotes/hooks are not pointing at entire/entire-graph. Checking git config, hooks, .beads, .gitattributes, AGENTS, and remote refs before making cross-repo changes.","author":"rsry-cli","created_at":"2026-07-23T14:37:36Z"},{"id":"461","issue_id":"mache-c3248b","text":"Fix pass result 2026-07-23: remote PRs opened and merged for agents#6, assay#2, cloister#186, go-cms#19, go-platform-signers#6, notme#48, signet#138. Each branch came from clean origin/main temp worktrees; setup scan excluding bead history found no entire/entire-graph refs in git config/hooks/.beads setup/.gitattributes/AGENTS. JSONL records after fix: agents 5, assay 45, cloister 108, go-cms 0, go-platform-signers 0, notme 115, signet 68. Kiln could not be pushed: GitHub reports repo archived/read-only. x-ray remains blocked by bead store/schema export failure (comments.edit_reason / issues table). canonical-hours and rosary noted but not touched.","author":"rsry-cli","created_at":"2026-07-23T14:51:51Z"},{"id":"462","issue_id":"mache-c3248b","text":"Remaining non-code blocker: kiln has a valid local export candidate (27 bead records) but GitHub rejects push with 'repository was archived so it is read-only'. To land kiln remotely, unarchive the repo or intentionally leave it frozen.","author":"rsry-cli","created_at":"2026-07-23T14:52:14Z"},{"id":"463","issue_id":"mache-c3248b","text":"User asked to true up canonical-hours too. Clarification: prior audit left it alone because JSONL + .gitattributes were already present; remaining drift is stale bd scaffold/guidance. Starting clean-temp-worktree fix.","author":"rsry-cli","created_at":"2026-07-23T15:23:35Z"},{"id":"464","issue_id":"mache-c3248b","text":"Canonical-hours true-up complete: PR agentic-research/canonical-hours#26 merged after check + smells passed. It already had .beads/beads.jsonl (54 records) and .gitattributes merge=beads-jsonl; fix removed remaining tracked bd scaffold/guidance and normalized .beads/.gitignore. Setup scan found no entire/entire-graph refs.","author":"rsry-cli","created_at":"2026-07-23T15:27:35Z"}],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"Report each audited public repo as OK/missing/drift, with concrete file-level evidence and follow-up beads for fixes.","files":[".beads","AGENTS.md",".gitattributes",".gitignore"],"test_files":[],"derived_from":[]} | ||
| {"schema_version":1,"id":"mache-c35b45","title":"mache serve <single-source-file> is a hard error post-CGO-removal — add temp-dir staging shim like mount --infer","description":"Found during PR-B (mache-37ae8b) test alignment (commit 1f83171). After in-process tree-sitter removal, `buildServeGraph` on a single SOURCE file (.go) is a HARD ERROR: the auto-leyline serve path (cmd/serve.go:457) is IsDir-gated, `leyline parse` rejects non-directory paths, and ingestSourceFile fails loudly without an ASTWalker. `mount --infer` already handles single files by staging into a temp dir (cmd/mount_inference.go), but serve has no equivalent shim — so `mache serve foo.go` (serve_registry.go:522 passes an empty schema for non-dir sources) dies end-to-end. Either add the staging shim to buildServeGraph or make the error explicitly guide the user to the dir form. Documented degradation, not a regression in projected output — but a UX cliff. TestBuildServeGraph_NilInvalidatorForNonDir currently pins the hard-error behavior.","status":"open","priority":2,"issue_type":"task","owner":"dev-agent","created_at":"2026-07-23T04:49:13+00:00","updated_at":"2026-07-23T04:49:13+00:00","created_by":"jamestexas","dependency_count":0,"dependent_count":0,"comment_count":0,"dependencies":[],"comments":[],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"`mache serve <single-file.go>` either succeeds by staging the file into a temp dir before `leyline parse` (mirroring cmd/mount_inference.go's single-file handling) OR fails with a clear, actionable message pointing the user at the directory form. A cmd test asserts the chosen behavior. `go test ./cmd/` green.","files":["cmd/serve.go","cmd/serve_registry.go"],"test_files":["cmd/sheaf_wire_test.go"],"derived_from":[]} | ||
| {"schema_version":1,"id":"mache-c380d2","title":"_ast smell dogfood blocked: leyline _ast baseline isn't reproducible across darwin/linux (CI mismatch)","description":"The _ast smell dogfood (mache-46af85 part 2) was split out of PR #516 (preserved on branch wip/mache-46af85-dogfood-ast-rules) because a docs/smell-baseline-ast.json generated locally on darwin does NOT match the linux CI run: the CI smells:ast step reported many NEW long_function findings (socket.go:210, tools/mcp-fetch/main.go:54, tools/notion-fetch/*, tools/server-json-gen/*, tools/coverage-gate/*, tools/sheaf-subscribe-probe/main.go:28, several test files) that the darwin baseline lacked.\n\nThe lane already builds from TRACKED files only (git ls-files → cpio) for parity within a platform, and uses the pinned leyline. Two candidate causes to determine:\n 1. Cross-platform leyline variance (darwin-arm64 vs linux-amd64 v0.7.0 producing different _ast / long_function line-spans or function sets) — if real, a committed baseline can't be authored on darwin. Depends on/relates to ley-line-open determinism.\n 2. Local baseline was generated from an incomplete tracked-file set (some tracked tools/*-probe were physically moved out during the session, so cpio skipped them even though git ls-files listed them → those files absent from the baseline; CI's clean checkout has them → NEW).\n\nResolution paths: (a) verify (2) by regenerating with a fully-present tree and diffing; (b) if (1) is real, generate the baseline IN CI (a `task smells:ast:baseline` job that commits the artifact) or normalize the metric to be platform-stable; (c) confirm leyline _ast output is byte-stable across platforms (file an LLO bead if not). Also note: mache's community-detection quotient test (internal/ingest/quotient_test.go:704) flaked on the same linux run — a separate determinism flake to watch.\n\nClose condition: `task smells:ast` passes in linux CI against a committed baseline, and the baseline is reproducible (0 NEW) from a clean checkout on the platform CI uses.","status":"done","priority":2,"issue_type":"bug","owner":"scoping-agent","created_at":"2026-07-23T04:49:13+00:00","updated_at":"2026-07-23T04:49:13+00:00","created_by":null,"dependency_count":0,"dependent_count":0,"comment_count":2,"dependencies":[],"comments":[{"id":"196","issue_id":"mache-c380d2","text":"ROOT CAUSE FOUND — it's cause (2), a cpio portability bug, NOT cross-platform leyline variance:\n\n`git ls-files -z | cpio -pd0 \"$SRC\"` copies 0 files on macOS (BSD cpio doesn't handle -0/null-delimited stdin the way GNU cpio on Linux/CI does). So the baseline was generated from an EMPTY tree (0 findings baselined); CI's GNU cpio copied all tracked files → every finding was NEW. I misread the earlier \"tracked tool present? NO (bad)\" + \"0 parsed\" as working.\n\nFIX confirmed: replace cpio with `git archive HEAD | tar -x -C \"$SRC\"` — fully portable (git+tar everywhere, no flag ambiguity). Local test: copies 770 tracked files, leyline parses 696, long_function = 103 INCLUDING the 5 CI-flagged files (socket.go, mcp-fetch, notion-fetch, server-json-gen, coverage-gate). git archive HEAD uses the COMMITTED tree = exactly CI's checkout → exact parity. Minor nuance: local runs then gate HEAD, not uncommitted working-tree changes (acceptable for a ratchet).\n\nResidual risk: git archive equalizes the FILE SET; if leyline ALSO has darwin↔linux output variance (masked until now by the empty baseline), the regenerated darwin baseline could still differ from linux CI — handle by generating the baseline in CI if that surfaces. But the primary blocker (cpio) is resolved.\n\nNext: on top of LLO v0.7.1 (#517), swap cpio→git archive in smells:ast:run, regenerate a REAL baseline, verify smells:ast 0 NEW, re-open the dogfood PR.","author":"rsry-mcp","created_at":"2026-07-23T04:49:13Z"},{"id":"197","issue_id":"mache-c380d2","text":"Auto-closed by rsry close-merged --local: PR #518 merged","author":"rosary","created_at":"2026-07-23T04:49:13Z"}],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"smells:ast passes in CI against a committed docs/smell-baseline-ast.json, and regenerating from a clean checkout on the CI platform yields 0 NEW (the baseline is reproducible). Root cause (cross-platform variance vs incomplete-set) identified and addressed.","files":["Taskfile.yml","docs/smell-baseline-ast.json","cmd/rules/long_function.json"],"test_files":[],"derived_from":[]} | ||
| {"schema_version":1,"id":"mache-c436a6","title":"Consume LLO's source_blobs CDC chunk-diff as a change-detection signal to narrow live-reparse invalidation","description":"## Context\n\nTwo prior findings converge here:\n\n1. `mache-6c9e1d` — a source-backed `mache serve` does a one-shot `leyline parse` into a frozen `.db`; live edits aren't reparsed and the sheaf cascade doesn't engage without the managed daemon path.\n2. `mache-238673` — node_hash memoization / sheaf incremental recompute is \"the real payoff\" of an incremental architecture, separate from CDC's storage-dedup framing.\n3. `mache-abf404` (closed 2026-08-05) — CDC's `source_blobs` target (once ley-line-open-baa57f landed) is cost-neutral (+0.35% db size, re-measured on v0.15.1) but shows zero dedup benefit on a single-repo snapshot, because mache's own read pattern (construct-granular, ~731 B/read) can't benefit from chunk-level paging regardless.\n\nSo CDC's storage-dedup value proposition is a dead end for mache. But a falsification experiment run in the same session found the OTHER property CDC claims — boundary stability — genuinely holds and IS useful:\n\n## The falsified finding (2026-08-05, real edit to a real file)\n\nSingle-line edit to `cmd/serve_registry.go` (41,682 → 41,765 bytes, +83 bytes at line 500):\n- File chunks into exactly 2 chunks (source_blobs target).\n- Chunk 0 (bytes [0, 22888)→[0, 22971)): hash changed — contains the edit.\n- Chunk 1 (bytes [22888, 41682)→[22971, 41765)): hash **byte-identical** across the edit, despite its absolute byte offset shifting +83. Content-defined chunking correctly re-finds the same boundary in the unchanged tail.\n\nThis is a real, working change-detection primitive: \"which byte range(s) of this file actually differ from the last-known chunk manifest\" — for free, without diffing file content directly.\n\n## The idea (NOT this bead's implementation — scoping only)\n\nmache already tracks node byte-provenance in the same coordinate system (`internal/graph.SourceOrigin`, used today for write-back's `ShiftOrigins`). If a daemon-managed CDC index is kept live (source_blobs target, incrementally rechunked on file change — `leyline_cdc::rechunk_with_stats`, ADR-0033 §1.2), the changed chunk(s)' byte spans could be intersected against mache's own node byte-origins to determine which specific AST nodes actually need re-invalidation on an edit — narrowing mache's current \"any fsnotify event → reparse/invalidate the whole file\" behavior to \"reparse/invalidate only the nodes overlapping the changed byte range.\"\n\nExpected payoff scales with file size: negligible for small files (most Go source, ~1-3 chunks each) but real for large files (generated code, big data/config files) where an edit near the end currently forces whole-file reprocessing.\n\n## Explicitly NOT in scope for this bead\n\n- Implementation. Per 2026-08-05 direction: \"LLO needs to be in a good place first.\"\n- Blocked on `ley-line-open-c3d746` (daemon `--cdc` has no way to select the `source-blobs` target today — only the standalone `leyline cdc enable` CLI does).\n- Requires daemon-side incremental rechunk to actually be exercised live (not just one-shot activation) — needs verification that `rechunk_with_stats`'s bounded-rescan-window claim (ley-line-open-f8ebe7, closed) holds under mache's actual watch-and-reparse cadence, not just LLO's own unit tests.\n\n## Acceptance criteria (once unblocked and picked up)\n\nA daemon-managed `mache serve` with CDC enabled (source-blobs target) on a large fixture file: editing one region produces a chunk-manifest diff naming only the chunks overlapping the edit; those chunk byte-spans, intersected against mache's `SourceOrigin` node table, name a node set that a human/independent check agrees is exactly \"the nodes touched by the edit\" (no false negatives — a changed node must appear; false positives are acceptable but should be measured). `go test ./internal/leyline/... ./internal/graph/...` covers the correlation logic.","status":"open","priority":3,"issue_type":"feature","owner":"scoping-agent","created_at":"2026-08-05T17:54:30+00:00","updated_at":"2026-08-05T17:54:30+00:00","created_by":null,"dependency_count":0,"dependent_count":0,"comment_count":0,"dependencies":["ley-line-open-c3d746"],"comments":[],"repo":"mache","scope":"","external_ref":null,"branch":null,"pr_url":null,"acceptance_criteria":"","files":["internal/leyline/socket.go","internal/graph/graph.go","cmd/serve.go"],"test_files":[],"derived_from":[]} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the rsry-tracked cross-repo review for Signet/Notme bead hygiene and release-train organization.