workspai 0.64.0 → 0.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +40 -44
  2. package/contracts/agent-customization-pack.v1.json +4 -2
  3. package/contracts/analyze-last-run.v1.json +9 -1
  4. package/contracts/cli-runtime-command-inventory.v1.snapshot.json +117 -0
  5. package/contracts/extension-cli-compatibility.v1.json +2 -0
  6. package/contracts/published-contract-catalog.v1.json +10 -0
  7. package/contracts/runtime-command-surface.v1.json +59 -3
  8. package/contracts/workspace-activity-event.v1.json +132 -0
  9. package/contracts/workspace-contract.v1.json +51 -6
  10. package/contracts/workspace-intelligence/agent-bootstrap-receipt.v1.json +17 -0
  11. package/contracts/workspace-intelligence/mcp-design.v1.json +49 -2
  12. package/contracts/workspace-intelligence/project-agent-entry.v1.json +3 -0
  13. package/contracts/workspace-intelligence/project-context-agent.v1.json +78 -7
  14. package/contracts/workspace-intelligence/project-knowledge-graph-reference.v1.json +51 -0
  15. package/contracts/workspace-intelligence/workspace-knowledge-graph.v1.json +108 -3
  16. package/contracts/workspace-intelligence/workspace-model.v1.json +28 -1
  17. package/contracts/workspace-intelligence/workspace-skills-index.v1.json +34 -0
  18. package/contracts/workspace-model-cache.v1.json +4 -0
  19. package/contracts/workspace-repair-capabilities.v1.json +66 -0
  20. package/dist/analyze-UJQWGNM2.js +1 -0
  21. package/dist/{artifact-remediation-plan-XIQNI35L.js → artifact-remediation-plan-M2XBS2IU.js} +1 -1
  22. package/dist/autopilot-release-U6F4M2BQ.js +1 -0
  23. package/dist/capabilities-command-XUKPO25Z.js +1 -0
  24. package/dist/chunk-2LIVMG5C.js +2 -0
  25. package/dist/{chunk-ZGS5NKEO.js → chunk-2PACEMNE.js} +1 -1
  26. package/dist/chunk-334J2KIP.js +7 -0
  27. package/dist/{chunk-6TBTMWNA.js → chunk-3H5ACWWZ.js} +1 -1
  28. package/dist/{chunk-HCFWT42C.js → chunk-3NM3JAZW.js} +1 -1
  29. package/dist/chunk-4XEH3WNV.js +13 -0
  30. package/dist/chunk-5OA33JH2.js +2 -0
  31. package/dist/chunk-5TY74LLW.js +2 -0
  32. package/dist/{chunk-QCKWQFCD.js → chunk-5U4L6VF2.js} +1 -1
  33. package/dist/{chunk-W6FHVXNL.js → chunk-5XGR3LRI.js} +1 -1
  34. package/dist/{chunk-KTN2ARZJ.js → chunk-6JX56VAL.js} +3 -3
  35. package/dist/chunk-6UNATTB7.js +1 -0
  36. package/dist/{chunk-J3X56S7L.js → chunk-727IQFGN.js} +1 -1
  37. package/dist/chunk-7FF5EOIO.js +2 -0
  38. package/dist/chunk-AP4PV6WJ.js +1 -0
  39. package/dist/chunk-AXUA7PFV.js +2 -0
  40. package/dist/chunk-B4IVVTMQ.js +2 -0
  41. package/dist/{chunk-LNXIMF3O.js → chunk-C4S22E6S.js} +1 -1
  42. package/dist/{chunk-PXWKMPPI.js → chunk-D4UHRJAP.js} +1 -1
  43. package/dist/chunk-DUBOKZMA.js +49 -0
  44. package/dist/{chunk-VYDURWN7.js → chunk-ECLMYTWT.js} +1 -1
  45. package/dist/{chunk-VB6I52ZT.js → chunk-EHH4SKVH.js} +50 -50
  46. package/dist/chunk-EP4CUWOO.js +9 -0
  47. package/dist/chunk-FY4X2VOE.js +39 -0
  48. package/dist/chunk-GAYK3WGV.js +2 -0
  49. package/dist/{chunk-YUGKQ44M.js → chunk-H5RJCS5E.js} +1 -1
  50. package/dist/{chunk-5SFCBZOH.js → chunk-H7MRINGP.js} +1 -1
  51. package/dist/chunk-HJLGXFMK.js +1 -0
  52. package/dist/{chunk-VRGEPPUB.js → chunk-HLWDIIWL.js} +1 -1
  53. package/dist/{chunk-KJXMLBSY.js → chunk-IIFFEEMX.js} +1 -1
  54. package/dist/chunk-IVF6NEHS.js +1 -0
  55. package/dist/chunk-JC4XSU7G.js +1 -0
  56. package/dist/chunk-JRP6WP5C.js +681 -0
  57. package/dist/chunk-JZJBA2V2.js +1 -0
  58. package/dist/{chunk-N4QQADXX.js → chunk-L5CCIIF2.js} +1 -1
  59. package/dist/chunk-L5Q2S5GY.js +3 -0
  60. package/dist/chunk-LPCZHKD5.js +1 -0
  61. package/dist/chunk-MZ7U4BIQ.js +157 -0
  62. package/dist/chunk-NMXGSVMD.js +1 -0
  63. package/dist/{chunk-GQSRNUCU.js → chunk-NVND4727.js} +3 -3
  64. package/dist/chunk-O37UBRMX.js +4 -0
  65. package/dist/chunk-OI2VOU6S.js +1 -0
  66. package/dist/chunk-PD7Y6HIM.js +2 -0
  67. package/dist/chunk-PJPS7CNH.js +1 -0
  68. package/dist/chunk-QGAPGZPL.js +97 -0
  69. package/dist/chunk-R2M5OJOK.js +5 -0
  70. package/dist/chunk-SX6A656X.js +1 -0
  71. package/dist/{chunk-X6TNBARH.js → chunk-TABXSDTR.js} +2 -2
  72. package/dist/chunk-TTHO4MFC.js +2 -0
  73. package/dist/chunk-U5ENEDJA.js +7 -0
  74. package/dist/chunk-UOCERSAN.js +1 -0
  75. package/dist/chunk-UPIPSSXY.js +1 -0
  76. package/dist/chunk-UTV4DTNM.js +1 -0
  77. package/dist/chunk-VA5VSOBL.js +2 -0
  78. package/dist/chunk-VQOWB26M.js +12 -0
  79. package/dist/chunk-VQZ5PI5J.js +1 -0
  80. package/dist/chunk-WCJU3CFG.js +1 -0
  81. package/dist/chunk-WTWRSEOW.js +1 -0
  82. package/dist/{chunk-D65FCQIO.js → chunk-XESFJN52.js} +1 -1
  83. package/dist/chunk-XQFWUM2P.js +1 -0
  84. package/dist/chunk-XWKGZRHN.js +1 -0
  85. package/dist/{chunk-WRQWVSBJ.js → chunk-YX5VWPR5.js} +1 -1
  86. package/dist/chunk-ZEEV5J4I.js +1 -0
  87. package/dist/chunk-ZQH2I5RQ.js +1 -0
  88. package/dist/{create-PWJDTKDN.js → create-SOLLXXAB.js} +1 -1
  89. package/dist/{demo-kit-QHIDCSBI.js → demo-kit-5UQH2OXC.js} +1 -1
  90. package/dist/{doctor-CGXY4IDE.js → doctor-NQ5PUCUP.js} +1 -1
  91. package/dist/{dotnet-webapi-clean-AVHPJG7Y.js → dotnet-webapi-clean-YEHYIGOT.js} +1 -1
  92. package/dist/{goal-lifecycle-BRFFTIU2.js → goal-lifecycle-IPNY7KNR.js} +1 -1
  93. package/dist/goal-pack-2WV3EA4Y.js +1 -0
  94. package/dist/{gofiber-standard-47S2GYAO.js → gofiber-standard-C44IIQYH.js} +1 -1
  95. package/dist/{gogin-standard-EWB4XNOI.js → gogin-standard-X7VKACVR.js} +1 -1
  96. package/dist/index.d.ts +8 -2
  97. package/dist/index.js +170 -170
  98. package/dist/live-command-Q6E45N7S.js +18 -0
  99. package/dist/{pipeline-DF4UIHAD.js → pipeline-MIMENSI7.js} +1 -1
  100. package/dist/{project-agent-entry-IWUCV72J.js → project-agent-entry-OWLJ3IHQ.js} +1 -1
  101. package/dist/project-intelligence-lens-I67EO6AE.js +1 -0
  102. package/dist/{project-test-coverage-4S7MEQ6T.js → project-test-coverage-OPDVSFPH.js} +1 -1
  103. package/dist/{pythonRapidkitExec-VAW5XE4Z.js → pythonRapidkitExec-44ORGQ4R.js} +1 -1
  104. package/dist/{rust-axum-M5X4ZC4Z.js → rust-axum-JKZTZDRZ.js} +1 -1
  105. package/dist/{springboot-standard-Y5ADLZMQ.js → springboot-standard-PI4FLTAN.js} +1 -1
  106. package/dist/verified-goal-46JWNCDY.js +1 -0
  107. package/dist/{workspace-35Q2IXAR.js → workspace-KO37XHF6.js} +1 -1
  108. package/dist/{workspace-agent-sync-FFNSW2PD.js → workspace-agent-sync-32FIJQBH.js} +1 -1
  109. package/dist/{workspace-archive-ZBCKJHXS.js → workspace-archive-6R5DRNZW.js} +1 -1
  110. package/dist/{workspace-context-IJ36ZP6G.js → workspace-context-JKRPX775.js} +1 -1
  111. package/dist/workspace-contract-4T3NYNK5.js +1 -0
  112. package/dist/workspace-explain-MOGL4GEA.js +1 -0
  113. package/dist/workspace-explain-contract-W2E6LF4Q.js +1 -0
  114. package/dist/{workspace-feedback-RQ4TGJW6.js → workspace-feedback-6VQ7T4CR.js} +1 -1
  115. package/dist/{workspace-foundation-GMGDUMPR.js → workspace-foundation-GHWO3BZU.js} +1 -1
  116. package/dist/workspace-graph-stream-PTVS47NJ.js +1 -0
  117. package/dist/workspace-graph-token-efficiency-Z5JD5NHI.js +1 -0
  118. package/dist/{workspace-history-SYCDK7FO.js → workspace-history-M2K4M2JY.js} +1 -1
  119. package/dist/{workspace-intelligence-5NO4K5SC.js → workspace-intelligence-PJIPTXL3.js} +1 -1
  120. package/dist/{workspace-intelligence-evaluation-CQDKOYZZ.js → workspace-intelligence-evaluation-GONCRE6O.js} +1 -1
  121. package/dist/{workspace-intelligence-runner-FGEBFVVM.js → workspace-intelligence-runner-M47QR3JM.js} +1 -1
  122. package/dist/{workspace-intelligence-runtime-registry-IW6J53LO.js → workspace-intelligence-runtime-registry-FFGQF4A7.js} +1 -1
  123. package/dist/workspace-knowledge-graph-V2EAYDCL.js +1 -0
  124. package/dist/workspace-knowledge-graph-contract-VANN7RCA.js +1 -0
  125. package/dist/{workspace-knowledge-graph-query-ON45H6Y7.js → workspace-knowledge-graph-query-RASPF7FS.js} +1 -1
  126. package/dist/workspace-knowledge-graph-snapshot-5YIG6EMG.js +1 -0
  127. package/dist/{workspace-marker-7NHMDIRL.js → workspace-marker-XGAWZZDX.js} +1 -1
  128. package/dist/workspace-mcp-serve-YRORNE4P.js +3 -0
  129. package/dist/workspace-model-VSVKLX7M.js +1 -0
  130. package/dist/{workspace-onboarding-VS3YYNGK.js → workspace-onboarding-2VMJZVLZ.js} +1 -1
  131. package/dist/{workspace-python-engine-state-J4QKW55K.js → workspace-python-engine-state-BE4A3BL5.js} +1 -1
  132. package/dist/{workspace-readme-G7TZ3V5T.js → workspace-readme-6X3GLTBM.js} +2 -2
  133. package/dist/{workspace-registry-summary-MIDFG6EC.js → workspace-registry-summary-QVSJKKTX.js} +1 -1
  134. package/dist/workspace-repair-engine-WSKV3Q4V.js +3 -0
  135. package/dist/workspace-run-3BXKTLVL.js +1 -0
  136. package/dist/{workspace-verify-4R7QHUPO.js → workspace-verify-EJCSOBIK.js} +1 -1
  137. package/dist/workspace-watch-JTIFBF4Z.js +1 -0
  138. package/docs/SETUP.md +10 -0
  139. package/docs/agent-entry.md +22 -7
  140. package/docs/ci-workflows.md +1 -1
  141. package/docs/commands-reference.md +43 -7
  142. package/docs/contracts/ARTIFACT_CATALOG.md +63 -44
  143. package/docs/contracts/COMMAND_OWNERSHIP_MATRIX.md +1 -0
  144. package/docs/contracts/NAMING_AND_COEXISTENCE.md +20 -18
  145. package/docs/contracts/README.md +4 -3
  146. package/docs/real-world-qualification.md +19 -3
  147. package/docs/workspace-knowledge-graph.md +131 -27
  148. package/docs/workspace-live-activity.md +199 -0
  149. package/docs/workspace-operations.md +54 -9
  150. package/docs/workspace-repair-engine.md +17 -0
  151. package/package.json +1 -1
  152. package/dist/analyze-NUGNB256.js +0 -1
  153. package/dist/autopilot-release-TWJWSVVF.js +0 -1
  154. package/dist/capabilities-command-LHM3XIS6.js +0 -1
  155. package/dist/chunk-2647BYBC.js +0 -1
  156. package/dist/chunk-27UR373Z.js +0 -1
  157. package/dist/chunk-2VJUAKMS.js +0 -2
  158. package/dist/chunk-3A23KJAQ.js +0 -1
  159. package/dist/chunk-4PUJVYRM.js +0 -1
  160. package/dist/chunk-5B2GAZAC.js +0 -5
  161. package/dist/chunk-6DAQ7PYT.js +0 -13
  162. package/dist/chunk-CCAXADKP.js +0 -49
  163. package/dist/chunk-CCDGHPEJ.js +0 -2
  164. package/dist/chunk-CJHWKXDN.js +0 -1
  165. package/dist/chunk-CT4IODPG.js +0 -2
  166. package/dist/chunk-DK6JNE6K.js +0 -2
  167. package/dist/chunk-DOXNVBX6.js +0 -1
  168. package/dist/chunk-DWB2RRF4.js +0 -1
  169. package/dist/chunk-FQSBOLM7.js +0 -1
  170. package/dist/chunk-ILIBOMYL.js +0 -1
  171. package/dist/chunk-ISOOENLW.js +0 -8
  172. package/dist/chunk-J7RU5WR5.js +0 -2
  173. package/dist/chunk-JQLJBK5N.js +0 -1
  174. package/dist/chunk-KANAJH65.js +0 -681
  175. package/dist/chunk-KV6PS54A.js +0 -8
  176. package/dist/chunk-L22EABIC.js +0 -7
  177. package/dist/chunk-MOSXTVPU.js +0 -1
  178. package/dist/chunk-NHTDPXTW.js +0 -4
  179. package/dist/chunk-NZ3WZYD5.js +0 -1
  180. package/dist/chunk-Q2WF7D5U.js +0 -2
  181. package/dist/chunk-RSG2GJXT.js +0 -2
  182. package/dist/chunk-SFO5GVRT.js +0 -1
  183. package/dist/chunk-T5YRFRJV.js +0 -1
  184. package/dist/chunk-THIOE2PB.js +0 -2
  185. package/dist/chunk-TOYN76K4.js +0 -144
  186. package/dist/chunk-U5WVR74V.js +0 -1
  187. package/dist/chunk-UXEO5QCF.js +0 -33
  188. package/dist/chunk-VR6XMUF3.js +0 -2
  189. package/dist/chunk-WY4DOMEA.js +0 -1
  190. package/dist/chunk-XKDR5BGS.js +0 -6
  191. package/dist/chunk-Y5YAP4F3.js +0 -2
  192. package/dist/chunk-ZH7CXQH3.js +0 -94
  193. package/dist/goal-pack-FG3QDNQH.js +0 -1
  194. package/dist/project-intelligence-lens-PZPPSCUW.js +0 -1
  195. package/dist/verified-goal-BBHZRYYH.js +0 -1
  196. package/dist/workspace-contract-JS4LZZQZ.js +0 -1
  197. package/dist/workspace-explain-TITIT5XN.js +0 -1
  198. package/dist/workspace-explain-contract-V2IVSROX.js +0 -1
  199. package/dist/workspace-graph-stream-7UU2YVHC.js +0 -1
  200. package/dist/workspace-graph-token-efficiency-D7CUT6NX.js +0 -1
  201. package/dist/workspace-knowledge-graph-RSDP2E36.js +0 -1
  202. package/dist/workspace-knowledge-graph-snapshot-3FJHH5IK.js +0 -1
  203. package/dist/workspace-mcp-serve-WUIQ2AE6.js +0 -3
  204. package/dist/workspace-model-OKY4CQ3X.js +0 -1
  205. package/dist/workspace-repair-engine-VUBT77Y7.js +0 -3
  206. package/dist/workspace-run-SSF6Z26G.js +0 -1
  207. package/dist/workspace-watch-IOPSHQS5.js +0 -1
@@ -25,13 +25,15 @@ exclude the canonical marker.
25
25
  These paths are relative to each registered project root, not the workspace
26
26
  root:
27
27
 
28
- | Artifact | Writer | Schema / format | Portability and reader purpose |
29
- | ---------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------- |
30
- | `.workspai/workspace-link.local.json` | `adopt`, `import`, project creation, `workspace sync`, `project workspace relink` | `project-workspace-link.v1` | Machine-local absolute binding; always gitignored and never an agent evidence payload |
31
- | `.workspai/agent-entry.v1.json` | Project lens reconciliation and `workspace agent-sync --write` | `workspai.agent-entry.v1` | Portable host-discovery, canonical read-order, authority, and integrity contract |
32
- | `.workspai/reports/project-context-agent.json` | Project lens reconciliation and `workspace agent-sync --write` | `project-context-agent.v1` | Portable bounded model/graph/proof projection for project-local agents |
33
- | `.workspai/PROJECT-GROUNDING.md` | Project lens reconciliation | Markdown | Portable human/agent entry guide with path-free workspace references |
34
- | `AGENTS.md` managed section | Project lens reconciliation in `managed` mode | Managed Markdown block | Preserves user content and routes compatible agents to project/workspace evidence |
28
+ | Artifact | Writer | Schema / format | Portability and reader purpose |
29
+ | ---------------------------------------------------------- | --------------------------------------------------------------------------------- | -------------------------------------- | -------------------------------------------------------------------------------------- |
30
+ | `.workspai/workspace-link.local.json` | `adopt`, `import`, project creation, `workspace sync`, `project workspace relink` | `project-workspace-link.v1` | Machine-local absolute binding; always gitignored and never an agent evidence payload |
31
+ | `.workspai/agent-entry.v1.json` | Project lens reconciliation and `workspace agent-sync --write` | `workspai.agent-entry.v1` | Portable host-discovery, canonical read-order, authority, and integrity contract |
32
+ | `.workspai/reports/project-context-agent.json` | Project lens reconciliation and `workspace agent-sync --write` | `project-context-agent.v1` | Portable bounded model/graph/proof projection for project-local agents |
33
+ | `.workspai/reports/project-knowledge-graph-reference.json` | Workspace Model publication | `project-knowledge-graph-reference.v1` | Small portable reference whose projection hash is verified against the canonical graph |
34
+ | `.workspai/PROJECT-GROUNDING.md` | Project lens reconciliation | Markdown | Portable human/agent entry guide with path-free workspace references |
35
+ | `.agents/skills/workspai-*/SKILL.md` | Project lens reconciliation | Agent Skill | Project-native wrappers that resolve canonical workspace playbooks without local paths |
36
+ | `AGENTS.md` managed section | Project lens reconciliation in `managed` mode | Managed Markdown block | Preserves user content and routes compatible agents to project/workspace evidence |
35
37
 
36
38
  The project link is validated against the canonical workspace contract and a
37
39
  SHA-256 binding over workspace identity, project identity, portable relative
@@ -40,13 +42,20 @@ absolute paths before writing. `managed`, `local`, and `off` grounding modes
40
42
  control portable project surfaces and converge by removing stale managed
41
43
  sections and ignore rules during transitions; they never make the
42
44
  machine-local link publishable. The context is bounded but not count-only: it
43
- includes topology, API/deployment/test surfaces, blockers, portable proofs,
44
- and model/graph freshness for the selected project.
45
+ includes compact topology, representative API/deployment/test surfaces,
46
+ blockers, portable proof locators, and model/graph freshness for the selected
47
+ project. Complete graph evidence is retrieved through bounded search instead
48
+ of duplicated into every project.
45
49
 
46
50
  `agent bootstrap --json` and `project agent-entry verify --json` emit a
47
51
  non-persisted `workspai.agent-bootstrap-receipt.v1` payload. The receipt proves
48
52
  the selected host route, contract validity, integrity, persisted and live
49
53
  freshness, and active Goal bindings without exposing the machine-local link.
54
+ Its top-level status covers agent grounding only; project-environment and
55
+ release readiness are emitted as separate dimensions so consumers cannot treat
56
+ successful grounding as release approval. The receipt exposes distinct project
57
+ reference and workspace graph paths and blocks when the project reference hash
58
+ is not the exact current canonical projection.
50
59
 
51
60
  ## Naming conventions
52
61
 
@@ -123,7 +132,8 @@ Entries beginning with `reports/` are relative to `.workspai/`; paths such as
123
132
  | Command | Artifact | Schema | Contract file |
124
133
  | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------- |
125
134
  | `workspace model --write` | `workspace-model.json` | `workspace-model.v1` | `contracts/workspace-intelligence/workspace-model.v1.json` |
126
- | `workspace model --write` | `workspace-knowledge-graph.json` | `workspace-knowledge-graph.v1` | `contracts/workspace-intelligence/workspace-knowledge-graph.v1.json` |
135
+ | `workspace model --write` | `workspace-knowledge-graph.json` (canonical workspace aggregate) | `workspace-knowledge-graph.v1` | `contracts/workspace-intelligence/workspace-knowledge-graph.v1.json` |
136
+ | `workspace model --write` | Project-local `.workspai/reports/project-knowledge-graph-reference.json` | `project-knowledge-graph-reference.v1` | `contracts/workspace-intelligence/project-knowledge-graph-reference.v1.json` |
127
137
  | `workspace snapshot` | `workspace-model-snapshot.json` | `workspace-model-snapshot.v1` | `contracts/workspace-intelligence/workspace-model-snapshot.v1.json` |
128
138
  | `workspace diff` | `workspace-model-diff-last-run.json` | `workspace-model-diff.v1` | `contracts/workspace-intelligence/workspace-model-diff.v1.json` |
129
139
  | `workspace impact --from <diff>` | `workspace-impact-last-run.json` | `workspace-impact.v1` | `contracts/workspace-intelligence/workspace-impact.v1.json` |
@@ -152,10 +162,15 @@ status/exit coherence, hard-failure skip propagation, and the aggregate verdict.
152
162
  See [Unified Workspace Intelligence Runner](../workspace-intelligence-runner.md)
153
163
  for the normative user and integration semantics.
154
164
 
155
- `workspace-model.json` and `workspace-knowledge-graph.json` are published under
156
- one workspace lock as a rollback-capable artifact transaction. Individual file
157
- replacement is atomic, and a partial set failure restores both preimages. The
158
- model is canonical; the graph is derived and cannot mutate it during the run.
165
+ `workspace-model.json`, the canonical workspace `workspace-knowledge-graph.json`,
166
+ and each registered project's compact
167
+ `.workspai/reports/project-knowledge-graph-reference.json` are published under
168
+ one workspace lock as a rollback-capable multi-root artifact transaction.
169
+ Individual replacement is atomic, and a partial set failure restores every
170
+ preimage. Each reference integrity-binds the exact project projection and points
171
+ to the canonical aggregate through a portable `workspace:` URI, avoiding graph
172
+ duplication in every linked repository. The model remains canonical and the
173
+ graph remains derived.
159
174
  The graph contract fixes `source.kind` to `workspace-model`,
160
175
  `source.artifact` to `.workspai/reports/workspace-model.json`, and `source.hash`
161
176
  to the model's stable structural SHA-256. Current-state consumers must reject a
@@ -397,9 +412,10 @@ Separate from the on-disk artifacts above, Workspai CLI emits a structured
397
412
  **NDJSON log stream on stderr** when `--log-format json` (or `RAPIDKIT_LOG_FORMAT=json`)
398
413
  is set. This is the deterministic progress/outcome channel for IDEs and CI.
399
414
 
400
- | Stream | Schema version | Contract file | Doc |
401
- | ----------------------- | ------------------ | --------------------------------- | ---------------------------------------------------- |
402
- | CLI log events (stderr) | `cli-log-event-v1` | `contracts/cli-log-event.v1.json` | [CLI_LOG_EVENT_STREAM.md](./CLI_LOG_EVENT_STREAM.md) |
415
+ | Stream | Schema version | Contract file | Doc |
416
+ | ------------------------------------------- | ----------------------------- | -------------------------------------------- | ------------------------------------------------------- |
417
+ | CLI log events (stderr) | `cli-log-event-v1` | `contracts/cli-log-event.v1.json` | [CLI_LOG_EVENT_STREAM.md](./CLI_LOG_EVENT_STREAM.md) |
418
+ | Live activity events (machine-local NDJSON) | `workspace-activity-event.v1` | `contracts/workspace-activity-event.v1.json` | [Workspai Live Activity](../workspace-live-activity.md) |
403
419
 
404
420
  **Channel rule:** command **results** go to stdout (`--json`); **progress/lifecycle**
405
421
  events go to stderr (`--log-format json`). The two never mix.
@@ -431,8 +447,9 @@ canonical file. Legacy files remain readable during the compatibility window.
431
447
  2. **Workspace Intelligence chain:** run `workspace intelligence run --for-agent generic --strict --json` to preserve Model → Diff → Impact → Doctor + Contract Verify + Analyze → Readiness → Verify → Context → Agent Sync → Explain. `pipeline` is the broader governance/release orchestrator and `autopilot` is a separate release surface; neither redefines the canonical chain. Use `pipeline-last-run.json` only for the pipeline orchestration summary.
432
448
  3. **Do not** use `workspace.json.projects` (removed in schema 1.0).
433
449
  4. Prefer `schemaVersion` constants in each artifact; legacy `v1` on readiness is accepted when reading old reports.
434
- 5. **Agent retrieval:** start with `AGENTS.md` and `.workspai/reports/INDEX.json`, then use `workspace graph search <query> --limit <n> --json` or MCP `searchWorkspaceGraph` for question-sized facts. Use `--scope project:<name>` when the task has one registered project boundary, inspect `budget.omitted` before assuming the result is complete, and follow returned proof paths to source evidence. Read the full context, model, or graph only when the bounded result is insufficient.
450
+ 5. **Agent retrieval:** inside an adopted project, start with `.workspai/agent-entry.v1.json` (or the host projection that routes to it), then read `.workspai/reports/project-context-agent.json`; its `intelligence.projection` states exactly how much representative graph data was bounded. At workspace scope, start with `AGENTS.md` and `.workspai/reports/INDEX.json`. In either scope, use `workspace graph search <query> --limit <n> --json` or MCP `searchWorkspaceGraph` for question-sized facts. Use `--scope project:<name>` for one registered project, inspect `budget.omitted` before assuming completeness, and follow proof paths to source evidence. Read the full context, model, or graph only when the bounded result is insufficient.
435
451
  6. **Agent customization state:** use `.workspai/reports/agent-customization-pack.json` to inspect generated surfaces and drift; regenerate with `workspace agent-sync --write --refresh-context --preset enterprise`.
452
+ 7. **Operational Skill selection:** use `.workspai/reports/workspace-skills-index.json`. Its `selection.decisions` distinguishes evidence-backed generated Skills from suppressed candidates and records scoped projects and supporting signals. A missing specialized Skill means the current canonical evidence did not prove that capability; it is not permission to assume one.
436
453
 
437
454
  ## Agent customization files (repo hooks)
438
455
 
@@ -443,32 +460,34 @@ failure, all touched files are restored; an interrupted transaction is recovered
443
460
  before the next agent-sync. `agent-customization-pack.json` is written last and
444
461
  serves as the completed-generation marker.
445
462
 
446
- | Path | Consumer |
447
- | ----------------------------------------------------------------------- | -------------------------------------------------------------- |
448
- | `AGENTS.md` | Copilot, Cursor, Claude Code, Codex, Grok (open standard) |
449
- | `.github/copilot-instructions.md` | GitHub Copilot / VS Code Chat |
450
- | `.github/instructions/workspai-workspace.instructions.md` | Copilot workspace scope and command discipline |
451
- | `.github/instructions/workspai-evidence.instructions.md` | Copilot scoped `.workspai/**` and compatibility evidence rules |
452
- | `.github/prompts/workspai-diagnose.prompt.md` | Copilot prompt library |
453
- | `.github/prompts/workspai-repair.prompt.md` | Copilot repair workflow prompt |
454
- | `.github/prompts/workspai-release-readiness.prompt.md` | Copilot release readiness workflow prompt |
455
- | `.github/prompts/workspai-project-onboard.prompt.md` | Copilot project onboarding workflow prompt |
456
- | `.github/prompts/workspai-adopt-project.prompt.md` | Copilot adopt/import workflow prompt |
457
- | `.github/skills/workspai-grounding/SKILL.md` | Copilot skills |
458
- | `.github/skills/workspai-workspace-intelligence/SKILL.md` | Enterprise Workspace Intelligence skill |
459
- | `.github/skills/workspai-workspace-intelligence/resources/mcp-tools.md` | MCP tool and evidence-retrieval reference |
460
- | `.github/agents/workspai-advisor.agent.md` | Read-only workspace advisor agent |
461
- | `.github/agents/workspai-repair.agent.md` | Blocker repair agent |
462
- | `.github/agents/workspai-release.agent.md` | Release safety agent |
463
- | `.github/agents/workspai-project-onboarder.agent.md` | Project onboarding agent |
464
- | `.cursor/rules/workspai-grounding.mdc` | Cursor always-on rule |
465
- | `CLAUDE.md` | Claude Code (imports `@AGENTS.md`) |
466
- | `.claude/rules/workspai-evidence.md` | Claude Code scoped evidence rule |
467
- | `.claude/rules/rapidkit-evidence.md` | Legacy compatibility alias pointing to the canonical rule |
468
- | `.workspai/AGENT-GROUNDING.md` | Tool-agnostic operator doc |
469
- | `.workspai/reports/agent-customization-pack.json` | Versioned output inventory, target matrix, drift state |
470
- | `.workspai/reports/workspai-mcp-design.json` | Read-mostly MCP-ready design manifest |
471
- | `.vscode/workspai-agent-hooks.json` | Optional advisory VS Code agent hooks (`--experimental-hooks`) |
463
+ | Path | Consumer |
464
+ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
465
+ | `AGENTS.md` | Copilot, Cursor, Claude Code, Codex, Grok (open standard) |
466
+ | `.agents/skills/workspai-grounding/SKILL.md` | Provider-neutral Agent Skills grounding |
467
+ | `.agents/skills/workspai-*/SKILL.md` | Generated workspace operational skills |
468
+ | `.github/copilot-instructions.md` | GitHub Copilot / VS Code Chat |
469
+ | `.github/instructions/workspai-workspace.instructions.md` | Copilot workspace scope and command discipline |
470
+ | `.github/instructions/workspai-evidence.instructions.md` | Copilot scoped `.workspai/**` and compatibility evidence rules |
471
+ | `.github/prompts/workspai-diagnose.prompt.md` | Copilot prompt library |
472
+ | `.github/prompts/workspai-repair.prompt.md` | Copilot repair workflow prompt |
473
+ | `.github/prompts/workspai-release-readiness.prompt.md` | Copilot release readiness workflow prompt |
474
+ | `.github/prompts/workspai-project-onboard.prompt.md` | Copilot project onboarding workflow prompt |
475
+ | `.github/prompts/workspai-adopt-project.prompt.md` | Copilot adopt/import workflow prompt |
476
+ | `.github/skills/workspai-grounding/SKILL.md` | Copilot skills |
477
+ | `.github/skills/workspai-workspace-intelligence/SKILL.md` | Enterprise Workspace Intelligence skill |
478
+ | `.github/skills/workspai-workspace-intelligence/resources/mcp-tools.md` | MCP tool and evidence-retrieval reference |
479
+ | `.github/agents/workspai-advisor.agent.md` | Read-only workspace advisor agent |
480
+ | `.github/agents/workspai-repair.agent.md` | Blocker repair agent |
481
+ | `.github/agents/workspai-release.agent.md` | Release safety agent |
482
+ | `.github/agents/workspai-project-onboarder.agent.md` | Project onboarding agent |
483
+ | `.cursor/rules/workspai-grounding.mdc` | Cursor always-on rule |
484
+ | `CLAUDE.md` | Claude Code (imports `@AGENTS.md`) |
485
+ | `.claude/rules/workspai-evidence.md` | Claude Code scoped evidence rule |
486
+ | `.claude/rules/rapidkit-evidence.md` | Legacy compatibility alias pointing to the canonical rule |
487
+ | `.workspai/AGENT-GROUNDING.md` | Tool-agnostic operator doc |
488
+ | `.workspai/reports/agent-customization-pack.json` | Versioned output inventory, target matrix, drift state |
489
+ | `.workspai/reports/workspai-mcp-design.json` | Implemented read-mostly MCP runtime manifest, served/planned tool inventory, and protocol capabilities |
490
+ | `.vscode/workspai-agent-hooks.json` | Optional advisory VS Code agent hooks (`--experimental-hooks`) |
472
491
 
473
492
  Some `rapidkit-*` prompt, skill, Cursor, MCP-design, and hook paths remain available for older consumers during the rebrand window. New consumers should use the `workspai-*` paths first.
474
493
 
@@ -36,6 +36,7 @@ These commands are implemented and orchestrated by Workspai CLI:
36
36
  - `goal`
37
37
  - `agent`
38
38
  - `project`
39
+ - `live`
39
40
  - `shell activate`
40
41
 
41
42
  Reason: workspace-level policy, registry, and platform orchestration live in npm wrapper.
@@ -4,19 +4,19 @@ Rules for **operational intelligence** artifacts so npm CLI, VS Code extension,
4
4
 
5
5
  ## Canonical vs generated surfaces
6
6
 
7
- | Layer | Canonical (workspace-native) | Generated (agent-sync) |
8
- | ----- | ---------------------------- | ---------------------- |
9
- | Operational playbooks | `.workspai/skills/{skillId}.md` | Legacy `.rapidkit/skills/{legacySkillId}.md` read fallback |
10
- | Skills index | `.workspai/reports/workspace-skills-index.json` | — |
11
- | Copilot skill umbrella | `.github/skills/workspai-workspace-intelligence/SKILL.md` | `.github/skills/rapidkit-workspace-intelligence/SKILL.md` legacy consumer surface |
12
- | Explain report | `.workspai/reports/workspace-explain-last-run.json` | — |
13
- | Action / repair feedback | `.workspai/reports/workspace-intelligence-history.json` (`kind: agent-action`, `doctor-fix`) | — |
7
+ | Layer | Canonical (workspace-native) | Generated (agent-sync) |
8
+ | ------------------------ | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
9
+ | Operational playbooks | `.workspai/skills/{skillId}.md` | Legacy `.rapidkit/skills/{legacySkillId}.md` read fallback |
10
+ | Skills index | `.workspai/reports/workspace-skills-index.json` | — |
11
+ | Copilot skill umbrella | `.github/skills/workspai-workspace-intelligence/SKILL.md` | `.github/skills/rapidkit-workspace-intelligence/SKILL.md` legacy consumer surface |
12
+ | Explain report | `.workspai/reports/workspace-explain-last-run.json` | — |
13
+ | Action / repair feedback | `.workspai/reports/workspace-intelligence-history.json` (`kind: agent-action`, `doctor-fix`) | — |
14
14
 
15
- **Rule:** Never add a standalone `workspace skills generate` command. Operational skills are produced only by `workspace agent-sync --write` (extend the Agent Customization Pack).
15
+ **Rule:** Never add a standalone `workspace skills generate` command. Operational skills are produced only by `workspace agent-sync --write` (extend the Agent Customization Pack). Templates are candidates, not guaranteed output: agent-sync materializes a candidate only when the canonical model, graph, contract, or command surface proves it applies. The skills index records generated and suppressed decisions with their evidence signals.
16
16
 
17
17
  ## Skill identifiers
18
18
 
19
- Built-in operational skill ids use the `workspai-*` prefix:
19
+ Built-in operational skill candidates use the `workspai-*` prefix:
20
20
 
21
21
  - `workspai-diagnose-api-failure`
22
22
  - `workspai-release-readiness`
@@ -27,17 +27,19 @@ Built-in operational skill ids use the `workspai-*` prefix:
27
27
  Paths are derived from id via `operationalSkillPath()` in `src/contracts/workspace-artifact-paths.ts`.
28
28
  Legacy `rapidkit-*` skill and prompt paths may remain for older consumers during the rebrand window; new consumers should read the `workspai-*` paths first.
29
29
 
30
+ `workspai-release-readiness` is workspace-applicable. API diagnosis, schema migration, dependency upgrade, and contract rename are emitted only for projects with matching evidence. Runtime, test, delivery, and polyglot skills are derived dynamically. Every emitted skill states why it exists, its scoped projects, observed signals, registered lifecycle boundary, and safe verification commands. Absence of evidence suppresses a skill rather than presenting a generic playbook as a detected capability.
31
+
30
32
  ## Command coexistence
31
33
 
32
- | User intent | Command | Notes |
33
- | ----------- | ------- | ----- |
34
- | Project / release / blocker narrative | `workspace explain …` | Primary explain surface |
35
- | Shorthand alias | `workspace why …` | Same parser as `explain` |
36
- | Diff → blast radius → gates | `workspace trace --from <diff>` | Slice of explain (`kind: trace`) |
37
- | Graph node centrality | `workspace graph explain <project>` | Graph-topology slice; see **Graph explain coexistence** below |
38
- | Record agent outcome | `workspace feedback record --json` | Appends `kind: agent-action` to history, no separate feedback file |
39
- | Record Doctor repair outcome | `doctor workspace|project --fix --json` | Writes `doctor-fix-result-last-run.json` and appends `kind: doctor-fix` to history |
40
- | MCP read bridge | `workspace mcp serve` | Read-mostly stdio JSON-RPC; maps Phase 4 explain + skills tools |
34
+ | User intent | Command | Notes |
35
+ | ------------------------------------- | ----------------------------------- | ------------------------------------------------------------------ |
36
+ | Project / release / blocker narrative | `workspace explain …` | Primary explain surface |
37
+ | Shorthand alias | `workspace why …` | Same parser as `explain` |
38
+ | Diff → blast radius → gates | `workspace trace --from <diff>` | Slice of explain (`kind: trace`) |
39
+ | Graph node centrality | `workspace graph explain <project>` | Graph-topology slice; see **Graph explain coexistence** below |
40
+ | Record agent outcome | `workspace feedback record --json` | Appends `kind: agent-action` to history, no separate feedback file |
41
+ | Record Doctor repair outcome | `doctor workspace | project --fix --json` | Writes `doctor-fix-result-last-run.json` and appends `kind: doctor-fix` to history |
42
+ | MCP read bridge | `workspace mcp serve` | Read-mostly stdio JSON-RPC; maps Phase 4 explain + skills tools |
41
43
 
42
44
  ## Graph explain coexistence (4.11)
43
45
 
@@ -28,8 +28,8 @@ Canonical JSON lives in **`../../contracts/`** (CLI package root, published in t
28
28
  | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
29
29
  | `npm run generate:contracts` | Regenerate runtime surface, create planner, agent customization pack, import-stack parity, module-layout, infra-stack |
30
30
  | `npm run check:generated-contracts` | Verify committed JSON matches generators |
31
- | `npm run sync:shared-contracts` | Generate canonical JSON and sync root plus locally available consumer mirrors |
32
- | `npm run sync:parity-snapshot` | Compatibility alias for canonical and consumer mirror synchronization |
31
+ | `npm run sync:shared-contracts` | Generate canonical JSON and sync root plus locally available consumer mirrors |
32
+ | `npm run sync:parity-snapshot` | Compatibility alias for canonical and consumer mirror synchronization |
33
33
  | `npm run check:parity-snapshot` | Verify mirrors match canonical |
34
34
  | `npm run contracts:prepush` | Sync local consumers and require generated canonical CLI mirrors to be committed |
35
35
  | `npm run validate:contracts` | Shared-contract checks and focused contract tests |
@@ -88,7 +88,7 @@ Published under `../../contracts/` (not duplicated in this folder):
88
88
  - `pipeline-last-run.v1.json` — governance pipeline orchestration
89
89
  - `project-entry-capability.v1.json` — open-ended adopt/import contract for readable projects
90
90
  - `workspace-intelligence/project-agent-entry.v1.json` — portable host discovery, canonical read order, authority boundaries, and integrity for an adopted project
91
- - `workspace-intelligence/agent-bootstrap-receipt.v1.json` — per-session proof of workspace membership, host coverage, schema validity, freshness, live inputs, and active Goal bindings
91
+ - `workspace-intelligence/agent-bootstrap-receipt.v1.json` — per-session proof of workspace membership, host coverage, schema validity, freshness, live inputs, active Goal bindings, and explicitly separated grounding/environment/release readiness
92
92
  - `adopt-effects.v1.json` — dry-run disclosure of project metadata, conditional repository-control reconciliation, and workspace operations before adoption
93
93
  - `create-planner-capabilities.v1.json` — native, official, and existing capability lanes
94
94
  - `agent-customization-pack.v1.json` — generated instructions, prompts, skills, agents, optional hooks, MCP-ready design metadata, target matrix, and drift state for AI agent surfaces
@@ -96,6 +96,7 @@ Published under `../../contracts/` (not duplicated in this folder):
96
96
  - `project-archive.v1.json`, `workspace-snapshot.v1.json`, and `workspace-snapshot.v2.json` — recoverable lifecycle records
97
97
  - `infra-plan.v1.json`, `private-product-manifest.v1.json`, and `product-factory-plan.v1.json` — infrastructure and product planning payloads
98
98
  - `workspace-model-cache.v1.json`, `workspace-watch-event.v1.json`, `doctor-project-scan.v2.json`, and `doctor-workspace-cache.v2.json` — cache/watch/diagnostic support contracts
99
+ - `workspace-activity-event.v1.json` — local-first run/block/operation/touch stream consumed by `workspai live`; observational only, never Evidence/Decision authority
99
100
 
100
101
  Workspace intelligence (`../../contracts/workspace-intelligence/`):
101
102
 
@@ -66,6 +66,17 @@ npm run test:real-world:enterprise -- \
66
66
  --report "$QUALIFICATION_ROOT/enterprise-command-surface.json"
67
67
  ```
68
68
 
69
+ The enterprise harness resolves a real project from the graph, workspace
70
+ contract, model, or imported-project registry. It never assumes a fixture
71
+ project name. Snapshot names are unique per run, so the harness can be repeated
72
+ against the same isolated workspace without creating a false lifecycle failure.
73
+ Graph queries may target either managed or linked projects. Project archive and
74
+ delete dry runs use a separate lifecycle target and are emitted only for a
75
+ managed project physically contained by the workspace. When a workspace has
76
+ only linked external projects, the report records
77
+ `coverage.projectLifecycle: skipped-no-managed-project`; it does not misreport
78
+ that safety boundary as a command failure.
79
+
69
80
  ## Safety and interpretation
70
81
 
71
82
  - Reference repositories are cloned locally with `git clone --shared`; no
@@ -82,13 +93,18 @@ npm run test:real-world:enterprise -- \
82
93
  - Dependency installation, project build/test/start/init, infrastructure
83
94
  mutation, publication, and model network calls are not permitted.
84
95
  - Agent customization and destructive project operations are dry-run only.
96
+ - Runtime candidates describe observed nested composition; the authoritative
97
+ project runtime controls repair-adapter assertions. An aggregate boundary with
98
+ runtime `unknown` therefore follows the governed manual-repair path instead of
99
+ promoting its first nested runtime candidate.
85
100
  - Goal qualification publishes one system-understanding Goal inside the
86
101
  isolated test workspace, validates its lifecycle binding, and previews
87
102
  runtime-specific coverage and release-readiness goals without executing
88
103
  project tests or mutating project source.
89
- - Exit codes `1` and `2` may be valid domain outcomes when their documented JSON
90
- contracts parse successfully; unexpected process, timeout, buffer, or schema
91
- failures fail qualification.
104
+ - Exit codes `1` and `2` are accepted only for commands whose contract explicitly
105
+ permits a governed block and only when the JSON payload contains a recognized
106
+ blocked/not-ready outcome. Graph lookup, project lifecycle, process, timeout,
107
+ buffer, malformed JSON, and schema failures fail qualification.
92
108
  - A real repository warning remains evidence, not a CLI defect. Fix the CLI only
93
109
  when detection, classification, contract, portability, or command semantics
94
110
  are wrong.
@@ -56,6 +56,9 @@ Useful follow-up questions:
56
56
  # What APIs and endpoints exist?
57
57
  npx workspai workspace graph entities endpoint --json
58
58
 
59
+ # Which languages are evidenced in one project? The flag form is equivalent.
60
+ npx workspai workspace graph entities --kind language --scope project:billing --limit 100 --json
61
+
59
62
  # Why does Workspai believe this entity exists?
60
63
  npx workspai workspace graph evidence "GET /users" --json
61
64
 
@@ -116,6 +119,26 @@ symbols are not implied to have been extracted. The graph diagnostic reports
116
119
  the sampled and indexed candidate counts and must not be read as exhaustive
117
120
  symbol coverage.
118
121
 
122
+ Language inventory is intentionally broader than source-structure parsing.
123
+ The complete eligible-path inventory recognizes systems languages and compiler
124
+ DSLs such as Assembly, CUDA, Fortran, HLSL, LLVM IR/MIR, MLIR, Objective-C,
125
+ OpenCL, and TableGen even when Workspai has no safe generic symbol parser for
126
+ that syntax. Language counts therefore remain project-wide inventory facts;
127
+ symbols, imports, and calls remain bounded to parser-supported source inputs.
128
+
129
+ Call binding follows the same proof boundary. Workspai binds a call only when
130
+ its target is uniquely defined in the same file or in a locally imported file
131
+ that the Graph already resolved. Overloads, dynamic dispatch, and ambiguous
132
+ names remain explicit unknowns for compiler or language-server evidence; the
133
+ CLI does not turn a repository-wide text match into semantic certainty.
134
+
135
+ When a previous graph has the same project set, provider versions, and live
136
+ project fingerprints, unchanged project slices are reused and only changed
137
+ projects repeat the expensive semantic scan. Workspace-level CI, governance,
138
+ infrastructure, and topology providers still run against the complete current
139
+ workspace. The `incremental-project-cache` provider receipt records reused and
140
+ rescanned scope counts. A provider-version change forces a full rebuild.
141
+
119
142
  ### Fast reads without stale answers
120
143
 
121
144
  The read-oriented `search`, `entities`, `evidence`, `path`, and `benchmark`
@@ -127,13 +150,14 @@ only when all of the following remain true:
127
150
  - no proof is marked stale;
128
151
  - the graph fingerprint contains exactly one workspace scope and every
129
152
  canonical project scope with compatible scan limits;
130
- - a fresh bounded scan produces the same aggregate live-input hash.
153
+ - a fresh complete eligible-path inventory produces the same aggregate
154
+ live-input hash.
131
155
 
132
156
  Git-backed scopes use `git-worktree-v2`, covering tracked tree state plus
133
- modified, deleted, renamed, untracked, and relevant ignored files. If Git cannot
157
+ modified, deleted, renamed, and non-ignored untracked files. If Git cannot
134
158
  prove the scanned inventory safely—for example because a traversed initialized
135
159
  submodule or hidden index flag is present—Workspai falls back to
136
- `content-merkle-v1`, which hashes each bounded file by portable path and content.
160
+ `content-merkle-v1`, which hashes each eligible file by portable path and content.
137
161
  The graph records the combined strategy as `hybrid-git-content-v2`.
138
162
 
139
163
  A miss rebuilds from live sources. Use `--refresh-graph` when the caller requires
@@ -143,23 +167,57 @@ an explicit rebuild even if the persisted snapshot is compatible:
143
167
  npx workspai workspace graph search "protobuf ownership" --refresh-graph --json
144
168
  ```
145
169
 
146
- The fingerprint proves compatibility of the exact bounded provider inventory;
147
- if a scope reports `truncated: true`, it must not be interpreted as proof about
148
- files beyond that declared limit.
170
+ The fingerprint normally covers every eligible Git-tracked and non-ignored
171
+ untracked file in each project scope. The default `500000`-file limit is an
172
+ emergency safety boundary, not a semantic completeness target. A scope with
173
+ `truncated: true` or `inventoryMode: emergency-bounded` must not be interpreted
174
+ as proof about files beyond that boundary. Git inventories publish an exact
175
+ `eligibleFileCount`; a non-Git fallback that reaches the boundary publishes
176
+ `eligibleFileCountExact: false` instead of inventing a total.
177
+
178
+ Path inventory and content-heavy extraction have separate budgets. Complete
179
+ inventory feeds freshness, manifest discovery, language counts, architecture
180
+ contracts, CI, ownership, infrastructure, and targeted providers. Semantic and
181
+ deep providers receive deterministic adaptive selections distributed across
182
+ component and language buckets. This prevents a large package, vendored tree,
183
+ or alphabetically early directory from starving the rest of a polyglot
184
+ monorepo. Every provider publishes `inputCoverage`; successful execution over a
185
+ bounded selection is reported as `partial`, never as exhaustive coverage.
186
+
187
+ Defaults scale with the eligible project population up to these safety
188
+ ceilings:
189
+
190
+ - complete inventory emergency bound: `500000` files per project;
191
+ - adaptive semantic input: up to `100000` files per project;
192
+ - adaptive deep-provider input: up to `25000` files per project;
193
+ - source extraction: up to `20000` files per project.
194
+
195
+ Use `--graph-inventory-limit`, `--graph-semantic-budget`,
196
+ `--graph-deep-budget`, and `--graph-source-budget` on `workspace graph`, or the
197
+ equivalent `WORKSPAI_GRAPH_INVENTORY_LIMIT`,
198
+ `WORKSPAI_GRAPH_SEMANTIC_BUDGET`, `WORKSPAI_GRAPH_DEEP_BUDGET`, and
199
+ `WORKSPAI_GRAPH_SOURCE_BUDGET` environment variables for non-interactive model,
200
+ Adopt, and Intelligence runs. Increasing deep budgets affects cost, not the
201
+ canonical per-project storage boundary.
202
+
203
+ Workspai-generated agent entry projections are downstream consumers and are
204
+ excluded from Graph inventory and Git diff hashing. Regenerating `AGENTS.md`,
205
+ adapter entry files, or the Amazon Q entry rule therefore cannot invalidate the
206
+ Graph that produced them or become circular architecture evidence.
149
207
 
150
208
  ## Pick the command by question
151
209
 
152
- | You want to know… | Use |
153
- | ---------------------------------------------------- | ------------------------------------------------------- |
154
- | What is relevant to a natural-language question? | `workspace graph search <query> --limit <n> --json` |
155
- | Which entities of one type exist? | `workspace graph entities <kind> --json` |
156
- | Why does Workspai believe an item exists? | `workspace graph evidence <entity-or-relation> --json` |
157
- | How are two things connected? | `workspace graph path <from> <to> --json` |
158
- | What changed between graph revisions? | `workspace graph overlay --from <graph.json> --json` |
159
- | What is the full portable graph? | `workspace graph emit --output graph.json --json` |
160
- | How do I render the project topology? | `workspace graph dot\|mermaid [--output <file>]` |
161
- | How do I export to semantic or graph-analysis tools? | `workspace graph jsonld\|graphml\|gexf --output <file>` |
162
- | How much retrieval payload did one query avoid? | `workspace graph benchmark <query> --limit <n> --json` |
210
+ | You want to know… | Use |
211
+ | ---------------------------------------------------- | ----------------------------------------------------------------------------- |
212
+ | What is relevant to a natural-language question? | `workspace graph search <query> --limit <n> --json` |
213
+ | Which entities of one type exist? | `workspace graph entities <kind> [--scope project:name] [--limit <n>] --json` |
214
+ | Why does Workspai believe an item exists? | `workspace graph evidence <entity-or-relation> --json` |
215
+ | How are two things connected? | `workspace graph path <from> <to> --json` |
216
+ | What changed between graph revisions? | `workspace graph overlay --from <graph.json> --json` |
217
+ | What is the full portable graph? | `workspace graph emit --output graph.json --json` |
218
+ | How do I render the project topology? | `workspace graph dot\|mermaid [--output <file>]` |
219
+ | How do I export to semantic or graph-analysis tools? | `workspace graph jsonld\|graphml\|gexf --output <file>` |
220
+ | How much retrieval payload did one query avoid? | `workspace graph benchmark <query> --limit <n> --json` |
163
221
 
164
222
  `graph emit --json` writes the complete dependency and Knowledge Graph to
165
223
  stdout and can be very large. Automation, IDEs, and agents should pass
@@ -275,9 +333,10 @@ in `project.runtimeCandidates` and aggregates them into
275
333
  monorepo's internal services, contracts, delivery surfaces, and proofs without
276
334
  pretending that the primary runtime describes the whole repository.
277
335
 
278
- The two artifacts are published under one workspace lock using a
279
- rollback-capable artifact transaction. Each file replacement is atomic; if any
280
- write fails, Workspai restores both preimages. `graph.source.kind` is fixed to
336
+ The model, workspace aggregate, and all project graph artifacts are published
337
+ under one workspace lock using a rollback-capable multi-root artifact
338
+ transaction. Each file replacement is atomic; if any write fails, Workspai
339
+ restores every preimage. `graph.source.kind` is fixed to
281
340
  `workspace-model`, `graph.source.artifact` is fixed to
282
341
  `.workspai/reports/workspace-model.json`, and `graph.source.hash` contains the
283
342
  stable structural hash of the persisted model. A current-state consumer must
@@ -357,14 +416,23 @@ into a false “complete” claim.
357
416
 
358
417
  ## Outputs and consumers
359
418
 
360
- `workspace model --write` publishes these two artifacts as one locked,
361
- rollback-capable artifact set:
419
+ `workspace model --write` publishes the canonical model, one complete workspace
420
+ aggregate, and one compact integrity-bound reference for every registered
421
+ project as one locked, rollback-capable multi-root artifact set:
362
422
 
363
423
  ```text
364
- .workspai/reports/workspace-model.json
365
- .workspai/reports/workspace-knowledge-graph.json
424
+ <workspace>/.workspai/reports/workspace-model.json
425
+ <workspace>/.workspai/reports/workspace-knowledge-graph.json
426
+ <project>/.workspai/reports/project-knowledge-graph-reference.json
366
427
  ```
367
428
 
429
+ The workspace artifact preserves all registered projects and cross-project
430
+ relations for Graph, Doctor, Context, Goal, and MCP consumers. Each project
431
+ reference carries source and projection hashes, summary counts, a bounded query,
432
+ and a portable canonical URI; it does not duplicate graph entities or proofs.
433
+ Nested and external projects follow the same rule. Any publication failure
434
+ restores the model, aggregate, and all project reference preimages together.
435
+
368
436
  The Knowledge Graph is consumed by:
369
437
 
370
438
  - `workspace graph search|entities|evidence|path|overlay`;
@@ -385,8 +453,12 @@ The Knowledge Graph is consumed by:
385
453
  topology, rich graph, and quality summary in one response.
386
454
 
387
455
  The complete graph is an interchange artifact, not a prompt. Agents should
388
- start with `INDEX.json`, use bounded search, then retrieve evidence or a path
389
- for the selected result.
456
+ start with compact project context, use bounded search, then retrieve evidence
457
+ or a path for the selected result. Generated `project-context-agent.json`,
458
+ `agent-entry.v1.json`, and bootstrap receipts expose a small project graph
459
+ reference separately from the `workspace:` aggregate. Bootstrap schema-validates
460
+ the reference and compares its projection hash with a fresh projection of the
461
+ aggregate before it allows architecture claims. The complete graph is stored once.
390
462
 
391
463
  ### Interchange and visualization
392
464
 
@@ -451,12 +523,38 @@ hashes. Query indexes are cached per immutable graph object; replacing the graph
451
523
  is the in-memory invalidation boundary. Across CLI processes, compatible
452
524
  persisted read queries validate the live Git/Merkle fingerprint before reuse.
453
525
  `workspace model --cache` and `--incremental` avoid unnecessary model/project
454
- work when inputs are unchanged.
526
+ work when inputs are unchanged. Full, cached, and incremental builds use the
527
+ same project-discovery contract, including adopted/imported projects and
528
+ projects declared only through a workspace contract `externalPath`. Manifest
529
+ or source changes under an external project therefore invalidate the same
530
+ signatures as equivalent in-workspace projects.
455
531
 
456
532
  Use full graph export for interchange or offline analysis. Use bounded search
457
533
  for interactive agents. The latter keeps response size proportional to the
458
534
  question instead of workspace size.
459
535
 
536
+ ### Runtime-generated API topology
537
+
538
+ When an authored API contract is wired through framework registration or
539
+ configuration rather than a literal route handler, the
540
+ `dynamic-api-registration-binding` provider creates a proof-backed
541
+ `runtime-unit -> implements -> api` relation. Detection is runtime-specific,
542
+ production-only, filename-aware for routing configuration, and bounded per API.
543
+ It intentionally does not claim endpoint implementation: endpoint coverage
544
+ remains unknown until a method/path or operation-id binding is proven. Consumers
545
+ can distinguish the two guarantees through `bindingCoverage.apiRuntimeRegistration`
546
+ and `bindingCoverage.apiImplementation`.
547
+
548
+ Runtime-registration eligibility is explicit. Network and event contracts such
549
+ as OpenAPI, server-root GraphQL schemas, AsyncAPI, and authored workspace API
550
+ contracts participate; command palettes, console scripts, chat participants,
551
+ shared protocol identities, and client GraphQL operations do not. GraphQL query,
552
+ mutation, subscription, and fragment documents are modeled as proof-backed
553
+ symbols that consume the GraphQL protocol. Only an authored root `schema` or
554
+ non-extension `Query`, `Mutation`, or `Subscription` type establishes a
555
+ runtime-served GraphQL API. This prevents client-heavy repositories from
556
+ inflating API registration unknowns while preserving their operation topology.
557
+
460
558
  ## Measuring retrieval payload reduction
461
559
 
462
560
  Workspai does not publish an unqualified “N× fewer tokens” claim. Such a claim
@@ -469,6 +567,10 @@ Measure the current workspace instead:
469
567
  npx workspai workspace graph benchmark "authentication endpoint" --limit 12 --json
470
568
  ```
471
569
 
570
+ Use `--kind <entity-kind>` with search when the task requires a precise
571
+ semantic surface, for example `--kind runtime-unit` for dynamic registration
572
+ units or `--kind endpoint` for authored operations.
573
+
472
574
  The report compares the readable, proof-indexed source corpus with the bounded
473
575
  search payload using a clearly labelled `characters / 4` token estimate. It
474
576
  reports corpus size, retrieval size, estimated ratio, percentage reduction,
@@ -497,6 +599,8 @@ a general performance claim.
497
599
  - The live-input fingerprint enables whole-graph snapshot reuse; it is not yet
498
600
  a per-file incremental graph rebuild or a hosted semantic-vector index.
499
601
  - Compiler/LSP-grade symbol resolution belongs in deeper language providers.
602
+ - Runtime registration evidence proves that an API enters the running topology;
603
+ it does not prove that every authored operation has a reachable handler.
500
604
  - Missing project edges mean “relationship not proven,” not “projects are
501
605
  independent.” Author service contracts or provide API/package/runtime
502
606
  evidence to close that gap.