{"_id":"o-coding-navigation","_rev":"55-1a0feb5bf766749f0036eaf9bc386169","name":"o-coding-navigation","dist-tags":{"alpha":"0.1.0-alpha.2","beta":"0.9.0-beta.1","latest":"0.9.0-beta.1"},"versions":{"0.1.0-alpha.0":{"name":"o-coding-navigation","version":"0.1.0-alpha.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.1.0-alpha.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"4385d21882e3cd8b1b86eabd677be51c8b37e364","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.1.0-alpha.0.tgz","fileCount":230,"integrity":"sha512-8TMo83E+JIXlCvHiCkHmF9VTpoe+LbbcWmrOuHhrSCZnkk1e4ySFudxVJWEEz6sn18ta7W/Ztw3V5yIdG5GaEg==","signatures":[{"sig":"MEUCIA3xu+M95YqWp2ubihBWLXJUBd1KShAZyLBeePSsGIdhAiEAvfgvK2zBp0s9pis6GK+AkL/Sz60jqwlVXVtIOt8tfEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317604},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6b6a415a0934a5fbab5b9c9de0ca716faa7d485d","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:flaky":"vitest run --config vitest.flaky.config.ts","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.1.0-alpha.0_1777553299353_0.4580099289527342","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.1":{"name":"o-coding-navigation","version":"0.1.0-alpha.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.1.0-alpha.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"79cb3d0326a553bf1a7439564988532dc92deadd","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.1.0-alpha.1.tgz","fileCount":230,"integrity":"sha512-FBA7j++/9DPopWBUS5/Hu7PeiY0fNVm5ftfDV5YDmqV4g6FoAkodr3+g9h+Xx56MQkLP7722Pm6Zq+8vVie3OQ==","signatures":[{"sig":"MEQCIBAhOV0X2BmuovCpFZih0nEfx79G+4iFXlTnrjIaS3BvAiBOgl0m1N0BiFRBIYAQ8dH38kiKyoGUGbi/o253pX7QiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":323810},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4d14c859c198f705398d4dc86a2f5f63607817d2","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.1.0-alpha.1_1777557642184_0.024913595562676694","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.2":{"name":"o-coding-navigation","version":"0.1.0-alpha.2","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.1.0-alpha.2","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"a3cc23544223bd3cf3bfb292318a41ec75ed2882","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.1.0-alpha.2.tgz","fileCount":239,"integrity":"sha512-ptu3GmEp08gVXk/H7wnB/OIIuefx+LUZcE7rEQ4K6ggMfWLiB+GX9z+iVissSciPZw67bCmkVpcr1y6kzU3+lQ==","signatures":[{"sig":"MEQCIFTbfQVkCTnRQopg3CoPQmrpLm0f3crjRS3uH8/Gv/uYAiApUTWoozg+EJYnREp/DBvWLGH1THnEQ0FMhWJrhe994g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355817},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d050f71a4fc389f978644e0b65143b70133fb32a","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.1.0-alpha.2_1777615823412_0.7452691747575837","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.0":{"name":"o-coding-navigation","version":"0.1.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.1.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"758487bee7cb8d50e1d1c581aa349ca59a37eafd","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.1.0-beta.0.tgz","fileCount":239,"integrity":"sha512-jl6DmO1Y7WZv08V8diumb3VVvLDWjeh2t5L3IMBp72rCfqMDtrjbwuaUvvPvhT8SX9WmJEfb6p9Y9zvVvSe8yw==","signatures":[{"sig":"MEQCIBztpaNaps6M1bZV1sTIvnWFfK1UEVrJQ/SwlU/mxmWmAiBbLhnZBNdtrzTXn0D+pZgPN2hlRVxRcv5TmcP0gzov/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358115},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c7589bd0aa2815aad27b5b9eaf7cbaeca90742df","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.1.0-beta.0_1777683458057_0.8465148782375267","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-beta.0":{"name":"o-coding-navigation","version":"0.2.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.2.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"54d3d45d6273948dc86a2abc700a14181dffa628","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.2.0-beta.0.tgz","fileCount":299,"integrity":"sha512-THOgWZ2sj5Fg0LpzX41o3Y42mf8/Itze1twCSGAwS0w6hYB85KkYvBnEGH1/RLWadaXkcqLcJZkfyoKejtV1ug==","signatures":[{"sig":"MEUCIQC6TUXltH0ZHCAWtheFpMlXOIJH+660yXpy/xgfJX0XewIgT7/3Ua0GJD7RAuvWhViCL1+G+wYkaUiGsrqy2oHtVmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":513913},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a07a3610ab801de83a491e8724c8f45bae0ba36c","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.2.0-beta.0_1777730750995_0.8699252315384347","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-beta.1":{"name":"o-coding-navigation","version":"0.2.0-beta.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.2.0-beta.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"96e711a843f467488a1cbf4f68ce497090781453","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.2.0-beta.1.tgz","fileCount":299,"integrity":"sha512-FpKnzZIGSGK6mM8ArulmkEWI/01oWreSJxc0FsyyMZM/Kp9R7BMLZg8GAyZ5rGp8T3deMEEcOR5dS4Cx9pg5Cw==","signatures":[{"sig":"MEUCIQCOBb6/12QkW3MaInc1wqZcUOD6pTd/JwYDc8VoZ5c0CgIgANyqP5QBPjsbe8x2g4Pjpt1cbX0pZzD8dZif6r2uRdo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547879},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a3276f2469ceb7e1c58dd0d19e1563c7817593b5","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.2.0-beta.1_1777741774343_0.3113887075810635","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-beta.2":{"name":"o-coding-navigation","version":"0.2.0-beta.2","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.2.0-beta.2","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"c07cc791975b17fad813d96ba3f14a39b37cb3ff","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.2.0-beta.2.tgz","fileCount":422,"integrity":"sha512-JROCD30TOHpFEKyniHvg5LEatrfVqXszCeYo/gSaq4vzv8gVYtXN87vONu6ANEHPeNliwI72HC39QC0H4T9roQ==","signatures":[{"sig":"MEQCIEJeW3DdoHyqLrMNMtPObACjQO0pJMpKv3Gex7XoKFqQAiAguHfTBFg+PR7SKTYnrmb2Hi3LcnqcMsEecRin0jGQYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":946952},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4d40bddd58fbcc9ef79d3b82227c32e7bf651fd9","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.2.0-beta.2_1777989110572_0.36489469052940904","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.0":{"name":"o-coding-navigation","version":"0.3.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.3.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"4e6fdf2d313b35cfeda1f697692151a4e6ee3bf3","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.3.0-beta.0.tgz","fileCount":461,"integrity":"sha512-IGuaMg1N6adqCSmL2X36hR266DgYQaOiJFTgk9z8Ogkf0FKIzgKGT5EGrQUTzibC8uB/4/r3I2/pDyGvmu4nhw==","signatures":[{"sig":"MEYCIQCouim5CRXIhvFvUfQmX83uQyUh9BCqWHaqoFX6dIYgUQIhALYPUK93sQMbqncMYDAxHyDbhrEgEQpIf/wpPuv6oY/W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1016111},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"da3c093f67e0457bb3aaa85e7ccbdbc89435c36b","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.3.0-beta.0_1780510021859_0.8872718803890618","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.1":{"name":"o-coding-navigation","version":"0.3.0-beta.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.3.0-beta.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"48ef8ab22b6435f492f9052f7d0c6183747362a0","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.3.0-beta.1.tgz","fileCount":461,"integrity":"sha512-PJYcoXrJV3sDzHFqGBSmnpHpqaVC98nvzsMYQUfDZbfmUGPhK0zl6id9T0d4c9kWDSbzRxYfM/9BZxmYol+RTg==","signatures":[{"sig":"MEUCIQDVX1/adSBxVgbBmy1d/yN0QS1rhotzhMz/i4VURZzqggIgThOgJ9+DMuOxAjjbeLGYaIoDD4LUEc7LzA4dVRk+ufs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1020409},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"dcc1232982968b87f7a6f9c5ac2aa8ca48de350c","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.3.0-beta.1_1780553117508_0.9085758667129538","host":"s3://npm-registry-packages-npm-production"}},"0.4.0-beta.0":{"name":"o-coding-navigation","version":"0.4.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.4.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"568b5c674d509918f5a89a2273d9b5bc7b03eabf","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.4.0-beta.0.tgz","fileCount":554,"integrity":"sha512-s0puZ7C5Z+bDPNmMqPT7FrfCk6CfSPvoE/u9JydOpF0oaz44escW0R95c/xlNBfH+1HLy5N2+tx0A7AlPP2dWA==","signatures":[{"sig":"MEUCIQCVVpo/rxV7G34NsZSB/lwemnnuM4FKv5Yh346XsQoVQwIgHO1Yr7X9zqb5CMENm6B/iXTTS1ETrgipwaBUaEe/DXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1338857},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5dada8d6eb07d03da8252ac2d96ecc58fd0573b0","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.4.0-beta.0_1781189170789_0.807102419000322","host":"s3://npm-registry-packages-npm-production"}},"0.4.0-beta.1":{"name":"o-coding-navigation","version":"0.4.0-beta.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.4.0-beta.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"c70b8c350de3a6ca2c2cdd49535a8960b8064599","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.4.0-beta.1.tgz","fileCount":554,"integrity":"sha512-yRmph9UrfDIfx6RqPf+6PoqkCf9QH1ECp50BylzPQaWVOcVku0fe0VDqHQNzYjYTukbWH1AML6o0xrPF89IgaA==","signatures":[{"sig":"MEUCIQDgnipmoWsDKVOi9AmoIkthxN5vzcnGCEAxh+srxeBDPAIge2x23RgGDRisgvxsSgLrUHmJ/SO05O6dBVlMA3Xv7p0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1338857},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"61336d0bf325bed4915d5c5a7d0445bfec451df9","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.4.0-beta.1_1781190277534_0.7556912073814499","host":"s3://npm-registry-packages-npm-production"}},"0.4.0-beta.2":{"name":"o-coding-navigation","version":"0.4.0-beta.2","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.4.0-beta.2","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"fb498cc713f0bb6a7007a0e1158798a73aafe639","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.4.0-beta.2.tgz","fileCount":584,"integrity":"sha512-ufosbcQfJuQ+pMcqQQ5Qubv0DwHTXsoCSIXR3NAPlelB6gZHgNV+Q9ggGLAQfE+olPaVBH8T6+Wzq7ynlOKrrg==","signatures":[{"sig":"MEYCIQCR/vGOuERLDjavevLhWuUb/ozV8nRLXflzT6KRD/jVWwIhAOmOBUBcz/SnFNK3YCowcJoXHUuHNp5hG3KDgKS9tXEq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1391080},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"516600cb66ecc8d7cd3007f7de8d0b9c99f6a70f","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.4.0-beta.2_1781197880564_0.4121522110149547","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-beta.0":{"name":"o-coding-navigation","version":"0.5.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.5.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"7b83802be60110369b1d1f9b0a606e65f49ee2d8","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.5.0-beta.0.tgz","fileCount":635,"integrity":"sha512-YWyIJGKWOLzJIMpbweBcussFSEec0dIYmFVTwSmDdu2h9a+mHq40LtJsNbgab/wRPN6h2UwagUKSbQm6tLItgA==","signatures":[{"sig":"MEUCIA+o+iRENIOlWpBMe1KrgR8ENU5jRZUc7nb3sK9lByKeAiEA4Si+POKPP9UyhGjcpuDsdWHnPwHKA90EUxfnwgUIZAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1514198},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f8933a03580c43b0388997756d614e5161617923","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.5.0-beta.0_1781204917546_0.650293219997796","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-beta.1":{"name":"o-coding-navigation","version":"0.5.0-beta.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.5.0-beta.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"814771cbbc52d61366cd1e415f06cc8b5550e5fe","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.5.0-beta.1.tgz","fileCount":653,"integrity":"sha512-mPwnl+ulslGqbZzqvrWNDxBCO5WAiANCe1Dinh8HHn9TF4giXtbVgDei6I06aBapJMe1N1SyrAKJfLnqcz5/kQ==","signatures":[{"sig":"MEQCIC40W/rCJQwxGIa5eK2lFeJOmhlIwNf0bhWxz37cvJFTAiAzBBjeCyeVCpf50dV7Cig7CLCNhLCEklFGFIVDn413nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1558576},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"33d4ba28bf259044f3e5d2776a5f17179ab962aa","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.5.0-beta.1_1781267023691_0.5898852047385528","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-beta.2":{"name":"o-coding-navigation","version":"0.5.0-beta.2","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.5.0-beta.2","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"1c21e544cfef4c35e51cdd4499ea6fa8788bb231","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.5.0-beta.2.tgz","fileCount":653,"integrity":"sha512-BSfwTaA10+CN5Spmfonnnuwb3lCKLZR47A+SBqRedmR+y/e07XII0xJ3fPe7yMskVlUpQcOeogy29ees24RSFA==","signatures":[{"sig":"MEUCIQCzgqqT9u3s6ZjzAPqVnhPLxOcvbC4z59yBRVi/9IEtdAIgUQMOWQRWa1HhY8YFva4HtNeF43BQnHXZdd5uQGjhLMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1559502},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5a9f013b8812afc0774c29737f33b0f4db010fcd","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.5.0-beta.2_1781270615278_0.18212763233885187","host":"s3://npm-registry-packages-npm-production"}},"0.5.0-beta.3":{"name":"o-coding-navigation","version":"0.5.0-beta.3","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.5.0-beta.3","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"5507a8cca78aa7ff8c2e5998db5515c566e8bc7b","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.5.0-beta.3.tgz","fileCount":701,"integrity":"sha512-aKSOUwm3qGKYY7YW5tcx9H17xWA55bqg846zL2ZO9xgK6vdHC0tBziLVrBYTXQO1wKq650ZZg8/4jAcoGSUgLg==","signatures":[{"sig":"MEYCIQCrfFZOg4KU7p+9eB5rDEp4f6jlOEZXVbk570mn7sJd9gIhAIEL17sfiiJhLZxFw9ymOFUBBdccwTEU4RAP/vlHTaqM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1663477},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ed69a94219a53a7a39e464ff9dfb6d315060dc31","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"deprecated":"Transient version number — renumbered to 0.6.0-beta.0 (Auto Mode is a minor bump). Use o-coding-navigation@latest.","repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.5.0-beta.3_1781332204765_0.16822656881935627","host":"s3://npm-registry-packages-npm-production"}},"0.6.0-beta.0":{"name":"o-coding-navigation","version":"0.6.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.6.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"2db6daf283946247b7ad8d6358f6e1d472f4ffa5","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.6.0-beta.0.tgz","fileCount":701,"integrity":"sha512-1VyjOy/z/IlAOgEPyi8MaZDJG2XLnqg+pFvfolKMDRvlM+nHtO8A3M22HZSCrCt2Ex5cumdLzPXYaWMCMSTFBQ==","signatures":[{"sig":"MEQCIA36HuwhKJzjMSjs2Qo9PVpVbZbnzD35T7mwQwkwx7v0AiBI20cX3MxNZxz2svYmhPOt/WnwKXzqURz+gLggKfeTKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1664076},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c5792065f8c6a92742c52a99b89e254effca3382","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.6.0-beta.0_1781333356620_0.5894228391982226","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.0":{"name":"o-coding-navigation","version":"0.7.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.7.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"6c1eda018e1fab21801dd5443379b072b72e9739","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.7.0-beta.0.tgz","fileCount":731,"integrity":"sha512-RY4w4A1A7O/Tfa4/b3LKafDIoHyZ3qfgfDDILfDXqj1ot2GrWP0wzJFBwXWSWnask1ZDQipcrGl/Vb9mvZDxOg==","signatures":[{"sig":"MEUCIQD/4hftOyC6WMdaRTZ60zp5hXHJjXVbkOoPTF8A2/GuIAIgQTVwwUBqixk+s4xNdblYG1xK+SBf+U1uNGLtWVwdNE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1753995},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6a09276d0ee8e150188c7671ade78be4a126ffcb","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.7.0-beta.0_1782622656781_0.23568274174574366","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.1":{"name":"o-coding-navigation","version":"0.7.0-beta.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.7.0-beta.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"d2e910028154a3f2fb5621e46cb30cebc854a30d","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.7.0-beta.1.tgz","fileCount":731,"integrity":"sha512-KoKFZaKExJICAOJRiT5xmGfaI4ccoS5ina3RDe8RLK4jSSm0i5Paqatrl6dPou2DUv/8anxGI86EigVF1M714w==","signatures":[{"sig":"MEQCIEAuNzWLaukTxJRQY7FkNdZoiH4MtD/SgetCwt4Av91+AiBMJIHQIHjQby5zSQ1XQJh/xQDQncvlnji4JsIX1JyOwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1758244},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ebd1f922b93bfe117298b19e3c591e6d773c69ea","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.7.0-beta.1_1782754055717_0.9304215747839353","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.2":{"name":"o-coding-navigation","version":"0.7.0-beta.2","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.7.0-beta.2","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"6f24dacd302e6c49a8b794531a0b395e9f841283","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.7.0-beta.2.tgz","fileCount":752,"integrity":"sha512-zUNLTE5bNbcLsatfofozK6bPhov2PL+7ciMD3hc3LToDA8vk59fM6ZH3HdcTCTEnPN6gPsGLnBeMUY4AsAsIvw==","signatures":[{"sig":"MEUCIBgsxYJpjFrxmqMW8v1FKLGZ1uPM3YyI4E9NLJRea0wsAiEAqc1koZeqftqZkYABdZ6lGAe56uqaDed2gUADPWaZ5m4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1773558},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f06669d4badc70428f1fe55f0b48e9f6b8d2a0b9","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.7.0-beta.2_1782805144397_0.5310965278282624","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.3":{"name":"o-coding-navigation","version":"0.7.0-beta.3","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.7.0-beta.3","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"2e5669f9ac0c830da6c66187bc9087c0d5647376","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.7.0-beta.3.tgz","fileCount":755,"integrity":"sha512-kwIRbjw8px33/Hwl5z/PK6x9zNarrqngDPWjmcJrAsd+wLXEDtAhPcsco1lHJtRTpFPfAKMYOt4s/sDglq/b6g==","signatures":[{"sig":"MEQCIApP9uIH6QT6RE1zLQgzpM9MJKArLEJJRCx9dj2m3OasAiAsQxU2+EOVDrDRKBtQGqpf/+kR1etWVPXLW4mPs/S2XQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1841654},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e445f6432bbfa3a577dc4e6492c664b9b3ef48ab","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.7.0-beta.3_1782822802261_0.7709486485718537","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.4":{"name":"o-coding-navigation","version":"0.7.0-beta.4","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.7.0-beta.4","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"5989fa392f20b126107e7598aec659f13cf32c59","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.7.0-beta.4.tgz","fileCount":755,"integrity":"sha512-fyVlxAy4UgSuG06LmRv/SDwTH3GR2VlegKrFPVPzUfh9234tlKALU67gcbZQ5w1cAti8SJDJ0dYsubpIr+vbKA==","signatures":[{"sig":"MEUCIDvNHUQzIax+ypGpW5Bldjd57YRUQQ68DJl9raGsWc57AiEAhjTkZE0OaR6nAqDlGjo3A7RSbMPS597xpO+pt4E82KM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1842111},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"89e0d290b242a1f8d716c8f195963dbf9b21d93e","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.7.0-beta.4_1782827333584_0.7188289155361434","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.5":{"name":"o-coding-navigation","version":"0.7.0-beta.5","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.7.0-beta.5","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"0dbb0535d8285683ef5c9225b13d83fae55367d6","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.7.0-beta.5.tgz","fileCount":755,"integrity":"sha512-60qoB65yBI1uQkD5s8x1AMMP37yx/nmsYc9SCfaSh4X2o/Lvwe6YecLASM1sAxeyXnDYeDGjy66T7HlRhlB4iw==","signatures":[{"sig":"MEUCIBSL//oiZ+BEQXUxceEcfhLhP0v/vah3QhFKMP0dwK2cAiEApZazWwcR6ffNeCc+hAdru5nL9A0HrgSxXGlubpNt5Qc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1842688},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4efa6f20df2c5341e0989f12767979d64ef11dd3","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.7.0-beta.5_1782829215085_0.017883951956761956","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.6":{"name":"o-coding-navigation","version":"0.7.0-beta.6","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.7.0-beta.6","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"24818bb6e86f18423c502768ea45f0aba91ef9ec","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.7.0-beta.6.tgz","fileCount":755,"integrity":"sha512-lf0XABz0RRxKVWgHV/L9/MRysd3FBrHijRP0piS4qXuS1VnA4/IKX/elKHtoWqfPgPjtSP0HPrDKEuTSLdN0Tg==","signatures":[{"sig":"MEQCIBl9/5fLiyvre13bky77vJ9QfG1K0urxjE/oI9j3YfUsAiA88oXBY8fOJj+YB7Ets+m6DzuAyIbSjJfFDzgixzMFAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1844591},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"28015cc87ee1bf0593622055515970af5d05bbb7","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.7.0-beta.6_1782831189415_0.5303926679815281","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-beta.0":{"name":"o-coding-navigation","version":"0.8.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.8.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"6abc505f71cf40ae373459813a2720642848d537","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.8.0-beta.0.tgz","fileCount":794,"integrity":"sha512-8w6j9FQkbTjtFsY711mWkO+1b6GYsV8VimvlW70qQnKmAJSnZDr7jco70QpZzqNYTro6ezUMWMr40j7PUm1wgQ==","signatures":[{"sig":"MEUCICGrpItnNPNfKEeTlrA8OQrAd/oFwojEHJVnmZLss4rqAiEA0CkI9UM4Fh6WeOC40xPuZR3YDwustrFBhxSJeLwBK0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1912390},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0af60fe9032ea8d0755365dee6a2250f36cb5dbb","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.8.0-beta.0_1782969340219_0.005521795853824951","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-beta.1":{"name":"o-coding-navigation","version":"0.8.0-beta.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.8.0-beta.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"5e4cf1f4dfd7236f3f58a338c368eb581cf599bc","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.8.0-beta.1.tgz","fileCount":905,"integrity":"sha512-+lRECZ8oPMYARofR3r5+UI9zKVGvEimlsA/b7rQJwfmhgEeWNQnFeh/31UDLSNaKfJEz84RinyWohiiL2+0jAQ==","signatures":[{"sig":"MEQCIBBuScLpCLgA8ti8yYah4/vEi9ynwewcQscYXmdiJTr9AiA40oYKV0pG8suB3yNUMhsZFE/RsH+Wnq1flKKcQWWltA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2145338},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"69cb82eded6b2c64fc24ba528e9a14c24aa8cb16","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.8.0-beta.1_1783265694559_0.4381404346837485","host":"s3://npm-registry-packages-npm-production"}},"0.9.0-beta.0":{"name":"o-coding-navigation","version":"0.9.0-beta.0","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.9.0-beta.0","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"0954978bc87dc0a58e97c2bc58d02204396558cb","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.9.0-beta.0.tgz","fileCount":905,"integrity":"sha512-MHa45kgXUzxTqLkIZvdjTqOpPjVwgD2zwLL5IVslxPuia4/FhRAB45yNRg+Gz8nWvQNiljf1O6+yId6bZgWduw==","signatures":[{"sig":"MEUCIDm0XbMN7yWMwv0JoXjdyODiFqLiAHKo6l3GV9f3dYVaAiEAzyuazBKPYmrrXHNQfa7Yi9yDW8kSTpJMVnHhhqiHyaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2203852},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8ba8eae9ad68fbc815874ba1e184d7daa39efb7c","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.9.0-beta.0_1783355620553_0.006854903557543368","host":"s3://npm-registry-packages-npm-production"}},"0.9.0-beta.1":{"name":"o-coding-navigation","version":"0.9.0-beta.1","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"license":"Apache-2.0","_id":"o-coding-navigation@0.9.0-beta.1","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"bin":{"ocn":"dist/cli/index.js","ocn-mcp":"dist/mcp/index.js"},"dist":{"shasum":"e5eb3f6c9ca00ee15eab75625f78253ede7baa82","tarball":"https://registry.npmjs.org/o-coding-navigation/-/o-coding-navigation-0.9.0-beta.1.tgz","fileCount":917,"integrity":"sha512-FsVT/BUk2+TDF0Oc5jxKyzdAhCCq6wYH2gV55Sw28vAtwj6F29eJ/G4xW1aGm8+V7P1ASdqtZUGkyUa5suIevw==","signatures":[{"sig":"MEQCIHbPoaZuoBU+nosf/s4LX1hGG7IHy0P7L/93ZNjQzMDtAiAJVsKYoyUvRVZgFY5XT6bIDi7TuXbwC8IdtjlHkBpLLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2224038},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"87683e9c062ab30645e1c6acdd6c8ce2543cf025","scripts":{"dev":"tsx src/cli/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js dist/mcp/index.js","format":"prettier --write .","prepare":"husky || true","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run lint && npm run typecheck && npm run test:coverage && npm run build"},"_npmUser":{"name":"uncletimgz","email":"oujianfeng@gmail.com"},"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"_npmVersion":"11.9.0","description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","ulid":"^2.3.0","js-yaml":"^4.1.0","commander":"^12.1.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","husky":"^9.1.6","eslint":"^9.11.0","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.0","@types/node":"^20.16.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.7.0","@vitest/coverage-v8":"^2.1.1","@typescript-eslint/parser":"^8.7.0","@typescript-eslint/eslint-plugin":"^8.7.0"},"peerDependencies":{"typescript":">=5.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/o-coding-navigation_0.9.0-beta.1_1783490085795_0.31738024698832157","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-30T12:48:19.352Z","modified":"2026-07-08T05:54:48.603Z","0.1.0-alpha.0":"2026-04-30T12:48:19.500Z","0.1.0-alpha.1":"2026-04-30T14:00:42.319Z","0.1.0-alpha.2":"2026-05-01T06:10:23.609Z","0.1.0-beta.0":"2026-05-02T00:57:38.219Z","0.2.0-beta.0":"2026-05-02T14:05:51.230Z","0.2.0-beta.1":"2026-05-02T17:09:34.523Z","0.2.0-beta.2":"2026-05-05T13:51:50.771Z","0.3.0-beta.0":"2026-06-03T18:07:02.029Z","0.3.0-beta.1":"2026-06-04T06:05:17.717Z","0.4.0-beta.0":"2026-06-11T14:46:11.016Z","0.4.0-beta.1":"2026-06-11T15:04:37.718Z","0.4.0-beta.2":"2026-06-11T17:11:20.717Z","0.5.0-beta.0":"2026-06-11T19:08:37.849Z","0.5.0-beta.1":"2026-06-12T12:23:43.899Z","0.5.0-beta.2":"2026-06-12T13:23:35.509Z","0.5.0-beta.3":"2026-06-13T06:30:04.992Z","0.6.0-beta.0":"2026-06-13T06:49:16.770Z","0.7.0-beta.0":"2026-06-28T04:57:36.948Z","0.7.0-beta.1":"2026-06-29T17:27:36.007Z","0.7.0-beta.2":"2026-06-30T07:39:04.603Z","0.7.0-beta.3":"2026-06-30T12:33:22.447Z","0.7.0-beta.4":"2026-06-30T13:48:53.726Z","0.7.0-beta.5":"2026-06-30T14:20:15.289Z","0.7.0-beta.6":"2026-06-30T14:53:09.622Z","0.8.0-beta.0":"2026-07-02T05:15:40.508Z","0.8.0-beta.1":"2026-07-05T15:34:54.699Z","0.9.0-beta.0":"2026-07-06T16:33:40.723Z","0.9.0-beta.1":"2026-07-08T05:54:45.941Z"},"bugs":{"url":"https://github.com/UncleTIM-GZ/O-CodingNavigation/issues"},"license":"Apache-2.0","homepage":"https://github.com/UncleTIM-GZ/O-CodingNavigation#readme","keywords":["ai-coding","mcp","cli","sop","project-management","developer-tools","audit-trail"],"repository":{"url":"git+https://github.com/UncleTIM-GZ/O-CodingNavigation.git","type":"git"},"description":"Local-first AI coding navigation CLI and MCP server with step gates, audit trail, and SOP-aware project state.","maintainers":[{"name":"uncletimgz","email":"oujianfeng@gmail.com"}],"readme":"# O'CodingNavigator (OCN)\n\n> Local-first, MCP-first, state-machine-driven **AI coding workflow operating system**.\n> CLI: `ocn` · MCP: `ocn-mcp` · License: Apache-2.0\n> **Phase**: SOP profile 0.9.0 mainline (Outcome Backbone, AM-017/DEC-043) + optional Auto Mode (AM-009) + optional Contract Backbone (AM-012) · **Status**: pre-GA beta · **Public**: on npm as `latest` and `@beta` → [`0.9.0-beta.1`](https://www.npmjs.com/package/o-coding-navigation) · GitHub pre-release: [`v0.9.0-beta.1`](https://github.com/UncleTIM-GZ/O-CodingNavigation/releases/tag/v0.9.0-beta.1)\n\n> 📑 This README has two parts:\n> **Part 1 — English** (sections 1 – 11) · **Part 2 — 中文版** (§§ A – K)\n> 本 README 分两部分阅读：先看英文（§§ 1–11），中文从下方 §A 开始。\n\n---\n\n# Part 1 · English\n\nOCN turns AI coding from continuous-chat improvisation into a navigable, gated, auditable, reviewable systems-engineering process. It is a *navigator*, not an IDE, not a SaaS, not a project-management board.\n\n### Table of contents (English)\n\n**Understand OCN**\n1. [What OCN is](#1-what-ocn-is)\n2. [Why OCN exists](#2-why-ocn-exists)\n3. [Current status](#3-current-status-sop-080-acceptance-backbone-mainline)\n   - 3.1 [Two-stage product model](#31-two-stage-product-model)\n\n**Use OCN**\n4. [Install](#4-install)\n5. [First 5 minutes](#5-first-5-minutes)\n   - 5.4 [Full walkthrough: how it looks inside Claude Code](#54-full-walkthrough-how-it-looks-inside-claude-code)\n   - 5.5 [Adopting OCN mid-project](#55-adopting-ocn-mid-project)\n   - 5.6 [Post-plan execution flow](#56-post-plan-execution-flow)\n6. [Core CLI commands](#6-core-cli-commands)\n   - 6.1 [Planning Gatekeeper commands](#61-planning-gatekeeper-commands)\n   - 6.2 [Execution Navigator commands](#62-execution-navigator-commands)\n7. [MCP tools](#7-mcp-tools)\n\n**Reference**\n8. [Documentation map](#8-documentation-map)\n9. [Development](#9-development)\n10. [Roadmap](#10-roadmap)\n11. [License](#11-license)\n\n---\n\n## Understand OCN\n\n### 1. What OCN is\n\nOCN is the local discipline layer for AI coding. It runs on your machine, persists everything to plain files (Markdown + JSON + JSONL + YAML), exposes a small CLI for humans, and a small MCP server for agents. There is no cloud component.\n\nOCN sells **discipline** — productized as:\n\n- a **state machine** (DISCOVERY → SPEC → DESIGN → PLAN → BUILD → VERIFY → SHIP → REFLECT) with forward-only transitions,\n- a **Step Artifact Gate** that blocks advancement when the current step's required sections are missing,\n- a **dual-track audit trail** (`.ocoding/audit/audit-events.jsonl` + `docs/22-audit-trail.md`),\n- a **Logic Backbone (SOP 0.3.0)** — a DESIGN-phase artifact whose computation/decision graph is machine-validated; `ocn check` blocks on orphan scores, dangling references, cycles, and unbound triggers, so the system's logic is wired before BUILD,\n- a **Readiness Backbone (SOP 0.4.0)** — a role-based cross-cutting readiness gate: 55 falsifiable checks derived from 54 curated IT roles (developer, QA, DevOps, CISO, service desk, …) run inside `ocn check` / `ocn gate` / `ocn advance` on every step; open-world semantics mean both `FAIL` and `UNKNOWN` block (silence is not a pass), catching role-blind completion before SHIP,\n- a **Task Backbone (new in SOP 0.5.0)** — build plans carry machine-parseable Task Spec blocks (goal / traces / touches / verify / DoD); the build-plan gate validates six hard defects and freezes each task's verify-command hash into `.ocoding/task-ledger.json`; a task is *done* only when `ocn task check` reruns the frozen command and it exits 0, and `ocn advance` out of BUILD is blocked while tasks are pending — closing the fourth false-completion class, receipt-only completion,\n- an **Acceptance Backbone (new in SOP 0.8.0)** — `docs/03-acceptance-criteria.md` carries a machine-parseable `## Acceptance Specs｜验收规格` section (`### AC-<DOMAIN>-<n>` blocks); the acceptance gate runs at `step_acceptance_criteria`, hard-blocks four structural defects (`no_specs`, `duplicate_id`, `invalid_id`, `missing_field`), and on pass freezes `.ocoding/acceptance-specs.json` — the canonical machine source of AC ids that build-plan `traces` bind to, closing the hole where AC written in a table silently didn't register,\n- a **safe MCP surface** that lets agents read, prepare, and create artifacts but never advance state, capture decisions, reset the project, or force-release the lock.\n\nOCN is **not** a code generator, an IDE, a SaaS, a project-management tool, a notes app, or a scaffold-only doc factory.\n\n### 2. Why OCN exists\n\nWorking with an AI coding agent for any non-trivial task tends to fail in four ways:\n\n| Failure | Symptom |\n|---|---|\n| **lost** | Nobody — human or AI — knows which step the project is on. |\n| **drift** | The agent keeps generating, but each new chunk is further from the original requirement. |\n| **amnesia** | A new chat starts and the agent re-derives what the previous chat already decided. |\n| **false-completion** | A document exists on disk, but it's missing a required section. The agent declares \"done\" anyway. |\n\nOCN treats these as the same problem: *the AI coding loop has no rigorous notion of \"where we are\" and \"what counts as done\"*. OCN supplies both as code, not as exhortation.\n\n### 3. Current status (SOP 0.8.0 (Acceptance Backbone) mainline)\n\n| | |\n|---|---|\n| Phase | **SOP 0.8.0 (Acceptance Backbone) mainline** — Plan → Build → Verify, with the machine-verified DESIGN logic-backbone gate, a role-based cross-cutting readiness gate (55 checks) on every step, a frozen-verify task ledger that gates BUILD exit, and a SPEC-phase acceptance gate that freezes the canonical AC ids; plan-to-verify smoke covers all 20 steps |\n| Tests | full vitest suite green on Node 20 + Node 22 |\n| Coverage | meets the publish-time gate |\n| npm | `latest` → `0.9.0-beta.1`; `beta` → `0.9.0-beta.1`; `alpha` → `0.1.0-alpha.2` (historical; preserved) |\n| Maturity | **pre-GA beta** — not stable, not GA, beta only (for controlled testing / dogfood) |\n| External host validation | Validated with Claude Desktop on Windows with WSL2. Cursor and Cline are not yet verified. |\n| MCP transport | stdio only (HTTP/SSE not started) |\n\n> **2026-05-04 republish note**: Republished as `0.2.0-beta.2` to ship the Execution Navigator commands (`exec status`, `github analyze-pr`, `evidence map`, `next-prompt`, `verify status`, `verdict draft`) that were merged after `0.2.0-beta.1` was packaged. The README documentation and the published CLI binary now match.\n\n#### 3.1 Two-stage product model\n\nOCN now works in two connected phases:\n\n1. **Planning Gatekeeper** — define scope, architecture, acceptance, and build plan before implementation. Drives `state_discovery` → `state_plan`, gates artifact completion, and is the surface covered by §6.1.\n2. **Execution Evidence Navigator** — read git, GitHub PR, acceptance evidence, and verification signals during implementation. Six new read-only commands (§6.2) summarise that evidence and draft the next agent prompt, the verification readiness signal, and the final verdict. They never mutate state, never call an LLM, never run `npm`/`gh` mutating commands.\n\nThe two stages are connected: planning artifacts (00–10) must pass their gates before the execution stage's `evidence map`, `verify status`, and `verdict draft` can read meaningful inputs. Authoritative reframe: [DEC-024](./docs/20-decision-log.md). Series closure report: [`docs/reports/2026-05-04-execution-navigator-verdict-draft.md`](./docs/reports/2026-05-04-execution-navigator-verdict-draft.md).\n\n**Implemented**\n\n- **CLI**: `init`, `status`, `brief`, `doc create`, `check`, `gate`, `advance` (full list in §6).\n- **State machine**: 8 states, forward-only transitions; DISCOVERY → PLAN have stable-ID steps wired (BUILD / VERIFY / SHIP / REFLECT have state IDs only — steps deferred).\n- **Step Artifact Gate**: required-section detection with NFKC-normalised heading match for bilingual `Title｜标题` headings.\n- **State safety**: `.ocoding/.lock` (5 s timeout + stale recovery), `state.json.bak` rolling backup, atomic temp-rename writes; concurrent-advance race fixed (post-Codex P1).\n- **Audit**: dual-track persistence, 16 event types, `correlationId` threading across the entire `ocn advance` event chain.\n- **MCP safe tools**: 7 read/prepare/create/log tools over stdio; 4 forbidden tools never registered (full list in §7); `projectRoot` validator + threat model ([`docs/security/mcp-threat-model.md`](./docs/security/mcp-threat-model.md)).\n- **Real MCP Host validation**: Claude Desktop on Windows with WSL2 validated end-to-end ([DEC-017](./docs/20-decision-log.md), [report](./docs/reports/2026-04-30-mcp-external-host-validation-report.md)). Cursor and Cline remain unverified.\n- **Executable example**: [`examples/discovery-to-plan/`](./examples/discovery-to-plan/) walks all 10 v1.0 SOP steps end-to-end via `scripts/smoke.sh`. Bundled fixtures derived verbatim from `src/core/templates/*.ts` so they cannot drift.\n- **npm publish discipline**: published as `o-coding-navigation@0.9.0-beta.1` (per DEC-039 the npm package version and the SOP profile version are unified and move in lockstep — both 0.8.0) under strict pre-publish checklists, `prepublishOnly` gate, and `files` allowlist. `latest` and `beta` both point to `0.9.0-beta.1`; `alpha` is preserved at `0.1.0-alpha.2` for historical use. Annotated git tags and matching GitHub pre-releases published per beta.\n\n**Not implemented (deliberately deferred — see §10)**\n\n`ocn doctor`, `ocn reset`, `ocn baseline`, SOP versioning / upgrade, `production` / `full` tiers, mini-CRM dogfood, real-Host validation for Cursor / Cline ([DEC-019](./docs/20-decision-log.md)), remote MCP transport, MCP auth.\n\n---\n\n## Use OCN\n\n### 4. Install\n\n#### 4.1 Recommended: install from npm\n\n```bash\nnpm install -g o-coding-navigation\n```\n\nAs of v0.9.0-beta.1, npm latest and beta both point to the SOP profile 0.8.0 release (Acceptance Backbone, AM-015/DEC-041) plus optional Auto Mode (AM-009) and optional Contract Backbone (AM-012). Note: per DEC-039 the npm package version and the SOP profile version are now unified and move in lockstep (both 0.8.0); SOP profile 0.8.0 adds the Acceptance Backbone on top of 0.7.0, and older profiles stay frozen + importable.\n\nVerify:\n\n```bash\nocn --version       # 0.9.0-beta.1\nocn --help\nocn-mcp             # starts the MCP stdio server; press Ctrl+C to exit\n```\n\nUse @beta when you want to pin the prerelease channel explicitly:\n\n```bash\nnpm install -g o-coding-navigation@beta\n```\n\nTo uninstall: `npm uninstall -g o-coding-navigation`.\n\n#### 4.2 Currently published channels\n\n| Channel | Version | npm tag | Notes |\n|---|---|---|---|\n| `latest` (recommended) | `0.9.0-beta.1` | `latest` | SOP profile 0.8.0 mainline (Acceptance Backbone) + optional Auto Mode (AM-009). |\n| Beta (explicit prerelease pin) | `0.9.0-beta.1` | `beta` | Same artifact as `latest`; use `@beta` when you want to pin the prerelease channel explicitly. |\n| Alpha (still available) | `0.1.0-alpha.2` | `alpha` | Prior pre-GA channel; preserved for historical use only. |\n\nPackage home: https://www.npmjs.com/package/o-coding-navigation\n\n**Prerequisites**: Node.js ≥ 20 (see `engines` in `package.json`).\n\n> **Pre-GA caveat**: this is a **pre-GA beta** release — beta only, intended for controlled testing / dogfood, not GA. Validated with Claude Desktop on Windows with WSL2. Cursor and Cline are not yet verified.\n\n#### 4.3 Alternative: local development from source\n\nFor contributing or local development:\n\n```bash\ngit clone https://github.com/UncleTIM-GZ/O-CodingNavigation.git\ncd O-CodingNavigation\nnpm install\nnpm run build\nnpm link              # exposes `ocn` and `ocn-mcp` on PATH\n```\n\nTo uninstall the global links: `cd O-CodingNavigation && npm unlink -g ocn ocn-mcp`.\n\nIf you prefer not to `npm link`, run the CLI in-place via `node /path/to/O-CodingNavigation/dist/cli/index.js …`.\n\n### 5. First 5 minutes\n\n#### 5.1 The minimal happy path\n\n```bash\nmkdir ocn-demo && cd ocn-demo\n\nocn init                        # creates .ocoding/ and docs/\nocn status                      # state_discovery / step_project_brief\n\nocn doc create project-brief    # creates docs/00-project-brief.md (template)\n# Now edit docs/00-project-brief.md and fill in the 4 required sections:\n#   Problem · Goal · Users · Success Criteria\n\nocn gate                        # read-only — confirms the gate now passes\nocn advance                     # gate + state mutation + audit trail\nocn status                      # state_discovery / step_scope (advanced)\n\nocn brief                       # session brief for an AI coding agent\n```\n\n#### 5.2 What each command produces\n\n- `init` writes `.ocoding/state.json`, `.ocoding/sop.yaml`, the dual-track audit files, and a `docs/` skeleton.\n- `status` reports `currentStateId: state_discovery` / `currentStepId: step_project_brief`.\n- `doc create` writes `docs/00-project-brief.md` with bilingual section headings already in place.\n- `gate` returns `OK` (exit 0) once the 4 required sections are filled in, or `ERR_GATE_FAILED` (exit 1) with a bilingual list of missing sections.\n- `advance` writes a `correlationId`-tagged chain of audit events: `advance_started → artifact_gate_run → artifact_gate_passed → state_transitioned → state_write_succeeded → advance_succeeded`.\n- `brief` prints the current-step required sections + AI governance reminders so a coding agent can resume without re-reading docs.\n\nA more detailed walkthrough lives in [`docs/quickstart.md`](./docs/quickstart.md), including the expected file tree and common errors.\n\n#### 5.3 Try the executable example\n\nFor an end-to-end example that walks all 10 v1.0 SOP steps against a hermetic temp project, see [`examples/discovery-to-plan/`](./examples/discovery-to-plan/) and run:\n\n```bash\nnpm run build\nbash examples/discovery-to-plan/scripts/smoke.sh\n```\n\nThe smoke prints the final state and exits with `Discovery-to-plan smoke completed.` It does not modify your environment.\n\n#### 5.4 Full walkthrough: how it looks inside Claude Code\n\nOCN is MCP-first by design. Inside Claude Code (or any other MCP host wired to `ocn-mcp` — Claude Desktop is the validated path per §7.1), **you almost never need to remember an OCN command**. You speak natural language; the AI calls the right OCN MCP tool; the flow runs itself. **The one and only step that must be typed by you in a terminal is the state-advance step** — that is OCN's design guardrail, not a bug.\n\n> Prerequisite: `ocn-mcp` wired into your MCP host as in §7.1. The validated host is Claude Desktop on Windows + WSL2 ([DEC-017](./docs/20-decision-log.md)); other MCP hosts behave the same but are not yet validated ([DEC-019](./docs/20-decision-log.md)).\n\nBelow is the full flow in 8 steps. For each step you get three things: **what you say → what the AI does behind the scenes → what you see back**.\n\n---\n\n##### Phase 1: one-time setup (do once per project)\n\n**Step 1. Initialise OCN**\n\n- **You say**: *\"Initialise OCN in the current directory.\"*\n- **AI does**: shells out via Bash to run `ocn init` (init is not an MCP tool — it must be a shell call).\n- **You see**: `.ocoding/` and `docs/` created; project initialised at `state_discovery / step_project_brief`.\n\n**Step 2. Confirm location**\n\n- **You say**: *\"Which step is OCN on?\"*\n- **AI does**: calls MCP tool `navigator.where_am_i`.\n- **You see**: current state, current step, artifact path, suggested next action.\n\n---\n\n##### Phase 2: the per-step loop (repeat for every step)\n\n> Assume you're sitting on `step_project_brief`. Steps 3–8 close out one step; the next step uses the same loop.\n\n**Step 3. Pull this step's brief**\n\n- **You say**: *\"Tell me what to do for the current step.\"*\n- **AI does**: calls MCP tool `navigator.brief`.\n- **You see**: required sections, governance reminders, uncertainty policy. These enter the AI's context so it follows the rules when writing the artifact.\n\n**Step 4. Create the artifact template**\n\n- **You say**: *\"Create the template for the current step's artifact.\"*\n- **AI does**: calls MCP tool `navigator.create_artifact` with type `project-brief`.\n- **You see**: `docs/00-project-brief.md` written from the bundled template, with bilingual section headings in place.\n\n**Step 5. Fill out the artifact**\n\n- **You say**: *\"Fill out the artifact according to the brief. Our project is [your description].\"*\n- **AI does**: based on the brief's required sections + your description, edits `docs/00-project-brief.md` directly via its Edit tool to fill Problem / Goal / Users / Success Criteria.\n- **You see**: a filled-in markdown. Iterate until you're satisfied.\n\n**Step 6. Verify the artifact**\n\n- **You say**: *\"Check whether the current artifact passes the gate.\"*\n- **AI does**: calls MCP tool `navigator.run_gate`.\n- **You see**: pass → AI says \"gate passed\"; fail → AI lists the missing sections and offers to fix them. On fail, return to Step 5.\n\n**Step 7. You type `ocn advance` yourself**\n\n> ⚠️ This is **the one step in the entire flow that you must do yourself**. The AI cannot do it for you.\n\nAfter Step 6 passes, a disciplined AI will tell you:\n\n> *\"Gate passed. To advance, please run `ocn advance` in your terminal.\"*\n\nWhy won't the AI just run it? Two reasons, both load-bearing:\n\n1. **MCP does not expose advance.** `navigator.advance_phase` is one of the four tools in §7.3 that is **never** registered. From the MCP path, the AI literally has no advance tool.\n2. **OCN's AI governance rules reserve advance for humans.** State advancement = project milestone = the sentence *\"we are now in the next phase\"* must be spoken by a human. Letting the AI say it would degrade OCN into one more autonomous scaffolder — exactly the failure mode OCN exists to prevent.\n\nSo open a terminal and run:\n\n```bash\nocn advance\n```\n\n`advance` re-runs the gate internally, and on pass writes `state.json` under a lock with rolling backup and emits the full `correlationId`-tagged audit chain.\n\n> If you don't want to switch to a terminal, you can **explicitly** ask the AI to run it for you:\n> *\"Run `ocn advance` for me.\"*\n> That still counts as **your** decision — the AI is just pressing the button on your behalf. The crucial difference: the AI **cannot** auto-run advance the moment Step 6 passes. It must wait until you say so.\n\n**Step 8. Loop back to Step 3**\n\n- **You say**: *\"Where is OCN now?\"*\n- **AI does**: calls `navigator.where_am_i`.\n- **You see**: the new step (e.g., `step_scope`).\n\nThen return to **Step 3** for the new step: pull its brief, create its artifact, write, verify, advance. Every step uses this same loop until OCN reports the project has run out of steps.\n\n---\n\n##### Cheat sheet: what you say → which tool runs\n\n| What you say | What the AI uses | Mutates `state.json`? |\n|---|---|---|\n| \"Where is OCN?\" | `navigator.where_am_i` (MCP, read-only) | No |\n| \"Pull the current step's brief\" | `navigator.brief` (MCP, read-only) | No |\n| \"Create the artifact template\" | `navigator.create_artifact` (MCP) | No (writes `docs/`) |\n| \"Fill out the artifact\" | AI's own Edit tool on `docs/` | No |\n| \"Verify the artifact\" | `navigator.run_gate` (MCP, read-only) | No |\n| **\"I'll run `ocn advance` myself\"** | **`ocn advance` CLI (Bash, you trigger)** | **✅ Yes** |\n\n---\n\n##### Two hard rules\n\n**(1) `navigator.run_gate` passing ≠ state advancement.**\n`run_gate` is read-only; a pass result does not move OCN to the next step. Only `ocn advance` (CLI) advances. If an AI runs `run_gate` and then claims *\"we're in the next step\"*, it is lying — `state.json` is unchanged.\n\n**(2) The AI never advances on its own initiative.**\nBy design. After Step 6 passes, a disciplined Claude Code will say only *\"Gate passed; please run `ocn advance`\"*. If it goes ahead and runs `ocn advance` without you asking, it has bypassed OCN's discipline guardrail — exactly the *drift* failure mode OCN exists to prevent.\n\nThis is the discipline OCN sells.\n\n#### 5.5 Adopting OCN mid-project\n\n> Scenario: your project is already running — half the code is written, the PRD lives on Notion, ACs are scattered across Slack threads, decisions exist only in your memory. You want to retrofit OCN's discipline now.\n\n---\n\n##### The fact you have to accept first: OCN does not start from \"where you actually are\"\n\nOCN's state machine **always** starts at `state_discovery / step_project_brief`. The current release does **not** ship `--skip-to`, `--start-at`, or an `--override` flag on advance.\n\nThis is by design, not a limitation. OCN's value is forcing you to explicitly answer *\"what are we building?\"* and *\"what counts as done?\"*. Skipping to BUILD makes brief, gate, and audit groundless — you might as well not install it.\n\nSo the only right path for mid-project adoption is **backfill**. The good news: you already have the content. You're just routing it into OCN's structure.\n\n---\n\n##### `ocn init` and existing files: hard guarantees\n\nThe most common worry when adopting OCN mid-project: *\"will `ocn init` overwrite my existing code or docs?\"*\n\nAnswer: **no**. Two source-level guarantees (verified against `src/core/init.ts` and `src/core/artifact/template-writer.ts`):\n\n1. **`ocn init` only writes OCN's own state files under `.ocoding/`** (`state.json`, `sop.yaml`, `gates.yaml`, `artifacts.yaml`, `config.yaml`) and `mkdir`s `docs/`. It does **not** write any `docs/XX-*.md` artifact templates, and it does not touch `src/`, `README.md`, or any other path.\n2. **If the project is already initialised** (`.ocoding/state.json` exists), `ocn init` **refuses to run** and returns exit 4 (`ERR_IO_OR_CONFIG`) with the message *\"OCN is already initialized in this directory. / 当前目录已经初始化过 OCN。\"* — never overwrites your existing OCN state.\n\nSimilarly, **`ocn doc create <type>`** refuses to overwrite by default: on a name collision it returns exit 4 with *\"`<type>` already exists at `<path>`. Use `--overwrite` to replace it.\"* You must explicitly pass `--overwrite` to replace.\n\nSo you can safely run them in an existing project root. Worst case: you already have a `docs/00-project-brief.md` — `ocn doc create project-brief` will refuse to write. Two options:\n- **Manually merge** your existing content into the OCN template (preserve OCN's bilingual section headings `Title｜标题` — they are the gate's match anchors).\n- **Rename your file as backup** (e.g. `docs/00-project-brief.legacy.md`), let `ocn doc create project-brief` write the fresh template, then paste your content back into the OCN-shaped sections.\n\n---\n\n##### Recommended path: backfill early steps using material you already have\n\n**Step 1. Initialise in your project root**\n\n- **You say**: *\"Initialise OCN in this directory.\"*\n- **AI does**: runs `ocn init` via Bash.\n- **You see**: `.ocoding/` created (`docs/` is `mkdir`-ed); state at `state_discovery / step_project_brief`. Your existing code and docs are untouched.\n\n**Step 2. Feed the AI your project context in one shot**\n\n- **You say**: *\"Here's the project context. The PRD is at [Notion URL / file path]. ACs pasted below. Code is in `src/`; [X module] is done, [Y] still pending. Architecture: [brief]. I want to backfill this into OCN's early steps.\"*\n- **AI does**: ingests the context for use across all subsequent steps.\n- **You see**: the AI restates the situation to confirm it has the picture.\n\n**Step 3. Backfill the steps one at a time**\n\nEach step uses the §5.4 Steps 3–8 loop (pull brief → create template → AI fills using your material → `run_gate` → **you** type `ocn advance`). The difference from a greenfield project: because the content already exists, the AI mostly reorganises and aligns formats rather than inventing.\n\nSOP 0.5.0 ships `doc create` templates for all 20 steps. The table below maps every step to its artifact path and **where to mine the content from your existing project**:\n\n**DISCOVERY phase**\n\n| Step | Artifact | Where to mine it from your existing project |\n|---|---|---|\n| `step_project_brief` | `docs/00-project-brief.md` | Original project pitch, Notion landing page, the one-pager you sent investors / leadership |\n| `step_scope` | `docs/01-scope.md` | Roadmap, Linear / Jira epic list, internal \"what v1 / v2 will not do\" doc |\n\n**SPEC phase**\n\n| Step | Artifact | Where to mine it from your existing project |\n|---|---|---|\n| `step_prd` | `docs/02-prd.md` | The PRD on Notion / Lark / Confluence — reorganise it into OCN's section structure |\n| `step_acceptance_criteria` | `docs/03-acceptance-criteria.md` | Slack AC threads, \"should…\" lines in bug tickets, QA test-case descriptions — convert to Given/When/Then |\n\n**DESIGN phase**\n\n| Step | Artifact | Where to mine it from your existing project |\n|---|---|---|\n| `step_technical_architecture` | `docs/04-technical-architecture.md` | `package.json` / `requirements.txt` / `go.mod`, deployment diagrams, tech-selection notes |\n| `step_information_architecture` | `docs/05-information-architecture.md` | Existing sitemap, URL routing tables, menu hierarchy, product screenshots |\n| `step_data_model` | `docs/06-data-model.md` | `schema.sql`, Prisma schema, ORM models, ER diagrams, DB migration files |\n| `step_api_contract` | `docs/07-api-contract.md` | OpenAPI / Swagger spec, Postman collections, router code, `@RestController` annotations |\n| `step_test_strategy` | `docs/08-test-strategy.md` | `tests/` directory layout, CI config (`.github/workflows/`), coverage targets, E2E framework choice |\n| `step_logic_backbone` | `docs/07-logic-backbone.md` | Existing scoring/decision/rules logic, formula definitions, signal→action mappings |\n\n**PLAN phase**\n\n| Step | Artifact | Where to mine it from your existing project |\n|---|---|---|\n| `step_mvp_plan` | `docs/09-mvp-plan.md` | Existing roadmap, kanban, Linear/Jira epics, Phase 0/1/2 split |\n| `step_build_plan` | `docs/10-build-plan.md` | Current sprint plan, todo list, near-term PR plan |\n\n**BUILD phase (typically retroactive backfill)**\n\n| Step | Artifact | Where to mine it from your existing project |\n|---|---|---|\n| `step_implementation_log` | `docs/11-implementation-log.md` | `git log`, merged PR titles and summaries |\n| `step_change_evidence` | `docs/12-change-evidence.md` | Deployed changes, `CHANGELOG.md`, draft release notes |\n| `step_integration_notes` | `docs/13-integration-notes.md` | Third-party integration notes, SDK call samples, integration test results |\n\n**VERIFY phase**\n\n| Step | Artifact | Where to mine it from your existing project |\n|---|---|---|\n| `step_verification_report` | `docs/14-verification-report.md` | Past QA reports, performance test results, user acceptance records |\n| `step_acceptance_mapping` | `docs/15-acceptance-mapping.md` | AC-to-code/test mapping table (often needs fresh assembly) |\n| `step_failure_fix_log` | `docs/16-failure-fix-log.md` | Bug fix records, incident reports, postmortems |\n| `step_regression_evidence` | `docs/17-regression-evidence.md` | Regression test results, CI green-history records |\n| `step_final_build_verdict` | `docs/18-final-build-verdict.md` | Final release verdict (typically newly written) |\n\n**Step 4. Once you reach the step you're \"actually\" on, snap to it**\n\nWhen backfill catches up to your real position (say you've written half the code and you're at `step_implementation_log`), you don't start from a blank — your already-written code and merged PRs are the source material for that step. From here on, **new** work goes through OCN's discipline: every new feature gets a step, an artifact, then code.\n\nThe pre-OCN \"anarchy period\" is preserved as a faithful historical snapshot inside the backfilled artifacts.\n\n---\n\n##### Three common \"can I…\" questions\n\n**Q: Can I skip the early steps and start at BUILD?**\nA: The current release does not expose a skip mechanism. Two options:\n- **Honest backfill** (recommended) — fill the early steps from material you already have.\n- **Thin placeholder** (not recommended) — write minimal content that just satisfies the required sections so the gate passes. This makes the gate rubber-stamp anything, which defeats the point of installing OCN.\n\n**Q: Will my existing `docs/` numbering collide with OCN's?**\nA: OCN reserves `00-project-brief.md` through `18-final-build-verdict.md`. On a name collision, `ocn doc create` **refuses to write and returns exit 4** — your existing content is never overwritten. Recommended fix: rename your existing file as backup (e.g. `docs/02-prd.legacy.md`), run `ocn doc create prd`, then merge your content into the OCN template. The bilingual section headings (`Title｜标题`) in the OCN template are the gate's match anchors and must be preserved.\n\n**Q: Can I have the AI run all the early steps in one go?**\nA: Technically yes. You can say:\n\n> *\"Backfill `step_project_brief` through `step_technical_architecture` from the material I provided. After each gate passes, tell me; I'll type `ocn advance` myself.\"*\n\nThe AI will loop through `doc create → fill → run_gate`. After each step's `run_gate` passes, it **stops and waits for you to type `ocn advance`** (or to explicitly tell it to). Every advance remains your decision — by design, bulk backfill cannot replace the human *\"we are now in the next phase\"* call.\n\n---\n\n##### A minimal backfill example\n\nSuppose you have:\n- A 3-month-old React + Node.js project with code in `src/`\n- A half-page Notion project pitch\n- Scattered AC discussions in Slack\n\nBringing this into OCN looks like (real conversation will be denser; this shows the skeleton):\n\n> **You**: \"Initialise OCN in this directory.\"\n> **AI**: runs `ocn init`. State: `state_discovery / step_project_brief`. `src/` and your existing files are untouched.\n>\n> **You**: \"Project context: [paste the Notion pitch]. Fill `docs/00-project-brief.md` per the brief.\"\n> **AI**: calls `navigator.brief` → gets required sections (Problem / Goal / Users / Success Criteria) → edits `docs/00-project-brief.md`.\n>\n> **You**: \"Verify.\"\n> **AI**: calls `navigator.run_gate` → pass.\n> **AI** (disciplined): \"Gate passed. Please run `ocn advance`.\"\n>\n> **You** (terminal): `ocn advance`.\n>\n> **You**: \"Scope: v1 has shipped [X/Y/Z], [A] is in progress, explicitly out of scope: [B/C]. Fill `docs/01-scope.md`.\"\n> **AI**: loop…\n>\n> **You**: \"Reorganise the Notion PRD into `docs/02-prd.md`: [link].\"\n> **AI**: loop…\n>\n> **You**: \"ACs from these Slack excerpts: [paste], converted to Given/When/Then.\"\n> **AI**: loop…\n>\n> *(DESIGN phase: data-model from `prisma/schema.prisma`, api-contract from router code, technical-architecture from `package.json` + deployment diagram.)*\n>\n> *(BUILD phase: implementation-log assembled from `git log`, change-evidence from merged PRs.)*\n\nOnce the backfill catches up, **all new work** comes in through OCN's next step — every new feature has a brief, a gate, and an audit trail.\n\n#### 5.6 Post-plan execution flow\n\nAfter your planning artifacts (00–10) pass their gates and the project enters implementation, the Execution Navigator commands take over. They are read-only summarisers — they help you and the agent see what is actually true in the repo, the PR, the acceptance evidence, and the verification signals.\n\n1. Build the planning artifacts (steps above) — your `state_plan` artifacts (00–10) gate the implementation.\n2. Start implementation in your normal repo workflow (your IDE, agents, etc.).\n3. During implementation, use the Execution Navigator commands (§6.2) to read evidence:\n   ```bash\n   ocn exec status                              # local git + OCN state snapshot\n   ocn github analyze-pr <n>                    # GitHub PR analysis (when a PR exists)\n   ocn evidence map --pr <n>                    # acceptance criteria coverage\n   ocn next-prompt --agent claude               # next agent brief\n   ocn verify status --mode combined --pr <n>   # verification readiness\n   ocn verdict draft --mode combined --pr <n>   # evidence-derived verdict\n   ```\n4. Review the evidence and verdict draft before merge — the verdict is conservative; `ready-to-merge` requires every signal aligned (verification ready, PR clean, acceptance covered, no failed checks, no changes-requested).\n\n### 6. Core CLI commands\n\nAll commands accept `--json` to emit a machine-readable `CommandResult` envelope. Exit codes are stable:\n\n| Exit code | Meaning |\n|---|---|\n| `0` | OK |\n| `1` | gate failed |\n| `2` | artifact missing or invalid |\n| `3` | state machine error |\n| `4` | config / lock / IO error |\n| `5` | SOP version incompatibility |\n\n#### 6.1 Planning Gatekeeper commands\n\n| Command | Purpose | Reads / writes | Audit emission |\n|---|---|---|---|\n| `ocn init [--tier minimal] [--json]` | Initialise an OCN project in the current directory. | Writes `.ocoding/`, `docs/`, the dual-track audit files. | `project_initialized` + state-write events |\n| `ocn status [--json]` | Show current state, current step, the relative path of the current step's artifact, and the next-action hint. | Read-only. | None (avoids log spam — pull-mode) |\n| `ocn brief [--json]` | Print the current-step brief for an AI coding session: required sections, governance reminders, uncertainty policy. | Read-only. | None (pull-mode) |\n| `ocn doc create <type> [--overwrite] [--json]` | Create one of the 20 supported artifacts from its bundled template (refuses to overwrite an existing file unless `--overwrite` is passed). | Writes the artifact under `docs/`. | `artifact_created` |\n| `ocn check [--json]` | Check the current step's artifact against its required sections. | Read-only. | `artifact_gate_run` + `artifact_gate_passed` / `artifact_gate_blocked` |\n| `ocn gate [--json]` | Read-only artifact gate aggregation for the current step. Same emission as `check`; never mutates state. | Read-only. | `artifact_gate_*` (no `correlationId`) |\n| `ocn advance [--json]` | Run gate, then advance to the next step on pass. Lock-protected; never partial. | Writes `state.json` (atomic). | Full advance chain with shared `correlationId` |\n| `ocn auto on --phase <1|2|all>` / `off [--phase]` / `resume` / `status` / `trace` `[--json]` | **Auto Mode switch (AM-009 / DEC-034)** — delegate gate-green advances to the AI agent per phase (phase 1 = DISCOVERY→PLAN, phase 2 = BUILD→VERIFY incl. `task check` + the milestone rewind). The switch itself is human-only and refuses `OCN_ACTOR=ai_agent`; manual mode stays the default. `status`/`trace` are pull-mode (no audit); `trace` replays every ai_agent decision (rationale + engine-recorded context). | Writes the `automation:` block in `config.yaml` (comment-preserving) + `.ocoding/automation-runtime.json` (circuit breaker). | `auto_mode_changed` (on/off/resume/suspend) |\n| `ocn sop upgrade [--target <version>] [--plan] [--json]` | Move the project's pinned SOP profile forward to a newer bundled version (forward-only; `config.yaml` preserved). `--plan` is a read-only dry-run. | Apply rewrites `.ocoding/` snapshots + `state.json` (atomic, lock-protected); `--plan` writes nothing. | `sop_upgraded` (apply) / `sop_version_diff_detected` (plan) |\n| `ocn rewind --to <stepId> --reason <text> [--json]` | Move the cursor back to a strictly-earlier step in this round (DEC-033 / AM-008). `--reason` is mandatory; docs/ artifacts are untouched; no gate exemption — every advance after a rewind re-runs the full gate stack. **Milestone loop** (phased projects, e.g. P0→P4 with per-phase go/no-go): after each milestone's verdict, rewind to `step_build_plan`, APPEND the next phase's Task Specs (keep finished specs verbatim — verify-command text unchanged ⇒ hash unchanged ⇒ done preserved), re-gate — the ledger becomes the project's cumulative progress account. Human-only — never exposed over MCP. | Writes `state.json` (atomic, lock-protected; `latestGateResult` cleared). | `cursor_rewind` (success and failed) |\n| `ocn cycle new --yes [--json]` | Archive this round's runtime state to `.ocoding/cycles/<n>-<ts>/` and restart at the first step (DEC-033 / AM-008). docs/ are kept so next-round gates fast-forward; the pin and user-owned `config.yaml` stay; the audit JSONL is never archived — one continuous log spans all rounds. `--yes` is mandatory. Use it when the round's completion boundary (01-scope) is reached — per-milestone iteration inside one round is `ocn rewind`'s job. Human-only — never exposed over MCP. | Moves `.ocoding` runtime files into the archive; rewrites snapshots + `state.json`. | `cycle_started` (success and failed) |\n| `ocn stop --yes [--reason <text>] [--json]` | **Terminate OCN for this project (DEC-042 / AM-016)** — one-way. Marks `state.json` with a `stoppedAt` timestamp so every runtime surface goes quiet (brief / next-prompt / status stop driving; `advance` refuses; the Stop hook stops forcing the AI onward) AND uninstalls the injected Claude Code wiring (`.claude/ocn.md`, `/ocn-next`, OCN's hooks + `OCN_ACTOR` in `.claude/settings.json`, the `@.claude/ocn.md` import in `CLAUDE.md`) — user content is preserved. Use it once planning is done to move to free self-development (works from any state). No built-in re-attach — re-wire with `ocn agent setup`. `--yes` mandatory. Human-only — never exposed over MCP. | Writes `state.json` (atomic, lock-protected); deletes/strips the wiring files. | `project_stopped` (success and failed) |\n| `ocn readiness list [--json]` | Evaluate all readiness checks for the current state/tier and print the verdict table (PASS/WAIVED/FAIL/UNKNOWN/NA counts + blocking items). | Read-only. | None (pull-mode — avoids audit spam) |\n| `ocn readiness waive <checkId> --reason <r> --probe <cmd> [--json]` | Grant a conditional waiver (\"waive-with-probe\"): the probe must pass at grant time, is re-verified on every gate run, and the waiver expires when the project leaves the current state. Human-only — never exposed over MCP. | Writes the waiver into `.ocoding/readiness.json`. | `readiness_waived` |\n| `ocn task list [--json]` | Show the build-plan task ledger: per-task status (pending/done), the frozen verify command, and dependency/phase info. | Read-only. | None (pull-mode) |\n| `ocn task check [<id>] [--json]` | Run the task's frozen verify command — exit 0 marks the task done; a verify command that drifted from its frozen hash is refused. Human/agent CLI only — never exposed over MCP. | Writes `.ocoding/task-ledger.json`. | `task_completed` |\n| `ocn agent setup [--force] [--json]` | One-command Claude Code wiring (AM-006): Stop/PostToolUse hooks in `.claude/settings.json` (merge-only, `command -v ocn` guarded), `.claude/ocn.md` governance contract, `CLAUDE.md` import (append-once), `/ocn-next` slash command. Idempotent; human-only. | Writes/merges the four `.claude` surfaces; never overwrites user entries. | `agent_setup_completed` |\n| `ocn hook stop` / `ocn hook post-edit` | Machine-facing Claude Code hook handlers (called by the agent host, not humans): `stop` re-runs the gate when the agent ends a turn and blocks with fix hints; `post-edit` runs `commands.lint`/`commands.typecheck` for fast feedback. Fail-open by design. | Raw hook-contract IO (stdin JSON in; block JSON / exit 2 + stderr out). | gate-run events via the reused check engine |\n\n`<type>` for `doc create` (SOP 0.5.0 ships templates for all 20 steps):\n`project-brief`, `scope`, `prd`, `acceptance-criteria`, `technical-architecture`,\n`information-architecture`, `data-model`, `api-contract`, `test-strategy`, `logic-backbone`,\n`mvp-plan`, `build-plan`, `implementation-log`, `change-evidence`, `integration-notes`,\n`verification-report`, `acceptance-mapping`, `failure-fix-log`, `regression-evidence`,\n`final-build-verdict`.\n\n`--tier` for `init` accepts `minimal`, `production`, `full` — only `minimal` is enforced today (production / full are accepted but their artifact sets are not yet differentiated).\n\n#### 6.2 Execution Navigator commands\n\nBeyond the planning gate, OCN now reads execution-time evidence (git, GitHub PR, acceptance criteria, package scripts) and produces deterministic summaries — no LLM calls, no mutation, no `npm run` from inside the implementation. These commands are useful during implementation and review, after `state_plan` is closed. Authoritative reframe: [DEC-024](./docs/20-decision-log.md). Series closure: [`docs/reports/2026-05-04-execution-navigator-verdict-draft.md`](./docs/reports/2026-05-04-execution-navigator-verdict-draft.md).\n\n| Command | Purpose | Typical use |\n|---|---|---|\n| `ocn exec status [--json]` | Read local git evidence and OCN project state. | Snapshot of branch, head, dirty/clean, changed files, recent commits, current state/step. |\n| `ocn github analyze-pr <n> [--json]` | Read-only GitHub PR evidence analysis via `gh` CLI. | PR metadata, files changed, commits, checks, reviews — no mutation. |\n| `ocn evidence map [--json] [--pr <n>]` | Map acceptance criteria to available evidence. | Per-criterion status: `evidence-found` / `evidence-candidate` / `missing-evidence` / `needs-human-review`. |\n| `ocn next-prompt [--json] [--agent ...] [--mode ...] [--pr <n>] [--issue ...]` | Generate the next deterministic agent task brief. | 9 fixed sections — objective, evidence, allowed work, forbidden actions, verification commands, stop conditions. |\n| `ocn verify status [--json] [--mode ...] [--pr <n>]` | Summarise verification readiness and missing signals. | Status `ready` / `partial` / `blocked` / `pending` / `no-verification-data` plus required commands and risk flags. |\n| `ocn verdict draft [--json] [--mode ...] [--pr <n>]` | Draft an evidence-derived final judgment. | Category `continue-work` / `request-changes` / `ready-for-review` / `ready-to-merge` / `hold-for-manual-review`, with sorted supports / blocks / warnings. |\n\nAll six commands are read-only by design: no writes to `.ocoding/`, `docs/`, or any project file; no git mutation; no gh mutation (only `pr view` / `auth status`); no LLM call. `--mode` accepts `local | pr | combined` where applicable; `--pr <n>` enables GitHub evidence in `pr` and `combined` modes. Per-MVP implementation reports live under [`docs/reports/2026-05-02-execution-navigator-*.md`](./docs/reports/) and the closure report linked above.\n\n#### 6.3 Claude Code integration — one command (AM-006 / DEC-031)\n\n```bash\nocn agent setup      # idempotent; commit .claude/ + CLAUDE.md to share with the team\n```\n\nWires the whole phase-2 runbook mechanically: a **Stop hook** re-runs `ocn check` whenever the agent tries to end its turn (blocked → fix hints are fed back and the agent keeps working; loop-protected, fail-open), a **PostToolUse hook** runs your configured `commands.lint`/`commands.typecheck` (from `.ocoding/config.yaml`) after every Edit/Write, the **`.claude/ocn.md` governance contract** loads into every session via a CLAUDE.md import, and **`/ocn-next`** pulls `ocn brief` + `ocn next-prompt` and starts the task. Hook commands are guarded with `command -v ocn`, so teammates without ocn installed are unaffected. After setup, the human workflow per task is two actions: `/ocn-next` in Claude Code → review + `ocn advance` in the terminal.\n\n#### 6.4 Auto Mode — optional, off by default (AM-009 / DEC-034)\n\n```bash\nocn auto on --phase 1     # delegate the planning pipeline (DISCOVERY→PLAN)\nocn auto on --phase all   # full auto: planning + BUILD/VERIFY loop + milestone rewinds\nocn auto status           # current grant + circuit-breaker state\nocn auto trace            # replay every AI decision: rationale + machine context\nocn auto off              # back to fully manual (the default)\n```\n\nAuto Mode delegates the **trigger**, never the **judgement**: every advance still runs the full gate stack, task completion is still decided only by the frozen verify command's exit 0. The AI must sign each call (`OCN_ACTOR=ai_agent`, injected by `ocn agent setup`) and justify it (`--rationale` — background / evidence / action); the engine independently records machine context on the audit trail. Safety net: N consecutive gate failures on one step (default 5) trip a circuit breaker that suspends automation until a human runs `ocn auto resume` — humans are never affected. Hard human-only zones in every mode: `readiness waive`, `cycle new`, `sop upgrade`, overrides, any non-milestone rewind, `ocn stop`, and `ocn auto` itself. The MCP surface is unchanged (7 tools, test-pinned). With phase 2 on, multi-P build plans complete end-to-end: after each milestone's verdict the agent rewinds to `step_build_plan`, appends the next P's Task Specs, re-gates (done tasks carry over), and continues — stopping only when every milestone is done.\n\n### 7. MCP tools\n\nOCN's MCP server (`ocn-mcp`) exposes 7 tools over stdio transport. **Wire it into Claude Desktop on Windows with WSL2** — that is the validated Host (per [DEC-017](./docs/20-decision-log.md) and [`docs/reports/2026-04-30-mcp-external-host-validation-report.md`](./docs/reports/2026-04-30-mcp-external-host-validation-report.md)). Cursor and Cline are MCP-aware but are **not yet verified** for OCN — see [DEC-019](./docs/20-decision-log.md) for the support boundary; do not treat them as supported until each has its own validation report.\n\n#### 7.1 Wire into Claude Desktop on Windows + WSL2\n\nAdd the OCN entry to `%APPDATA%\\Claude\\claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"ocn\": {\n      \"command\": \"wsl.exe\",\n      \"args\": [\"-e\", \"ocn-mcp\"]\n    }\n  }\n}\n```\n\nIf `ocn-mcp` is not on the WSL2 `PATH`, replace `\"ocn-mcp\"` with the absolute path printed by `which ocn-mcp` inside WSL2 (typically the npm global bin, e.g. `/home/<user>/.npm-global/bin/ocn-mcp`). Save the config, fully quit Claude Desktop (system tray included), and reopen — the seven `navigator.*` tools should appear in the tools panel.\n\nFull wiring guidance + per-tool envelopes: [`docs/mcp-usage.md`](./docs/mcp-usage.md). The validation transcript that proved this exact path works lives in [`docs/reports/2026-04-30-mcp-external-host-validation-report.md`](./docs/reports/2026-04-30-mcp-external-host-validation-report.md).\n\n#### 7.2 Allowed (7)\n\n| Tool | Purpose | Mutates? |\n|---|---|---|\n| `navigator.where_am_i` | State snapshot. | No |\n| `navigator.brief` | Current-step brief. | No |\n| `navigator.run_gate` | Read-only gate aggregation. | No |\n| `navigator.create_artifact` | Create from the full template registry (20 types: 00–19, logic-backbone at 07). | Filesystem only |\n| `navigator.capture_log` | Append to `docs/19-dev-log.md` (`type=dev`) or `docs/18-research-log.md` (`type=research`). **`type=decision` is hard-rejected.** | Filesystem only |\n| `navigator.detect_sop_version` | Drift between locked profile and bundled OCN SOP. | No |\n| `navigator.generate_next_prompt` | Required sections + governance reminder + uncertainty policy + self-check rule. | No |\n\n#### 7.3 Forbidden (4) — NEVER exposed\n\n| Tool | Why kept off MCP |\n|---|---|\n| `navigator.advance_phase` | State advancement is human-only via the CLI. |\n| `navigator.capture_decision` | Decisions reflect human intent. The exposed `capture_log` rejects `type=decision`. |\n| `navigator.reset_project` | Destructive; twice-confirm flow is human-only. |\n| `navigator.force_release_lock` | Bypasses state-safety invariants; operator-only. |\n\nEnforced by `tests/unit/mcp-tool-registry.test.ts` (`ALLOWED ∩ FORBIDDEN = ∅`).\n\n> An MCP agent connected to OCN can read project state, render the next-step brief, prepare artifacts, run the read-only gate, create from the template registry, and capture `dev` / `research` logs. It **cannot** advance state, capture decisions, reset the project, or force-release the lock.\n\nFull surface + wiring instructions: [`docs/mcp-usage.md`](./docs/mcp-usage.md).\n\n---\n\n## Reference\n\n### 8. Documentation map\n\nOCN ships its own design baseline under `docs/`. Two governance points worth knowing before reading:\n\n- **Canonical decision log**: [`docs/20-decision-log.md`](./docs/20-decision-log.md). Some historical references say `docs/19-decision-log.md` — those refer to the same file before the path move recorded in [AM-002](./docs/amendments/2026-04-28-decision-log-path-amendment.md).\n- **Amendment index**: [`docs/amendments/README.md`](./docs/amendments/README.md). Active divergences from the frozen `docs/00-08` design baseline are recorded as amendments rather than inline edits ([DEC-004](./docs/20-decision-log.md#dec-004frozen-design-docs-amendment-policy)).\n- **Frozen design baseline**: `docs/00-project-brief.md` through `docs/08-mvp-plan.md` are Phase-2 design contracts, treated as historical artifacts. New projects initialised via `ocn init` get the SOP v1.1 step layout from the bundled default profile; the OCN repository itself runs against a project-level override per [DEC-003](./docs/20-decision-log.md#dec-003documentation-numbering-policy-after-sop-v11-technical-architecture-insertion).\n- **Reports**: [`docs/reports/`](./docs/reports/) — Phase 2 closure, post-alpha P1 fix train (4 reports), Claude Desktop MCP Host validation, alpha.0 / alpha.1 / alpha.2 / beta.0 publish reports, examples F2/F3, beta release marker, bilingual install flow, doc audits, final Codex full-repo audit, post-Codex P1/P2 fix report. Phase 2 baseline lives in [`docs/reports/2026-04-28-phase2-completion-report.md`](./docs/reports/2026-04-28-phase2-completion-report.md).\n- **Plans**: [`docs/plans/`](./docs/plans/) holds the planning artifacts for each PR. The active GA Prep plan is [`docs/plans/2026-04-28-ga-prep-gap-review-plan.md`](./docs/plans/2026-04-28-ga-prep-gap-review-plan.md).\n- **MCP usage**: [`docs/mcp-usage.md`](./docs/mcp-usage.md).\n\n### 9. Development\n\n```bash\nnpm install\nnpm run lint           # ESLint (TypeScript-eslint)\nnpm run typecheck      # tsc --noEmit\nnpm run test           # vitest run — 459 tests, ~24 s\nnpm run test:coverage  # adds coverage report\nnpm run build          # tsc + chmod +x on bin entries\n```\n\nThe pre-commit hook (Husky 9) runs `lint + typecheck + test` on every commit. CI runs the same checks plus `build` and reports coverage. Hard limits per `CLAUDE.md`: file ≤ 300 lines, function ≤ 50 lines, params ≤ 4, nesting ≤ 3, no raw `any` in exported APIs.\n\n### 10. Roadmap\n\nThe GA Prep phase was a documentation, packaging, and operational-readiness audit that ran from Phase 2 closure through the beta candidate preparation track. Most GA Prep PRs are now complete; their evidence lives in [`docs/reports/`](./docs/reports/) and [`docs/20-decision-log.md`](./docs/20-decision-log.md). Original plan: [`docs/plans/2026-04-28-ga-prep-gap-review-plan.md`](./docs/plans/2026-04-28-ga-prep-gap-review-plan.md).\n\n**GA Prep PRs (status)**\n\n- **PR A** — Docs numbering reconciliation + amendments index. Complete.\n- **PR B** — README first-5-minutes + CLI help copy audit. Iterated through multiple passes; latest bilingual install-flow refresh: [`docs/reports/2026-05-02-readme-install-flow-completion.md`](./docs/reports/2026-05-02-readme-install-flow-completion.md).\n- **PR C** — MCP `projectRoot` path-traversal audit + threat-model doc. [`docs/security/mcp-threat-model.md`](./docs/security/mcp-threat-model.md) is in the repo; `projectRoot` validator hardened by [P1-001](./docs/reports/2026-04-30-post-alpha-codex-audit.md) (`validateInitializedProjectRoot`).\n- **PR D** — External MCP Host validation. Claude Desktop on Windows with WSL2 validated (see [`docs/reports/2026-04-30-mcp-external-host-validation-report.md`](./docs/reports/2026-04-30-mcp-external-host-validation-report.md) and [DEC-017](./docs/20-decision-log.md)). Cursor and Cline remain unverified in separate future work.\n- **PR E** — npm publish gating plan + CI stability audit. Publish discipline: [DEC-008](./docs/20-decision-log.md) / [DEC-012](./docs/20-decision-log.md) / [DEC-015](./docs/20-decision-log.md) / [DEC-016](./docs/20-decision-log.md) / [DEC-021](./docs/20-decision-log.md) / [DEC-022](./docs/20-decision-log.md). CI matrix expanded to Node 20 + Node 22 ([report](./docs/reports/2026-05-01-ci-node-22-matrix-expansion.md)). Lock-observability flake hardened ([report](./docs/reports/2026-05-01-state-store-lock-observability-flake-hardening.md)).\n- **PR F** — `examples/` directory plan. F1 + F2 + F3 complete: [`examples/discovery-to-plan/`](./examples/discovery-to-plan/) is an executable smoke that walks all 10 v1.0 SOP steps ([report](./docs/reports/2026-05-01-examples-discovery-to-plan.md)). F4 (top-level \"Try the example\" link) is the example reference under §5.\n- **Post-Codex audit fix train** — final full-repo Codex audit ([report](./docs/reports/2026-05-02-final-codex-full-repo-audit.md)) and P1/P2 closure ([report](./docs/reports/2026-05-02-post-codex-p1-p2-fix-report.md)). Two P3 polish items remain.\n\n**Execution Navigator MVP series (post-DEC-024)**\n\n- **MVP 1–6 complete** — the six Execution Navigator commands (§6.2) shipped in PRs #63–#68 and merged to main. Cross-cutting review fixes landed in PR #69 ([report](./docs/reports/2026-05-04-execution-navigator-review-fixes-pr-a.md)). Series closure: [`docs/reports/2026-05-04-execution-navigator-verdict-draft.md`](./docs/reports/2026-05-04-execution-navigator-verdict-draft.md).\n- Current external package: `0.9.0-beta.1` — Planning Gatekeeper (§6.1) + Execution Evidence Navigator (§6.2) + the Logic Backbone DESIGN gate + the Readiness Backbone cross-cutting gate + the Task Backbone BUILD task ledger + the Acceptance Backbone SPEC gate + optional Auto Mode (§6.4, AM-009) + optional Contract Backbone (AM-012) — a BUILD/VERIFY gate that cross-checks frontend call sites against the declared API contract.\n- **Acceptance Backbone shipped in `0.9.0-beta.1`** — SOP 0.8.0 ([AM-015](./docs/amendments/2026-07-02-acceptance-backbone-amendment.md) / DEC-041): `docs/03-acceptance-criteria.md` now carries a machine-parseable `## Acceptance Specs｜验收规格` section (`### AC-<DOMAIN>-<n>` blocks with `desc` required + optional `priority`/`given`/`when`/`then`/`trace`). The acceptance gate runs at `step_acceptance_criteria` after the section gate, hard-blocks four structural defects (`no_specs`, `duplicate_id`, `invalid_id`, `missing_field` → `ERR_ARTIFACT_INVALID`, exit 2), and on pass freezes `.ocoding/acceptance-specs.json` — the canonical machine source of AC ids that build-plan `traces` bind to. Closes the false-completion hole where AC written in a table silently didn't register; reads are staleness-guarded (frozen projection while docs/03 is unchanged, else the live parse). Runtime default cut over to 0.8.0 per DEC-039 (npm/SOP lockstep → npm `0.9.0-beta.1`); 0.7.0 and earlier stay frozen + importable; `ocn sop upgrade` migrates. See [`docs/acceptance-backbone-proposal.md`](./docs/acceptance-backbone-proposal.md).\n- **Task Backbone shipped in `0.5.0-beta.0`** — SOP 0.5.0 ([AM-007](./docs/amendments/2026-06-12-task-backbone-amendment.md) / DEC-032): build plans carry machine-parseable Task Spec blocks (`## Task Specs｜任务规格`: goal/traces/touches/verify/dod + optional depends/phase/timeout). The build-plan gate validates six hard defects (duplicate/invalid id, missing field, dangling `traces` → AC ids, dangling `touches` → logic-graph nodes, dangling/cyclic `depends`, zero tasks) and freezes each task's verify-command hash into `.ocoding/task-ledger.json`. Completion is decided only by `ocn task check` rerunning the frozen command (exit 0 → done + `task_completed` audit; drift → refused); `/ocn-next` dispatches the first pending task in `state_build`; `ocn advance` out of BUILD is blocked while tasks are pending. Closes the fourth false-completion class — receipt-only completion (honest-but-empty BUILD receipts that pass every gate; discovered via the Lattice dogfood). Runtime default cut over to 0.5.0 per DEC-032; `ocn sop upgrade` migrates existing projects.\n- **Claude Code integration shipped in `0.4.0-beta.2`** — [AM-006](./docs/amendments/2026-06-12-claude-code-agent-integration-amendment.md) / DEC-031: `ocn agent setup` wires hooks + governance contract + `/ocn-next` in one idempotent command; `ocn hook stop|post-edit` carry the enforcement logic inside OCN (fail-open, loop-protected).\n- **Readiness Backbone shipped in `0.4.0-beta.1`** — SOP 0.4.0 ([AM-004](./docs/amendments/2026-06-11-readiness-backbone-amendment.md) / DEC-028) adds a role-based cross-cutting readiness gate: 55 falsifiable checks derived from 54 curated IT roles run inside `ocn check` / `ocn gate` / `ocn advance` after the section + logic gates. Open-world semantics (`FAIL` **and `UNKNOWN`** block); verdict ledger persisted to `.ocoding/readiness.json`; `ocn readiness list` / `ocn readiness waive` (waive-with-probe) commands; `ocn sop upgrade` migrates existing projects; runtime default cut over to 0.4.0 per DEC-030.\n- **Logic Backbone shipped in `0.3.0-beta.1`** — SOP 0.3.0 adds the DESIGN-phase `docs/07-logic-backbone.md` artifact; `ocn check` machine-validates its computation/decision graph (blocks on missing role, duplicate node id, dangling reference, dependency cycle, orphan node, unbound trigger) and on pass writes `.ocoding/logic-graph.json`, which `ocn brief` summarises as execution order + trigger bindings.\n- Still beta, not GA. Validated with Claude Desktop on Windows with WSL2; Cursor and Cline remain unverified.\n- Next gate: real external-repo dogfood pass before any further release sync; GA promotion remains gated on its own DEC.\n\n**Beyond GA Prep — not in any current plan; each requires its own DEC entry first**\n\n- `ocn doctor`, `ocn reset`, `ocn baseline`\n- SOP versioning / upgrade tooling\n- Production / full tier artifact-set enforcement\n- Mini-CRM dogfood (Tier 2 GA success criterion)\n- HTTP / SSE MCP transport, MCP auth, MCP session management\n- Cursor / Cline real-Host validation (each Host needs its own DEC-017-style report)\n- GA promotion DEC (final gate tying together Host scope, multi-OS / Node 24+ CI, dogfood evidence)\n\n### 11. License\n\n[Apache-2.0](./LICENSE)\n\n---\n\n# Part 2 · 中文版\n\nOCN（O'CodingNavigator）是一套**本地优先、MCP 优先、状态机驱动**的 AI 编程工作流操作系统。它把 AI 编程从\"持续聊天式发挥\"重塑成可导航、有门禁、可审计、可复盘的系统工程过程。它是一个 *navigator*，不是 IDE，不是 SaaS，不是项目管理工具。\n\nCLI：`ocn`；MCP server：`ocn-mcp`；许可：Apache-2.0。\n\n### 中文目录\n\n**理解 OCN**\n- §A. [OCN 是什么](#a-ocn-是什么)\n- §B. [OCN 解决什么问题](#b-ocn-解决什么问题)\n- §C. [当前状态](#c-当前状态sop-080验收主干-主干)\n   - §C.1 [两阶段产品模型](#c1-两阶段产品模型)\n\n**使用 OCN**\n- §D. [安装](#d-安装)\n- §E. [5 分钟上手](#e-5-分钟上手)\n   - §E.4 [完整操作流程：在 Claude Code 里走完一遍](#e4-完整操作流程在-claude-code-里走完一遍)\n   - §E.5 [把 OCN 加入一个进行中的项目](#e5-把-ocn-加入一个进行中的项目)\n   - §E.6 [实现阶段：执行证据流](#e6-实现阶段执行证据流)\n- §F. [核心 CLI 命令](#f-核心-cli-命令)\n   - §F.1 [Planning Gatekeeper 命令](#f1-planning-gatekeeper-命令)\n   - §F.2 [Execution Navigator 命令](#f2-execution-navigator-命令)\n- §G. [MCP 工具](#g-mcp-工具)\n\n**参考资料**\n- §H. [文档地图](#h-文档地图)\n- §I. [开发](#i-开发)\n- §J. [路线图](#j-路线图)\n- §K. [许可](#k-许可)\n\n---\n\n## 理解 OCN\n\n### A. OCN 是什么\n\nOCN 是 AI 编程的本地纪律层。所有数据都跑在你自己的机器上，落到纯文本（Markdown + JSON + JSONL + YAML）。它对人提供一个小型 CLI，对 agent 提供一个小型 MCP server，**没有任何云端组件**。\n\nOCN 把\"纪律\"产品化：\n\n- **状态机**：DISCOVERY → SPEC → DESIGN → PLAN → BUILD → VERIFY → SHIP → REFLECT，单向推进，不可回退；\n- **步骤产物门禁（Step Artifact Gate）**：当前 step 的必填章节缺失时，状态推进被阻断；\n- **双轨审计链**：`.ocoding/audit/audit-events.jsonl`（机器源）+ `docs/22-audit-trail.md`（人类可读）；\n- **逻辑主干（Logic Backbone，SOP 0.3.0）**：一个 DESIGN 阶段产物，其计算/决策图由机器校验；`ocn check` 会在出现孤儿分值、悬空引用、循环依赖、未绑定触发器时阻断，让系统逻辑在 BUILD 之前就连通；\n- **就绪主干（Readiness Backbone，SOP 0.4.0）**：基于角色的横切就绪门禁——从 54 个精选 IT 角色（开发、QA、DevOps、CISO、服务台……）提炼出 55 条可证伪检查，在每个 step 的 `ocn check` / `ocn gate` / `ocn advance` 中运行；采用开放世界语义，`FAIL` 和 `UNKNOWN` 都会阻断（沉默不算通过），在 SHIP 之前拦住\"角色盲区式完成\"；\n- **任务主干（Task Backbone，SOP 0.5.0 新增）**：build plan 携带机器可解析的任务规格块（goal / traces / touches / verify / DoD）；build-plan 门禁校验六类硬缺陷，并把每个任务的验收命令哈希冻结进 `.ocoding/task-ledger.json`；任务只有在 `ocn task check` 重跑冻结命令且退出码为 0 时才算完成，台账未清时 `ocn advance` 不准离开 BUILD——封堵第四类假完成：\"只有回执的完成\"（receipt-only completion）；\n- **验收主干（Acceptance Backbone，SOP 0.8.0 新增）**：`docs/03-acceptance-criteria.md` 携带机器可解析的 `## Acceptance Specs｜验收规格` 章节（`### AC-<DOMAIN>-<n>` 块）；验收门禁在 `step_acceptance_criteria` 运行，硬拦四类结构缺陷（`no_specs`、`duplicate_id`、`invalid_id`、`missing_field`），通过后冻结 `.ocoding/acceptance-specs.json`——作为 build-plan `traces` 绑定的权威 AC id 机器源，封堵\"AC 写在表格里却悄悄没登记\"的假完成漏洞；\n- **安全的 MCP 工具面**：agent 可读、可准备、可创建产物，但**不能**推进状态、记录决策、重置项目、强制释放锁。\n\nOCN **不是**：代码生成器、IDE、SaaS、项目管理工具、笔记应用，也不是只会铺脚手架的\"文档工厂\"。\n\n### B. OCN 解决什么问题\n\n任何稍微复杂的任务，AI 编程 agent 都倾向于踩四类坑：\n\n| 失效模式 | 表现 |\n|---|---|\n| **迷路（lost）** | 没人——人或 AI——清楚项目当前在哪一步。 |\n| **失控（drift）** | Agent 一直在产出，但每一段都离最初需求更远。 |\n| **失忆（amnesia）** | 一开新对话，agent 又把上一个对话已经决定的东西重新推一遍。 |\n| **假完成（false-completion）** | 文档存在，但缺关键章节；agent 还是宣布\"完成\"。 |\n\nOCN 把这四个问题视为同一个问题：*AI 编程闭环缺乏严肃的\"我们在哪\"和\"什么算完成\"*。OCN 用代码而不是嘴上嘱咐去回答这两个问题。\n\n### C. 当前状态（SOP 0.8.0（验收主干）主干）\n\n| 项目 | 状态 |\n|---|---|\n| 阶段 | **SOP 0.8.0（验收主干）主干**——Plan → Build → Verify，含机器校验的 DESIGN 逻辑主干门禁、覆盖每个 step 的基于角色的横切就绪门禁（55 条检查）、把守 BUILD 出口的冻结验收任务台账，以及在 SPEC 阶段冻结权威 AC id 的验收门禁；plan-to-verify smoke 覆盖全部 20 步 |\n| 测试 | 完整 vitest 套件在 Node 20 + Node 22 全部通过 |\n| 覆盖率 | 满足发布门 |\n| npm | `latest` → `0.9.0-beta.1`；`beta` → `0.9.0-beta.1`；`alpha` → `0.1.0-alpha.2`（历史保留） |\n| 成熟度 | **pre-GA beta**——非稳定、非 GA、仅 beta（用于受控测试 / dogfood） |\n| 已验证 Host | 已在 Claude Desktop on Windows + WSL2 验证。Cursor 与 Cline 暂未验证。 |\n| MCP 传输 | 仅 stdio（HTTP/SSE 尚未启动） |\n\n> **2026-05-04 republish 说明**：以 `0.2.0-beta.2` 重新发布，目的是把 `0.2.0-beta.1` 打包之后才合入的 Execution Navigator 命令（`exec status`、`github analyze-pr`、`evidence map`、`next-prompt`、`verify status`、`verdict draft`）真正包进 npm artifact。README 文档与已发布的 CLI 现在保持一致。\n\n#### C.1 两阶段产品模型\n\nOCN 现在分为两个衔接阶段：\n\n1. **Planning Gatekeeper**：在实现前锁定范围、架构、验收与 build plan。驱动 `state_discovery` → `state_plan`，把守 artifact 完整度，对应 §F.1 的命令面。\n2. **Execution Evidence Navigator**：在实现过程中读取 git、GitHub PR、验收证据与验证信号。新加 6 条只读命令（§F.2）汇总这些证据，并产出下一条 agent prompt、验证就绪信号与最终 verdict 草稿。这些命令永不写状态、永不调 LLM、永不跑 mutating 的 `npm` / `gh` 命令。\n\n两个阶段是衔接的：planning 阶段的 artifact（00–10）必须先过门禁，execution 阶段的 `evidence map`、`verify status`、`verdict draft` 才能读到有意义的输入。权威 reframe：[DEC-024](./docs/20-decision-log.md)。系列收口报告：[`docs/reports/2026-05-04-execution-navigator-verdict-draft.md`](./docs/reports/2026-05-04-execution-navigator-verdict-draft.md)。\n\n**已实现**\n\n- **CLI**：`init`、`status`、`brief`、`doc create`、`check`、`gate`、`advance`（完整列表见 §F）。\n- **状态机**：8 个状态，单向推进；DISCOVERY → PLAN 已挂上稳定 ID 的 step，BUILD/VERIFY/SHIP/REFLECT 仅有 state ID。\n- **步骤产物门禁**：基于 NFKC 标准化的双语 `Title｜标题` 标题匹配。\n- **状态安全**：`.ocoding/.lock`（5 秒超时 + 陈旧锁回收）、`state.json.bak` 滚动备份、临时文件 + atomic rename 写入；并发 `advance` 竞态已在 post-Codex P1 修复中关闭。\n- **审计**：双轨持久化、16 种事件类型、`correlationId` 串联整条 `ocn advance` 事件链。\n- **MCP 安全工具**：stdio 上 7 个只读/准备/创建/日志类工具，4 个禁用工具不会被注册（详见 §G）；`projectRoot` 校验器 + 威胁模型（[`docs/security/mcp-threat-model.md`](./docs/security/mcp-threat-model.md)）。\n- **真实 Host 验证**：Claude Desktop on Windows + WSL2 已完成端到端验证（[DEC-017](./docs/20-decision-log.md)、[报告](./docs/reports/2026-04-30-mcp-external-host-validation-report.md)）。\n- **可执行示例**：[`examples/discovery-to-plan/`](./examples/discovery-to-plan/)，`scripts/smoke.sh` 跑完 v1.0 SOP 全部 10 个 step；fixture 直接来源于 `src/core/templates/*.ts`，避免漂移。\n- **npm 发布纪律**：以 `o-coding-navigation@0.9.0-beta.1` 形式发布（按 DEC-039，npm 包版本与 SOP profile 版本统一、步调一致——均为 0.8.0），遵循严格的预发布清单与 `prepublishOnly` 门，`files` allowlist 收敛到 `dist/` + LICENSE + README + `docs/quickstart.md` + `docs/mcp-usage.md`；`latest` 与 `beta` 都指向 `0.9.0-beta.1`，`alpha` 仍保留在 `0.1.0-alpha.2`；`v0.9.0-beta.1` 为带注释的 git tag + GitHub pre-release。\n\n**尚未实现（刻意延后，详见 §J）**\n\n`ocn doctor`、`ocn reset`、`ocn baseline`、SOP 版本/升级工具、`production`/`full` tier、mini-CRM dogfood、Cursor/Cline 真实 Host 验证（[DEC-019](./docs/20-decision-log.md)）、远程 MCP 传输、MCP 鉴权。\n\n---\n\n## 使用 OCN\n\n### D. 安装\n\n#### D.1 推荐：从 npm 安装\n\n```bash\nnpm install -g o-coding-navigation\n```\n\n从 v0.9.0-beta.1 开始，npm latest 与 beta 均指向 SOP 0.8.0（验收主干）版本 + 可选自动模式（AM-009）。注：按 DEC-039，npm 包版本与 SOP profile 版本统一、步调一致——均为 0.8.0；SOP profile 0.8.0 在 0.7.0 基础上新增验收主干，旧 profile 保持冻结且可导入。\n\n安装后验证：\n\n```bash\nocn --version       # 0.9.0-beta.1\nocn --help\nocn-mcp             # 启动 MCP stdio server；按 Ctrl+C 退出\n```\n\n如果希望明确固定在 beta 预发布通道，可以使用 @beta：\n\n```bash\nnpm install -g o-coding-navigation@beta\n```\n\n卸载：`npm uninstall -g o-coding-navigation`。\n\n#### D.2 当前已发布的渠道\n\n| 渠道 | 版本 | npm tag | 说明 |\n|---|---|---|---|\n| `latest`（推荐） | `0.9.0-beta.1` | `latest` | SOP 0.8.0（验收主干）主干 + 可选自动模式（AM-009）。 |\n| Beta（显式预发布通道） | `0.9.0-beta.1` | `beta` | 与 `latest` 同一份产物；想明确固定在预发布通道时使用 `@beta`。 |\n| Alpha（仍可用） | `0.1.0-alpha.2` | `alpha` | 之前的 pre-GA 通道；仅作历史保留。 |\n\n包主页：https://www.npmjs.com/package/o-coding-navigation\n\n**前置依赖**：Node.js ≥ 20（参见 `package.json` 的 `engines`）。\n\n> **pre-GA 警告**：当前是 **pre-GA beta**——仅 beta，用于受控测试 / dogfood，非 GA。已在 Claude Desktop on Windows + WSL2 验证。Cursor 与 Cline 暂未验证。\n\n#### D.3 备选：从源码本地开发\n\n```bash\ngit clone https://github.com/UncleTIM-GZ/O-CodingNavigation.git\ncd O-CodingNavigation\nnpm install\nnpm run build\nnpm link              # 把 `ocn` 和 `ocn-mcp` 暴露到 PATH\n```\n\n卸载本地链接：`cd O-CodingNavigation && npm unlink -g ocn ocn-mcp`。\n\n不想用 `npm link` 也可以直接 `node /path/to/O-CodingNavigation/dist/cli/index.js …`。\n\n### E. 5 分钟上手\n\n#### E.1 最小可行流程\n\n```bash\nmkdir ocn-demo && cd ocn-demo\n\nocn init                        # 创建 .ocoding/ 与 docs/\nocn status                      # state_discovery / step_project_brief\n\nocn doc create project-brief    # 写出 docs/00-project-brief.md（模板）\n# 然后编辑该文件，把 4 个必填章节填好：\n#   Problem · Goal · Users · Success Criteria\n\nocn gate                        # 只读校验，确认门禁通过\nocn advance                     # 跑门禁 + 改状态 + 写审计链\nocn status                      # 已推进到 state_discovery / step_scope\n\nocn brief                       # 给接管的 AI agent 输出当前 step brief\n```\n\n#### E.2 每条命令的预期产出\n\n- `init` 写入 `.ocoding/state.json`、`.ocoding/sop.yaml`、双轨审计文件，以及 `docs/` 骨架。\n- `status` 报告 `currentStateId: state_discovery` / `currentStepId: step_project_brief`。\n- `doc create` 写出 `docs/00-project-","readmeFilename":"README.md"}