Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/chanmeng666/archlang/agents-mdgit clone --depth 1 https://github.com/ChanMeng666/archlangWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.35552 | $0.35552 |
| Opus 5 | $0.17776 | $0.17776 |
| Sonnet 5 | $0.07110 | $0.07110 |
| Haiku 4.5 | $0.03555 | $0.03555 |
Grade A, and why
archlang AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 1,120 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md
This file provides project guidance to AI coding assistants (Claude Code, GitHub Copilot, Cursor, Codex, etc.) working with this repository. Read it before writing or changing any code.
Project Overview
ArchLang — A small declarative language that compiles to professional SVG floor plans — like Typst/LaTeX, but for architecture.
- Primary language / stack: TypeScript (Node 18+; the core also runs in the browser)
- Default branch:
main - Repository: https://github.com/ChanMeng666/archlang
Project status & where things live (current)
ArchLang is shipped and launched. This is a published, deployed monorepo —
not a work-in-progress. Treat the live artifacts below as the source of truth
(the exact current version lives in the table and CHANGELOG.md, never in prose).
| Thing | Current | Where |
|---|---|---|
| Core package | @chanmeng666/[email protected] — PREPARED, NOT YET PUBLISHED. The version bump, CHANGELOG.md entry and lockfile are committed on main (2026-08-28) but no v1.32.0 tag has been pushed, so nothing has reached npm: the registry's latest is still 1.31.0 (probed 2026-08-28, npm view @chanmeng666/archlang version → 1.31.0). Publishing happens when someone pushes the tag. The PREVIOUS release, 1.31.0, is LIVE — tag v1.31.0 at 1444b8a, GitHub Release 2026-08-28T20:01:30Z, npm latest 1.31.0 with a SLSA provenance attestation; all three re-probed 2026-08-28. Its workflow went green on attempt 1 (gh run list --workflow=release.yml → run 33206107457, attempt: 1), where v1.30.0's had needed a manual gh run rerun --failed at the mcp-publisher publish step. The difference is the bounded retry v1.31.0 shipped for exactly that step (6 attempts 20 s apart, docs/backlog.md 4.7) — but one clean run is evidence the retry works, not proof the registry race is gone, so do not delete the retry on the strength of it. Released tokenlessly via .github/workflows/release.yml OIDC trusted publishing, with provenance |
npmjs.com/package/@chanmeng666/archlang |
| Agent interface | the arch CLI (--json, exit codes, stdin — incl. ast/complete/fix/suggest, compile --from-json/-f txt, validate --graph, v1.14's validate --intent/--feedback + score --brief, and the v1.17 self-describing + bounded-output layer: manifest-rendered per-command --help with worked examples, --version, exit-3 did-you-mean on an unknown flag/verb, describe --room/--select, lint|validate --code/--severity, context --section, fix --dry-run/--backup + unified diff) + SKILL.md + spec.llm.md + llms-full.txt / arch context + schemas/plan.schema.json + schemas/intent.schema.json + grammars/archlang.gbnf. Primary interface stays the CLI; an optional MCP shim (packages/mcp) is a discoverability channel, not a replacement |
src/cli.ts, SKILL.md, spec.llm.md, llms-full.txt, packages/mcp |
| MCP server | @chanmeng666/[email protected] — PREPARED, NOT YET PUBLISHED (bumped on main 2026-08-28 for core 1.32.0; ships when the v1.32.0 tag is pushed). The published version is 0.2.11, and it is LIVE on both registries — npm latest 0.2.11 and the MCP registry entry io.github.ChanMeng666/archlang-mcp reads version 0.2.11, updatedAt 2026-08-28T20:01:28.961Z, two seconds before the v1.31.0 GitHub Release and on the workflow's FIRST attempt (both re-probed 2026-08-28). 0.2.12 is a ninth consecutive version-bump-only release — git diff v1.31.0..HEAD -- packages/mcp is empty — and it is the 0.2.8 shape, not 0.2.11's: exactly two of the five baked resources MOVED, measured by SHA-256 at the tag, in the repo tree and in packages/mcp/dist/. spec.llm.md and llms-full.txt carry the widened furniture footprint list, because the spec generator interpolates it from CANONICAL_FIXTURES; grammars/archlang.gbnf, schemas/plan.schema.json and schemas/intent.schema.json are all three byte-identical to 0.2.11's, correctly, because a fixture category is a catalogue entry, not a grammar token — published 0.2.11's GBNF can already derive every one of the twenty-six new words, and none of them enters Plan JSON or an intent contract. So this bump is NOT the "a decoder cannot emit the new syntax" case; it is the milder and still-real one, that the two documents which TEACH a model which words have a symbol would otherwise ship a release behind. The dep range is re-pinned to ^1.32.0. Probe the MCP registry with ?version=latest — the bare GET /v0/servers?search=… returns the FIRST-published entry, which for this server is 0.1.1 from 2026-07-10, carrying its long-dead archlang-docs.vercel.app website URL; reading that as "the registry never got the updates" is wrong. packages/mcp/; stdio shim over the library; tools compile/describe/lint/validate (incl. intent)/score/repair/fix/suggest/complete + spec/context/schema/intent-schema/grammar resources; SDK dep quarantined here, core stays zero-dep). Its context resources are baked in at pack time and only a version bump ships fresh ones — the staleness itself is no longer silent: CI's builds job runs packages/mcp/scripts/check-dist-resources.mjs (byte-compares every baked dist/ resource against its repo source) and packages/mcp/test/lockstep.test.ts pins the core dep range as a string equal to ^ + the root version, so every core release turns this package RED on purpose until someone re-pins, rebuilds the resources and bumps the shim in both package.json and both of server.json's version fields (don't relax it to a semver-satisfies check). History — the same law, eight releases running, so read the SHAPE and not the roll-call. 0.2.2 is the original defect and the only one whose cause was anything but staleness: it served the v1.19 spec and a v1.19 GBNF that could not decode paper/level/place/zone/polygon/arc, while its ^1.14.0 range happily resolved to a current core — a host got a grammar and a compiler from different languages and nothing said so. 0.2.3 is the only one since that changed shipped CODE: it refreshed all five resources, pinned the range to ^1.24.0, returned every storey of a multi-storey compile in pages[] (+ a level selector) instead of the ground floor alone, and derived the handshake version from package.json (the old hardcoded "0.2.0" drift, now test-pinned). 0.2.4 through 0.2.12 are nine consecutive VERSION-BUMP-ONLY releases — git diff <prev-tag>..main -- packages/mcp empty every time — each existing solely to ship refreshed baked resources, which is exactly the case the pack-time law describes. What moved, in one line each: 0.2.4 all five, for v1.25's site layer and door kinds; 0.2.5 three (spec.llm.md, llms-full.txt, grammars/archlang.gbnf) in v1.26.0, so published 0.2.4 was handing hosts the wrong furniture syntax and a grammar that let a constrained decoder emit uncompilable output; 0.2.6 exactly one (llms-full.txt, carrying W_DIM_INSIDE's corrected fix prose) — the cheapest possible instance; 0.2.7 three again in v1.27.0, all carrying the on <wall> at <pos> expression form plus E_PARSE; 0.2.8 two (spec.llm.md, llms-full.txt) in v1.28.0 for the widened fixture list spec.llm.md interpolates from CANONICAL_FIXTURES, while the GBNF and both schemas stayed byte-unchanged — correctly, because the furniture vocabulary is a catalogue, not a grammar token; 0.2.9 three in v1.29.0, and the sharpest instance of the law since 0.2.2 because the GRAMMAR moved: roof and void are real tokens, so published 0.2.8's GBNF cannot DERIVE either statement — a constrained decoder pointed at it is not merely mis-taught, it is unable to emit the new syntax at all. Both schemas are byte-identical there and correctly so: neither element enters Plan JSON; 0.2.10 none at all, the only instance of that — v1.30.0 changed no language surface, and the bump existed purely to re-pin the range; 0.2.11 four in v1.31.0, the sharpest case since 0.2.9 (the GBNF again: outdoor, fence, site … boundary, door garage, uses garage), with schemas/plan.schema.json's uses enum gaining garage and only intent.schema.json unmoved; 0.2.12 two in v1.32.0 (spec.llm.md, llms-full.txt), the 0.2.8 shape exactly — a catalogue of twenty-six fixture words grew, so the documents that list it moved and the grammar and both schemas did not. Two mechanics worth carrying: measure what moved by unpacking the PUBLISHED tarball and SHA-256'ing each baked file against the repo tree, not by diffing the tag (the tag tells you what the repo changed, not what the last pack shipped); and re-pin the range to ^ + the new core version every release — it is ^1.32.0 now |
packages/mcp/, server.json |
| VS Code extension | 0.21.0 — PACKAGED 2026-08-28 against core 1.32.0, NOT UPLOADED. The .vsix sits at editors/vscode/archlang-0.21.0.vsix (499.18 KB, 12 files) and was verified from INSIDE the archive: Identity Version="0.21.0" Publisher="ChanMeng" in extension.vsixmanifest, packed manifest version 0.21.0 with devDependencies["@chanmeng666/archlang"] = ^1.32.0, ARCHLANG_CORE_VERSION = "1.32.0" in dist/server.js, and the UNQUOTED core-version scan of the whole bundle (the exact pattern is spelled out in the 0.18.0 note below) returning exactly two matches — that stamp and the unchanging "@scope/name:1.0.0" example in the import-diagnostic message, each read in context rather than counted. The v1.32 catalogue is present in the bundled server rather than merely in the repo: "bunk_bed", "pool_table", "range_hood", "bar_counter", "reception_desk", "treadmill", "loveseat", "chaise", "sofa_2", "dresser" and "filing_cabinet" all appear ×2 (the FIXTURE_FAMILIES row and the CATALOG entry), and easedRing ×3 — so hover and the fixture lint rules know the new families' footprints, clearances and flags. What the bundle does NOT gain is completion: the LSP still does not offer the 129 category words, which is this release's first deferred item. The dep-range correction this row made at 0.20.0 stands and was re-checked at three archives: the range IS visible inside a .vsix, at extension/package.json → devDependencies, reading ^1.32.0 here, ^1.31.0 in 0.20.0, ^1.30.0 in 0.19.0 and ^1.29.0 in 0.18.0 — so the old "--no-dependencies strips it" claim was wrong for at least four releases, not one. Read it there as well as in editors/vscode/package.json and via editors/vscode/test/lockstep.test.ts. THREE versions are now un-uploaded: 0.21.0, 0.20.0 (core 1.31.0) and 0.19.0 (core 1.30.0, packaged 2026-08-28 and never uploaded — publishing the npm and MCP artifacts does nothing for the gallery, because the Marketplace upload is a human web step and nothing in this repo performs it). Always upload the HIGHEST, i.e. 0.21.0. The version that is LIVE is still 0.18.0, uploaded 2026-08-26 against core 1.29.0, confirmed via the gallery API (extensionquery, filterType: 7 = ChanMeng.archlang): 0.18.0 is the only version the gallery returns, lastUpdated 2026-08-26T13:36:09Z — re-probed 2026-08-28 at the v1.32.0 prep and still unchanged — three packaged versions have now gone by without an upload, which is the record. The .vsix at editors/vscode/archlang-0.18.0.vsix (463.2 KB, 12 files) was verified from INSIDE the archive BEFORE the upload, which is the order to keep: Identity Version="0.18.0" Publisher="ChanMeng" in extension.vsixmanifest, manifest 0.18.0 with dep ^1.29.0, and ARCHLANG_CORE_VERSION = "1.29.0" the only core version literal in dist/server.js (an unquoted \b1\.\d+\.\d+\b scan of the whole bundle returns exactly two matches, and reading their context shows the other is the unchanging "@scope/name:1.0.0" example inside the import-diagnostic message — scan unquoted and read the context, since a "1\.\d+\.\d+" regex misses that one entirely and flatters the result). The new surface is present in the bundled server, not merely in the repo: "roof" ×20, "void" ×14, E_ROOF_AMBIGUOUS/E_ROOF_CURVED/E_ROOF_SELF_INTERSECT/E_VOID_SIZE ×3–4 each, and the four new fixture families with their aliases (rug/carpet, piano/grand_piano, sofa_l, sun_lounger) plus underlay, so completion, hover and the fixture lint rules all know them. The Marketplace upload is a human web step at marketplace.visualstudio.com/manage/publishers/ChanMeng — there is no CI publish, nothing in this repo performs it, and a packaged .vsix therefore reaches nobody until a human uploads it. The five durable mechanics — these, not the version roll-call, are what a future agent needs. (1) The extension bundles the core at BUILD time, so a stale bundle ships a stale language; editors/vscode/test/stdio.test.ts pins bundle freshness via the __CORE_VERSION__ stamp esbuild writes. (2) "Rebundled" and "packaged" are different steps — npm run build produces dist/server.js, only npm run package produces a .vsix; v1.26.0's prep did the first and not the second, so no artifact existed until someone checked. And npm run package esbuilds against the CORE's dist/, so npm run build at the repo root must run first or it silently packages a stale language. (3) Build and package in the PRIMARY checkout only — now GUARDED, not merely advised (v1.27.0). A .claude/worktrees/* checkout has no node_modules, so esbuild resolves the core by walking UP and bundles the SHARED repo's, and the __CORE_VERSION__ stamp cannot catch it because both stamp the same version (docs/backlog.md item 3.14). editors/vscode/resolve-core.mjs now compares the resolved core's real path against the repo root of the tree being built and REFUSES, naming both paths (editors/vscode/test/wrong-core.test.ts simulates the two-checkout walk-up on disk at the SAME version, so the case the stamp cannot see is the case the test asserts). It fires for a junctioned worktree too, and that is right: npm links a workspace package by ABSOLUTE path to the main tree's root, so a junction moves the walk one step and still bundles the other checkout's core. (4) The dep range is guarded separately from the bundle — editors/vscode/test/lockstep.test.ts (v1.26.1) asserts the range is a string equal to ^ + the root version, mirroring the shim's. The distinction is not academic: the range sat two releases stale at ^1.24.0 while the stamp test stayed green throughout, because esbuild resolves the workspace symlink regardless of what the manifest declares. The guard deliberately does NOT also require the extension's own version to bump — its cadence is human uploads, and coupling them would train people to bump a digit for green. (5) The gallery LAGS the upload, by a varying amount — ~10 min for 0.14.0, ~25 for 0.15.0, ~40 for 0.15.1, but only ~13 for 0.17.0, so the trend is not monotonic. A probe that disagrees with a just-performed upload means "wait and re-probe", never "the upload failed." .vsix files are gitignored, so the artifact is local to whoever ran npm run package, and more than one version can sit un-uploaded: 0.16.0 was packaged for v1.27.0 and skipped, and 0.13.0 once carried three skipped tiers (0.12.0, 0.11.0, 0.9.0) to the gallery in a single upload. Always upload the HIGHEST version. Upload history, verified live by the gallery API each time: 0.21.0 (core 1.32.0) packaged 2026-08-28, not yet uploaded · 0.20.0 (core 1.31.0) packaged 2026-08-28, not yet uploaded · 0.19.0 (core 1.30.0) packaged 2026-08-28, not yet uploaded · 0.18.0 (core 1.29.0) 2026-08-26T13:36:09Z · 0.17.0 (core 1.28.0) 2026-08-26T09:30:34Z · 0.16.0 (core 1.27.0) packaged, never uploaded · 0.15.1 (core 1.26.1) 2026-08-13T00:49:57Z · 0.15.0 (core 1.26.0) 2026-08-12T11:55:36Z · 0.14.0 (core 1.25.0) 2026-08-11T03:47:51Z · 0.13.0 (core 1.24.0) 2026-07-26T11:51:11Z |
marketplace.visualstudio.com/items?itemName=ChanMeng.archlang |
| Playground | deployed, redesigned ("The Compile Boundary" one-light-world UI — see below · TypeScript app · pan/zoom · autocomplete · history · click-to-source · format · repair · error-explain · embeddable embed.html · circulation Paths toggle · Copy-for-LLM · inline diagnostic fixes) |
https://playground.archlang.uk |
| Docs site | deployed, redesigned ("The Compile Boundary" one-light-world UI · compiler-as-hero · VitePress · live editable <ArchLive> examples · plain ```arch fences auto-live · serves /llms.txt + /llms-full.txt + raw /<page>.md + /plan.schema.json + /archlang.gbnf) |
https://archlang.uk |
| Git | main, tags v1.0.0 → v1.31.0. v1.31.0 is the newest tag that exists — main has moved ahead of it with the v1.32.0 release commits, and no v1.32.0 tag has been created or pushed (git ls-remote --tags origin, probed 2026-08-28). v1.31.0 points at 1444b8a and its GitHub Release is dated 2026-08-28T20:01:30Z; v1.30.0 points at 5298b99 (2026-08-28T08:06:04Z); v1.29.0 points at 2b183ba. A v* tag push triggers the tokenless OIDC release workflow |
github.com/ChanMeng666/archlang |
| Dataset | HF ChanMeng666/archlang-repair-trajectories (published, live 2026-07-13 — repair 1200 + authoring 400 rows) — two splits, fully synthetic, self-verifying, CC0-1.0, deterministic from seed 20260712; generator dataset/ (npm run dataset:gen), permanent CI leakage guard test/dataset.test.ts |
dataset/, huggingface.co/datasets/ChanMeng666/archlang-repair-trajectories |
| Tests | 3853 passing, 0 skipped, 195 files — measured 2026-08-28 in the PRIMARY checkout at the v1.32.0 release commits, by npm run build && npm run vscode:build:only && npx vitest run. The v1.32 furniture work added no test FILE (195 both sides) and +180 cases over the 3673 measured at the v1.31.0 release commits, which is the expected shape for a release that grows a catalogue: the new families and the fourteen redraws land as cases inside the existing test/glyphs-*.test.ts suites. editors/vscode/test/wrong-core.test.ts PASSES here, which is the primary-checkout tell — a worktree reading is not the repo's and must never be quoted as one (the last worktree reading, 3849 / 1 failed / 2 skipped, is exactly that shape and not a defect). The suite has no known flake: test/fuzz.test.ts was run five consecutive times at this commit and exited 0 every time (34 cases per run, tallied on exit code rather than on grepping coloured output), the repair() float/printer defect fixed in v1.31.0 staying fixed. Build the VS Code bundle first or the count is different: without editors/vscode/dist/server.js both of stdio.test.ts's describes emit a visible gated skip, and editors/vscode/test/wrong-core.test.ts's "THIS checkout passes" case fails outright in any worktree (resolve-core.mjs REFUSES to bundle there, by design — see the VS Code row). Nothing gates this number, so re-measure it and never carry it forward; never quote a worktree's number as the repo's. (An earlier reading on the feat/wall-joinery worktree read 3406 passing / 2 skipped / 1 failed / 187 files, which is exactly that worktree shape and not a defect. Before the v1.31 work it was 3410 passing / 0 skipped / 187 files at the v1.30.0 release commits. Before the joinery work it was 3222 passing / 181 files at 2b183ba — 3219 passing + 2 skipped, 180 files + 1 skipped, without the bundle. It read 3092/3089 for v1.28.0 and 2804/2801 before that, so it drifts silently between measurements.) Incl. the fault-injection L1 gate, the G1 oracle-isolation guards, the L2 protocol tests, the judge byte-equivalence fixture, the intent-channel suites, the vocabulary-equivalence classification pin, the dataset contamination/determinism guard, and v1.17's CLI-surface suites — FLAG_KEYS↔manifest bidirectional drift, per-command help/examples, filters-never-gate, the context --section splitter-to-generator weld, and test/docs-flags.test.ts, the docs↔manifest gate that fails if any hand-written doc names a flag its command doesn't declare, plus v1.19's drawing-quality suites — fixture orientation, flush placement, the openings render pass, and test/repair-coverage.test.ts, whose postcondition is that every piece a lint pass flags gets a change entry or an unresolved entry, never nothing, plus v1.20's sheet-and-datum suites — test/axes.test.ts (GB/T numbering incl. the I/O/Z skip and the descending-y lettering), test/sheet.test.ts (the paper/scale size table, closed-form auto-fit, W_SCALE_OVERFLOW, and a pin that a plan with no paper is byte-identical) and test/schedule.test.ts (schedule rows equal describe()'s own areas, legend lists only what is drawn), plus v1.21's vertical suites — test/levels.test.ts (either/or level nesting, per-storey id scoping, one-building paper/scale) and test/cli-levels.test.ts (<stem>.L<n>.<ext> fan-out, outputs[]/pages[], --level as a display filter that never moves an exit code), test/vertical.test.ts (registry dispatch for the three new elements, the drawn symbols, the obstruct-except-the-entry-edge nav-grid rule, same-id shaft identity in describe().vertical, upper-storey reachability ± its counterexample, W_STAIR_UNMATCHED ±, and cross-level checkGraph), and test/nav-grid-scale.test.ts (the grid-resolution formulas, large-plan bottleneck discrimination, and the threshold carve), plus v1.22's composition suites — test/zones.test.ts (the byte-identity law that a zoned plan renders exactly like its unzoned twin, nesting/roll-up in describe().zones, --zone as a display filter that never moves an exit code, and the grouped schedule rooms subtotals partitioning the total) and test/place.test.ts (instance id namespacing and order-independence, dotted refs allowed only in reference positions, rotate/mirror as exact composing isometries incl. mirrored door swings, whole-file import … as, and the imported-fix span guard that keeps applyFixes from splicing a component's offsets into the importer), plus v1.23's geometry suites — test/polygon-rooms.test.ts (exact shoelace area and centroid labelling, the byte-identity law that an all-rectangle plan is unchanged, boundary-run adjacency and by-distance opening attribution at any angle, the occupancy/nav grids dropping out-of-ring cells, exact W_ROOM_OVERLAP, and every rectangle-only clause refusing rather than approximating — E_PLACE_POLY, E_ROOM_POLY_SELF_INTERSECT, E_ROOM_POLY_DEGENERATE, W_ROOM_LABEL_OUTSIDE) and test/miter-limit.test.ts (the Paint.miterLimit cap reaching SVG, PDF and the clipper2 offset alike), plus v1.24's test/curves.test.ts (the two-endpoints-and-a-radius arc solve incl. all four cw/major branches and the E_ARC_RADIUS floor, arc-length opening attribution and tangent-derived swings, exact πR² against the 48-gon it is not measured from, the dedup that gives a two-semicircle drum one R leader, and both determinism laws — byte-identical output with the optional clipper2 backend registered and cleared, which is what per-segment lowering buys), plus v1.25's orientation-and-openings suites — test/site.test.ts (the site grammar, the five derived names, the byte-identity law that a plan with no site is unchanged everywhere, and the pin that north is deliberately absent from KEYWORDS.enum so nobody "fixes" the three-of-four asymmetry into the first word in two categories), test/window-facing-probe.test.ts (the outward-face probe, incl. the two courtyard reproductions the bbox midpoint answered backwards, and both tie-break branches) and test/doors.test.ts (the four door kinds, doorSwing() returning null per kind, both E_DOOR_KIND_CLAUSE directions, W_POCKET_RUN ± its reverse-slide fix, and the mirrored-place pin that slide's flip is the identity while swing's is not), plus v1.26's self-description gates — test/spec-forms.test.ts, which makes the agent reference EXECUTABLE (44 documented forms must compile, 19 documented illegalities must be refused with their catalogued code; bound by keyword set-equality and a pure clauseAtoms() so a new keyword or clause with no snippet goes red, with non-vacuity proven by a planted clause and the eight whole-plan spatial codes it cannot reproduce listed in a NOT_REPRODUCED_HERE map that a second assertion prunes), test/gbnf-drift.test.ts's 71-plan agreement corpus (every plan's verdict from the bundled GBNF recognizer must equal compile()'s — the expected column is taken from the compiler on every run, so it can only be greened by fixing the grammar or changing the language; 113/113, versus 24 failures against the pre-v1.26 grammar), test/public-surface.test.ts (runs tsc over src/index.ts and walks SceneSummary's declaration TRANSITIVELY into whatever src/ module declares each type, asserting every reachable name is exported — the requirement list is DERIVED, so a new field whose type lives in an unexported module goes red with no edit to the test), and the align accept-set rows in test/relational.test.ts), plus v1.26.1's execute-the-surface suites — test/arbitrary-plan.ts, a generator that emits valid plans by CONSTRUCTION (the old fc.string() body produced zero walls, rooms, openings or fixtures across 5000 samples, so the flagship determinism property asserted almost nothing about the rendering path; all 3000 new samples render at ~158 geometry elements each, every closed value set imported from its owner, and a planted lowerWalls iteration-order bug that the old property passed 300 runs of fails the new one in 5), test/cli-commands.test.ts + the widened test/cli-batch.test.ts (the three commands no test had ever INVOKED — watch/fmt/manifest — plus runPool/aggregateExit/perFileJson, incl. the exit-code precedence rule that user-source outranks IO; the watch pin is now INVERTED, requiring the child be killed from outside), test/lint-measure.test.ts and test/frame.test.ts (two modules nothing imported: the measured-deficit arithmetic — strongest case being frontGapMm agreeing with frontClearanceRect across all four quarter-turns — and the exact-isometry layer with no epsilon anywhere; 27 of 28 planted faults killed, the survivor provably equivalent), editors/vscode/test/lockstep.test.ts (the extension's dep range as a string equality against ^ + the root version, mirroring the shim's — the __CORE_VERSION__ stamp stayed green for two stale releases because esbuild resolves the workspace symlink regardless of the manifest), and the three former SILENT-PASS gates now required in CI and visibly skipped locally (png.test.ts, both pdfkit gates in export-pdf.test.ts/sheet.test.ts; readme-permalink.test.ts's deflate-raw gate is deliberately it.skipIf and NOT a CI throw, since the Node 18/20 legs lack the capability by design)) + offline authorability eval (26 briefs, judge v2, npm run eval:ci, in CI) and the separately-reported intent-fidelity slice (npm run eval:fidelity, eval/corpus-fidelity.json — infeasible briefs where declaring infeasibility is correct, plus a deterministic judge-free laundering detector; it shares no ruler with the 26-brief rate and never touches judge-fixture.json), plus the 2026-08 cross-surface layer — lockstep drift guards (test/site-lockstep.test.ts token-block/--syn-* byte pins, test/brand-assets.test.ts, test/share-codec.test.ts — the #z= codec's three implementations held behaviourally equal, test/docs-sync-list.test.ts, test/docs-table-pipes.test.ts — the GFM |-in-table tripwire, now scanning docs/archive/ too since its one real offender was escaped, and test/docs-fences.test.ts — the live-fence gate: every published ```arch fence the docs site turns into a running <ArchLive> widget must compile clean, or carry the static opt-out), test/escape-fuzz.test.ts (hostile-string properties over SVG/ASCII/DXF via src/text-safe.ts), and test/example-svgs-drift.test.ts — the gate for the twenty committed examples/*.svg the README embeds, which had NO gate at all and had therefore rotted for months (three of them showed the front page a building compiled before four separate rendering fixes); it re-renders each in memory and byte-compares, and pins the curated README_SVGS list against the README's own <img> tags in both directions, so neither an ungated drawing nor a listed-but-unshown one can exist, plus v1.28's furniture-symbol suites — five per-domain glyph suites (test/glyphs-bath/-kitchen/-bedroom/-living/-misc.test.ts) over one shared drawing contract (a symbol stays inside its own footprint at every aspect and every quarter-turn, two pen weights, no text, deterministic), test/glyph-lib.test.ts (the two laws that let the eight shipped families be re-tagged with semantic line weights without moving a byte: a factory's named weight and its raw paint.width agree, since SVG reads the name and PDF reads the number, and a dashed segment's two dash fields agree — read back OUT of the rendered SVG, never compared to the module's own constant), test/furniture-curves-backends.test.ts (the v1.26.1 lesson applied BEFORE the fact: glyph-lib was about to put the first circle/arc on the furniture pass, so all four serializers are proven to DRAW one by hand-building the Scene — every assertion differential against the same Scene without the two nodes, on a deliberately door-free plan, so a backend that silently dropped them cannot pass) and test/fixture-byte-identity.test.ts, whose three groups carry DIFFERENT promises and must not be blessed alike: group 1 (no furniture, and an uncatalogued word) is PERMANENT — a phase that draws a bed and moves either of those touched the shared path and has a bug, not a snapshot to update — while groups 2 and 3 (the eight shipped families, then the four v1.29 ones) are deliberately re-blessable and each diff is to be read and explained; plus v1.29's test/roof.test.ts (exact coordinate equalities for the mitred offset, including an OBLIQUE ring and a redundant collinear vertex, all seven E_ROOF_* refusals reproduced, both halves of the dash convention, and fmt round-tripping both spellings), test/void.test.ts (the obstruction proved by a counterexample PAIR — the route exists without the void and dies with it — the walkable halo beside it, the pinned decision that it does not touch the room's area, and the POLY-AWARE room attribution that the bbox-derived-position class would get wrong), test/glyphs-batch2.test.ts (underlay proved by its CONSEQUENCES in both directions: a rug under a sofa raises nothing, two ordinary pieces still raise W_FURNITURE_OVERLAP, and two RUGS overlapping each other still do — plus the same plan, same footprint, one word different, walked THROUGH a rug and ROUND a piano across both the nav grid and the per-room flood fill, since two separate code paths must not disagree about what a rug is), test/roof-void-byte-identity.test.ts (hardcoded SHA-256s measured against v1.28.0's src/ by checking that tree into the worktree — a test that compiled twice and compared would prove determinism, not identity — over the WHOLE agent-facing surface: SVG, describe() and lint()) and test/v129-cross.test.ts, the cross-feature gate neither branch could produce alone: both tracks edit the nav grid's obstacle list in src/analyze/circulation.ts, git merged them cleanly, and a clean merge is not evidence — so a rug and a void occupy the SAME rectangle spanning the only route between two rooms, with a sofa control on that identical rectangle to prove the geometry really does seal, full MCP tool/resource/lockstep/fuzz coverage in packages/mcp/test/, VS Code LSP handler + stdio + bundle-freshness tests in editors/vscode/test/, and Playwright E2E: 50 playground cases (playground/e2e/, 6 files) + 63 docs cases (docs-site/e2e/, 3 files, of which 61 run and 2 are gated skips) against the built sites — both re-run green 2026-08-28 at the v1.32.0 release commits with npx playwright test --list in each workspace, which is the only honest count because routes.spec.ts generates cases in a loop and the docs half had long been recorded as "33 specs"; typecheck (noUncheckedIndexedAccess on, full-repo via typecheck:all) + build + npm run lint (Biome) clean |
— |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 1,120 lines · 35,552 tokens per session scan A 3c823bb57f1c
archlang AGENTS.md is an instructions file published in the GitHub repository ChanMeng666/archlang (8 stars, last pushed 3d ago), licensed MIT. It adds 35,552 tokens to every session, about $0.1778 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
claude-react-kit CLAUDE.md
Instructions for wahmoh/claude-react-kit, covering claude.md, commands, replace these with your project's actual commands, architecture — mandatory and component rules.
code-cli AGENTS.md
Instructions for autohandai/code-cli, covering agents.md, project overview, current repository architecture, src/core/agent runtime split (current) and general layout guidance for contributions.
innovation-lab-examples typescript.instructions.md
Instructions for fetchai/innovation-lab-examples, a project described as: 80+ production-ready AI agent examples in Python — build autonomous agents, multi-agent systems and agentic AI with uAgents, ASI:One, MCP, A2A, LangChain, CrewAI, Gemini, Claude and OpenAI.
copperhead CLAUDE.md
Instructions for copperheadhq/copperhead, covering claude.md, what this repo is, sources of truth, workflow (openspec) and architecture (per spec.md §2).
js2 CLAUDE.md
Instructions for loopdive/js2, covering js2wasm, answering style, running tests, dev scratch and working in worktrees.
free-ai-gateway AGENTS.md
Instructions for zaber-dev/free-ai-gateway, covering 🤖 free-ai gateway - agentic development guidelines, 🏛️ monorepo architecture & package boundaries, 🛑 strict architectural rules for agents, 💻 essential developer commands and build all packages across monorepo.