Making Of¶
A living journal of how this repo's place in the house AI stack came to be.
Odysseus itself has its own long history (see git log, CONTRIBUTING.md,
ROADMAP.md) - this journal only covers the house-pipeline integration work,
starting with this audit.
Chapter 1 - House pipeline re-audit (2026-07-08)¶
Odysseus was already a mature, actively developed, security-conscious
open-source project (public repo, dev/main branch split, its own
SECURITY.md, THREAT_MODEL.md, docs/security-ci.md, and eight GitHub
Actions workflows covering syntax, secret scanning via gitleaks, workflow
security via actionlint+zizmor, container scanning via hadolint+Trivy, and
dependency review) before this audit touched it. This was not a build-from-
scratch pass - it was a gap-fix audit against the house tool-pipeline's
standard checklist.
What the audit found and did:
- Secret pre-scan (24 flagged hits). Ran the house pipeline's hard-gate
regex (
council_...|Bearer ...|AKIA...|sk-...|gh[pousr]_...|xox...|BEGIN PRIVATE KEY) - zero matches. A broader heuristic scan (anykey/secret/password/token = "literal"assignment) surfaced ~40 matches, all insidetests/as short, clearly-fake fixture values ("sk-secret","fake-key","old-password", one deliberately-named"GREPSECRET_TOKEN_ZZZ"canary) used to exercise auth/owner-scope/masking logic, or insidesrc/integrations.pyas the variable nameapi_key/dict key, never a literal secret value..env(present on disk, gitignored, not tracked by git) contains only local Ollama host/port config, no credentials. No real secret was found. Full classification table is in the audit report. - Codex security review. Run via
codex execagainst the repo root, focused additionally onsrc/integrations.pyand the test fixture shapes. See the audit report for the verdict. - Docs-set gap-fill. Added the house pipeline's required doc set that
didn't already exist under different names: root
TESTING.md(pointing at the existing, more detailedtests/README.mdandtests/TESTING_STANDARD.md),docs/technical/ARCHITECTURE.md(component + sequence Mermaid diagrams),docs/plain/README.md, this file, anddocs/BOARD.md. ExistingSECURITY.md/THREAT_MODEL.md/docs/security-ci.mdwere left as the canonical security docs rather than duplicated. - Test state. Installed
requirements.txtfresh and ranpytest -q --cov=. --cov-report=term-missing --cov-report=xmllocally on Windows/Python 3.13: 115 failed, 4353 passed, 20 skipped, 21 errors, 65% total coverage in 12m52s. The failures are dominated by Windows-environment issues (70 of 115 are*_js.pyNode-harness tests all dying onERR_UNSUPPORTED_ESM_URL_SCHEME; all 21 errors are Windows path/FileNotFoundErrorissues) - consistent withpython-testsin CI beingcontinue-on-errorand the ROADMAP's "fresh install smoke tests" item. Full breakdown inTESTING.md. - CI state. The existing CI already exceeded the house pipeline's minimum
template in most respects (pinned+checksummed gitleaks/actionlint/zizmor
binaries vs. the template's mutable-tag concerns), and - discovered only
by reading
docs/security-ci.md, since it isn't a checked-in workflow file - GitHub's default CodeQL setup already runs as an advisory SAST scan over the app's own code. The house pipeline's brief still namessemgrep-dockeras a required component specifically because it's Docker-reproducible by any contributor without GitHub's infrastructure, so it was added alongside CodeQL rather than instead of it, plus a churn/flake-detection job (which directly surfaces the flakinesspython-testsalready discloses). Added.github/workflows/semgrep.yml(Docker-basedsemgrep scan --config auto --error) and.github/workflows/churn.yml(fast-lane pytest x5, fail on disagreement, with atimeout-minutesand per-test--timeoutsafety net since no test is markedslowyet, so today's "fast lane" is the full suite). Both kept onubuntu-latestto match this repo's existing convention rather than the house template's[self-hosted, home-ci, windows]labels, since this repo has no self-hosted runner registered against its org. - Remote/org note.
originishttps://github.com/pewdiepie-archdaemon/ odysseus, not underandrewjonesdev. Flagged for the pending org migration pass rather than moved as part of this audit.