{"id":50929961,"url":"https://github.com/foundryside-dev/lacuna","last_synced_at":"2026-06-17T03:04:44.489Z","repository":{"id":363067679,"uuid":"1259744722","full_name":"foundryside-dev/lacuna","owner":"foundryside-dev","description":"The MissingNo of the Loom suite — a deliberately-flawed reference specimen the suite is demonstrated against.","archived":false,"fork":false,"pushed_at":"2026-06-07T08:31:44.000Z","size":490,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T10:18:53.005Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/foundryside-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-04T20:17:31.000Z","updated_at":"2026-06-07T08:31:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/foundryside-dev/lacuna","commit_stats":null,"previous_names":["foundryside-dev/lacuna"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/foundryside-dev/lacuna","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foundryside-dev%2Flacuna","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foundryside-dev%2Flacuna/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foundryside-dev%2Flacuna/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foundryside-dev%2Flacuna/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/foundryside-dev","download_url":"https://codeload.github.com/foundryside-dev/lacuna/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foundryside-dev%2Flacuna/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34431810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-17T03:04:43.799Z","updated_at":"2026-06-17T03:04:44.482Z","avatar_url":"https://github.com/foundryside-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lacuna\n\n**The MissingNo of the Weft suite** — a\ndeliberately-flawed reference application the suite is demonstrated against.\n\nWhere Weft's other members are instruments, Lacuna is the *specimen*: a\nclean-cored library app seeded with documented **lacunae** (planted flaws), each\none placed to make a specific Weft tool or tool-combination light up. Point the\nsuite at Lacuna and watch it work.\n\n## What's here\n\n| Path | What it is |\n|------|------------|\n| `specimen/` | The clean-core app + isolated, catalogued planted flaws |\n| `tour/lacunae.toml` | The flaw manifest — single source of truth |\n| `tour/` | The tour harness (`python -m tour`) |\n| `docs/tour.md`, `docs/matrix.md` | Generated narrative + combination-matrix coverage |\n| `docs/flaws/` | Per-lacuna explainer pages (generated) |\n\n## Set up\n\n```bash\nmake setup    # provision the demo's gitignored secrets (idempotent)\n```\n\n`make setup` generates `.env` (gitignored, `0600`) with a fresh shared HMAC for\nthe Wardline→Legis signed-scan handshake. Secrets are **never committed** — a\nfresh clone bootstraps its own, and `make setup` never clobbers an existing\n`.env`. `make tour`/`make verify` depend on it, so the signed handshake just\nworks (without it, the tour degrades honestly to an *unsigned* handshake).\n\nFor the agent's Filigree MCP (the dashboard transport on `:8749`), export the\nfederation token into the shell **before** launching Claude Code — `.mcp.json`\ninterpolates `${WEFT_FEDERATION_TOKEN}` from the environment, not from `.env`:\n\n```bash\nexport WEFT_FEDERATION_TOKEN=\"$(cat ~/.config/filigree/federation_token)\"\n```\n\nLikewise for the **legis binding ledger / closure gate**: `make setup` generates\n`LEGIS_HMAC_KEY` into `.env`, but the standing legis MCP server reads it from the\nshell env (not `.mcp.json` — never put the secret there). Export it before\nlaunching Claude Code so the gate is enabled:\n\n```bash\nset -a; . ./.env; set +a        # export everything in .env (incl. LEGIS_HMAC_KEY)\n# or, just the one key:  export LEGIS_HMAC_KEY=...\n```\n\nWithout it, the closure gate stays honestly disabled (`CELL_NOT_ENABLED`).\n\n## Run the tour\n\n```bash\nmake tour     # drive every live Weft tool against the specimen; regenerate docs\nmake verify   # assert every live lacuna is surfaced and the narrative is in lockstep\n```\n\nThe tour detects which Weft tools are runnable and **degrades honestly**. Legis\nruns live in the tour (three passing legs — govern, policy-boundary-check, and\nmalformed-artifact rejection — plus two live `legis` lacunae entries). Charter\nis the only member still design-only/planned, and is labelled as such, never\nfaked.\n\n## The lacunae\n\nEach planted flaw is permanent and intentional. They are catalogued in\n`tour/lacunae.toml` and explained in `docs/flaws/`. Do not \"fix\" them — a\nremoved lacuna fails `make verify`. New, *un*-catalogued findings are bugs, not\nfeatures: Wardline's gate stays green on the baselined lacunae and trips on\nanything new.\n\n\u003e **The sentinel:** `wl-log-injection` (PY-WL-125, `specimen/preview_sinks.py`)\n\u003e is deliberately **unbaselined** — preview rules are gate-immune, and the\n\u003e filigree tour leg promotes and work-cycles exactly this finding. The scan\n\u003e summary showing `1 active` is correct, not drift. Do not baseline it.\n\n\u003e **Warpline entries are capability demos, not flaws.** `wp-blast-radius`,\n\u003e `wp-reverify`, `wp-churn`, and `wp-timeline` (all on `specimen/cli.py::_add_book`)\n\u003e assert warpline's change-impact *correctness*, not a defect — warpline is\n\u003e advisory/enrich-only and never gates. `_add_book` carries no `LACUNA` docstring\n\u003e by design. Do not \"fix\" them; the catalogue holds the intent.\n\n## Part of Weft\n\nWeft models a codebase as **entities**, each carrying typed facts from different\ntools, keyed on one durable identity (SEI), read in one call. Lacuna is the\nshared specimen that demonstrates the whole matrix.\n\nThe Weft federation hub is the authoritative source for the federation\nnarrative and roster — see\n[the doctrine](https://weft.foundryside.dev/#doctrine) for the axiom and the\nmember roster, and\n[`members/lacuna.md`](https://github.com/foundryside-dev/weft/blob/main/members/lacuna.md)\nfor Lacuna's place in the suite as the demonstration specimen (it is **not** a\nroster member). This README does not restate the roster; the hub owns it.\nLacuna owns its own specimen, planted-flaw manifest, and tour, as described\nabove.\n\nTwo complementary roles share Loomweave's analysis surface: Lacuna is the\nshowcase specimen (this small, deliberately-flawed app), while **elspeth**\n(~425k LOC of real Python) is Loomweave's first-customer scale target — the\nshowcase versus the scale proof.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoundryside-dev%2Flacuna","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoundryside-dev%2Flacuna","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoundryside-dev%2Flacuna/lists"}