opennori 0.1.9 → 0.1.10
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.
- package/.opennori/protocol.md +309 -93
- package/README.md +1054 -48
- package/dashboard/assets/index-CdtzA7LJ.css +2 -0
- package/dashboard/assets/index-DQKOVUPr.js +17 -0
- package/dashboard/index.html +15 -0
- package/dist/bin/opennori.js +0 -0
- package/dist/src/acceptance.d.ts +28 -11
- package/dist/src/acceptance.d.ts.map +1 -1
- package/dist/src/acceptance.js +166 -457
- package/dist/src/acceptance.js.map +1 -1
- package/dist/src/agent-next.d.ts +12 -0
- package/dist/src/agent-next.d.ts.map +1 -0
- package/dist/src/agent-next.js +340 -0
- package/dist/src/agent-next.js.map +1 -0
- package/dist/src/architecture/agent-surface.d.ts.map +1 -1
- package/dist/src/architecture/agent-surface.js +34 -14
- package/dist/src/architecture/agent-surface.js.map +1 -1
- package/dist/src/architecture/apply.d.ts +20 -0
- package/dist/src/architecture/apply.d.ts.map +1 -0
- package/dist/src/architecture/apply.js +157 -0
- package/dist/src/architecture/apply.js.map +1 -0
- package/dist/src/architecture/baseline.d.ts.map +1 -1
- package/dist/src/architecture/baseline.js +92 -1
- package/dist/src/architecture/baseline.js.map +1 -1
- package/dist/src/architecture/profile.d.ts.map +1 -1
- package/dist/src/architecture/profile.js +232 -0
- package/dist/src/architecture/profile.js.map +1 -1
- package/dist/src/architecture/report.d.ts.map +1 -1
- package/dist/src/architecture/report.js +20 -0
- package/dist/src/architecture/report.js.map +1 -1
- package/dist/src/architecture/requirement.d.ts +13 -0
- package/dist/src/architecture/requirement.d.ts.map +1 -0
- package/dist/src/architecture/requirement.js +76 -0
- package/dist/src/architecture/requirement.js.map +1 -0
- package/dist/src/architecture/shared.d.ts +4 -0
- package/dist/src/architecture/shared.d.ts.map +1 -1
- package/dist/src/architecture/shared.js +12 -1
- package/dist/src/architecture/shared.js.map +1 -1
- package/dist/src/architecture/state.d.ts.map +1 -1
- package/dist/src/architecture/state.js +18 -1
- package/dist/src/architecture/state.js.map +1 -1
- package/dist/src/architecture.d.ts +3 -1
- package/dist/src/architecture.d.ts.map +1 -1
- package/dist/src/architecture.js +3 -1
- package/dist/src/architecture.js.map +1 -1
- package/dist/src/cli/bootstrap.d.ts.map +1 -1
- package/dist/src/cli/bootstrap.js +6 -3
- package/dist/src/cli/bootstrap.js.map +1 -1
- package/dist/src/cli/command-tree.d.ts +1 -0
- package/dist/src/cli/command-tree.d.ts.map +1 -1
- package/dist/src/cli/command-tree.js +110 -6
- package/dist/src/cli/command-tree.js.map +1 -1
- package/dist/src/cli/commands/acceptance/approval.d.ts +11 -2
- package/dist/src/cli/commands/acceptance/approval.d.ts.map +1 -1
- package/dist/src/cli/commands/acceptance/approval.js +58 -7
- package/dist/src/cli/commands/acceptance/approval.js.map +1 -1
- package/dist/src/cli/commands/acceptance/brainstorm.d.ts +18 -2
- package/dist/src/cli/commands/acceptance/brainstorm.d.ts.map +1 -1
- package/dist/src/cli/commands/acceptance/brainstorm.js +32 -8
- package/dist/src/cli/commands/acceptance/brainstorm.js.map +1 -1
- package/dist/src/cli/commands/acceptance/criterion.d.ts +22 -6
- package/dist/src/cli/commands/acceptance/criterion.d.ts.map +1 -1
- package/dist/src/cli/commands/acceptance/criterion.js +36 -25
- package/dist/src/cli/commands/acceptance/criterion.js.map +1 -1
- package/dist/src/cli/commands/acceptance/draft.d.ts +2 -14
- package/dist/src/cli/commands/acceptance/draft.d.ts.map +1 -1
- package/dist/src/cli/commands/acceptance/draft.js +44 -45
- package/dist/src/cli/commands/acceptance/draft.js.map +1 -1
- package/dist/src/cli/commands/acceptance/runtime-status.d.ts +31 -9
- package/dist/src/cli/commands/acceptance/runtime-status.d.ts.map +1 -1
- package/dist/src/cli/commands/acceptance/runtime-status.js +20 -9
- package/dist/src/cli/commands/acceptance/runtime-status.js.map +1 -1
- package/dist/src/cli/commands/activity.d.ts +138 -0
- package/dist/src/cli/commands/activity.d.ts.map +1 -0
- package/dist/src/cli/commands/activity.js +202 -0
- package/dist/src/cli/commands/activity.js.map +1 -0
- package/dist/src/cli/commands/architecture/apply.d.ts +52 -0
- package/dist/src/cli/commands/architecture/apply.d.ts.map +1 -0
- package/dist/src/cli/commands/architecture/apply.js +131 -0
- package/dist/src/cli/commands/architecture/apply.js.map +1 -0
- package/dist/src/cli/commands/architecture/baseline.d.ts.map +1 -1
- package/dist/src/cli/commands/architecture/baseline.js +37 -11
- package/dist/src/cli/commands/architecture/baseline.js.map +1 -1
- package/dist/src/cli/commands/architecture/build-vs-buy.d.ts.map +1 -1
- package/dist/src/cli/commands/architecture/build-vs-buy.js +8 -1
- package/dist/src/cli/commands/architecture/build-vs-buy.js.map +1 -1
- package/dist/src/cli/commands/architecture/profile.js +1 -1
- package/dist/src/cli/commands/architecture/profile.js.map +1 -1
- package/dist/src/cli/commands/architecture/requirement.d.ts +39 -0
- package/dist/src/cli/commands/architecture/requirement.d.ts.map +1 -0
- package/dist/src/cli/commands/architecture/requirement.js +103 -0
- package/dist/src/cli/commands/architecture/requirement.js.map +1 -0
- package/dist/src/cli/commands/architecture.d.ts +2 -0
- package/dist/src/cli/commands/architecture.d.ts.map +1 -1
- package/dist/src/cli/commands/architecture.js +2 -0
- package/dist/src/cli/commands/architecture.js.map +1 -1
- package/dist/src/cli/commands/changes.d.ts.map +1 -1
- package/dist/src/cli/commands/changes.js +17 -10
- package/dist/src/cli/commands/changes.js.map +1 -1
- package/dist/src/cli/commands/check.d.ts +7 -2
- package/dist/src/cli/commands/check.d.ts.map +1 -1
- package/dist/src/cli/commands/check.js +60 -20
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/context.d.ts +7 -2
- package/dist/src/cli/commands/context.d.ts.map +1 -1
- package/dist/src/cli/commands/dashboard.d.ts +38 -0
- package/dist/src/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/src/cli/commands/dashboard.js +69 -0
- package/dist/src/cli/commands/dashboard.js.map +1 -0
- package/dist/src/cli/commands/evidence/add.d.ts +14 -3
- package/dist/src/cli/commands/evidence/add.d.ts.map +1 -1
- package/dist/src/cli/commands/evidence/add.js +32 -8
- package/dist/src/cli/commands/evidence/add.js.map +1 -1
- package/dist/src/cli/commands/evidence/prune.d.ts +10 -3
- package/dist/src/cli/commands/evidence/prune.d.ts.map +1 -1
- package/dist/src/cli/commands/evidence/prune.js +5 -6
- package/dist/src/cli/commands/evidence/prune.js.map +1 -1
- package/dist/src/cli/commands/evidence/source-parsing.d.ts.map +1 -1
- package/dist/src/cli/commands/evidence/source-parsing.js +21 -0
- package/dist/src/cli/commands/evidence/source-parsing.js.map +1 -1
- package/dist/src/cli/commands/list.d.ts.map +1 -1
- package/dist/src/cli/commands/list.js +23 -12
- package/dist/src/cli/commands/list.js.map +1 -1
- package/dist/src/cli/commands/plugin.d.ts +27 -0
- package/dist/src/cli/commands/plugin.d.ts.map +1 -0
- package/dist/src/cli/commands/plugin.js +43 -0
- package/dist/src/cli/commands/plugin.js.map +1 -0
- package/dist/src/cli/commands/profile/add.d.ts +7 -2
- package/dist/src/cli/commands/profile/add.d.ts.map +1 -1
- package/dist/src/cli/commands/profile/add.js +11 -2
- package/dist/src/cli/commands/profile/add.js.map +1 -1
- package/dist/src/cli/commands/profile/check.d.ts +7 -2
- package/dist/src/cli/commands/profile/check.d.ts.map +1 -1
- package/dist/src/cli/commands/profile/check.js +10 -1
- package/dist/src/cli/commands/profile/check.js.map +1 -1
- package/dist/src/cli/commands/profile/evidence.d.ts +7 -2
- package/dist/src/cli/commands/profile/evidence.d.ts.map +1 -1
- package/dist/src/cli/commands/profile/evidence.js +10 -1
- package/dist/src/cli/commands/profile/evidence.js.map +1 -1
- package/dist/src/cli/commands/profile/show.d.ts +7 -2
- package/dist/src/cli/commands/profile/show.d.ts.map +1 -1
- package/dist/src/cli/commands/profile/show.js +1 -1
- package/dist/src/cli/commands/profile/show.js.map +1 -1
- package/dist/src/cli/commands/reporting.d.ts +18 -6
- package/dist/src/cli/commands/reporting.d.ts.map +1 -1
- package/dist/src/cli/commands/reporting.js +33 -23
- package/dist/src/cli/commands/reporting.js.map +1 -1
- package/dist/src/cli/commands/upgrade.js +1 -1
- package/dist/src/cli/commands/upgrade.js.map +1 -1
- package/dist/src/cli/human-output.d.ts +9 -0
- package/dist/src/cli/human-output.d.ts.map +1 -0
- package/dist/src/cli/human-output.js +211 -0
- package/dist/src/cli/human-output.js.map +1 -0
- package/dist/src/cli/init.d.ts.map +1 -1
- package/dist/src/cli/init.js +4 -2
- package/dist/src/cli/init.js.map +1 -1
- package/dist/src/cli/runtime.d.ts +31 -3
- package/dist/src/cli/runtime.d.ts.map +1 -1
- package/dist/src/cli/runtime.js +81 -12
- package/dist/src/cli/runtime.js.map +1 -1
- package/dist/src/cli/setup.d.ts +3 -1
- package/dist/src/cli/setup.d.ts.map +1 -1
- package/dist/src/cli/setup.js +23 -5
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +24 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/core/contract.d.ts.map +1 -1
- package/dist/src/core/contract.js +100 -19
- package/dist/src/core/contract.js.map +1 -1
- package/dist/src/core/evidence.d.ts +0 -2
- package/dist/src/core/evidence.d.ts.map +1 -1
- package/dist/src/core/evidence.js +44 -52
- package/dist/src/core/evidence.js.map +1 -1
- package/dist/src/core/report.d.ts +10 -0
- package/dist/src/core/report.d.ts.map +1 -1
- package/dist/src/core/report.js +258 -134
- package/dist/src/core/report.js.map +1 -1
- package/dist/src/core/shared.d.ts +26 -4
- package/dist/src/core/shared.d.ts.map +1 -1
- package/dist/src/core/shared.js +283 -17
- package/dist/src/core/shared.js.map +1 -1
- package/dist/src/core.d.ts +3 -0
- package/dist/src/core.d.ts.map +1 -1
- package/dist/src/core.js +3 -0
- package/dist/src/core.js.map +1 -1
- package/dist/src/kernel/activity.d.ts +12 -0
- package/dist/src/kernel/activity.d.ts.map +1 -0
- package/dist/src/kernel/activity.js +223 -0
- package/dist/src/kernel/activity.js.map +1 -0
- package/dist/src/kernel/events.d.ts +10 -0
- package/dist/src/kernel/events.d.ts.map +1 -0
- package/dist/src/kernel/events.js +138 -0
- package/dist/src/kernel/events.js.map +1 -0
- package/dist/src/kernel/http/app.d.ts +7 -0
- package/dist/src/kernel/http/app.d.ts.map +1 -0
- package/dist/src/kernel/http/app.js +113 -0
- package/dist/src/kernel/http/app.js.map +1 -0
- package/dist/src/kernel/server.d.ts +14 -0
- package/dist/src/kernel/server.d.ts.map +1 -0
- package/dist/src/kernel/server.js +51 -0
- package/dist/src/kernel/server.js.map +1 -0
- package/dist/src/kernel/snapshot.d.ts +10 -0
- package/dist/src/kernel/snapshot.d.ts.map +1 -0
- package/dist/src/kernel/snapshot.js +194 -0
- package/dist/src/kernel/snapshot.js.map +1 -0
- package/dist/src/language.d.ts +11 -0
- package/dist/src/language.d.ts.map +1 -0
- package/dist/src/language.js +35 -0
- package/dist/src/language.js.map +1 -0
- package/dist/src/lifecycle/bootstrap.d.ts.map +1 -1
- package/dist/src/lifecycle/bootstrap.js +11 -2
- package/dist/src/lifecycle/bootstrap.js.map +1 -1
- package/dist/src/lifecycle/context-export.d.ts +3 -0
- package/dist/src/lifecycle/context-export.d.ts.map +1 -1
- package/dist/src/lifecycle/context-export.js +7 -3
- package/dist/src/lifecycle/context-export.js.map +1 -1
- package/dist/src/lifecycle/doctor/active-goals.d.ts +2 -0
- package/dist/src/lifecycle/doctor/active-goals.d.ts.map +1 -1
- package/dist/src/lifecycle/doctor/active-goals.js +95 -27
- package/dist/src/lifecycle/doctor/active-goals.js.map +1 -1
- package/dist/src/lifecycle/doctor/manifest-health.js +2 -2
- package/dist/src/lifecycle/doctor/manifest-health.js.map +1 -1
- package/dist/src/lifecycle/doctor/project-health.d.ts.map +1 -1
- package/dist/src/lifecycle/doctor/project-health.js +9 -6
- package/dist/src/lifecycle/doctor/project-health.js.map +1 -1
- package/dist/src/lifecycle/doctor/shared.d.ts.map +1 -1
- package/dist/src/lifecycle/doctor/shared.js +5 -2
- package/dist/src/lifecycle/doctor/shared.js.map +1 -1
- package/dist/src/lifecycle/doctor.d.ts.map +1 -1
- package/dist/src/lifecycle/doctor.js +9 -3
- package/dist/src/lifecycle/doctor.js.map +1 -1
- package/dist/src/lifecycle/install.d.ts.map +1 -1
- package/dist/src/lifecycle/install.js +4 -6
- package/dist/src/lifecycle/install.js.map +1 -1
- package/dist/src/lifecycle/manifest.d.ts.map +1 -1
- package/dist/src/lifecycle/manifest.js +16 -8
- package/dist/src/lifecycle/manifest.js.map +1 -1
- package/dist/src/lifecycle/plugin-sync.d.ts +46 -0
- package/dist/src/lifecycle/plugin-sync.d.ts.map +1 -0
- package/dist/src/lifecycle/plugin-sync.js +216 -0
- package/dist/src/lifecycle/plugin-sync.js.map +1 -0
- package/dist/src/lifecycle/setup.d.ts.map +1 -1
- package/dist/src/lifecycle/setup.js +12 -8
- package/dist/src/lifecycle/setup.js.map +1 -1
- package/dist/src/lifecycle/shared.d.ts.map +1 -1
- package/dist/src/lifecycle/shared.js +2 -1
- package/dist/src/lifecycle/shared.js.map +1 -1
- package/dist/src/lifecycle/uninstall.d.ts.map +1 -1
- package/dist/src/lifecycle/uninstall.js +1 -1
- package/dist/src/lifecycle/uninstall.js.map +1 -1
- package/dist/src/lifecycle.d.ts +1 -0
- package/dist/src/lifecycle.d.ts.map +1 -1
- package/dist/src/lifecycle.js +1 -0
- package/dist/src/lifecycle.js.map +1 -1
- package/dist/src/skills.d.ts.map +1 -1
- package/dist/src/skills.js +1 -0
- package/dist/src/skills.js.map +1 -1
- package/dist/src/types.d.ts +282 -10
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/validation.d.ts +4 -0
- package/dist/src/validation.d.ts.map +1 -1
- package/dist/src/validation.js +4 -0
- package/dist/src/validation.js.map +1 -1
- package/examples/opennori-self.json +46 -6
- package/package.json +39 -7
- package/plugins/opennori/.codex-plugin/plugin.json +9 -3
- package/plugins/opennori/skills/nori/SKILL.md +121 -10
- package/plugins/opennori/skills/nori-acceptance/SKILL.md +335 -20
- package/plugins/opennori/skills/nori-architecture-apply/SKILL.md +51 -8
- package/plugins/opennori/skills/nori-architecture-brainstorm/SKILL.md +109 -9
- package/plugins/opennori/skills/nori-architecture-challenge/SKILL.md +32 -3
- package/plugins/opennori/skills/nori-autogoal/SKILL.md +313 -0
- package/plugins/opennori/skills/nori-build-vs-buy/SKILL.md +35 -5
- package/plugins/opennori/skills/nori-capability-profile/SKILL.md +54 -3
- package/plugins/opennori/skills/nori-evidence/SKILL.md +53 -5
- package/plugins/opennori/skills/nori-project-health/SKILL.md +66 -10
- package/plugins/opennori/skills/nori-reporting/SKILL.md +55 -7
- package/schemas/architecture-apply.schema.json +52 -0
- package/schemas/architecture-baseline.schema.json +82 -0
- package/schemas/architecture-requirement.schema.json +29 -0
- package/schemas/contract.schema.json +34 -0
- package/schemas/evidence-payload.schema.json +1 -1
- package/schemas/ledger.schema.json +36 -0
- package/schemas/manifest.schema.json +10 -0
- package/src/acceptance.ts +186 -505
- package/src/agent-next.ts +385 -0
- package/src/architecture/agent-surface.ts +33 -14
- package/src/architecture/apply.ts +173 -0
- package/src/architecture/baseline.ts +99 -1
- package/src/architecture/profile.ts +237 -0
- package/src/architecture/report.ts +20 -0
- package/src/architecture/requirement.ts +88 -0
- package/src/architecture/shared.ts +14 -1
- package/src/architecture/state.ts +18 -1
- package/src/architecture.ts +14 -0
- package/src/cli/bootstrap.ts +6 -3
- package/src/cli/command-tree.ts +120 -6
- package/src/cli/commands/acceptance/approval.ts +68 -8
- package/src/cli/commands/acceptance/brainstorm.ts +33 -9
- package/src/cli/commands/acceptance/criterion.ts +40 -28
- package/src/cli/commands/acceptance/draft.ts +51 -43
- package/src/cli/commands/acceptance/runtime-status.ts +23 -11
- package/src/cli/commands/activity.ts +222 -0
- package/src/cli/commands/architecture/apply.ts +138 -0
- package/src/cli/commands/architecture/baseline.ts +37 -11
- package/src/cli/commands/architecture/build-vs-buy.ts +8 -1
- package/src/cli/commands/architecture/profile.ts +1 -1
- package/src/cli/commands/architecture/requirement.ts +119 -0
- package/src/cli/commands/architecture.ts +8 -0
- package/src/cli/commands/changes.ts +18 -10
- package/src/cli/commands/check.ts +53 -14
- package/src/cli/commands/dashboard.ts +75 -0
- package/src/cli/commands/evidence/add.ts +36 -9
- package/src/cli/commands/evidence/prune.ts +7 -8
- package/src/cli/commands/evidence/source-parsing.ts +20 -0
- package/src/cli/commands/list.ts +24 -12
- package/src/cli/commands/plugin.ts +45 -0
- package/src/cli/commands/profile/add.ts +12 -1
- package/src/cli/commands/profile/check.ts +11 -0
- package/src/cli/commands/profile/evidence.ts +11 -0
- package/src/cli/commands/profile/show.ts +1 -1
- package/src/cli/commands/reporting.ts +35 -24
- package/src/cli/commands/upgrade.ts +1 -1
- package/src/cli/human-output.ts +214 -0
- package/src/cli/init.ts +4 -2
- package/src/cli/runtime.ts +115 -13
- package/src/cli/setup.ts +30 -6
- package/src/cli.ts +20 -4
- package/src/core/contract.ts +102 -21
- package/src/core/evidence.ts +49 -57
- package/src/core/report.ts +271 -134
- package/src/core/shared.ts +375 -18
- package/src/core.ts +3 -0
- package/src/dashboard/index.html +14 -0
- package/src/dashboard/src/App.tsx +505 -0
- package/src/dashboard/src/api.ts +44 -0
- package/src/dashboard/src/components/AcceptanceLoop.tsx +145 -0
- package/src/dashboard/src/components/AcceptanceRadarNet.tsx +505 -0
- package/src/dashboard/src/components/InspectNodePanel.tsx +597 -0
- package/src/dashboard/src/main.tsx +16 -0
- package/src/dashboard/src/selection.ts +161 -0
- package/src/dashboard/src/styles.css +158 -0
- package/src/dashboard/src/types.ts +177 -0
- package/src/kernel/activity.ts +241 -0
- package/src/kernel/events.ts +144 -0
- package/src/kernel/http/app.ts +128 -0
- package/src/kernel/server.ts +68 -0
- package/src/kernel/snapshot.ts +199 -0
- package/src/language.ts +39 -0
- package/src/lifecycle/bootstrap.ts +13 -3
- package/src/lifecycle/context-export.ts +9 -5
- package/src/lifecycle/doctor/active-goals.ts +105 -32
- package/src/lifecycle/doctor/manifest-health.ts +3 -3
- package/src/lifecycle/doctor/project-health.ts +15 -6
- package/src/lifecycle/doctor/shared.ts +5 -2
- package/src/lifecycle/doctor.ts +11 -5
- package/src/lifecycle/install.ts +5 -6
- package/src/lifecycle/manifest.ts +21 -10
- package/src/lifecycle/plugin-sync.ts +309 -0
- package/src/lifecycle/setup.ts +12 -8
- package/src/lifecycle/shared.ts +2 -1
- package/src/lifecycle/uninstall.ts +2 -1
- package/src/lifecycle.ts +1 -0
- package/src/skills.ts +1 -0
- package/src/types.ts +345 -9
- package/src/validation.ts +4 -0
package/.opennori/protocol.md
CHANGED
|
@@ -52,10 +52,10 @@ current gap, risk gate, and report.
|
|
|
52
52
|
|
|
53
53
|
| ID | Tool / entrypoint | User operation | User acceptance criterion | Passing threshold |
|
|
54
54
|
| --- | --- | --- | --- | --- |
|
|
55
|
-
| AC-P-1 | Editor / file browser | Open the
|
|
55
|
+
| AC-P-1 | Editor / file browser | Open the current Nori Contract | The user understands goal, layered ACs, each status, and the current gap. | No chat history or implementation explanation required; understandable within 60 seconds. |
|
|
56
56
|
| AC-P-2 | CLI | Run `opennori check` | The user can reject technical implementation details masquerading as ACs. | Files, fields, commands, tests, or modules cannot be accepted as user ACs by themselves. |
|
|
57
57
|
| AC-P-3 | CLI | Run `opennori next` or `opennori status` | The user sees the current acceptance gap and completion answer, not a process-step list. | Output answers which AC is missing, whether complete, and whether human action is required. |
|
|
58
|
-
| AC-P-4 | CLI / report | Inspect a high-risk AC | The user sees
|
|
58
|
+
| AC-P-4 | CLI / report | Inspect a high-risk AC | The user sees review risk when high-risk passing evidence is only an agent observation. | CLI preserves the submitted objective result but exposes confidence and evidence_health review warnings instead of pretending agent self-summary is confidently complete. |
|
|
59
59
|
| AC-P-5 | CLI / Codex | Trigger `opennori report` | The user sees goal, layered AC statuses, evidence summaries, current gap, intervention, and conclusion. | Report is organized by acceptance state and evidence, not process steps. |
|
|
60
60
|
| AC-P-6 | CLI / report | Inspect evidence basis | The user can tell what evidence supports passing, blocked, or waived ACs. | Report/status shows evidence summary, basis, confidence, and limitations, not only an agent conclusion. |
|
|
61
61
|
| AC-P-7 | CLI / report | Review evidence sources | The user can review evidence sources without constraining how the agent gathered them. | Sources can be commands, artifacts, URLs, screenshots, diffs, human confirmations, or other reviewable references. |
|
|
@@ -72,13 +72,15 @@ The operator layer proves that Codex can actually use OpenNori as the work proto
|
|
|
72
72
|
| --- | --- | --- | --- | --- |
|
|
73
73
|
| AC-O-1 | Codex conversation | Start a task with "use OpenNori for this goal" | The user sees a draft Nori Contract written from the user's perspective. | Draft ACs describe user actions or judgments; user can approve or revise. |
|
|
74
74
|
| AC-O-2 | Codex conversation | Approve or revise the acceptance criteria | The user controls what "done" means. | Agent cannot decide completion before user-confirmed criteria exist. |
|
|
75
|
-
| AC-O-3 | New Codex session | Ask to continue OpenNori | The agent restores the
|
|
75
|
+
| AC-O-3 | New Codex session | Ask to continue OpenNori | The agent restores the current goal and current acceptance gap. | Recovery uses repo files, not old chat context. |
|
|
76
76
|
| AC-O-4 | Codex conversation | Ask "is it done?" | The agent answers only from required AC status and evidence. | Complete is allowed only when required ACs are all `passing` or `waived`. |
|
|
77
77
|
| AC-O-5 | Codex conversation | Ask "what do I need to do?" | If blocked, the user sees a concrete human action. | Blocked output asks for a decision, input, permission, cost approval, or similar human action. |
|
|
78
78
|
| AC-O-6 | Codex conversation | Revise an AC after new facts appear | The changed acceptance basis is preserved. | Updated ACs become the basis for `current_gap` and completion; old criteria are not silently reused. |
|
|
79
79
|
| AC-O-7 | Codex conversation | Ask OpenNori to brainstorm a fuzzy idea | The user sees selectable acceptance directions without remembering CLI syntax. | Brainstorm candidates describe user value, observable acceptance direction, and risk; they are not treated as a contract or completion evidence. |
|
|
80
80
|
| AC-O-8 | Codex conversation | State required Skills, preferred stacks, avoided tools, or execution constraints | The agent records a Nori Profile without making the user remember CLI syntax. | Must/avoid profile items are shown in contract and report; unsatisfied must items or violated avoid items block completion unless waived. |
|
|
81
81
|
| AC-O-9 | Codex conversation | Ask OpenNori to use a good architecture for a non-trivial goal | The user sees Product AC and an Architecture Baseline before implementation starts. | The baseline is not a plan; it names the architecture profile, boundaries, build-vs-buy policy, and challenge rule. |
|
|
82
|
+
| AC-O-14 | Codex conversation | Review a newly generated Nori Contract Draft | The user can tell whether the agent understood every AC before approving. | After draft generation, the agent shows a compact overview and then reviews one AC at a time: exact user entry, object or field, visible state/message/result, non-passing examples, and specific evidence object for the current AC; the user confirms or revises that AC before the next AC; final approval is requested only after every AC has been confirmed one by one. If the explanation is generic, adds or changes completion meaning, or cannot be made specific from the draft, the draft is revised instead of approved. |
|
|
83
|
+
| AC-O-18 | Codex conversation | Give the agent a visible product goal such as UI, CRUD, dashboard, form, list, settings, or admin work | The agent models the actual user operation path before drafting, recording evidence, or reporting confident completion. | The Skill-owned Acceptance Surface Model identifies actor, entry, visible trigger, object, action, interaction surface, required information, feedback, state change, persistence, destructive boundary, and evidence shape; broad outcome AC such as "CRUD works" or "dashboard shows state" are routed back to acceptance revision, not treated as confidently acceptable. |
|
|
82
84
|
|
|
83
85
|
### L3 Productization AC
|
|
84
86
|
|
|
@@ -90,17 +92,17 @@ a durable workflow asset.
|
|
|
90
92
|
| AC-Z-1 | Codex Plugin / package assets | Install or inspect the OpenNori package | The user's agent can discover focused OpenNori Skills without the user memorizing CLI flags. | `.agents/plugins/marketplace.json` points to `./plugins/opennori`; `plugins/opennori/.codex-plugin/plugin.json` points to package-local `skills/`; the `nori` Skill routes natural-language work through acceptance, evidence, profile, architecture, health, and reporting. |
|
|
91
93
|
| AC-Z-2 | CLI | Run `opennori init` or `opennori install` | The user can initialize OpenNori project state without unexpected overwrites. | Init/install shows created/skipped assets; existing user content is not overwritten by default. |
|
|
92
94
|
| AC-Z-3 | Git / PR diff | Review the agent's changes | The user can separate acceptance evidence changes from implementation noise. | Summary defaults to AC status changes, evidence changes, and user impact. |
|
|
93
|
-
| AC-Z-4 | CLI | Run `opennori list`
|
|
94
|
-
| AC-Z-5 | CLI | Archive a completed or blocked goal | The user removes it from
|
|
95
|
+
| AC-Z-4 | CLI | Run `opennori list` | The user can distinguish the single current goal, draft contracts, completed history, blocked history, and legacy recovery state. | Drafts are listed separately and are not executable; multiple current goals are reported as broken state rather than a normal choice. |
|
|
96
|
+
| AC-Z-5 | CLI | Archive a completed or blocked goal | The user removes it from current work while preserving evidence and report. | Current no longer lists the goal; contract, ledger, and report remain recoverable in completed or blocked history. |
|
|
95
97
|
| AC-Z-6 | Project file browser | Inspect the project after running OpenNori | The user sees OpenNori-owned state under `.opennori/` instead of a generic project `process/` directory. | Install, draft, brainstorm, report, and archive write OpenNori state under `.opennori/` by default. |
|
|
96
|
-
| AC-Z-7 | CLI / project file browser | Run `opennori install` | The user can inspect project OpenNori registration and judge version, managed entries,
|
|
97
|
-
| AC-Z-8 | CLI | Run `opennori doctor` | The user can judge whether the project is `ready`, `needs-action`, or `broken`, and see the next recovery action. | Doctor checks `.opennori` structure, manifest consistency,
|
|
98
|
+
| AC-Z-7 | CLI / project file browser | Run `opennori install` | The user can inspect project OpenNori registration and judge version, managed entries, current/draft/history goals, Plugin Skill availability, and protocol capabilities. | Install output uses create, skip, overwrite, or update semantics; `.opennori/manifest.json` records version, managed files, current/draft/history goals, Plugin state, architecture state, and capabilities. |
|
|
99
|
+
| AC-Z-8 | CLI | Run `opennori doctor` | The user can judge whether the project is `ready`, `needs-action`, or `broken`, and see the next recovery action. | Doctor checks `.opennori` structure, manifest consistency, current goal recoverability, legacy active recovery, packaged Plugin Skills, CLI runtime, and recovery suggestions. |
|
|
98
100
|
| AC-Z-9 | CLI | Preview install with `opennori install --dry-run` | The user can judge what OpenNori would create, skip, update, or overwrite before writing to the project. | Install plan lists action, kind, managed status, write intent, destructive flag, and reason; dry-run reports zero actual writes. |
|
|
99
101
|
| AC-Z-10 | CLI | Apply force install | The user must preview and explicitly confirm destructive install actions before files are overwritten. | Real `opennori install --force` fails without confirmation; dry-run previews destructive overwrites; confirmed force install may write. |
|
|
100
102
|
| AC-Z-11 | CLI | Preview and apply uninstall | The user can uninstall OpenNori entry assets without losing acceptance state by default. | Uninstall plan shows removals and preserved state; real uninstall requires confirmation; `.opennori` state is deleted only with `--include-state --confirm`. |
|
|
101
|
-
| AC-Z-12 | Codex Plugin / Codex Skills | Use OpenNori Plugin Skills | The agent gets focused OpenNori Skills for acceptance, evidence, Nori Profile, architecture, project health, reporting, and next-loop
|
|
103
|
+
| AC-Z-12 | Codex Plugin / Codex Skills | Use OpenNori Plugin Skills | The agent gets focused OpenNori Skills for acceptance, evidence, Nori Profile, architecture, project health, reporting, and next-loop handoff while the user keeps using natural language. | The npm package ships `.agents/plugins/marketplace.json`, `plugins/opennori/.codex-plugin/plugin.json`, and `plugins/opennori/skills/nori*/SKILL.md`; each Skill is an agent behavior protocol with trigger semantics, state reading, natural-language mapping, state write boundaries, handoffs, user reply shape, and misuse guards; install does not copy Skills into the project; manifest records `plugin`; doctor detects missing packaged Plugin Skills. |
|
|
102
104
|
| AC-Z-13 | CLI / project file browser | Establish an Architecture Baseline | The user can see what architecture the agent must follow while implementing Product AC. | `.opennori/architecture/baseline.json`, `.opennori/architecture/baseline.md`, and `.opennori/agent-guide.md` expose the baseline to agents and reviewers. |
|
|
103
|
-
| AC-Z-14 | CLI / project file browser | Add a project Architecture Profile | The user can extend built-in profiles with a reviewed project profile. | `opennori architecture profile --from <profile.json>` writes `.opennori/architecture/profiles/<id>.json`; `architecture profiles` lists it before built-ins. |
|
|
105
|
+
| AC-Z-14 | CLI / project file browser | Add a project Architecture Profile | The user can extend built-in profiles with a reviewed project profile without polluting architecture evidence. | `opennori architecture profile --from <profile.json>` writes `.opennori/architecture/profiles/<id>.json`; `architecture profiles` lists it before built-ins; `.opennori/architecture/evidence/` is not used for profile source or duplicate profile files. |
|
|
104
106
|
| AC-Z-15 | CLI / report | Challenge a baseline | The user can review evidence before an agent changes architecture. | `opennori architecture challenge` records current baseline, conflict evidence, recommendation, and user confirmation requirement. |
|
|
105
107
|
| AC-Z-16 | CLI / report | Record build-vs-buy decisions | The user can see whether existing dependencies, standard libraries, official SDKs, and mature OSS were checked before self-building infrastructure. | `opennori architecture build-vs-buy` records the decision under `.opennori/architecture/decisions/` and status/report summarize it. |
|
|
106
108
|
| AC-Z-18 | README / website / Plugin description | First read the OpenNori entry material | The user understands OpenNori as one agent capability bundle: Plugin discovery, packaged Skills, deterministic CLI state layer, and `.opennori` project state work together. | README Install/Quick Start, website Start, Plugin longDescription, and nori/project-health Skills do not present Plugin, Skills, or CLI as separate user paths; they explain that missing bundle parts should be recovered through doctor/health rather than used as a half-installed workflow. |
|
|
@@ -115,13 +117,34 @@ OpenNori writes its project-local state under `.opennori/`.
|
|
|
115
117
|
manifest.json
|
|
116
118
|
protocol.md
|
|
117
119
|
agent-guide.md
|
|
118
|
-
|
|
119
|
-
<goal
|
|
120
|
-
|
|
120
|
+
current/
|
|
121
|
+
<goal>/
|
|
122
|
+
contract.json
|
|
123
|
+
ledger.json
|
|
124
|
+
README.md
|
|
125
|
+
criteria/
|
|
126
|
+
<AC-id>/
|
|
127
|
+
criterion.json
|
|
128
|
+
status.json
|
|
129
|
+
README.md
|
|
130
|
+
evidence/
|
|
131
|
+
artifacts/
|
|
132
|
+
drafts/
|
|
133
|
+
<goal>/
|
|
134
|
+
contract.json
|
|
135
|
+
ledger.json
|
|
136
|
+
README.md
|
|
137
|
+
criteria/
|
|
121
138
|
completed/
|
|
122
139
|
blocked/
|
|
123
140
|
reports/
|
|
124
141
|
brainstorms/
|
|
142
|
+
events/
|
|
143
|
+
events.jsonl
|
|
144
|
+
activity/
|
|
145
|
+
current.json
|
|
146
|
+
snapshots/
|
|
147
|
+
current.json
|
|
125
148
|
architecture/
|
|
126
149
|
baseline.json
|
|
127
150
|
baseline.md
|
|
@@ -131,17 +154,22 @@ OpenNori writes its project-local state under `.opennori/`.
|
|
|
131
154
|
evidence/
|
|
132
155
|
```
|
|
133
156
|
|
|
134
|
-
Each
|
|
157
|
+
Each current or draft goal has:
|
|
135
158
|
|
|
136
|
-
- `<goal
|
|
137
|
-
- `<goal
|
|
159
|
+
- `<goal>/contract.json` as the goal-level Nori Contract source of truth
|
|
160
|
+
- `<goal>/ledger.json` as the deterministic aggregate evidence/status ledger
|
|
161
|
+
- `<goal>/README.md` as the human/agent review surface for the goal
|
|
162
|
+
- `<goal>/criteria/<AC-id>/criterion.json` as each AC source of truth
|
|
163
|
+
- `<goal>/criteria/<AC-id>/status.json` as a rebuildable status projection
|
|
164
|
+
- `<goal>/criteria/<AC-id>/README.md` as the per-AC review surface
|
|
165
|
+
- `<goal>/criteria/<AC-id>/evidence/*.json` for reviewable evidence records
|
|
138
166
|
|
|
139
167
|
`.opennori/manifest.json` records the project-local OpenNori registration:
|
|
140
168
|
|
|
141
169
|
- manifest schema and OpenNori protocol version
|
|
142
170
|
- OpenNori package version
|
|
143
171
|
- managed `.opennori` files and directories
|
|
144
|
-
-
|
|
172
|
+
- the single current goal, draft goals, completed/blocked history, and legacy `.opennori/active` recovery state
|
|
145
173
|
- OpenNori Plugin and package Skill asset state
|
|
146
174
|
- Architecture Baseline, profile, challenge, build-vs-buy, and agent-readable surface state
|
|
147
175
|
- protocol capabilities exposed by this CLI
|
|
@@ -151,6 +179,41 @@ Each active goal has:
|
|
|
151
179
|
State-changing OpenNori commands refresh the manifest when
|
|
152
180
|
`.opennori/` already exists.
|
|
153
181
|
|
|
182
|
+
## Event, Activity, And Dashboard State
|
|
183
|
+
|
|
184
|
+
OpenNori may maintain a local observation surface for users:
|
|
185
|
+
|
|
186
|
+
- `.opennori/events/events.jsonl` is an append-only event ledger for important
|
|
187
|
+
OpenNori state changes and live activity signals.
|
|
188
|
+
- `.opennori/activity/current.json` is the latest agent activity signal.
|
|
189
|
+
- `.opennori/snapshots/current.json` is a projection for the dashboard.
|
|
190
|
+
|
|
191
|
+
These files are not Product AC, not implementation plans, and not completion
|
|
192
|
+
evidence. They help users observe the acceptance loop while it runs. The source
|
|
193
|
+
of truth for completion remains the current Nori Contract, evidence ledger,
|
|
194
|
+
Nori Profile, Architecture Baseline, and report state.
|
|
195
|
+
|
|
196
|
+
`opennori dashboard --root <project>` starts a local loopback HTTP/SSE kernel
|
|
197
|
+
and serves a static visual dashboard. `opennori activity ...` lets an agent
|
|
198
|
+
publish whether it is thinking, working, verifying, waiting for the user, or
|
|
199
|
+
blocked. Activity can explain what the agent is doing, but it cannot mark an AC
|
|
200
|
+
passing.
|
|
201
|
+
|
|
202
|
+
Dashboard is an observation surface, not a confirmation surface. It may show
|
|
203
|
+
that a user decision, waiver, Architecture Baseline confirmation, AC approval,
|
|
204
|
+
or report acceptance is needed, but it must direct that decision back to the
|
|
205
|
+
agent conversation. Product AC, evidence, profile, architecture, report, waiver,
|
|
206
|
+
and completion state are written through OpenNori Skills and CLI, not dashboard
|
|
207
|
+
buttons or control endpoints.
|
|
208
|
+
|
|
209
|
+
CLI JSON `data.agent_next.dashboard_activity` is the preferred Skill-facing
|
|
210
|
+
hint for live dashboard publishing. If a Skill does not have that hint, it may
|
|
211
|
+
call `opennori activity start|heartbeat|finish` with only root, Skill, state,
|
|
212
|
+
and summary; the CLI can infer the unique current goal/gap. If no current goal
|
|
213
|
+
exists, activity must not bind to drafts. If multiple current goals exist,
|
|
214
|
+
activity publishing must fail closed and route to doctor because current state
|
|
215
|
+
is broken.
|
|
216
|
+
|
|
154
217
|
`opennori install --dry-run` returns an install plan. The plan uses deterministic action semantics:
|
|
155
218
|
|
|
156
219
|
- `create`: missing OpenNori asset would be created
|
|
@@ -178,6 +241,7 @@ behavior protocols, not CLI manuals for users. The user should not need to remem
|
|
|
178
241
|
command flags; the root `nori` Skill routes natural-language requests to focused Skills:
|
|
179
242
|
|
|
180
243
|
- `nori`: root router for OpenNori turns
|
|
244
|
+
- `nori-autogoal`: converge a rough idea into a standard Nori Contract Draft without creating a separate autogoal artifact
|
|
181
245
|
- `nori-acceptance`: discover AC gaps, brainstorm, draft, approve, and revise human-facing ACs
|
|
182
246
|
- `nori-evidence`: record reviewable evidence without forcing fixed adapters
|
|
183
247
|
- `nori-capability-profile`: record required Skills, preferred stacks, avoided tools, and install policy
|
|
@@ -192,6 +256,77 @@ Each packaged Skill states its mission, starting state reads, natural-language m
|
|
|
192
256
|
state writes, handoff rules, user-facing reply shape, and misuse guards. This lets agents use
|
|
193
257
|
OpenNori from natural language while the CLI remains a deterministic state layer.
|
|
194
258
|
|
|
259
|
+
Visible product surfaces require Acceptance Surface Modeling before the agent
|
|
260
|
+
drafts Product AC, records confident passing evidence, or reports confident
|
|
261
|
+
completion. The model is an agent runtime contract, not a CLI validator. For
|
|
262
|
+
UI screens, CRUD objects, dashboards, lists, tables, forms, settings, editors,
|
|
263
|
+
inspectors, previews, management consoles, desktop windows, CLI prompts,
|
|
264
|
+
MCP/tool-facing user flows, and similar workflows, the agent identifies:
|
|
265
|
+
|
|
266
|
+
- actor
|
|
267
|
+
- entry
|
|
268
|
+
- visible trigger
|
|
269
|
+
- object
|
|
270
|
+
- action
|
|
271
|
+
- interaction surface
|
|
272
|
+
- required information
|
|
273
|
+
- feedback
|
|
274
|
+
- state change
|
|
275
|
+
- persistence
|
|
276
|
+
- destructive boundary
|
|
277
|
+
- evidence shape
|
|
278
|
+
|
|
279
|
+
When a goal says "project CRUD", "manage projects", "settings are editable",
|
|
280
|
+
or "dashboard shows state", the agent splits create, view/select, edit,
|
|
281
|
+
delete/unlink/archive, cancel, recover, and preview flows when their controls,
|
|
282
|
+
fields, feedback, persistence, destructive boundary, or evidence differs. If a
|
|
283
|
+
model item changes the meaning of done and is unknown, the agent asks one
|
|
284
|
+
completion-changing question or records a clear assumption for the AC Review
|
|
285
|
+
Loop. This must not become a fixed target-type word list, implementation plan,
|
|
286
|
+
or hard CLI quality gate.
|
|
287
|
+
|
|
288
|
+
The model is only useful when it changes the draft criteria. Coverage notes or
|
|
289
|
+
agent prose that say "Acceptance Surface Modeling was considered" are not
|
|
290
|
+
enough. For visible product surfaces, each relevant criterion carries its
|
|
291
|
+
operation path in the criterion itself:
|
|
292
|
+
|
|
293
|
+
- `user_story`: user role, entry, object, and operation or judgment
|
|
294
|
+
- `measurement`: entry, visible trigger, interaction surface, object/action,
|
|
295
|
+
and required information or states
|
|
296
|
+
- `threshold`: visible feedback, immediate state change, persistence or
|
|
297
|
+
destructive boundary, failure/recovery behavior, and evidence shape
|
|
298
|
+
|
|
299
|
+
If the operation path is present only in coverage summary, private reasoning,
|
|
300
|
+
architecture notes, evidence notes, or future implementation plans, the draft
|
|
301
|
+
is not ready for approval and evidence/reporting cannot treat it as confidently
|
|
302
|
+
acceptable.
|
|
303
|
+
|
|
304
|
+
Acceptance Surface Modeling is a cross-Skill gate. Architecture, profile,
|
|
305
|
+
build-vs-buy, health, evidence, and reporting Skills must not bypass it:
|
|
306
|
+
|
|
307
|
+
- `nori-architecture-brainstorm` may decide runtime/state/module/dependency
|
|
308
|
+
boundaries only after the visible Product AC names the user operation path.
|
|
309
|
+
- `nori-architecture-apply` must stop implementation when the current visible
|
|
310
|
+
Product AC is still a broad outcome.
|
|
311
|
+
- `nori-architecture-challenge` must distinguish real architecture drift from
|
|
312
|
+
missing AC detail; missing controls, fields, feedback, persistence, or
|
|
313
|
+
delete semantics route to `nori-acceptance`.
|
|
314
|
+
- `nori-build-vs-buy` may choose reusable infrastructure, but it cannot decide
|
|
315
|
+
what the user accepts on the product surface.
|
|
316
|
+
- `nori-capability-profile` records Skill/stack/tool constraints separately;
|
|
317
|
+
satisfying them does not prove the visible workflow.
|
|
318
|
+
- `nori-project-health` reports bundle/state readiness only; it routes broad
|
|
319
|
+
AC meaning back to acceptance review instead of treating readiness as
|
|
320
|
+
completion.
|
|
321
|
+
|
|
322
|
+
If a user and agent are already discussing goal and AC before OpenNori is initialized or before a
|
|
323
|
+
contract is approved, the agent should not restart the user through autogoal or a full discovery
|
|
324
|
+
questionnaire. The `nori-acceptance` Skill adopts the current conversation into a standard draft
|
|
325
|
+
Nori Contract by preparing a brief with `acceptance_basis.status: "draft"` and
|
|
326
|
+
`acceptance_basis.source: "conversation"`, then calling `opennori draft --brief`. The result stays
|
|
327
|
+
under `.opennori/drafts/` until the user approves or revises it. Conversation notes are not
|
|
328
|
+
completion evidence, and adoption must not start implementation or move the contract to current.
|
|
329
|
+
|
|
195
330
|
The package ships `.agents/plugins/marketplace.json` pointing to `./plugins/opennori`, where
|
|
196
331
|
`plugins/opennori/.codex-plugin/plugin.json` declares `skills: "./skills/"`. `opennori install`
|
|
197
332
|
writes project state under `.opennori/`; it does not copy OpenNori Skills into the user's project.
|
|
@@ -199,15 +334,17 @@ The manifest records `plugin` state, and `opennori doctor` checks whether packag
|
|
|
199
334
|
present and whether the manifest Plugin state is stale.
|
|
200
335
|
|
|
201
336
|
When upgrading an existing OpenNori project, upgrade entry assets first, then run `opennori check`.
|
|
202
|
-
`check` validates
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
337
|
+
`check` validates current Nori Contract integrity as hard state structure and reports objective
|
|
338
|
+
architecture, build-vs-buy, profile, and evidence-health state. It must not be treated as a
|
|
339
|
+
subjective AC-quality judge. Vague or possibly implementation-centered ACs such as "modify profile
|
|
340
|
+
fields" or "show an error" are handled by the OpenNori Skills and the agent/user conversation. The
|
|
341
|
+
agent may use `opennori discover` as a scratch question source, but gap ids and question wording are
|
|
342
|
+
not protocol-level acceptance truth. `check` reports `architecture_check` warnings when the current
|
|
343
|
+
goal has no confirmed Architecture Baseline, stale agent-readable surface, or unresolved
|
|
344
|
+
Architecture Challenges. It reports `evidence_health` warnings when a complete-looking goal relies
|
|
345
|
+
on stale, broad, source-free, or non-reviewable evidence. It does not rewrite existing contracts,
|
|
346
|
+
evidence, reports, archives, brainstorms, or baselines. The user decides whether to revise affected
|
|
347
|
+
criteria, confirm assumptions, accept review risk, revise architecture, or refresh evidence.
|
|
211
348
|
|
|
212
349
|
## Nori Profile
|
|
213
350
|
|
|
@@ -236,14 +373,49 @@ Completion rules:
|
|
|
236
373
|
Agents translate the user's natural-language preferences into profile records. Users should not
|
|
237
374
|
need to remember `opennori profile` commands.
|
|
238
375
|
|
|
376
|
+
## Language Preference
|
|
377
|
+
|
|
378
|
+
Language preference is presentation metadata, not Product AC. OpenNori stores
|
|
379
|
+
`presentation.language` on brainstorms, discoveries, and Nori Contracts so
|
|
380
|
+
generated goals, acceptance checks, discovery questions, and next loop
|
|
381
|
+
candidates stay in the language the user expects. The same preference is carried
|
|
382
|
+
by Skills into user-reviewable Nori Profile and project Architecture Profile
|
|
383
|
+
wording.
|
|
384
|
+
|
|
385
|
+
Only human-readable values follow the presentation language. Stable ids,
|
|
386
|
+
protocol field names, enum-like values such as `must`, `prefer`, `avoid`, and
|
|
387
|
+
import paths remain stable. If a project profile was created in the wrong
|
|
388
|
+
language, the agent revises or recreates that profile after user review.
|
|
389
|
+
OpenNori should not add a hard-coded language ratio validator or CLI
|
|
390
|
+
auto-translation layer.
|
|
391
|
+
|
|
239
392
|
## Architecture Baseline
|
|
240
393
|
|
|
241
394
|
Architecture Baseline is separate from Product AC. It is not a plan, phase list, task list, or
|
|
242
|
-
implementation checklist. It is sticky architecture guidance for agents and maintainers
|
|
395
|
+
implementation checklist. It is sticky architecture guidance for agents and maintainers.
|
|
396
|
+
|
|
397
|
+
It has two layers:
|
|
398
|
+
|
|
399
|
+
1. Architecture Charter: product boundary, agent behavior constraints, challenge rule, and
|
|
400
|
+
build-vs-buy policy.
|
|
401
|
+
2. Technical Architecture Baseline: concrete runtime topology, source-of-truth model,
|
|
402
|
+
module/package boundaries, CLI/MCP/API/IPC contract surfaces, data flows, dependency decisions,
|
|
403
|
+
reference mappings, and verification.
|
|
404
|
+
|
|
405
|
+
A baseline that only lists broad principles, preferred libraries, or governance constraints is not
|
|
406
|
+
concrete enough for non-trivial implementation. Agents should challenge or revise it before coding.
|
|
243
407
|
|
|
244
408
|
- selected Architecture Profile
|
|
245
409
|
- goal it applies to
|
|
246
410
|
- architecture principles and boundaries
|
|
411
|
+
- technical runtime topology
|
|
412
|
+
- source-of-truth and cache/projection boundaries
|
|
413
|
+
- module/package ownership boundaries
|
|
414
|
+
- CLI/MCP/API/IPC contract surfaces
|
|
415
|
+
- implementation data flows
|
|
416
|
+
- dependency decisions with reasons
|
|
417
|
+
- reference mappings from mature projects or official SDKs
|
|
418
|
+
- verification commands or review methods
|
|
247
419
|
- Architecture Checks for maintainers or agents
|
|
248
420
|
- preferred libraries or technologies
|
|
249
421
|
- avoid policy
|
|
@@ -259,10 +431,24 @@ OpenNori includes built-in profiles and supports project profiles under:
|
|
|
259
431
|
|
|
260
432
|
Use `opennori architecture profiles --root <project> --json` to list built-ins and project profiles.
|
|
261
433
|
The output is intentionally reviewable before baseline confirmation: each profile includes suitable
|
|
262
|
-
use cases, reference sources, architecture principles,
|
|
263
|
-
boundaries, validation issues, and build-vs-buy policy.
|
|
434
|
+
use cases, reference sources, architecture principles, concrete technical baseline sections,
|
|
435
|
+
checks, preferred libraries, avoid boundaries, validation issues, and build-vs-buy policy.
|
|
264
436
|
Use `opennori architecture profile --root <project> --from <profile.json> --json` to add a reviewed
|
|
265
437
|
project profile. Existing profiles are not overwritten unless the agent uses `--force` after review.
|
|
438
|
+
The managed project profile is `.opennori/architecture/profiles/<id>.json`.
|
|
439
|
+
Do not place profile source JSON, profile drafts, or baseline previews under
|
|
440
|
+
`.opennori/architecture/evidence/`; that directory is reserved for
|
|
441
|
+
architecture apply records.
|
|
442
|
+
|
|
443
|
+
Project Architecture Profile field names and stable ids stay English for the
|
|
444
|
+
protocol, but project profile user-readable values should follow the user's
|
|
445
|
+
language. When a current or draft Nori Contract has `presentation.language:
|
|
446
|
+
zh-CN`, agent-created project profile values such as title, summary, sources,
|
|
447
|
+
checks, technical baseline decisions, dependency reasons, preferred library
|
|
448
|
+
policy text, avoid boundaries, and build-vs-buy explanations should be written
|
|
449
|
+
in Chinese unless the user explicitly requests English. Built-in profiles may
|
|
450
|
+
remain in the package language. The CLI stores and validates profile structure;
|
|
451
|
+
it does not automatically translate profile prose.
|
|
266
452
|
|
|
267
453
|
Use `opennori architecture baseline --root <project> --goal "<goal>" --profile <profile-id> --json`
|
|
268
454
|
to preview a baseline. Preview has no side effect. After the user accepts it, rerun with `--confirm`.
|
|
@@ -274,7 +460,7 @@ Once confirmed, the baseline is written to:
|
|
|
274
460
|
- `.opennori/agent-guide.md`
|
|
275
461
|
|
|
276
462
|
Agent route files such as `AGENTS.md` or `CLAUDE.md` should point new sessions to these surfaces.
|
|
277
|
-
`opennori doctor` checks that the baseline exists when
|
|
463
|
+
`opennori doctor` checks that the baseline exists when a current goal requires it, that the schema is
|
|
278
464
|
valid, and that at least one agent route references `.opennori/architecture/baseline.md`.
|
|
279
465
|
|
|
280
466
|
If project evidence conflicts with a confirmed baseline, the agent must create an Architecture
|
|
@@ -285,7 +471,7 @@ or project architecture:
|
|
|
285
471
|
opennori architecture challenge --root <project> --summary "<conflict>" --evidence "<evidence>" --recommendation "<change>" --json
|
|
286
472
|
```
|
|
287
473
|
|
|
288
|
-
Build-vs-buy decisions are first-class architecture
|
|
474
|
+
Build-vs-buy decisions are first-class architecture decisions. Before self-building infrastructure,
|
|
289
475
|
the agent checks current project dependencies, standard libraries, official SDKs, mature
|
|
290
476
|
open-source libraries, and documented reference projects:
|
|
291
477
|
|
|
@@ -293,12 +479,17 @@ open-source libraries, and documented reference projects:
|
|
|
293
479
|
opennori architecture build-vs-buy --root <project> --area "<area>" --need "<need>" --recommendation <reuse|buy|self-build> --summary "<decision>" --json
|
|
294
480
|
```
|
|
295
481
|
|
|
296
|
-
Architecture state affects completion confidence, not Product AC shape.
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
482
|
+
Architecture state affects completion confidence, not Product AC shape. The agent/user first records
|
|
483
|
+
Architecture Requirement as `unknown`, `required`, `not_required`, or `waived`; CLI must not infer
|
|
484
|
+
non-triviality from the existence of a goal or from natural-language text. When every required
|
|
485
|
+
Product AC is `passing` or `waived` but the requirement is still `unknown`, OpenNori reports
|
|
486
|
+
`architecture_requirement` review risk. When requirement is `required` and the goal has a
|
|
487
|
+
missing/draft/invalid/challenged baseline, stale agent-readable architecture surface, invalid
|
|
488
|
+
architecture apply records, or unhealthy build-vs-buy decisions, OpenNori reports
|
|
489
|
+
`architecture_review`, `architecture_evidence`, or `build_vs_buy` review risk. When
|
|
490
|
+
requirement is `waived`, OpenNori reports `architecture_waived` with the recorded reason. It must
|
|
491
|
+
not create synthetic ARCH acceptance criteria or replace `current_gap` unless a real Product AC or
|
|
492
|
+
blocking Profile item is still incomplete.
|
|
302
493
|
|
|
303
494
|
## Status Model
|
|
304
495
|
|
|
@@ -310,40 +501,32 @@ still incomplete.
|
|
|
310
501
|
|
|
311
502
|
The workflow ledger is complete only when every required criterion is `passing` or `waived`.
|
|
312
503
|
The user-facing completion answer is not confidently complete while `evidence_health` has review
|
|
313
|
-
findings, `profile_review` is unresolved, `architecture_review
|
|
314
|
-
unhealthy, even if the ledger status is already
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
completion
|
|
504
|
+
findings, `profile_review` is unresolved, `architecture_requirement`, `architecture_review`, or
|
|
505
|
+
`architecture_waived` remains, or `build_vs_buy` is unhealthy, even if the ledger status is already
|
|
506
|
+
`complete`.
|
|
507
|
+
|
|
508
|
+
When a goal is confidently complete, `agent_next.state` becomes `ready_for_next_loop`.
|
|
509
|
+
OpenNori CLI does not invent product candidate goals. If the user asks to continue, the Skill uses
|
|
510
|
+
the completed contract context, project evidence, and user intent to prepare the next
|
|
511
|
+
human-facing NoriBrief, then stores it with `opennori draft --brief`.
|
|
512
|
+
Next-loop suggestions are not phases, task lists, approved acceptance criteria, or completion
|
|
513
|
+
evidence. A new loop starts only after the Skill creates a standard draft Nori Contract and the user
|
|
514
|
+
approves or revises it.
|
|
322
515
|
|
|
323
516
|
## Risk Gate
|
|
324
517
|
|
|
325
|
-
OpenNori separates acceptance status from
|
|
326
|
-
|
|
327
|
-
For `high` risk criteria, weak evidence cannot make an AC `passing`. If an agent submits
|
|
328
|
-
`passing` evidence with a weak kind, OpenNori downgrades the criterion to `failing` with
|
|
329
|
-
`confidence: strong-evidence-required`.
|
|
330
|
-
|
|
331
|
-
Strong evidence kinds:
|
|
332
|
-
|
|
333
|
-
- `test-summary`
|
|
334
|
-
- `screenshot`
|
|
335
|
-
- `artifact`
|
|
336
|
-
- `review-result`
|
|
337
|
-
- `human-confirmation`
|
|
338
|
-
- `protocol-v1`
|
|
339
|
-
|
|
340
|
-
Strong explicit confidence values:
|
|
518
|
+
OpenNori separates objective acceptance status from confidence and review risk.
|
|
341
519
|
|
|
342
|
-
|
|
343
|
-
-
|
|
344
|
-
|
|
520
|
+
If an agent submits `passing` evidence for a high-risk criterion, the CLI preserves the objective
|
|
521
|
+
result that was submitted. It does not use a hard-coded strong/weak evidence word list to rewrite
|
|
522
|
+
subjective sufficiency. Instead, `confidence` and `evidence_health` surface risk: high-risk passing
|
|
523
|
+
evidence based only on `agent-observation`, missing reviewable sources, missing reviewability, or
|
|
524
|
+
missing limitations makes completion objectively complete with review risk rather than confidently
|
|
525
|
+
complete.
|
|
345
526
|
|
|
346
|
-
|
|
527
|
+
The only downgrade in the core state layer is objective: architecture/context-only sources cannot
|
|
528
|
+
prove Product AC by themselves, so passing evidence made only of context sources is downgraded to
|
|
529
|
+
product-evidence-required. Product evidence sufficiency remains an agent/user review judgment.
|
|
347
530
|
|
|
348
531
|
## Free Evidence Structure
|
|
349
532
|
|
|
@@ -364,56 +547,89 @@ When the agent submits evidence, the user-facing record should explain:
|
|
|
364
547
|
The shape is intentionally open. OpenNori should preserve arbitrary source metadata instead of forcing
|
|
365
548
|
all evidence through a narrow adapter taxonomy.
|
|
366
549
|
`evidence_health` audits that reviewability surface without forcing an adapter taxonomy: it warns
|
|
367
|
-
about missing sources, missing reviewability, missing limitations, stale timestamps,
|
|
368
|
-
|
|
550
|
+
about missing sources, missing reviewability, missing limitations, stale timestamps, missing local
|
|
551
|
+
artifacts, and high-risk passing evidence based only on agent observation.
|
|
369
552
|
|
|
370
553
|
## Agent Rule
|
|
371
554
|
|
|
372
555
|
On every turn:
|
|
373
556
|
|
|
374
|
-
1. If the user gives a fuzzy goal or candidate AC,
|
|
557
|
+
1. If the user gives a fuzzy goal or candidate AC, use `nori-acceptance` to inspect the goal and prepare the missing acceptance questions. Optionally store those Skill-prepared questions with `opennori discover --goal "<goal>" --questions '<questions.json>' --root <repo> --json` before drafting.
|
|
558
|
+
1a. If the user asks for autogoal or wants fewer clarification rounds from a rough idea, use `nori-autogoal`: the Skill reads context, preserves the full user intent, infers assumptions, asks only completion-changing questions, and creates a standard Nori Contract Draft through `opennori draft --brief`. Autogoal is not a new contract type and must not shrink a broad idea into MVP, first version, prototype, phases, or task lists.
|
|
559
|
+
1a-i. If the user asks for enhanced autogoal, self-grill, "agent grill yourself", or gives a rough idea such as a todolist and expects OpenNori to flesh out all usage scenarios, `nori-autogoal` must run Enhanced Discovery before drafting. The agent internally expands user roles, entrypoints, scenarios, data objects, rules, state transitions, invalid input, success feedback, persistence, failure/recovery, UI/UX, review methods, assumptions, and out-of-scope boundaries. It then shows a compact `Enhanced Discovery checked` section and only the critical questions that change completion meaning. The Skill-prepared brief must persist `acceptance_basis.source: "autogoal"`, `acceptance_basis.mode: "enhanced"`, `coverage_summary`, `assumptions`, `open_questions`, and optional `out_of_scope` so draft/status/report reveal that enhanced discovery was used. This remains Skill behavior and reviewable contract basis metadata, not a CLI hard validator, new artifact, phase list, process log, or task plan.
|
|
560
|
+
1b. If the user asks for a complete product, complete feature loop, full app, full dashboard, full workbench, or explicitly says not MVP, the Skill must define the full acceptance surface before approval instead of compressing the goal into a compact starter AC set. Cover user roles, entry/navigation, core workflows, state transitions, data rules, permissions and boundaries, failure/recovery, persistence, UI/UX when visible, and report/review method. AC count may grow with the real product surface; execution still advances one current gap at a time. Only shrink the completion definition when the user explicitly chooses a prototype, MVP, first version, or narrower scope.
|
|
561
|
+
1b-i. For complete-product autogoal or draft revision, the Skill must run a coverage self-check before asking for approval. It should map product surfaces to planned AC boundaries and split unrelated user judgments instead of bundling them into a few broad AC. Typical separate surfaces include project selection, overview, object list/detail, read-only preview, source/version/audit, memory, capabilities, external knowledge, search/index, timeline/audit, permissions/security boundary, state feedback, persistence, failure recovery, and final review/report. This remains Skill/user review behavior, not a CLI hard validator or natural-language quality test.
|
|
562
|
+
1c. If the goal includes a visible interface such as a page, app, Dashboard, Desktop, workbench, form, settings screen, or admin console, the Skill must discover UI/UX acceptance as Product AC. It should cover entry/navigation, information hierarchy, empty/loading/error/success states, operation feedback, readability, visual and interaction consistency, recovery paths, and UI boundaries. This is Skill/user review behavior, not a CLI hard validator.
|
|
563
|
+
1d. If the goal or AC includes UI, CRUD, Dashboard, list, table, form, settings,
|
|
564
|
+
admin, desktop, CLI prompt, MCP tool flow, preview, inspector, or management
|
|
565
|
+
surface behavior, build an Acceptance Surface Model before drafting,
|
|
566
|
+
approving, recording confident passing evidence, or reporting confident
|
|
567
|
+
completion. Model actor, entry, visible trigger, object, action, interaction
|
|
568
|
+
surface, required information, feedback, state change, persistence, destructive
|
|
569
|
+
boundary, and evidence shape. Do not accept broad outcome AC such as "CRUD
|
|
570
|
+
works", "manage items", "settings are editable", or "dashboard shows state";
|
|
571
|
+
split the underlying user operations when their entry, control, fields,
|
|
572
|
+
feedback, persistence, destructive boundary, or evidence differs.
|
|
573
|
+
1d-a. The modeled operation path must be written into the Nori Contract
|
|
574
|
+
criterion, not only mentioned in coverage notes. For visible product surfaces,
|
|
575
|
+
`measurement` should name the entry, visible trigger, interaction surface,
|
|
576
|
+
object/action, and required information or states; `threshold` should name
|
|
577
|
+
feedback, state change, persistence or destructive boundary, failure/recovery,
|
|
578
|
+
and evidence shape. If those fields remain broad, revise the draft through
|
|
579
|
+
`nori-acceptance` before approval, confident evidence, architecture apply, or
|
|
580
|
+
completion reporting.
|
|
581
|
+
1d-i. Apply that rule across all OpenNori Skills. Do not preview/confirm an
|
|
582
|
+
architecture baseline, record architecture apply, file an architecture
|
|
583
|
+
challenge, choose a dependency, mark profile compliance, report project health,
|
|
584
|
+
or answer completion in a way that hides the fact that visible Product AC lacks
|
|
585
|
+
user operation-path detail. Route those cases to `nori-acceptance`.
|
|
375
586
|
2. Ask only the discovery questions that affect completion judgment. Do not turn discovery gaps into implementation tasks or completion evidence.
|
|
376
|
-
3. If the user wants to discuss, brainstorm, explore, or is not ready to define acceptance criteria,
|
|
587
|
+
3. If the user wants to discuss, brainstorm, explore, or is not ready to define acceptance criteria, prepare candidate directions as the Skill and optionally store them with `opennori brainstorm --idea "<idea>" --candidates '<candidates.json>' --root <repo> --json`.
|
|
377
588
|
4. Show only candidate acceptance directions and ask the user to choose or revise a direction. Brainstorm output is not a contract or completion evidence.
|
|
378
|
-
5. If the user chooses a candidate,
|
|
379
|
-
6. If the user starts with "use OpenNori" / "用 OpenNori 跑这个任务" and discovery
|
|
380
|
-
7. Show
|
|
381
|
-
8.
|
|
589
|
+
5. If the user chooses a candidate, convert the chosen direction into a full NoriBrief with concrete user operations, visible results, boundaries, and review method.
|
|
590
|
+
6. If the user starts with "use OpenNori" / "用 OpenNori 跑这个任务" and discovery questions are answered or explicitly accepted as assumptions, prepare a full NoriBrief and run `opennori draft --brief <brief.json> --root <repo> --json`.
|
|
591
|
+
7. Show a compact draft overview, then start the AC Review Loop. Review one AC at a time with concrete user entry, visible trigger, interaction surface, object/action, required information or states, visible result, persistence or destructive boundary, non-passing cases, and evidence type. Ask the user to `confirm AC-<n>` or `revise AC-<n>: ...` before moving to the next AC. If the explanation is more specific than the criterion text, revise the draft criterion first so completion semantics live in the Nori Contract, not only in chat.
|
|
592
|
+
8. Only after every AC has been confirmed one by one, ask for final approval and run `opennori approve --root <repo> --summary "<approval>" --json`.
|
|
382
593
|
9. If the user states required Skills, preferred stacks, avoided tools, install policy, or execution constraints, run `opennori profile add --root <repo> ... --json` and keep those items out of the user acceptance criteria.
|
|
383
594
|
10. For non-trivial goals, run `opennori architecture profiles --root <repo> --json`, preview a baseline, show it to the user, and confirm it before implementation.
|
|
384
595
|
11. If the user provides a preferred architecture, add it with `opennori architecture profile --root <repo> --from <profile.json> --json` before previewing the baseline.
|
|
385
596
|
12. Before implementing an acceptance gap, read `.opennori/architecture/baseline.md` and keep Product AC separate from Architecture Checks.
|
|
386
597
|
13. Before self-building infrastructure, record a build-vs-buy decision.
|
|
387
598
|
14. If project evidence conflicts with the baseline, run `opennori architecture challenge`; do not silently replace the baseline.
|
|
388
|
-
15. If the user adds a new acceptance boundary
|
|
389
|
-
16. If the user
|
|
390
|
-
17. If the user
|
|
391
|
-
18.
|
|
392
|
-
19.
|
|
393
|
-
20.
|
|
394
|
-
21.
|
|
395
|
-
22.
|
|
396
|
-
23.
|
|
599
|
+
15. If the user adds a new acceptance boundary while reviewing a draft, run `opennori criterion add --root <repo> --from-draft --goal <goal-id> --id <id> ... --json`; the draft remains unapproved, the new criterion becomes part of the draft review surface, and the CLI keeps the draft contract, evidence ledger, goal README, per-criterion dossier, and manifest in sync. Do not patch the draft files manually unless the CLI is broken and project-health recovery has failed.
|
|
600
|
+
16. If the user adds a new acceptance boundary after approval, run `opennori criterion add --root <repo> --id <id> ... --json`; the new criterion becomes an evidence gap without forcing the agent to edit state files manually.
|
|
601
|
+
17. If the user revises a criterion while reviewing a draft, run `opennori criterion update --root <repo> --from-draft --goal <goal-id> --criterion <id> ... --json`; the draft remains unapproved and the AC Review Loop restarts from the changed AC. If the user revises an already approved current contract, run `opennori criterion update --root <repo> --criterion <id> ... --json`; old evidence for the changed criterion is cleared and the revised AC becomes the current evidence gap.
|
|
602
|
+
18. If the user asks to update an existing OpenNori project, run `opennori doctor`, use `opennori upgrade --dry-run/--confirm` for manifest/protocol/guide refreshes, then run `opennori check`; use `nori-acceptance` to review existing AC wording with the user instead of relying on fixed CLI quality gaps. If packaged Plugin Skills are missing, reinstall or update the OpenNori package instead of copying Skills into the project.
|
|
603
|
+
19. Run `opennori resume --root <repo>` or `opennori next --root <repo>` to recover the current goal and current acceptance gap from repository files.
|
|
604
|
+
20. Work only to produce evidence for that gap under the confirmed Architecture Baseline.
|
|
605
|
+
21. Add acceptance evidence with `opennori evidence add`; choose any suitable verification method, but record basis, sources, reviewability, confidence, and limitations. For visible product surfaces, evidence should name the modeled operation path: entry, visible trigger, object/action, interaction surface, required information, feedback, state change, persistence or destructive boundary, and evidence shape. If existing evidence is invalid or obsolete, run `opennori evidence prune` first so stale proof does not occupy current context. Add profile compliance evidence with `opennori profile evidence` when profile items exist.
|
|
606
|
+
22. If a dashboard is useful, publish live activity from `agent_next.dashboard_activity` or `opennori activity start/heartbeat/finish`; do not treat that activity as acceptance evidence or use dashboard controls for confirmation. If no current goal exists, do not bind activity to drafts; if multiple current goals exist, run doctor/project-health because the state is broken.
|
|
607
|
+
23. Run `opennori evaluate`.
|
|
608
|
+
24. Report acceptance state, profile compliance, and evidence, not implementation steps. If objective evidence exists but a visible product AC lacks Acceptance Surface Modeling, report it as objectively evidenced but not confidently acceptable yet and route back to `nori-acceptance`.
|
|
609
|
+
25. If the goal is complete and the user asked to continue, infer or ask for the next human-facing outcome from the completed context and user intent, prepare a full NoriBrief, then run `opennori draft --brief <brief.json> --root <repo> --json`. Do not treat next-loop suggestions as approved AC, phases, task lists, or evidence.
|
|
397
610
|
|
|
398
611
|
Useful commands:
|
|
399
612
|
|
|
400
|
-
- `opennori brainstorm --idea "<idea>" --root <repo>`:
|
|
401
|
-
- `opennori discover --goal "<goal>" --root <repo>`:
|
|
402
|
-
- `opennori draft --
|
|
403
|
-
- `opennori draft --from-brainstorm <brainstorm-id> --candidate <A|B|C> --root <repo>`: convert a selected brainstorm direction into a draft contract.
|
|
613
|
+
- `opennori brainstorm --idea "<idea>" --candidates '<candidates.json>' --root <repo>`: store Skill-prepared selectable acceptance directions before a contract exists.
|
|
614
|
+
- `opennori discover --goal "<goal>" --questions '<questions.json>' --root <repo>`: store a Skill-prepared question source before drafting a contract; the agent still decides which questions matter for the user.
|
|
615
|
+
- `opennori draft --brief <brief.json> --root <repo>`: create a standard draft Nori Contract from a Skill-prepared brief, including autogoal convergence output.
|
|
404
616
|
- `opennori approve --root <repo>`: mark the acceptance basis as approved so completion can be decided.
|
|
405
|
-
- `opennori criterion add --root <repo> --id <id> ...`: add a
|
|
406
|
-
- `opennori criterion
|
|
617
|
+
- `opennori criterion add --root <repo> --from-draft --goal <goal-id> --id <id> ...`: add a missing AC to a draft while keeping the draft unapproved and synchronizing the contract, ledger, markdown, and manifest.
|
|
618
|
+
- `opennori criterion add --root <repo> --id <id> ...`: add a newly confirmed acceptance boundary to the current contract and ledger.
|
|
619
|
+
- `opennori criterion update --root <repo> --from-draft --goal <goal-id> --criterion <id> ...`: revise a draft AC while keeping the acceptance basis unapproved.
|
|
620
|
+
- `opennori criterion update --root <repo> --criterion <id> ...`: revise an approved current AC and clear stale evidence for that AC.
|
|
407
621
|
- `opennori evidence add --root <repo> --criterion <id> --kind <kind> --summary "<summary>" --result <passing|failing|blocked|waived> --basis <basis> --source '<json-or-label>' --reviewability "<how to review>" --limitations "<known limits>"`: attach user-understandable, reviewable evidence without forcing a fixed adapter.
|
|
408
|
-
- `opennori evidence prune --root <repo> --criterion <id> --reason "<reason>"`: remove invalid or obsolete evidence from
|
|
622
|
+
- `opennori evidence prune --root <repo> --criterion <id> --reason "<reason>"`: remove invalid or obsolete evidence from a current criterion so reports and context exports only carry current proof.
|
|
409
623
|
- `opennori profile add --root <repo> --type <skill|stack|constraint> --name "<name>" --strength <must|prefer|avoid>`: record user execution preferences separately from ACs.
|
|
410
624
|
- `opennori profile evidence --root <repo> --item <item-id> --result <satisfied|violated|waived>`: record whether the agent followed the profile.
|
|
411
625
|
- `opennori profile show --root <repo>`: show profile compliance and blocking items.
|
|
412
|
-
- `opennori list --root <repo>`: list active
|
|
626
|
+
- `opennori list --root <repo>`: list the current goal, drafts, completed/blocked history, and legacy active recovery state.
|
|
413
627
|
- `opennori install --root <repo>`: create or refresh project-local OpenNori assets and manifest.
|
|
414
|
-
- `opennori upgrade --root <repo>`: preview and refresh project-local OpenNori assets without rewriting
|
|
628
|
+
- `opennori upgrade --root <repo>`: preview and refresh project-local OpenNori assets without rewriting current/draft/history contracts or evidence.
|
|
415
629
|
- `opennori doctor --root <repo>`: inspect project OpenNori health and recovery actions.
|
|
416
|
-
- `opennori check --root <repo>`: validate
|
|
417
|
-
- `opennori
|
|
630
|
+
- `opennori check --root <repo>`: validate current contract structure, surface Architecture Baseline health for the current goal, and report evidence health.
|
|
631
|
+
- `opennori dashboard --root <repo>`: start a local visual dashboard over OpenNori state.
|
|
632
|
+
- `opennori activity start|heartbeat|finish --root <repo>`: publish live agent activity for the dashboard; this is not evidence. Goal/gap may be inferred only when unique.
|
|
633
|
+
- `opennori resume --root <repo>`: recover the current goal, current gap, completion answer, and intervention state.
|
|
418
634
|
- `opennori status --root <repo>`: answer whether the goal is complete and whether the user needs to act.
|
|
419
635
|
- `opennori report --root <repo>`: generate the human acceptance report.
|