@smartmemory/compose 0.1.40-beta → 0.1.42-beta

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.
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "stakes": {
31
31
  "enum": ["cheap", "default", "paranoid"],
32
- "description": "Depth class set by caller. cheap (T1 only), default (T1+T2). paranoid (T1+T2, then a T3 adversary over every interpretive 'met'). STRAT-JUDGE-T3-READJAIL: the paranoid T3 is now a true cross-model jailed Codex adversary (macOS sandbox-exec read-jail confining reads to the staged turn tree) when available, else an honest probe-time degrade to the v1 in-process Claude cold-read. Per-predicate provenance is in predicates[].t3."
32
+ "description": "Depth class set by caller. cheap (T1 only), default (T1+T2). paranoid (T1+T2, then a T3 adversary over every interpretive 'met'). STRAT-JUDGE-T3-READJAIL[-CODEXNEST]: the paranoid T3 is a true cross-model jailed Codex adversary (container namespace read-jail — Docker driver; sandbox-exec retained as inert substrate — confining reads to the staged turn tree) when available, else an honest probe-time degrade to the in-process Claude cold-read. Per-predicate provenance is in predicates[].t3."
33
33
  },
34
34
  "predicates": {
35
35
  "type": "array",
@@ -105,7 +105,7 @@
105
105
  "properties": {
106
106
  "mode": {
107
107
  "enum": ["codex_jailed", "codex_jailed_error", "claude_cold_fallback"],
108
- "description": "codex_jailed: true cross-model Codex adversary, OS read-jailed (macOS sandbox-exec) to the staged turn tree. claude_cold_fallback: probe-time degrade to in-process Claude cold-read (no OS jail; reasoning-isolation+ordering only). codex_jailed_error: jailed adversary failed post-launch — predicate resolved ambiguous, error surfaced, NEVER silently relabeled fallback."
108
+ "description": "codex_jailed: true cross-model Codex adversary, read-jailed to the staged turn tree by a non-nesting container namespace (Docker driver). claude_cold_fallback: probe-time degrade to in-process Claude cold-read (no OS jail; reasoning-isolation+ordering only). codex_jailed_error: jailed adversary failed post-launch — predicate resolved ambiguous, error surfaced, NEVER silently relabeled fallback."
109
109
  },
110
110
  "guarantee": {
111
111
  "type": ["string", "null"],
@@ -103,7 +103,16 @@ export function generateRoadmapFromBase(baseText, features, opts = {}) {
103
103
  // Build merged phase order: source order first (preserves curated sequencing
104
104
  // for empty/legacy phases that have no feature.json), then any feature.json
105
105
  // phases not yet in source (truly new phases) sorted by feature position.
106
- const orderedPhaseIds = [...sourcePhaseOrder];
106
+ //
107
+ // Dedupe by phase identity (first occurrence wins). A phaseId is a section
108
+ // identity; the same `## ` heading appearing twice in source is the
109
+ // duplicate-section bug, not two distinct phases. Without this dedupe the
110
+ // emit loop below pushes an anon-phase block once per occurrence, so regen
111
+ // is a fixed point on duplicates (2x stays 2x forever) rather than a
112
+ // converger — a duplicate introduced once becomes permanent and survives
113
+ // hand-collapse on the next regen. Deduping makes regen self-healing:
114
+ // 4x/2x/1x source all converge to 1x output.
115
+ const orderedPhaseIds = [...new Set(sourcePhaseOrder)];
107
116
  const seenInSource = new Set(sourcePhaseOrder);
108
117
  const newPhases = [...phases.keys()].filter(p => !seenInSource.has(p));
109
118
  newPhases.sort((a, b) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartmemory/compose",
3
- "version": "0.1.40-beta",
3
+ "version": "0.1.42-beta",
4
4
  "description": "Structured AI dev pipeline — goal-to-product orchestration with gates, iteration loops, and feature lifecycle management.",
5
5
  "author": "SmartMemory",
6
6
  "license": "MIT",