Skip to content

Releases: Zenetusken/consolidate-memory

v0.4.23

Choose a tag to compare

@Zenetusken Zenetusken released this 07 Sep 13:21
f5eb18d

Patch — the defrag detector flags flow, not stock (the footnote polish).

Two dream-session footnotes root-caused (docs/defrag-flow-and-emoji-index.spec.md
— advisor + adversarial review-to-zero, amend-1/2):

  • P1 — the defrag re-nag: defrag_candidates flagged every fact with a body

    2.5× the store median — a structural property of any roadmap, so a KEEP'd doc
    re-nagged every dream. The --justify-defrag watermark (defrag_justify in the
    state file, REFRESH semantics — never the demotion skip-if-present no-op, which
    would re-anchor the very re-nag) quiets a justified stem until it genuinely
    grows (+40 tokens AND +25%, malformed entries fail open); the Phase-0 report
    shows the watermark line independent of the candidate count; --force is the
    post-curation re-anchor repair. The justify collectors stop at an existing
    directory — the demotion sibling's trailing-project-dir swallow, same class.

  • P2 — the emoji flag names its beat: ⚠ emoji in beat(s): 3 (1-based, the
    archive's Passage numbering).
  • P3 — the debrief discipline: claims about the rendered archive are verified
    against the rendered file (the log line is attempt-scoped).

Smoke 1762/0 (+13 pins — 8 discriminating vs the merge-base, 5 semantic regression guards), mypy clean, sim, manifests, browser 1108.

v0.4.22

Choose a tag to compare

@Zenetusken Zenetusken released this 07 Sep 01:28
e10b85b

Patch — the unverifiable tally names its claims (the alert-carrier defect).

The dream's dashboard rendered ⚠ 1 unverifiable with no surface naming the claim
(docs/unverifiable-carrier.spec.md — advisor + review-to-zero, amend-1/2): the
verification tally was a count with no named carrier in the contract. Four layers:

  • The SKILL mandate (bidirectional): every claim judged unverifiable is
    tallied AND gets one entries[] row (skipped when dropped, reconciled when
    kept with approval) whose name names the claim and whose reason begins the
    canonical unverifiable: token (the extractor-skip: precedent).
  • The validator binding: validate_cycle_record warns when the tally and the
    marked rows disagree in either direction — a count with no/unequal rows, or
    marked rows without a tally — container/scalar-guarded under the never-raises
    contract (junk shapes skip the check).
  • Both dashboards name the claims at the ⚠: the ASCII VERIFIED line and the
    HTML assess/KPI surfaces join the marked rows' names after the count
    (cap-with-counter); the legacy bare-count fallback stays byte-identical, and the
    KPI sub-label escapes each joined name.
  • The browser fixture's skipped row gains the token — the validate-assert
    over all 8 history cycles stays green, and the row doubles as the name-pin
    vehicle for both renderers.

Smoke 1749/0 (+9 pins), mypy clean, sim, manifests, browser 1108.

v0.4.21

Choose a tag to compare

@Zenetusken Zenetusken released this 06 Sep 21:25
ff445c8

Patch — the defect sweep (six measured defects from the dream session, root-caused and pinned).

  • D1 — the marker could be stamped with a literal placeholder and silently ignored.
    Two dreams ran --stamp-marker HEAD with the literal arg; the stamp wrote the string
    "HEAD" verbatim (no validation), and the next read's _valid_sha guard silently
    cleared it → the first-consolidation fallback mis-scoped the whole pass. The stamp
    now RESOLVES its argument (rev-parse --verify <arg>^{commit} — bare rev-parse
    echoes any 40-hex without an object-DB lookup, the dead-SHA door), stamps the honest
    commit: "" + timestamp on a no-git/unborn-HEAD store (a refusal would exit-5 every
    no-git dream — the persist gate is timestamp-only), and REFUSES only unresolvable
    args in commit-ful repos (the state file stays byte-identical). The read now WARNS
    when it silently clears a non-empty invalid commit.
  • D2 — the demotion verdict could contradict the scripted block. The validator now
    flags a verdict whose probative-count phrase contradicts windows_observed, and the
    SKILL binds the verdict's numbers to the block's own fields.
  • D3 — the SKILL command template glued an argument into the quoted script path
    (copying it verbatim failed). Fixed + a smoke pin that no command line glues an arg
    inside the quotes.
  • D5 — the distill scan's counts lived only in capped list lengths. The scanned
    block now carries the TRUE filtered pre-cap n_recurring/n_chains; the injection
    and the report's scale line use them (the capped lengths stay the output cap), the
    validator's "impossible count" backstop is dropped (the count is script-truth), and
    the SKILL names the exact fields to read — the class where the record's numbers and
    the model's verdict contradicted each other is closed.
  • D6 — the suite's exact-count pin. An orphaned section (the double print/exit
    class) can never print green again: the final count is pinned exactly.

D4 (beat reuse) is a documented authorship ceiling, no code. Design-of-record:
docs/defect-sweep-v0421.spec.md (advisor + review-to-zero, amend-1/2/3 — the final
sweep's R1–R5 closed: the doc-wide quote-close pin, the mandate-format verdict
digits, the reconcile_marker gate, the resolution cwd + 40-hex belt, the dual-count
over-cap fixture). Backward-compatible → patch. Suite 1739 · browser 1105 ·
sim / manifests / mypy green.

v0.4.20

Choose a tag to compare

@Zenetusken Zenetusken released this 06 Sep 19:52
63c8d11

Patch — the network capture teeth (the skipped fleet capture is no longer silent).

The first dream judged by the v0.4.19 gates exposed the capture-side gap: Phase-5
step 4's --tokens --fleet capture never ran in the pass, the record persisted
with no network block, and the archive stacked "No project nodes captured for
this view" on "Network details were not captured for this dream" — absence read
as fleet disconnection, with no teeth anywhere.

  • NET — the persist-side advisory. A dream-bearing record whose network
    block has no nodes list (absent OR present-without-nodes — the ONE predicate
    the panel, the beta oracle, and the archive's note ladder share: the producer
    always emits nodes) gets a loud NETWORK CAPTURE MISSING panel at the terminal
    --persist — advisory only, no exit change (the capture is an enrichment of a
    completed dream; the exit key stays frozen). Suppressed on a maintenance/
    bootstrap pivot (its scope excludes the capture by design) with the
    string-coercion discipline, and on the dreamless legacy carve-out.
  • The network_capture beta-oracle family — the fourth member of the
    skipped-by-scope set (_maintenance_pivoted), on the _latest_capture_check
    scaffold (min_version 0.4.13, the --fleet mandate floor); the WARN's actual
    string branches (era caveat tail for an absent block, a corruption tail for a
    present nodes-less one). The frozen A1 fixture pin re-baselined to 2 named
    expected WARNs.
  • Archive readability — on an absent block the network panel collapses to the
    not-captured note alone (map, controls, legend, and detail all hide); a
    present-but-empty capture keeps the chrome with the honest empty-fleet text.
    Absence ≠ emptiness, and each renders alone.

Design-of-record: docs/network-capture-teeth.spec.md (advisor + review-to-zero,
amend-1/2). Backward-compatible → patch. Suite 1729 · browser 1105 · sim /
manifests / mypy green · beta gate 0 FAIL (2 by-design advisories).

v0.4.19

Choose a tag to compare

@Zenetusken Zenetusken released this 06 Sep 17:20
b5da972

Patch — the narration teeth (conversation-truth verification at the terminal --persist).

The v0.4.1 persist gates are record-side: they read what the record says about
itself. A post-dream audit measured the class they cannot see — the dream block
filled at record-fill instead of narrated in the session, and Phase 2's extractor
never run with no skip note. dream_procedure.py adds the ground truth the terminal
render can actually read: the dream's own session transcript.

  • NAR — narration verification. The dream.sleep stanza + the six dream.beats
    entries must each appear verbatim-normalized in an ASSISTANT TEXT BLOCK of the
    transcript window (anchored on the record's Phase-0-seeded
    marker.before_timestamp — never the persist-time state file). The match domain
    is text blocks only — never tool inputs or their echoed results (the record-fill
    Write/Edit carries the whole dream block), never thinking blocks. Gaps → a loud
    CONVERSATION-TRUTH GAPS panel naming each missing text + its first ~15 words,
    narration.verdict: "failed" on the log line, exit 4. A gap re-reads the
    window once (~500 ms) before firing — the flush-race guard.
  • EXT — extractor accountability. The window must contain an executed
    extract_signals.py in the Phase-2 form (--json or the human table; --recalls
    does not count — the match is anchored on execution, so grep/sed targets, $(…)
    substitutions, and prose mentions never count) or an entries[] reason beginning
    with the canonical extractor-skip: marker + a why (the SKILL now defines that
    fixed token). Neither → exit 3.
  • The honest degrade. A missing/unreadable transcript (zero kept window lines)
    degrades both arms loudly — the CONVERSATION-TRUTH UNVERIFIABLE panel,
    narration.verdict: "degraded", no exit change — never a hard block. Every judged
    persist writes the additive narration block pre-append (verified | degraded |
    failed; absence on a log line = pre-feature), riding the full schema lockstep.
    Legacy/dreamless records stay outside both arms.
  • The beta oracle gains the narration_capture family: the latest-record block
    check on the _latest_capture_check scaffold plus hermetic detector self-test legs
    (a fabricated-beat pair must FAIL the detector; the skip-note must pass).

Known ceilings documented in harness-map.md: the check verifies presence of
narration text and calls — conversation-truth, not performed-truth — and exact
containment assumes verbatim mirroring (a rewording model false-fires cheaply;
narrate + re-render in the same window). Design-of-record:
docs/dream-narration-teeth.spec.md.

Backward-compatible → patch. Suite 1712 · browser 1101 · sim / concurrency /
manifests / mypy green.

v0.4.18

Choose a tag to compare

@Zenetusken Zenetusken released this 06 Sep 02:38
d284c9f

Patch — the Nocturne QA rework + the v0.4.17 audit residuals.

The Nocturne archive polish: the report sections' narration reworked — the
countLabel singular/plural helper (a one-window dormant pass reads "1 window",
never "1 windows"), the honest "not captured" language replacing the fabricated
dormant fallbacks (the SKILL's verdict contract is the single source), the
captured-evidence note chain for every record class (older snapshot / not captured
/ partial — keyed on real truncation signals, never absent keys), the diff-modal's
capturedDiff() migration, and the browser suite grown 320 → 1101 checks (the
narration-order pin, the hostile-string round-trips, the sparse-workflow fixture,
the header-geometry golden pins).

The v0.4.17 shipped-state audit residuals (two audit passes + the per-PR
review): the spec's drifted line citations refreshed, the preflight STATUS date
swept, the codeql.yml comment corrected to the live config, the roadmap's
formatting blemish fixed, and the doc counts swept to the tree truth.

Backward-compatible → patch. Suite 1688 · browser 1101 · sim / concurrency /
manifests / mypy green.

v0.4.17

Choose a tag to compare

@Zenetusken Zenetusken released this 05 Sep 19:30
78a8df2

Patch — the captured-network truth layer + the v0.4.16 audit residuals.

Network identity / fact-holdings incidence: the fleet feed now captures physical
holder identities — NetworkNode.display_name, FactHolding, and NetworkCapture
(emitted/held counts, unresolved identities, read-failures, conservatively measured
per-capture caps) — so the HTML network view reconstructs who actually holds each
shared fact, with the captured-evidence inspector, the explicit absence contract, and
legacy records rendering through an honest "not captured" note. The template's JS is
split into bundled modules (dashboard.network.js / dashboard.sections.js, inlined
at render with a case-insensitive </script-seam guard and exactly-once markers — the
single offline artifact is retained); render_html degrades gracefully when a bundle
is missing. New standalone suite tests/network_identity.py + 320 browser checks +
the header-geometry golden fixture.

The v0.4.16 shipped-state audit residuals (two audit passes + the per-PR review):
the mode-gate keys on the read-only flags alone (--triage --json no longer mints the
native plane); the no-sqlite3 beacon-silence pin and the non-list-fails absence pin
landed; the spec gained amend-4; AGENTS.md's plugin-table row and assertion count
swept; the capture chips use the numeric fallback for partial records; the incidence
byte-cap conservatism documented.

Backward-compatible → patch. Suite 1689 assertions · browser 320 · sim /
concurrency / manifests / mypy green.

v0.4.16

Choose a tag to compare

@Zenetusken Zenetusken released this 05 Sep 15:18
ddf93b9

Patch — the environment pre-flight. A new preflight.py answers the deployment
questions deterministically: 14 checks — Python 3.8+, POSIX/fcntl (win32/cygwin fail
closed per ADR 016), the sqlite3 stdlib module, the SQLite ≥ 3.24 UPSERT floor, a
real-schema + flock round-trip inside the plugin-data dir, plugin self-integrity, the
native memory dir (skipped when auto-memory is disabled — native Auto-Memory is NOT a
prerequisite), git presence/repo/shallow (warn-only degradations per the shipped
policy), python3 on PATH, TMPDIR writability with a free-space floor, transcript
inventory, and a synthetic store-resolution check for the brokenest environment. Exit
0 = clean, 2 = any FAIL; --json emits the envelope.

  • Surfaces: cm doctor embeds the PRE-FLIGHT table (+ rc 2 on FAIL); a resolution
    failure (EACCES config root, or a no-sqlite3 interpreter) now yields a verdict
    instead of a traceback. The SessionStart beacon prints ONE line when a fresh FAIL
    verdict is cached (warns/pass/stale → silent; never quieted by snooze;
    disabled-auto-memory stays silent). Phase 0 seeds the record's preflight block
    (record-producing modes only — read-only modes stay write-free) and renders a red
    line when fails were recorded.
  • Honest boundary: a no-sqlite3 environment is itself a resolution failure — it
    reaches the sentinel verdict via doctor/Phase 0, but the beacon cannot cover it (no
    resolved ctx → no cache); stated, not solved.
  • The gated arc: spec (docs/env-preflight.spec.md) → advisor (11 findings) →
    adversarial review-to-zero (11 findings, incl. the F1 reachability contradiction
    re-folded to the one-writer routing) → implementation → per-PR review (8 findings) —
    every finding fixed + pinned (the suite grew 1620 → 1660 assertions, incl. the
    PYTHONPATH-shim sabotage runs and the cache-reachability proofs).

Backward-compatible → patch (additive script + additive record/state/dict keys; legacy
records render).

v0.4.15

Choose a tag to compare

@Zenetusken Zenetusken released this 05 Sep 13:07
21a676e

Patch — the version-sweep hotfix. The 0.4.14 Nocturne release updated plugin.json, the CHANGELOG, and AGENTS.md's CI paragraph, but left several current-version statements behind. This release completes the sweep to the shipping version: the CLAUDE.md banner, AGENTS.md's "verified against the live tree" line, the SKILL.md banner, harness-map's lead line, the README's current-release blurb, and the 1.0-preflight STATUS line.

Doc-only. No cycle-record schema, store policy, canonical writer, command, or hook contract changes. Backward-compatible → patch.

v0.4.14

Choose a tag to compare

@Zenetusken Zenetusken released this 05 Sep 05:29
27ac973

Patch — Nocturne, a memory observatory. The HTML summary now leads with the
project's context outlook, evidence, and shared-memory network on a midnight-blue
canvas. The theme control also offers Original, preserving the previous dark
espresso palette, plus Light and System modes. Preferences persist locally; print
stays legible and reduced-motion settings are respected.

  • A network you can read: domain lanes show trust boundaries, selected group
    routes show permission, and shared-fact edges show captured holdings. Project
    inspection and complete captured-data tables preserve details beyond the bounded
    16-node diagram. Missing measurements are explicit, and legacy records still render.
  • Evidence stays accessible: all existing observation panes remain, with a full
    embedded-record inspector. Workflow lists reset between cycles, partial records
    retain recorded problems, mobile archives retain every column, and diff dialogs
    support keyboard focus and return.
  • A clearer entry point: the README explains practical value before mechanics;
    a complete multi-domain network guide covers enrollment, group grants, sharing,
    inspection, revocation, and migration. Synthetic HTML, screenshots, and SVGs make
    the design reviewable without exposing personal memory.
  • Browser regression coverage: Chromium exercises themes, data completeness,
    archive navigation, sparse and legacy records, network bounds, accessibility,
    and narrow screens in a separate development-only CI job. The runtime and core
    test matrix remain Python stdlib-only.

No cycle-record schema, store policy, canonical writer, or command contract changes.
Backward-compatible → patch.