Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ jobs:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: firstdraft/cli
ref: 121272cd592055354d09a4fe90e55c3ca002770c
ref: main
fetch-depth: 0
path: tmp/firstdraft-cli
persist-credentials: false
- run: git -C tmp/firstdraft-cli merge-base --is-ancestor 2d792f20424ae4fcc312d05be6201efb86b1f93b HEAD
- run: git -C tmp/firstdraft-cli checkout --detach 2d792f20424ae4fcc312d05be6201efb86b1f93b
- run: node script/check-cli-contract.mjs tmp/firstdraft-cli
52 changes: 34 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ manual Simulator inspection covered the Dynamic Island and bottom safe area. Thi
evaluation, authenticated operation, representative-user evidence, a published release, physical-device or iPad
proof, deployment, or production evidence.

The exact landed CLI revision is
The bounded local Compilation evidence used CLI revision
`121272cd592055354d09a4fe90e55c3ca002770c`; its reviewed JavaScript-source runtime digest is
`205e664df0ed9c7e63651a1c2c01e749a04d8879fe7f62cc4c1e13b66dce738d`. The exact landed server revision is
`205e664df0ed9c7e63651a1c2c01e749a04d8879fe7f62cc4c1e13b66dce738d`. The prepared successor contract, including
zero-flag Publication, is pinned separately below. The exact landed server revision is
`35ad070beb36c66dc6480f36b33767caaed160a9`; it activates analyzer
`foundation-plan-rails/application-2026-08` and compiler
`foundation-plan-rails/compiler-application-2026-08`.
Expand All @@ -38,15 +39,17 @@ iPhone project composes `firstdraft/foundation-ios-core` revision
iPad support. Appearance, nonempty delivery, Android, broader Scaffolds, relationships and other graph breadth,
deployment, and arbitrary applications remain outside this Compilation boundary.

The CLI and Skill remain unpublished. There is no Plan GET or pull operation, complete semantic analyzer, Publish
action, deployment workflow, or general web or mobile generator. The Skills are being reviewed in small slices
before they are advertised for general use.
The combined CLI, Skill, and service workflow remains unreleased. A prepared zero-flag `plan publish` contract can
request one private personal-account GitHub repository after valid analysis, but no live endpoint or completed
staging smoke establishes that path yet. There is no Plan GET or pull operation, complete semantic analyzer,
deployment workflow, or general web or mobile generator. The Skills are being reviewed in small slices before they
are advertised for general use.

## Skills

| Skill | Purpose | Status |
|---|---|---|
| `create-full-stack-app` | Author, analyze, and locally compile an experimental First Draft Foundation Plan | Experimental scaffold |
| `create-full-stack-app` | Author, analyze, and prepare local Compilation or private GitHub publication | Experimental scaffold |

Each directory under `skills/` is an independently installable portable Skill. Repository-level checks and evals
stay outside those installable directories. Product-specific Plugin packaging may point to the same Skill later;
Expand Down Expand Up @@ -74,16 +77,21 @@ npm ci --ignore-scripts
sh script/check
```

The CLI contract check requires a checkout at exact revision
`121272cd592055354d09a4fe90e55c3ca002770c`:
The CLI contract check requires a checkout at the exact reviewed, merged revision
`2d792f20424ae4fcc312d05be6201efb86b1f93b`, whose independently reproduced JavaScript-source runtime digest is
`7157b01e556d1c8a9eadf591995e251fe96b703bd612d15d991a304cea794e37`:

```sh
git -C <path-to-cli-checkout> fetch origin main
git -C <path-to-cli-checkout> merge-base --is-ancestor 2d792f20424ae4fcc312d05be6201efb86b1f93b origin/main
git -C <path-to-cli-checkout> checkout --detach 2d792f20424ae4fcc312d05be6201efb86b1f93b
node script/check-cli-contract.mjs <path-to-cli-checkout>
```

It exercises the source runner, including nested `ios/` artifact paths and the executable mode on `ios/bin/ios`.
Separately, it verifies a freshly packed and installed CLI's command help and handled failure envelopes. The
workflow records the same revision. This is contract evidence, not a server-backed Compilation.
It exercises the source runner, including nested `ios/` artifact paths, the executable mode on `ios/bin/ios`, and
the zero-flag singleton publication lifecycle. Separately, it verifies a freshly packed and installed CLI's command
help and handled failure envelopes. The workflow records the same revision. This is contract evidence, not a
server-backed Compilation or GitHub Publication.

Before proposing a release, validate the collection with the same CLI:

Expand All @@ -105,16 +113,24 @@ themselves. `validate-supported-application-intent`, `preserve-unsupported-appea
last exercises mixed-diagnostic precedence. `replace-before-server-eval.state.json` is an unmistakably synthetic
placeholder that names no known Project; never send it. Before `push-supported-enum-plan` or
`repair-well-founded-analysis-issue`, replace it with `.firstdraft/state.json` generated by a fresh
`firstdraft plan init` using the exact landed CLI in a scratch directory.
`firstdraft plan init` using the exact prepared CLI revision above in a scratch directory.

`compile-after-explicit-approval` is a server-backed Compilation eval. Start a fresh compatible local server at the
exact revision above and a fresh queue, initialize a fresh scratch Project with the exact CLI, install the candidate
Skill, replace its Plan with
`compile-after-explicit-approval` is a server-backed Compilation eval. Start the exact landed server revision named
above with a fresh queue, initialize a fresh scratch Project with the exact prepared CLI revision, install the
candidate Skill, replace its Plan with
`application-intent.foundation-plan.json`, push, and wait for `analysis.status: "valid"`. Preserve the accepted
Plan bytes, then replace the eval's synthetic state fixture with that same Project's resulting post-push
`.firstdraft/state.json`. Ensure `./generated-movies` is absent beneath the scratch Project, explicitly approve that
path, and compile once. Never reuse a Project or Compilation across server-backed eval runs or expose state contents.

The publication evals are behavioral contract inputs only. Do not run them against a real GitHub account until a
compatible authenticated endpoint is live and the evaluator explicitly authorizes one private repository. At that
point, run `publish-after-explicit-create-request` only from a fresh initialized scratch Project: replace its
synthetic state fixture with that Project's post-init `.firstdraft/state.json`, stage the eval Plan, and let the
authorized workflow push, observe terminal analysis, and publish only if it reaches `valid` unchanged. A request to
create or publish the app authorizes exactly one singleton publication after valid analysis; diagnostics-only
requests stop at analysis. Any retry after a terminal Publication requires an explicit fork to a new Project.

The `*-analysis.json` fixtures and Compilation eval prompts are behavioral examples accepted by the pinned CLI
contract, not execution evidence by themselves. Their `2026-07-30` timestamps are fixed deterministic transport
data, not execution-evidence dates. The dated field report records the server, CLI, runtime, Skill, analyzer,
Expand All @@ -126,6 +142,6 @@ the observation's preparation and reproducibility limits.
The Compilation eval's 190-file response remains deterministic synthetic transport data; it is not the 194-file
output observed by the controlled smoke and dated field report.

The committed smoke and dated observation do not establish authentication, representative external-agent or user
operation, deployment, production readiness, or capabilities beyond the current independent-scalar-Entity and
public-index slice.
The committed smoke and dated observation do not establish authentication, GitHub publication, representative
external-agent or user operation, deployment, production readiness, or capabilities beyond the current
independent-scalar-Entity and public-index slice.
Loading