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 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.1
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.1 adds the official adoption guide for using Sagaz in another project after installation. It documents the first-use flow, team operating model, invocation prompts, Windows/macOS notes, permission expectations, and evidence artifacts.
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: clearer first real step after installing Sagaz.
20
- - Existing users: can sync the installed skill and follow the adoption guide from a fresh Codex Desktop thread.
21
- - Teams: get a practical onboarding path before applying Sagaz to production work.
22
- - Maintainers: package validation now tracks the adoption guide in the ecosystem manifest.
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
- - Added `ai-orchestration-ecosystem/ADOPTION.md`.
27
- - Linked the adoption guide from the root README, ecosystem README, and ecosystem INDEX.
28
- - Registered the adoption guide in `manifest.json`.
29
- - Updated package verification so the docs group validates the new guide.
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
- After `0.3.0`, Sagaz had strong governance but needed a direct bridge between installation and first use in a real project. This patch gives teams a safe starting prompt, explains what Sagaz should inspect first, and reinforces permission gates before risky actions.
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.1 sync
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: adoption guide linked from README, INDEX, and manifest.
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
- # Protocol: Memory
1
+ # Protocol: Operational Memory
2
2
 
3
3
  ## Objective
4
4
 
5
- Define how Sagaz should handle Memory while keeping the process clear, low-token, safe, and verifiable.
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
- - Start from the user goal and current project state.
10
- - Load only relevant context.
11
- - Separate facts, assumptions, inferences, risks, and decisions.
12
- - Ask permission before meaningful state changes.
13
- - Record evidence and residual risk.
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
- ## Standard Recommendation Format
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
- Recommendation:
19
- Why now:
20
- What changes:
21
- Benefit:
66
+ Memory update proposed:
67
+ Scope:
68
+ Preference:
69
+ Source:
70
+ Why it helps:
22
71
  Risk:
23
- Permission required:
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 primary flow fails.
28
- - A relevant build, check, or test fails without explanation.
29
- - Secrets or sensitive data would be exposed.
30
- - A high risk is not accepted by the user.
31
- - Verification evidence is missing for the risk level.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sagaz-ai",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Sagaz AI orchestration ecosystem installer for Codex Desktop.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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();