Skip to content

Epic: Foundation #74

Closed
12 of 12 issues completed
Closed

Description

@CompleteDotTech

Everything the recipes are built on: the Python package, decision backends, fixture format, evaluation helpers, notebook style, recipe template, and CI.

Issues

Order

Issues on the same line can be built in parallel.

  1. Foundation: project scaffolding and Python package skeleton #61 scaffolding
  2. Foundation: CI baseline for lint, tests, and the README catalog check #62 CI baseline, Foundation: decision backends with typed answers, replay, and scripted modes #63 backends, Foundation: evaluation toolkit #66 evaluation, Foundation: notebook style, plotting theme, and run-mode header #67 notebook style
  3. Foundation: opt-in live Jev backend and response recorder #64 live backend, Foundation: fixture specification and validator #65 fixtures, Foundation: simulation and state primitives #70 simulation, Foundation: repository hygiene for secrets, dependencies, and notebook outputs #71 hygiene
  4. Foundation: recipe template and scaffolder #68 recipe template
  5. Foundation: CI executes every notebook offline and validates fixtures #69 notebook CI (this unblocks the recipes), Foundation: reader documentation for getting started, offline and live modes, and the glossary #72 reader docs

Done when

Activity

  1. CompleteDotTech commented on Oct 7, 2026

    @CompleteDotTech
    ContributorAuthor

    Closure-audit addendum from the user execution prompt: account for the discovered foundation delivery tasks as well as the original twelve children. #87 catalog/recipe-scope coordination is delivered by PR88, merge2551da58960ac0e442f49538df7fec46bb67f9dd, issue CLOSED and all five exact-main checks SUCCESS. #90 handwritten README publication/evidence guidance is implemented in PR91, reviewed current head d95ccfa (Opus comment6027492091), all five checks SUCCESS, but NOT merged/closed yet; original supervisor owns its merge. Resolve it before or alongside reference recipe1 and reconcile it in this epic/roadmap audit. Do not treat green CI or an implementation branch as completed delivery.

  2. CompleteDotTech commented on Oct 7, 2026

    @CompleteDotTech
    ContributorAuthor

    Foundation completion audit addendum: refresh of all issue pages currently shows 75 open issues and all60 recipe issues still open. In addition to original61-72 and delivered catalog-policy87, retain discovered substantive issues90 (README accuracy, PR91) and95 (merge readiness, PR96) in the delivery checklist. Both remain OPEN.89 was closed as duplicate and is not a substitute for either. PR91 now has signed current-main integration37e24d9c0dcae779aaf9d246051353a7475e5a72, allfivechecksSUCCESS, fresh genuine Opus review running; priorheadapproval is void. PR96 remains in Sonnet remediation after genuine Opus CHANGES-NEEDED6028555386. Do not close74 or claim foundation complete until these criteria are delivered and independently reviewed as well as the original children. Original supervisor solemergeowner; no new controller.

  3. CompleteDotTech commented on Oct 7, 2026

    @CompleteDotTech
    ContributorAuthor

    Retrospective acceptance audit: #61, #62, #71 (post-merge; not a pre-merge review)

    This audit was done after the fact. It is not a merge approval, it does not replace the original reviews, and it makes no claim about future heads. No code was changed or pushed, and no issue was closed.

    Current proof, independently reproduced at a56af72

    Criterion Result
    #61 pip install -e ".[dev]" works in a clean venv on Linux and Windows Met. Fresh clones. Windows: py3.10.11 and py3.14.3. Linux: WSL Ubuntu 24.04, py3.10.20 and py3.14.4. ruff==0.16.10 resolved everywhere.
    #61 ruff check, ruff format --check and pytest pass Met. All checks passed; 29 files already formatted; 447 passed in all four environments.
    #61 no network call or key read at import Met. Runs had keys unset and network blocked: Linux with unshare -rn (no network), Windows with an audit-hook block. An extended probe imported every submodule and recorded no SDK import, no key/env read and no socket event.
    #61 dependency policy written down Met. docs/development.md matches pyproject.toml.
    #62 workflow runs and passes; stable job names; pins, contents: read, caching Met. All five checks are green on a56af72. The checkout and setup-python SHAs still match v7.0.1/v7.0.0, which are the current latest releases. persist-credentials: false is set.
    #62 stale README fails the catalog check Met. In a scratch clone, render_catalog.py --check exits 1 in three cases: a hand-edited generated region, a catalog title change, and an added recipes/<slug>/notebook.ipynb. It exits 0 once restored.
    #71 planted fake key in a notebook output fails Met. The key was generated at runtime and never printed. With a planted notebook staged as a tracked file, the CI command python tools/check_hygiene.py exits 1 and the output is masked. A 15-case must-fail corpus (keys, Windows/Linux/macOS/WSL paths, env dumps, malformed notebooks) fails on both OSes.
    #71 checks run in under a minute Met. 47 files: median 0.32 s on Windows, about 0.13 s on Linux; the CI job takes about 8 s.
    #71 Dependabot (pip and actions) and pre-commit Both are configured. The Dependabot runs on 7551212 succeeded, but no update PR has been opened yet. pre-commit does not fully mirror CI (defect 2).

    Defects (for the merge owner; not fixed here)

    1. tools/check_hygiene.py _PATH_PATTERNS (L188-200), and the docs' non-coverage list. Foundation: repository hygiene for secrets, dependencies, and notebook outputs #71 asks for "no absolute local paths, usernames". The scanner misses several of these in outputs: /tmp/pytest-of-<user>/…, /opt/conda/…, /private/var/folders/…, forward-slash drive paths such as D:/work/…, and bare usernames. None of these gaps is disclosed in the docs. Fix: add forward-slash drive and username-bearing temp-path rules, optionally a local current-user check, and document what remains.
    2. .pre-commit-config.yaml (L13-22). The ruff hooks use types_or: [python, pyi, jupyter], but CI's ruff format --check . (ruff 0.16.10) also formats Markdown code blocks. Repro: a Markdown-only change passes pre-commit ("no files to check") and fails Lint (ruff). Every recipe ships a README. Fix: include Markdown in the hook, or run the exact CI command.
    3. check_hygiene.py L311-313. Non-dict entries in cells are skipped silently, which contradicts the documented rule that anything unscannable is reported as a finding. Repro: a cell that is a bare string holding a bearer key exits 0.
    4. check_hygiene.py run() L441-443. A directory argument is skipped, yet the tool prints "Hygiene check passed: 1 file(s) scanned." with exit 0. Repro: a directory holding 15 must-fail notebooks. CI and pre-commit are unaffected because they pass files.

    Nonblocking suggestions

    • The import guard only covers modules that __init__ imports. By mutation, a key read added to style.py or evaluation.py passes test_import.py.
    • The category sort order is still untested; reversing it passes all 16 tests.
    • cancel-in-progress also applies on main (no cancellations observed so far).
    • The cache key is pyproject.toml only, and the runner image ubuntu-latest floats.
    • docs/development.md is not linked from README or CONTRIBUTING.
    • image/svg+xml text output is skipped. Secrets hidden in dict keys, in duplicate JSON keys, under any key named png, jpeg or pdf, or split across outputs are not caught. These are adversarial cases rather than accidental ones.
    • Branch protection and rulesets return HTTP 403 (plan limit), so required checks are enforced procedurally only.

    Gaps in the historical record (stated, not filled)

    Evidence logs are kept outside the tracked tree on the auditing machine.

  4. CompleteDotTech commented on Oct 7, 2026

    @CompleteDotTech
    ContributorAuthor

    Retrospective audit6028948068 is now complete, actualOpus5.5 session729a777e-38b4-4297-b3bc-ab5e20649273. Substantive defects are transferred to newfoundation97 (singleSonnet5.5 owner3a4ef5c4-56de-4afb-9c82-329965bd9cb9) covering auditedpath/usernamecoverage, realMarkdownprecommit/CI mismatch, malformednotebookcells silentlyskipped, and directory-argument falsepass. These scope defects remain mandatoryeven if narroweroriginalcheckboxes passed. Initialrepairdisjointfromactivefixture94, finalparityintegration/merge waits65scannercontract. No fabricatedpastOpusapproval; historical81/82/86 modelprovenance gaps remain disclosed.
    Foundationcompletion must include open90,95,97 as well asoriginalchildren.93/64 nowmerged5f75 withallfiveexactmainSUCCESS.91/96 areundernew signed5f75mainintegration, thenfreshOpusneeded; previousa56baseapprovals are notnewheadauthorization. Originalsupervisor solemergeowner. Retrospective447testfour-platform proof appliesimmutablea56 only, notfuturemain/releaseall60.

  5. CompleteDotTech commented on Oct 8, 2026

    @CompleteDotTech
    ContributorAuthor

    Verified live on the first recipe pull request after #108 merged: #123 (branch recipe/01-sentiment-classification, head e4749b0ece56dfbe2f2cc726048f16cdee0abcb7). Scope (recipe pull requests) dispatched on pull_request_target from main, landed on the PR head commit, and passed (run 37764311231 at open, 10:34Z), then re-ran on the description edit and passed again (run 37764605320, 10:36Z). git diff --raw -M origin/main...head lists eight added files under recipes/01-sentiment-classification/, all 100644. Closing; #118 remains for expressing a head-only required check in the readiness helper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: p0Blocks everything else; do firsttype: epicTracking issue that groups other issues

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions