Research: E:\gh\axiom — lay of the land (2026-09-18)
Caveat up front: this session has no terminal tool, so git status, wc, and npm view could not be executed. Git state comes from reading .git/ directly; npm state from fetching the registry document; LOC are approximations from files read. Each claim is tagged VERIFIED (read it) or INFERRED.
1. What .axm expresses
Section titled “1. What .axm expresses”Source: docs/syntax_spec.md, packages/axiom-core/src/ir.ts, examples/blog.axm, axiom/notes.axm.
- One file = one
agent "<name>" { … }block; the parser only extracts the first agent (parser.ts), IR allows an array. intent "<free text>"— a natural-language sentence, not interpreted by anything.constraints { lhs op rhs, … }— pure comparisons (==,!=,<=,>=,<,>) over identifiers likelatency_p50_ms,monthly_budget_usd,pii_leak.capabilities { fs("./out") net("http") secret("X") }— kinds limited tofs|net|secret|ai|compute, optional?suffix.checks { policy|sla|unit "<name>" expect <expr> }— expr is a mini-DSL evaluated by@codai/axiom-policies(comparisons +scan.artifacts.no_personal_data(),http.healthy(url)).emit { service type="web-app"|"api-service"|"docker-image"|"batch-job" target="./out/…" ; tests …; manifest target=… }.- Validator only checks capability↔check consistency (
http.*needsnet,scan.artifacts.*needsfs) — validator.ts. - IR = Zod schema,
version: "1.0.0"; docs/ir_spec.md is 4 lines pointing atir.ts. - Parser is regex/
indexOf-based, no tokenizer, no nesting, no error positions; both inline (check policy "x" { expect "…" }) and block syntax are accepted. - The spec says “no technology names appear in the language”, but the language is effectively a config file selecting one of 4 hard-coded emitters;
intentandconstraints(other than viachecks) influence nothing in generation.
2. Packages
Section titled “2. Packages”| Package | Version | ~LOC (src, approx) | Does | Emits | TODO/stub/placeholder hits |
|---|---|---|---|---|---|
@codai/axiom-core |
1.0.1 | ~250 (ir 44, parser ~170, validator 33) | Zod IR, regex parser, capability validator | — | 0 |
@codai/axiom-engine |
1.0.24 | ~1,600 (apply ~320, fs-axiom ~450, generate 180, check ~220, reverse-ir ~200, axpatch ~190, artifactStore, manifest, util) | generate (calls emitters, sha256 manifest, inline content ≤256 KiB), check (metrics from artifacts), apply (atomic write + verify, fs/pr mode via git), reverseIR (scan out/), diff/applyPatch (JSON-patch-ish) |
— | 1 (generate.ts:114 placeholder README for unknown subtype) |
@codai/axiom-mcp |
1.0.24 | ~550 (mcp-stdio ~420, server ~130, postinstall 40, fs-probe-write ~80) | MCP stdio server (axiom_parse/validate/generate/check/reverse/diff/apply) + legacy HTTP server on :3411; postinstall writes ~/.mcp/servers/axiom.json |
— | 0 |
@axiom/tests |
0.1.0 | ~4,000 across 27 test files + run.ts smoke |
vitest suite | — | 4 (all it.skip + TODO in golden.test.ts:107-166) |
emitters/* (4 published + webapp-pii) |
1.0.1 each | webapp ~430, apiservice ~400, docker 20, batchjob 18, webapp-pii 15 | Hard-coded template strings | webapp: Next.js 14.2.7 + React 18.3.1 App Router, inline styles, fetch('http://localhost:4000/notes') CRUD (webapp/src/index.ts). apiservice: raw node:http in-memory notes CRUD + /openapi, no framework (apiservice/src/index.ts). docker: FROM node:20-alpine + console.log('placeholder') (docker/src/index.ts). batchjob: console.log('Batch job placeholder') (batchjob/src/index.ts). No Hono, no Rust, no Drizzle, no Tailwind — it is one notes app, always. |
2 (docker, batchjob literal “placeholder”) |
@codai/axiom-policies |
1.0.1 | ~330 | Tokenizer + evaluator for check expressions; PII regex (email/phone/CNP) | — | 0 |
axiom-vscode-bridge |
0.1.0 | 6 | activate() logs a line — extension.ts:3 “Skeleton” |
— | 1 (skeleton) |
Also: webapp-pii imports @axiom/engine (wrong scope, webapp-pii/src/index.ts:1) — cannot build. Profile-conditional output is limited to: edge → runtime:'edge' + port 8787; budget → drop @vercel/analytics/pino (webapp:376-384, apiservice:365-368). check.ts “real metrics” are cold_start_ms = constant per profile (50/100/120) and no_pii_in_artifacts = true hard-coded (check.ts:97-105, check.ts:196-197).
3. Tests & CI
Section titled “3. Tests & CI”- Framework: Vitest ^2 in
@axiom/tests(27*.test.tsin packages/axiom-tests/src);node:testin policies/test/evaluator.test.ts (14 cases). Rootpnpm testruns onlytsx src/run.ts— a smoke that parsesexamples/blog.axmand generates intotmp_artifacts/(run.ts); vitest is a separatetest:unitscript. - Coverage: ~85% of tests are about
apply()filesystem semantics (POSIX paths, traversal, backslashes, repoPath resolution, cross-drive, long paths, atomic write, concurrency, inline content). A handful covercheckAND-aggregation and determinism; 1 file covers the parser; zero tests forreverseIR,diff/applyPatch, the MCP server, or emitter output content. - golden.test.ts reads
../../../out-edge/manifest.jsonfrom the repo root — depends on committed build output; all sha256 fields are''and hash assertions areit.skip. - CI: two workflows. .github/workflows/axiom-conformance.yml (matrix ubuntu/windows × node 20/22/24) — its “Operations Smoke Test” step is
console.log('✅ …')× 5 with no assertions (lines 47-58). workflows/ci.yml is in the wrong directory (not.github/), so it never runs.test-output.txtat root is a captured failing vitest run.
4. Uncommitted state (INFERRED — no shell)
Section titled “4. Uncommitted state (INFERRED — no shell)”Could not run git status. Evidence: .git/refs/heads/main = c7298fe (“fix: real FS writes … v1.0.20”), no tags, packed-refs absent. The npm registry shows 1.0.21, 1.0.22, 1.0.23 and 1.0.24 all published with gitHead: c7298fe — i.e. from an uncommitted working tree. So the ~30 changed files are almost certainly the entire 1.0.21–1.0.24 body of work: packages/axiom-engine/src/lib/fs-axiom.ts, packages/axiom-engine/schemas/*.json, packages/axiom-mcp/src/tools/fs-probe-write.ts, the 5 tests listed in CHANGELOG.md:16-21 (+ apply-enhanced-fs, apply-repopath-dot, apply-same-drive-abs, apply-absolute-repoPath, apply-reject-backslash-paths), version bumps in axiom-engine/axiom-mcp package.json, RELEASE-NOTES-1.0.21..24.md, TEST-MATRIX-REPORT*.md, HARDENING-IMPLEMENTATION-SUMMARY.md, CHANGELOG.md, README.md, test-output.txt, debug-manifest.cjs, test-*.cjs/.mjs. Run git status --short to confirm.
5. Versions
Section titled “5. Versions”- packages/axiom-mcp/package.json:3 → 1.0.24; depends on
@codai/axiom-engine ^1.0.24. - npm (VERIFIED via registry fetch):
@codai/axiom-mcpdist-tags.latest = 1.0.24, 25 versions 1.0.0→1.0.24, all published between 2025-10-20 11:55Z and 2025-10-21 07:03Z — 25 releases in ~19 hours, bydragoscatalin. 1.0.24 unpackedSize 37.1 kB, 7 files. Published README still says “Version: 1.0.9 — CURRENT”.
6. Quality red flags (honest)
Section titled “6. Quality red flags (honest)”- Fabricated/decorative validation: HARDENING-IMPLEMENTATION-SUMMARY.md:5 — “DELIVERY STATUS: ✅ SUCCESS … Test execution skipped per MODE: TOOL-ONLY”, while RELEASE-NOTES-1.0.24.md:5 says “Status: ✅ Production-Ready”. CI smoke step is pure
console.logcheckmarks. Golden hashes empty + skipped.check.tsmetrics are constants presented as “REAL enforcement”. - Root litter: ~25 summary/report markdowns (FINAL_SUMMARY, FINAL_VALIDATION_REPORT, PRODUCTION_READY_SUMMARY, PRODUCTION_VALIDATION_REPORT, PR-SUMMARY, PR-FINAL-SUMMARY, IMPLEMENTATION-COMPLETE, GO-NOGO ×3, PROOF_1.0.17, VALIDATION-REPORT-1.0.18, RELEASE-NOTES ×7, RELEASE-ANNOUNCEMENT ×2, TEST-MATRIX ×2, HARDENING…, REVERSE_IR…). They contradict each other: PR-SUMMARY.md:3 “18/33 passing”, PR-FINAL-SUMMARY.md:8 “31/31”, later notes “4/4 tests passing (100%)” for a suite with 27 files. Plus committed build outputs (
out-edge/,out-budget/,test-results/,tmp_artifacts/,sbom.json, tarball sha256) and scratch scripts (test-json.cjs,test-posix.cjs,debug-manifest.cjs,test-generate.mjs) at root and inaxiom-tests/. - AI-generated smell: emoji headers, “Confidence Level: 95%”, “TOATE CAPETELE ÎNCHISE”, mixed RO/EN comments, “CRITICAL FIX … defense-in-depth” that does
.replace(/\\/g,'/')three times in a row (generate.ts:135-176),console.erroron every step ofwriteAndVerify(~25 log lines per file write) shipped in production code. - Hardcoded paths:
TEST-MATRIX-REPORT-v1.0.22.mdembedsC:\Users\vladu\AppData\Local\Temp\…; README/RELEASE-NOTES useC:\\Users\\user\\project; generated webapp hardcodeshttp://localhost:4000. - Broken build hazards:
webapp-piiimports@axiom/engine(nonexistent scope);workflows/ci.ymlmisplaced; two pnpm versions between the workflows (9 vs 10); root devDeps zod 3 / TS 5.6 vs golden stack. - Publishing hygiene: 1.0.7 shipped
workspace:*deps (RELEASE-NOTES-1.0.8 admits it); 1.0.3–1.0.6 shipped 196 files / 27.8 MB (cache included); postinstall writes into~/.mcp/servers/unconditionally.
7. References to codai / brivio / metu
Section titled “7. References to codai / brivio / metu”codaiappears only as the npm scope@codai/*, thepublisher: "codai"in vscode-bridge, and$id: https://axiom.codai.dev/schemas/...in the two JSON schemas. No import of the codai gateway, nocodaimodel name, no AI call anywhere.brivio,metu,money,mmo,vmui: zero matches outside the word “common” false positives. No integration with any of the user’s other repos was planned or scaffolded.
Repo note saved to /memories/repo/axiom-overview.md.