Releases: mperkhou/career-agent-workbench
Release list
Career Agent Workbench v2.1.0
Career Agent Workbench 2.1.0 delivers documentation parity with a full-depth public-safe fictional resume, Master Resume Object, and job target, plus an evidence-backed record of the governed v1 → v2 → regular-manual → highlighted-manual workflow.
This release also fixes API-backed v2 JSON handling: the shared tolerant client boundary accepts bare, Markdown-fenced, and supported prose-wrapped JSON; syntactically malformed generated JSON retries within the existing retry_count + 1 budget; valid JSON with invalid patch schema, evidence, policy, or application semantics remains nonretryable. It also repairs immutable rendered-artifact export and current Codex CLI global option ordering.
Release readiness passed 1,247 synthetic tests, Ruff and public-tree safety, wheel/sdist build and scan, isolated wheel installation and CLI/resource smoke, real offline Chromium rendering, the disposable Flask browser workbench, injected MCP stdio, and both PR and post-merge main CI jobs. No credentials, private application state, raw model traffic, machine-specific paths, or generated private career artifacts are included.
Career Agent Workbench v2.0.0
Career Agent Workbench 2.0.0 replaces the reconstructed 1.1/1.2 Flask interface with the mature 31-route application from the archived LinkedIn Career MCP codebase. The archived inline HTML, CSS, JavaScript, routes, controls, editors, navigation, and progress presentation remain the behavioral and visual source of truth, while narrow public adapters preserve external-workspace configuration, canonical database state, packaging, PID-owned lifecycle, PII exclusion, and human-review boundaries. The superseded reconstructed frontend was removed after reference tracing proved it inactive.
Release readiness passed with 1,025 synthetic tests, Ruff and public-tree safety checks, wheel/sdist scan and isolated installation smoke, canonical MCP stdio, all four website lifecycle commands, six pixel-identical archived/public Chromium screens, and five representative workflows across ten fresh fictional clones with zero external browser requests.
No archived database, profile, output, dotenv, logs, downloads, generated artifacts, credentials, or private application state are included. Operational cutover and retirement of the archived fallback are intentionally deferred; the archive remains the operational fallback until separately approved.
Career Agent Workbench v1.1.0
Career Agent Workbench 1.1.0 restores the public/private operational foundation, tracker and lifecycle flows, ingestion and actions, and the modular JOD, resume, and cover-letter workbench. This release remains a public demonstration rather than the daily operational cutover. The approved v1.2.0 scope will restore the nine documented parity gaps covering tracker presentation and artifact-tab behavior, workflow composition/progress/sync, variant comparison, structured resume editing, rich cover-letter editing, and cover-letter pagination. The legacy application remains the operational fallback.
Career Agent Workbench 1.0.0
Career Agent Workbench 1.0.0
Career Agent Workbench 1.0.0 establishes a fresh public-safe Python application
for researching guest-accessible public job data and managing local,
human-governed career workflows. The release is intentionally single-user and
portfolio-scale: reusable code, packaged templates, fictional examples, and
synthetic tests belong in the application repository, while real profile and
application state remain private and operator-owned.
Major capabilities
- Strict provider-neutral public-job models, guest-only LinkedIn public search
and details, bounded generic parser support, matching policies, query
planning, and atomic tracker seeding. - Explicit SQLite application state for normalized and prompt-ready JOD text,
ARO and CLO mappings, rendered artifacts, ATS summaries, lifecycle fields,
and isolatedv1,v2, andmanualrésumé variants. - Caller-injected résumé initialization, packaged autoescaped HTML rendering,
structurally validated PDFs, deterministic ATS diagnostics, and optional
isolated offline browser rendering with a ReportLab fallback. - Evidence-grounded refinement, manual review, and highlighting with canonical
file digests, immediate current-file rechecks, workflow revisions,
conditional writes, and failure atomicity. - Renamed public CLI commands, eight bounded operational scripts, and Make
targets whose omitted state values resolve centrally instead of embedding
repository-relative private paths. - A small Flask tracker/action adapter that reuses the configured state and
allowlisted Make workflows, plus a FastMCP stdio server with three
workspace-independent public job tools and one lazy configured matching
tool.
Configuration and private workspace
Runtime configuration is resolved once from immutable settings and independently
optional workspace paths. Explicit CLI or Make values remain highest
precedence, followed by canonical and compatibility process values, dotenv
values, and conventional members beneath the workspace root. The normal local
.env needs only:
CAREER_AGENT_WORKBENCH_WORKSPACE=../career-agent-workbench-opsThe private workspace owns profile evidence, SQLite state, generated output,
temporary files, blacklist data, credentials, and optional model settings. The
public application neither commits nor discovers real workspace state by
default, and configuration errors do not expose values or paths.
Human-review and safety limits
Claims in job-specific résumé variants remain grounded in the configured master
résumé evidence. Variant lineage is preserved, explicit selections stay pinned,
and refinement/manual/highlighting writes recheck both evidence digests and the
workflow revision immediately before the conditional database update. Raw
model prompts and responses are not persisted.
LinkedIn access is guest-only and public: there is no authentication,
private-member access, application submission, or employer contact. Generic job
support does not fetch arbitrary URLs. Providers and optional model/process
boundaries can fail or rate-limit; failures remain bounded and content-hidden,
and human review is required before any external application action.
Fictional demo and public documentation
The tracked demo source uses Avery Demo, Nimbus Quay Example Labs, reserved
domains, and fixed synthetic dates. Its deterministic offline materializer
creates one tracker row, one automatically selected v1 ARO, one CLO, and
readable YAML, JSON, and HTML examples only beneath an explicit ignored
workspace.
The fresh public README documents the private-workspace architecture, current
CLI/Make/Flask/MCP surfaces, candid operating limits, and the governed workflow.
Two approved architecture SVGs are preserved byte-for-byte. Annotated PNGs use
fictional data and are labeled as synthetic documentation illustrations; the
JOD, résumé, variant, and cover-letter panels explain stored-object concepts
rather than claiming unimplemented public Flask pages.
The mature workflow visuals are preserved target/design references. The live
1.0.0 demo Flask surface is the smaller tracker/action adapter described in
the README, not the editors or compare/select routes shown in those references.
Validation and publication status
Synthetic tests cover configuration precedence, public parsing and provider
boundaries, matching, durable state, rendering, evidence-grounded workflows,
CLI/Make composition, Flask, MCP, the fictional demo, and release alignment.
Proportional public-safety checks inspect tracked and distribution candidates
without revealing matched content, and the minimal CI design keeps permissions
read-only.
Version 1.0.0 is released only after clean-history candidate, private-remote,
and signed-out public verification gates. Repository tags and GitHub Releases
are authoritative; this document does not claim a deployment or operational
cutover.