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
7 changes: 6 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@ name: ci
on:
push:
branches: [ main ]
# No branches filter: a pull request stacked on another branch runs the same
# checks. With auto-merge-on-green enabled, a pull request with no checks is
# indistinguishable from one that passed them.
pull_request:
branches: [ main ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# The job reads the tree and reports; it writes nothing back to the repository.
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
Expand Down
10 changes: 3 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,11 @@

The Codefly language agent for typed, finite Go operations: generate a handler and harness, compile portable native artifacts, and emit container build recipes.

**Status: the contract-determined generation slice is implemented; the agent process, harness and qualification are deferred until the Python/native/k3d contract is qualified.** No agent executable or release is available yet. [Implementation issue #1](https://github.com/codefly-dev/runnable-go/issues/1) records the original scope; [issue #2](https://github.com/codefly-dev/runnable-go/issues/2) tracks the remaining execution lifecycle.
**Status: the contract-determined generation slice is implemented. No agent executable or release is available yet.** [Issue #2](https://github.com/codefly-dev/runnable-go/issues/2) tracks the remaining execution lifecycle: the agent process, the invocation harness, build evidence and native/k3d qualification.

`pkg/generate` turns a runnable's declared contract into the typed Go bindings and the author handler scaffold. The bounded profile maps to `string`, `int64`, `bool`, generated structs and slices, and the contract's independent `optional` (the key may be absent) and `nullable` (the value may be null) declarations map to four distinct Go spellings, one per combination, so neither state can stand for the other.
`pkg/generate` turns a runnable's declared contract into the typed Go bindings and the author handler scaffold. The bounded profile maps to `string`, `int64`, `bool`, generated structs and `List`, and the contract's independent `optional` (the key may be absent) and `nullable` (the value may be null) declarations map to four distinct Go spellings, one per combination, so neither state can stand for the other. Generated files carry a `//go:build go1.24` constraint: absence is kept by the `encoding/json` `omitzero` option, which an older toolchain ignores in silence rather than rejecting.

The agent gRPC process, the invocation harness, build evidence and native/k3d qualification wait on [core #472](https://github.com/codefly-dev/core/issues/472), which freezes the agent/CLI handoff `runnable.codefly.yaml` names but does not define: carrying a `RunnableIdentity` through `Builder.Load`, returning native launch and build evidence from `Builder.Package`, and the `codefly.runnable/v1` framing a harness must agree with byte for byte.

Python now has a harness and packaging implementation in [runnable-python #2](https://github.com/codefly-dev/runnable-python/pull/2). Its framing remains a proposal for core #472. Go must consume the shared contract after it is ratified and qualified through the real Codefly/Orchestration path.

Bindings do not replace payload validation: the future harness must enforce required fields, unknown-key rejection, and non-null arrays before decoding input or accepting output. See [the review milestone](docs/milestone_1_bindings_review.md).
Bindings do not replace payload validation. The generated types carry the value types, the null states and the array states and nothing more, so the harness must still enforce required fields and reject unknown keys against the raw payload before decoding input or accepting output.

## What belongs here

Expand Down
26 changes: 0 additions & 26 deletions docs/milestone_1_bindings_review.md

This file was deleted.

Loading
Loading