sagaz-ai 0.3.1 → 0.3.2
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/CHANGELOG.md +57 -0
- package/README.md +1 -0
- package/RELEASE_NOTES.md +15 -13
- package/ai-orchestration-ecosystem/INDEX.md +1 -0
- package/ai-orchestration-ecosystem/README.md +2 -0
- package/ai-orchestration-ecosystem/manifest.json +1 -0
- package/ai-orchestration-ecosystem/protocols/memory.md +135 -19
- package/ai-orchestration-ecosystem/templates/operational-memory.md +49 -0
- package/package.json +1 -1
- package/scripts/verify-package.js +81 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.2] - 2026-06-11
|
|
4
|
+
|
|
5
|
+
### Release Type
|
|
6
|
+
|
|
7
|
+
Patch
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Operational memory protocol for recurring project and team preferences across Sagaz runs.
|
|
12
|
+
- Operational memory template for `.sagaz/operational-memory.md` style project memory.
|
|
13
|
+
- Package validation for operational memory sections, safety terms, permission references, and template structure.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- README, ecosystem README, INDEX, and manifest now expose operational memory as an official Sagaz capability.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Replaced the previous generic memory protocol with a concrete approval-based operational memory contract.
|
|
22
|
+
|
|
23
|
+
### Removed
|
|
24
|
+
|
|
25
|
+
- None.
|
|
26
|
+
|
|
27
|
+
### Security
|
|
28
|
+
|
|
29
|
+
- Operational memory explicitly forbids secrets, credentials, session data, production data, and sensitive personal data.
|
|
30
|
+
- Durable project or team memory requires explicit user approval.
|
|
31
|
+
|
|
32
|
+
### Compatibility
|
|
33
|
+
|
|
34
|
+
- Windows: supported through Codex Desktop.
|
|
35
|
+
- macOS: supported through Codex Desktop.
|
|
36
|
+
- Node.js: package baseline remains `>=22.14`; Node.js 24 is preferred for new installs and CI.
|
|
37
|
+
- Codex Desktop: Sagaz remains a Codex Desktop orchestration skill, not a standalone terminal agent runtime.
|
|
38
|
+
|
|
39
|
+
### Migration Notes
|
|
40
|
+
|
|
41
|
+
- Existing users should run `npx sagaz-ai@0.3.2 sync` or `npx sagaz-ai sync` to refresh the installed Codex Desktop skill.
|
|
42
|
+
- Open a new Codex Desktop thread after syncing so the updated skill can be discovered.
|
|
43
|
+
|
|
44
|
+
### Verification
|
|
45
|
+
|
|
46
|
+
- npm test: passed locally on Windows.
|
|
47
|
+
- npm run doctor: passed locally on Windows with `Synchronized with source: yes`.
|
|
48
|
+
- npm pack --dry-run: passed locally on Windows after allowing npm cache access outside the sandbox.
|
|
49
|
+
- Windows: prepared from a Windows Codex Desktop workspace.
|
|
50
|
+
- macOS: package checks remain covered by GitHub Actions.
|
|
51
|
+
- Codex Desktop: skill sync remains required after install or upgrade.
|
|
52
|
+
|
|
53
|
+
### Release Evidence
|
|
54
|
+
|
|
55
|
+
- Commit: pending.
|
|
56
|
+
- Tag: pending.
|
|
57
|
+
- GitHub release: pending.
|
|
58
|
+
- npm package: pending.
|
|
59
|
+
|
|
3
60
|
## [0.3.1] - 2026-06-11
|
|
4
61
|
|
|
5
62
|
### Release Type
|
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@ Sagaz also guides the user through the process. At the end of each phase, it exp
|
|
|
36
36
|
- **GitHub without guesswork:** Sagaz recommends commits, pushes, pull requests, issues, and releases at the right time.
|
|
37
37
|
- **Web and mobile:** workflows for browser apps, websites, dashboards, Android, and iOS.
|
|
38
38
|
- **Persistent state:** Markdown run state records decisions, approvals, handoffs, risks, and test evidence.
|
|
39
|
+
- **Operational memory:** optional project or team memory records recurring preferences without storing secrets or bypassing approvals.
|
|
39
40
|
- **Agent observability:** compact traces record decisions, tools, evidence, failures, and recoveries.
|
|
40
41
|
- **Durable checkpoints:** long projects can resume across threads and refactors without losing context.
|
|
41
42
|
- **Tool registry:** Sagaz verifies and recommends tools such as GitHub CLI, Playwright, Vercel, Expo/EAS, Supabase, Firebase, Stripe, CI/CD, and observability services.
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Release
|
|
4
4
|
|
|
5
|
-
Version: 0.3.
|
|
5
|
+
Version: 0.3.2
|
|
6
6
|
Date: 2026-06-11
|
|
7
7
|
Release type: Patch
|
|
8
8
|
GitHub commit: pending
|
|
@@ -12,25 +12,26 @@ npm package: pending
|
|
|
12
12
|
|
|
13
13
|
## Summary
|
|
14
14
|
|
|
15
|
-
Sagaz 0.3.
|
|
15
|
+
Sagaz 0.3.2 adds operational memory: a safe, explicit, approval-based way to record recurring project and team preferences across Sagaz runs without storing secrets or bypassing current user instructions.
|
|
16
16
|
|
|
17
17
|
## Audience Impact
|
|
18
18
|
|
|
19
|
-
- New users:
|
|
20
|
-
- Existing users: can sync the installed skill and
|
|
21
|
-
- Teams: get a
|
|
22
|
-
- Maintainers: package validation now
|
|
19
|
+
- New users: can understand how Sagaz handles recurring preferences before using it across multiple projects.
|
|
20
|
+
- Existing users: can sync the installed skill and use the new memory protocol/template in real projects.
|
|
21
|
+
- Teams: get a safer shared preference artifact for stack, design, verification, GitHub, deployment, and handoff expectations.
|
|
22
|
+
- Maintainers: package validation now protects the memory protocol and template from accidental drift.
|
|
23
23
|
|
|
24
24
|
## What Changed
|
|
25
25
|
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
- Registered the
|
|
29
|
-
-
|
|
26
|
+
- Replaced the generic `protocols/memory.md` with a concrete operational memory contract.
|
|
27
|
+
- Added `templates/operational-memory.md`.
|
|
28
|
+
- Registered the memory template in `manifest.json`.
|
|
29
|
+
- Linked operational memory from README, ecosystem README, and INDEX.
|
|
30
|
+
- Added verifier checks for memory levels, approval language, storage path, sensitive-data exclusions, and required template fields.
|
|
30
31
|
|
|
31
32
|
## Why It Matters
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
Sagaz can now carry stable preferences between projects in an auditable way while still respecting the current repository, current user request, and explicit permission gates. The memory system is intentionally file-based, reviewable, and scoped.
|
|
34
35
|
|
|
35
36
|
## Compatibility
|
|
36
37
|
|
|
@@ -45,7 +46,7 @@ After `0.3.0`, Sagaz had strong governance but needed a direct bridge between in
|
|
|
45
46
|
Run:
|
|
46
47
|
|
|
47
48
|
```bash
|
|
48
|
-
npx sagaz-ai@0.3.
|
|
49
|
+
npx sagaz-ai@0.3.2 sync
|
|
49
50
|
npx sagaz-ai doctor
|
|
50
51
|
```
|
|
51
52
|
|
|
@@ -56,11 +57,12 @@ Then open a new Codex Desktop thread so Sagaz is rediscovered.
|
|
|
56
57
|
- `npm test`: passed locally on Windows.
|
|
57
58
|
- `npm run doctor`: passed locally on Windows with installed skill synchronization confirmed.
|
|
58
59
|
- `npm pack --dry-run`: passed locally on Windows after npm cache access was allowed outside the sandbox.
|
|
59
|
-
- Manual checks:
|
|
60
|
+
- Manual checks: memory protocol and template are registered in the manifest and linked from docs.
|
|
60
61
|
|
|
61
62
|
## Known Limitations
|
|
62
63
|
|
|
63
64
|
- Sagaz still intentionally skips a standalone CLI runtime; Codex Desktop remains the execution surface.
|
|
65
|
+
- Operational memory is advisory and must not override current user instructions or repository evidence.
|
|
64
66
|
- Connector behavior depends on each external MCP/app authorization and platform availability.
|
|
65
67
|
|
|
66
68
|
## Rollback Plan
|
|
@@ -118,6 +118,7 @@ See `protocols/` for quality gates, testing matrix, stack selection, design qual
|
|
|
118
118
|
See `templates/` for task briefs, product specs, technical specs, design systems, future-change guides, refactor safety contracts, stack recommendations, run state, squad handoffs, QA reports, release checklists, changelogs, release notes, and final handoffs.
|
|
119
119
|
|
|
120
120
|
- `templates/execution-trace.md`
|
|
121
|
+
- `templates/operational-memory.md`
|
|
121
122
|
|
|
122
123
|
## Governance
|
|
123
124
|
|
|
@@ -47,6 +47,8 @@ Use `protocols/agent-observability.md` and `templates/execution-trace.md` for mu
|
|
|
47
47
|
|
|
48
48
|
Use `protocols/mcp-connector-policy.md` before using MCPs or external connectors such as Figma, GitHub, Canva, Browser, Vercel, Supabase, Firebase, npm, or observability tools.
|
|
49
49
|
|
|
50
|
+
Use `protocols/memory.md` and `templates/operational-memory.md` before creating durable project or team preferences for future Sagaz runs.
|
|
51
|
+
|
|
50
52
|
## Advanced Engineering Coverage
|
|
51
53
|
|
|
52
54
|
Sagaz includes protocols for SRE readiness, DORA metrics, secure SDLC, dependency governance, data privacy lifecycle, architecture fitness functions, API contracts, performance budgets, accessibility compliance, database migrations, release strategy, and AI application quality.
|
|
@@ -122,6 +122,7 @@
|
|
|
122
122
|
"templates/implementation-plan.md",
|
|
123
123
|
"templates/execution-trace.md",
|
|
124
124
|
"templates/mobile-release-checklist.md",
|
|
125
|
+
"templates/operational-memory.md",
|
|
125
126
|
"templates/product-spec.md",
|
|
126
127
|
"templates/qa-report.md",
|
|
127
128
|
"templates/refactor-safety-contract.md",
|
|
@@ -1,32 +1,148 @@
|
|
|
1
|
-
|
|
1
|
+
# Protocol: Operational Memory
|
|
2
2
|
|
|
3
3
|
## Objective
|
|
4
4
|
|
|
5
|
-
Define how Sagaz
|
|
5
|
+
Define how Sagaz records recurring user, team, stack, delivery, and quality preferences across projects without storing secrets, private data, or unverified assumptions as durable memory.
|
|
6
|
+
|
|
7
|
+
Operational memory is a lightweight project or team artifact. It is not a hidden database, not a substitute for current project inspection, and not permission to act without approval.
|
|
8
|
+
|
|
9
|
+
## Scope
|
|
10
|
+
|
|
11
|
+
Use this protocol for preferences that are stable enough to help future Sagaz runs, such as:
|
|
12
|
+
|
|
13
|
+
- Preferred stack defaults.
|
|
14
|
+
- Design and UX expectations.
|
|
15
|
+
- Testing and verification habits.
|
|
16
|
+
- GitHub, branch, commit, pull request, and release preferences.
|
|
17
|
+
- Deployment and hosting preferences.
|
|
18
|
+
- Communication and handoff style.
|
|
19
|
+
- Team-specific stop conditions.
|
|
20
|
+
- Recurring constraints for Windows, macOS, or Codex Desktop.
|
|
21
|
+
|
|
22
|
+
Do not use operational memory for:
|
|
23
|
+
|
|
24
|
+
- Secrets, tokens, passwords, keys, credentials, or session data.
|
|
25
|
+
- Personal sensitive data.
|
|
26
|
+
- Production data.
|
|
27
|
+
- Legal, financial, medical, or employment decisions.
|
|
28
|
+
- Temporary guesses that were not confirmed by the user.
|
|
29
|
+
- Instructions that conflict with the current user request, repository state, or `protocols/permission-contract.md`.
|
|
30
|
+
|
|
31
|
+
## Memory Levels
|
|
32
|
+
|
|
33
|
+
- `M0 ephemeral`: context useful only inside the current response or tool step.
|
|
34
|
+
- `M1 thread`: context useful for the current Codex Desktop thread.
|
|
35
|
+
- `M2 project`: preferences useful for the current repository or workspace.
|
|
36
|
+
- `M3 team`: preferences the user explicitly wants Sagaz to remember across projects.
|
|
37
|
+
|
|
38
|
+
Sagaz may infer M0 and M1 from the current conversation. M2 and M3 require explicit user approval before being written or updated.
|
|
6
39
|
|
|
7
40
|
## Required Practice
|
|
8
41
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
42
|
+
1. Inspect current project state before applying memory to a concrete task.
|
|
43
|
+
2. Treat memory as advisory, not authoritative.
|
|
44
|
+
3. Prefer current user instructions over stored preferences.
|
|
45
|
+
4. Ask before creating or updating M2 or M3 memory.
|
|
46
|
+
5. Record source, date, owner, confidence, scope, and expiry for each durable entry.
|
|
47
|
+
6. Keep memory compact and easy to audit.
|
|
48
|
+
7. Reconfirm stale or risky preferences before using them.
|
|
49
|
+
8. Use `templates/operational-memory.md` for durable M2 or M3 entries.
|
|
50
|
+
9. Reference `protocols/permission-contract.md` before any action that changes local state, remote state, deployments, packages, billing, credentials, or GitHub history.
|
|
51
|
+
10. Reference `protocols/agent-observability.md` when memory affects a multi-phase or high-risk workflow.
|
|
14
52
|
|
|
15
|
-
##
|
|
53
|
+
## Approval Rules
|
|
54
|
+
|
|
55
|
+
Sagaz must ask explicit approval before:
|
|
56
|
+
|
|
57
|
+
- Creating a project memory file.
|
|
58
|
+
- Adding a new durable preference.
|
|
59
|
+
- Promoting a thread preference to project or team memory.
|
|
60
|
+
- Applying a stored preference that affects architecture, cost, security, data, deployment, release, or public output.
|
|
61
|
+
- Removing, renaming, or changing the meaning of an existing durable preference.
|
|
62
|
+
|
|
63
|
+
Approval prompt format:
|
|
16
64
|
|
|
17
65
|
```md
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
66
|
+
Memory update proposed:
|
|
67
|
+
Scope:
|
|
68
|
+
Preference:
|
|
69
|
+
Source:
|
|
70
|
+
Why it helps:
|
|
22
71
|
Risk:
|
|
23
|
-
|
|
72
|
+
Expiry or review date:
|
|
73
|
+
Approval needed:
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Storage Convention
|
|
77
|
+
|
|
78
|
+
Preferred project-local path:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
.sagaz/operational-memory.md
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If the project should not store Sagaz artifacts, use a user-approved location and record that location in the handoff.
|
|
85
|
+
|
|
86
|
+
Do not create hidden memory outside the workspace without explicit user approval.
|
|
87
|
+
|
|
88
|
+
## Entry Format
|
|
89
|
+
|
|
90
|
+
Each durable memory entry must include:
|
|
91
|
+
|
|
92
|
+
```md
|
|
93
|
+
Preference ID:
|
|
94
|
+
Scope: M2 project | M3 team
|
|
95
|
+
Status: active | proposed | deprecated
|
|
96
|
+
Owner:
|
|
97
|
+
Source:
|
|
98
|
+
Created:
|
|
99
|
+
Last reviewed:
|
|
100
|
+
Review by:
|
|
101
|
+
Confidence: low | medium | high
|
|
102
|
+
Preference:
|
|
103
|
+
Applies when:
|
|
104
|
+
Do not apply when:
|
|
105
|
+
Permission impact:
|
|
106
|
+
Evidence:
|
|
24
107
|
```
|
|
108
|
+
|
|
109
|
+
## Conflict Handling
|
|
110
|
+
|
|
111
|
+
When memory conflicts with a current instruction or repository evidence:
|
|
112
|
+
|
|
113
|
+
1. Follow the current user instruction when it is safe and clear.
|
|
114
|
+
2. Explain the conflict briefly.
|
|
115
|
+
3. Ask before updating or deprecating the memory entry.
|
|
116
|
+
4. Record the decision in run state or execution trace when the task is meaningful.
|
|
117
|
+
|
|
118
|
+
## Review And Expiry
|
|
119
|
+
|
|
120
|
+
Use review dates to prevent stale preferences from becoming invisible defaults.
|
|
121
|
+
|
|
122
|
+
- M2 project memory should be reviewed after major stack, deployment, or team changes.
|
|
123
|
+
- M3 team memory should be reviewed at least every 90 days or before a major release.
|
|
124
|
+
- Any memory involving cost, security, compliance, deployment, or public communication should be reconfirmed before use when stale.
|
|
125
|
+
|
|
25
126
|
## Blocking Conditions
|
|
26
127
|
|
|
27
|
-
- The
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
128
|
+
- The user has not approved durable memory creation or update.
|
|
129
|
+
- The proposed memory includes secrets or sensitive data.
|
|
130
|
+
- The memory conflicts with `protocols/permission-contract.md`.
|
|
131
|
+
- The current repository state contradicts the stored preference and the conflict is not resolved.
|
|
132
|
+
- The memory would cause unapproved external operations, publishing, deployment, billing, or destructive changes.
|
|
133
|
+
- The memory entry lacks source, scope, or review date.
|
|
134
|
+
|
|
135
|
+
## Output
|
|
136
|
+
|
|
137
|
+
When using operational memory, Sagaz should say:
|
|
138
|
+
|
|
139
|
+
```md
|
|
140
|
+
Memory used:
|
|
141
|
+
Scope:
|
|
142
|
+
Source:
|
|
143
|
+
Applied to:
|
|
144
|
+
Confidence:
|
|
145
|
+
Permission impact:
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
When proposing a memory update, Sagaz should ask for approval using the approval prompt format and wait for the user before writing durable memory.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Operational Memory
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
project:
|
|
7
|
+
owner:
|
|
8
|
+
scope: M2 project
|
|
9
|
+
created:
|
|
10
|
+
last_reviewed:
|
|
11
|
+
review_by:
|
|
12
|
+
storage_location:
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Operating Rules
|
|
16
|
+
|
|
17
|
+
- Use this file only with `protocols/memory.md`.
|
|
18
|
+
- Do not store secrets, tokens, passwords, keys, credentials, session data, production data, or sensitive personal data.
|
|
19
|
+
- Current user instructions and current repository state override stored preferences.
|
|
20
|
+
- Reconfirm stale, risky, or high-impact preferences before use.
|
|
21
|
+
|
|
22
|
+
## Preferences
|
|
23
|
+
|
|
24
|
+
| Preference ID | Scope | Status | Owner | Source | Created | Last reviewed | Review by | Confidence |
|
|
25
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
26
|
+
| MEM-001 | M2 project | proposed | | | | | | medium |
|
|
27
|
+
|
|
28
|
+
## Preference Details
|
|
29
|
+
|
|
30
|
+
### MEM-001
|
|
31
|
+
|
|
32
|
+
Preference:
|
|
33
|
+
|
|
34
|
+
Applies when:
|
|
35
|
+
|
|
36
|
+
Do not apply when:
|
|
37
|
+
|
|
38
|
+
Permission impact:
|
|
39
|
+
|
|
40
|
+
Evidence:
|
|
41
|
+
|
|
42
|
+
Notes:
|
|
43
|
+
|
|
44
|
+
## Deprecated Preferences
|
|
45
|
+
|
|
46
|
+
Move old preferences here instead of deleting them when history is useful.
|
|
47
|
+
|
|
48
|
+
| Preference ID | Deprecated on | Reason | Replacement |
|
|
49
|
+
| --- | --- | --- | --- |
|
package/package.json
CHANGED
|
@@ -813,6 +813,85 @@ function validateMcpConnectorPolicy() {
|
|
|
813
813
|
}
|
|
814
814
|
}
|
|
815
815
|
|
|
816
|
+
function validateOperationalMemoryProtocol() {
|
|
817
|
+
const file = path.join(ecosystemRoot, "protocols", "memory.md");
|
|
818
|
+
if (!fs.existsSync(file)) {
|
|
819
|
+
fail(file, "operational memory protocol is missing");
|
|
820
|
+
return;
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
const text = readText(file);
|
|
824
|
+
const present = headings(text);
|
|
825
|
+
for (const section of [
|
|
826
|
+
"Objective",
|
|
827
|
+
"Scope",
|
|
828
|
+
"Memory Levels",
|
|
829
|
+
"Required Practice",
|
|
830
|
+
"Approval Rules",
|
|
831
|
+
"Storage Convention",
|
|
832
|
+
"Entry Format",
|
|
833
|
+
"Conflict Handling",
|
|
834
|
+
"Review And Expiry",
|
|
835
|
+
"Blocking Conditions",
|
|
836
|
+
"Output"
|
|
837
|
+
]) {
|
|
838
|
+
if (!present.has(section)) {
|
|
839
|
+
fail(file, `missing section "${section}"`);
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
for (const term of [
|
|
844
|
+
"templates/operational-memory.md",
|
|
845
|
+
"protocols/permission-contract.md",
|
|
846
|
+
"protocols/agent-observability.md",
|
|
847
|
+
".sagaz/operational-memory.md",
|
|
848
|
+
"M0 ephemeral",
|
|
849
|
+
"M1 thread",
|
|
850
|
+
"M2 project",
|
|
851
|
+
"M3 team",
|
|
852
|
+
"secrets",
|
|
853
|
+
"sensitive data",
|
|
854
|
+
"explicit user approval",
|
|
855
|
+
"Approval needed:",
|
|
856
|
+
"Review by:",
|
|
857
|
+
"Permission impact:"
|
|
858
|
+
]) {
|
|
859
|
+
if (!text.includes(term)) {
|
|
860
|
+
fail(file, `operational memory protocol must mention "${term}"`);
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
function validateOperationalMemoryTemplate() {
|
|
866
|
+
const file = path.join(ecosystemRoot, "templates", "operational-memory.md");
|
|
867
|
+
if (!fs.existsSync(file)) {
|
|
868
|
+
fail(file, "operational memory template is missing");
|
|
869
|
+
return;
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
const text = readText(file);
|
|
873
|
+
const present = headings(text);
|
|
874
|
+
for (const section of ["Metadata", "Operating Rules", "Preferences", "Preference Details", "Deprecated Preferences"]) {
|
|
875
|
+
if (!present.has(section)) {
|
|
876
|
+
fail(file, `missing section "${section}"`);
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
for (const term of [
|
|
881
|
+
"protocols/memory.md",
|
|
882
|
+
"Do not store secrets",
|
|
883
|
+
"Current user instructions",
|
|
884
|
+
"Preference ID",
|
|
885
|
+
"Permission impact",
|
|
886
|
+
"Evidence",
|
|
887
|
+
"Review by"
|
|
888
|
+
]) {
|
|
889
|
+
if (!text.includes(term)) {
|
|
890
|
+
fail(file, `operational memory template must mention "${term}"`);
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
|
|
816
895
|
function validateDurableRunStateProtocol() {
|
|
817
896
|
const file = path.join(ecosystemRoot, "protocols", "durable-run-state.md");
|
|
818
897
|
if (!fs.existsSync(file)) {
|
|
@@ -1561,6 +1640,8 @@ validateExecutionTraceTemplate();
|
|
|
1561
1640
|
validateDurableRunStateProtocol();
|
|
1562
1641
|
validateAgentObservabilityProtocol();
|
|
1563
1642
|
validateMcpConnectorPolicy();
|
|
1643
|
+
validateOperationalMemoryProtocol();
|
|
1644
|
+
validateOperationalMemoryTemplate();
|
|
1564
1645
|
validateComponentGovernanceProtocol();
|
|
1565
1646
|
validateEvaluationSuite();
|
|
1566
1647
|
validateReleaseVersioningGate();
|