• v0.5.3 c8648088cb

    coreci-bot released this 2026-09-22 23:47:42 +00:00 | 80 commits to main since this release

    Milestone v0.6 Phase 3 (REQ-6-003): EmbeddingProvider protocol (mock-first deterministic 256-dim SHA-256 feature-hash; OpenAI-compatible provider on the shared httpx pool with key redaction — probe-corrected: ollama-cloud exposes no /embeddings, so AI_EMBED_BASE_URL targets any OpenAI-compatible endpoint; G-11 boot-safe fallback to mock with a loud warning). SQLite-local vectors (struct-packed float32 BLOB, model+dim per row, lazy re-embed on provider change); pure-Python brute-force cosine (pilot scale ≤10⁴); hybrid search — facet hard-filters SQL-side before cosine ranking, no facets → pure semantic rank. GET /v1/marketplace/search: match_score + skill_breakdown computed at search time only (G-106); board search flow with ranked grid + % match badges; job-detail Whythismatched panel via single-use handoff. Suites: 627 backend (+61), web 51/51, typecheck green, ruff clean, export emits.

    Downloads
  • v0.5.2 5838bdeb51

    coreci-bot released this 2026-09-22 01:04:23 +00:00 | 81 commits to main since this release

    Milestone v0.6 Phase 2 (REQ-6-002): posting text → skills/seniority/category tags via the existing D-020 structured-completion pipeline (mock-first, cloud-free tests; skills bounded at 10 with schema enforcement + single bounded retry; extra=forbid keeps the untagged signal honest). Tag-on-ingest (honest failure: provider errors leave postings untagged with a warning, never a crashed ingest), PUT admin edit re-tags with overwrite semantics (old tags gone). Facets payload on the list API computed from published-only stored tags; the board sidebar skill options are now data-driven from real tags with honest counts. Suites: 566 backend (+19), web 39/39, CLI 61/61, typecheck green, ruff clean, export builds.

    Downloads
  • v0.5.1 0a091c2e50

    coreci-bot released this 2026-09-22 00:12:47 +00:00 | 82 commits to main since this release

    Milestone v0.6 Phase 1 (REQ-6-001): the 6th D-027 store family (six tables: posting, employer, embedding, application, employer_enrichment, learner_profile) on the shared SQLite DB; PostingSource adapter contract + seeded corpus (20 postings + 10 employers ported once from mock-data, matchScore dropped, seed enters published per G-102); /v1/marketplace/* public API (list with total_published, honest 404s); REAL apply route replacing the G-18 501 stub — D-043 gate composition preserved (G-5 allowlist → verified-18+ → rate caps), published-only, idempotent duplicates; founder/admin surface fail-closed behind AI_ADMIN_TOKEN (SecretStr, constant-time compare; unset = 403 + loud boot warning); marketplace web surfaces now read real data at runtime (board, job detail, employer profile client shells; G-101 placeholder-shell export + FastAPI catch-all serving — arbitrary runtime postings reachable, no E87). Suites: 547 backend (+59), web 38/38 (+16), CLI 61/61, typecheck green, ruff clean, export builds.

    Downloads
  • v0.5.0 baa9ef5d2d

    coreci-bot released this 2026-09-21 22:38:15 +00:00 | 84 commits to main since this release

    Milestone v0.6 (Marketplace Engine) phase 0: specification locked (D-047 — REQ-F-011..016 activated as REQ-6-001..006), 12 ambiguities clarified (A-401..A-412), research conclusions D-048..D-059 with probes (pypdf 6.19.0 verified; negative finding: ollama-cloud has no /embeddings), 46-task plan across 6 phases, adversarial grill GO-WITH-BINDINGS with G-101..G-110 applied (E87 static-export build break caught and fixed before execute), MVP/UX gate passed. No runtime changes — .ciagent/ specification artifacts only. All suites green: 488 backend, web 22/22, CLI 61/61, typecheck 8/8, ruff clean, export builds.

    Downloads
  • v0.4.7 192fa6a655

    coreci-bot released this 2026-09-21 21:01:07 +00:00 | 86 commits to main since this release

    Closes the four P1 flags recorded at the v0.5 final review for pre-public hardening:

    • WS ingest auth (grading DoS) — the ingest socket is a grading input, LAN-reachable in network mode, with self-asserted identity params: anyone could poison or flood a learner's trace. Now HMAC-token-gated: the sandbox manager mints a token into NC_INGEST_URL (bound to learner+task+sandbox), the WS endpoint verifies before accept. Untokened/bad/cross-identity dials close 1008 storing nothing. Per-boot random secret by default (AI_TELEMETRY_INGEST_SECRET to pin for multi-process).
    • Defense-id collision — dfn-{ms:x} collided on same-millisecond starts, permanently 500'ing the second start (insert-only PK). Now nonce+counter mint, unique regardless of clock granularity.
    • Browser-mode SR/TTS — the mode="browser" descriptor has advertised client-native SpeechRecognition + speechSynthesis since v0.5; the client never implemented it. Now it does: text answers via SR, examiner questions spoken via TTS; honest unsupported state; server/mock modes keep the MediaRecorder upload path.
    • Browser-voice coverage — 8 module pins (roundtrip, silent user, permission/unsupported maps, timeout, TTS absent/empty/cancel/resolve).

    Gates

    488 backend tests (+10); web 22/22 (+8); CLI 61/61; typecheck 8/8; ruff clean; static export builds.

    Assets: nextcraft-linux-x64 + .sha256 sidecar (G-104).

    Downloads
  • v0.4.6 75bde88e0d

    coreci-bot released this 2026-09-21 20:42:18 +00:00 | 89 commits to main since this release

    The public site (nextcraft.coreci.dev) served the API's JSON 404 at the domain root for three releases. Root cause (probe-verified on the host): the deployed uvicorn ran mount-less — the web export was never built on the host, dev -d auto-wiring silently skipped, and nothing detected it. HAProxy was never the problem.

    What's fixed (the class, not just the instance)

    • nextcraft deploy — the one-command deploy the installer hands off to: clone-or-update → pnpm install → ai-service venv → web export build → restart → verify. Idempotent: same command for first install and upgrades. Fails loudly if the site isn't served.
    • nextcraft deploy --service — also installs a systemd unit (generated with real paths, Restart=always, enabled) so the stack survives reboots and crashes. Deployed and proven live on the production host with this exact release.
    • Toolchain discovery — node/pnpm behind nvm, PNPM_HOME, or corepack are found, including split installs (pnpm in PNPM_HOME + node in nvm — the production host's exact layout). Non-interactive shells see nothing; deploy does.
    • Loud mount-less boot — the service WARNs at startup when AI_WEB_STATIC_DIR is unset.
    • nextcraft verify deploy checks — web-export presence + live mount probe: when :8420 is serving, GET / must return HTML, not the API's JSON 404.
    • Flag dispatch fix — subcommand flags (deploy --service, dev -d) reach their commands.

    First install

    curl -fsSL https://git.coreci.dev/coreci/nextcraft/raw/main/scripts/install.sh | sh
    nextcraft deploy --service
    

    Upgrades

    Same two commands. nextcraft deploy --service is the upgrade: it pulls the latest main (or --ref v0.4.6), rebuilds the export, restarts under systemd, and re-verifies.

    Gates

    478 backend tests (+1 loud-boot pin); CLI 61/61 (45→61); web 14/14; typecheck 8/8; ruff clean; static export builds; binary reports v0.4.6 (G-102).

    Deployed live: https://nextcraft.coreci.dev/ → 200 HTML landing page; /health → {"status":"ok"}; unknown paths → the site's HTML 404. Service active (enabled) — reboot-persistent.

    Assets: nextcraft-linux-x64 + .sha256 sidecar (G-104 ongoing binaries).

    Downloads
  • v0.4.5 62bff575af

    coreci-bot released this 2026-09-13 23:04:47 +00:00 | 95 commits to main since this release

    Milestone v0.5 — Real Server Voice, KYC/Identity, Sandbox Environments, Seq-Lease. The four seams D-016 deferred out of v0.4, complete. This patch IS the milestone release.

    P1 — Seq-Lease + Replay Margin (REQ-5-007) · v0.4.1

    The WS ingest acks the durable latest_seq after every append; the capture agent trims its spool to the ack. The replay margin collapses from "one line" to the unacked in-flight window — closing the gap the v0.3 P07 review documented. Explicit spool bound (4096 lines; overflow = honest gaps → ungradable, never silent truncation). Real-server mid-burst regression (uvicorn + killable proxy) passes repeatedly.

    P2 — Real Server Voice (REQ-5-001/002) · v0.4.2

    openai-audio VoiceProvider (STT multipart + TTS streaming) on the shared httpx pool — the CUT-1/G-7 seam, live. Defense routes: codec-param strip, ≤10MB guard before the provider call, format-aware media_type. Web: recorded-blob answers (chunk-buffered, 180s auto-stop), provider badge that cannot lie. Misconfigured provider falls back to mock loudly — the unattended boot never crashes.

    P3 — Identity + Age-Gating (REQ-5-003/004) · v0.4.3

    IdentityProvider protocol + deterministic mock + the 5th D-027 SQLite store. Derived age bands + document refs only — raw DOB never persists (caplog sentinel pinned). D-043 gate composition (allowlist → identity verdict → caps) on variant/sandbox/defense (16+) and one marketplace route (18+ verified, honest 501 stub). /enroll flow; G-10 403 discrimination in the client. Verifier-hardened: malformed-DOB 422s (was: 500 leaking the DOB into logs + a remotely-triggerable permanent learner lockout), fail-closed gate on non-canonical bands, band constraints on insert and transitions.

    P4 — Design/Sim Environments (REQ-5-005/006) · v0.4.4

    Environment kinds at the template/variant layer (build | design | simulation) with G-15 quote-free validated commands; the kind + the variant's real test_command ride the wire as required fields (Run/Test stop hardcoding pytest). Per-kind exact-token exec policy (sh -c passthrough blocked); in-ns harnesses use python3 (the PATH the namespace actually resolves); real-server design E2E proves variant → files → harness → policy 422 → contiguous telemetry.

    P5 — Final Review + Audit (this release)

    3 cross-phase P0s fixed: identity resubmit-after-terminal 500 (deterministic id collision), audio answers 500 on default deployments (→ honest 502), pre-v0.5 DB migration (idempotent column backfill). Audit: reconstruction clean, branch/tag/commit discipline clean, secrets scan clean.

    Numbers: 477 backend tests (+41 over v0.4.4's base 436), web 14/14, CLI 45/45, typecheck 8/8, ruff clean, static export builds. All 7 requirements complete.

    Deploy: re-run the install one-liner, pnpm install && NEXT_PUBLIC_AI_SERVICE_URL=self pnpm build && nextcraft dev -d — see deploy/README.md (incl. the in-place DB upgrade note).

    Downloads
  • v0.4.4 5c2829d9df

    coreci-bot released this 2026-09-13 21:49:58 +00:00 | 101 commits to main since this release

    Phase 4 of v0.5. The sandbox fabric gains environment kinds beyond the coding IDE (REQ-F-021's remainder) — one lifecycle, one telemetry path, typed starter contents + command policy.

    Registry (template layer, D-044): TaskTemplate.environment: build | design | simulation + per-kind harness commands, validated quote-free by a shlex-roundtrip at authoring time (G-15 — the TS client splits whitespace-only; no shlex in browsers). Two new templates: a conversational-flow design artifact (stack-designer-c001, flow.md + a structural validator harness) and a sensor-data simulation harness (stack-orchestration-c011, pipeline + metrics + reproducibility). The kind + the variant's real test_command ride the wire as REQUIRED fields (a-11) — closing v0.3's dead-field gap; Run/Test buttons stop hardcoding pytest. Manager/backend/workdir untouched except a 5-line task-id side-table.

    Exec policy (G-15): design/simulation sandboxes enforce EXACT argv[0]-token matching against a generic file/nav set ∪ the template's declared harness — sh -c passthrough disallowed (the digest-gaming vector), 422 names the allowed set; build kind keeps v0.3 semantics.

    Verifier-hardened: the declared harness commands run with python3 (in-namespace PATH resolves nothing else — the verifier's real-namespace probe caught what synthetic tests couldn't); the MH-4d real-server E2E proves the whole flow: design variant → starter files → in-ns harness exec → policy 422 → contiguous telemetry. Grading digest proven kind-agnostic (no environment field, asserted).

    474 backend tests (+11), web 14/14, CLI 45/45, typecheck 8/8, export builds, ruff clean.

    Downloads
  • v0.4.3 35c4c386b5

    coreci-bot released this 2026-09-13 20:42:44 +00:00 | 106 commits to main since this release

    Phase 3 of v0.5. Real identity verification behind a provider protocol + backend-enforced age gates (REQ-F-017, deferred since v0.3).

    Identity module: IdentityProvider protocol (submit/poll) + deterministic mock (approve-on-policy; under-16 rejected) + the 5th D-027 SQLite store — insert-only, minted-once ids, latest-per-learner with deterministic rowid tiebreak. PII-minimal by construction: derived age bands (16-17/18+) + opaque document refs; raw DOB never persists (pinned by a caplog+store sentinel test).

    Flow: /v1/identity/submit → status → verify with G-13 caps (one active pending per learner → 409; per-learner submit rate → 429). A-304 honesty: mock markers ride every verdict, record, and response — the enroll UI labels them too.

    Gates (D-043 composition): allowlist (403, G-5 first) → identity verdict (403 + actionable verify-CTA payload) → rate caps (429) — on variant generation, sandbox create, and defense start (school 16+); marketplace 18+ proven on one gated stub route (passes the gate then returns an honest 501 stub: true, never a fabricated "applied").

    Verifier-hardened (all fixed in-phase): malformed-DOB boundary validation (was: 500 leaking the raw DOB into logs + a remotely-triggerable permanent learner lockout); fail-closed gate (was: fail-open on non-canonical bands); band constraints on insert AND transitions; PII-scrubbed 422s; the web build surface renders the verify-CTA link on identity-gate 403s.

    Enrollment: new /enroll flow (submit → pending → verified, mock-labeled); G-10 client 403 discrimination (VerifyRequiredError vs NotAllowlistedError). Self-asserted learner_id remains the documented pilot-scale trust level; real auth sessions are post-v0.5.

    463 backend tests (+24), web 12/12, typecheck 8/8, export builds, ruff clean.

    Downloads
  • v0.4.2 64e4842976

    coreci-bot released this 2026-09-13 19:43:47 +00:00 | 110 commits to main since this release

    Phase 2 of v0.5. Voice defense gains the real server STT/TTS path (openai-audio) — the CUT-1/G-7 seam deferred since v0.3.

    Provider: OpenAIAudioProvider implements the D-030 protocol on the shared httpx pool — STT via multipart /audio/transcriptions (clean-extension files, response_format=json), TTS via streaming /audio/speech (raw byte chunks, 4096-char guard), descriptor mode="server". Endpoint-agnostic by config (AI_VOICE_BASE_URL + key, models/voice/format knobs). Byte-contract tests via MockTransport; key redaction on every exception path (pinned). The v0.4 factory rejection is inverted — the seam is live.

    Route fixes: codec params stripped from MediaRecorder uploads (audio/webm;codecs=opus → webm — real STT endpoints 400 otherwise); ≤10MB guard before the provider call (413 with an honest re-record prompt); TTS media_type from the format enum (mp3|wav|opus, boot-safe: a typo'd format falls back loudly, never crashes the unattended deploy — G-11).

    Web: the defense session posts the recorded blob (previously discarded) — chunks buffered until stop, 180s auto-stop with a visible timer, provider badge that always tells the truth (server/browser/mock). Verifier hardening: multipart Content-Type fix (every real upload was a 422) + chunk-truncation fix (answers died at ~1s).

    Configured mock/browser paths unchanged; tests never call the cloud. 439 backend tests (+18), web 9/9, CLI 45/45, export builds.

    Downloads