Skip to content

feat(v1.1.0): implement Sprints 1-3 venture operating system - #8

Merged
Faeif merged 1 commit into
mainfrom
feat/v1.1.0-venture-os
Sep 2, 2026
Merged

feat(v1.1.0): implement Sprints 1-3 venture operating system#8
Faeif merged 1 commit into
mainfrom
feat/v1.1.0-venture-os

Conversation

@Faeif

@Faeif Faeif commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Summary

Complete end-to-end upgrade of CaseKit Open Source (Sprints 1-3) transforming it into a domain-agnostic Venture & Hackathon Operating System.

Key Changes

  • Universal Financial Modeling Engine: 5 Excel archetypes (b2b-saas, marketplace, hardware-iot, d2c-retail, corporate-roi) with auto Named Ranges sync and CFO sanity checks.
  • Socratic YC & Founder Coach: casekit-yc-coach enforcing 4 Pillars & 5-Level Funnel.
  • Obsidian No-Code Workspace: Pre-configured .obsidian/ starter pack with Dataview 00-DASHBOARD.md.
  • Global Deep Research Engine: Primary source evidence hierarchy, Rule of 3 triangulation, and URL archiver.
  • Progressive CLI Presets & MCP Server: casekit init --preset hackathon-sprint | corporate-launchpad | full-deep-drill, casekit add, and CaseKit MCP server.
  • 16:9 Presentation & Rehearsal: Widescreen PowerPoint renderer, 4-judge rehearsal simulator, and 140 WPM pitch timing enforcer.
  • Minimalist Live Prototype Generator: Standalone HTML/Tailwind generator.
  • Reference Vaults & CI: Airbnb 2008 & Stripe developer wedge vaults + GitHub Actions PR validator workflow.

Verification

  • 223/223 automated tests passing (100%).
  • All presets verified with casekit validate --strict.

Devin Review

- Add 5 universal multi-tab Excel financial models (B2B SaaS, Marketplace, Hardware IoT, D2C Retail, Corporate ROI) with auto Named Ranges sync and CFO sanity checks
- Add Socratic YC & Founder AI Coach skill (casekit-yc-coach) with 4 Pillars & 5-Level Funnel enforcement
- Add pre-configured Obsidian workspace starter pack with live Dataview 00-DASHBOARD.md
- Add Global Deep Research primary source hierarchy, Rule of 3 triangulation, autopsy matrix, and URL archiver
- Add progressive CLI presets (hackathon-sprint, corporate-launchpad, full-deep-drill), interactive helpers (casekit add/check), and CaseKit MCP Server
- Upgrade 16:9 widescreen PowerPoint deck renderer and add 4-Judge Rehearsal Simulator (CFO, CTO, BU Head, YC Partner)
- Add minimalist production-ready live HTML prototype generator
- Add showcase reference case vaults (Airbnb 2008 Seed, Stripe Developer Wedge) and GitHub Actions PR audit workflow
- Pass full 223/223 multi-tier automated test suite
@Faeif
Faeif merged commit 2fff9ad into main Sep 2, 2026
4 of 9 checks passed

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 6 potential issues.

3 flags not posted on this PR by your GitHub settings — view them in Devin Review. (Configure)

Devin Review

Comment on lines +122 to +130
ws[f"C{r}"] = f"=SUM(C{table_start}:C{r-1})"
ws[f"C{r}"].value = 10000000
ws[f"C{r}"].number_format = "#,##0"
ws[f"C{r}"].font = BOLD_FONT
ws[f"C{r}"].border = TOTAL_BORDER

for col in ["D", "E", "F"]:
ws[f"{col}{r}"] = f"=SUM({col}{table_start}:{col}{r-1})"
ws[f"{col}{r}"].value = 1.00

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Financial models ignore edited assumptions

Changing any model assumption leaves every reported output unchanged. build_cap_table_section overwrites its formulas, while all other financial outputs are constants.

Prompt for agents
Rework scripts/build_financial_models.py and regenerate all five templates/financial-models workbooks so calculated cells retain Excel formulas linked to the Low/Base/High assumption cells. The current builder assigns formulas and immediately replaces them with constants in build_cap_table_section; all statement, unit-economics, sensitivity, and ROI outputs are also hard-coded. Preserve formulas in the generated files, ensure named ranges point to calculated outputs, and add regression tests that edit representative assumptions, recalculate the workbook, and verify dependent outputs change and reconcile.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +191 to +195
snapshot_file = matches[0]
content = snapshot_file.read_text(encoding="utf-8")
hash_match = re.search(r"content_hash_sha256:\s*([a-f0-9]{64})", content)
if not hash_match:
errors.append(f"{snapshot_file.name}: missing or invalid content_hash_sha256")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Archive tampering passes verification

After archived content changes, verify_archive still passes whenever its original hash header remains. The integrity command never recomputes or compares content.

Prompt for agents
Define an unambiguous hash scope for archive snapshots, then update verify_archive in skills/casekit-research/scripts/archive_source.py and the analogous --check-archive path in skills/casekit-validator/scripts/check_sources.py to recompute SHA-256 over that exact payload and compare it with content_hash_sha256. Ensure archive_source writes snapshots using the same scope. Add passing and tampered-snapshot regression fixtures.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment thread scripts/validate_suite.py
Comment on lines +628 to +630
# 3. Smoke Tests (if requested via --smoke-only)
if args.smoke_only:
smoke_tests(errors)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Default validation skips smoke tests

Running validate_suite.py without flags no longer calls smoke_tests. CI can pass while its installation, finance, preset, MCP, and tamper checks remain unexecuted.

Suggested change
# 3. Smoke Tests (if requested via --smoke-only)
if args.smoke_only:
smoke_tests(errors)
# 3. Smoke Tests (unless explicitly running modular tests only)
if not args.modular_only:
smoke_tests(errors)
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +109 to +111
# Convert data to JSON for client-side reactivity
metrics_json = json.dumps(metrics, ensure_ascii=False)
evidence_json = json.dumps(evidence, ensure_ascii=False)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟥 Generated prototypes execute workspace scripts

A crafted workspace value breaks build_html output contexts and runs JavaScript when a user opens the generated prototype.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +79 to +82
payload = response.read()
content_type = response.headers.get("Content-Type", "").lower()
if "application/pdf" in content_type or url.lower().endswith(".pdf"):
try:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟥 Source archiving reaches internal services

Any caller can make archive_source fetch arbitrary HTTP destinations, including loopback, private-network, and cloud metadata services.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +355 to +365

elif name == "casekit_archive_source":
project = Path(arguments["project"]).expanduser().resolve()
res = archive_source(
project=project,
source_id=arguments["source_id"],
url=arguments["url"],
title=arguments.get("title", ""),
publisher=arguments.get("publisher", ""),
force=arguments.get("force", False),
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟨 MCP tools access arbitrary host files

An MCP caller can pass unrestricted paths to read workbooks or overwrite output files anywhere writable by the server process.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant