Skip to content

v0.7.0 — Safe personalization scaffold

Choose a tag to compare

@EfeAydinalp EfeAydinalp released this 05 Jul 21:30
· 56 commits to master since this release
a1f6a61

vibe-council v0.7.0 — Safe personalization / project-profile scaffold

Ready for the v0.7.0 tag — not yet tagged. The version bump (backend/__init__.py,
pyproject.toml, uv.lock) and the dated CHANGELOG.md section are done
(chore: prepare v0.7.0 release); the repo now reports 0.7.0. The git tag and the GitHub
Release are still a separate, manual step
— see §"Final release checklist" below and
docs/release-checklist.md.

The safe personalization / project-profile release. On top of the v0.6.x cross-project onboarding
arc, this bundles the v0.7 A–D personalization slice: a council-in-the-loop planning brief, a
public-safe project profile/preferences scaffold, and advisory pointers to that scaffold from
vibe project doctor, vibe context export, and vibe guide. Everything here is advisory,
read-only, and local
, and tighten-only: personalization can never loosen a security/safety/
no-stage/trust rule. No model/provider/network call, no Workbench trust-boundary change, no
/council command (vibe is the real CLI), no new dependency. Based on and crediting
karpathy/llm-council.

No commercial-clearance claim. License/provenance remains an unresolved "Question 0"
commercial gate; no LICENSE is added.

What this release adds

v0.7 personalization / project-profile planning brief

  • docs/fable/v0.7-personalization-and-project-profile-plan.md
    — the council-in-the-loop source brief for the phase: purpose, non-goals, the Markdown-first
    memory model, the tighten-only principle (personalization may tighten but never loosen a
    guardrail), the layered data model, the council-in-the-loop production workflow, an A–E PR breakdown,
    open questions, and a copy-paste future-Fable architecture prompt.
  • A balanced council review was performed on the brief; its highest-value, in-scope refinements
    were folded in (profile-never-sent-to-model, a concrete "tighten-only" definition, schema-stability
    and public-safe open questions). The brief explicitly rules out a vector DB / database / hosted
    stack
    for v0.7.

Project profile/preferences scaffold (PR A)

  • Public-safe, committed, Markdown vault files under docs/context/project/:
    PROFILE.md (project identity/shape, local-first stance,
    release state), PREFERENCES.md (review-preset policy,
    Fable-usage policy, implementation style, no-stage policy, tighten-only principle), and
    AGENT-ROLES.md (per-agent role expectations, the
    MODEL: OPUS/SONNET CODE / MODEL: FABLE CODE header convention, the council-in-the-loop workflow).
  • Each file carries a safe-to-commit boundary, a never-store list, and the tighten-only
    principle. Root AGENTS.md is deliberately not used as the canonical preference source (the
    balanced review flagged a write-target/read-source corruption risk); role preferences live in the
    vault AGENT-ROLES.md. Public-safe committed files only — no secrets, raw outputs, runtime
    payloads, or private data.

Project doctor awareness (PR B)

  • vibe project doctor gains an advisory "Personalization scaffold" section for
    PROFILE.md / PREFERENCES.md / AGENT-ROLES.md: present → [ok ], missing → [warn] with a
    next step (never a doctor failure). Root AGENTS.md is not required; if present, an advisory
    [warn] points to the vault convention. Dangerous staged files still fail as before, and
    READY/NOT-READY still depends solely on the required vault/core docs + the dangerous-staged check.
    Still read-only: writes no files, creates no .council/, makes no model/provider/network call.

Context-export profile pointers (PR C)

  • vibe context export --for {claude|codex|fable} [--role <role>] gains a "Project profile &
    preferences" section with pointers to the three scaffold files — pointers only, no full
    scaffold dump
    . It notes tighten-only, that root AGENTS.md is not the canonical preference source,
    and recommends vibe project doctor. The export never reads .council/profile.*, inlines no
    distinctive file content, degrades gracefully if the scaffold is absent, stays deterministic (no
    timestamp), and remains read-only (stdout by default; --output FILE still never overwrites).

Guide profile pointers (PR D)

  • vibe guide {claude|codex|fable} [--role <role>] [--write [FILE]] output now carries the same
    "Project profile & preferences" pointer section in base, role, and --write guides. It is
    static/deterministic — it parses/applies no preferences and reads no local/private
    profile — and the existing --write append + marker-skip behavior is unchanged (no duplication on
    re-run).

Safety posture — advisory, tighten-only, unchanged trust boundary

  • Personalization is advisory and tighten-only — a project preference may make a rule stricter
    but can never loosen a security / safety / no-stage / trust rule. Preferences are advice to
    read, not commands to execute; the deterministic trust boundary ignores them entirely.
  • No model / provider / API / network call from any of the new/changed commands.
  • No Workbench trust-boundary change — approval stays separate from execution, the deterministic
    trust boundary remains authoritative, the auditor stays advisory, and there is no auto-execution.
    The Workbench / importer / panel / executor are untouched.
  • /council is not a real command — it stays a documented future host-command idea; vibe
    remains the real CLI.
  • No dependency changes (the only uv.lock change is the vibe-council self-version line);
    redaction lint remains 0 critical; context check and MCP health remain 21/21.

Explicit non-goals (deferred, not started in this release)

No vector DB · no PostgreSQL / Redis / Docker / Next.js / LangGraph adoption · no hosted / SaaS · no
cloud sync · no secret storage · no local .council/profile.* implementation yet · no preference
parser / application engine yet
· no redaction rule implementation yet · no root AGENTS.md
preference source · no project init / interactive launcher / vibe council start. The v0.7 surface is
a set of advisory pointers + a documented scaffold, not a personalization runtime.

Release checklist (must be clean before tagging)

  • uv run python -m unittest discover -s tests -t . is green (784 tests).
  • uv run python -m backend.cli --version prints vibe-council 0.7.0.
  • vibe lint --redaction reports 0 critical findings.
  • vibe decisions lint passes.
  • vibe project doctor reports READY.
  • vibe context check scores 21/21.
  • vibe mcp inspect --context --health scores 21/21.
  • uv sync produces no uv.lock diff beyond the intentional self-version sync in this PR.
  • No .council/ artifact (including .council/runtime/payloads/ and .council/profile.*)
    staged/committed; no root AGENTS.md; no private/local plan file staged.

Final release checklist (manual steps, after this PR merges)

These are not automated by this PR — a maintainer performs them once the checklist above is clean
on master:

  • Merge this PR (chore: prepare v0.7.0 release) into master.
  • On the merged master, re-confirm: tests green, vibe --version reports vibe-council 0.7.0,
    redaction lint 0 critical, decisions lint passes, vibe project doctor READY, context check
    21/21, MCP health 21/21, and uv sync shows no drift.
  • Verify git status --short and the merged diff carry no private/local artifacts
    (.council/, .council/profile.*, the two untracked private plan files, .env/.venv//data/,
    secrets, generated packs/exports, root AGENTS.md).
  • Create an annotated git tag: git tag -a v0.7.0 -m "vibe-council v0.7.0" on the merge
    commit, then git push origin v0.7.0.
  • Create the GitHub Release for v0.7.0 manually, using this document
    (docs/releases/v0.7.0.md) as the release-notes body.

Known limitations

  • Personalization is advisory/documentationvibe project doctor / context export / guide
    only point to the scaffold; nothing reads, parses, or enforces the profile/preferences yet.
  • The scaffold is curated, committed Markdown — not a database, not an Obsidian dependency, and
    there is no local .council/profile.* store yet.
  • Intentionally local-only — the Workbench binds 127.0.0.1; agent intake is file/CLI only.
  • No hosted/team/mobile/voice yet — deferred to later phases.

Next after v0.7.0

Cut the v0.7.0 tag/GitHub Release, then scope the next slice per
docs/fable/v0.7-personalization-and-project-profile-plan.md
and docs/fable/04-roadmap.md: remaining personalization work (e.g. a local
.council/profile.* store and a preference reader/applier — all still tighten-only), with
mobile/LAN/voice (v0.8) and hosted/team (v0.9+) deferred behind the local core.