Commit Graph

153 Commits

Author SHA1 Message Date
irl-dan 487ed3d785 Fix Codex runtime startup for prose CLI 2026-04-29 22:27:06 -07:00
dan 1fad4be04e Prepare CLI 0.1.1 release (#43) v0.1.1 2026-04-29 20:31:10 -07:00
dan 4381b441c9 Merge pull request #41 from openprose/codex/prose-cli
[codex] add prose cli
2026-04-29 20:22:17 -07:00
irl-dan c59b27de90 Configure Codex smoke sandbox 2026-04-29 20:18:41 -07:00
irl-dan 7ccdd25d0e Map OpenAI keys for Codex harnesses 2026-04-29 20:12:44 -07:00
irl-dan 0935749874 Initialize real harness smoke workspaces 2026-04-29 20:07:57 -07:00
irl-dan 26fcc7a40d Polish CLI publish dry runs 2026-04-29 20:03:22 -07:00
irl-dan a4a9c484d2 Add CLI publish workflow 2026-04-29 19:41:15 -07:00
irl-dan ed457a8eb5 Run real harness smoke for CLI PRs 2026-04-29 19:24:50 -07:00
Jose Montes de Oca 66446fb0f6 chore(ci): add a smoke CI gate for the OpenProse skill (#42)
Add a required smoke CI path for the `open-prose` skill.

- Add focused smoke fixtures for core OpenProse execution behavior.
- Add a TypeScript runner that installs the PR skill into isolated workspaces and validates `.prose/runs/` outputs.
- Add a GitHub Actions workflow with read-only permissions, fork safety, pinned tooling, artifact capture, and hardened Claude Code invocation.
- Validate the suite with both dry-run checks and a local live `9/9` smoke run.
2026-04-29 19:21:54 -07:00
irl-dan 7403672b5f Expand CLI release checks 2026-04-29 19:17:03 -07:00
irl-dan 585c088e47 Address CLI review comments 2026-04-29 18:38:39 -07:00
irl-dan 38611e7b73 Add CLI skill setup preflight 2026-04-29 18:23:09 -07:00
irl-dan 42b1687e18 refine prose cli architecture 2026-04-29 17:23:52 -07:00
irl-dan 668aa2c3b3 add prose cli 2026-04-29 16:11:21 -07:00
dan cde47c4b57 Merge pull request #40 from openprose/feat/co-agent-readiness
feat(co): agent-readiness as safe first-run demo program
2026-04-21 18:39:12 -04:00
irl-dan 2de0b5e7d7 feat(co): add agent-readiness as safe first-run demo program
Narrow intake a founder can run in under a minute. Three prompts, one
WebFetch batch across a fixed set of well-known paths, one screenshot-ready
markdown report written to ~/prose-<company>/agent-readiness.md.

Scores four dimensions (discoverability, parseability, structure,
api-readiness) 0-100 and surfaces exactly three concrete, file-path-level
fixes. No JavaScript execution, no fetches outside the target origin, no
writes outside the per-company workspace.

Built for the "claude \"prose run co/programs/agent-readiness\"" first
experience: all probes are static well-known paths, so it never fails on
a live JS-wall or a missing API.

Paired eval protects the demo: every finding must ground in a Raw Probe
Results row, every top_fix must name an exact file path, and any
JavaScript execution or cross-origin fetch fails the eval.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 15:27:11 -07:00
dan f2f71be996 Merge pull request #39 from openprose/migrate/monorepo-std-and-co
Migrate std and co into packages/ monorepo
2026-04-21 17:18:10 -04:00
irl-dan 63c8ce4b23 Migrate std and co into packages/ monorepo layout
Move the standard library (previously `github.com/openprose/std`) and
the company-as-prose library (previously local dir
`/Users/sl/code/openprose/company-as-prose`) into this repository
under `packages/std/` and `packages/co/` respectively.

Motivation: concentrate attention on one repository so stars,
discussions, and issues aggregate. `openprose/std` was a genuinely
useful asset nobody could find because ~50 stars on its own repo
told a much worse story than 1,106 stars on `openprose/prose`
would have. Same logic applies to co.

Layout choice: `packages/{std,co}/` rather than `std/` + `co/` at
the repo root. Root siblings accumulate over time, and a flat
top-level made future libraries (hub, kit, dev, etc.) compete with
spec infrastructure. `packages/` is bounded — new libraries land
there without cluttering root. Matches pnpm/Deno/monorepo tooling
conventions.

Changes:

- New: `packages/std/` (copied from openprose/std, `.git` excluded)
- New: `packages/co/` (copied from company-as-prose, README updated
  for new name and location)
- `packages/std/README.md`: updated shorthand expansion reference
- `packages/co/README.md`: renamed "company-as-prose" to "co" in
  self-references, added std-vs-co split heuristic, updated
  `prose run` examples to use `co/` shorthand
- `skills/open-prose/deps.md`:
  - `std/` shorthand now expands to
    `github.com/openprose/prose/packages/std/`
  - `co/` shorthand added, expands to
    `github.com/openprose/prose/packages/co/`
  - Both shorthands resolve into the same clone of
    `openprose/prose` under `.deps/github.com/openprose/prose/`;
    `packages/std/` and `packages/co/` are sibling subdirectories
  - `prose.lock` format row updated to `host/owner/repo sha`
    (matches the explicit-host resolution that landed in #35)
  - `.deps/` directory structure example redrawn to show the
    `{host}/{owner}/{repo}/packages/{std,co}/...` shape
  - Error message and Interaction tables refreshed accordingly
  - Resolution Algorithm step 1 now documents both shorthands
- `skills/open-prose/forme.md`: Step 2 resolution list updated to
  include co/ shorthand and the host-keyed `.deps/` layout
- `skills/open-prose/help.md`: Q&A "How do dependencies work?"
  rewritten to name both shorthands and the new explicit-host model
- `skills/open-prose/state/filesystem.md`: `.deps/` directory
  tree re-drawn to include the `{host}/` layer with std/co as
  sibling packages inside the clone
- `skills/open-prose/guidance/patterns.md`,
  `skills/open-prose/guidance/antipatterns.md`: examples now use
  the `std/` shorthand or explicit `github.com/...` rather than
  the deprecated bare `openprose/std/` form
- `skills/open-prose/examples/registry-import/index.md`: sample
  service reference switched to `std/evals/inspector`
- `README.md`: Stdlib badge replaced with internal `packages/std/`
  link plus new `packages/co/` link; "Standard Library" section
  rewritten as "Libraries" with both packages described

Out of scope for this PR (deliberately):
- Tooling changes to `prose install` and Forme's `.deps/` writer
  to adopt the `{host}/{owner}/{repo}/` layout in practice — this
  PR is spec-only. Existing tooling continues to work against
  whatever layout it currently implements; the spec now describes
  the target.
- Retiring the `openprose/std` GitHub repo. Delete that repo
  separately after this merges.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 14:14:31 -07:00
dan 6c95db89fc Merge pull request #38 from openprose/docs/cli-vs-use-resolution
Clarify prose command routing
2026-04-21 17:08:08 -04:00
irl-dan 730ea22fba Clarify prose command routing 2026-04-21 14:04:35 -07:00
dan 3e56430072 Merge pull request #35 from openprose/docs/cli-vs-use-resolution
docs: unify prose-run and use resolution (explicit git hosts)
2026-04-21 16:11:40 -04:00
irl-dan 58dde29dcf docs: unify prose-run and use resolution with explicit git hosts
The prior spec had `prose run owner/path` hit `p.prose.md` and
`use "owner/path"` resolve to GitHub. Same identifier, two
sources — an agent that `prose install`'s a dep, edits it, and
re-runs it watched a different copy execute and lost a cycle.

Collapse the asymmetry. One algorithm for both surfaces, and use
the Deno / Go-modules shape: canonical identifier is
`host/owner/repo`, any git host works, written explicitly.

Resolution rules:

1. `http(s)://...` → fetch directly (raw file, no caching)
2. First path segment has a dot → explicit git host;
   cache-first under `.deps/{host}/{owner}/{repo}/`, clone from
   that host if not cached
3. Ends with `@{version}` → that SHA or tag; fetch if not cached
4. Contains `/` otherwise → reserved for the OpenProse registry
   (eventual home at `p.prose.md`); inert today
5. Otherwise → local path

No "force registry" flag: `@{version}` already carries "I want
this version, re-fetch if needed" semantics, same as `npx
foo@1.2.3`. `--offline` disables the network fallback for
air-gapped and reproducibility use cases.

The bare `owner/repo` form is reserved (not deprecated) — it
doesn't resolve today because nothing publishes to p.prose.md
yet, but the path is spec'd so authors don't paint into a corner
and so ProseHub can ship without a breaking change.

Changes in this commit:

- SKILL.md Remote Programs section — new cache-first table with
  the dotted-host rule, explicit `github.com/alice/research`
  examples, and a reserved-for-registry note.
- prose.md CLI Commands table — rows for `<host>/<owner>/<repo>`,
  `<owner>/<repo>` (reserved), `@<version>`, `--offline`.
- prose.md Remote Programs section — full resolution algorithm,
  error-message shape, and explicit guidance to write the host
  (GitHub is the 90% case, not a default).
- deps.md `use` Statement Parsing — canonical form now
  `host/owner/repo/path`; examples updated to
  `github.com/alice/...`; `std/` shorthand expands to
  `github.com/openprose/std/`; added "Bare owner/repo Form"
  subsection explaining the registry reservation.
- deps.md Resolution Algorithm (Runtime) and `prose install`
  Algorithm — updated to key the cache on `{host}/{owner}/{repo}`.
- deps.md "Interaction with p.prose.md" table — rewritten around
  the explicit-host algorithm; `p.prose.md` now scoped to
  discovery + future registry publication.
- deps.md Summary table — registry row now names the
  host-explicit shape; cache directory includes the host segment.

No behavior change to `.deps/` or `prose.lock` beyond the
layout key; migration of tooling to the new `{host}/` layer is
out of scope for this PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 13:01:11 -07:00
dan 24031ab100 Merge pull request #34 from openprose/docs/patterns-idempotence-cursor-cheap-floor
docs(patterns): add idempotent-intake, top-level-cursor, cheap-floor-first
2026-04-21 14:35:41 -04:00
dan d4e5f8a698 Merge pull request #36 from openprose/docs/canonize-memory-section
docs(contract-markdown): canonize ### Memory section
2026-04-21 14:35:31 -04:00
dan f73fd8c2fb Merge pull request #33 from openprose/docs/contract-markdown-run-typed-inputs
docs(contract-markdown): document run / run[] typed caller inputs
2026-04-21 14:30:28 -04:00
dan daaf14407e Merge pull request #32 from openprose/docs/persist-scoping-clarification
docs: distinguish session-memory from cross-run persistence
2026-04-21 14:29:58 -04:00
irl-dan 3311603e8f docs(contract-markdown): canonize ### Memory section
Customer programs that accumulate state across runs
(stargazer-intake, agents-site-analytics, and others that declare
`persist: project` or `persist: user`) have been carrying a
load-bearing `### Memory` section that enumerates reads/writes
to their persistent memory file.

Per the existing spec, `### Memory` was an "unknown section" —
preserved as documentation but not a contract. This left several
gaps real teams have hit:

- Agents editing those programs couldn't tell whether the section
  was load-bearing or ornamental.
- There was no single source of truth for fields that appear in
  three places (memory file, top-level Ensures, and memory_update
  echo).
- The 2026-04-21 eval-blanket on stargazer-intake flagged the
  "authoritative source when 3 copies exist" question as a real
  friction item.

This PR:

- Adds `### Memory` to the Canonical Sections table.
- Defines the `reads:` / `writes:` YAML format that customer
  programs already use.
- States the rule: `### Memory` only applies when `### Runtime`
  sets `persist: project` or `persist: user`.
- Cross-references `top-level-cursor-emission` and
  `idempotent-scheduled-intake` in `guidance/patterns.md` so
  authors know cursor fields should *also* appear in `### Ensures`.
- Points to `prose.md` Persistent Agents and
  `state/filesystem.md` Memory Scoping for on-disk format.

No behavior change; this canonizes prior art so readers stop
having to infer it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:53:16 -07:00
irl-dan b87c6eca9b docs(patterns): add idempotent-intake, top-level-cursor, cheap-floor-first
These three patterns have been repeatedly rediscovered while operating
scheduled-intake programs (stargazer-intake, agents-site-analytics,
nightly-digest variants). The rediscovery cost was real — one run
deferred 41 of 46 items with no signal at all, producing a cohort
downstream could not triage.

Add them to `guidance/patterns.md` so teams inherit the lesson without
paying for it again:

- idempotent-scheduled-intake — re-runs on the same window must not
  double-count; write memory last; compute deltas from caller-supplied
  inputs; dedupe on canonical keys.
- top-level-cursor-emission — high-water marks, cursor tokens, and
  run IDs belong in `### Ensures`, not buried in `memory_update`.
  Memory is for the next invocation of this service; the return
  value is for the next responsibility.
- cheap-floor-first — populate free signals (local CLIs, cached
  files) for every item before spending any metered budget on the
  top slice. Keeps the deferred bucket actionable.

Each pattern has a concrete example and a rationale. No spec change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:47:20 -07:00
irl-dan 6b06358610 docs(contract-markdown): document run / run[] typed caller inputs
`run` and `run[]` are reserved keyword types for `### Requires`
entries that accept completed run IDs — used by inspectors,
regression checkers, and other meta-programs that evaluate prior
executions.

The binding format and resolution rules are specified in
`prose.md` and `forme.md`, but `contract-markdown.md` — the
primary authoring surface — never mentioned them. Authors had to
cross-reference three files to discover the feature.

Add a "Typed Caller Inputs" subsection after "Contract Item
Style" showing the canonical `subject: run` and `cohort: run[]`
shapes, a one-paragraph semantics summary, and a pointer to
`prose.md` for the full binding/validation rules.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:44:05 -07:00
irl-dan ec6dbb12ba docs: distinguish session-memory from cross-run persistence
The Persistent Agents section opened with "maintain memory across
invocations" and showed `persist: true` as the canonical example.
The scoping table directly below documents `persist: true` as the
execution-default whose memory dies with the run.

An agent pattern-matching the narrative would wire `persist: true`
for a service that compounds state between runs (cumulative
registries, high-water marks) and silently lose that state on
every restart.

Reword the opening to distinguish session memory (within a run)
from cross-run persistence. Switch the example to `persist:
project`, the common case where a service's value compounds. Add
a follow-up paragraph after the scoping table that names when to
reach for each scope.

Doc-only; no behavior change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 22:43:35 -07:00
irl-dan ae1a7d9136 release: v0.10.0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v0.10.0
2026-04-20 21:47:27 -07:00
irl-dan 22608daec4 cleanup
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 21:41:48 -07:00
irl-dan d7ef3e1d2f Merge pull request #24 from apollostreetcompany/codex/docs-codex-adapter
docs: add experimental Codex adapter examples

# Conflicts:
#	README.md
#	skills/README.md
#	skills/open-prose/README.md
2026-04-20 21:28:13 -07:00
irl-dan e911181964 Merge pull request #25 from Wreos/codex/add-codex-support
Add Codex support docs and AGENTS entrypoint

# Conflicts:
#	README.md
2026-04-20 21:27:44 -07:00
irl-dan f190977b9e Merge pull request #23 from rawwerks/feat/add-linter
feat: add deterministic linter (tools/lint/)
2026-04-20 21:27:27 -07:00
dan d3adb00b37 Merge pull request #31 from openprose/docs/redact-internal-references
docs: make skills and RFCs self-contained
2026-04-20 23:44:07 -04:00
Jose Montes de Oca 14e6854dfa docs: make skills and RFCs self-contained
Several docs referenced paths and deployment internals that only
exist in our authoring workspace, not in this repo. Clean them up so
external readers get a self-contained view.

- skills/README.md, skills/open-prose/state/README.md: drop `related:`
  frontmatter entries that pointed outside the repo tree; refer to
  "OpenProse Cloud" by name instead of an internal path.

- skills/open-prose/agent-onboarding.md: replace a 25-line maintainer
  comment (infra paths, deploy mechanic) with a single link to the
  canonical rendering at https://openprose.ai/llms-full.txt. This
  file is served verbatim as llms-full.txt, so the comment was
  publicly visible but only meaningful to hosting maintainers.

- rfcs/004-composite-instantiation.md: drop two pointers to an
  external design doc — the RFC is already self-contained (Summary,
  Problem, Proposal, Architecture, Changes, Prior Art).

- rfcs/001/002/003: normalize author line to match rfcs/004's format
  (`Dan B. (OpenProse)`).

Docs only — no behavior changes.
2026-04-20 22:30:20 -04:00
dan ad4b2ad592 Merge pull request #30 from openprose/agent-onboarding-canonical
add canonical agent-onboarding narrative
2026-04-20 18:31:12 -04:00
irl-dan 1b2cda2922 add canonical agent-onboarding narrative
New file: skills/open-prose/agent-onboarding.md

The arrival narrative an agent reads when pointed at OpenProse before the
skill is installed — one screen, markdown that reads cleanly as plain text
over curl. Consumer list and editing discipline are in a header comment at
the top of the file.

Served from this file by:
  - openprose.ai/llms-full.txt + /llms-full  (apps/run, Next.js)
  - curl-me.openprose.ai + aliases           (S3 + CloudFront)
  - curl-me.prose.md                         (same CloudFront distribution)

Those consumers read this file at build/apply time; there is no sync script.
Operational detail (recognition signals, proposal script, Host Primitive
Adapter, giving-back playbook) stays in SKILL.md — this file links rather
than duplicates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 15:23:06 -07:00
dan b0e6ca8768 Merge pull request #29 from openprose/skill-services-section-elegance
speak to agents, not about them
2026-04-20 17:42:39 -04:00
irl-dan 5ba2f39663 speak to agents, not about them
Rewrites agent-facing surfaces so the runtime contract is stated in the
voice of the entity that will execute it:

- plugin/marketplace descriptions tell the agent what it will do when
  `prose` fires (read contract, spawn subagents, write `.prose/runs/`)
  instead of pitching OpenProse as a feature
- README opens with a fourth-wall blockquote for agents arriving via
  "go check out this repo," adds a Host Primitive Adapter table so the
  runtime contract is visible before activation, and names the agent
  failure modes OpenProse addresses
- SKILL.md body adds recognition signals, a proposal script, a cognitive
  model (type-system analogy), and when-to-decline guidance so an agent
  can reach for OpenProse on its own judgment once activated
- SKILL.md adds a "giving back" section with a three-bucket identity
  rubric (yours freely / requires approval / skip) to channel goodwill
  without becoming a spam vector
- SKILL.md frontmatter stays tight to avoid context pollution and
  false-positive activations

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 14:36:36 -07:00
irl-dan 17e87514d4 improve progressive disclosure flow 2026-04-20 12:42:40 -07:00
dan 3d41de2914 Merge pull request #28 from openprose/skill-services-section-elegance
Make services a Contract Markdown section
2026-04-20 14:14:39 -04:00
irl-dan 160a463e88 Make services a Contract Markdown section 2026-04-20 10:52:09 -07:00
dan 8952649347 Merge pull request #27 from openprose/skill-contract-markdown-prosescript
Overhaul OpenProse skill docs and README
2026-04-20 11:55:45 -04:00
irl-dan 487117dc31 docs: overhaul openprose skill docs 2026-04-20 08:49:24 -07:00
irl-dan db66354e06 ci: update longcot-rlmify workflow with thinking input
Picks up the thinking choice input and RLMIFY_THINKING env wiring
from rlm-harness-skill so gh workflow run can pass -f thinking=<level>.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 04:33:25 -07:00
irl-dan b7e4b99b31 ci: add longcot-rlmify workflow dispatcher
Lets gh workflow run discover the rlmified LongCoT smoke workflow.
The shim, example, and skills/rlmify/ live on the rlm-harness-skill
branch; workflow_dispatch --ref rlm-harness-skill checks them out
at run time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 16:00:45 -07:00
irl-dan 18b3579ddc ci: add LongCoT benchmark workflow + pi-mono shim
workflow_dispatch action that runs the LongCoT benchmark using
pi-mono (@mariozechner/pi-coding-agent) as the inference harness.
Defaults (difficulty=longcot, thinking=high, no tools/scaffolding,
2 retries) mirror the paper for 1:1 result comparison; README
covers iteration with longcot-mini + slice inputs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 14:50:16 -07:00