cadora 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. cadora-0.1.0/.claude/settings.local.json +11 -0
  2. cadora-0.1.0/.gitattributes +8 -0
  3. cadora-0.1.0/.github/workflows/ci.yml +23 -0
  4. cadora-0.1.0/.gitignore +12 -0
  5. cadora-0.1.0/CHANGELOG.md +26 -0
  6. cadora-0.1.0/EOD_2026-06-19.md +40 -0
  7. cadora-0.1.0/EOD_2026-06-21.md +37 -0
  8. cadora-0.1.0/LICENSE +21 -0
  9. cadora-0.1.0/PKG-INFO +94 -0
  10. cadora-0.1.0/README.md +77 -0
  11. cadora-0.1.0/RELEASE-PLAN.md +96 -0
  12. cadora-0.1.0/RELEASE-RUNBOOK.md +68 -0
  13. cadora-0.1.0/cadora/__init__.py +3 -0
  14. cadora-0.1.0/cadora/aidlc_rules/LICENSE +17 -0
  15. cadora-0.1.0/cadora/aidlc_rules/RULES_VERSION +7 -0
  16. cadora-0.1.0/cadora/aidlc_rules/core-workflow.md +539 -0
  17. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/ascii-diagram-standards.md +116 -0
  18. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/content-validation.md +78 -0
  19. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/depth-levels.md +73 -0
  20. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/error-handling.md +373 -0
  21. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/overconfidence-prevention.md +100 -0
  22. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/process-overview.md +141 -0
  23. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/question-format-guide.md +369 -0
  24. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/session-continuity.md +53 -0
  25. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/terminology.md +187 -0
  26. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/welcome-message.md +109 -0
  27. cadora-0.1.0/cadora/aidlc_rules/rule-details/common/workflow-changes.md +285 -0
  28. cadora-0.1.0/cadora/aidlc_rules/rule-details/construction/build-and-test.md +360 -0
  29. cadora-0.1.0/cadora/aidlc_rules/rule-details/construction/code-generation.md +217 -0
  30. cadora-0.1.0/cadora/aidlc_rules/rule-details/construction/functional-design.md +119 -0
  31. cadora-0.1.0/cadora/aidlc_rules/rule-details/construction/infrastructure-design.md +99 -0
  32. cadora-0.1.0/cadora/aidlc_rules/rule-details/construction/nfr-design.md +95 -0
  33. cadora-0.1.0/cadora/aidlc_rules/rule-details/construction/nfr-requirements.md +99 -0
  34. cadora-0.1.0/cadora/aidlc_rules/rule-details/extensions/resiliency/baseline/resiliency-baseline.md +490 -0
  35. cadora-0.1.0/cadora/aidlc_rules/rule-details/extensions/resiliency/baseline/resiliency-baseline.opt-in.md +26 -0
  36. cadora-0.1.0/cadora/aidlc_rules/rule-details/extensions/security/baseline/security-baseline.md +307 -0
  37. cadora-0.1.0/cadora/aidlc_rules/rule-details/extensions/security/baseline/security-baseline.opt-in.md +20 -0
  38. cadora-0.1.0/cadora/aidlc_rules/rule-details/extensions/testing/property-based/property-based-testing.md +284 -0
  39. cadora-0.1.0/cadora/aidlc_rules/rule-details/extensions/testing/property-based/property-based-testing.opt-in.md +22 -0
  40. cadora-0.1.0/cadora/aidlc_rules/rule-details/inception/application-design.md +147 -0
  41. cadora-0.1.0/cadora/aidlc_rules/rule-details/inception/requirements-analysis.md +190 -0
  42. cadora-0.1.0/cadora/aidlc_rules/rule-details/inception/reverse-engineering.md +311 -0
  43. cadora-0.1.0/cadora/aidlc_rules/rule-details/inception/units-generation.md +188 -0
  44. cadora-0.1.0/cadora/aidlc_rules/rule-details/inception/user-stories.md +327 -0
  45. cadora-0.1.0/cadora/aidlc_rules/rule-details/inception/workflow-planning.md +469 -0
  46. cadora-0.1.0/cadora/aidlc_rules/rule-details/inception/workspace-detection.md +97 -0
  47. cadora-0.1.0/cadora/aidlc_rules/rule-details/operations/operations.md +19 -0
  48. cadora-0.1.0/cadora/archive.py +85 -0
  49. cadora-0.1.0/cadora/cli.py +189 -0
  50. cadora-0.1.0/cadora/executors/__init__.py +36 -0
  51. cadora-0.1.0/cadora/executors/antigravity.py +60 -0
  52. cadora-0.1.0/cadora/executors/base.py +47 -0
  53. cadora-0.1.0/cadora/executors/claude_code.py +178 -0
  54. cadora-0.1.0/cadora/executors/codex.py +89 -0
  55. cadora-0.1.0/cadora/executors/kiro.py +44 -0
  56. cadora-0.1.0/cadora/gates.py +39 -0
  57. cadora-0.1.0/cadora/runner.py +92 -0
  58. cadora-0.1.0/cadora/topology.py +78 -0
  59. cadora-0.1.0/cadora/workspace.py +82 -0
  60. cadora-0.1.0/docs/ARCHITECTURE.md +48 -0
  61. cadora-0.1.0/docs/DESIGN.md +608 -0
  62. cadora-0.1.0/examples/aidlc-stages.topology.yaml +154 -0
  63. cadora-0.1.0/examples/aidlc.topology.yaml +35 -0
  64. cadora-0.1.0/pyproject.toml +33 -0
  65. cadora-0.1.0/scripts/publish.sh +35 -0
  66. cadora-0.1.0/scripts/refresh-aidlc-rules.sh +45 -0
  67. cadora-0.1.0/strategy/CLAUDE-SESSION-KICKOFF.md +65 -0
  68. cadora-0.1.0/strategy/ao-claude-code-pivot-strategy-2026-06-18.docx +0 -0
  69. cadora-0.1.0/strategy/ao-claude-code-pivot-strategy-2026-06-18.md +340 -0
  70. cadora-0.1.0/strategy/ao-pivot-runner-options-and-consulting-2026-06-19.docx +0 -0
  71. cadora-0.1.0/strategy/ao-pivot-runner-options-and-consulting-2026-06-19.md +178 -0
  72. cadora-0.1.0/tests/fixtures/claude_stream_success.jsonl +3 -0
  73. cadora-0.1.0/tests/test_archive.py +63 -0
  74. cadora-0.1.0/tests/test_claude_executor.py +133 -0
  75. cadora-0.1.0/tests/test_runner.py +123 -0
  76. cadora-0.1.0/tests/test_topology.py +40 -0
  77. cadora-0.1.0/tests/test_workspace.py +44 -0
@@ -0,0 +1,11 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(python3 -m venv .venv)",
5
+ "Bash(.venv/bin/python -m pip install -q --upgrade pip)",
6
+ "Bash(.venv/bin/python -m pip install -q -e \".[dev]\")",
7
+ "Bash(.venv/bin/python -m pytest -q)",
8
+ "Bash(.venv/bin/ruff check *)"
9
+ ]
10
+ }
11
+ }
@@ -0,0 +1,8 @@
1
+ # Keep private strategy/planning out of any `git archive` export (defense in
2
+ # depth — the real boundary is scripts/publish.sh's allowlist + a PRIVATE remote
3
+ # on this repo). See RELEASE-PLAN.md.
4
+ strategy/ export-ignore
5
+ scripts/ export-ignore
6
+ RELEASE-PLAN.md export-ignore
7
+ RELEASE-RUNBOOK.md export-ignore
8
+ EOD_*.md export-ignore
@@ -0,0 +1,23 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ python-version: ["3.10", "3.11", "3.12"]
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: ${{ matrix.python-version }}
20
+ - run: python -m pip install --upgrade pip
21
+ - run: pip install -e ".[dev]"
22
+ - run: ruff check .
23
+ - run: pytest -q
@@ -0,0 +1,12 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .venv/
4
+ venv/
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ runs/
9
+ .pytest_cache/
10
+ .ruff_cache/
11
+ .DS_Store
12
+ .env
@@ -0,0 +1,26 @@
1
+ # Changelog
2
+
3
+ ## v0.1.0 — unreleased
4
+
5
+ First public release of **Cadora** — an AI-DLC workflow conductor that drives the AWS AI-DLC
6
+ method on a headless coding agent (Claude Code), gates the result, and captures every run.
7
+
8
+ ### Added
9
+ - **AI-DLC conductor** — vendors the AWS AI-DLC rule-set (`awslabs/aidlc-workflows`, MIT-0) and
10
+ installs it per run (`CLAUDE.md` + `.aidlc-rule-details/`); drives the full lifecycle
11
+ (Inception → Construction → Build & Test) from a `vision.md`.
12
+ - **`cadora aidlc-init`** — set up an AI-DLC workspace (rules + inputs).
13
+ - **`cadora run`** — drive the workflow on Claude Code (`claude -p`), autonomous and
14
+ **subscription-funded by default** (metered API opt-in via `--funding api`); `--cwd`,
15
+ `--gate-cmd`, `--timeout`.
16
+ - **Deterministic `build-test` gate** — blocks the run on non-zero exit.
17
+ - **Run archive** — `runs/<id>/manifest.json` + per-node `aidlc-docs/` snapshot + event stream
18
+ + cost; inspect with `cadora archive ls` / `cadora archive show`.
19
+ - **`NodeExecutor` seam** — backend-agnostic; Claude Code shipping, with codex / kiro /
20
+ antigravity adapters behind it.
21
+ - Examples: `aidlc.topology.yaml` (single-session) and `aidlc-stages.topology.yaml`
22
+ (per-stage DAG); CI (ruff + pytest on Python 3.10–3.12).
23
+
24
+ ### Roadmap
25
+ - `cadora eval` / `compare` (AI-DLC compliance + LLM-judge over captured runs), the per-stage
26
+ DAG + wave concurrency, `--hitl` human approval, more backends, a consulting deliverable pack.
@@ -0,0 +1,40 @@
1
+ # EOD — 2026-06-19
2
+
3
+ **Status:** Cadora v0.1.0 — **week-1 ("make it real") complete, live-proven, merged to `main`** (week-1 tip `6023ba0`, + this checkpoint). Week-2 (release) is next.
4
+
5
+ > Private working log (excluded from the public release via `publish.sh` allowlist + `.gitattributes`).
6
+
7
+ ## Shipped today (10 commits on `main`)
8
+ - **Design pass** — `docs/DESIGN.md` (private): `NodeExecutor` contract, verified `claude`/`codex` event schemas, AI-DLC alignment (§0) + decisions ledger.
9
+ - **AI-DLC is the product** — Cadora implements the AWS AI-DLC method (`awslabs/aidlc-workflows`, rules v1.0.0), vendored under `cadora/aidlc_rules/` (MIT-0, pinned `e273af0`) via `scripts/refresh-aidlc-rules.sh`.
10
+ - **`ClaudeCodeExecutor`** hardened — `stream-json --verbose`, stdin DEVNULL, `--dangerously-skip-permissions` (autonomous), full `result` parsing, `ok = exit0 && !is_error`, **subscription-default funding** (drops ambient `ANTHROPIC_API_KEY`; metered = explicit opt-in), `apiKeySource` capture; primary-model reporting fix.
11
+ - **Workspace setup** — `cadora aidlc-init` / `cadora run --vision` installs `CLAUDE.md` + `.aidlc-rule-details/` + inputs.
12
+ - **Runner** — pre-flight gate check, `build-test` gate fires/blocks, `aidlc-docs/` + cost capture, funding-visible console; `--timeout`.
13
+ - **Archive inspector** — `cadora archive ls` / `show`.
14
+ - **CI** — GitHub Actions ruff + pytest, Py 3.10–3.12 (ships to public repo too).
15
+ - **Examples** — `aidlc.topology.yaml` (A, ships) + `aidlc-stages.topology.yaml` (B, destination, 13 stage-nodes).
16
+ - **Public-surface scrub** — no "AO"/"Agent Orchestrator" names, no private cross-refs; `DESIGN.md` kept private.
17
+
18
+ ## Key decisions (DESIGN §0 ledger)
19
+ - Architecture: ship **(A)** single-session run for v0.1.0; **(B)** per-stage DAG is the intended destination.
20
+ - Backend: **Claude Code only** this cycle (codex/kiro/antigravity stay in the seam).
21
+ - Language: **Python** for v0.1.0; **Rust deferred** (trigger-gated runner-core migration).
22
+ - Funding: **subscription token by default**, console-visible; metered API opt-in only.
23
+
24
+ ## Live validation
25
+ - `adder` (haiku): full lifecycle, $0.41/65 turns, generated code runs (`python -m adder 2 3 → 5`).
26
+ - **Secrets Vault (sonnet, $3.05/54 turns):** full AI-DLC → CDK (3 stacks) + Lambda + Next.js; **`cdk synth` offline OK**, **17/17 unit tests pass**, Cognito `AllowAdminCreateUserOnly=True` honored; AWS creds stripped → no deploy. Inspect: `cadora archive show vault1 --archive-dir /tmp/cadora-vault/runs`.
27
+ - Suite: **36 tests green**, ruff clean.
28
+
29
+ ## Left for v0.1.0 (week-2 — see RELEASE-PLAN.md)
30
+ - README + `docs/ARCHITECTURE.md` AI-DLC reframe; verify quickstart; retire toy `examples/topology.example.yaml`.
31
+ - `python -m build` → publish **PyPI** `cadora`; tag `v0.1.0`; `scripts/publish.sh` → public repo + release notes; hold npm name.
32
+ - Post-v0.1.0 backlog: `cadora compare`/`eval`; per-unit Construction fan-out (B); read-only archive web browser; `codex` live-verify.
33
+
34
+ ## Repo state
35
+ - `main` = week-1 (`6023ba0`) + this EOD checkpoint; pushed to `origin` (private `cadora-dev`).
36
+ - `feat/claude-executor` merged into `main` (safe to delete).
37
+ - `/tmp/cadora-vault` and `/tmp/cadora-live` left in place for inspection (ephemeral).
38
+
39
+ ## Resume next session
40
+ Start from RELEASE-PLAN.md week-2; the design spine is `docs/DESIGN.md` (§0 ledger first).
@@ -0,0 +1,37 @@
1
+ # EOD — 2026-06-21
2
+
3
+ **Status:** Cadora v0.1.0 — **release-ready. Only the outward-facing launch remains** (PyPI
4
+ publish + public repo + tag, gated on a PyPI token → tomorrow). `main` @ `f1c6db4` (+ this
5
+ checkpoint), in sync with private `cadora-dev`; 36 tests green, ruff clean.
6
+
7
+ > Private working log (excluded from the public release).
8
+
9
+ ## Done today (week-2 prep, on `main`)
10
+ - **Plan reconciled** — RELEASE-PLAN DoD → claude-only / AI-DLC (matches DESIGN §0); backlog
11
+ sharpened into the AO-skill-derived capabilities.
12
+ - **Intel captured to memory:**
13
+ - Competitor `ijin/aidlc-cc-plugin-v2` = adjacent **interactive CC plugin**; Cadora differentiates
14
+ as the **headless, backend-agnostic conductor** (capture/compare/eval). Loose, not direct.
15
+ - AO `aidlc-check` skill = blueprint for `cadora eval` (wraps upstream `aidlc-traceability`, MIT-0).
16
+ - AO skills import backlog: `cadora eval` / `--hitl` / `cadora deliverable` / `doctor` + monitoring.
17
+ - **Docs reframe (week-2 #1)** — README + ARCHITECTURE reframed to the AI-DLC conductor (claude-first,
18
+ A-ships/B-destination, differentiated vs a plugin); retired the toy example; quickstart →
19
+ `aidlc-init` + `aidlc.topology.yaml` + `archive show`. Merged → `main`.
20
+ - **Release prep** — version `0.1.0` (pyproject + `__init__`); sharpened PyPI description + URLs;
21
+ `CHANGELOG.md` (+ in the public cut). Build verified: `cadora-0.1.0` wheel ships the 32 vendored
22
+ rule files; sdist + publish cut clean. **PyPI name `cadora` is AVAILABLE.**
23
+ - **`RELEASE-RUNBOOK.md`** (private) — PyPI token → TestPyPI → publish → public repo → tag.
24
+ - Pushed the checkpoint to private `cadora-dev`.
25
+
26
+ ## Tomorrow — the launch (~15 min; see RELEASE-RUNBOOK.md)
27
+ 1. PyPI token (one-time): account + 2FA → API token (account-scoped for the first upload) → `~/.pypirc` or `TWINE_*` env.
28
+ 2. `rm -rf dist && python -m build` → (optional TestPyPI dry-run) → `twine upload dist/*` (IRREVERSIBLE).
29
+ 3. `gh repo create yeychenne/cadora --public` → `scripts/publish.sh` → push the *separate* `../cadora-public/` (never add the public remote here; re-audit before push).
30
+ 4. Tag `v0.1.0`; flip CHANGELOG `unreleased`→date + README pre-release→released; GitHub release notes.
31
+
32
+ **Caveat:** `cadora` is free on PyPI now but only *locked* on first publish — low risk over a day for a niche name.
33
+
34
+ ## Repo state
35
+ - `main` @ `f1c6db4` (+ this EOD checkpoint), in sync with `origin` (private `cadora-dev`); 36 tests green, ruff clean.
36
+ - Branches `feat/claude-executor` + `docs/aidlc-reframe` merged (safe to delete).
37
+ - `/tmp/cadora-vault`, `/tmp/cadora-live`, `/tmp/cadora-dist` are ephemeral (rebuild tomorrow).
cadora-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yves Eychenne
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
cadora-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,94 @@
1
+ Metadata-Version: 2.4
2
+ Name: cadora
3
+ Version: 0.1.0
4
+ Summary: An AI-DLC workflow conductor — drive the AWS AI-DLC method on a headless coding agent (Claude Code), with deterministic gates and run capture.
5
+ Project-URL: Homepage, https://github.com/yeychenne/cadora
6
+ Project-URL: Repository, https://github.com/yeychenne/cadora
7
+ Author-email: Yves Eychenne <yeychenne@yahoo.fr>
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Keywords: agents,ai-dlc,claude-code,dag,kiro,orchestration,workflow
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: pyyaml>=6.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: pytest>=8.0; extra == 'dev'
15
+ Requires-Dist: ruff; extra == 'dev'
16
+ Description-Content-Type: text/markdown
17
+
18
+ # Cadora
19
+
20
+ **An AI-DLC workflow conductor — drive the AWS AI-DLC method on a coding agent, headlessly, and capture every run.**
21
+
22
+ Cadora implements the [AWS AI-DLC method](https://github.com/awslabs/aidlc-workflows) (AI-Driven Development Life Cycle) as a thin, **backend-agnostic conductor**. Point it at a product vision and it drives a coding agent through the full AI-DLC lifecycle — 🔵 Inception (requirements → planning → design) then 🟢 Construction (code generation → build & test) — **autonomously and headlessly**, applies a deterministic gate, and captures the whole run (artifacts, events, cost) for inspection and comparison.
23
+
24
+ Cadora is the **conductor**, not the agent: it doesn't implement the agent loop (the backend CLI does), and it isn't an in-session/in-IDE assistant. It installs the AI-DLC rules into a workspace, drives an external headless coding-agent CLI, gates the result, and archives it — so runs are **reproducible, scriptable, gate-able, and comparable**.
25
+
26
+ **v0.1.0 backend:** Claude Code (`claude -p`, subscription-funded by default). The `NodeExecutor` seam is backend-agnostic — `codex` / `kiro` / `antigravity` adapters sit behind it (roadmap); the same workflow is meant to run across them and be A/B-compared.
27
+
28
+ ## Status
29
+
30
+ **Early (pre-v0.1.0).** The Claude Code path works and is live-proven end-to-end — it has driven the full AI-DLC lifecycle on real projects, from a tiny CLI to a multi-stack AWS app (CDK + Lambda + Next.js, `cdk synth` + unit tests passing). `pytest` green, `ruff` clean, CI on Python 3.10–3.12. Not yet on PyPI (coming with v0.1.0).
31
+
32
+ ## How it works
33
+
34
+ ```
35
+ vision.md ─▶ install AI-DLC rules (CLAUDE.md + .aidlc-rule-details/) into a workspace
36
+ ─▶ drive `claude -p` through the AI-DLC lifecycle (autonomous, subscription-funded)
37
+ ─▶ deterministic build-test gate (blocks on failure)
38
+ ─▶ run archive: aidlc-docs/ + events + cost → cadora archive show
39
+ ```
40
+
41
+ ## Install
42
+
43
+ Requires **Python 3.10+** and the [`claude`](https://docs.claude.com/claude-code) CLI on PATH.
44
+
45
+ ```bash
46
+ git clone https://github.com/yeychenne/cadora.git && cd cadora
47
+ python3 -m venv .venv && source .venv/bin/activate # Python 3.10+
48
+ pip install -e ".[dev]"
49
+ ```
50
+
51
+ _(PyPI: `pip install cadora` — coming with v0.1.0.)_
52
+
53
+ ## Quickstart
54
+
55
+ ```bash
56
+ # 1. Set up an AI-DLC workspace from your product vision.
57
+ cadora aidlc-init ./my-project --vision vision.md
58
+
59
+ # 2. Drive the full AI-DLC lifecycle on Claude Code (autonomous, subscription-funded).
60
+ cadora run examples/aidlc.topology.yaml --vision vision.md --cwd ./my-project
61
+
62
+ # 3. Inspect what happened.
63
+ cadora archive ls
64
+ cadora archive show <run-id>
65
+ ```
66
+
67
+ The run lands in `runs/<run-id>/` — `manifest.json` (ok, cost, model, gate, funding) + a per-node `aidlc-docs/` snapshot + the event stream. The generated application code lands in your workspace.
68
+
69
+ ### Funding (Claude Code)
70
+
71
+ Cadora **defaults to your Claude Code subscription** — it removes any ambient `ANTHROPIC_API_KEY` from the run so a stray key can't silently meter you. Metered API is explicit opt-in (`--funding api`). Set the subscription token once with `claude setup-token`, or just be logged in to Claude Code.
72
+
73
+ ## The AI-DLC method
74
+
75
+ Cadora vendors the AWS AI-DLC rule-set ([`awslabs/aidlc-workflows`](https://github.com/awslabs/aidlc-workflows), MIT-0) under `cadora/aidlc_rules/` and installs it per run as `CLAUDE.md` (the core workflow, auto-loaded) + `.aidlc-rule-details/` (per-stage rules). v0.1.0 drives the lifecycle as a **single autonomous session** (`examples/aidlc.topology.yaml`); the **per-stage DAG** (`examples/aidlc-stages.topology.yaml`, one node per stage) is the roadmap.
76
+
77
+ ## Architecture
78
+
79
+ - `cadora/topology.py` — the workflow DAG (schema + loader + dependency-ordered waves).
80
+ - `cadora/executors/` — the `NodeExecutor` seam + the Claude Code backend (codex/kiro/antigravity adapters behind it).
81
+ - `cadora/workspace.py` — install the AI-DLC rules + inputs into a run workspace.
82
+ - `cadora/gates.py` — deterministic-first gates (shell checks that block).
83
+ - `cadora/archive.py` — run capture (`runs/<id>/manifest.json` + artifacts) + `cadora archive ls/show`.
84
+ - `cadora/runner.py` — wires it together.
85
+
86
+ See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).
87
+
88
+ ## Roadmap
89
+
90
+ `cadora eval` / `compare` (deterministic AI-DLC compliance + LLM-judge over captured runs), the per-stage DAG + wave concurrency, `--hitl` human approval, more backends (codex/kiro/antigravity), and a consulting deliverable pack.
91
+
92
+ ## License
93
+
94
+ MIT — see [LICENSE](LICENSE). The vendored AI-DLC rules are MIT-0 (`cadora/aidlc_rules/LICENSE`).
cadora-0.1.0/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # Cadora
2
+
3
+ **An AI-DLC workflow conductor — drive the AWS AI-DLC method on a coding agent, headlessly, and capture every run.**
4
+
5
+ Cadora implements the [AWS AI-DLC method](https://github.com/awslabs/aidlc-workflows) (AI-Driven Development Life Cycle) as a thin, **backend-agnostic conductor**. Point it at a product vision and it drives a coding agent through the full AI-DLC lifecycle — 🔵 Inception (requirements → planning → design) then 🟢 Construction (code generation → build & test) — **autonomously and headlessly**, applies a deterministic gate, and captures the whole run (artifacts, events, cost) for inspection and comparison.
6
+
7
+ Cadora is the **conductor**, not the agent: it doesn't implement the agent loop (the backend CLI does), and it isn't an in-session/in-IDE assistant. It installs the AI-DLC rules into a workspace, drives an external headless coding-agent CLI, gates the result, and archives it — so runs are **reproducible, scriptable, gate-able, and comparable**.
8
+
9
+ **v0.1.0 backend:** Claude Code (`claude -p`, subscription-funded by default). The `NodeExecutor` seam is backend-agnostic — `codex` / `kiro` / `antigravity` adapters sit behind it (roadmap); the same workflow is meant to run across them and be A/B-compared.
10
+
11
+ ## Status
12
+
13
+ **Early (pre-v0.1.0).** The Claude Code path works and is live-proven end-to-end — it has driven the full AI-DLC lifecycle on real projects, from a tiny CLI to a multi-stack AWS app (CDK + Lambda + Next.js, `cdk synth` + unit tests passing). `pytest` green, `ruff` clean, CI on Python 3.10–3.12. Not yet on PyPI (coming with v0.1.0).
14
+
15
+ ## How it works
16
+
17
+ ```
18
+ vision.md ─▶ install AI-DLC rules (CLAUDE.md + .aidlc-rule-details/) into a workspace
19
+ ─▶ drive `claude -p` through the AI-DLC lifecycle (autonomous, subscription-funded)
20
+ ─▶ deterministic build-test gate (blocks on failure)
21
+ ─▶ run archive: aidlc-docs/ + events + cost → cadora archive show
22
+ ```
23
+
24
+ ## Install
25
+
26
+ Requires **Python 3.10+** and the [`claude`](https://docs.claude.com/claude-code) CLI on PATH.
27
+
28
+ ```bash
29
+ git clone https://github.com/yeychenne/cadora.git && cd cadora
30
+ python3 -m venv .venv && source .venv/bin/activate # Python 3.10+
31
+ pip install -e ".[dev]"
32
+ ```
33
+
34
+ _(PyPI: `pip install cadora` — coming with v0.1.0.)_
35
+
36
+ ## Quickstart
37
+
38
+ ```bash
39
+ # 1. Set up an AI-DLC workspace from your product vision.
40
+ cadora aidlc-init ./my-project --vision vision.md
41
+
42
+ # 2. Drive the full AI-DLC lifecycle on Claude Code (autonomous, subscription-funded).
43
+ cadora run examples/aidlc.topology.yaml --vision vision.md --cwd ./my-project
44
+
45
+ # 3. Inspect what happened.
46
+ cadora archive ls
47
+ cadora archive show <run-id>
48
+ ```
49
+
50
+ The run lands in `runs/<run-id>/` — `manifest.json` (ok, cost, model, gate, funding) + a per-node `aidlc-docs/` snapshot + the event stream. The generated application code lands in your workspace.
51
+
52
+ ### Funding (Claude Code)
53
+
54
+ Cadora **defaults to your Claude Code subscription** — it removes any ambient `ANTHROPIC_API_KEY` from the run so a stray key can't silently meter you. Metered API is explicit opt-in (`--funding api`). Set the subscription token once with `claude setup-token`, or just be logged in to Claude Code.
55
+
56
+ ## The AI-DLC method
57
+
58
+ Cadora vendors the AWS AI-DLC rule-set ([`awslabs/aidlc-workflows`](https://github.com/awslabs/aidlc-workflows), MIT-0) under `cadora/aidlc_rules/` and installs it per run as `CLAUDE.md` (the core workflow, auto-loaded) + `.aidlc-rule-details/` (per-stage rules). v0.1.0 drives the lifecycle as a **single autonomous session** (`examples/aidlc.topology.yaml`); the **per-stage DAG** (`examples/aidlc-stages.topology.yaml`, one node per stage) is the roadmap.
59
+
60
+ ## Architecture
61
+
62
+ - `cadora/topology.py` — the workflow DAG (schema + loader + dependency-ordered waves).
63
+ - `cadora/executors/` — the `NodeExecutor` seam + the Claude Code backend (codex/kiro/antigravity adapters behind it).
64
+ - `cadora/workspace.py` — install the AI-DLC rules + inputs into a run workspace.
65
+ - `cadora/gates.py` — deterministic-first gates (shell checks that block).
66
+ - `cadora/archive.py` — run capture (`runs/<id>/manifest.json` + artifacts) + `cadora archive ls/show`.
67
+ - `cadora/runner.py` — wires it together.
68
+
69
+ See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).
70
+
71
+ ## Roadmap
72
+
73
+ `cadora eval` / `compare` (deterministic AI-DLC compliance + LLM-judge over captured runs), the per-stage DAG + wave concurrency, `--hitl` human approval, more backends (codex/kiro/antigravity), and a consulting deliverable pack.
74
+
75
+ ## License
76
+
77
+ MIT — see [LICENSE](LICENSE). The vendored AI-DLC rules are MIT-0 (`cadora/aidlc_rules/LICENSE`).
@@ -0,0 +1,96 @@
1
+ # Cadora — release plan (public v0.1.0 in two weeks)
2
+
3
+ **Objective:** ship one public open-source release of Cadora within **two weeks (by ~2026-07-03)** — a credible, usable artifact for the consulting funnel.
4
+
5
+ ## Repo model — private dev, public release
6
+
7
+ This directory (`cadora/`) is the **PRIVATE** repo and the single source of truth: code, `strategy/`, planning, release tooling. **Its git remote must be a PRIVATE GitHub repo.**
8
+
9
+ The **public release** is a SEPARATE repo containing only the releasable subset — `cadora/`, `examples/`, `tests/`, `docs/`, `README.md`, `LICENSE`, `pyproject.toml`. **`strategy/` and `scripts/` never go public.** `scripts/publish.sh` produces that subset.
10
+
11
+ ```
12
+ cadora/ (PRIVATE remote) ──scripts/publish.sh──▶ cadora-public/ (PUBLIC remote)
13
+ cadora/ examples/ tests/ docs/ ───────────────────▶ copied
14
+ strategy/ scripts/ RELEASE-PLAN.md ──────────────▶ excluded (stays private)
15
+ ```
16
+
17
+ ### One-time GitHub setup
18
+ ```bash
19
+ # Private source-of-truth repo (this directory)
20
+ gh repo create <you>/cadora-dev --private --source . --remote origin --push
21
+
22
+ # Public release repo (the name people see; PyPI package is also `cadora`)
23
+ gh repo create <you>/cadora --public \
24
+ --description "An AI-DLC workflow conductor for agentic delivery"
25
+ scripts/publish.sh # stages ../cadora-public/
26
+ cd ../cadora-public && git init && git remote add origin <public-url>
27
+ ```
28
+ > Safety: **never add the public remote to THIS repo.** Publish only via the separate `cadora-public/` working copy, so `strategy/` cannot leak.
29
+
30
+ ## License
31
+ **MIT** (in `LICENSE`) — simplest permissive default for adoption. Switch to **Apache-2.0** if you want an explicit patent grant (recommended if you later commercialize). Keep `pyproject.toml`'s `license` field in sync.
32
+
33
+ ## Definition of done — v0.1.0 (public)
34
+
35
+ Cadora implements the **AWS AI-DLC method**, driven on **Claude Code** — the sole v0.1.0
36
+ backend (codex / kiro / antigravity remain in the backend-agnostic seam; see backlog).
37
+ Decisions: `docs/DESIGN.md` §0.
38
+
39
+ - ✅ `cadora run examples/aidlc.topology.yaml --vision <vision.md> --executor claude` drives the
40
+ full AI-DLC lifecycle end-to-end against a real `claude` (proven on a trivial app + the
41
+ Secrets Vault).
42
+ - ✅ Subscription-funded by default (console-visible; metered API opt-in only).
43
+ - ✅ AI-DLC rules vendored + workspace setup (`cadora aidlc-init`).
44
+ - ✅ Deterministic `build-test` gate wired + fires/blocks.
45
+ - ✅ Real `claude` event parsing (final text + usage + cost + model).
46
+ - ✅ Run archive + `cadora archive ls/show`.
47
+ - ✅ `pytest` green; `ruff` clean; GitHub Actions CI (ruff + pytest, Py 3.10–3.12).
48
+ - ⬜ README + `docs/ARCHITECTURE.md` reframed to AI-DLC + quickstart verified; `LICENSE` present;
49
+ published to **PyPI** as `cadora`; npm name held.
50
+
51
+ ## Two-week plan
52
+ **Week 1 — make it real (private repo). ✅ DONE — merged to `main`, live-proven.**
53
+ - AI-DLC alignment + decisions ledger (`docs/DESIGN.md` §0); vendored rules + `cadora aidlc-init`.
54
+ - Hardened `ClaudeCodeExecutor` (stream-json, subscription funding, full parsing, ok semantics).
55
+ - Runner: `build-test` gate + `aidlc-docs`/cost capture + funding console; `cadora archive ls/show`; `--timeout`.
56
+ - Tests (executor / workspace / runner / archive / topology) + CI.
57
+ - Deferred by decision: wave concurrency; `codex` / `kiro` live-verify (see backlog).
58
+
59
+ **Week 2 — release.**
60
+ 7. Reframe README + `docs/ARCHITECTURE.md` to the AI-DLC conductor (claude-only, A ships / B
61
+ destination); verify the quickstart against `examples/aidlc.topology.yaml`; retire the toy
62
+ `examples/topology.example.yaml`; optional asciinema of a run.
63
+ 8. `python -m build` → publish to **PyPI** (`cadora`); hold the npm name.
64
+ 9. One-time public-repo setup → `scripts/publish.sh` → push the public repo; tag `v0.1.0`; GitHub release notes.
65
+ 10. Soft announce (consulting funnel): one post framing Cadora as an AI-DLC delivery conductor.
66
+
67
+ ## Out of scope for v0.1.0 (post-release backlog)
68
+
69
+ Several items port AO's eval/skills layer — the differentiated asset the pivot keeps
70
+ (`~/projects/AgentOrchestrator/.claude/skills/`).
71
+
72
+ **Architecture — decision B:** per-stage DAG (each AI-DLC stage a node; conditional self-skip;
73
+ runtime per-unit Construction fan-out; wave concurrency). See `docs/DESIGN.md` §0.1.
74
+
75
+ **Verification — `cadora eval`** (port AO `aidlc-check` + `eval-pipeline`):
76
+ - `aidlc-check` gate/command — deterministic phase-artifact presence + Requirements→Code
77
+ traceability, vendoring upstream `aidlc-traceability` (MIT-0); grep-for-orphaned-`US-XXX` fallback.
78
+ - LLM-as-Judge graders — ground-truth, trajectory, multi-run consistency, scoring rubrics.
79
+ - `cadora compare <a> <b>` — diff two runs (same topology, different model/backend) on cost +
80
+ outcome + artifacts.
81
+
82
+ **HITL — `cadora run --hitl`** (port AO `monitor-r-run-hitl`): surface AI-DLC
83
+ `request_input` / approval gates to the operator for typed answers; auto-approve only go/no-go.
84
+
85
+ **Consulting — `cadora deliverable`** (port AO `produce-solution-docs`): a finished run's
86
+ `aidlc-docs/` + code → a client pack (md / Word / PPT / draw.io / HTML). Consulting-funnel differentiator.
87
+
88
+ **Ops:** `cadora doctor` — env preflight (claude on PATH, auth/token, rules vendored; reframes
89
+ AO `deploy-check` minus the infra); run monitoring (port AO `babysit-pipeline`, lighter); archive
90
+ reuse (port AO `prepare-test`).
91
+
92
+ **Backends & runtime:** `codex` / `kiro` live-verify; `antigravity` hardening once `agy` fixes
93
+ stdout/JSON; an Agent-SDK executor (own-the-loop) alongside `claude -p`; Rust runner-core
94
+ migration (trigger-gated — `docs/DESIGN.md` §11).
95
+
96
+ **UI:** read-only archive browser (the AO-dashboard successor — no live control plane).
@@ -0,0 +1,68 @@
1
+ # Cadora — v0.1.0 release runbook (PRIVATE)
2
+
3
+ Prep is **done and committed**: version `0.1.0`, CHANGELOG, build verified (wheel ships the 32
4
+ vendored rule files), publish cut clean, PyPI name `cadora` free. What remains is the
5
+ outward-facing launch — do it in order. (Private: excluded from the public cut + `git archive`.)
6
+
7
+ > **Can this wait until tomorrow?** Yes. All prep is committed/pushed; tomorrow you just rebuild
8
+ > (§0) and run the steps. Caveat: `cadora` is *available* now but only *locked* once you first
9
+ > publish — small risk someone takes it first. Niche name, ~a day → low risk. To lock it
10
+ > immediately, publish today.
11
+
12
+ ## 0. Rebuild fresh (the /tmp build is ephemeral)
13
+ ```bash
14
+ cd ~/projects/cadora && source .venv/bin/activate
15
+ rm -rf dist && python -m build # -> dist/cadora-0.1.0-{py3-none-any.whl,tar.gz}
16
+ pip install -q twine && twine check dist/*
17
+ ```
18
+
19
+ ## 1. PyPI API token (one-time)
20
+ 1. Account: https://pypi.org/account/register/ (skip if you have one) → verify email.
21
+ 2. **Enable 2FA** (PyPI requires it to upload): Account settings → Two-factor authentication.
22
+ 3. Create the token: Account settings → **API tokens** → **Add API token**.
23
+ - Name: `cadora-publish`.
24
+ - **Scope: "Entire account"** for the FIRST upload — the `cadora` project doesn't exist on
25
+ PyPI yet, so you can't scope to it. After the first publish, create a NEW token scoped to
26
+ project `cadora` and delete the account-wide one.
27
+ - Copy the token (`pypi-AgEI…`) — shown only once.
28
+ 4. Configure it — **never paste the token into chat or a commit**:
29
+ - `~/.pypirc`:
30
+ ```ini
31
+ [pypi]
32
+ username = __token__
33
+ password = pypi-AgEI…
34
+ ```
35
+ then `chmod 600 ~/.pypirc`
36
+ - or env: `export TWINE_USERNAME=__token__ TWINE_PASSWORD=pypi-AgEI…`
37
+
38
+ ## 2. (Recommended) TestPyPI dry-run — de-risk the irreversible upload
39
+ 1. Separate account + token at https://test.pypi.org/.
40
+ 2. `twine upload --repository testpypi dist/*`
41
+ 3. In a clean venv: `pip install -i https://test.pypi.org/simple/ cadora` → sanity check `cadora --help`.
42
+
43
+ ## 3. Publish to PyPI (IRREVERSIBLE — a version number can't be reused)
44
+ ```bash
45
+ twine upload dist/*
46
+ ```
47
+ Verify: https://pypi.org/project/cadora/ and `pip install cadora` in a clean venv.
48
+ Then rotate to a **project-scoped** token (§1.3) and delete the account-wide one.
49
+
50
+ ## 4. Public GitHub repo (publish ONLY via the separate working copy)
51
+ ```bash
52
+ gh repo create yeychenne/cadora --public \
53
+ --description "An AI-DLC workflow conductor for agentic delivery"
54
+ scripts/publish.sh # stages ../cadora-public/
55
+ # re-audit the staged cut before pushing:
56
+ grep -rniE "agent[ -]?orchestrator|\bAO\b|strategy|DESIGN\.md|this machine" ../cadora-public && echo "STOP: leak" || echo "clean"
57
+ cd ../cadora-public && git init && git add -A && git commit -m "release v0.1.0"
58
+ git branch -M main && git remote add origin https://github.com/yeychenne/cadora.git
59
+ git push -u origin main
60
+ ```
61
+ **SAFETY:** never add the public remote to THIS repo; publish only from `../cadora-public/`.
62
+
63
+ ## 5. Tag + finalize
64
+ - In THIS repo: flip `CHANGELOG.md` `unreleased` → the date; README `Status: Early (pre-v0.1.0)`
65
+ → released + `pip install cadora`; commit; re-run `scripts/publish.sh`; push public.
66
+ - Tag: `git tag v0.1.0 && git push origin v0.1.0` (private) and tag the public repo.
67
+ - GitHub release on the public repo using the CHANGELOG v0.1.0 notes.
68
+ - (Optional) hold the npm name; soft-announce.
@@ -0,0 +1,3 @@
1
+ """Cadora — an AI-DLC workflow conductor for agentic delivery."""
2
+
3
+ __version__ = "0.1.0"
@@ -0,0 +1,17 @@
1
+ MIT No Attribution
2
+
3
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
13
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
15
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
17
+
@@ -0,0 +1,7 @@
1
+ ai-dlc-rules: 1.0.0
2
+ source: https://github.com/awslabs/aidlc-workflows
3
+ commit: e273af0a310ef3968d3636acc7e0afec6f7dad22
4
+ ref: main
5
+ retrieved: 2026-06-19T15:29:29Z
6
+ license: MIT-0 (see ./LICENSE)
7
+ note: vendored by scripts/refresh-aidlc-rules.sh — do not edit by hand