{"_type":"issue","id":"lynchpin-2te","title":"Refine sensitive-content publication framing","description":"Keep generic sensitive-content analysis functional while making its public documentation and naming read as a privacy-aware classification capability rather than operator biography, then verify history and tests.","acceptance_criteria":"Generic classification behavior remains intact; public framing is restrained and privacy-oriented; rewritten signed master is the only public ref upstream.","status":"closed","priority":1,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-13T10:09:29Z","created_by":"Sinity","updated_at":"2026-07-13T10:27:49Z","started_at":"2026-07-13T10:09:36Z","closed_at":"2026-07-13T10:27:49Z","close_reason":"Generic classification behavior retained, public framing clarified, and the rewritten history passed focused and full verification.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-ha8","title":"Recover and report GitHub substrate promotion failures","description":"Chisel's GitHub-context refresh can hit a DuckDB fatal checkpoint error, after which materialize_github_context swallows the failure and Chisel prints a misleading ready status. Reproduce the connection-invalidated path, retry safely with a fresh connection where possible, and surface degraded promotion status without blocking NDJSON-backed snapshot generation.","acceptance_criteria":"A transient DuckDB fatal during GitHub-context promotion gets one fresh-connection retry; persistent promotion failure is represented in the returned manifest and Chisel output does not claim an unqualified ready state; focused regression tests cover both cases.","notes":"Root cause evidence: the canonical DuckDB failed standalone CHECKPOINT with TransformToDeprecated, and its read snapshot passed CHECKPOINT but aborted under promotion with GetAllocatorIdx. Snapshot reuse was unsafe. Implemented atomic clean-schema rebuild before quarantine/swap, one idempotent GitHub retry, fail-closed Chisel degradation, and multiline artifact-reference guarding found during full regeneration. Live recovery rebuilt 49 tables and populated core rows; forced 64-step current-state regeneration completed 63 steps plus a successful targeted rerun of the narrative; full five-repository Chisel regeneration completed with unqualified GitHub context ready and all XML well formed. Focused tests: 14 passed. Changed-file Ruff: passed. Publication checker required by instructions was absent from this checkout and PATH; complete public diff was manually reviewed. Residual Polylogue operator-day adapter drift tracked as lynchpin-4ul.","status":"closed","priority":1,"issue_type":"bug","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-11T16:55:29Z","created_by":"Sinity","updated_at":"2026-07-12T02:00:32Z","started_at":"2026-07-11T16:55:34Z","closed_at":"2026-07-12T02:00:32Z","close_reason":"Recovered via clean derived-store rebuild, regenerated all outputs, and verified post-Chisel checkpoint plus focused regressions.","dependency_count":0,"dependent_count":1,"comment_count":0}
{"_type":"issue","id":"lynchpin-a7x","title":"Add a coherent documentation entry point","description":"Create a concise Lynchpin documentation map so architecture, source, observability, project-analysis, and cross-project boundary references are discoverable without expanding the README into an index.","acceptance_criteria":"docs/README.md groups and describes current documentation; README links to the index; local documentation links validate; the public project site points to the documentation map where appropriate.","notes":"Added docs/README.md as the reader-facing map for architecture, source contracts, analysis methodology, Chisel/project evidence, observability, and the Polylogue boundary; linked it from both the repository README and the public project site's documentation grid. Verification: all tracked Markdown links resolve offline and nix flake check passed.","status":"closed","priority":2,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-13T14:03:11Z","created_by":"Sinity","updated_at":"2026-07-13T14:19:58Z","started_at":"2026-07-13T14:03:17Z","closed_at":"2026-07-13T14:12:53Z","close_reason":"The documentation surface now has one coherent entry point and passes local-link and flake verification.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-zxk","title":"Treat disabled GitHub Issues as an empty current surface","description":"GitHub-context refresh currently treats repositories with Issues disabled as a network failure, preserves stale issue rows, and makes Chisel report obsolete GitHub issue counts even though Beads owns current work. Recognize the explicit disabled-Issues response, remove stale issue rows for that repository, and continue refreshing PR context normally.","acceptance_criteria":"A disabled GitHub Issues endpoint is represented as a successful empty issue inventory with an explicit reason; stale issue rows for that repository are removed; PR inventory and detail refresh still proceed; genuine network failures remain fail-closed; focused materialization and Chisel tests pass.","notes":"Implemented in a5e04e5. Disabled GitHub Issues now materialize as a successful empty inventory with reason=issues_disabled; stale repository issue rows are removed while pull-request refresh proceeds. Verification: 27 focused tests passed, Ruff passed, nix flake check passed. Live five-project Chisel regenerated successfully: Sinex, Sinnix, and Lynchpin reported 0 current GitHub issues, pull-request counts refreshed, all XML outputs were well-formed, and the run recovered its derived DuckDB checkpoint via the existing clean-schema recovery path.","status":"closed","priority":2,"issue_type":"bug","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-13T13:54:00Z","created_by":"Sinity","updated_at":"2026-07-13T14:05:07Z","started_at":"2026-07-13T13:54:05Z","closed_at":"2026-07-13T14:05:07Z","close_reason":"Disabled-Issues repositories now converge to an empty current issue surface without degrading PR refresh; focused, flake, and live Chisel verification passed.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-0c9","title":"Publish committed Beads boards from project repositories","description":"Provide a convenient searchable Beads browser reachable from each public project repository. Generate it automatically from committed .beads/issues.jsonl, compose with existing GitHub Pages deployments, and omit only low-value interaction/memory chatter rather than reducing substantive issue records.","design":"Prefer one shared renderer contract with thin repository integrations. Reuse an existing Pages pipeline where present; avoid competing gh-pages deployments. The board is a public projection of already-committed issue records, not a Chisel private-package export.","acceptance_criteria":"Polylogue, Sinex, Sinnix, and Lynchpin each expose a stable repository link to a searchable board; boards derive from committed issue records automatically; existing Pages sites are preserved; descriptions/design/acceptance/notes/dependencies remain browsable; interaction and memory chatter is not included; focused renderer/workflow checks pass.","notes":"Delivered shared renderer and repository integrations. Public boards:\n- https://sinity.github.io/polylogue/main/beads/\n- https://sinity.github.io/sinex/beads/\n- https://sinity.github.io/sinnix/beads/\n- https://sinity.github.io/sinity-lynchpin/beads/\n\nThe shared Polylogue composite action assembles the landing page, issue-only JSONL board, assets, and link/fragment validation. Sinex, Sinnix, and Lynchpin pin the action at 55f843267f3c5c64773a125a2bf767e8c1a216df. All four URLs returned HTTP 200 and all board payloads contain issue records only. GitHub Actions are currently account-locked by a billing issue, so standard gh-pages branches provide the live publication path while the committed workflows remain ready for automated deployment.","status":"closed","priority":2,"issue_type":"feature","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-13T12:57:14Z","created_by":"Sinity","updated_at":"2026-07-13T13:47:18Z","started_at":"2026-07-13T12:57:19Z","closed_at":"2026-07-13T13:47:18Z","close_reason":"All four repository-linked searchable issue boards are live and verified; shared assembly excludes interaction and memory streams.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-7cy","title":"Honor repository LOC exclusions in Chisel","description":"Chisel currently runs tokei with --no-ignore, bypassing repository .gitignore, .ignore, and .tokeignore policies and inflating attribution statistics with generated and internal agent surfaces. Restore native ignore semantics while keeping Chisel's explicit safety exclusions and hidden-file support.","design":"Collect Tokei inputs from git ls-files --cached --others --exclude-standard so tracked source remains visible even when a broad local ignore matches it, while ignored runtime/demo corpora never enter the command. Keep explicit Chisel safety exclusions. Add a first-match Sinnix verification bucket. Derive default-branch Git growth series, bucket churn, commit-kind mix, rolling velocity, and a cross-project portfolio report with dependency-free SVG charts plus CSV/JSON/Markdown.","acceptance_criteria":"Chisel excludes ignored local corpora and dependencies from LOC without hiding tracked repository surfaces; Sinnix checks are attributed to a dedicated tests bucket; growth outputs include per-project daily/weekly/monthly data, summary and bucket analysis, plus a cross-project Markdown/JSON/CSV/SVG portfolio; tests prove ignore-aware input selection, test bucketing, history aggregation, and report generation; focused Chisel tests and Ruff pass.","status":"closed","priority":2,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-13T11:59:31Z","created_by":"Sinity","updated_at":"2026-07-13T12:43:07Z","started_at":"2026-07-13T11:59:35Z","closed_at":"2026-07-13T12:43:07Z","close_reason":"Chisel now honors repository LOC policy, attributes Sinnix checks separately, emits rename-aware growth and Beads history analyses, and packages a complete browsable Beads board. Ruff, 34 focused tests, and real four-project generation passed.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-370","title":"Finish public cleanup and restore a clean quality baseline","description":"Continue the external-presentability pass by fixing the complete Ruff baseline, reviewing remaining documentation and package metadata for legibility gaps, and committing the reviewed Beads issue state.","acceptance_criteria":"Ruff is clean repository-wide; focused tests cover affected production routes; remaining tracked documentation and metadata are coherent; Beads issue state is committed; flake and broad project gates pass.","notes":"Completed in b5a3394, 30290ae, and c1a29a8. Ruff and strict mypy are clean. Added a repository-wide pytest isolation boundary so default tests cannot discover operator data; repaired live-dependent tests and explicit-bundle benchmark handling. Replaced the duplicated agent API catalogue with a concise current contract and removed generated Beads marketing copy. Verification: 2539 passed, 2 skipped, 16 deselected; nix flake check passed.","status":"closed","priority":2,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-12T15:14:15Z","created_by":"Sinity","updated_at":"2026-07-12T15:40:42Z","started_at":"2026-07-12T15:14:23Z","closed_at":"2026-07-12T15:40:42Z","close_reason":"Quality, test-isolation, documentation, and tracker baselines restored","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-ov6","title":"Revamp public documentation and project overview","description":"Rewrite the README and audit the public documentation set so Lynchpin presents its current local-first evidence architecture, source layer, substrate, analyses, and agent-facing products clearly to external readers. Consolidate or remove stale plans, internal prompts, migration narration, duplicated reference material, and other documentation cruft while preserving current technical contracts.","acceptance_criteria":"- README gives an evidence-backed holistic overview of current Lynchpin architecture and capabilities\\n- public documentation has a coherent index and no identified stale internal planning cruft\\n- project metadata and cross-links match the present contract\\n- documentation formatting and relevant tests/checks pass","notes":"Implemented and verified in commit f6cadac. Rewrote README around the current evidence architecture, added docs/architecture.md, updated source/observability/Polylogue/methodology contracts, aligned flake metadata, and removed superseded planning/audit documents. Verification: nix flake check; CLI help for materialize/current-state/MCP; MCP registry self-check (8/8); focused MCP/materialization tests (137 passed); tracked Markdown link audit. Repository-wide Ruff has 28 pre-existing findings outside this documentation change.","status":"closed","priority":2,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-12T14:00:53Z","created_by":"Sinity","updated_at":"2026-07-12T14:22:40Z","started_at":"2026-07-12T14:01:00Z","closed_at":"2026-07-12T14:22:40Z","close_reason":"Implemented and verified","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-4ul","title":"Repair operator-day Polylogue archive coverage adapter","description":"Forced current-state regeneration showed operator_daily skipping the Polylogue source because ArchiveCoverageInsight no longer exposes conversation_count. Reconcile the adapter with the current Polylogue DTO and verify the operator-day row retains Polylogue coverage without coercing missing data.","acceptance_criteria":"A focused operator-day production-route test exercises the current ArchiveCoverageInsight DTO; Polylogue fields materialize without source-skip warnings; the affected window regenerates successfully.","status":"open","priority":2,"issue_type":"bug","owner":"ezo.dev@gmail.com","created_at":"2026-07-12T02:00:20Z","created_by":"Sinity","updated_at":"2026-07-12T02:00:20Z","dependencies":[{"issue_id":"lynchpin-4ul","depends_on_id":"lynchpin-ha8","type":"blocks","created_at":"2026-07-12T04:00:31Z","created_by":"Sinity","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-nwa","title":"Archive chisel package versions before overwrite","description":"Recover existing Borg/btrbk chisel package versions into code-snapshots/archive timestamped folders and update chisel so future runs preserve previous *-all.tar.gz outputs before replacing them.","status":"closed","priority":2,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-05T00:29:50Z","created_by":"Sinity","updated_at":"2026-07-05T00:55:20Z","started_at":"2026-07-05T00:29:56Z","closed_at":"2026-07-05T00:55:20Z","close_reason":"Recovered 126 distinct Borg/btrbk chisel package versions into code-snapshots/archive timestamped folders and updated chisel to archive selected existing *-all.tar.gz packages before overwriting them.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-o1n","title":"Audit chisel fit for Sinex and Polylogue","description":"Audit chisel snapshot segmentation and generated metadata against the current Sinex and Polylogue repository shapes, especially tokei stats, Beads exports, devloop surfaces, and demo/showcase surfaces. Patch low-risk chisel mismatches discovered during the audit and verify with focused tests or dry-run snapshot generation.","status":"closed","priority":2,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-04T13:51:29Z","created_by":"Sinity","updated_at":"2026-07-04T13:58:47Z","started_at":"2026-07-04T13:51:32Z","closed_at":"2026-07-04T13:58:47Z","close_reason":"Completed: audited chisel against current Sinex and Polylogue outputs/live layouts; fixed dot-directory tokei normalization, path-aware globbing, Beads exclusion, current devloop/demo segmentation, and focused tests; verified with focused pytest and temp two-repo chisel generation.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-zze","title":"Upgrade chisel Beads packaging","description":"Chisel currently packages code snapshots with GitHub issue and PR context, but local Beads task state is not comprehensively included. Add Beads-aware snapshot outputs so GPT-Pro packaging carries durable local issue, dependency, and readiness context alongside code and GitHub artifacts.","status":"closed","priority":2,"issue_type":"feature","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-03T04:39:30Z","created_by":"Sinity","updated_at":"2026-07-03T04:44:33Z","started_at":"2026-07-03T04:39:38Z","closed_at":"2026-07-03T04:44:33Z","close_reason":"Completed: chisel now exports Beads issue, readiness, dependency, memory, overview, audit, and index context.","dependency_count":0,"dependent_count":0,"comment_count":0}
{"_type":"issue","id":"lynchpin-8iw","title":"Normalize recovered chisel archive mtimes","description":"Set mtimes on recovered code-snapshots/archive timestamp folders and contained *-all.tar.gz files to the timestamp represented by each folder name.","status":"closed","priority":3,"issue_type":"task","assignee":"Sinity","owner":"ezo.dev@gmail.com","created_at":"2026-07-05T03:07:16Z","created_by":"Sinity","updated_at":"2026-07-05T03:08:33Z","started_at":"2026-07-05T03:07:33Z","closed_at":"2026-07-05T03:08:33Z","close_reason":"Normalized mtimes on all code-snapshots/archive timestamp folders and direct *-all.tar.gz contents; verified 27 folders and 131 tarballs with zero mismatches.","dependency_count":0,"dependent_count":0,"comment_count":0}
